From 5635790ff2b8c6591b09dfaa8067b4e000d28983 Mon Sep 17 00:00:00 2001 From: WizardLoop Date: Fri, 16 Oct 2026 13:19:01 +0300 Subject: [PATCH 1/3] Prepare stable 3.0.0 source release and production cutover Pin PHP 8.4 security base, verify scoped source archives in CI, preserve locked bot runtime behavior, and document owner acceptance and licensing. --- .env.example | 2 +- .gitattributes | 5 +- .github/workflows/ci.yml | 12 + .github/workflows/release.yml | 3 +- CHANGELOG.md | 8 + Dockerfile | 2 +- README.md | 27 +- THIRD_PARTY_NOTICES.md | 4 +- VERSION | 2 +- composer.json | 131 +- docs/IMPLEMENTATION_STATUS.md | 20 +- docs/INSTALLATION.md | 4 +- docs/LICENSING.md | 12 +- docs/PRODUCTION_UPGRADE.md | 44 +- docs/PUBLICATION_STATUS.md | 14 +- docs/RELEASE.md | 56 +- docs/RELEASE_NOTES.md | 52 +- docs/SERVER_TEST_DEPLOYMENT.md | 120 +- docs/THIRD_PARTY_DETAILS.md | 2 +- patches/madelineproto/README.md | 7 + patches/madelineproto/generate-artifacts.php | 11 + patches/madelineproto/manifest.json | 13 +- readme-he.md | 29 +- resources/release/README.md | 15 + .../.gitattributes.source | 2 + .../amphp-windows-process-wrapper/.gitignore | 236 + .../amphp-windows-process-wrapper/LICENSE | 21 + .../ProcessWrapper.sln | 28 + .../ProcessWrapper.sln.DotSettings | 21 + .../ProcessWrapper.vcxproj | 171 + .../ProcessWrapper.vcxproj.filters | 52 + .../amphp-windows-process-wrapper/README.md | 24 + .../resources/.gitattributes.source | 2 + .../resources/Icon_amphp.ico | Bin 0 -> 54800 bytes .../resources/ProcessWrapper.rc | Bin 0 -> 5280 bytes .../resources/resource.h | Bin 0 -> 916 bytes .../amphp-windows-process-wrapper/src/Args.c | 246 + .../amphp-windows-process-wrapper/src/Args.h | 16 + .../src/Encoding.h | 7 + .../src/Errors.c | 199 + .../src/Errors.h | 13 + .../src/ProcessWrapper.c | 790 + .../.gitattributes.source | 8 + .../madelineproto-build-inputs/LICENSE | 661 + .../madelineproto-build-inputs/README.md | 1332 + .../madelineproto-build-inputs/composer.json | 152 + .../docs/template/disallow.json | 41 + .../madelineproto-build-inputs/extracted.json | 8607 +++ .../madelineproto-build-inputs/langs/ckb.json | 121 + .../madelineproto-build-inputs/langs/de.json | 1 + .../madelineproto-build-inputs/langs/en.json | 162 + .../madelineproto-build-inputs/langs/fa.json | 162 + .../madelineproto-build-inputs/langs/fr.json | 61 + .../madelineproto-build-inputs/langs/he.json | 162 + .../madelineproto-build-inputs/langs/it.json | 162 + .../madelineproto-build-inputs/langs/pl.json | 4 + .../madelineproto-build-inputs/langs/pt.json | 133 + .../madelineproto-build-inputs/langs/ru.json | 134 + .../madelineproto-build-inputs/langs/uz.json | 162 + .../langs/zh_Hans.json | 162 + .../schemas/README.md | 4 + .../schemas/TL_mtproto_v1.tl | 83 + .../schemas/TL_secret.tl | 102 + .../schemas/TL_telegram_v225.json | 46142 ++++++++++++++++ .../schemas/TL_telegram_v225.tl | 2979 + .../schemas/TL_telegram_v225_file_ref_map.dat | Bin 0 -> 54304 bytes .../TL_telegram_v225_file_ref_map.json | 1 + .../TL_telegram_v225_file_ref_map_schema.json | 713 + .../TL_telegram_v225_file_ref_map_schema.tl | 86 + .../schemas/list.json | 1 + .../schemas/list_file_ref_map.json | 1 + .../tools/AnnotationsBuilder.php | 699 + .../tools/DocsBuilder.php | 168 + .../tools/DocsBuilder/Constructors.php | 261 + .../tools/DocsBuilder/Methods.php | 330 + .../tools/FileRefExtractor/ActionOp.php | 26 + .../tools/FileRefExtractor/BuildMode.php | 23 + .../tools/FileRefExtractor/BuildMode/Ast.php | 354 + .../FieldTransformationOp.php | 23 + .../FileRefExtractor/FileRefGenerator.php | 922 + .../tools/FileRefExtractor/LiteralOp.php | 23 + .../tools/FileRefExtractor/Ops/ArrayOp.php | 76 + .../tools/FileRefExtractor/Ops/CallOp.php | 85 + .../FileRefExtractor/Ops/ConstructorOp.php | 79 + .../FileRefExtractor/Ops/CopyMethodCallOp.php | 66 + .../tools/FileRefExtractor/Ops/CopyOp.php | 63 + .../Ops/GetInputChannelOp.php | 82 + .../FileRefExtractor/Ops/GetInputPeerOp.php | 73 + .../Ops/GetInputStickerSet.php | 76 + .../FileRefExtractor/Ops/GetInputUserOp.php | 82 + .../FileRefExtractor/Ops/GetMessageOp.php | 89 + .../tools/FileRefExtractor/Ops/Noop.php | 42 + .../Ops/PrimitiveLiteralOp.php | 59 + .../FileRefExtractor/Ops/ThemeFormatOp.php | 49 + .../tools/FileRefExtractor/Path.php | 288 + .../tools/FileRefExtractor/TLContext.php | 79 + .../tools/FileRefExtractor/TLWrapper.php | 87 + .../tools/FileRefExtractor/TypedOp.php | 29 + .../tools/TL/Builder.php | 559 + .../tools/TL/SecretBuilder.php | 38 + .../tools/build_docs.php | 499 + .../tools/build_docs/layerUpgrade.php | 49 + .../tools/build_docs/merge.php | 32 + .../tools/build_docs/schemas.php | 68 + .../tools/build_tl.php | 15 + .../tools/fix_docs.sh | 8 + .../tools/fuzzer.php | 322 + .../tools/genDataset.php | 51 + .../tools/gen_filerefmap.php | 104 + .../tools/layerdiff.php | 123 + .../tools/makephar.php | 80 + .../madelineproto-build-inputs/tools/phar.php | 249 + .../tools/phpdoc.php | 128 + .../tools/static.php | 55 + .../madelineproto-build-inputs/tools/std.php | 100 + .../tools/translator.php | 60 + resources/release/source-manifest.json | 4967 ++ scripts/package-development.php | 149 + scripts/package-release.py | 271 + scripts/package.php | 149 +- tests/SourceInputsTest.php | 111 + tests/release_packaging_test.py | 435 + 122 files changed, 77256 insertions(+), 361 deletions(-) create mode 100644 resources/release/README.md create mode 100644 resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/.gitattributes.source create mode 100644 resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/.gitignore create mode 100644 resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/LICENSE create mode 100644 resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.sln create mode 100644 resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.sln.DotSettings create mode 100644 resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.vcxproj create mode 100644 resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.vcxproj.filters create mode 100644 resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/README.md create mode 100644 resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/resources/.gitattributes.source create mode 100644 resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/resources/Icon_amphp.ico create mode 100644 resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/resources/ProcessWrapper.rc create mode 100644 resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/resources/resource.h create mode 100644 resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Args.c create mode 100644 resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Args.h create mode 100644 resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Encoding.h create mode 100644 resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Errors.c create mode 100644 resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Errors.h create mode 100644 resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/ProcessWrapper.c create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/.gitattributes.source create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/LICENSE create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/README.md create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/composer.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/docs/template/disallow.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/extracted.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/ckb.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/de.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/en.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/fa.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/fr.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/he.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/it.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/pl.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/pt.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/ru.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/uz.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/zh_Hans.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/README.md create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_mtproto_v1.tl create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_secret.tl create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225.tl create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map.dat create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map_schema.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map_schema.tl create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/list.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/list_file_ref_map.json create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/AnnotationsBuilder.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/DocsBuilder.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/DocsBuilder/Constructors.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/DocsBuilder/Methods.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/ActionOp.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/BuildMode.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/BuildMode/Ast.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/FieldTransformationOp.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/FileRefGenerator.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/LiteralOp.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ArrayOp.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CallOp.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ConstructorOp.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CopyMethodCallOp.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CopyOp.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputChannelOp.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputPeerOp.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputStickerSet.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputUserOp.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetMessageOp.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/Noop.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/PrimitiveLiteralOp.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ThemeFormatOp.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Path.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TLContext.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TLWrapper.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TypedOp.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/TL/Builder.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/TL/SecretBuilder.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_docs.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_docs/layerUpgrade.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_docs/merge.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_docs/schemas.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_tl.php create mode 100755 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/fix_docs.sh create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/fuzzer.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/genDataset.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/gen_filerefmap.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/layerdiff.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/makephar.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/phar.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/phpdoc.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/static.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/std.php create mode 100644 resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/translator.php create mode 100644 resources/release/source-manifest.json create mode 100644 scripts/package-development.php create mode 100644 scripts/package-release.py create mode 100644 tests/SourceInputsTest.php create mode 100644 tests/release_packaging_test.py diff --git a/.env.example b/.env.example index 506dcc3..d9b5a33 100644 --- a/.env.example +++ b/.env.example @@ -9,6 +9,6 @@ LEGACY_DATA_PATH=. HEARTBEAT_PATH=data/scheduler-heartbeat.json GEONAMES_USERNAME= GEONAMES_ENDPOINT=https://secure.geonames.org -SOURCE_URL= +SOURCE_URL=https://github.com/WizardLoop/shabbat/releases/tag/v3.0.0 CUSTOM_EMOJI_ENABLED=1 diff --git a/.gitattributes b/.gitattributes index d3ec35b..949ce61 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,4 @@ -* text=auto +* text=auto eol=lf *.php text eol=lf *.json text eol=lf *.md text eol=lf @@ -20,3 +20,6 @@ LICENSES/** -text migrations/** -text resources/templates/** -text tests/Fixtures/** -text + +# Preserve pinned preferred-source supplement bytes and original upstream notices. +resources/release/preferred-source/** -text diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c48e1d2..b97f445 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,6 +33,18 @@ jobs: - run: composer check-docs - run: composer dependencies - run: composer self-check + - name: Verify release packaging regressions + if: matrix.php == '8.4' + run: python3 tests/release_packaging_test.py + - name: Build exact-commit release archives + if: matrix.php == '8.4' + run: composer package + - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 + if: matrix.php == '8.4' + with: + name: release-archives-${{ github.sha }} + path: dist/ + if-no-files-found: error docker: runs-on: ubuntu-latest steps: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3b58a8b..f00201b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -30,7 +30,8 @@ jobs: - run: docker build --build-arg BUILD_COMMIT="${{ github.sha }}" -t shabbat-release . - run: docker run --rm shabbat-release php bin/runtime-permissions.php --require-non-root - run: docker run --rm shabbat-release php bin/self-check.php --release - - run: php scripts/package.php + - run: python3 tests/release_packaging_test.py + - run: composer package - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 with: name: reviewed-release-archives diff --git a/CHANGELOG.md b/CHANGELOG.md index c087130..3d1d516 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ PHP 8.3 compatibility: module-delivery bookkeeping now uses the database-owned `BEGIN IMMEDIATE` transaction state and exact connection identity; native callback/message fixtures initialize inherited readonly properties from their declaring class. Regression tests cover rejected foreign/outside transactions, rollback and state reset. +## 3.0.0 - stable + +- Promote the reviewed dev.9 implementation to stable 3.0.0 while retaining MadelineProto 8.7.0, SQLite, the Composer lock, all five approved patch sets and migrations 001–016. No new runtime feature or migration is introduced by this promotion. +- Record the owner's successful dev.9 live tests of locking, unlocking, original-permission restoration and restart. Real holy-day transitions, load capacity, long-running soak and feature-specific acceptance remain separate; no broader result is inferred. +- Align English/Hebrew documentation and release identity; provide the complete stopped-writer production cutover into `/root/shabat`, full private backup, explicit import checks, permission recovery, monitoring and rollback. +- Make `composer package` / `php scripts/package.php` produce the two release archives, pinned runtime preferred-source collection, release manifest and SHA-256 sums from an exact clean Git commit. Retain the former installed-tool packager only as explicit `--development` tooling. +- Publish source/metadata with the actual release commit and `local_changes=false`. GitHub publication does not deploy or restart production. + ## 3.0.0-dev.9 - GitHub prerelease - Pin Composer 2.10.3 in CI and Docker to address GitHub Actions token compatibility and the upstream token-disclosure advisory; retain authentication, all quality gates, the application lock and MadelineProto 8.7.0. diff --git a/Dockerfile b/Dockerfile index 9c2c083..fd2a1dc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM composer:2.10.3@sha256:af98f42dfff7c68ba8d53c2164fd9fde1087b7d449514baa38c418b1f6bc4bac AS composer -FROM php:8.4.19-cli-bookworm@sha256:3ddb5a91b44a1c922538576d73a6e808fb2438d9d2d65b1fc3ffd55619fac2e3 +FROM php:8.4.26-cli-bookworm@sha256:836ac6c672d1372a47c8fd61b625015bd07760f493fb2eaab2087636498a2b4b RUN apt-get update \ && apt-get install -y --no-install-recommends ca-certificates tzdata libsqlite3-dev libonig-dev libxml2-dev libzip-dev unzip curl build-essential pkg-config \ && curl --fail --location --proto '=https' --tlsv1.2 https://www.sqlite.org/2026/sqlite-autoconf-3510300.tar.gz -o /tmp/sqlite.tar.gz \ diff --git a/README.md b/README.md index c5d5ef1..dbcd611 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,9 @@ A Telegram bot built with PHP, MadelineProto and SQLite for Shabbat and festival [![License: AGPL-3.0-only](https://img.shields.io/badge/license-AGPL--3.0--only-blue)](LICENSE) [![PHP 8.3–8.5](https://img.shields.io/badge/PHP-8.3%E2%80%938.5-777BB4)](composer.json) [![MadelineProto 8.7.0](https://img.shields.io/badge/MadelineProto-8.7.0-2CA5E0)](composer.lock) -[![Development 3.0.0-dev.9](https://img.shields.io/badge/status-3.0.0--dev.9-orange)](VERSION) +[![Stable 3.0.0](https://img.shields.io/badge/status-3.0.0%20stable-green)](VERSION) -**Current version: 3.0.0-dev.9, a prerelease.** Use the matching [release assets](https://github.com/WizardLoop/shabbat/releases/tag/v3.0.0-dev.9) or tagged checkout and retain its build metadata. Automated tests, Docker checks and live Telegram acceptance remain separate. For an existing bot, follow the [production upgrade and rollback guide](docs/PRODUCTION_UPGRADE.md) before replacing files or starting a second instance. See [publication status](docs/PUBLICATION_STATUS.md), [changes](CHANGELOG.md) and [delivery safety](docs/DEV9_DELIVERY_SAFETY.md). Badges describe source configuration, not production acceptance. +**Current version: 3.0.0, stable.** Use the matching [release assets](https://github.com/WizardLoop/shabbat/releases/tag/v3.0.0) or tagged checkout and retain its build metadata. The owner confirmed dev.9 live group locking, unlocking, original-permission restoration and restart. This does not establish holy-day timing, load capacity or a long-running soak; automated and host-specific acceptance remain separate. For an existing bot, follow the [production upgrade and rollback guide](docs/PRODUCTION_UPGRADE.md) before replacing files or starting a second instance. See [publication status](docs/PUBLICATION_STATUS.md), [changes](CHANGELOG.md) and [delivery safety](docs/DEV9_DELIVERY_SAFETY.md). Badges describe source configuration, not production acceptance. ## Contents @@ -30,7 +30,7 @@ A Telegram bot built with PHP, MadelineProto and SQLite for Shabbat and festival | Storage/operation | SQLite migrations/backups, durable delivery jobs, independent scheduler heartbeats, one application writer and explicit maintenance tools. | | Donations/source | Optional Telegram Stars, including whole custom amounts 1–10000; version, license and an operator-supplied exact source URL. | -dev.9 adds delivery-time eligibility checks, bounded reminder backlogs, actual spacing/quiet-window checks and independent permission, notification and broadcast work. MadelineProto remains 8.7.0 and the dependency lock is retained. Missing solar values are reported; no polar fallback is invented. Times and ritual texts are informational, with method choices made by the administrator. +3.0.0 retains dev.9 delivery-time eligibility checks, bounded reminder backlogs, actual spacing/quiet-window checks and independent permission, notification and broadcast work. MadelineProto remains 8.7.0 and the dependency lock is retained. Missing solar values are reported; no polar fallback is invented. Times and ritual texts are informational, with method choices made by the administrator. ## Requirements @@ -38,14 +38,14 @@ dev.9 adds delivery-time eligibility checks, bounded reminder backlogs, actual s | Component | Requirement | |---|---| | Recommended deployment | Linux, Docker Engine and Compose v2, outbound HTTPS/Telegram access, persistent storage. | -| Manual runtime | 64-bit PHP 8.3/8.4/8.5 and Composer 2. Docker pins PHP 8.4.19 and Composer 2.10.3. | -| Extensions | PDO/PDO SQLite, mbstring, XML, DOM, fileinfo, zlib; ZIP for packaging. Verify all locked requirements with `composer check-platform-reqs`. Docker also builds pcntl and sockets. | +| Manual runtime | 64-bit PHP 8.3/8.4/8.5 and Composer 2. Docker pins PHP 8.4.26 and Composer 2.10.3. | +| Extensions | PDO/PDO SQLite, mbstring, XML, DOM, fileinfo, zlib; ZIP for the optional development packager. Verify all locked requirements with `composer check-platform-reqs`. Docker also builds pcntl and sockets. | | SQLite | Application minimum 3.35. Release gate accepts 3.51.3+, or reviewed 3.44.6 / 3.50.7. Check PHP's loaded library. Docker builds checksum-verified 3.51.3. | | Telegram | Your application API ID/hash, BotFather token and configured operator user IDs or resolvable usernames. | | GeoNames | Your webservice-enabled account for city search/automatic timezone lookup. Known cities and explicit coordinates remain available without it. | | Filesystem | Persistent application data and separate MadelineProto session. The runtime also needs a writable working directory for its library worker log and PrimeModule copies. | -Offline tests use fake Telegram gateways and provider fixtures without bot credentials. Live staging acceptance must cover permission restoration, interruption/restart, topics, client rendering, inline/GPS, Stars and command menus. +Offline tests use fake Telegram gateways and provider fixtures without bot credentials. Recheck permission restoration and restart on the deployment target; test topics, client rendering, inline/GPS, Stars and command menus where used. See the precise [acceptance record](docs/IMPLEMENTATION_STATUS.md). ## Docker installation @@ -55,17 +55,18 @@ Shell examples use a Linux/POSIX terminal. Run Docker commands **on the host, fr 1. Obtain the reviewed source. For the release deployment archive: ~~~sh -unzip shabbat-3.0.0-dev.9.zip -d shabbat +unzip shabbat-3.0.0.zip -d shabbat cd shabbat +unset BUILD_COMMIT ~~~ -It contains source and `composer.lock`, without installed `vendor/`. Docker installs locked production dependencies. **Retain archive `build-info.json`.** In this publication archive it records the verified historical baseline commit, `local_changes=true` and the exact publication-source fingerprint; the baseline is not a new commit of these changes. For a reviewed Git checkout instead, supply its actual commit before building: +It contains source and `composer.lock`, without installed `vendor/`. Docker installs locked production dependencies. **Retain archive `build-info.json`.** The release archive records its exact reviewed commit, `local_changes=false` and the application-source fingerprint. Leave `BUILD_COMMIT` absent from `.env`; the archive example clears an inherited value so it cannot override this identity. For a reviewed Git checkout instead, supply its actual commit before building: ~~~sh export BUILD_COMMIT="$(git rev-parse HEAD)" ~~~ -A baseline commit alone does not identify uncommitted changes; the source fingerprint also identifies this snapshot. Do not substitute an unrelated commit. +Use an unchanged release archive or a clean matching Git checkout. Do not substitute an unrelated commit or retain archive metadata after editing its source. 2. Create private configuration once in this new installation: @@ -74,7 +75,7 @@ cp .env.example .env chmod 600 .env ~~~ -Edit `.env`: replace Telegram examples, set `ADMIN`, your GeoNames account when needed, and `SOURCE_URL` to the exact corresponding source you make available. Keep simple `KEY=value` syntax compatible with PHP raw INI and Compose. Exclude the configured file from uploads. +Edit `.env`: replace Telegram examples, set `ADMIN`, your GeoNames account when needed, and `SOURCE_URL=https://github.com/WizardLoop/shabbat/releases/tag/v3.0.0` for this unchanged release, whose corresponding-source asset must be available. For modified deployments, provide their exact matching source instead. Keep simple `KEY=value` syntax compatible with PHP raw INI and Compose. Exclude the configured file from uploads. 3. Build and check the image. These steps install/patch dependencies and write image metadata without starting the bot: @@ -330,7 +331,7 @@ docker compose run --rm --no-deps shabbat php bin/self-check.php --release `docker compose up -d shabbat` then activates the reviewed image; inspect logs/health. Manual installations follow stop/backup/install-from-lock/migrate/check/start. -dev.8 → dev.9 adds `016_delivery_safety.sql`. dev.6 also needs 013–015; earlier versions apply all missing migrations automatically. Do not edit applied SQL. Uncertain past delivery attempts are handled conservatively; older unverified permission snapshots still require administrator review. +3.0.0 adds no migration beyond dev.9. dev.8 → dev.9 added `016_delivery_safety.sql`. dev.6 also needs 013–015; earlier versions apply all missing migrations automatically. Do not edit applied SQL. Uncertain past delivery attempts are handled conservatively; older unverified permission snapshots still require administrator review. For the old file-based bot: preserve a protected legacy copy; stop old writers for final import/cutover; initialize a new DB; run dry-run, compare counts/templates/rights/warnings, then apply with stopped writers and backup directory. The exact commands appear above. For Docker mount only the protected copy read-only: @@ -446,13 +447,13 @@ php patches/broadcastmanager/generate-artifacts.php These commands rewrite patch artifacts/manifests from bundled reviewed sources. They are for an intentional patch review, not routine installation. Review the changed hashes/diffs and run the full patch checks afterward. The apply/verify PHP scripts also accept an optional first positional vendor directory; leave it unset for the normal `vendor/` path. -For local packaging with required development dependencies and verified identity: +For release packaging from a clean committed checkout, with Git, Python 3.9+ and the locked development installation available: ~~~sh php scripts/package.php ~~~ -This writes application, corresponding-source and server-test ZIPs/checksums/manifests to `dist/`, without publishing. This prerelease uses `shabbat-3.0.0-dev.9.zip` without installed dependencies and a separately inventoried runtime corresponding-source bundle; do not substitute the developer packager's installed tool distributions for that source collection. Consult each manifest for inclusion/omissions; application source plus a lockfile is not a complete dependency source bundle. +This writes `shabbat-3.0.0.zip`, `shabbat-3.0.0-corresponding-source.zip`, `RELEASE_MANIFEST.json` and `SHA256SUMS` to `dist/`, without publishing. The source bundle includes locked runtime sources, reviewed patches and pinned preferred-source supplements. The legacy three-archive tool is available only through `php scripts/package.php --development` for local development, with default output `dist/development/`; its installed tool distributions do not constitute a release corresponding-source offer. See [release preparation](docs/RELEASE.md) for prerequisites, source scope and artifact checks. [Architecture](docs/ARCHITECTURE.md) · [Dependencies](docs/DEPENDENCIES.md) · [Patches](docs/PATCHES.md) · [Release preparation](docs/RELEASE.md) · [Contributing](.github/CONTRIBUTING.md) · [Code of conduct](.github/CODE_OF_CONDUCT.md) diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index 59de998..9c03394 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -1,6 +1,6 @@ # Third-party notices -WizardLoop Shabbat **3.0.0-dev.9** is distributed as an **AGPL-3.0-only** application. Dependency, historical-source and data licenses retain their own scope. The full application license is in [LICENSE](LICENSE); the [licensing guide](docs/LICENSING.md) explains the source offer. Exact locked versions, sources, license paths and findings are recorded in the [dependency inventory](docs/dependencies.json). +WizardLoop Shabbat **3.0.0** is distributed as an **AGPL-3.0-only** application. Dependency, historical-source and data licenses retain their own scope. The full application license is in [LICENSE](LICENSE); the [licensing guide](docs/LICENSING.md) explains the source offer. Exact locked versions, sources, license paths and findings are recorded in the [dependency inventory](docs/dependencies.json). ## Code and tools @@ -35,4 +35,4 @@ The complete [CC-BY-4.0](LICENSES/CC-BY-4.0.txt) and [CC-BY-SA-4.0](LICENSES/CC- No third-party graphic asset was added. Telegram standard emoji and button metadata are interface features. Provenance of an older remote thumbnail is unestablished; current inline results do not depend on it. -Historical formatted-date reference exports had conflicting project declarations and no recovered standalone grant or Git history. Their hashes and findings are retained in [the provenance review](docs/MADELINE_FORMATTED_DATE.md); those original exports are not redistributed. The retained historical UpdateLoop script has a provenance hash but no standalone license header; its authorship/grant provenance remains a release-review item. Do not treat a successful checksum or a package license inventory as a resolution of that item. +Historical formatted-date reference exports had conflicting project declarations and no recovered standalone grant or Git history. Their hashes and findings are retained in [the provenance review](docs/MADELINE_FORMATTED_DATE.md); those original exports are not redistributed. On 2026-10-16, the project maintainer stated that they authored the retained historical UpdateLoop helper and explicitly authorized distribution under AGPL-3.0-only. The dated, hash-scoped attestation is recorded in [its manifest](patches/madelineproto/manifest.json); the original helper bytes remain unchanged. This records the maintainer's statement, not an independent legal certification. diff --git a/VERSION b/VERSION index b13f1d9..4a36342 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.0.0-dev.9 +3.0.0 diff --git a/composer.json b/composer.json index 3f1ec02..e5fbd31 100644 --- a/composer.json +++ b/composer.json @@ -1,66 +1,67 @@ -{ - "name": "wizardloop/shabbat", - "description": "WizardLoop Shabbat Bot: group permissions, Jewish calendar and opt-in reminders.", - "type": "project", - "license": "AGPL-3.0-only", - "authors": [ - { - "name": "WizardLoop" - } - ], - "require": { - "php": "~8.3.0 || ~8.4.0 || ~8.5.0", - "ext-pdo": "*", - "ext-pdo_sqlite": "*", - "ext-mbstring": "*", - "danog/madelineproto": "8.7.0", - "wizardloop/broadcastmanager": "~3.2.2", - "amphp/amp": "^3.1.1", - "amphp/file": "^3.2", - "amphp/http-client": "^5.3.4", - "revolt/event-loop": "^1.0.7" - }, - "require-dev": { - "phpstan/phpstan": "^2.1", - "phpunit/phpunit": "^12.5", - "squizlabs/php_codesniffer": "^4.0" - }, - "autoload": { - "psr-4": { - "Shabbat\\": "src/" - } - }, - "config": { - "allow-plugins": {}, - "sort-packages": true - }, - "scripts": { - "post-install-cmd": [ - "@php scripts/apply-patches.php", - "@php scripts/verify-patches.php" - ], - "post-update-cmd": [ - "@php scripts/apply-patches.php", - "@php scripts/verify-patches.php" - ], - "patches": [ - "@php scripts/apply-patches.php", - "@php scripts/verify-patches.php" - ], - "test": "phpunit", - "lint": "@php scripts/quality.php", - "analyse": "phpstan analyse --no-progress --memory-limit=1G --debug", - "check-docs": "@php scripts/check-docs.php", - "check-locales": "@php scripts/check-locales.php", - "dependencies": "@php scripts/dependencies.php", - "self-check": "@php bin/self-check.php", - "style": "phpcs --standard=phpcs.xml.dist -n", - "style-fix": "phpcbf --standard=phpcs.xml.dist", - "style-review": "phpcs --standard=phpcs.xml.dist" - }, - "autoload-dev": { - "psr-4": { - "Shabbat\\Tests\\": "tests/" - } - } +{ + "name": "wizardloop/shabbat", + "description": "WizardLoop Shabbat Bot: group permissions, Jewish calendar and opt-in reminders.", + "type": "project", + "license": "AGPL-3.0-only", + "authors": [ + { + "name": "WizardLoop" + } + ], + "require": { + "php": "~8.3.0 || ~8.4.0 || ~8.5.0", + "ext-pdo": "*", + "ext-pdo_sqlite": "*", + "ext-mbstring": "*", + "danog/madelineproto": "8.7.0", + "wizardloop/broadcastmanager": "~3.2.2", + "amphp/amp": "^3.1.1", + "amphp/file": "^3.2", + "amphp/http-client": "^5.3.4", + "revolt/event-loop": "^1.0.7" + }, + "require-dev": { + "phpstan/phpstan": "^2.1", + "phpunit/phpunit": "^12.5", + "squizlabs/php_codesniffer": "^4.0" + }, + "autoload": { + "psr-4": { + "Shabbat\\": "src/" + } + }, + "config": { + "allow-plugins": {}, + "sort-packages": true + }, + "scripts": { + "post-install-cmd": [ + "@php scripts/apply-patches.php", + "@php scripts/verify-patches.php" + ], + "post-update-cmd": [ + "@php scripts/apply-patches.php", + "@php scripts/verify-patches.php" + ], + "patches": [ + "@php scripts/apply-patches.php", + "@php scripts/verify-patches.php" + ], + "test": "phpunit", + "lint": "@php scripts/quality.php", + "analyse": "phpstan analyse --no-progress --memory-limit=1G --debug", + "check-docs": "@php scripts/check-docs.php", + "check-locales": "@php scripts/check-locales.php", + "dependencies": "@php scripts/dependencies.php", + "self-check": "@php bin/self-check.php", + "package": "@php scripts/package.php", + "style": "phpcs --standard=phpcs.xml.dist -n", + "style-fix": "phpcbf --standard=phpcs.xml.dist", + "style-review": "phpcs --standard=phpcs.xml.dist" + }, + "autoload-dev": { + "psr-4": { + "Shabbat\\Tests\\": "tests/" + } + } } \ No newline at end of file diff --git a/docs/IMPLEMENTATION_STATUS.md b/docs/IMPLEMENTATION_STATUS.md index db834ea..58f8935 100644 --- a/docs/IMPLEMENTATION_STATUS.md +++ b/docs/IMPLEMENTATION_STATUS.md @@ -1,6 +1,6 @@ # Implementation and acceptance status -Version: **3.0.0-dev.9**. This document describes the current prerelease source, not a production acceptance certificate. The application remains MadelineProto 8.7.0, PHP and SQLite. The publication follow-up updates Composer build tooling, protects immutable file bytes and documents deployment; it does not change bot behavior. +Version: **3.0.0**, stable. This document distinguishes implemented behavior from the evidence actually available. The application remains MadelineProto 8.7.0, PHP and SQLite. The stable release retains the dev.9 runtime behavior, approved patches, dependency lock and 16 migrations. It updates release identity, source packaging and deployment documentation. ## Implemented paths and limits @@ -22,19 +22,23 @@ Version: **3.0.0-dev.9**. This document describes the current prerelease source, | Persistence | 16 checksum-tracked migrations, explicit backup/import/restore, durable jobs and permission evidence | Startup validates schema rather than migrating; rollback needs compatible code, DB, session and library state | | Maintenance | Bounded routine-history cleanup, separate heartbeats, queue metrics and explicit deep integrity check | Retained uncertain/recovery/interactive state may grow; operators still need monitoring, backups and archival policy | -## Verification policy +## Recorded live acceptance -The existing test suites exercise fake transports, provider fixtures, controlled clocks, isolated databases, migration/restore, patch lifecycle and simulated load. The publication checks must be run against the final isolated source and its own locked Composer installation. Original dev.9 test results are historical evidence and are not automatically attributed to a modified publication tree. +On 2026-10-16 the project owner reported successful live dev.9 tests of group locking, unlocking, restoration of the original permissions and restart. This is operator-reported evidence for those paths. It does not establish a real Shabbat/Yom Tov transition, a full holiday sequence, sustained load capacity, a long wall-clock soak, every client/language, payment flow or the legacy production migration. -A delivered `checks/PUBLICATION_REPORT.md` and machine-readable report identify the exact publication archives, source fingerprints, commands, actual results, skips and blockers. Those reports are separate delivery artifacts, not runtime source. The [publication status](PUBLICATION_STATUS.md) explains archive scope. +The stable version does not add a runtime feature or schema migration to dev.9. Keep the above acceptance tied to its actual tested behavior; the stable release's exact source, package checks and CI results are recorded separately. -Local Windows limitations include unavailable Docker and POSIX-only/symlink-dependent test coverage. The local PHP-loaded SQLite 3.45.2 is deliberately rejected by the release gate; the Docker target pins SQLite 3.51.3 and must pass that gate. Do not describe an unexecuted CI run, image build or Telegram operation as successful. +## Automated verification and host limits -## Required live acceptance +The suites exercise fake transports, provider fixtures, controlled clocks, isolated databases, migration/restore, patch lifecycle and simulated load. Run them against the final reviewed stable commit and its locked installation. The dev.9 merged baseline passed its hosted checks, but that result is not a replacement for the stable commit's own checks. Release manifests, SHA-256 sums and the matching Actions run identify the tested source/artifacts. Local checks directories are external evidence, not runtime source. -Before production cutover, use a separate bot and disposable groups to verify image startup, exact original-permission restoration, conflicts/recovery, automatic transitions, restarts and shutdown, inline/GPS/client behavior, source offer and payment flow where enabled. Exercise both forum and non-forum groups if used. Verify that the correct existing production data is imported; do not substitute the test bot's database. +Local Windows limitations include unavailable Docker and POSIX-only/symlink-dependent coverage. The local PHP-loaded SQLite 3.45.2 is deliberately rejected by the release gate; the Docker target pins SQLite 3.51.3 and must pass that gate. Do not describe an unexecuted image build, CI run or Telegram operation as successful. See [publication status](PUBLICATION_STATUS.md) for source scope and [release preparation](RELEASE.md) for gates. -GitHub publication is separately authorized and gated on the reviewed source and CI. It does not change production, restart the active bot or send Telegram messages. +## Remaining deployment acceptance + +On a separate bot and disposable groups, verify the feature paths your installation uses: conflicts/recovery, automatic protected-period transitions, interrupted work/shutdown, inline/GPS/client rendering, source offer, command menus, rich messages and payment flow where enabled. Exercise forum and non-forum groups if used. Observe a real scheduled close/open cycle and monitor queue/heartbeat behavior under your traffic; synthetic load is not a Telegram capacity guarantee. + +The `/root/shabat` legacy import still needs a stopped full backup, exact group-ID/settings comparison, permission review, restore rehearsal and monitored cutover. Test-bot data is never substituted for production data. Follow [the production upgrade guide](PRODUCTION_UPGRADE.md). Publishing the source/tag/release does not perform these server actions or restart the active bot. ## Documentation map diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index e97daa1..f030119 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -2,7 +2,7 @@ [English overview](../README.md) | [עברית](../readme-he.md) | [Configuration](CONFIGURATION.md) | [Migration](MIGRATION.md) -This is the `3.0.0-dev.9` development snapshot. Install the reviewed source package or matching checkout, rather than assuming the public default branch already contains it. Installation does not imply that Docker or Telegram acceptance has passed for your host. See [publication status](PUBLICATION_STATUS.md). +This documents stable `3.0.0`. Install the matching release deployment ZIP or exact tagged checkout. The owner confirmed dev.9 live locking, unlocking, original-permission restoration and restart; acceptance on your host and remaining feature-specific tests are separate. See [publication status](PUBLICATION_STATUS.md). ## Requirements and command context @@ -97,6 +97,6 @@ php bot.php ## Source identity and production acceptance -Docker build identity requires either an explicit 40-hex `BUILD_COMMIT` from the actual reviewed checkout or the retained archive `build-info.json`. The release deployment ZIP includes the actual release commit, `local_changes=false` and its exact application-source fingerprint. Earlier local preparation archives instead record their historical baseline and `local_changes=true`; those are distinct artifacts. Retain archive metadata unchanged when building from a ZIP; for a reviewed Git checkout export `BUILD_COMMIT="$(git rev-parse HEAD)"` before building. A baseline commit alone does not identify unpublished changes. For an existing legacy bot, use [the stopped-writer production cutover guide](PRODUCTION_UPGRADE.md). +Docker build identity requires either an explicit 40-hex `BUILD_COMMIT` from the actual reviewed checkout or the retained archive `build-info.json`. The release deployment ZIP includes the actual release commit, `local_changes=false` and its exact application-source fingerprint. Earlier local preparation archives instead record their historical baseline and `local_changes=true`; those are distinct artifacts. Retain archive metadata unchanged when building from a ZIP, leave `BUILD_COMMIT` out of `.env` and run `unset BUILD_COMMIT` in that shell; for a reviewed Git checkout export `BUILD_COMMIT="$(git rev-parse HEAD)"` before building. A baseline commit alone does not identify unpublished changes. For an existing legacy bot, use [the stopped-writer production cutover guide](PRODUCTION_UPGRADE.md). Before replacing a live bot, test the image build, exact permission restoration, restart recovery, inline/GPS flows, supported clients, command scopes and donation flows with a separate bot/group. Preserve and rehearse rollback. No installation command should modify real groups as an implicit test. diff --git a/docs/LICENSING.md b/docs/LICENSING.md index 1a3d1d3..fb05670 100644 --- a/docs/LICENSING.md +++ b/docs/LICENSING.md @@ -16,21 +16,23 @@ When conveying a modified covered program, retain notices and the license, ident ## Publication archive scope -The `v3.0.0-dev.9` release provides two separate artifacts: +The `v3.0.0` release provides two separate artifacts: | Artifact | Scope | |---|---| -| `shabbat-3.0.0-dev.9.zip` | Clean repository source: application, resources, migrations, tests, scripts, Composer manifest/lock, public configuration, Docker files, documentation, licenses and required GitHub files. No installed `vendor` tree. | -| `shabbat-3.0.0-dev.9-corresponding-source.zip` | Application material plus the 57 locked Composer runtime packages, their source/license notices and the applied reviewed patches. Exact contents, exclusions and hashes are recorded in its manifest. | +| `shabbat-3.0.0.zip` | Clean repository source: application, resources, migrations, tests, scripts, Composer manifest/lock, public configuration, Docker files, documentation, licenses and required GitHub files. No installed `vendor` tree. | +| `shabbat-3.0.0-corresponding-source.zip` | Application material plus the 57 locked Composer runtime packages, their source/license notices and the applied reviewed patches. Exact contents, exclusions and hashes are recorded in its manifest. | The corresponding-source artifact is scoped to the application and its Composer runtime dependencies. Development tools are reproducible from `composer.lock` and are inventoried, but are not bundled in that runtime source artifact; PHPStan's distributed PHAR must not be called its preferred source. The archive is not a complete Docker-image or operating-system source distribution. PHP, SQLite, Composer and base-image/system components are external to that scope; Docker pins and source references describe the build inputs. Any unresolved or omitted preferred-source component must be listed in the publication report before the artifact can be described as complete within its stated scope. Keep the application source, all five patch sets, immutable bases/intermediates, added files, exact diffs, manifests and notices available together. The two reviewed public Amp HTTP Server TLS example private keys may be omitted from a distribution only with the exact omission records preserved; they are not used by this bot. Other private keys and real runtime credentials do not belong in source archives. -The repository's existing `php scripts/package.php` is a separate packaging tool: with a development installation it builds application, corresponding-source and server-test variants under `dist/`. It copies the installed dependency distributions, including development tools, so its output alone is not evidence that every development tool's preferred source is present. The dedicated publication artifacts above have their own content manifests and checks. +Release packaging uses the checked-in [source-input manifest](../resources/release/source-manifest.json) and [preferred-source supplements](../resources/release/README.md). The manifest pins all 2,960 included runtime dependency files and 92 supplementary source files. Packaging verifies a locked, patched runtime installation against those hashes and adds the exact reviewed application tree; it excludes installed development tools and generated Composer autoload metadata. Original component notices and the two approved example-key omission records remain attached to that scope. ## Evidence and remaining review The [dependency inventory](dependencies.json) distinguishes 57 runtime packages and 26 development packages, exact versions, metadata, distributed license files and findings. `LICENSE_TEXT_PRESENT` means a recognized license text was found; it is not an authorship or compatibility certificate. Regenerate it with `php scripts/dependencies.php` from the isolated locked installation. Composer security advisories are a separate check. -The original UpdateLoop reference script retains its exact provenance hash but has no standalone license header. The historical formatted-date exports have unresolved standalone grants and are not redistributed. Preserve those findings and review any uncertain contributor or deployment-only source provenance before a stable distribution. The [publication status](PUBLICATION_STATUS.md) and external `checks/PUBLICATION_REPORT.md` identify what was actually checked for this preparation. +On **2026-10-16**, the WizardLoop project maintainer stated that they authored the historical UpdateLoop helper retained at [original-reference.php](../patches/madelineproto/original-reference.php) and explicitly authorized its distribution under **AGPL-3.0-only**. The [manifest](../patches/madelineproto/manifest.json) binds this attestation to SHA-256 `1ec2691498e878d28ca8e9cde94b00c803d9ccba789096ffc8471156dfb429e9`. The exact headerless helper bytes are preserved; the dated statement supplies the maintainer's authorization without rewriting historical source or dependency licenses. It is not an independent authorship or legal certification. + +The historical formatted-date exports still have unresolved standalone grants and are not redistributed. Their finding is separate from the UpdateLoop attestation. Preserve any remaining contributor or deployment-only provenance findings. [Publication status](PUBLICATION_STATUS.md), release manifests and the recorded checks identify the evidence available for the actual release. diff --git a/docs/PRODUCTION_UPGRADE.md b/docs/PRODUCTION_UPGRADE.md index 5c7d034..540de0b 100644 --- a/docs/PRODUCTION_UPGRADE.md +++ b/docs/PRODUCTION_UPGRADE.md @@ -2,11 +2,11 @@ [English overview](../README.md) | [עברית](../readme-he.md) | [Import mapping](MIGRATION.md) | [Backup and restore](BACKUP_RESTORE.md) | [Permission recovery](PERMISSION_RECOVERY.md) -This procedure is for the existing Docker Compose installation at **`/root/shabat`** (one `b`), upgrading the file-based implementation at historical baseline `2976ab8339f489d933c7246e0cb27f3b0e4aa697` to **`3.0.0-dev.9`**. The final source directory remains `/root/shabat`. `/root/shabbat-test` is a separate test installation and is not a migration source or destination. +This procedure is for the existing Docker Compose installation at **`/root/shabat`** (one `b`), upgrading the file-based implementation at historical baseline `2976ab8339f489d933c7246e0cb27f3b0e4aa697` to **`3.0.0`**. The final source directory remains `/root/shabat`. `/root/shabbat-test` is a separate test installation and is not a migration source or destination. **לשרת הקיים `/root/shabat`: בונים את הגרסה החדשה בנפרד, עוצרים את הבוט הישן, מגבים את כל התיקייה, מייבאים ובודקים, ורק אז מחליפים את תיקיית המקור ומפעילים מופע יחיד. הרשאות ישנות עשויות לדרוש אישור ידני של מנהל קבוצה; ייבוא תקין אינו מבטיח שחזור אוטומטי שלהן.** -The release is a development prerelease. Complete acceptance with a separate test bot before this production maintenance window. These are operator instructions; writing this document does not execute a deployment. The commands below are for **Bash on the Linux server as root**, with Docker daemon access, Compose v2, `curl`, `unzip`, `tar`, `sha256sum` and sufficient free storage. Every `run ... php ...` maintenance command explicitly replaces the image's normal bot command; it does not log in to Telegram. Only the final `up` starts the new bot. +This targets the stable 3.0.0 release. On dev.9, the owner confirmed live locking, unlocking, original-permission restoration and restart. That confirmation does not cover automatic holy-day transitions, load capacity, a long-running soak or this production import. Complete the remaining checks relevant to your deployment with a separate test bot, and schedule the monitored production window deliberately. These are operator instructions; writing this document does not execute a deployment. The commands below are for **Bash on the Linux server as root**, with Docker daemon access, Compose v2, `curl`, `unzip`, `tar`, `sha256sum` and sufficient free storage. Every `run ... php ...` maintenance command explicitly replaces the image's normal bot command; it does not log in to Telegram. Only the final `up` starts the new bot. ## 1. Understand what moves and what requires review @@ -41,8 +41,11 @@ set -euo pipefail umask 077 ORIGINAL_DIR=/root/shabat TEST_DIR=/root/shabbat-test -VERSION=3.0.0-dev.9 -NEW_PROJECT=shabbat-production-dev9 +VERSION=3.0.0 +NEW_PROJECT=shabbat-production +ARCHIVE="shabbat-${VERSION}.zip" +test "$VERSION" = 3.0.0 +test "$NEW_PROJECT" = shabbat-production STAMP="$(date -u +%Y%m%dT%H%M%SZ)" UPLOAD_DIR=/root/shabbat-release-upload RELEASE_DIR="/root/shabbat-releases/$VERSION-$STAMP" @@ -71,6 +74,7 @@ OLD_CONTAINER_ID='REPLACE_WITH_VERIFIED_PRODUCTION_CONTAINER_ID' docker inspect --format '{{range .Mounts}}{{println .Type .Source "->" .Destination}}{{end}}' "$OLD_CONTAINER_ID" docker inspect --format '{{index .Config.Labels "com.docker.compose.project"}} / {{index .Config.Labels "com.docker.compose.service"}}' "$OLD_CONTAINER_ID" test "$(docker inspect --format '{{index .Config.Labels "com.docker.compose.service"}}' "$OLD_CONTAINER_ID")" = shabbat +test "$(docker inspect --format '{{range .Mounts}}{{if eq .Destination "/app"}}{{.Type}}:{{.Source}}{{end}}{{end}}' "$OLD_CONTAINER_ID")" = "bind:$ORIGINAL_DIR" OLD_PROJECT="$(docker inspect --format '{{index .Config.Labels "com.docker.compose.project"}}' "$OLD_CONTAINER_ID")" OLD_IMAGE_ID="$(docker inspect --format '{{.Image}}' "$OLD_CONTAINER_ID")" OLD_RESTART_POLICY="$(docker inspect --format '{{.HostConfig.RestartPolicy.Name}}' "$OLD_CONTAINER_ID")" @@ -102,22 +106,28 @@ Ensure storage can hold the complete old folder twice, its saved image, the new ## 3. Download, verify and build the reviewed release beside production -The deployment asset is `shabbat-3.0.0-dev.9.zip`, with files directly at its root and no installed vendor. The separate corresponding-source ZIP is for source inspection; it is not the deployment archive. These URLs become usable after the release is published. +The deployment asset is `shabbat-3.0.0.zip`, with files directly at its root and no installed vendor. The separate corresponding-source ZIP is for source inspection; it is not the deployment archive. Use the assets attached to the stable `v3.0.0` release. The checksum block requires exactly one valid SHA-256 record for the expected deployment filename; missing or duplicate records stop the procedure. ```sh -RELEASE_URL=https://github.com/WizardLoop/shabbat/releases/download/v3.0.0-dev.9 +RELEASE_URL="https://github.com/WizardLoop/shabbat/releases/download/v${VERSION}" curl --fail --location --proto '=https' --tlsv1.2 \ - "$RELEASE_URL/shabbat-3.0.0-dev.9.zip" -o "$UPLOAD_DIR/shabbat-3.0.0-dev.9.zip" + "$RELEASE_URL/$ARCHIVE" -o "$UPLOAD_DIR/$ARCHIVE" curl --fail --location --proto '=https' --tlsv1.2 \ "$RELEASE_URL/SHA256SUMS" -o "$UPLOAD_DIR/SHA256SUMS" ( cd "$UPLOAD_DIR" - awk '$2 == "shabbat-3.0.0-dev.9.zip" { print }' SHA256SUMS > deployment.sha256 - test -s deployment.sha256 + awk -v asset="$ARCHIVE" ' + $2 == asset { + if (NF != 2 || length($1) != 64 || $1 ~ /[^0-9a-f]/) exit 1 + print $1 " " asset + count++ + } + END { if (count != 1) exit 1 } + ' SHA256SUMS > deployment.sha256 sha256sum --check deployment.sha256 ) install -d -m 700 "$RELEASE_DIR" -unzip -q "$UPLOAD_DIR/shabbat-3.0.0-dev.9.zip" -d "$RELEASE_DIR" +unzip -q "$UPLOAD_DIR/$ARCHIVE" -d "$RELEASE_DIR" test "$(cat "$RELEASE_DIR/VERSION")" = "$VERSION" test -f "$RELEASE_DIR/composer.lock" test -f "$RELEASE_DIR/build-info.json" @@ -135,7 +145,7 @@ DATA_DIR=/app/data SESSION_PATH=/app/runtime/bot.shabbat HEARTBEAT_PATH=/app/data/scheduler-heartbeat.json LEGACY_DATA_PATH=. -SOURCE_URL=https://github.com/WizardLoop/shabbat/releases/tag/v3.0.0-dev.9 +SOURCE_URL=https://github.com/WizardLoop/shabbat/releases/tag/v3.0.0 ``` Compose explicitly fixes `DATA_DIR` and `SESSION_PATH`; the other paths above avoid a stale host/test path in `.env`. The release page must expose the matching corresponding-source asset before production service. Do not use test bot credentials. Never share `docker compose config` output without `--quiet`. @@ -366,18 +376,18 @@ As the configured bot owner, use `/version` or `/source` privately to verify rel For **each** unresolved legacy permission record, a current group administrator must follow [permission recovery](PERMISSION_RECOVERY.md): outside protected periods, configure the actual intended normal group permissions in Telegram; refresh the bot's **Resolve permission problem** panel; review the named group; and explicitly choose **Use current permissions as normal**. A legacy/unverified snapshot cannot be used by the restore button. Adoption does not itself send a restriction update. Re-check diagnostics; leave unexplained mismatches unresolved rather than treating generally open permissions as the intended baseline. -Review copied broadcast history and any cancelled/blocked schedule. Do not recreate an interrupted broadcast without checking which messages Telegram already accepted. Retain the old source/session/private backup until a real scheduled close/open cycle and recovery behavior have been accepted. +Review copied broadcast history and any cancelled/blocked schedule. Do not recreate an interrupted broadcast without checking which messages Telegram already accepted. Monitor both heartbeats, pending permission recovery, queue age, delivery delay and private logs through startup and the first real scheduled close/open cycle. Investigate missing work, repeated retries, provider failures or growing queues before considering the cutover accepted. Retain the old source/session/private backup until that cycle and recovery behavior have been accepted; the earlier dev.9 manual/live confirmation does not substitute for this observation. The permanent production commands are now run **from `/root/shabat`, with the recorded project name**: ```sh cd /root/shabat -docker compose --project-name shabbat-production-dev9 ps -docker compose --project-name shabbat-production-dev9 logs --tail=120 shabbat -docker compose --project-name shabbat-production-dev9 exec -T shabbat php bin/health.php --deep +docker compose --project-name shabbat-production ps +docker compose --project-name shabbat-production logs --tail=120 shabbat +docker compose --project-name shabbat-production exec -T shabbat php bin/health.php --deep ``` -For an intentional later stop, use `docker compose --project-name shabbat-production-dev9 stop shabbat`; for an approved restart, use `docker compose --project-name shabbat-production-dev9 restart shabbat`. The new persistent volumes are `shabbat-production-dev9_bot-data` and `shabbat-production-dev9_madeline-session`. Keep both, the private `.env`, matching source/lock/patches and corresponding-source identity in the normal backup policy. A later SQLite-version upgrade follows the stopped-writer backup/migration instructions, not this legacy import again. +For an intentional later stop, use `docker compose --project-name shabbat-production stop shabbat`; for an approved restart, use `docker compose --project-name shabbat-production restart shabbat`. The new persistent volumes are `shabbat-production_bot-data` and `shabbat-production_madeline-session`. Keep both, the private `.env`, matching source/lock/patches and corresponding-source identity in the normal backup policy. A later SQLite-version upgrade follows the stopped-writer backup/migration instructions, not this legacy import again. ## 9. Roll back without mixing old and new state @@ -423,7 +433,7 @@ sha256sum "$BACKUP_DIR/failed-new-state/"*.tar \ > "$BACKUP_DIR/failed-new-state/SHA256SUMS" ``` -After reviewing any remote effects, return the preserved old folder to its original path. Do not execute the first rename if the swap never happened; in that case `/root/shabat` already contains the old source and no directory replacement is needed. +After reviewing any remote effects, return the preserved old folder to its original path. This block applies only after the completed step-7 swap; use the separate pre-swap branch above if no rename occurred. ```sh FAILED_SOURCE_DIR="/root/shabat-failed-$STAMP" diff --git a/docs/PUBLICATION_STATUS.md b/docs/PUBLICATION_STATUS.md index f906cc0..ebd9cb4 100644 --- a/docs/PUBLICATION_STATUS.md +++ b/docs/PUBLICATION_STATUS.md @@ -1,16 +1,18 @@ # Publication and release status -## Current GitHub prerelease +## Stable release 3.0.0 -The owner-authorized `v3.0.0-dev.9` publication uses the reviewed merge commit and remains a prerelease. The deployment asset is `shabbat-3.0.0-dev.9.zip`; the separate `shabbat-3.0.0-dev.9-corresponding-source.zip` contains the 57 locked runtime package trees and the preferred-source supplements described below. `SHA256SUMS` and `RELEASE_MANIFEST.json` identify the final archives, source fingerprint and CI evidence. Release `build-info.json` records the actual merge commit and `local_changes=false` only after exact source equality. See [release notes](RELEASE_NOTES.md) and [legacy production cutover](PRODUCTION_UPGRADE.md). +The owner-authorized `v3.0.0` stable release uses the exact reviewed merge commit. Its deployment asset is `shabbat-3.0.0.zip`; `shabbat-3.0.0-corresponding-source.zip` adds the 57 locked runtime package trees and preferred-source supplements below. `SHA256SUMS` and `RELEASE_MANIFEST.json` identify the archives, source fingerprint and scope; the matching Actions run supplies CI evidence. Archive `build-info.json` records the actual commit and `local_changes=false` after exact source equality. See [release notes](RELEASE_NOTES.md) and [production cutover](PRODUCTION_UPGRADE.md). -Composer 2.10.3 replaces the old build-tool pin; application dependency versions, approved patch bytes and existing SQL migration bytes are unchanged. The generic developer packager output is not substituted for the scoped runtime source asset. Publishing the GitHub release does not deploy or restart the bot. +Stable packaging is now repository tooling: `composer package` / `php scripts/package.php` reads a clean committed Git tree and verifies the locked runtime sources and committed supplement inventory before writing the two ZIPs and metadata to `dist/`. Git and Python 3.9+ are packaging prerequisites. The old three-archive installed-tool path is explicitly `--development` and is not a release source offer. [Release preparation](RELEASE.md) documents the checks and prerequisites. + +The owner reported successful dev.9 live locking, unlocking, restoration of original group permissions and restart on 2026-10-16. The stable promotion preserves that runtime behavior; it does not convert those tests into holy-day, load, soak, all-client or production-migration acceptance. The Docker PHP 8.4 base moves to security-patched 8.4.26; Composer stays 2.10.3. Application lock, approved patch bytes and SQL migration bytes remain preserved. Publishing the GitHub release does not deploy or restart the bot. ## Historical local preparation The earlier local documentation/public-source preparation of **3.0.0-dev.9** preserved runtime behavior and locked dependencies. That preparation itself created no commit, tag, GitHub release or production deployment. Its historical artifact names and metadata are recorded below; use the current release assets above for deployment. -## Delivery layout +## Historical local delivery layout | Path in the local delivery | Contents | |---|---| @@ -20,7 +22,7 @@ The earlier local documentation/public-source preparation of **3.0.0-dev.9** pre | `artifacts/SHA256SUMS` | SHA-256 hashes for the delivered ZIPs | | `checks/` | Sanitized implementation inventory, original-source preservation evidence, executed-check reports, archive manifests and documented blockers | -The archive-only `build-info.json` records the verified original baseline commit, `local_changes=true` and the exact publication-source fingerprint. It is excluded from `repo/` and Git; it neither creates nor claims a new commit. Extract the publication ZIP into a new directory, retain that metadata unchanged, and follow the README. It is a source distribution requiring `composer install` or a Docker build, not a preconfigured bot. The existing `scripts/package.php` remains a separate developer packager that produces its documented three archive types from an installed development tree; do not confuse those names/scope with this publication delivery. +The archive-only `build-info.json` records the verified original baseline commit, `local_changes=true` and the exact publication-source fingerprint. It is excluded from `repo/` and Git; it neither creates nor claims a new commit. Extract the publication ZIP into a new directory, retain that metadata unchanged, and follow the README. It is a source distribution requiring `composer install` or a Docker build, not a preconfigured bot. At that time `scripts/package.php` was a separate three-archive developer packager. Stable 3.0.0 replaces its default with the reviewed two-archive release workflow and retains the old behavior only under `--development`; historical archive names and scope do not describe current release assets. ## Corresponding-source scope @@ -54,4 +56,4 @@ See [licensing](LICENSING.md), [third-party notices](../THIRD_PARTY_NOTICES.md), - Current acceptance and feature gaps are documented in [implementation status](IMPLEMENTATION_STATUS.md); they are not silently fixed or marketed as complete. - Exact test results belong to the final separate checks report. Previously recorded dev.9 results do not replace a clean-install check of this copy. -When publishing manually, use the exact reviewed source and preserve its corresponding-source offer. Do not upload private environment/session/data files. The historical local preparation performed no remote publication or production action; the later authorized GitHub prerelease is described at the top of this document. +When publishing manually, use the exact reviewed source and preserve its corresponding-source offer. Do not upload private environment/session/data files. The historical local preparation performed no remote publication or production action; the current authorized stable release is described at the top of this document. diff --git a/docs/RELEASE.md b/docs/RELEASE.md index 501dba4..b9cd6a3 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -1,16 +1,16 @@ # Release preparation and publication -The version in [VERSION](../VERSION) is **3.0.0-dev.9**. This remains a development snapshot for review and isolated acceptance testing. A clean source archive does not establish production readiness. See [current release notes](RELEASE_NOTES.md), [publication status](PUBLICATION_STATUS.md) and [licensing/source scope](LICENSING.md). +The version in [VERSION](../VERSION) is **3.0.0**, stable. The owner confirmed dev.9 live locking, unlocking, original-permission restoration and restart. Broader holy-day, load, soak and feature-specific acceptance remain separate. See [release notes](RELEASE_NOTES.md), [implementation status](IMPLEMENTATION_STATUS.md) and [licensing/source scope](LICENSING.md). -## Source and publication boundary +## Review and publication sequence -Prepare files in an isolated copy and keep runtime data separate. For the owner-authorized `v3.0.0-dev.9` prerelease, require green checks on the reviewed PR, mark it ready and merge without rewriting history, then validate the merged commit before creating the matching tag and release assets. No server deployment is part of that process. Release metadata must identify the actual merged commit and matching source fingerprint; the historical preparation baseline alone does not identify local changes. +Work in an isolated checkout without production credentials or state. Require green checks on the reviewed PR, merge it, and verify the exact resulting commit before creating `v3.0.0` and a stable GitHub release. Release artifacts must identify that actual commit and fingerprint with `local_changes=false`. Tagging and publishing require the owner's authorization; none of the commands below publishes or deploys. -The two publication artifacts are `shabbat-3.0.0-dev.9.zip` and `shabbat-3.0.0-dev.9-corresponding-source.zip`. The first contains the clean repository; the second adds the locked Composer runtime sources and notices within the scope documented in [LICENSING](LICENSING.md). The release also includes `SHA256SUMS` and `RELEASE_MANIFEST.json`. Local diagnostic `checks/` directories are not copied into the source ZIP. The corresponding-source asset is the separately reviewed runtime collection with preferred-source supplements, not the generic developer packager's installed-tool archive. +The release provides `shabbat-3.0.0.zip`, `shabbat-3.0.0-corresponding-source.zip`, `RELEASE_MANIFEST.json` and `SHA256SUMS`. The deployment ZIP contains clean repository source plus build identity, without installed vendor. The corresponding-source ZIP adds the locked runtime sources, licenses, reviewed patches and pinned preferred-source supplements. The manifest states the scope and exclusions; no claim covers the complete Docker operating system or all development-tool source. -## Reproducible checks +## Reproduce quality checks -Run these from the root of a disposable clean copy, as its nonroot owner with permission to write that copy. It must have no production `.env`, session or database. The Composer installation writes only that copy's dependencies and applies the approved local patches. Do not run installation or patch application against an active bot tree. +Run at the root of a disposable checkout, as its nonroot owner with write access, with the supported PHP/Composer runtime. The locked installation writes only this checkout's dependencies and applies the approved patches. Never install or patch dependencies inside an active bot tree. ```sh composer validate --strict --no-check-all @@ -27,9 +27,9 @@ php bin/self-check.php php bin/self-check.php --release ``` -`--no-check-all` retains Composer's strict manifest/lock validation while omitting its advice against the intentional exact MadelineProto constraint. Ordinary installation and upgrades use `composer install` with the existing lock. A dependency update is a separate reviewed change. Tests use isolated fixtures; the release self-check enforces the target-platform gate and must not be bypassed when the host SQLite is too old. +`--no-check-all` omits generic version-range advice for the deliberate MadelineProto pin while retaining strict manifest/lock validation. Installation/upgrades use `composer install` with the existing lock; dependency changes require separate review. The release self-check enforces the loaded SQLite/target runtime gate. Do not bypass it on an older host runtime. -Record the locked inventory and current advisory evidence from the same isolated installation: +Record the locked inventory and current advisory evidence from that same installation: ```sh composer show --locked --format=json @@ -38,31 +38,47 @@ composer audit --locked --format=json php scripts/dependencies.php ``` -The first three commands display package/license/advisory reports; the advisory command needs network access. `scripts/dependencies.php` writes `docs/dependencies.json` in the copy and validates bundled data/license artifacts. The release workflows use Composer 2.10.3; the installed license report must come from a verified locked installation. Advisory results and license evidence are separate checks. +The first three display reports; the audit requires network access. `scripts/dependencies.php` updates dependency documentation and validates bundled data/license artifacts. Review any resulting source changes and commit them before release packaging; the final source must match the reviewed commit. Composer 2.10.3 is pinned in workflows and the image. -For a target with Docker, run this from the disposable repository root as a user authorized to use its Docker engine. Compose requires the declared `.env` file even for a build. Create it from the public example in this fresh copy; no live Telegram credentials are needed to build the image. Do not overwrite an existing configured installation's `.env`. +## Build the target image + +From the fresh checkout root, with Docker Engine access and Compose v2: ```sh cp .env.example .env +export BUILD_COMMIT="$(git rev-parse HEAD)" docker compose build --no-cache shabbat ``` -Retain the archive's `build-info.json` so its source identity remains available. For a later Git checkout, supply `BUILD_COMMIT` only from the actual reviewed commit, as described in [installation](INSTALLATION.md). Do not substitute an invented commit or the old baseline for a changed working tree. +Use the example only in a fresh copy; never overwrite a configured `.env`. No real Telegram credentials are needed for the image build. It installs locked runtime dependencies, verifies patches and runs offline platform/filesystem checks without starting the bot. This checkout example supplies its actual commit. When building a release ZIP instead, retain its `build-info.json`, leave `BUILD_COMMIT` out of `.env` and unset an inherited shell value; do not override the archive identity. + +## Build the release artifacts + +Prerequisites, in addition to the locked development installation above: **Git and Python 3.9+**, a clean committed checkout, and enough space for two archives. Python uses only its standard library. The checkout must preserve exact committed bytes: line-ending conversion is rejected even if Git considers a file unchanged. Use a fresh checkout with `core.autocrlf=false` and preserve the repository attributes; do not rewrite migration, resource or fixture bytes to make packaging pass. The PHP wrapper selects `python3` (`python` on Windows); set `PYTHON` to the desired executable if necessary. These requirements apply to release packaging, not normal Docker/manual bot operation. -This builds the configured `shabbat` service image, installs runtime dependencies, verifies all patches and runs the image's offline platform/filesystem checks. It does not start a Telegram bot. A passed local PHP suite is not evidence that this image build or a remote CI run passed. +Run at the reviewed checkout root as its owner: -## Archive review +```sh +composer package +``` -Inspect the final ZIP contents and hashes, not only its staging directory. Extract the application ZIP into a fresh disposable directory and repeat installation from `composer.lock`, patch verification and the relevant checks. Verify both README files, public configuration, required dotfiles, tests/fixtures, resources, migrations, all patch artifacts and license notices are present. Check local links and anchors, external assets, case-sensitive filenames and secret patterns. +The equivalent command is `php scripts/package.php`. It writes the two release ZIPs, `RELEASE_MANIFEST.json` and `SHA256SUMS` to `dist/`, reading the exact Git commit and verified installed runtime package sources. The committed source-input manifest pins preferred-source supplements and runtime file hashes; source mismatch is a failure, not a reason to relax checks. `--output` selects an alternate output directory. Consult the packaging scripts and manifest for supported inputs. -Exclude `.git`, actual `.env` files, sessions, application/runtime databases and WAL/SHM files, backups, logs, caches, coverage and private work material. Do not exclude required JSON/TXT fixtures or baselines by extension. Do not copy test-created state back into an archive. The runtime corresponding-source manifest must name every included package and deliberate exclusion; it is not a complete source archive for the Docker base image, operating system or development toolchain. +The explicit compatibility command `php scripts/package.php --development` invokes the old local development packager. It writes its three installed-vendor archive variants under `dist/development/` by default to keep them apart from release assets. These are development tools, and are **not** the release corresponding-source artifact. A tool PHAR is not its preferred source. Never publish that output under the stable release source offer. + +After successful packaging, check the external checksums from the output directory: + +```sh +cd dist +sha256sum --check SHA256SUMS +``` -The existing `php scripts/package.php` command is available to maintainers with a development installation. Run it from the isolated repository root as the file owner: it verifies patches and writes three archive variants, manifests and checksums to `dist/`. Its dependency input is the installed `vendor` distribution. In particular, including a tool PHAR is not evidence that the tool's preferred source was bundled. The dedicated publication artifacts have a narrower runtime source scope and their own manifest. +This reads the two ZIPs and manifest. Inspect the archives themselves: exact committed application bytes, public configuration/dotfiles, English/Hebrew docs, scripts, tests/fixtures, resources, immutable migrations, patch baselines/outputs and license material must be present. The source archive must match its runtime/package/supplement inventory. Extract the deployment ZIP into a fresh disposable directory and verify locked installation, patch checks and relevant quality/image checks there. -## Before changing a live installation +Exclude `.git`, actual `.env`, sessions, application/runtime databases and WAL/SHM, backups, logs, caches, coverage and private work material. Required JSON/TXT fixtures and baselines remain source. Do not copy test-created state back into the archives. Record exact commit, fingerprint, CI results, asset hashes and remaining limitations before publishing the authorized release. -Complete target-image/platform acceptance, disposable-group Telegram permission capture/readback/restoration, shutdown/restart, inline/GPS/client rendering, rich messages, custom emoji, broadcasts, command menus and Stars acceptance as applicable. Run a wall-clock soak and exercise backup/restore and rollback. These are separate from this local preparation and are not performed by packaging. +## Production remains a separate action -Use the [legacy production cutover guide](PRODUCTION_UPGRADE.md), [upgrade/import guide](MIGRATION.md) and [backup/restore guide](BACKUP_RESTORE.md). Stop every writer before migration, retain matching code/database/session/BroadcastManager state backups, apply the numbered migrations and validate the target runtime before startup. Dev.9 requires migration 016; older unresolved permission snapshots still need the documented provenance-aware recovery. Do not use a test bot's database as production state. +Use [the complete `/root/shabat` legacy cutover guide](PRODUCTION_UPGRADE.md) for the old file-based production bot. Existing SQLite deployments use [migration](MIGRATION.md) and [backup/restore](BACKUP_RESTORE.md) instead of importing legacy data again. Stable 3.0.0 adds no migration after dev.9; all 16 sources remain required. -Before a later authorized deployment, make the exact corresponding source available and set `SOURCE_URL` accordingly. Development version labels and archived source fingerprints must remain truthful until the outstanding acceptance work is complete. +Stop all writers before migration, retain matching source/database/session/BroadcastManager state, verify import/settings and restore, and monitor the first real production close/open cycle. Review old permission snapshots through the provenance-aware recovery panel. Keep the exact corresponding source available and set `SOURCE_URL` before public operation. Publication itself does not execute a server command or restart a bot. diff --git a/docs/RELEASE_NOTES.md b/docs/RELEASE_NOTES.md index 2e38618..110c33a 100644 --- a/docs/RELEASE_NOTES.md +++ b/docs/RELEASE_NOTES.md @@ -1,47 +1,51 @@ -# WizardLoop Shabbat 3.0.0-dev.9 +# WizardLoop Shabbat 3.0.0 -PHP 8.3 compatibility: module-delivery bookkeeping now uses the database-owned `BEGIN IMMEDIATE` transaction state and exact connection identity; native callback/message fixtures initialize inherited readonly properties from their declaring class. Regression tests cover rejected foreign/outside transactions, rollback and state reset. +**Stable release `v3.0.0`.** This release retains the dev.9 bot implementation, MadelineProto 8.7.0, SQLite, the locked application dependencies, all five approved patch sets and all 16 migrations. It promotes the reviewed implementation and updates release packaging, identity and deployment documentation. See [CHANGELOG](../CHANGELOG.md), [implementation status](IMPLEMENTATION_STATUS.md) and [production upgrade](PRODUCTION_UPGRADE.md). -**GitHub prerelease `v3.0.0-dev.9`.** This version retains MadelineProto, SQLite and the existing bot features. The publication follow-up fixes Composer tooling, protects immutable source bytes and documents legacy deployment; it does not turn offline acceptance into production certification. See [publication status](PUBLICATION_STATUS.md), [production upgrade](PRODUCTION_UPGRADE.md) and [CHANGELOG](../CHANGELOG.md). +## Acceptance and changes -## Release corrections +On 2026-10-16 the owner confirmed successful live dev.9 group locking, unlocking, original-permission restoration and restart. These results support those paths; they do not establish real Shabbat/Yom Tov timing, a full holiday sequence, Telegram capacity under load, a long-running soak, every client or actual Stars payments. The production import and cutover remain operator actions with their own checks. -Composer 2.10.3 is pinned in both workflows and the Docker build, including the official digest. It addresses the upstream [Actions token compatibility/disclosure issue](https://github.com/composer/composer/security/advisories/GHSA-f9f8-rm49-7jv2) while retaining authentication and every validation gate. Git attributes and regression coverage preserve migration, bundled-text and captured-fixture bytes; no existing migration or patch was rewritten. The release assets identify the actual merged commit and separately inventory the application/runtime corresponding source. +The stable packaging path is now part of the repository: `composer package` or `php scripts/package.php` builds the deployment and scoped corresponding-source archives from an exact clean Git commit. The dependency and preferred-source inventory is pinned, with patch and per-file verification. The former installed-tool packaging path remains explicit `--development` tooling and is not the release source offer. The image retains the PHP 8.4 branch with its security-patched 8.4.26 base; Composer remains pinned to 2.10.3. -## Current implementation +The dev.9 publication corrections remain included: PHP 8.3-compatible transaction bookkeeping and native fixtures, immutable migration/resource/fixture bytes across Git line-ending settings, Composer tooling fixes, and reviewed deployment documentation. No existing migration or patch is rewritten. -Dev.9 adds transport-time calendar and quiet-hour checks after provider, media, topic and emoji preflight; actual Tefillin spacing/daily caps; conservative handling of uncertain delivery evidence; and coalescing of never-dispatched reminder backlogs. Omer checks its restoration gap again at delivery. Configured closing notices remain an explicit exception to ordinary protected-period notification suppression. +## Included functionality -Permission reconciliation, notifications and scheduled broadcasts use independent non-overlapping callbacks. Permission work has bounded concurrency; notification planning uses fair bounded batches. Shared provider requests and short failure cooldowns reduce repeated failed work. Queue/heartbeat metrics distinguish notification activity from completed permission work, and bounded maintenance preserves unresolved recovery and uncertain delivery evidence. +Location-aware Shabbat/Yom Tov closures preserve verified original group permissions. Private/group settings, six interface catalogs, inline/GPS location flows, rich templates, delegated administration, broadcasts, statistics, optional Stars donations and group opt-in zmanim/Daf/Tefillin/Omer modules remain available with the boundaries in [implementation status](IMPLEMENTATION_STATUS.md). -The reviewed BroadcastManager patch adds optional authorization, cancellation and admission hooks, cancellation-aware waits, joined worker/progress futures and cancelled queue persistence. Manual and scheduled bulk operations share one admission queue. The dependency keeps its native retry/error handling, with native flood waits exposed to manager-controlled retry. [Delivery and scheduler details](DEV9_DELIVERY_SAFETY.md) explain limits and exceptions. +Dev.9 delivery safety remains in place: eligibility is rechecked near dispatch; Tefillin spacing/daily caps and Omer restoration gaps use actual delivery evidence; never-dispatched backlogs are bounded; uncertain outcomes remain conservative. Permission, notification and scheduled-broadcast callbacks are independent, with bounded work and separate heartbeats. Configured closing notices remain an intentional quiet-period exception, and a request already accepted by Telegram cannot be recalled by a local check. See [delivery safety](DEV9_DELIVERY_SAFETY.md). -## Dependencies and migrations +## Dependencies and schema -- Application version: `3.0.0-dev.9` from `VERSION`. - MadelineProto: exactly `8.7.0`, commit `7b99dd0f2d964a492c377912ffce9f5ce61aa9ed`. - BroadcastManager: locked `3.2.2`, commit `f2792a383416b66bb68e55f09414563e540538d6`, with the reviewed local derivative. -- Five active patch sets: four MadelineProto compatibility patches and one BroadcastManager set. Exact baselines, prior approved sources, diffs, added source and manifests remain included. -- Migration `016_delivery_safety.sql` is required. Migrations 001–015 and `composer.lock` remain preserved. Startup validates schema; migration is an explicit maintenance action. +- Five active patch sets: four MadelineProto compatibility patches and one BroadcastManager set, with original baselines, reviewed outputs, diffs and manifests. +- Migrations 001–016 remain required and checksum-protected. **No new migration is added after dev.9.** Startup validates schema; maintenance applies migrations explicitly. -See [dependency evidence](DEPENDENCIES.md), [patch workflow](PATCHES.md) and [technical attribution](THIRD_PARTY_DETAILS.md). +[Dependency evidence](DEPENDENCIES.md) · [Patch workflow](PATCHES.md) · [Licensing and source scope](LICENSING.md) -## Upgrade and rollback +## Production upgrade and rollback -Stop all writers, preserve verified application/database, MadelineProto session and BroadcastManager-state backups, then apply the migrations before startup. Follow [MIGRATION](MIGRATION.md) for the full legacy import; additive `DBgroups.txt` registration alone does not import the old templates, states or active permission obligations. Existing unresolved snapshots are retained and remain subject to the [verified permission recovery procedure](PERMISSION_RECOVERY.md). +The complete [production guide](PRODUCTION_UPGRADE.md) targets the existing file-based bot at `/root/shabat` (one `b`). Build the reviewed source beside production, stop the single old writer, retain the whole private directory and image, copy stopped state into distinct new volumes, preview/apply the explicit legacy import, compare exact group IDs/settings, rehearse restore, then move the reviewed source into `/root/shabat` and start one instance under `shabbat-production`. -Rollback restores matching pre-upgrade code and state while stopped. Older code cannot be assumed to understand the new schema. Review unresolved permission obligations before reverting. The [backup/restore guide](BACKUP_RESTORE.md) describes the separate state stores. +Legacy permission snapshots remain unverified until an authorized administrator reviews the intended normal Telegram rights. The guide explains recovery, monitoring and a rollback that restores the original bind path before restarting the retained old container. A file restore does not undo Telegram actions already accepted. Test-bot databases and sessions never replace production state. -## Publication contents +Existing SQLite dev.9 deployments need the usual stopped-writer backup and migration/schema check, but no legacy import or new SQL migration. Preserve matching source, database, MadelineProto session and BroadcastManager state. See [backup and restore](BACKUP_RESTORE.md). -The clean repository ZIP contains application source, resources, tests, migrations, scripts, locked Composer metadata, public configuration, Docker files, documentation, notices and required GitHub files. The separate corresponding-source ZIP adds the 57 Composer runtime packages and licenses, including the reviewed patched sources. Development tool distributions and external Docker/system runtime sources are outside that archive's stated scope. [LICENSING](LICENSING.md) explains source offers, retained grants and evidence limitations. +## Release artifacts and identity -The publication README files are complete English and Hebrew counterparts. Technical hashes/history are kept in manifests and the provenance companion, leaving the third-party notices concise. Historical license grants and upstream source headers are preserved. No production configuration, session, database, WAL/SHM, private backup or log belongs in these artifacts. +| Asset | Purpose | +|---|---| +| `shabbat-3.0.0.zip` | Clean deployment source and `composer.lock`, plus exact release `build-info.json`; no installed vendor or private runtime state. Docker installs locked runtime dependencies. | +| `shabbat-3.0.0-corresponding-source.zip` | Application plus 57 locked runtime package trees, licenses, reviewed patches and pinned preferred-source supplements, with exact scope/index. | +| `RELEASE_MANIFEST.json` | Release commit, version, source fingerprint, package scope and artifact hashes. | +| `SHA256SUMS` | SHA-256 records for both ZIPs and the release manifest. | -## Verification limits +Keep archive build metadata unchanged. It identifies the actual release commit with `local_changes=false`, not the historical legacy baseline. Set `SOURCE_URL=https://github.com/WizardLoop/shabbat/releases/tag/v3.0.0` for this unchanged release after its corresponding-source asset is available. Modified deployments need their own exact source offer. -Exact current results and artifact identities belong to the external `checks/PUBLICATION_REPORT.md`, manifests and SHA-256 file, with a public summary in [PUBLICATION_STATUS](PUBLICATION_STATUS.md). Historical test counts are not reused as results for this publication copy. The local Windows PHP runtime's SQLite 3.45.2 is below the release gate. The Dockerfile pins checksum-verified SQLite 3.51.3; exact hosted matrix/image results belong to the release report and linked Actions runs. +The source collection does not claim to include all operating-system/container or development-tool sources, or a reproducible rebuild of upstream binaries. Existing provenance/license findings remain visible in [third-party notices](../THIRD_PARTY_NOTICES.md) and [publication status](PUBLICATION_STATUS.md). No production `.env`, database/WAL/SHM, session, backup, private log or cache is a release asset. -Offline tests use controlled clocks, isolated data and fake transports. They do not establish live Telegram delivery capacity, real flood quotas, accepted-request cancellation, rendered client behavior, actual Stars payments or a long wall-clock soak. A request already accepted by Telegram cannot be recalled by a local timing check. Unperformed live acceptance remains visible in the report; no production migration or bot restart is part of GitHub publication. +## Verification boundaries -MadelineProto's metadata/header license difference and historical local-reference provenance findings remain documented in [THIRD_PARTY_NOTICES](../THIRD_PARTY_NOTICES.md). Source packaging does not silently resolve them. The owner-authorized GitHub publication creates the reviewed merge, tag and prerelease assets. Server deployment remains a separate operator action. +The stable release is gated on its own reviewed commit, hosted checks, image validation and final artifact/source comparisons. Exact results belong to the matching Actions run and release evidence; prior test counts are not reused as a result for a different tree. Local Windows PHP's SQLite 3.45.2 remains below the release gate; the Docker target pins SQLite 3.51.3. Publication creates the authorized source/tag/release only. It does not migrate the server, change group permissions or restart the active bot. diff --git a/docs/SERVER_TEST_DEPLOYMENT.md b/docs/SERVER_TEST_DEPLOYMENT.md index 4a0756c..f607d70 100644 --- a/docs/SERVER_TEST_DEPLOYMENT.md +++ b/docs/SERVER_TEST_DEPLOYMENT.md @@ -1,61 +1,105 @@ -# Deploy the publication source to an isolated test server +# Test stable 3.0.0 with a separate bot -Use a separate test bot and the existing `shabbat-test` Compose project in `/root/shabbat-test`. These are operator instructions; publication preparation does not execute them. Keep `.env`, named data/session volumes and private backups. The supplied publication ZIP contains source without installed dependencies; Docker installs the locked runtime dependencies and patches during the build. +Use a **new test bot identity and disposable groups**. The fresh-install procedure below uses `/root/shabbat-test-3.0.0` and Compose project `shabbat-staging-300`; it preserves both the existing `/root/shabbat-test` installation and production `/root/shabat`. These are instructions, not an executed deployment. Never run two clients against one bot/session/database. -For a new test server, follow [installation](INSTALLATION.md) first. For the older file-based bot, follow [explicit legacy migration](MIGRATION.md); updating an existing SQLite test installation is a different operation. +An existing SQLite test deployment should follow the [stopped-writer upgrade](../README.md#upgrade-and-legacy-import) and [complete backup/restore procedure](BACKUP_RESTORE.md), preserving its existing project/volumes. Do not unpack this release over its old files or apply the fresh-volume instructions below to its state. The file-based production bot has its own [full cutover guide](PRODUCTION_UPGRADE.md). -## Upload +## Prepare a fresh isolated source directory -From a local shell opened in the delivered `shabbat-publication/artifacts` folder, with SSH/SCP access to the test server, replace `SERVER_IP`: +Run on the Linux test host in the same Bash session, with root/Docker access, Compose v2, `curl`, `unzip` and `sha256sum`. The commands create a new source directory and download public release assets; they do not start a bot. ```sh -scp shabbat-3.0.0-dev.9-publication.zip SHA256SUMS root@SERVER_IP:/root/shabbat-test/ +set -euo pipefail +umask 077 +VERSION=3.0.0 +ARCHIVE="shabbat-${VERSION}.zip" +TEST_SOURCE=/root/shabbat-test-3.0.0 +TEST_PROJECT=shabbat-staging-300 +UPLOAD_DIR=/root/shabbat-test-release-upload +test "$TEST_SOURCE" = /root/shabbat-test-3.0.0 +test ! -e "$TEST_SOURCE" +if docker volume inspect "${TEST_PROJECT}_bot-data" >/dev/null 2>&1 \ + || docker volume inspect "${TEST_PROJECT}_madeline-session" >/dev/null 2>&1; then + printf '%s\n' 'STOP: the test project already has state; inspect it before another attempt.' >&2 + exit 1 +fi +install -d -m 700 "$UPLOAD_DIR" +RELEASE_URL="https://github.com/WizardLoop/shabbat/releases/download/v${VERSION}" +curl --fail --location --proto '=https' --tlsv1.2 \ + "$RELEASE_URL/$ARCHIVE" -o "$UPLOAD_DIR/$ARCHIVE" +curl --fail --location --proto '=https' --tlsv1.2 \ + "$RELEASE_URL/SHA256SUMS" -o "$UPLOAD_DIR/SHA256SUMS" +( + cd "$UPLOAD_DIR" + awk -v asset="$ARCHIVE" ' + $2 == asset { + if (NF != 2 || length($1) != 64 || $1 ~ /[^0-9a-f]/) exit 1 + print $1 " " asset + count++ + } + END { if (count != 1) exit 1 } + ' SHA256SUMS > deployment.sha256 + sha256sum --check deployment.sha256 +) +install -d -m 700 "$TEST_SOURCE" +unzip -q "$UPLOAD_DIR/$ARCHIVE" -d "$TEST_SOURCE" +cd "$TEST_SOURCE" +test "$(cat VERSION)" = "$VERSION" +test -f build-info.json +cp .env.example .env +chmod 600 .env ``` -This copies the source ZIP and checksum file to an already existing directory. It does not stop or start the bot. The corresponding-source archive is a separate source-offer artifact; it is not required for this Docker installation command. +For manual upload, transfer the deployment ZIP and `SHA256SUMS` to `UPLOAD_DIR` and use the same exact checksum check before extracting. The separate corresponding-source archive is the source-offer artifact; it is not the deployment ZIP. Retain release `build-info.json` unchanged; it records the actual release commit and fingerprint with `local_changes=false`. + +Edit the new `.env` privately with the new test bot's Telegram credentials, trusted `ADMIN`, GeoNames account and container paths from [configuration](CONFIGURATION.md). Never copy production credentials/data/session. Set `SOURCE_URL=https://github.com/WizardLoop/shabbat/releases/tag/v3.0.0` for this unchanged release and leave `BUILD_COMMIT` absent. -## Update the existing test deployment +## Build, initialize and start deliberately -Run on Linux from the test directory with Docker access. Stop at the first error. Preserve a private backup of data/session/library state before cutover; the migration step also creates and verifies its application-database backup. +In the same shell at the fresh source root: ```sh -set -eu -cd /root/shabbat-test -sha256sum -c SHA256SUMS --ignore-missing -docker compose -p shabbat-test stop shabbat -unzip -o shabbat-3.0.0-dev.9-publication.zip -chmod 600 .env -docker compose -p shabbat-test config --quiet -docker compose -p shabbat-test build shabbat -docker compose -p shabbat-test run --rm --no-deps shabbat php scripts/verify-patches.php -docker compose -p shabbat-test run --rm --no-deps shabbat php bin/self-check.php --release -docker compose -p shabbat-test run --rm --no-deps shabbat php bin/runtime-permissions.php --require-non-root -docker compose -p shabbat-test run --rm --no-deps shabbat php -r 'if (is_dir("/app/data/backups") === false && mkdir("/app/data/backups", 0700, true) === false) { exit(1); }' -docker compose -p shabbat-test run --rm --no-deps shabbat php bin/migrate.php --writers-stopped --backup-dir /app/data/backups --db /app/data/shabbat.sqlite -docker compose -p shabbat-test run --rm --no-deps shabbat php bin/check-calendar.php -docker compose -p shabbat-test up -d --force-recreate shabbat -docker compose -p shabbat-test logs --tail=120 shabbat +test_compose() { + docker compose --project-name "$TEST_PROJECT" \ + --project-directory "$TEST_SOURCE" --file "$TEST_SOURCE/docker-compose.yml" "$@" +} +unset BUILD_COMMIT +test_compose config --quiet +test_compose build shabbat +test_compose run --rm --no-deps shabbat php scripts/verify-patches.php +test_compose run --rm --no-deps shabbat php bin/self-check.php --release +test_compose run --rm --no-deps shabbat php bin/runtime-permissions.php --require-non-root +test_compose run --rm --no-deps shabbat php bin/check-calendar.php +test_compose run --rm --no-deps shabbat php bin/migrate.php --writers-stopped --db /app/data/shabbat.sqlite ``` -The final `up` command starts the configured bot and its networked actions. Earlier build/check/migration commands do not send Telegram messages. An existing database needs the backup directory; a new database initializes its schema. The runtime requires all 16 migration sources and rejects changed applied checksums. +These commands build/install/patch the locked runtime, check the platform/filesystem, query public calendar providers and initialize the empty test database. They do not open a Telegram session. Existing-volume assertions are intentional; investigate a partial attempt instead of deleting state to force a pass. + +When the test bot identity and disposable groups are ready, start its networked activity: + +```sh +test_compose up -d --no-build shabbat +test_compose ps +test_compose logs --tail=120 shabbat +``` -After the first completed scheduler cycle: +Keep logs private. After both scheduler passes complete: ```sh -docker compose -p shabbat-test exec -T shabbat php bin/health.php --deep -docker compose -p shabbat-test ps +test_compose exec -T shabbat php bin/health.php --deep +test_compose ps ``` -Verify `/source` reports `3.0.0-dev.9` and the expected source identity. Retain the archive build metadata: its commit is the original baseline, explicitly accompanied by local changes and this publication fingerprint, not a new publication commit. Docker refuses missing or mismatched archive identity. Provide the exact accessible source URL before public operation. +Verify `/source` reports 3.0.0 and the exact release commit/source URL. Health requires recent permission and notification heartbeats; an offline database cannot satisfy it. Stop the test bot when the planned test is finished using `test_compose stop shabbat`. Preserve its project/volumes for diagnosis and later tests. -## Existing permission problems and acceptance +## Permission recovery and acceptance -1. Outside a protected period and without an active lock, review the group's normal rights in Telegram. An older overly permissive snapshot cannot reconstruct restrictions that were never saved correctly. -2. In group settings, open **Resolve permission problem**, refresh, inspect the displayed group/rights, then confirm the intended supported action. Adopting current permissions preserves the earlier evidence and does not itself change Telegram rights. -3. In a disposable group, disable media, invitations or pinning before closing/opening. Verify exact restoration, repeat after restart and check scheduled transitions separately. Include forum/non-forum groups if used. -4. Review `/testzmanim GROUP_ID` and its JSON-file export when investigating; avoid repeated forced restoration or deleting lock-state records. -5. Watch both heartbeat ages, oldest due jobs and delivery delay. A running process alone does not prove the queue is keeping up. +The owner already reported successful dev.9 live locking, unlocking, original-permission restoration and restart. Record new results against the exact stable source separately; do not expand that earlier confirmation into holiday/load/soak acceptance. -Do not use `down -v`, copy test data into production or run both versions on one session/database. [Rollback](BACKUP_RESTORE.md) requires matching code, data and session/library state; it cannot undo Telegram actions already accepted. +1. In a disposable group, set specific normal restrictions such as disabled media, invitations or pinning. Confirm the intended group/settings and exercise closing/opening, read back the exact restored rights, then repeat across a restart. +2. For an unresolved older snapshot, outside protected periods and active locks, review the normal Telegram rights. In **Resolve permission problem**, refresh, inspect the group/rights and explicitly choose the supported action. Adopting current permissions preserves older evidence and does not itself send a restriction update. +3. Test automatic protected-period transitions separately. Include forum/non-forum groups, inline/GPS, client rendering, rich messages, custom emoji, broadcasts, command menus and Stars only where used, with controlled disposable data. +4. Inspect `/testzmanim GROUP_ID` and its private export when needed. Do not delete lock-state records or repeatedly force restoration to hide a conflict. +5. Observe both heartbeat ages, oldest due jobs, delivery delay and retry behavior under representative traffic, including a real wall-clock soak. Record what ran and what remains untested. -The publication checks report records local results and limits. Docker image build and live Telegram acceptance must be performed on the target test server when unavailable locally. See [delivery safety](DEV9_DELIVERY_SAFETY.md) and [publication status](PUBLICATION_STATUS.md). +Do not use `down -v`, transfer test state into production or run old/new instances on one session. [Rollback](BACKUP_RESTORE.md) needs matching source, database and library/session state; it cannot undo Telegram actions already accepted. See [delivery safety](DEV9_DELIVERY_SAFETY.md), [implementation status](IMPLEMENTATION_STATUS.md) and [publication status](PUBLICATION_STATUS.md). diff --git a/docs/THIRD_PARTY_DETAILS.md b/docs/THIRD_PARTY_DETAILS.md index b9226e8..55c64e8 100644 --- a/docs/THIRD_PARTY_DETAILS.md +++ b/docs/THIRD_PARTY_DETAILS.md @@ -26,7 +26,7 @@ All four MadelineProto patch sets target version **8.7.0**, commit `7b99dd0f2d96 [The patch review](../patches/madelineproto/README.md) identifies a retained historical PHP patch script and a reproduced reference diff. The script's SHA-256 is `1ec2691498e878d28ca8e9cde94b00c803d9ccba789096ffc8471156dfb429e9`; identical copies were found in local project exports `newsearch-v2` and `psy new/release-r21-work`. The reference diff is reproduced from that script, not claimed to be a historical Git diff. -The applied derivative adds shutdown/authorization guards and delayed recovery to the reference cancellation checks. Direct timeouts and timeout-derived cancellation can recover; unrelated cancellation is rethrown and a stopped loop stops. The immutable baseline, script, reference diff, applied diff and manifest remain bundled. The historical standalone script has no license header: its hash verifies identity, not an independently recovered license grant. +The applied derivative adds shutdown/authorization guards and delayed recovery to the reference cancellation checks. Direct timeouts and timeout-derived cancellation can recover; unrelated cancellation is rethrown and a stopped loop stops. The immutable baseline, script, reference diff, applied diff and manifest remain bundled. The historical standalone script has no license header; its bytes are preserved unchanged. On **2026-10-16**, the WizardLoop project maintainer explicitly stated that they authored this exact helper and authorized its distribution under **AGPL-3.0-only**. The hash-scoped attestation in the patch manifest records that direct maintainer statement. It resolves the previously missing maintainer authorization for this retained helper; it is not an independent authorship/legal certification and does not change upstream MadelineProto grants or the separate formatted-date export findings. ### Fractional coordinates diff --git a/patches/madelineproto/README.md b/patches/madelineproto/README.md index fa7927c..e55c651 100644 --- a/patches/madelineproto/README.md +++ b/patches/madelineproto/README.md @@ -11,6 +11,13 @@ CancelledException import and two union catches guarded by getPrevious() instanc TimeoutException. It rethrows other cancellation. Historical source was a script; original-reference.patch is a reproduced unified diff, not a historical diff. +On **2026-10-16**, the WizardLoop project maintainer stated that they authored this +historical UpdateLoop helper and explicitly authorized its distribution under +**AGPL-3.0-only**. The attestation applies to the exact script hash above and is +recorded in the manifest. The original headerless script bytes remain unchanged; +the statement does not relicense upstream MadelineProto source or certify +independent authorship/legal review. See [licensing](../../docs/LICENSING.md). + The applied update-loop-timeout-cancellation.patch is a **new reviewed derivative**. Both difference branches retain those guards, check isRunning()/authorization, and return the existing 10-second interval on a transient timeout. This lets the diff --git a/patches/madelineproto/generate-artifacts.php b/patches/madelineproto/generate-artifacts.php index 45100ea..a4201c0 100644 --- a/patches/madelineproto/generate-artifacts.php +++ b/patches/madelineproto/generate-artifacts.php @@ -54,5 +54,16 @@ 'source_url' => 'https://github.com/danog/MadelineProto/blob/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/src/Loop/Update/UpdateLoop.php', 'original_sha256' => hash('sha256', $source), 'patched_sha256' => hash('sha256', $patched), 'patch' => 'update-loop-timeout-cancellation.patch', 'patch_sha256' => hash('sha256', $patch)]], 'official_versions' => [], 'notes' => 'No released official solution was verified. New versions require source, call-chain and behavioral review before admission.']; +$manifest['original_reference']['maintainer_attestation'] = array ( + 'date' => '2026-10-16', + 'by' => 'WizardLoop project maintainer', + 'scope' => 'patches/madelineproto/original-reference.php', + 'sha256' => '1ec2691498e878d28ca8e9cde94b00c803d9ccba789096ffc8471156dfb429e9', + 'authorship' => 'The maintainer states that they authored this historical UpdateLoop helper.', + 'distribution_authorization' => 'The maintainer explicitly authorizes distribution of this helper under the project license AGPL-3.0-only.', + 'license' => 'AGPL-3.0-only', + 'evidence' => 'Explicit maintainer instruction during preparation of the 3.0.0 release.', + 'limits' => 'Records the maintainer attestation; not an independent authorship or legal certification. Original helper bytes and upstream dependency notices remain unchanged.', +); file_put_contents(__DIR__ . '/manifest.json', json_encode($manifest, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_THROW_ON_ERROR) . "\n"); echo "Reviewed patch artifacts regenerated.\n"; \ No newline at end of file diff --git a/patches/madelineproto/manifest.json b/patches/madelineproto/manifest.json index 4a67cdd..be4b1dd 100644 --- a/patches/madelineproto/manifest.json +++ b/patches/madelineproto/manifest.json @@ -7,7 +7,18 @@ "path": "local-reference/newsearch-v2/docker/patch-madeline-update-loop.php", "also_found": "local-reference/psy new/release-r21-work/docker/patch-madeline-update-loop.php", "sha256": "1ec2691498e878d28ca8e9cde94b00c803d9ccba789096ffc8471156dfb429e9", - "note": "Historical artifact was a guarded PHP patch script; reference unified diff is reproduced from that script. Paths are logical local-reference identifiers, not public download URLs." + "note": "Historical artifact was a guarded PHP patch script; reference unified diff is reproduced from that script. Paths are logical local-reference identifiers, not public download URLs.", + "maintainer_attestation": { + "date": "2026-10-16", + "by": "WizardLoop project maintainer", + "scope": "patches/madelineproto/original-reference.php", + "sha256": "1ec2691498e878d28ca8e9cde94b00c803d9ccba789096ffc8471156dfb429e9", + "authorship": "The maintainer states that they authored this historical UpdateLoop helper.", + "distribution_authorization": "The maintainer explicitly authorizes distribution of this helper under the project license AGPL-3.0-only.", + "license": "AGPL-3.0-only", + "evidence": "Explicit maintainer instruction during preparation of the 3.0.0 release.", + "limits": "Records the maintainer attestation; not an independent authorship or legal certification. Original helper bytes and upstream dependency notices remain unchanged." + } }, "approved": [ { diff --git a/readme-he.md b/readme-he.md index bf10478..f8bf0b2 100644 --- a/readme-he.md +++ b/readme-he.md @@ -9,9 +9,9 @@ [![רישיון AGPL-3.0-only](https://img.shields.io/badge/license-AGPL--3.0--only-blue)](LICENSE) [![PHP 8.3–8.5](https://img.shields.io/badge/PHP-8.3%E2%80%938.5-777BB4)](composer.json) [![MadelineProto 8.7.0](https://img.shields.io/badge/MadelineProto-8.7.0-2CA5E0)](composer.lock) -[![גרסת פיתוח 3.0.0-dev.9](https://img.shields.io/badge/status-3.0.0--dev.9-orange)](VERSION) +[![גרסה יציבה 3.0.0](https://img.shields.io/badge/status-3.0.0%20stable-green)](VERSION) -**הגרסה הנוכחית: 3.0.0-dev.9, גרסה מקדימה.** השתמשו ב[קובצי השחרור המתאימים](https://github.com/WizardLoop/shabbat/releases/tag/v3.0.0-dev.9) או בעותק מהתג ושמרו את נתוני הזיהוי שלו. בדיקות אוטומטיות, בדיקות Docker ובדיקות Telegram חיות הן בדיקות נפרדות. במעבר מבוט קיים פעלו לפי [מדריך השדרוג והחזרה לגרסה קודמת](docs/PRODUCTION_UPGRADE.md) לפני החלפת קבצים או הפעלת מופע נוסף. ראו [מצב הפרסום](docs/PUBLICATION_STATUS.md), [שינויים](CHANGELOG.md) ו[בטיחות מסירה](docs/DEV9_DELIVERY_SAFETY.md). התגים מתארים את תצורת המקור ואינם אישור לתקינות בסביבת production. +**הגרסה הנוכחית: 3.0.0, גרסה יציבה.** השתמשו ב[קובצי השחרור המתאימים](https://github.com/WizardLoop/shabbat/releases/tag/v3.0.0) או בעותק מהתג ושמרו את נתוני הזיהוי שלו. בעל הפרויקט אישר שב־dev.9 עברו בדיקות חיות של נעילה, פתיחה, שחזור ההרשאות המקוריות והפעלה מחדש. אישור זה אינו מכסה תזמון בחג, קיבולת בעומס או הרצה ממושכת; בדיקות אוטומטיות ובדיקות בסביבת היעד נשארות נפרדות. במעבר מבוט קיים פעלו לפי [מדריך השדרוג והחזרה לגרסה קודמת](docs/PRODUCTION_UPGRADE.md) לפני החלפת קבצים או הפעלת מופע נוסף. ראו [מצב הפרסום](docs/PUBLICATION_STATUS.md), [שינויים](CHANGELOG.md) ו[בטיחות מסירה](docs/DEV9_DELIVERY_SAFETY.md). התגים מתארים את תצורת המקור ואינם אישור לתקינות בסביבת production. ## תוכן עניינים @@ -32,7 +32,7 @@ | אחסון ותפעול | מיגרציות וגיבויי SQLite, משימות מסירה שמורות, פעימות מתזמן נפרדות, כותב יישום יחיד וכלי תחזוקה מפורשים. | | תרומות ומקור | תרומות Telegram Stars לבחירה, לרבות סכום שלם מותאם 1–10000; גרסה, רישיון וקישור מפעיל למקור המדויק. | -ב־dev.9 נוספו בדיקת זכאות בזמן המסירה, הגבלת תזכורות שהצטברו, אכיפת מרווחים ושעות שקט בפועל והפרדה בין עבודת הרשאות, הודעות ושידורים. MadelineProto נשאר ב־8.7.0 ונשמר קובץ התלויות הנעול. ערך שמש חסר מדווח כחסר, ללא המצאת חלופה לאזורי קוטב. הזמנים והנוסחים נועדו למידע, והמנהל בוחר את שיטות החישוב. +גרסה 3.0.0 שומרת על השיפורים שנוספו ב־dev.9: בדיקת זכאות בזמן המסירה, הגבלת תזכורות שהצטברו, אכיפת מרווחים ושעות שקט בפועל והפרדה בין עבודת הרשאות, הודעות ושידורים. MadelineProto נשאר ב־8.7.0 ונשמר קובץ התלויות הנעול. ערך שמש חסר מדווח כחסר, ללא המצאת חלופה לאזורי קוטב. הזמנים והנוסחים נועדו למידע, והמנהל בוחר את שיטות החישוב. ## דרישות @@ -40,32 +40,33 @@ | רכיב | דרישה | |---|---| | פריסה מומלצת | Linux, ‏Docker Engine ו־Compose v2, גישה יוצאת ל־HTTPS ול־Telegram ואחסון מתמשך. | -| הרצה ידנית | PHP ‏8.3/8.4/8.5 ב־64 ביט ו־Composer 2. ב־Docker נעולים PHP 8.4.19 ו־Composer 2.10.3. | -| הרחבות | PDO/PDO SQLite, ‏mbstring, ‏XML, ‏DOM, ‏fileinfo ו־zlib; ‏ZIP לאריזה. בדקו את כל דרישות ה־lock באמצעות `composer check-platform-reqs`. ב־Docker נבנות גם pcntl ו־sockets. | +| הרצה ידנית | PHP ‏8.3/8.4/8.5 ב־64 ביט ו־Composer 2. ב־Docker נעולים PHP 8.4.26 ו־Composer 2.10.3. | +| הרחבות | PDO/PDO SQLite, ‏mbstring, ‏XML, ‏DOM, ‏fileinfo ו־zlib; ‏ZIP לכלי האריזה האופציונלי לפיתוח. בדקו את כל דרישות ה־lock באמצעות `composer check-platform-reqs`. ב־Docker נבנות גם pcntl ו־sockets. | | SQLite | מינימום יישום 3.35. בדיקת שחרור מקבלת 3.51.3 ומעלה או 3.44.6 / 3.50.7 שנבדקו. חשוב לבדוק את הספרייה ש־PHP טוען. Docker בונה 3.51.3 עם אימות SHA-256. | | Telegram | פרטי יישום API ID/hash, טוקן BotFather ומזהי משתמש או שמות משתמש ניתנים לפענוח עבור המפעילים. | | GeoNames | חשבון שלכם עם webservices פעילים לחיפוש עיר ואזור זמן אוטומטי. ערים מוכרות וקואורדינטות מפורשות זמינות גם בלעדיו. | | מערכת קבצים | נתוני יישום מתמשכים וסשן MadelineProto נפרד. נדרשת גם כתיבה בתיקיית העבודה ללוג תהליך הספרייה ולקובצי PrimeModule. | -הבדיקות האוטומטיות משתמשות בתחליפי Telegram ובנתוני בדיקה של ספקים, ללא פרטי התחברות. בדיקות חיות בסביבה נפרדת צריכות לכסות שחזור הרשאות, הפרעה והפעלה מחדש, נושאים, תצוגת לקוחות, אינליין/GPS, כוכבים ותפריטי פקודות. +הבדיקות האוטומטיות משתמשות בתחליפי Telegram ובנתוני בדיקה של ספקים, ללא פרטי התחברות. בדקו שוב שחזור הרשאות והפעלה מחדש בסביבת היעד, וכן נושאים, תצוגת לקוחות, אינליין/GPS, כוכבים ותפריטי פקודות לפי השימוש. ראו את [רישום הבדיקות המדויק](docs/IMPLEMENTATION_STATUS.md). ## התקנת Docker דוגמאות המעטפת מיועדות למסוף Linux/POSIX. פקודות Docker מריצים **במחשב המארח, בשורש הפרויקט שחולץ**, עם הרשאה לשירות Docker. התהליך בתמונה רץ כ־`shabbat`, עם UID/GID ‏`10001`. אין שירות Composer נפרד. -1. קבלו את המקור שנבדק. עבור ארכיון ההכנה לפרסום: +1. קבלו את המקור שנבדק. עבור ארכיון השחרור להתקנה:
~~~sh -unzip shabbat-3.0.0-dev.9.zip -d shabbat +unzip shabbat-3.0.0.zip -d shabbat cd shabbat +unset BUILD_COMMIT ~~~
-הארכיון מכיל מקור ו־`composer.lock`, ללא `vendor/` מותקן. Docker מתקין את תלויות ההרצה הנעולות. **שמרו את `build-info.json` שבארכיון.** בארכיון הפרסום הוא מתעד commit בסיס היסטורי מאומת, `local_changes=true` וטביעת מקור מדויקת של ההכנה; הבסיס אינו commit חדש של השינויים. אם משתמשים בעותק Git שנבדק, מסרו לפני הבנייה את ה־commit האמיתי שלו: +הארכיון מכיל מקור ו־`composer.lock`, ללא `vendor/` מותקן. Docker מתקין את תלויות ההרצה הנעולות. **שמרו את `build-info.json` שבארכיון.** ארכיון השחרור מתעד את ה־commit המדויק שנבדק, `local_changes=false` וטביעת מקור היישום. אל תוסיפו `BUILD_COMMIT` ל־`.env`; הדוגמה לארכיון מנקה ערך שהתקבל מהמעטפת כדי שלא יחליף את הזיהוי. אם משתמשים בעותק Git שנבדק, מסרו לפני הבנייה את ה־commit האמיתי שלו:
@@ -75,7 +76,7 @@ export BUILD_COMMIT="$(git rev-parse HEAD)"
-commit הבסיס לבדו אינו מזהה שינויים שטרם נשמרו ב־Git; גם טביעת המקור מזהה את החבילה. אין להחליפו ב־commit לא קשור. +השתמשו בארכיון שחרור שלא שונה או בעותק Git נקי ותואם. אין להחליף את ה־commit בערך לא קשור או לשמור נתוני ארכיון לאחר שינוי המקור שלו. 2. צרו פעם אחת תצורה פרטית בהתקנה החדשה: @@ -88,7 +89,7 @@ chmod 600 .env -ערכו את `.env`: החליפו את דוגמאות Telegram, הגדירו `ADMIN`, חשבון GeoNames לפי הצורך ו־`SOURCE_URL` למקור התואם שתעמידו לרשות המשתמשים. שמרו על תחביר פשוט של `KEY=value`, המתאים ל־PHP raw INI ול־Compose. הקובץ המוגדר אינו מיועד להעלאה למאגר. +ערכו את `.env`: החליפו את דוגמאות Telegram, הגדירו `ADMIN`, חשבון GeoNames לפי הצורך ו־`SOURCE_URL=https://github.com/WizardLoop/shabbat/releases/tag/v3.0.0` לשחרור הזה ללא שינויים, שקובץ המקור התואם שלו חייב להיות זמין. לפריסה ששונתה יש לספק את המקור המדויק שלה. שמרו על תחביר פשוט של `KEY=value`, המתאים ל־PHP raw INI ול־Compose. הקובץ המוגדר אינו מיועד להעלאה למאגר. 3. בנו ובדקו את התמונה. השלבים מתקינים ומתקנים תלויות וכותבים נתוני זיהוי בתוך התמונה, בלי להפעיל את הבוט: @@ -372,7 +373,7 @@ docker compose run --rm --no-deps shabbat php bin/self-check.php --release `docker compose up -d shabbat` מפעיל לאחר מכן את התמונה שנבדקה; בדקו לוגים ובריאות. הסדר בהתקנה ידנית: עצירה, גיבוי, התקנה מה־lock, מיגרציה, בדיקה והפעלה. -מעבר מ־dev.8 ל־dev.9 מוסיף `016_delivery_safety.sql`. מ־dev.6 נדרשות גם 013–015; גרסאות מוקדמות מחילות אוטומטית את כל החסרות. אין לערוך SQL שכבר הוחל. ניסיונות מסירה קודמים שלא הוכרעו מטופלים בזהירות; צילומי הרשאות ישנים שאינם מאומתים עדיין דורשים בדיקת מנהל. +גרסה 3.0.0 אינה מוסיפה מיגרציה מעבר ל־dev.9. המעבר מ־dev.8 ל־dev.9 הוסיף `016_delivery_safety.sql`. מ־dev.6 נדרשות גם 013–015; גרסאות מוקדמות מחילות אוטומטית את כל החסרות. אין לערוך SQL שכבר הוחל. ניסיונות מסירה קודמים שלא הוכרעו מטופלים בזהירות; צילומי הרשאות ישנים שאינם מאומתים עדיין דורשים בדיקת מנהל. במעבר מהבוט הישן מבוסס הקבצים: שמרו עותק מוגן, עצרו את הכותבים הישנים לייבוא הסופי ולמעבר, אתחלו מסד חדש, בצעו dry-run, השוו ספירות/תבניות/הרשאות/אזהרות ואז החילו עם כותבים עצורים ותיקיית גיבוי. הפקודות המדויקות מופיעות לעיל. ב־Docker חברו רק את העותק המוגן לקריאה בלבד: @@ -512,7 +513,7 @@ php patches/broadcastmanager/generate-artifacts.php הפקודות משכתבות תוצרי תיקון ומניפסטים מהמקורות המצורפים שנבדקו. הן מיועדות לסקירת תיקון יזומה, ולא להתקנה רגילה. בדקו חתימות ו־diffs ששונו והריצו לאחר מכן את כל בדיקות התיקונים. סקריפטי ההחלה והאימות ב־PHP מקבלים גם פרמטר מיקום ראשון אופציונלי לתיקיית vendor; השאירו אותו ריק לשימוש רגיל ב־`vendor/`. -לאריזה מקומית עם תלויות הפיתוח הנדרשות וזיהוי מאומת: +לאריזת שחרור מעותק Git נקי שכל שינוייו נשמרו ב־commit, עם Git, ‏Python 3.9+ ותלויות הפיתוח הנעולות:
@@ -522,7 +523,7 @@ php scripts/package.php
-הכלי כותב ZIP ליישום, למקור תואם ולשרת בדיקה, עם חתימות ומניפסטים ב־`dist/`, ללא פרסום. השחרור המקדים משתמש ב־`shabbat-3.0.0-dev.9.zip` ללא תלויות מותקנות ובחבילת מקור תואם לתלויות הריצה עם מלאי נפרד; אין להחליפה בהפצות כלי הפיתוח המותקנים שמפיק כלי האריזה למפתחים. בדקו בכל מניפסט מה כלול ומה הוחרג; מקור היישום ו־lock אינם לבדם חבילת מקור תלויות מלאה. +הכלי כותב אל `dist/` את `shabbat-3.0.0.zip`, את `shabbat-3.0.0-corresponding-source.zip`, את `RELEASE_MANIFEST.json` ואת `SHA256SUMS`, ללא פרסום. חבילת המקור כוללת תלויות ריצה נעולות, תיקונים שנבדקו והשלמות מקור מגרסאות נעולות. הכלי הישן המפיק שלושה ארכיונים זמין לפיתוח מקומי בלבד באמצעות `php scripts/package.php --development`, עם פלט ברירת מחדל ב־`dist/development/`; הפצות כלי הפיתוח המותקנות שלו אינן הצעת מקור תואם לשחרור. ראו [הכנת שחרור](docs/RELEASE.md) לדרישות, לתכולת המקור ולבדיקת התוצרים. [ארכיטקטורה](docs/ARCHITECTURE.md) · [תלויות](docs/DEPENDENCIES.md) · [תיקונים](docs/PATCHES.md) · [הכנת שחרור](docs/RELEASE.md) · [תרומה](.github/CONTRIBUTING.md) · [קוד התנהגות](.github/CODE_OF_CONDUCT.md) diff --git a/resources/release/README.md b/resources/release/README.md new file mode 100644 index 0000000..8fc6b3f --- /dev/null +++ b/resources/release/README.md @@ -0,0 +1,15 @@ +# Pinned corresponding-source inputs + +This directory contains release-packaging inputs, not installed dependencies or runtime state. + +- [source-manifest.json](source-manifest.json) pins **2,960 runtime dependency files** from the 57 locked Composer packages and **92 preferred-source supplements**. +- The amphp-windows-process-wrapper collection retains 18 original upstream files for the distributed Windows helpers, including their MIT license. +- The madelineproto-build-inputs collection retains 74 pinned generator/build, schema, language and template inputs with their original notices. + +The manifest maps each supplementary archive path to its checked-in file below preferred-source/additional-source. The packager copies these bytes to additional-source in the corresponding-source archive and verifies installed runtime package files against the same approved inventory. It rejects a different Composer lock or unknown source bytes. Application files and the final release identity come from the reviewed Git tree, not from the historical artifact identity in this manifest. + +These inputs were reverified against the published v3.0.0-dev.9 source asset and its upstream provenance records. Source URLs, revisions, Git blobs and file hashes remain in the manifest. The Git attributes prevent line-ending conversion of the preferred-source files; upstream attributes are stored as .gitattributes.source with the original archive path in the manifest. Do not edit upstream files or license notices to make a hash check pass; review and repin an intentional upstream change. + +The two public upstream Amp HTTP Server development TLS private-key examples are omitted by exact approved hash. Their recorded omissions remain in the manifest. Installed development tools, generated Composer autoload/bin metadata, PHP, SQLite and operating-system/base-image source remain outside this runtime source collection. + +The Windows helper association is supported by original release/history evidence, but its binaries were not reproducibly rebuilt. The supplied MadelineProto generators were not executed; upstream translation/documentation steps that depend on mutable remote services are not claimed reproducible offline. See [licensing](../../docs/LICENSING.md) and [technical provenance](../../docs/THIRD_PARTY_DETAILS.md) for the exact scope and remaining findings. diff --git a/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/.gitattributes.source b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/.gitattributes.source new file mode 100644 index 0000000..4ef969c --- /dev/null +++ b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/.gitattributes.source @@ -0,0 +1,2 @@ +# Force CRLF or Visual Studio may throw up when processing some ancilliary files +* eol=crlf diff --git a/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/.gitignore b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/.gitignore new file mode 100644 index 0000000..c96a87f --- /dev/null +++ b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/.gitignore @@ -0,0 +1,236 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Microsoft Azure ApplicationInsights config file +ApplicationInsights.config + +# Windows Store app package directory +AppPackages/ +BundleArtifacts/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe + +# FAKE - F# Make +.fake/ diff --git a/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/LICENSE b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/LICENSE new file mode 100644 index 0000000..1b407c3 --- /dev/null +++ b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017 amphp + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.sln b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.sln new file mode 100644 index 0000000..226d0e8 --- /dev/null +++ b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.24720.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ProcessWrapper", "ProcessWrapper.vcxproj", "{BD241361-BA1B-4E8D-B9D1-EDCBFCDF4A04}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BD241361-BA1B-4E8D-B9D1-EDCBFCDF4A04}.Debug|x64.ActiveCfg = Debug|x64 + {BD241361-BA1B-4E8D-B9D1-EDCBFCDF4A04}.Debug|x64.Build.0 = Debug|x64 + {BD241361-BA1B-4E8D-B9D1-EDCBFCDF4A04}.Debug|x86.ActiveCfg = Debug|Win32 + {BD241361-BA1B-4E8D-B9D1-EDCBFCDF4A04}.Debug|x86.Build.0 = Debug|Win32 + {BD241361-BA1B-4E8D-B9D1-EDCBFCDF4A04}.Release|x64.ActiveCfg = Release|x64 + {BD241361-BA1B-4E8D-B9D1-EDCBFCDF4A04}.Release|x64.Build.0 = Release|x64 + {BD241361-BA1B-4E8D-B9D1-EDCBFCDF4A04}.Release|x86.ActiveCfg = Release|Win32 + {BD241361-BA1B-4E8D-B9D1-EDCBFCDF4A04}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.sln.DotSettings b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.sln.DotSettings new file mode 100644 index 0000000..5d15633 --- /dev/null +++ b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.sln.DotSettings @@ -0,0 +1,21 @@ + + True + True + True + True + True + True + True + True + True + True + True + True + + True + True + True + True + True + True + True \ No newline at end of file diff --git a/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.vcxproj b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.vcxproj new file mode 100644 index 0000000..97e1b13 --- /dev/null +++ b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.vcxproj @@ -0,0 +1,171 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {BD241361-BA1B-4E8D-B9D1-EDCBFCDF4A04} + Win32Proj + amphpProcessWrapper + 8.1 + ProcessWrapper + + + + Application + true + v140 + MultiByte + + + Application + false + v140 + true + MultiByte + + + Application + true + v140 + MultiByte + + + Application + false + v140 + true + MultiByte + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + $(ProjectName)64 + $(SolutionDir)$(Configuration)\ + + + + NotUsing + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + NotUsing + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + NotUsing + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + NotUsing + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.vcxproj.filters b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.vcxproj.filters new file mode 100644 index 0000000..0e3490c --- /dev/null +++ b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.vcxproj.filters @@ -0,0 +1,52 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + Resource Files + + + Source Files + + + + + Source Files + + + Source Files + + + Source Files + + + + + Resource Files + + + + + Resource Files + + + + + + + diff --git a/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/README.md b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/README.md new file mode 100644 index 0000000..806517b --- /dev/null +++ b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/README.md @@ -0,0 +1,24 @@ +# Windows Process Wrapper for Amp + +This application is a helper for [amphp/process](https://github.com/amphp/process) that enables non-blocking communication with a child process on Windows, by passing the data through TCP sockets. + +## Installation + +The application is bundled with amphp/process does not need to be installed separately. + +## Requirements + +* Microsoft Windows 7+ +* [Visual C++ Redistributable for Visual Studio 2015](https://www.microsoft.com/en-us/download/details.aspx?id=48145) x86 (for `ProcessWrapper.exe`) or x64 (for `ProcessWrapper64.exe`) + +## Versioning + +`amphp/windows-process-wrapper` follows the [semver](http://semver.org/) semantic versioning specification like all other `amphp` packages. + +## Security + +If you discover any security related issues, please email [`amphp.security.windows@daverandom.com`](mailto:amphp.security.windows@daverandom.com) instead of using the issue tracker. + +## License + +The MIT License (MIT). Please see [`LICENSE`](./LICENSE) for more information. diff --git a/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/resources/.gitattributes.source b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/resources/.gitattributes.source new file mode 100644 index 0000000..3950084 --- /dev/null +++ b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/resources/.gitattributes.source @@ -0,0 +1,2 @@ +# Explictly treat everything in here as binary +* binary diff --git a/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/resources/Icon_amphp.ico b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/resources/Icon_amphp.ico new file mode 100644 index 0000000000000000000000000000000000000000..9d219eb756111d7fa85757b98a326a7f82a0efb2 GIT binary patch literal 54800 zcmcG01zc54xBeyt1VsS}2_+<@JER0bIz<34-V%$`~6S0)tVw98^JRZXA2{B9+!>~h#ex8@Z z&uiglf`Y%Db6}V;4ZHxp(DnPXFl;BEiIS52TaR^cN~dN)?Z z`eBC7;82d+2edIYj+lKK0w?yi zM9X=0CCGnj3=#!Z-U6T{QVNV@s)5H9mSCdV`E_HWY0{0*V{|uS^{@z840Dnm#;(Xd zI%s^fEb_F}39EERk(YsI4}UOMrb*M6rna$Dr;p8Y=32WSe;ib&dxGYiD`57PXTwCU z2HjNgDa=-&pV&!iILTSQck7CJ%Nu94a$qbPxh%u%p?ukx)7;%$HubD3hhs*h^Q#9p zv%plPEm&*`0+Y3_v1Tk7ftUK2W|YPBn;fr&Z-oKlPYb;ZeuP<;0CVYrnLvwU-JM03 zXFQ!Pr5<$m&h^&?gU97&VE(2Xm~D-DK2`0gnt1W4MWO$*_H>V_hyIrS8qm%=6~4zn z(nU3JC&BpZ^zGoF)4GaU9c?Y2ZfCiGM-^6JzR?vt>q-Di_d?1NJ@p+k{cO%gT=LR1 zQ@5eZyeh-dm2TwwFyAb{GtbUH-&4xSUV|yICQKc)Bxrz%QgiU6-U%$XMS`ijanrpO z-rwh1qrQzd20l;nK9zGb#j372%sB04j8;`+sO(sn1xLOA8J3>zM0qe>ZVDnVDS`ky z1@QEK3|Jp3`8wPX{C%xE2|VkJ1NUG7|l`# zkIVk_{kEUq?wg2wZt-Vw}HTZ7@Oli(hF=GQMC0r0!q_9q#3YJCO3XvT3ck*5W( zv4z)O0?QpS;89D$^t}SNGBlpYl~!OVM+Y>Aihx2_F5rLW5HOIT0dOsVd*MQ0__{2Z z$kzc+YA=Af#>-%}=Q>!rA68PC?4mwVclA|Ik^*Rp5CpdZj)M5}9KcDN5g5xI0Ld3P zKxect7*1CNkIK%1Y1q$vlLvU#owNaMR+blLBJQd1P8umP11+IKAk&ExL|d~1N3Db4 zygCD@_7Q;JRR$9Ux&W>>Fx%h+`wjm#*XZhV%NiqS&UV7eVyx(9?u0iCmDqti4{;C$ zzYoU^E@~VE4Iy%1s!$j9Z3W^NLLr z8Sh%W>!-fb9+Cg7GiqS9E2e#^HORg*L4l&ynQ~Ww7KT@-hxeE7z1@Xj?F1MW@Yj$3 za?RgQ(6#70i+g|inM3db1=x`P!M%{<`ER^}^mb!8XED4`GiJIfe`(vU>l$r+*@iFf zUpIW)on!uPqTKq!Xpz~>K(>BOXM)m&vCcLUcIaQmRjix(8Taf8fDoVZrw%?Db;g`rK*pJyn8$wEEw zsKf-!)?EOPZg_#_EXSP;ciFDSKwV5e@n!^#`ti$-jP?l!ygvkEeCxrJmo>8D3^E6`qTmXGTSBw}K z%{qaz;YO4?NC|ZUfu0vZeYz`{sdt_kNjs*rbmtn@6M>@OA1@cVAzZwHF-P1%s&7t# z)uRr>_OlzwvLr-Wae@F-7T}~q5A>v|UT`syc@PugGsABa!-jSTB`fVN9q3bf(;bh1 zZum?p{N+G)N(5+Xr~-F0Y{AOC5a^duk&l=eOqLWM%RYfUh&uYa0Z!7W{~-q0eDt(D;*6c%}cY}MuY97quvpFr!%t0 zX!cWZLce$?)`krv1UZ4(`2|p$eiclWorBN95yq4-oNt`2wCo&85MUTek;L`yBr}LP z$@byHz9TP54Fec6fxGfJ@YkCHVW+1-=;;~w{xP_sGy*I{Zhll^^DQF8xEL<#ahrRc z;rgO0O$!oz&E8&daZslu!j9^ziZ1o{_kqWgW8il3S@5LF3g=tr;NDp2hy@Gxqrjb* z<5$5%D0WJc9J?engk6#xl7Rg`_tlvI8E*5SB5DOx$36p<(a%6>*dizhoCVolb0FSk z9>91GjWxlv%qSFk0(#95Q?F7R&o9*q61Nv##;7%>+YH)nNq_4>z8 zpF#W0LeLp62d0sKs6G$?~@FTn&yZuB(J_;J$IcGbEiml&F zR@(n~ROkA2wASnC!?G)}SsscE#aEBA9;PMXJ+FRnE$Q+xP!VGW8lrVTnzIlXEj<0l z_-{DFXW#+%K?+#u%L9FRXLGJu$+hGK8TCZDs1~@LmGC;F%AqgLMJ_HRD3C=Pc7HX_4#n+^~Gn{y{57Cl{y6Q2#sQ2XsgQ*H& zGEWmcNLGPy;uM%~a0GJ=mmofL#r40|dmW6owRs? z#qIUp6tLQz4A$Vhp!XYnsh~La!iKK$(XR1Y_npT#u7aN8OJBn-sm=}*T5b;)oB;!A zs^DgzAc(MFT~HULvM@hRH=ci)3-mx=JymRs!^5++wxB4=5>Sv41Hq$Qz{5fY%-r$@ z>wTH9|5otqLE?6OnltSGI<9|Y18V5Jqtpk4IBUT;762CR_<-5QE1)e!5A>%f!q_JY z>U{Vho?`oPR*AMoQ=DoLjvds(&jzo{fk&mMAtpTwW@~N!)BbByUEcrR|ARyv-d$;r zLTelJ7ee1vehxRDNr>|h-fImN0A(ILAO`wbh~r)=3+`LARG|ZLw(Q_`5I-17Q^Lhz zbp2Ezod1%u|Ka=>$6cI(copXxAa(?^5CbDDJ5y_q8^=VhCJrBuW@~`Pb=Wz;%a<#Vuh%@Y$=t>wkU+9dUWdjZ1%7f9ri2V4}TnrzXj+CdL0; z^=y+54u8+ooX24qglABLu>y?eX@lNmC2%W91XN$+1Nkt{`auki#;m|k3C=0g0l5A^ z5yS*tu@Yb;4dRguB`}_?_8Ts@hx_l3{g3m3@cBO*D2DsbEa#ftNyn+Cu8cEVx^UYI_K(I7=N;yx0~s2iBU%i!gb3j7 zUE#?KlI%Hfd55Pl3s4o>4~&l;fIgWSq(WTM0@p=foG=(jf^z_E7=zCNtw9ub(DOw3 z!TilDaLp%x7ZcTRP5aG`q$xm*h2a;)UPxW)Oa#*~P7LSjfvz}da6eq|_jU)`fbdoj z%z1*~Twj3sgOb2L0QVdSIC}`>xNw2?NI~!r_KzCEgpW$k{ET}L52D;=2HNoy;==WT zJn(#|2;x@r*nBw*FT_C^b21T^7-@>zn67gIZIQy@ewe`TeIq-nA;v>%F4UYAH-3n@ zfHLggMvWdsShB*{#Dly3VZ12Zf5&iZ=5d+XpZd21PvE>R-3tZJ2MeGbUh|`wD!k*l zni%Inoa@Igin5AY=u8H~`Nr^GLb&_2!M<67ZtQSg;e4ZK4xfMUm$580`}d<+*kIaEzQW}cKW3`T z#L!Xd-TAEhIv9aAv`317TY*P$`D*lUeaFJ17ku_sD)hiii5B9*L!bt(yMYw+ykRbw ztMRjM)IV%f&<2#(!dMIAT^fwNQ9mXM^x}HL*+>VIByh0>{Y8Y2VZDXtu_(u5;^R$` zGiwji!9QUbacllp z-|!hjzv6}Kd+}b#m&pSCxc=Cqdxnywe((F&8(yYe7yz4CWw^G|{QcOOHMmD7Yh1vs zXf=p`1VG&RBe?NetI`2Wxb9H1I8F~D&-23=V*(Yix;XAW{9i!FiR=^cMC zU1L8#mVMH$H{uBCK!V7xF8^`7q`nW@05G@)#Nl)5TJOu+S?P!dQ#F@BXSxw6^*aV) zF9?AsJ3(;WMI6+JtAddN6ZmX>!R*beV7eCOVDR{~8J)X-g`CRFaOR2Vo+v)<8eF{v5E@m-TI_E#fic56<_+@)M0_B1Z6k_thWGg|+)J5RPW4 zvO})o6pTwj(3hn^t|k)hEsL=n4c5C(7+!ZM+kdNL(2fT{0Ok)cO#Ul|vAo5wy^Ao( zX(z-80x(?rje$6XOSTTdUhvxCU;l+y0K617f_B&z;XTp4w_qPXFwB1kV}bq31C$90 z!e#;6?>q%NJo#UK$@A^S`eS*qQa5%+h+S-(LM6&uV-+8FCaZlY3p~D17pb{8lxz5< zKT{jRL)F2qc)6ms2w|tYL0sak!K@SrV1HUP`Cqo`Kfhgy%|Xmv1;Z=2%)y!I%;yGk z`Nn~~)88j6Yyjk)a4~bF#0pG6UxDHa;vVLju7M|w?qI6g;m1hfnay%P*}_a`9?hO8 z9>x~peDgT;S14wT<*4I0 z3&aB=pNWgvbq;W^U%`#3HP`9eNR``{$>KB111Yiz-BG;!ZT<)GJ462u7RqnqjqyareVgFo3*swLeD6<^gm_03^v1%N509hp^RX<*17)eeIB)`o0nr$7 zyyh(rTa1kbK5sZDSqimR)#jo;_$!?|D!mplkdun!(6G5%SMfvpz`r35ap>#0&^oXmyMAw!u!`VFeMf?X* zf|!p9i+^LV7`PuH3L57JXuwE{{qT~3g9zBynkQ9Pfl<&PX|Of%76fGm`ApEfcPM1Fi`0M)?v>3d@v8? z9v_ENq+KC?CLBnHLfL=tLOiLr$~xlg&N<7BzB3c51#}dA{_rat45bKT3{l70Eivg^K9>KLJN2u86Ga0{i72+LION)9_HP-wrUJp2-hPFjP`ff zc~KA%8U&uLu7UjY7|@(x0G>iVVX-v?<`hXdT>rSz@*TvL<^bei599y9mw)c%vivZ1 z=_lVP3puxCXXz1OD|QcPaVNgf=1yAI;!fDq<_Y_u%jXBwxE+Bst1dV~#|QS2lW!3b z;#spX;I=sKmZT(*0>#585al|+q%O%QBrn8xN-4+Z}R{ z%PU}VVgjW38h{y?TO!|teC$$dD2|(icn0D2<^BW_S%i=K6Mu4)f3_d38^~E6fVQ{6 z27a~?0QUgoE@6{IZ46w(wNc<8F$io#?*Sd2)bHXh=bMBHZ+iOo#{DN z207O&ildNcodl8QkD*RA1LEywK$OK}5NJ3BJXFR3kAO4FSkX(+_(s87!F@yPG?x}FN~SX?fPXtoOd+$L;TS0MP&EoVrP!qQXs-o9GY3K?_bD0OeI+FnI7hrs};LG8C z@>k%E>HY1M?zU%`f{rv}Fj(dQ?v_Wds~%TWbhNib{SvCHt5-dI_z=8%_YSPDKL^R4 zD91RBv-_9*h^Lr^THzAh3n-5+P4WDiaZSA#Y60vIQ`K34Yu#AQa$t=%^<^T925nvfXH*xz(sZh zoZtxGB*v#bCe5=ysv-dDrnlU|v%yl(S?1en$B&V493(^i(qFsg^>}V>4s300fhSL% zfOL1L`{ir>&3p>8mj?I?a?rXYbOk($l#5^JQ>;VC^5k0sxY#Y6zH>5Ik3M!*X}zhw+#g4q((&`$f~!(%!7BtbiXset_|@ zQIP8)1;#TKVJtJpaSAA}N1W9h%!v^GgZUElr}^N;WGx!w63p|t#&fl>aMNkbQ*HE0 zvg0f$3HdqKi0?)X+74V!W%r#^4`fWfxECwF%5B=7tnmqH#z@nt^x^>_=UAW*Wd@pJ zCxP10vp|7M8gk)>Vcg}xY0FT11yk)gA8*7OnzR?XVmv(D7&{x=iIS3%t<}|4u(PuR zMurDLzLzw#U*RV&4Q>8|8-g4;)Q^#Vz6Leqmyd4Xp2v93N!O_YZOl=ocNerh6WaS4 zwr{^|N5`Uo72t8U?nQ6G?)jaBxrdneEAZZQK|dAdivb%n72b4uLRp z7Lex14*637Fp#Q@%PCj;^TEBm%XQY$*lrbJDztV;m=4k=K>NYk+8WOO!NEZQ`Cl-Q zt_JNt_gC9-9G5eW=U9b&^5$q6!+>Ie|av$bLyj}j6*H#m%>^15SHh1grzw~8=GliPpOq!Lq|lS(p|)W;Kq5~>fU&|Z_P_?2pa1`> z_%bV&X-7v~<1eOA8KM@_eEnR@aQUUVmaGdSeWgwVcT>-0q`Ao*uXbmpz%X*WY&TJ@ zv`gFp@Q(OL50R%KzOLMZ8)9xjFqjUt2*?Nbq#Os=orR%xtqXNQnB)A;&Hl0la=^h(x-eL`DW?vz8%2U*P2*qHc zzK`&?Z2ixpvX#Qa#2^KdZBIj9=gmzI^RoSgc9i5bCvhN%z(A3ME6YPJting+b+`p< z8v3pvD|vnxw7y!BIM$t;qwm!0~KzdIoW`<6*>X1jpUbJgM1azFE$@u2X}JaJ{@MF zIc21B^jdSO#rB<4v+bH_<1Zy4y6?TMWeY7edHo9m)HiFR^xn3np8ndOe+~@i=)t^9 z3hD}6z}tjn2G*yrLLBW3wTRJc!Mnu=h%fsbdsTl2=}UjM|IhEyzfClS13_-)r)Jt>8%XzA zz83_wbGR1Uf8U56+bWDx{RwWm?$&`eaXi_dxQ`!Cxg83_GLXL&%<=2hDLHU zn=z0xMLAD*tOza-LpkKH_N2xZ4Ag}HHfCA?pA|UD&kxQRX#!{Cqu>eDrPsw~x?XT51gdgXPZPc0AOO zvNS*s^rH`=Ajb`P_7cdQ!!-}C=ri>Qu~A%tx!CGesO@AxzW=5_KY%$QuEq%Ej{g(; zV?9rOT7w+)-);Wm9OglA9TmsefxDTItH0xo+fPWlKz$=E>tUia=z=;!7qq<@=IkgB zMw~SClONPX_m>{yqkLusb)i70N#w%Z+1@h6SfAZ0=U&KlO(!-E0i*mwRsAs_1HJqm5 zY0M1Fl<5{^dH1gCN>SrD^+-!L9Ij}G*P=N0^B(9vsG&WK#`9BO__cpqU`{aGAXK!5VO@^r!!{F_0{pZi&U|X*fG^TG?Oq!k?epK`!m|Z*%ptKcp4kfpvp5-bZn@ zLx?Z&J$(qRd7R&n;@X3&>2rj72GaJ@9XUZGc*zNZ? z?2O~O*88)-v*Bt`pK3?5Clci>$FI5%C6aLaqk&i_C5ZR7&bA)G5-71=Yw0`8_+EEkPkJHf6UWkNi2i2J( z4iRa|NXzYuhc$k%#uYsW#POoqia+w+pLydftSv#$;-|ixh^w!8J#z=?jysUsc7!b^+(MKuj5$3i|a0NVb`e#lSZ z){Zt@JGM{eUOhfV@CdEa;e>=y0X>+6mj1`$ej`OG1{b!qhy>Es1 zAP>e^q1`-FNttVKXN z2Tl`)b(zSw{bLNMHUQ>BP-6t^Fn34KV6w<)0P-h{h(K3BEjW56Xn)^=wQ&R2 zVf_iLe?h(;)t?}n|Jn?GuQ#8rgtd7nUulbgb?30|3g+xkSN%SmDi<`6C_y-MUGA6J ze>uiEN?>Lx%rfmoZp$y>K0!WfB+n4E!#oM?;d)xLG6ZE(m0#wI= z>d}$kLGi5}<|(7FhWD5Dg5vF8ZT~eEsAa&tfa>L8Z8|PjL^Xww%iV_BO(xtgdxlbE z{$lf=PpBw}a5{g0m5BLRW5~OgkSjuaXR^#3+=KBp1@6~hH4lFu1LF2ktishm!1#sg zFc5}Aey1f&_%GVgIMnt2YX8sY@d(y$BMl$<5ajDotb#b~JF*?>82g7)kNw%)fB9a5 z3#IQEVWy{|>ywt~k1wa{akT)G73V=i_;HZp$cr1ppT`jfaXy-FWc#m%))A`XL2Ify zKnjO(#$b#Z%S3Ak{x$;Q5ZoAW`6B$S0Q56+jcz!e=NZa5;JSg&;_Yy%d|-c~#2y&4 zF>}s;Y4SflG*@NDxDH^%HzL(9KfM?6?gixk5S~Vy{6M}bs0&qsHI)1iCv)J&at-25 zgzr)P%g-aM1A*r_+-b}S9%g96I-m2nJ&N!XYQO415I>9byM?=fxZijne)Dm){Wj#4 z`eBUL?N1OV97y^n-~SJz|Mo%l6(P(+kD72KSJ(V$^R*SU4pEI0{0$APe|G_+B^Kab zvJR*UJO(0c_`nqdsDJ4m0xo)ofyXHhSid3ws)CfjAoOF?Q2RwO2>lKS?Mqbaf$G)J z+C+Q-YESP5z#4noAF#$_3Tm&O4lOwNfVF5zNh=)W8}u7|T%|465y%th)FC zUiW#V*kWh2)CT^x>HPL&$=Q!1*&1{G$ud>l(E?Uo;oMC30y*&7LjH@3y1>gs>4kjN!&g?f(6mn!nrpug;Or zeHbf@4>>zQxOS7~Z(Uu2`)nIw!HtnJT+vqEEr^*Z*@|G|2h zzs8+^)z|;!XTzzoSbu^T0mM&7pl*8+`iN?{A0ERxxK~SU;h$mc?^hV_KSM100@gVV z!`hx$xc-FUckqYP6#p+x`?v0$Ek}+mHyL1kaiYY~KQlp1T?XdDda#*5e4q<4iUf?8 zv=2hq@q45B{;hleI~N1c4r3N1i*{fE5jw&mqFv~?1&fQ&5fu@^;|@CdW7v;F@F|shvS6P^V|60 z5zYtBTz@!E@DvZ=rtIhZwZqHM`69L#H_uzBKntD&SQ`e9k-FL^D99L)s79f#c3dB4 z1T+Xq(AZhm^7ClQ)Q>9~dOmsS>ydqMH3NLfspP-p{P}LROf4a8P{(x0s1hk&9DBe7 zuR7OPGgnfN_W9M<`f41Z3A@Ee1JB~KD{vK13C^ety8g{ z*Q%Vm`9U_UXm2ldJ2mbKd#(9u-9z;;mJiA1^J7C2u40O`BTWv(HCJ32l?^C@;SZqP z$oS|Vk>6bqeE!Hq^zOXp+fyxZ+!5CGT|z{Hk<%{Q+lR*|n=@6VH(Tp#R;HoRtubd3^5!%AXAA;_NEDeE8oSoOr$! zU$N1%lTx@)c%fgemoM0#kI?`#Qb-*&mwse)?AbD<%Vm-~QiLi84omEk80lmaT%^aZ zYY(z})y8jBrp6_07|dEh7tznq$xX3Oz1KpiLrvekn2TIX%uUeaMB&&QmPWE2A!tL) zzJs-G^3>U4>ja0MB{L3WpXu{H*eZJlpEa|Ukzt#aq18uksg~F<$4auIkdtRc&9FOg ziJEnk(y$N258C4c!+lBe@<;5-kw<$at~1Sy+)j=HQ%+CI)G9D;5*!_>#Mn)?3uFIYVLe*aO2{e zWxBztE0)?d2VaTtdoqq=mD&Xi)KTXZ#5A+!1-U-5uE}U%VTTv#KR8fJPMDP+?_f6~ zkkg}=`ED>Rl2GqXBN;}n9(8ppIM3wr7xsnE*69{-3OVZiCeAl}zTv=6d{`oN_v1T~ z#2O58CQn{=$Kla76bX+txYd+kLb??Bi@>XXG8T&w3j=- z%ggeF5<|HU-uhyc$)aiuLo>%_Tt4sx@r#G+4jN+z_*CAW_o!}X9d%oYH4%32Xt3{S zA?T%6IKbCY_l^vl?Qh$AN3uG1sjFXHeoof(?X{CrB78p#$$YqNPS6n!Kb4M9XUKiZ zqG)H*KT`{rkBRWDcj@~jzg^bED^C3UP9yW%hZl1u6U+)Ha#|L}G@d7KmP?sOzO5n- zt<9=xP$j+j@lDBDQj8wtS<}0O1leW`igQNr68qo>OAG9+Yk%_k!&USBBd=Kc8i?b# z13h-_EYY-A$a}AT3^4t1wP8!{L;%Oov20n+2wI)GeI=@ z?SvaycX=&v&bh5Zc2^Rg)>&Zgvh5@hrBslrz}~iK-f8DUwaW!&%4%FikBc{Y4kiYF zmtcyfWW2W(ZiJz|a&P#}*FZeig83JWc*afN8vL{=17!mvPBL^Rg%#^dr`FOFCspD} zz533Zsds(wUW1Ya$($@f-NW5%H74qR8suR~EaTkOzRyN;$ML=JK{2NTNAZO0 zvI^;&K}`oENB)IxtG!AgCpdQssM~RyfQzoRCjCy^&Awm?CNZhf`=tlz)XF2&N{FON zHY0dd183g2O-YawTzm56am80+-u-1W%_P~Y-$gJD63J9N4KBJKuZ=)UxPOUTgXo#+ z*+f<1EY9l=HV{(}wfoKz3zHttbb85h|3xXs)uoP4S>n-yUU_FGJ?zbQv0TjN^~C>l zxAqnmP@oq3^}9$=6$@sP`a&;hOfgMjbp1oby%2_$_;(ajz49UW$io$6N?mE|6C6DC z>YVf5J1#vznb}jrk&C9hzSSYT`5V+prFMi9f|_XxkGMsHm8N1f@pZ*4IPl-`5zwAE z{5Z2l#X&Ea68u&y(av6N=o|4 z=CAmV^E(ELIwW`!-hAYIyY;l*ec|()S^t35AI_SONk0E*X0pH)xn?iV6VLo^DqaT^< zZVumt{nB`48fvbAm2)B|FHGvLes{os+7izltkn8~y4|bo={0(Sl{lZUJht|pI7;no zrhZ3_3h8fFWb6l1`FR}F9+qf*Zmzyg{moJH1QC{AAQy)nOXRI2Ii8w7Bk-)5P$XEX zN7~czi(sx_3sq9J%{k|~cZZ(S>?0vuqLm^vW1QO)T_~9vs3Z6#mY0~7n?~q#uY!__ z$vCC98cCVxiQfLO67m!mP$L7@lh(_=J=NLO>OkEd_TtT6qVq#v_l-21de-)c*>!1- z!=3(WTS}g}Q}-!R0-@6*>0h*k=I5~8Gm&zPc$@cR35Sm`SQHViP2D-yxNoq%jfw9y+)n5{&Og<`$>M74EoNX*;jW z&s6%1KFN9~e%Iyh_WK3Yd-n9i4A;MW9>8~4=fU?q^IP%Hm>H+Y7K3JQ`#z3aHGlG~ z!%JgRgxBcg)EJYItFbR{wjFKPW4EY?Vk5`3^{)L}$3|R=4rJzqkki2K5S2Usys~F8AMYxChG4svz8yQu}Abj_KNBkR% z{JC;;m#OFPZCjst6|EQ>UO@gubBTgUWqEWD7EtB2=h3ly zW}FVGx~ThHMXAcs_=I(QyRqYr3{kHz$z9E=c2YYR3(3&+FMHG6D4rg5>bQ9d3t2sO zYh&T{eX&_h_sit`W-}4p6wH{y@o^U}K0D^SR^VwViTB@J+P27_T9R;wV4_HI?tKNg(bEg+RI3HJHvcW#m;c$1JLWse6KXf z`uJXQDbj)_A_ob7g2G~-Kp z-BvfQD2e!x6C;r;t|v=Z`X;XmRGIsUo*|ep#-mJav)ql zH_T&$UGwaDCrDN0RB(nr*wkX|+0i-@7%@j)GKore39ooW6V)}2b_l zd}QB*KF)+!Y5tzRFDfZAF4f@e%R4iX^mW|ZiYzRdhc3(}M856p5Yi*-w@0GSYoQquAmJH`e)HBKvKIvzh#d2aO`LPn7w6 zUWT0a^dgQ@96M+rOv)FgIF_e-xU5fJOCmwn?PJf>je>i*!vs{zD>9+7a|B13b0F-sGD-g8|C91YiB^XG86Os>R#buKX^KU(?T z$o+Kg#pU)!LiO%;>o?@Iv3~Z%Oly&T8)FITlHyY`iii08yT+s2e73W-(rlWBYTTES z9nLJSk%gL1aeuQCz9E$vQdm?L^LFnZ3d@lf{=Efk^U3!&*Ut)A=5w$nzdt=GXu+jU zS4lWJ=B;e9r}{b3`sZL8ISWr(x(68?>RqiL2@(AyFITtrCv!JA(@xyJ-M=;ys4CZF#O+=T8udGc? za*U;X*E&U@yI1?$ps#Gr?RQ%(WEDxmLPoP!RNv$|t$jJcUc}S67t7_L-g$PG7gHAz zOd7Ws{n(x&#FgG`mFm+XMeIjw?vfiqIqB`i=lB*{@nrv?boa)9{KwEcu?>@KIlG#) z2R@HZbP*kT)>Xr+z4Izl0B~8m4#P*V;??Oa^j%NAOO3})f#{kwnT?$MjNMI=lClr& zDO+Dx1rsYex(9uSsR&UxtaUg6Px58Rlpa@nN8EQiV6s(qe4tJ`6v zx^{8zowpmehC}2_HlN4ya;1(Rla!6QXKLPI;rL_bB2{2yKPlIdA3pW_swJhL#MH}% zSop>*Ql*CL&f*`b<1{a?ZFo)|*pR>fa~ngs;XV`6;{hA^H;F@%)?1tfLr*Nw-{2q- z3*OUs(Q3kNH;uOD=5=MtRP!T`ntu4r)3zn=+c}>{zd1nb*OgCqvRtZ@MPvQPENR<$ zT}H+j`q}sx3ofZoYkoq4jJrCcSLAgMWRuBb5x0&?b?$99-jX|KZWNkl_q-T>7{Wo3 z!+p z@F=y@)!jecF=+F1Fw38Ed^WMT`mRFk=-X(=z_+HB$95;CLOU9-`J$Qlw40V3-t}?ilC!fs`*ImgBH1d7Q(0E5QOQc7f~Z zhaU{>zveaH!~5Ao{_~4V$$sy|)A#QVct_|^QM%*xX}xX2#`dch(E%2j0(wQ-Q^s4n zmW7Fc;Op`jm|JH&u;~!E(bVaDxRg#(kdG#ZqOXx~{b)tkX2wp? zW4HRZ*Y0`b`VAZevLzCSV!8D&RbkiOWszg8ol&1!B#$I7*@b?KBK3FHY9-{=Qjbiw-9FK0MB3E|lpQ98XZWO51C-?D|<_c6t(b<`V@9g)$ zQ1B55>-%i9LZE$zU4blr_IG7pS5=~@WW$E>7WmUJ-+11 zxAyt@n-#qE#&1%VNSF0%4|-_iacga6gUXi}i^ZSUqZc|IT-Nz<`E_|vLCBdDTFLuE z;Sk;5_PqrA?lXe$#DskEY}?YnLNLv18IQ|mrImGM5pNyt2C`XJ92(qJthEyyoT1t7 z>LNDmD(iYtxZ}Ihp_kLXju+{OO64u@;ES**;L&2m^C7Iso^;v@VnS1EZA_B*Y7E^S zOVrf6%#v;hCFqV(UDrqoragK)K40_J{&Z0y1rtAdu6wqh*6$}*NFj{&ZKhOk&yk^4 zUzsI=11kcy@6&>+8s?1!OBt%YU!Dz^-yHD@BC3+N^qO_B>yZqr(%0ntAb;?_8(BlK z-bl;-SDrzS$QSmNdrv)v=#s~30#GfZD}N=0j3 zk!6iFe%DQNuljA7A(JyB1E0ftS^`V2W>e|P*Ryf7*6su^js3CDRsQ=#@?54kzD8Nz z%>V)F3hOIs4@6(_DxRFWY+-VPNoW^#>F_Ca4wud^xoti->U{O7+dt?$_0q6d%A|=F z*viIBC#6rTwGU~hWH%(37cxj_O!k3`OEmF8*7qx?cNzlff82~FujhZ0K8LkTE}x=jl>{FRIk{=S4DCeIeH*7{A-}{o5Ezt!)B6TxVHJjJ2wgH+|5}eGxAv z*xw~;7kJO}BdkYqj1-Nu->Rub@=e?hC zLB#!0;a&0-=k9MtIcuWt>)C#McH0}@w;-_VnC`BEQm-GoD)&c)E=L72sC4S8P-EOD zKhoUB$S*n88Xqf7{yMVH08cWoSdTI8p^*`Omkgls`Qo7gL+KY1_Z5Tz)A>JTdU3LGY`nERunl zOc1kp)%781hhg!~f#4~%;{D}!)%O^Wzp2mO|GeB|<>S}T11!A>Ps)pdEy~o6d^@L^ zj_GA7H5Iy-Ns*CZS2L))^6PVc8cf6%yY&HJ|zq8K&!F9)tY0~4g&1{zRX{4 z*p#o{kGxMyRfv%c2w0QsTw3j|9SQltf9@$JFk+)7A9k2d{X#}KZ<78M;U9cUEW8u) zVOMhD=-!nQi}-9b%S}zrv6zJx(Ac$B=_$#X8T-rhwCOWOa?$Vx>L2c;vLmW5Z*Y0{ zt~un3mYZk&=0&gV(jlw$9SP=I`K7_Nl68MFtiGX$*x~%Q0y=85ee}d)^!^%))=8<5 zub%02?%-h@FPz!{@}ECgSd^cfSvqWZYBwKN>2RnTtLz^wVgG1IeukC&=rR1t7o$l+ z&nviY+OU5pDqB88IJ(T1!6HW!&d;G>L>iV&_~Lz#H7SX~S2pWRU~tBhEMIiRoV)PG z9@-O(B@_f}B4*VQ5tNPV?a(#s_xeNxk;awbuagUVkGZ|riEQRHIyC@&;o{lc7b8E0 z&D*~_jJ{lX*PVP`!Gh$P6&|9I9->SQf4EOD8@sK+=OCtab-s=1 zEaOW0$0|aRASD%km4`#CF{egU4aZ%+ytqfSO(+_?XSePtt>emxl~4B#d^Eq>XSBF2 zwn*Z#(SL-5T=Dq0aE9N3jj|2mZz~fTTY($<=<78oN+JF=$R8ku#=LL0d>*N$XfSb7 z`I@$-Pv$DCu30EMuiBAiItGSL3x9#-L`!z6%l6{;=oV@^_olyA;CNsmSweI45LvTi zcH4tv!jz}pwozT)F}lY)IqJXpN-}rwsizQTVSR$+s2^UGW!TsE>TOS_?M31@SbrQS zRkjIm|1PXl$H6vQLPyRa_W9ki%AiM;iYK>j%}p6A?vS^-^6-C9OVE6v=Ty~kN)w>5fhg=e~!ZtLo;|eqE0&e;_#b%ruRnk+_OZA1jYE!+8(V%%vyr9oPH^FEsf-L5Z zlioM^K(F4e%w_K-eUY#XT?!J$;O0W*B6iNFb@bFNapZKHhN&ayiNCLPQ=MWJi)J>gA$j zTEGi|_QFaH17iz5OpGwIhGnZOsSD#r_O3n3EUmo$Jb#m#^@L!OzR0^Bf_rQesqZ|Z zPO=hQPygQC?jkE0E=5{$gefiRi$Rx5v0?UGY$Y}`#DF0#gg2T_lXK~Ig5k%gtpJ}> z?QfQaZPqH74mW?uY}^d7_HlabAG6NbTZ?gR$G3OhvN!R;m&DIb8@AZg%KAaDap&C) z)x!?dj07Khud7$Q%(9n^g?m$+zhi`WefMf^7oG96)jfg$H~xTN-8`z@`3#l@S`&<> z1XEmZGq}jv4SUs0${>oO7Pm2S_wB(Yj}lni-GnZ`o7IoEHrTLcE@LYhE4a?N6B&Ps_RCAq>==3yM&d2mG6WiM_xmZX16vN9m^R{cJB z%@*Jr)=Ezwg)c|I=1-cGekxWUrpr_TFAc6c{F)GI-Dt=pQ-(^V%q*k~y!Y>qKlb;B z#WD(%Ukb`y@N8D^a8|uO5oAX(h05dEcYG5yZFz;V}s0HD(dZBk=WZZk{>R;M-JCzM_b8k5Vy_{JUf=2uDCgEs1qi&@|OeZ8URzT`vHvC^z%hatt~%XF4^I;418C32z1<3;_-q6evk9}K#4L! zx4o@>VlZ#WH$L4UDu53L`^PNKbt8Yvh%Me)DbG#&yc-~ zmmK>EKC2CoMftCihI}@Adb~n9s}uJf4R8Pc5ADjC?gg!s#P{cW&ySB8ox%T^4DUCq z-{-KUVVf`q=vqQs#W?&~RJuQx*ks|3F{+@=B|a2yKi?eiWBlVR+4N9{5mMa3UQRw( z%WyG%*8GX0Yd)t;7-qP0y&R7lloTC68WiZ%v5+w&p+6C*us~Ju-nV^eqz`eC z`RW0^73T(6B-YBhU{w>Yun&_;3$viPA`+xh=UF6~AK+zm=Un-v@1y7@Bf_7lGb0XW z5RkPIPHn~IBRuX2EgEpvP=RY{X1HIX zUSAEvuDLe{m?j0%PhmjVo6^jWQW~GLE^q?VC{sk)I|KS3AXRrzUG}6TNVk%6Nb=3A z)t?uYB8YZzas$(d`l!t_b1)HgbyrE-A9t3W13_>Cb@O960&6zevf6>nXf6rfFXR!I z92dLxopenA|6!@)689WRJW=OfyfI+o29;IcKh9U5SO`QR?g=3nL{?^A+}mw)IHPCc z?0v9Tc)OXp3n5i{W+gzcw?-#c@2Y%37824(1tV0dzM<)GOamCCuvE0Luo;rby!{*s z@wV`nr_%+k<>AHl2E&18NBRIDNMHbseG>a*U%&g+vKIQO{Nh|!pcSv_t9|8uC}_@V zW;7G#TU}J=eG!$$T+AJPJ~0GHX}geA&6N_08mZY20be;;i7KZ2nXvy=;YuQZFCq%q zGew5#PP`-^WO;mwuM~HWIItdYYM}&8yH>NU8HPQUSvUS$9J5MzjD?F~3PI8}`sCfq zH}jiTNsXBS(0jdi3MjwaQq;4~pg)UHi4yg-8=`A#dk zyY0P``V7j6mccozrg?=FtuH)?PO^Mt*afSyLQ54fHFz<8v$x}oCk_dLqS(UZERL7` zlTC7rpT(P|D~w;R)Z!X<6bwuSrN7g_TGd43Pzf8Uq{bnXU%2$Om@6yXxava|@B>hH zsNi!WZiZne8Ky1|XqX(N@qW81hsU6z?lh|3KtNSp&^kPn>6$hzZl4U&tcg=9%~U>f zFiaSn+p6LA5(g;hfSBz&rang~9#sZeZ>1{$5FY*xsdy@QO<>bc4=xYITu z*g{12W1s3~iM&4LG9u#LM1-m(kRoDi- z8~RBPZxt?{#R+Frsx8Jt7zi>b@Du!$nn4>wp9zz zR52`fV6rp*jvZtNHOLB7lb1B)C^#Apvwl&=RY)WI(0r7iU@wjEvmIiE82J9njzd)a z4unpnCdeL4N>wNDGSNggk(r`&2cvZ%H4sPuhfdT{m_u@p$FGU9V$@mx<7P-@uP=4W*>g>5`1I!(TLlLC;AKJTuDzE}j zk)`u-z*XevLn_5%Iv}XTDEY9hy}1^x&cQI=(27o8nDbUPBXmG_jbHzkM8|{HG6j}B zw%F^YHFSw$a3cO;t7}iuksfB}zeG@hG zKOXU_79=!zNo^4D-C^}%%*DAWONl){$%}`-14_Tain)x*13{&e-K1B6w58fL8-X3Y zm#9AJ(!K`F*}o5Zce2+aJ*ruUJOtobiNXs@6l7p0{1xdD@S0$BUFYv~WFATLzuH@H zv`LvM==*f~n9Gp-YPyjj#c|RI&itbU8H|zI@{TB2FOy*3#oo;CnT&_!M+b=aS!G9u z3PHy<5h%|y;>Y~^dOpuWT%89cLItccvR4m^DoU;T9oC!FHi_Os3=%X5*{>zWxrA(*Y?hf{=X=N9ipn`)ETW z3t`VQWgT}N2g6U_lLIG*^!Rft_gtsl&4<)ci}T0OOb!QLzwb9GpG2z1bvQXqZS8}% z3@FhwczX&A_ww*5#-69niyW7y?Zb}Ye#)^0jiKK`7&6NoB9H9hbv2rE3zn}0J6qVz zCB?P(B4OSCi>WoUJZZYn*O1SxE7x3(&=D*2%TBq+Q_umNv&0NPexAtVarku)=^PEB zyWi`$Iqw@zt~-g6JK{8>OVitKQhxoYs{E-MuKaE2l12*Cb9%c8#@q@@eOrs09KI_- z7mR@_H5yP-;pln0+3v-7`uenA3ukJN&3yN|ZVRPn8a20+Y8}H=N;XJbSD%>C9C7UU zxd#XAwF9gohP?ZAbp7$j;_`Vpb~8g0FY1}K+G2x+Fbt)=`}4TTKOcm|y0eAQ0egJX z{EJtu|1m!qht<*^bTBGan2ALl`%W;;r`9mwi0NCd*Z?G+Np|jqi~9J9CwqfnoVnni zdXS(d2$f2INbESGqz2UrE}j;u1-2h*goe&DxpZwI?3yM? zMr4^jjZo;CF#Tb+0`dOWNvVT{_JR@;ta1eZrL5NqCR$Ft=U%BW^zTxHnmXeA%iYW>BegxgE+ep19(1-fn;jPX+&e_aV2J2D~k@tfb!Ho87s+no55U;=5sG1 z@z1go>rl_9-c%y`cd`iXhLC66}8PCZU3New(D?}vv-zx7aBkC7aTae)K4r=KwCthfE%M?RB$M_2^s*D59n^l(_O?TW-AanHE`MD=!xnUtB! zvj57}hlAq$#cf?p8R8$(oF3IG9k5J0U=*_2L>DYa%=#?*v+z`v|8v!kYbnUzq`llW z+{qH8FP=6x!UKP}up0N=eC3|~aaRTW;C=Nc1-i~BoC#Eo=r)G4O!@P&usM;%77DV? zH#^}|ghi)LaJC)uW29I@puys+FhrGO@xCVpB?a6wN49|xJKJ^!L7JQ5?6v*Y*s+I@ zZSTWbXtH)tUaa`eeUUq|UIxKuPL#zxW(N=`Mv+#){|>Vzl*O*mgNqX#|9*OxjzvJ2 zzD^fvtQ$>D9`mQrq6FyZ&ZECkh-Ye>$@Of{1^s14u1X5LH5v^C(hl1ZnOE z?=VAB@5rmkZzOLAp4lSQ?S|4mQB`ttQntJcBF2jq<0KY6 zXz~2@J5f0F>ORAnvZ#6r4`3ducNLlCtjyr3jlkI0>VLQ|6>X{KDMnVRR(@bVtAl68 zKZ_I7#V}t#pX=bli4J9G)0N(M0f3A%SAJ^nwPzR^_51erC$$w;5|YYDOw(%XUeCph!_j~U?p-O7Zu2hAhNx@$O@Gw4p*f+ooGM{aUw?-!RC^92l5w8?V2#j zJe?-cqRa2HC(%}rnF#WkHhbDv9y#2}scS41Em%5g)-Iktp5Mbtc@FM!q?Qvh@u;#9fzpj&!VhX2& z!6%WYz$BB2--^NFVn+;tHcot^4rdyzkkEC{W1%VAxN@y3*N4fQ1K^W9tvfKE_OThaMWwH80?@ z!21R$zd*{u5PMID_wf1#9ZYn+TrJ#a%2J-{%J=3}!n3Wtty$dGz(`j^#DMtoJl{_E zb^K0#yYC>CMo{rz)o=tC7hF@gs5|RyVUe~hohSAK{;XzyBYtsm1T-_Yty(}^CCVEO zBxDVTCJ03=dHt=7KB*88lBt+R`4a9nfmACK!9IZon9gCU%nX5yKUyuC0U;HyHXnR( zz69%@AUz%@7N<)ywNS(+iFeI#QuosMc(DjME+w=!15C){1M8f1MaU94d|O`>O$l!W zV^;&ki(bz~O3%c`{1=wlkp^(BZmw!D`Y%j{gJUn$3w|7nD39*{ztWMm)CKttd(@r-Lne5Thg*b2dn(XCmabC zCxM$^ipb-E?6cqLwH1(ENS#~I*?vh4&S=_3u_KLqjg!9;S)K4?$aO+fio*ljfKF4- z7cnfLiv|BR{5u+1)pX3_Z2iQe3i{%m#cUTdlQrrUQ1R70j#GDkXnJZr199w4!w&^bx&}|xuAa3?2D0W zjR-kzu;xY%KAcJJMqWQX?^u2IH`%(Rjs@@80c!3^#^tz1p#le0niuIBY$FwM(}yDM z5MrXBW%jCF0ebbzu%zHD{`c}JZqjZB_QIsP5;Mdeg@V+3UHhIa7DIm3L8pm{^RxhM>!$Mq=F$?5JOoOa_=$JZ!$6# z6Un)x5i5LfVsx$RmDpX04%=j7$GTb*?->=JN%1~mFkw_?^dr%>4qCF947kOrJA zOq}^bp|%V021-=i-VY(|AMta-UYWwvq;;95rhH)O(g3R6-IgZNCwQQs<8x>!oO-VF zo^jI_%*kzNz0mw&!KuBot^Jr&-`;y%?D)tcd-xEMbggwpYdHA%Ha+eq*|c^QM(CqS zK5OT3M*j@zt1N4H`M5m8c7W}L+4D=*H>MVtoVT!eO}Kwge7;0NY^{%4am5rC5{{9? zcsIQNMNOQoJIAfVFd!;Y>AoAd#HX-cXmcBtu?k^frhg~Ca!z^BF_ld$>3M??>%g4^Eb@4WUwQt_ac(w71P$+*?7cLcJax0?A& zP=EUB)CV;Z9QHIc(ij_M4vgUZg~;fa)xXz^7-K%}?&XkQOz zs31|33{BvXN9@Bv0PQ2D4RoW&VWiEXQKj#jd`bL!KJb3dsvShg#`N=ulR0r#4AN;o zs&Dt9QDs7Yq=Tm&1s#y;@GIy@$Nm)Glt3J&kuq0Y zH#IPj*7}=hj6JX8E<;P8oBNl^77Ea7u-c;Sk#k|)h+lPR1z6e|E6U3e!+WLDLelzc zGx8aiKY6ci(!U51Mu>}9Ci+47bXRA?w31 zK61%`Gv3FO_ifHfmZk!@O`I{Wv;%E3De@k0nvua2XUM z*}G?Bz4XM9s>wkbUnqDigsY8)&qjGe!9;n<9SOZ;2gZgt>Xiog{Q1wWHN}2f>2Czn??^Iv3FB+!VZ3EuJWBmIqQfA?Q z-8k-YXXIrC71<60WnD#I#xN-{NvEz&nrB335?0=1zDYzE#1P|SAT-i&H=gx?%{JD1 zlX&#y{2yzJwPDdKJHpfFVVA)Rv$L240QkJg(A_cb<2~VAGbE3i&CyeeV0?FvWBwoC zfPZ}Pj7^V!u)TKtj0{o18HUOvP3Do~`VWQK@-;`Z!GfY5knmSCL7U zdBpzrTjzpk-Qdv$IDs_EaOh1-h~gk0lgf=8xopAGo^&eL#a?EFRDD$yY2<=KO;jOC2M_!5XFkNj zqjbvTM)BcMCMyd`&CdJ^0#c)BwWj628#OxZWG38w?K~T<_?8#FP^DuNwy8CT)bEx> zA>$HU_Z5;M%D+EdfdKNFH~>zS-%?oU8o^zuoBk(!#;#Y7aXM>giAuNOTGT?bhi6AW zRp{3dQ$KxR67LoY^SQ%W;WfOs%naYA+QGKQf?U zqxAi(4*E|PztPwu=&y$-6I*od_(KBR9%U=MZ+%{vu$mE~Y3bu}_9yy*T4=UU)lWIUe}8_g>SpB(&VFWVU-K4;_rY_kcv-v^5(n(@h@k z1DtTGqh?$lZ$y8x27yrytaf&g4J~jj@+&TMg4QmE6{nq@e)MLYSlCu3#iDV1_P~ld z$4Yexv|cWv9Zwv9{qoI{P@Pm$qkx_!QRdMiY_CV|3W>0?YSjX`HQI! z_8=LsbJ=%*PZdE-33t3*uxdf_n1m&V3sTC*(32M9!aS^`yLcpB^(ud%$2un?@}y0Ym_lIn{Xh#e$6#2TTJ%$R=wS|Yl-Eu;wuMY_x=jfq+UdCHQkI*UTlPytI}hn z*p^IZFUSN*pLQAshZbCI*^OOTW4D4;S5d6mR)y|7=nMa52K?D-sRD4d0K1dplY;A{ zbA##PPp3Y>uQwrZd>~LJbG_WXl=w$1DFEIrFJdY{#ytm-#GI#-h(WdE!;5sAn^o&8Nv%U(k`{0c_B4x zCtT1vWK4l|c^~<)gYvCiA~%`ZN^etwFr;K4U|Q5icI=J_G+3ne$M7?MXsaq6nD=Jj zxuow@)KRO=fqlK*-_XK4VL$s3asa*BXLX9&2BK z2U|d3;Ra*P5ml*=V2#cQ7=U21r;mxJH;$4DE6Oi3MsAk~khQH2)5*zk`f(BT@wq4Y zC^4qZ{fV__N)>9HV~Y6g@~eZx6AnR%V8QO`(R>z0uw7;J5ujqZW2|&&z1*OjdU-(A zU2?KF>wH(Ffm~(fWw@BA=`n~~+*{`Z){$a&iw7dflh1;^`4B%~6zM(y5QJP}Aay`I zxN>IX8Bc|dQZeto!Fwt6f#A4m>CpTPfrgO@nuK;JF*78Si+pw8V%V404E&?!AF*r% zN23#CCUxPn#a#=$23s!K7n=BJt|M|LDu}sD?g^Th;T^>@xy0jSL67m>VH(zq|I3Y| zDSx*mrlgmm?Cg@gWU#9jYAswq(qvSw1MXo0ZQ+a>WLyUT3eda`60@u6gRWHc1^%T4 zs)dfs28`=>wX9Nr@)M^&qH-LQO56lw(RYwctw)Hm?P;|_FO*c5i0SKxzl>OtAuot= zPIePq&9Tl2fAZ$*Xcc)i4DZM6M>Z+wxYg))bI#4A*}|0zEK5@HWVO*!!vDp5j(S8v zY1AbR&UJ__z3sTI-CX~EFtLug@oU#HCyMA~N@lgAiE8o?kky>`zE_G9XD={4NLq_r zUf@R^qv-@FxejS8;J<7rLQ=JX`FrLde|zd*W`mJ^_x6+T?>U#GJr`zEcgDnOBBzCX zgY4ujQ3E+#@__k6ETj>O*{*io7Vqu0$Y~^umsj=t6yd#52~G7!B#>0AsnZJSeF{8> z(`L;KweDeO-0S6#m!uZ{LQ|S8VPYTc>{m`OJGCx%{a5x3Y9#mR2W-U|@{!>z!PtlUlu-Z`tK092*8lNXa~{1Eh|& z3&QcmZe3J6T@5XQBW-5L-O@Hcm~tNECK$9{dJRC$Xne9epV1Cia$6fq*6RIJj*q=8p?kbC_*1#q2tZbMar)(YDe?9xB6 z9DJJZw|7uy((;lw9RFZr7$1LUV(o26t#Pv5V6QFwiHvAe3c2wC=)c$!3P$6bAwhSR zK<2~(#71`tu8Dolk-Er622`!;-?0s&NOQ5@dL@vNO8!zd@C)DRgNJ20Ya+wM0JMwr zjxM(Lw&%&%@EGf>Dky0rBiotfYxQr*~`DL&6CgH^FoSe&nb0CZ_X`YZJ-0 zWu(R+iGl~!*Mos7aQOh8U#4M3rO%8r#7$$8*kT)G7MXARXk=K3^;__RD>Iu>z zL43q)7h+SaurJ8S!NiQv--WDj_a@yxkNvO8d2MbnTJuq{hEXnW_k$Yjoa}2ADVg5w zqvLD9>A#VH&WC&E?x?KsMN<`bbU*_cD;<&IV-V+>BL-B-9fGippYimiSz-gTKr#*^ zjSLwfbqa|)KP4)Qgg=Yn8zD<6Kv_&^h`}0UzLskgX%*Z@-a7#c1o1(tzub|-nOdX6 zuNQN{yzTSbMA%Zs`iMAc5Vp5blwZ=5T#A2uzM^d9ji&!<`L>jR}J4S6(A`>J9&uk3ni$2O}w%y>tpZB01i-Le&v5Z zQ|tCJe{04)sBPP=aYa$749z?Yv@F5vYnOBua{ZNW5^(?Rq_*2BAb^KX`Pug(b;4aw+G;Uigi~Xlrh-8`xD8+L1n;^h%p(pn5)8LJRh#MYIAQ-Kr zO$ico=(Mg`bk`&3&z4R06D5K8_u(SBW#&XZ7 zeA_`%S;xklF4$QcKOa{<*!h1zxUt&x(m%);6=ip61PhS+>JBSslZ@9V0th0H_sF0- z@`2WRq`72~e2P_b5NKs&3O#lZkBdVam`__3ZG1}06Sz3fX^lt_T6cRKaVPd5&Tb)L zY0b6$xrxj8u-t88sOM>BDb)A7L%PaY?{4gbjaZXV>Z!9(1~Kt?1<`0pa{9{CP!Zo#98hPx!IL{ikyT%gmbxPQ(nHJs+lsa%(=o-<%sPaiVIQz?pyk z05ej!cos3uTC^x#&_3xg3#5=!AH_F6|J$rvYka)gG@kvXpO9A`E45a=V#@DC6%@V| z9wTMkTU6z|i5~I5yloV?{2-bkBwCg-6$&Qwm|f7pp}>{L3G{=2v*{&8o=MeWSZlKn zOuSIcOxp5}_-z+ldrP1}xGrcIH9C}YugUDupBF2mCID|Kho zf)w35z88|ttuWWW|Gvm*#SjtOtGqfvy(awX2){j_x8uD;V*2@EwZ$seT{c0FNC?R8 zC(%uKbX|A;Jh;!Qoye4z;oo%sva5US(z_o}-qgJq3Vcseo46vb&4q?GsC9jfSrk}6 zkxPT~S=PK5MO>%*S3qAz;EK;{f~Y}_Ls7@)0f&Uwir2O|HfRNoZBY6b3E^m5G1~N? zcl6?(c)#RCyW+SM|A`uvnY+ebX`2pB`A`-X`Aq8B8oT2ovVIWm&a< z_`6mbNXgRmc#DeMr-RUmk(->mJZrckd*W(S$m)6SyYBoWgiCwklb=$$RsBWsv}G6t z`+yiL1e-OO*ECO_0GwG6#Jn+I+7|J+jl>qbU%dS9baR8Z5`?c7=W$f-XT57+ssP*J zVZ}iEQX~piu#Fm#!}Na4yQ4oIXx>b~RfaiENWiH_AO9deaH;X`m?&E43;kIeDyYFW z95-ar<0Y(>ylJlcZjM)Gi{E3yZp5`Io9kgKMkG-9A9QK0R=-hZa!TZVxcSUPHB4^y z?;JYZlXovd2srjChxDR6^OH^d0mdZp`AZQXKVtR6X2-vWZ~s2~^$|FUWKjVgdqvVq zYtWAtz9Sj=KaO{Q?yK7ro@^Tg;Oo{eZoztr%AU;*yp9pWFYGq{KxAzzlPBywJr`2I zJM)x9rC}$JcWMd{1>f{b{Pem|#$9-~vd12Ee|D?d7C(y-KY^k(FJ80O8-9eZBCltl zUXYyKyz7~C5?xCaDS2M-R~srfIPyHAIQT1;)FctZ*KywuP9jcZs63Av)rgKYRlz93Vt`&A`r{lknM&M!;McvghEtqB+gZD!Nb zJ)6+dY%`(zDx<|sP(zWh@V5Jk#}%3#6Z9*j&K3dGSj()I^js(uWIFITCSp#mOyUxn z8{h(U2)(@#n5R2%PgHm#4g8?h3;g^!#9DA@S83he*NsCuFOMDnd;IX_N~crDpGx$l zO^W|~s8&y%J||eHkzA_s%`dZ~3BXJ8==`gX38s3a^7h+W7xDgj(7VnLYhFG!+fXrJ zr@F?y1u$K_#^?b*8u}MDDgQ419bNBKf$)#3l92qTxMRqS5O_Z=dZu^3r=>fy5t62e zkDD4WY=u6+NH*4$)@?Y#!#WOr<~QDqERKs0F9aqY_-69VF`5nGI3<{>_1w9#sTp2H z?7Wycd72f(se+|>_M6o?6R8m9L%gomK5J3!Tfn;kqR7QsDYz9!7WtxyX z*&jeI=_?&1Pq$kepwDw|w=v_^t1cCC7~d;3&Z{5vIoFkS=i-XE&b`wumBjO?vWx?% z75@__;{b=jgUyhQlcb9?rWr!$nha(+iir|_Kr!+*0syo=Y5&>tM$mHZG!{_E_Cv@a zfH14~!&~o<(^Z7tw|OB_O+;L)vx~o@f4^_~Rok-oEUGydbpAzt7abGR;tr}p`n&UM zWfam;z?Ggy&jZT_bRgjC<#1vSExG!_(q-g~&Ak}~ zmNXg{T6J4USjwfvN+1Ou%GP8|UH%(g{-@ODg6UGq5son234_O@E6hLPNuhuX`gYjs zB-n7L|L-fj5(|^zG5pAyY`;_lq!X^C#a5K{Q zn@Y2xeE`4#pV&-)1e=MEBkNx4$N;GO(9&;$(xo`~XDFt@`@-DsuLZ?`=hAwRv;T<< z8X3olz9wVRkzFExTP_SG57~GOg)=b&kVLn0`-+J{AR~lyNb*p-n#vGlzTa6>AegC9 zUcm(2G!kuwJ}W{g;~W0RU4Jy+MkEYT@;yE4j$fe2+veI2kotn=KO-FIaK-^i2|J<}~qz4ewQy zUtKPA@9DLdmI3&-|Kz=&1pQMgTTioy8auT`vLs*=Cd%BB&-UC{R_rbnB17booh}KZ zkR9CJX1^Mf%fv{S9kRhdrU9#@%vW$ErXXD=oBP!U+r`xuJ$AqDt9Gz<0TOMT`KBof zD6QHShkM(7kL2{yBda1p>Fe@(5(#WED?0n#kH()&LpR!-%!$MHoXnAG!5(Im;2NU# zHCSPkc)ZFFTFfM?5h|c0@l8a{HmN{OZVhldm9x;*yDfg(u*ViMou zRyF9tQ)v&d%odJ=zN#zVNi2B6Nn!Aill%P+i!G7OSnzeL37^77mf;Nf8u-d?FCngL z!G0F_f)#sz?nPj7b8@dc5GJrxQ?=@uCzjwF2xE#0!*!3P<3t+`WlNx_}55R0#=48n?UGH_*Y1qtKE#==KumXA1q+ zN&#$#=d(c{e+X7$lTnhs)@f?I(|m&+=y#`h&Sq@#iPDw_Tn3hC8yPH{C>)>*4#)@5 zYkCB_5>NEI{Fcw8X|^qzffh=<=I^vUo%Zk0i8^wE=dpDf?6kJ{5bcR$LgD-zIQ!iT z%Kr6S5ZVSGA0}F1dzg@o4;djMf}u~7>s5_T7;4cLmyFI3s#7x(c^qP5m;Hd9&KK#^ z;Z_q>m>OSRUARa?xoh6Xj)qeiENMmrj(SkFJ}h9CKExo@JwV6#Sfn|zN5-EJ#k7u~ zVAj)R-Bmh#)Nq&&U)rPWaSGXnV}G~ljd8Tg^oC4rhhOIi0d;2&1_lzc?8w#kY(2M)0p}!elU5qojjU4Xm zQUX_2(MT(_fXxx31tBb!2P?_r9v&=lYboIswyt>&yYBR^;|Gtu6V7-6lHnICwMRj$ zUnmMa1ftjY-p&ti3wMHX{>d)oI~9RwL~qwl!~UD44F7}?ss~=R^1)|JTs5HKTJy+H z3WMxEW*ypcy#GLdmbjPk=|^?NTx;;oD(t#XS2LJayaKqWj|A)lLm9Uz*Xe= z%ia79T?<6|>B5(~?bIax4R@NO5P4iY8E=r91{6UEVL4!`EV193kwcM}j^z8%Pa0Jz zaP=nw$G*(BI@0DmifbwRE`3i$&u^hlR40us?iVQbv58b*n^9pet}IpHz=X_V7?aZT zh{|q-TeD)|Y@g9)pZSUyfts%Y^XSnqF!R6~4)N(!@Ls_T_!b1!d16B|F>ydwcb@6gHCbjv@q~f|0+h6sge%5wtA1ayiRzlB+Z^5bZ*n`&;h51M8sd zoPe`mY47i>spAY#Q3MObm`iXR%wulvRt2hSgUS&}5JKFM{FhdTf|)%f#z&f=Tei;& z&l4S@M99but(ZzT{)}QQ_{CWZ`2?>vLL>U0cLq#yFZvwvYV>@5$7n7E&|rF&{(D}U zHZ9q#_Bo4ZgwIVHNA7_aHVUnkL2&Cgj>riEmr>EvB*wT~JTGNbSv8ZQHVT`Y7}??e z_OH6p(9DeLFy1y1N*>)|{7*vp_y~Dla|M+=iBAuQi1GQMLHK?DC;}^)sQPA8ihE$G z__S{_ea%XsH8l!llyxY-9xdU_!W8mxb7?K8S~Zyt&2XWF){`Q!g|M?A z4FuJ9$wOVKGppr-3QH(4JwUOf-p`Vz{8wBlQT%Ai;ubIET5}{ipw9rK?0ay@OqqC` z?V+ia7GUWK&WZ*eV1Im7*6+dDpNOA^-sjrikkg`(WQ`gE5d@QA%vm8e3~NG+pj#{{E;ivbObq&j3-@a$UVj(ABwf ziBKhMVTpUF9T@mmVpsN6VYt!j^HKlM}jon}GxUD4P2pe4!Y0 z%yg|u+K~e{fD9I-3T>F5sgrN7lpUu!UVw2)w8c<#?vR_zB;<&lK1AYP*J5k{9KuSE z&0hUs{YE+5jSx*%jRM88a=oLN(~vZHv_aJ~8~bzbE^Ne;@5R&EGgs~7HGO@)W0$7` z6H@3OOi=Fb7osUzJubwwce2UO!B+E2S?DW;hu}CeW7>05)#lqjQb(`p?~Uc*UE=tl zTM6pHxKx9VjKLjT+B7$x=*v(N$kw97=^(&=+=7ddhT#_iWB;e{m8<|V_upJ&ToD}l za)rcj*z%E)Hi?P5ImCXI74cyvacH<6#j}5CW|Fa+01J z&fu82Y^cg?K}x2@BUByAek)W4_qpJ*dKUln1<`F#KF)+eNr-v;3xG4aJ@^euwk`*z z+YgTxN(M4|b|s^1{pTb#=mU?a5}byIH99dYki_P!&Lsb4RS*q69oSUcQanuR?m+(w z3y8t5jnLc2XWL2&M_Dorx37*MN9w_aKU;nf0>-b1s#LGE+e}LNomBWb>zw(UBR;Dq4DSHr2ooBBz2BvX9eR)Rd zNCQ)js&^b1Oh6?)57z4KO4|D*}~_gRE$agHt)yGmK3z_N28?kzmH` zr=F&sndhaxHKST*$(1(Af|{eZHBF)^;z_?f3D-pfv1;-~F~?dllsgn%{zY&F+XVI8 zo;?(E3_A@;j`R5mtxFRC^)A|qWwjgZV8h62*G5?Pw5=vqxN4A_#J;5M+@S8n4Tc*} z^1kMvMwPIFpo_oN2buTLx^Tc?nIO=_94VB1t}Et{^Zj=QVCV4*l(N^0jgSyMHPZosrB+mBCwGBB_t{;#I942$Y} zzy2AzQ@XpQySrOT8l}6WyQD-Kl$H`C6zLj3O1irn1cq*S&iD7f9$w5VuDQ;fv(LWw z-uGIcwfkP8))6J<`KU4LDlsXGiZ6B+x^R)X_3v)TlDID)vW&Ojy`IT-+WNCd3z1=1 zFT*z=C>R0mn~l5SWFcvDH|LOzp3&}83mRB0_c;(O+=6`{>NavbFBrNOLz!!x#9^tM=+${vr<{ z7lv*R*YKQUhSxvITh~U(=9iWw0oSJIXRYQNj{na4>I`14Goo{5LWGQn6|_rCjvdnL zbkqe9&EsT8@IF*jg6hBQ&a3wr=WawP$c@&KA>TVml7hFtZnq3c#4M&}balSRdQ{zo ziiaRAU)Y9TeYNqo4Z#l2L8mx*JAKhye-7TZ2eIR(>ZeyaoW2lXV#S#2^5#VqJ!n=~ z>5M#+Ax{T%i8l!$r6}NLsyiz1GZz`v(NwMZWvsWyj|AUGT55C&xlgiCo!AQJfyWWF z$rBfozXvI3-zL0C<%=t}A~dq^6Uy4fTPGI!at{yi=WT8b3$~!?vg*VI$ER+I=m6&8 zTS1+rX^V>%Pn`jH4cf}P9~v8=yn0HJs!2>incWU?yMer{}=t&P+Zu6W<6 zT+I`aJ1#kf^LdHL^N(KK#jro^ZDcPX%$`cO?~kjgjitBdyRJ|~1 zr-d4Twk~rKV|nP~jk`Hq-uUYG7ydixbzJ1l&^b#HiSd0N6n$^1`v9qH&%`g+xzk&5 zpxP~_&#_fn_$R6-NFWV@K)LCUZO9r`wbYh+CQ*ln@<)tR3Y zu(sSZCA&9pL4e9(zS53_*TM)pz#Hw#{TN*;9g88QsvxaLqH-!Bw-(6GYf*0o+uWnN zV|BT`%|t_3!_u*pTyD$yh5+c|zGn+F*p?`c{S(wuosUVKvA-CREJz75&McUB??6Y8 ztg=nuXd!!{ChKk>9B?qX>9y9)&f~Q~J_Tn%Tw1;5DL6*)lG)n^4+Pv$4m;_jv8v8L4Q6HNyPTM3hh-=2^V5+N8N32drHGLDawG@9fG?!xN_|nkG}*ruaS-jt6a@6X{N zL@~Rhl3{AnuF#Rx+2obeLQWjS-;n_o zhusX|N2ScT40kV`UVbtgX8ez_RX`5O_ssPl03a-tlW zzY=G(_Q8&(x1kJgWK(t(`?V5*X{7fiu>N=6yj0L5oOS_)>lpEq%dx+ z2}I&2zgj6Zsu|4wAu7INj-|A>=g6A28l=UL`Zz`VG+qQhPCx?c^Glv>a_SFgoy?kX zgFC6*w6q3ik*RMmy8gD-YN?^VuX$#2zTGzkbv7~C4(J|8Qi6)BzOPoVw|JW2LRrX7 zppW8=N8iw-CU{Friw{Y7xV~Dv<@-k2PRAXOOiYA}5`J6&T@?@D{d$g`{VVx1gRk}% z$6qF(qj*y1X6aw8*z={i^0&`?n4sybZd6&etQomP|7FfOFa+H3FihpMI-potBV{a& z{X#m_kc4;}){Oex|5p=+m1whtqHpY!bn>(JLwvDYnpaYP-u=kfR4%9-N2yxu8S zCZ>yhW=r!AB=+ZlGv%gQEM26|2q1M|u8^Pqy^p|dKXBRVdHJUH3bG%eEtl8u@@$d= zyk`mh$hh<4d7)6a55K8TN#S*x!u=B{>ex6nL@g!=%}9W=M+Cd-YDg9z(Chv+?4rsm zn)*}a&-_m1a^8Aj954oYXMGefV|5Cpm{1VZ5DOhy3sunMYB>?m-qga0N;Bw#_7`ES zCj#Rq@O<)9NB3~2oyv2KNB^*bypQEbM*ix}e~&*Z^oRGam+`F{tJ|n!yN63*yQcT> zfovkB>9hmO2zmV}(faK6cD)OL7J322ct*9fO3J<^ivj@Nh7VlI5=4ZNq~v#3 zz3XO^pQe{`iTxjEiXL!ev^f2F^`RW%HKhh2zxX?GD}+aLm(j)@Hv`O~U9a6q9HSjr z`Bt1vib!8oNQ1TxFfi!g6}c)JY4%&Y^Aai&S;s#@T}@A%WcGpw&@lKc-u?tW$1nQh zXDDtN=vq{y&T1v{$X#%a!pz|cATA+OafmaB6`4?5HtV9)Id8keB zc@MHalW9Ke#3GL%f{NJi`!^1trQq*uPQ`X7NU3z7JPy|{H8nKG%wB)*daC|PErqt= zf$H&3+^_7AJL1$YGniYB>4uO6rDKtVh`E*M4td@QuZ0Kj{#)hnN4ZacwpKf-rZOBHK^la~LQ&2OkLPkW{LkYbYDs^I167E{2ib=>U!mkCz>fm+LB)Ea4{& zB7A1QA%z#SUE-}ICkrE53?%0#bV|n(=heDM&zM8dxqJ8R{t#A+``q=ejz-?n&gvs7 z)vpr_Qk#Ih)e9L)AJ*n?&(}~?st2nY58o9n0SKMi)r*TIZ0 zI8vt$w5RdH=oUlE;%IAV`$^$wz#&VUETyiVSVgu@kH_WuEatRuj<;P{9X@xstgCys zx2aURn@@xA_KRznL+CqY4Nj=e@C%vgSw+<|RA?72p&xA^dXhhqPV%0v#U%)(o{2;D z7!ZT>u44XF zlpVW{uu)^vbmie)a^znG1#Ef2kGMZft!+{nQwK4==67Y ze@^UDC9K3!T{%7iI9m_=Fj_(lnTa!p%&Jq#(itjZ+iz=gs}CiaISL4@VF43r)44xM z^LX{U$cBSZbdUpRDE6ZSaI&vw!vd5=m(guQG5z})ZUHwTi3H7)`&9dT{N3g&GET|% zG#GcDMOAX#%2>c7Q^;1#OZ?rb5jH@qe6XL$LafY+qUz5`s)Z4p+#6tX%gxISo^X8o zHX4-|5ped*JNhTNC#DhalcY~ukKz9r?)_KE{%m231JE3NLw54{#c7jC%%-R7rL(i7 z5ONS$VCen?pM4A_S`{JWICRm~+FglmQ8+BKQ+A$yXnTw?FRH31cueRuoFIk!vP*m5 zB1NQ&-DjR}Zzm(Q<_p^zN}{@Gry7fLZoQP8`yO*|MvpH<4AnvE;712ve-oI0gG?3{ zVK~F(`w#GGb2r}}I77<*sMShEAz&+NyuP30|l!Hi(J(I(~_A#(%QrBO!j>;`yZ(+K{9>kL;NqI zd569))|_urZc~%oRZlL!(*%hmjn|~7?m1F+m9qP31Tbq_J+*wNlpFP-PGZOtE)*qDvVB z-mV45@t=xfF9qO}bj^9e$I9VF{6wHPV%dL_<{4B(_F5b2UiWq!4+n%Q*2&P${ze`@ z+&lZXm9+kNF@{Xe%z!+PUhwXC(fjtgaYQ1rzP`S}1ptP>@K^4K-9J1`OutuPF?b#l zhYcHYSyzTcWcs{0chrh&D9B1Jctv*D^YS=kP^fNgA=ziT)?|jdG{8HCKZ6-_$c0DO7x&1Q|(zSFT z;hthsQ0WT9+F4)StV-cHiI{`YQR^u?iH6g5Ht@3nzJd32RDbBOB{4z+sS4&kZF$_l z?E|4pF0GiJyTc@zWL$MYgrCSy{^Sg~$UP|UsSh5WZlb(}x6)pdBy-7=4oIxDXsytF zyjNW7eb*R7M7>RC^Tp?i%O$<(yn_t8t>xtJR}`8#y^B9N)b&ShSg9Ifv?j-iHZ0CT zK;D*3Sj|<$uuG^QG1o|+#m*g4#^z_NOB-7J!JeQy_F%oIf}S%=llncHp?^M%j{u0n zgIMesW!gka;w65oYh3$4TLa4V2+4RVk@yKP`Xk(EZ>1EWK#AzQ4LnO``J2$5C?_c4?f+%rLuy1_6=dl5`9?JNy zvi!kzQJf;7s@OHyA};yZ8EELda1IWYO%?--!Vn17^KP^`b8^^T|4{S$Z>$0ndU^99 z&&&k3`@Y@bGl2SEL=_scKXlvCD~$ z*AhIWM|-{4!nnbG_&@kllCgmCMNQD*`BGSYGA!{n5MkqZjJ9LXy0~R^@IWyO8C82(y7;kJadp1PX=ajGyDrJYT;f}M>ilTCSC?UNLdX6hU4~%% z7J>nR#suH_eC)uv_P(+neuiD!j$dScRYeQp26tGRt&gl8CuP+#iC^VGqgOWi$Y0Se zqVO*tLu((;;|8I>hq^t)t~iY}yO;9dfI!e&2s_XWLX&dmsZAsMtd3yz;b90zEH%^q zFNi~p7*%_5+T^4HQN71C*Spi!T+z{m)e%ev?;Lo!qTj4r8P@HT-Dr<<%!sT?l7cg5 z$Z;T=;K|EZqjlM=Jz`Babq2U}#*g=al=@tc>bYG+Vn=^S;!hMw3;j9q4@*89_*s|C z9v6jg7)YXXib0bRt$z!vFylsKwm!zvlDn9@;MfQTW;=L?M}MP{k&yfhdQn1^*osWA z1mO{gp|Y)Olw$_E++PAm)j}e4ej~-jAm=X=y=MNK!hbJUA4yeS1P1^ORo6YeZ(}HA z-NnRfiS}IE$*_Hnl_Y;}KY+)^!T0mT=I3O9(65o*y&U+E}t)=&|v(AVR$x8=CLD- zUO&|uDXX36?#4omxcAQD8NcPA>cal;? zC!@r-K3(v%`KA>9P4XqPz1MumG~TGl59>erZI0z#+AA@V^>|4<+G zbD18A)2u#JRqh|YjE@$EvvmHVclMF=8ag~HHQRe9qjNh+60WHs?*av*IBr8uf|jgq zA)l)-I0Jvar5oiaPKUmnty)a|QmyW8Q{PqU1b-FYuR|d!C>cu8&kjmVGfGfI2m;G% zAI<_`r!P+wpl7Ck@(Gy&{pCLq)n0zfk-OH``&BZzl~|(it6Lfbg;w5p%wr+nhdG{a zlYe&*)Ba-oK8IwO`g7=;-yS%uZjyt<4_`l9O7He0&cy>;aQuZVq?7qsVPGb_t|8a# zGv`(V^><@FVt(6MY+P|*QCMDhVXR)fKnV)k=K47t)a_wVv*vr3iFF)Mb;vvay^xAA z2NqzeF?#BEk&TFKe#`5nF2D6p-p<8I%G4P%9MZXQ;~%?^w{hj~5q#(&F7RbmCTS*)w)y@I~G2R{M>VdS5;r`wb28{Ti!q%_#g*2mH7yq~JQT4(blxT|RI4 z<3)WSror;1nnJ%UH%2NeKb#bc75Bn|@$r!mfJ2|_7Ig%1;~B%up0hh6YMgMPqX92u zphOk|bljFyx}U|2B3n=qvfCiOZ-tbt_+r~|m>JCk7%MkW0mD_EM2UAV&m$7#vAYfO z1_W2AXJe8NP&sin{6!*r)~U!cxQubh z#PZ5KFd`b2Eg%=xXUAFdwAstvvn-lS5TT2x!m=87X_3zt&ZKa?QDSHiOHcO8`>B*| zRwEs@)b$2sP{3i|8K|PcIO6aBkcu0<^={o%v{G87wDO4(d3+n3!S==XUfn*)I6Foo zAOL+k5n59TtNpIBH*~vcmCf-Pn{%C9Wz!1;Xw54wd;)~mtWTrZu6=XW&v+olmFjs0 zz4)!NG;etL)@O5;&Q8&absyJj0w)8VK{m6e!~50>k6-d!EIPv31QGb)#eSk!sO98O zI6enfV=>ckZ)L#5w&cS@Ox+-k)L5sDy>{v8YH`rikiT`~2};A+!Q)|E8FgNi{s;%w z)w>C%&mcgAT2OZUHLFD?Mb<|-?WtKTeq50BZisqd@M9dAOE%c2b2Yv^NAQybVY}zi zoaTy{wE56}d)_`aFc~PtTI*Tih!_{9gQl#@#ms~=L61=}I81!vV+FsTLA(EEOFk-h z$M^5YykWl@S+If`_n$reSz@HHYqvh3)?t%a-xVo_8V(W&BIkWD@S+M|O*9;#4~A{qii zDQJB6$7#HVziN7`GxUc%`u`9+>Uq~v{T4gsZ4B>I=w$Jl?n5`?R1gZ+a7C;-KJIy4 zPqE1EyB+vE%K3Q5YcVmFy@CJXq#}2E6GC}kQxQ+VukM7gG9<4>&1qR{sSo}`H;v-) zLSW|%Z-OU5wCt^Cs%Y-{9X5Eq7Vh=Mm3xE8;fsfoJl*HqP&*k@sTj073u!|Z-evKm%nBl#mRNJ$IwLNnZgKD7HnB0lwX>*ATW9|GYB!K=G% zpPNC25VbyWV`Mb6pyK!EOEoW@SLXRJP8RgkRl2)OMYG_;^99F@^E7t%`#j*Zo9bbW z=VAx-0$$5sGL$0yk;~;pz~CvNhP#L;VIT3RQr=>N)NPg8Fp~)3w?(O#r7&^D`_lfF z$Mwhhby@XNc_=!#Fo9+@ezrE!0s?C(!TJj>HKHp($-$p5jIb+S3uZiDa}<^L0Py8| zMUJx223Qp)77m5b6POHD_3q5Hws@zxK7vzM_|O{i><%JTIVaoWe=nczy*oX55_I#% zYP(+1qMWCtWY zCFNIVV1{e@e|CCNmpeHFe4xGRwo$N zGrtp->O_b32Sk(`Ur985*$cm!3%yAUuKxfMnygkZ`oTa@PZU2>Fg}2Gyd&$f?Oq7H zGYzgw8QO5Maa!$zc#nG&0CT9og@{m&g=H?)t>W2&sh?l%wGwJnOjqt zE1BUZN2b>=n&qqp%RbbgGBLlkWXo}OExH1_!t(_~QOZ*AeJYq7iAW^m`nGl@81}rF zVDa^#i3Wje-602&Sft$2g$V;bnn)chbf*i=1$0W57lvKT;K|0xrlul5AEdLUP=?yy zY8xHDviM(2Q`ZK6{3>q#`D%(%hA1l&)&~o_)pfHzLTMzrsZXxeg zLV7$9S3amiZfyP|wu5O8ZYS(Mp*T1+Pk!v!G}Dpnj_Yz2f6W0U@r}q_U3EMjkT^Y) z#_2`rdm*6pjyLozc+3%UqOxiJ8w;Fg7$*Rma&Lr>iM}nl_n$H^7A0ZpOLl`FPfJbh4%;%p;Z7@s#DaDNOM5Ny={{FZ%g_7Cs1VAl!U9p4IopR(0(M5A1yZwblHay> zxMZpO^(m9l#1<1fvN%CRtG$N8Jjp7eDNiRC$Q(wTaQeJaiFkCLH4E2o+Z~m#9$u(K zVgL;vWI`!uLFVAYu0g}i z$l3;SNKbr&Fc7)b)$+vki`}o=ZM{u8l(cjcTCQqgL}eu_x?y6brT&vWJbijx60&{) z*h4I{uD(_aiOn`x_FCLuFKG%&BKzpbzVL*m1Ait6UgT(}8$vxFXh3L6i^q}|YL`DO zY@(Q4b>4`~px_lL{OjA5(J60J{zN+?Pb7bzHWYpV40Vgfh4*j%_4#g{Yy zpbEu@_#1(R%N$}k3Rn9oavC>-2|N^{bgy{zUq~3xAMu%2>OfIC>!<~*^GelWKQlWY z0tS_n*>*3TQQi{$U^FSf3S3-nEMojNw-s%e`L!qi2n``OhY--c6_?p*e?&~e=3NV* z?0#BNDou?7D@?Slxj#WX(J=hbFAHKM_Mu(oFwZdwGrLvKrRs@F+tBk!{oapO4uk_(cE?%FzV{O!$^p z5g7^L4y+i$_8tfmkn*3&I#=jHAfkgtTZ^s+nu8inS_P0oZjV=oJ;c00;%P%EfmM$h zP6qEcA{R-pDtGVV78a4^2&S>!8rAF&U8jY|*lKOD<%yc3Vo7*YHLPBlXFvS$5Np4j z457_53FLljY^<%T3;$`0hovW0=~Y>-J5qxacPmc&%hn5aS>R>7@JXmN%b^%K=~Hji zORp^MO9; zgp6dRRH4un@V!($5w0x7M5!A}`N04Up0bz3yec4;63ER~LPvtiT#=oUkENN7H_=pY!MUH;h6 zjLuUtRPm`D-hJsNLkA8hDC2;Lg6M4y0fe5?xgc(NDNOi;eIyJDaE+L0Wka;aUQ(c< zoEkr_XIu@(br<(f1Zh(M6ViQdAq1f}B}?v{G-d`HeUp|`Qe6)q*6khtUGC<(?v3R` zyX3HT3a?GW)+4$^WW1!81b8H-ZD0`7*VhN9Y5_JtnlA72-#xea$$LIP9yB_jmlt;z z+*JgCMGeBQ_=rBfPppam^FYQc-stF!dVMnl(N8_6?$)f~VD$9;w`-Cwpi(?f@%iTg zvT0^22#wTQCLL(YLy=WgupD6FEgaCBC(1u0Eobc+A8vtXqqi4CnQk*T>HEQifjmmY zBaG2-``2bx=GF-@;Id_9JpxnSys-|h!u~unf|RUl6*=US&+`ZKPY-_rBAT`%_BMmc za--`V=Ze~Ayx=*X2V$mVHPtIO9M|qhGHRBzd`)sUyBa|bY%z=^`=lFNjTdhmtC7<0 zu2-|ZDp*w1h?%+RC*5jHj}CFcbOd)wSWI5CqJv?8OPbC-#L<|RkWPK%8^d?AFj*NL zbk;^7b!Utbap8yFs2a-$f*PF2W>VfFvPcd*Qzcs}56VuGVEO?Xyf8kd&P05RLyZyCQF62%t#YyhicP?lZ$d+yUMpTa>*k#8Bx5 zuc^m@IYk|bCvW}VS=!9&miuedHwHv+L-z2)Tcm&baM_FIp>c75kyZ_rR5N;ZvCQTA zUn=?d2%=M19dHe~y+Kri_G)y>F9tfcu#(^Z%@wg0LRbm=EcUpD4|S_rpC&!w^2Y@2 zD?6f)IFq#U?kLF)dsoX&`v3De%7s|+W#1sVKTh`UAD;9j_k0r<1}o0(cKu6S$ybSw z$g7m>cHsWNGH*Xq;wfq-NplhL6TD&~9KZvw7_5qtEz8m?@4A}!UoUt20cij5qu=!L zDqxOmaKJPBYqy8tZztDqQT#b24!t=eq5Jcu8{E`C&0RNyJ7xX_ zaD^c|CB-lN4M(LJSSV>O8TN0z$?!x}>Ds#h$ySWhYhxfje0(3DIzvl9q=b0!iPg;i zpR`xUSxyyCZF`1Mf8iCpx!hCAu8>s&xgHvz)JS+l`b+^adXPFbZgPKF3k5~v zevt)BNBt?*L!N4HL?xg-NxNT}@Xu0Ipx^l|K!Xf}=|=~s^2bs7r)7eg>+FC7yp6L@ zgvfrrHr*URt6nF$+$SlrlkTwGCAZru1Mc~i*q(>gFurADzJG^by~*E>K4QS3>$_q% z&10**M?Z~)YL@{3@4MrWY3PazCXwC{8VIGR6Kb;BnsqXumShFCSs|ac)_r!WBY&~e zQF69V8dzZhHfS6(Z}xS_qf_80$`l%|FC8(w1v0gt@;_*L0CewBiBaUJTTrKRdh3#c)>`Any z?g!9~+MigqU=s|sh1m_8Pzqb_bDmlh@IF>DgNZd7X`#A~p>9Ra7@%{ZoKZGYmjv&Z zPOp?uoyx>Lh9lR$ueKVjPTQFQid(Qc)N|@4XCMH&Uu8}KAEmQuWXR*0Z_q)FxK4Qc*aBi(~wdCep zwNt2lj)=a9gz6FZFlf*Z?;|Z#+ zd$|bNplr3}7chc{J1IYNDxigy=eebBO#suxpjh-NY2`ZmfN#@T41^ZM{hw{MXd@GY zq1kPJCnh@D%)C z5@`^G)=wJ9?qA?~2@fffC9Qk1gPE|1u%<}Qtq`yJf{03sNlm+rPSWOXJsa3?Y4h>;S5acOG`MP2{s3J7IDZeEr| zALc7YMLvb(?+NeaJp{X&+p`(YcDHCyHz81z%D_3OMcZr+Pycax4wKCkTFAk(os^>> z;Z2eMDA(vzo~>Y&2H`35V&vW7w^Tx=6Y?`vEp*Kc2rwUAy14B>W;s4?u4!-leHobY z4A~o>TzZxmJG}`A9&7IKN+j2;@C$&4&KDQbC;1#!h0(d}6X3&rUd8&BQfURrSC--R z$bg$d4FqZPgXI@Hqs9KN-+doCBN`GVXni#YMg$&@24_4S;%jhnFbYsA^s6NoZx>u8 z_AiiY+uEH?;0RGi`@I%CK!uo*Yw9W^rnfJ@Rq)5XSt;J z?klR7Ir*~_gXw=&_ux8@6^J5_l=H8me zD5T&HuY6pOdD-8mYsZz(a^#R#%167V9KZTQKC0*}{pmEHpAKahiI?KFiBK6t0)OPn ztB+-G5)KFa(SDK-7Xv@iC3yFlx>3;bb}th6kuMNCMiEC%lD01EaUYn(R!S(IW!w<7 z;2cG7qFn#bx@s}1`;#V*Q9;iGPO~S80JKxgdCY!#KKL&#Z{(2D2}2D^VM++W@~pm{ z<~FY+gafpYUqzF;K9f=@X`WNG^5r~v3nm_iO>`0MZjy%xgI`TcaYU($B-s%xT5|b) z*zs7^xVE6dMnwQ99tsa@%DW=sS+huRL8JG=($hnC;oB|Bf&2VDbl7kL;;LxFLd_lb z`76!8WRDM59HVP$>)SK94|hSsV_s`miojH{^H5%5YedotIK#lCAOWbbqT1F+ z`a~9KlYOm(C>ON-QdH2PP10t^l12-#jaw_MXD|~pd}d)e!Zojag~EIwAzl4*$wv~k=}nt+eCrSo#!YI|npW5#FT`!aK%o8?MTvgNS`|9*v;SWC~H zXarhL)luhBTUCT9{gwNh6`Yu#B+3FL4dcAAYcaQ|`+FgWAUO{UHEeOf^s{=Pj1eQ4?qia+9w%P^UT(z5U%Y31-T%36tP4f>pYDFVMxr_KCxBJyf1_8j zEf-JB%BQ`M6)-O+eR({~gaBiYXTGyz)>-7-Gg5zXi1jdu;j9aF;4Bc_lrhlg-_5E@m$*z6KSbhaS64pBxHP=$@VScb#f4&wcX+$T zjN^^jj$#7Pn2?pQedIE%`>&D>8-wP@oVQ$`9I}+`7}R`62)5Y3ihpfja!A{9E$c zjN5VgT}zUrDLG`A+S&Npi5@CYDTyQOgAf$+Atcv7-1YA3+nB|UiP-2x2X==ais_B8 z#=Zuv#NRkxsbxNprqDq|j8xkZVh>cP!>z6gjW$m(xj{0DNkYc&ilqsvDK4DEB;+7Q zgXhb~pUG3El~t1XgY|aDoUNyxlaB{mDC=0`4c21{GO+2WT+PRiM-GC(^bdc#S}<;? z&lWXnvn%BuAe^2}qlXv8;LT;oqIHh=1H-&+H;b&CbVXrRpWkFtw6J|g|9z`xLwmU? zz1xBvi(gYbm9*)8^o}B_h66Sw`YMbr)Tq0gQ~XK8cj1fXlIevK0%rY8c_mii>wUJR z?5CSGe+rcXwEWv)BDU+G0}~78>UY$noI>jyYNijZIBk{H4K}AH0jtj@U4FFV>|Kq% zy{d5A-w=v~FWye#G)+rJsy@jc1VqrVW3ZqgKBC;W!J1V>g>RpmJpnBN$RB?EBH(IsRkeTyA$eSg1aE~J3(vqGI$XQqM8u9Iqwr0g&&2=a z4fa6mGqlComEF$4;SY1BFmDQ9?^LX%&eUf<)TYApSIZv^AylUi>vFPOj}3Ky*Nng+ zgZozS)WN;EJs&^CQTzfyKb;jJzHke9eC=vU9T>kH_c5zBesWuQ85`a?;r2Q<)m6XD z8k~4HiYEEsh5-80SK2D&&u?**zWk9(C0Z=j=RRrM9=M@a&b_sbDc&r7jx zUGIKvwma=Fwk9agv2+>L(2v5NYI1zSgRa35^xDdKucNlS!oI_OC#1@wsiXHJ)@y`9 zs^p0JVDKwvgAj`D{x#J6z$smY2O&FHmn$yj(;QY7`! z`?%PMmXCZ-tB=w-ygTOpz2K=iG2rZLd_HCr@8P}o;Q(tWQeNf6!8~=VhTdXdWo}m& zo^S0PaTRV=og38Te%)|(oA|2G#P?5{+qts=kM~4zn_Z9eul%VMW;JTk-}y+5Gm)-B zEZ6Nvdkyb8bl02~_H0tLS-s!TWp@ndhP2S+o>OoCcW97*&tp`m*K>)@@+qBPzee{v zj}@YJtCo+wPgY#vulyG*rd>joW6sFK{DN&GPQji)t|wwTpnoFeE{U#=l<3fN&O9P_ zxnDw=(1a3sh_fAS(MP9+D`{yYp~kUyL`nw~8Lwy3IwY&kdr=w5flCucssvO$l!+T> zpM3SO^!aKE#j~#uR5K`_&sMYxb~t|4$3J_Sl98D#?VXS{5UOF$aN!VR9DQ| z8RVWbmL$rgl1F>Q^@XPTwHfYeC=w0} zWimi%gT~>R*C14U0&NZcRXo_ldyTCf3AJ`*xxe#S<__r|$ToGdgoEaHyCOy_o>utP zU)LDQgC%lP6Fl9;DR8)4@9z4xJm1PP@u)yECZ38?sM6(`#8YAmu1Gn?J#XFJZTD0%c<_E9Q zFZ^aRK(Z$Vnl{bkE-VsPiR=R$M=a@Kp>+_8Gl!dec+2j6NSY zqv!2=$Qc#(3_N#5#guqZBo9F1#X2IkS5#@=__{a2ZGC4IL89*tvR!p`o^FqHjB%vV z2-%_)KZmY?N0;d9pxu6JI{ScRA?L~ihuAcGPJUD*5uxbF=bqG>@y>0}WHFJ0T2x4(j1Uk?qf77om`Q@XiL}X^(0h07__@C4PNzE9ltlWc zpO8uSeXnm<&zn3?XDrPmP3-^cKQ~uIR`>@d`7bT|&rP)D>DXXX5=po_;>Vz_s`2gr KX}0|?PX7Rl&wld& literal 0 HcmV?d00001 diff --git a/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/resources/resource.h b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/resources/resource.h new file mode 100644 index 0000000000000000000000000000000000000000..5ecd01e057f77f8bdcde5bcd5bac41ce58a8ea67 GIT binary patch literal 916 zcmb7?-%i3{48_m2iSMw4OA`^}3(SoRB23~K%GDy184MA!G5^H)>guoGBqBi~X}Yg% z+S8tPpC3&%^@c>cRH{&I_0h;#kpgw_V!b1WIv}?xPd!bQsnA>{nrlgHNUT()Tg~tS z9U-3XHPItl5MT1%5t|ap$g1!r_&Jdo*6~`01gtuHtXFdSu3JW|M6Mm)LJRzYx&pk_ zboMqJvf)~94-O%kq5&);wTSH_EuBzf$g3_MC=#FN`WMYP1r*-*i2 zlRWdzHP!=mMsB%=SI<2qzsB?A!#dVLiJRW8)1m7S1{d5UbhQmQ=3xI_b49LCw(;(2 z1WL@er*k4*>}~r>zk8?Dv~|M_sSGEkCcz4@Qzr32NU%3|Y5O|;H?rNNhxl|0cj9_F w1KFg$#^#;3&0Sx7z|_Wf*VG=U`(f9cv|H@Pwf+43Lk+HP7qiRN+yCu<0n|}{`~Uy| literal 0 HcmV?d00001 diff --git a/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Args.c b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Args.c new file mode 100644 index 0000000..ade963f --- /dev/null +++ b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Args.c @@ -0,0 +1,246 @@ +#include +#include +#include +#include +#include "Args.h" +#include "Errors.h" + +typedef enum _arg_parse_result { + ARG_PARSE_ERROR, + ARG_PARSE_LAST_USE_CURRENT, + ARG_PARSE_LAST_USE_NEXT, + ARG_PARSE_NEED_VALUE, + ARG_PARSE_SUCCESS, +} arg_parse_result_t; + +static arg_parse_result_t parse_server_address_opt(program_arguments_t* program_arguments, LPCWSTR const opt_name, LPCWSTR const value); +static arg_parse_result_t parse_server_port_opt(program_arguments_t* program_arguments, LPCWSTR const opt_name, LPCWSTR const value); +static arg_parse_result_t parse_process_token_size_opt(program_arguments_t* program_arguments, LPCWSTR const opt_name, LPCWSTR const value); +static arg_parse_result_t parse_exe_cwd_opt(program_arguments_t* program_arguments, LPCWSTR const opt_name, LPCWSTR const value); + +typedef arg_parse_result_t (arg_parser)(program_arguments_t* program_arguments, LPCWSTR opt_name); +typedef arg_parse_result_t (arg_value_parser)(program_arguments_t* program_arguments, LPCWSTR opt_name, LPCWSTR value); + +typedef struct _arg_handler { + LPCWSTR name; + arg_parser *parse; + arg_value_parser *parse_value; +} arg_handler_t; + +#define ARG_HANDLER_COUNT 4 +static arg_handler_t arg_handlers[ARG_HANDLER_COUNT] = { + { .name = L"address", .parse_value = parse_server_address_opt }, + { .name = L"port", .parse_value = parse_server_port_opt }, + { .name = L"token-size", .parse_value = parse_process_token_size_opt }, + { .name = L"cwd", .parse_value = parse_exe_cwd_opt }, +}; + +static arg_handler_t *get_arg_handler(LPCWSTR const opt_name) +{ + for (int i = 0; i < ARG_HANDLER_COUNT; i++) { + if (wcscmp(opt_name, arg_handlers[i].name) == 0) { + return &arg_handlers[i]; + } + } + + return NULL; +} + +static BOOL parse_int(LPCWSTR const str, int* result) +{ + LPWSTR end = NULL; + + errno = 0; + const long number = wcstol(str, &end, 10); + + if (end == str || errno != 0) { + return FALSE; + } + + *result = (int)number; + return TRUE; +} + +static arg_parse_result_t parse_server_address_opt(program_arguments_t* program_arguments, LPCWSTR const opt_name, LPCWSTR const value) +{ + void *buf = malloc(sizeof(IN_ADDR)); + + switch (InetPtonW(AF_INET, value, buf)) { + case 0: /* Value is not a valid IPv4 address, try IPv6 */ + break; + + case 1: /* Value parsed successfully */ + program_arguments->server_address.in_addr = (IN_ADDR*)buf; + program_arguments->server_address_is_in6 = 0; + return ARG_PARSE_SUCCESS; + + default: /* Something else went wrong, there's an error in our logic somewhere */ + error_push(L"Error parsing server address"); + free(buf); + return ARG_PARSE_ERROR; + } + + free(buf); + buf = malloc(sizeof(IN6_ADDR)); + + switch (InetPtonW(AF_INET6, value, buf)) { + case 0: /* Value is not a valid IPv6 address either */ + error_push(L"Invalid server address"); + free(buf); + return ARG_PARSE_ERROR; + + case 1: /* Value parsed successfully */ + program_arguments->server_address.in6_addr = (IN6_ADDR*)buf; + program_arguments->server_address_is_in6 = 1; + return ARG_PARSE_SUCCESS; + + default: /* Something else went wrong, there's an error in our logic somewhere */ + error_push(L"Error parsing server address"); + free(buf); + return ARG_PARSE_ERROR; + } +} + +static arg_parse_result_t parse_server_port_opt(program_arguments_t* program_arguments, LPCWSTR const opt_name, LPCWSTR const value) +{ + if (parse_int(value, &program_arguments->server_port) + && program_arguments->server_port > 0 && program_arguments->server_port < 65536) { + return ARG_PARSE_SUCCESS; + } + + error_push(L"Invalid server port: %d", program_arguments->server_port); + return ARG_PARSE_ERROR; +} + +static arg_parse_result_t parse_process_token_size_opt(program_arguments_t* program_arguments, LPCWSTR const opt_name, LPCWSTR const value) +{ + if (parse_int(value, &program_arguments->token_size) && program_arguments->token_size > 0) { + return ARG_PARSE_SUCCESS; + } + + error_push(L"Invalid token size: %d", program_arguments->token_size); + return ARG_PARSE_SUCCESS; +} + +static arg_parse_result_t parse_exe_cwd_opt(program_arguments_t* program_arguments, LPCWSTR const opt_name, LPCWSTR const value) +{ + program_arguments->exe_cwd = value; + return ARG_PARSE_SUCCESS; +} + +static arg_parse_result_t parse_opt(program_arguments_t* program_arguments, LPCWSTR const opt, LPCWSTR *opt_name, const BOOL arg_value_only) +{ + arg_handler_t *handler; + + if (opt[0] == L'-' && opt[1] == L'-' && opt[2] == 0) { + /* Argument is -- only */ + return ARG_PARSE_LAST_USE_NEXT; + } + + if (arg_value_only) { + /* Previous argument was a name only and requires a value */ + handler = get_arg_handler(*opt_name); + return handler->parse_value(program_arguments, *opt_name, opt); + } + + if (opt[0] != L'-' || opt[1] != L'-') { + /* Argument does not start with -- */ + return ARG_PARSE_LAST_USE_CURRENT; + } + + *opt_name = opt + 2; + + LPWSTR value = wcsstr(*opt_name, L"="); + + if (value == NULL) { + /* Argument is a name only */ + handler = get_arg_handler(*opt_name); + + if (handler == NULL) { + error_push(L"Unknown option: %s", *opt_name); + return ARG_PARSE_ERROR; + } + + if (handler->parse == NULL) { + return ARG_PARSE_NEED_VALUE; + } + + return handler->parse(program_arguments, *opt_name); + } + + /* Argument has a value, null out the = to split into two strings */ + value[0] = 0; + value++; + + handler = get_arg_handler(*opt_name); + + if (handler == NULL) { + error_push(L"Unknown option: %s", *opt_name); + return ARG_PARSE_ERROR; + } + + if (handler->parse_value == NULL) { + error_push(L"Option %s requires a value", *opt_name); + return ARG_PARSE_ERROR; + } + + return handler->parse_value(program_arguments, *opt_name, value); +} + +static void init_program_arguments(program_arguments_t* program_arguments) +{ + program_arguments->server_port = 0; + memset(&program_arguments->server_address, 0, sizeof(in_addr_t)); + program_arguments->server_address_is_in6 = -1; + program_arguments->token_size = 0; + program_arguments->exe_cwd = NULL; +} + +static BOOL validate_program_arguments(program_arguments_t* program_arguments) +{ + if (program_arguments->token_size == 0) { + error_push(L"Process label not supplied"); + return FALSE; + } + + if (program_arguments->server_port == 0) { + error_push(L"Server port not supplied"); + return FALSE; + } + + return TRUE; +} + +BOOL parse_opts(program_arguments_t* program_arguments, const int argc, LPCWSTR* argv) +{ + BOOL arg_value_only = FALSE; + LPCWSTR opt_name = NULL; + + init_program_arguments(program_arguments); + + for (int i = 1; i < argc; i++) { + switch (parse_opt(program_arguments, argv[i], &opt_name, arg_value_only)) { + case ARG_PARSE_ERROR: + return FALSE; + + case ARG_PARSE_LAST_USE_CURRENT: + case ARG_PARSE_LAST_USE_NEXT: + goto end_parse_opts; + + case ARG_PARSE_NEED_VALUE: + arg_value_only = TRUE; + break; + + case ARG_PARSE_SUCCESS: + arg_value_only = FALSE; + break; + } + } + +end_parse_opts: + if (program_arguments->server_address_is_in6 == -1) { + parse_server_address_opt(program_arguments, L"address", L"127.0.0.1"); + } + + return validate_program_arguments(program_arguments); +} diff --git a/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Args.h b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Args.h new file mode 100644 index 0000000..a690816 --- /dev/null +++ b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Args.h @@ -0,0 +1,16 @@ +#pragma once + +typedef union _in_addr_u { + IN_ADDR *in_addr; + IN6_ADDR *in6_addr; +} in_addr_t; + +typedef struct _program_arguments { + int server_port; + in_addr_t server_address; + int server_address_is_in6; + int token_size; + LPCWSTR exe_cwd; +} program_arguments_t; + +BOOL parse_opts(program_arguments_t* program_arguments, const int argc, LPCWSTR* argv); diff --git a/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Encoding.h b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Encoding.h new file mode 100644 index 0000000..cbf4f2b --- /dev/null +++ b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Encoding.h @@ -0,0 +1,7 @@ +#pragma once + +#define WSTR_TO_UTF8(wstr, utf8str, utf8strlen) WideCharToMultiByte(CP_UTF8, 0, wstr, -1, utf8str, utf8strlen, NULL, NULL) +#define WSTR_MEASURE_UTF8(wstr) WSTR_TO_UTF8(wstr, NULL, 0) + +#define UTF8_TO_WSTR(utf8str, wstr, wstrlen) MultiByteToWideChar(CP_UTF8, 0, utf8str, -1, wstr, wstrlen) +#define UTF8_MEASURE_WSTR(utf8str) UTF8_TO_WSTR(utf8str, NULL, 0) diff --git a/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Errors.c b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Errors.c new file mode 100644 index 0000000..748438a --- /dev/null +++ b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Errors.c @@ -0,0 +1,199 @@ +#include +#include +#include "Errors.h" +#include "Encoding.h" + +static PSLIST_HEADER errors; + +typedef struct _error_item { + SLIST_ENTRY entry; + LPCWSTR message; +} error_item_t; + +/* +* Polyfill for vaswprintf() +* See https://stackoverflow.com/a/40160038/889949 +*/ +static int vaswprintf(LPWSTR *strp, LPCWSTR const fmt, va_list ap) +{ + // _vscwprintf tells you how big the buffer needs to be + const int len = _vscwprintf(fmt, ap); + if (len == -1) { + return -1; + } + + const size_t size = (size_t)len + 1; + LPWSTR str = malloc(size * sizeof(WCHAR)); + + if (!str) { + return -1; + } + + // _vswprintf_s is the "secure" version of vswprintf + const int r = vswprintf_s(str, len + 1, fmt, ap); + + if (r == -1) { + free(str); + return -1; + } + + *strp = str; + + return r; +} + +BOOL errors_init() +{ + if (errors != NULL) { + return FALSE; + } + + errors = _aligned_malloc(sizeof(SLIST_HEADER), MEMORY_ALLOCATION_ALIGNMENT); + + if (errors == NULL) { + return FALSE; + } + + InitializeSListHead(errors); + + return TRUE; +} + +BOOL errors_destroy() +{ + if (errors == NULL) { + return FALSE; + } + + InterlockedFlushSList(errors); + _aligned_free(errors); + + errors = NULL; + + return TRUE; +} + +int errors_count() +{ + if (errors == NULL) { + return -1; + } + + return QueryDepthSList(errors); +} + +BOOL error_push(LPCWSTR const format, ...) +{ + if (errors == NULL) { + return FALSE; + } + + error_item_t *item = _aligned_malloc(sizeof(error_item_t), MEMORY_ALLOCATION_ALIGNMENT); + + if (item == NULL) { + return FALSE; + } + + LPWSTR message; + va_list ap; + + va_start(ap, format); + const int length = vaswprintf(&message, format, ap); + va_end(ap); + + /* trim whitespace from the end of the string */ + for (int i = length - 1; message[i] == L' ' || message[i] == L'\t' || message[i] == L'\r' || message[i] == L'\n'; i--) { + message[i] = 0; + } + + item->message = message; + InterlockedPushEntrySList(errors, &item->entry); + + return TRUE; +} + +BOOL system_error_push(const int code, LPCWSTR const format, ...) +{ + LPWSTR errstr = NULL; + + FormatMessageW( + FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, code, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPWSTR)&errstr, 0, NULL + ); + + if (format == NULL) { + return error_push(L"%d: %s", code, errstr); + } + + va_list ap; + LPWSTR extra; + + va_start(ap, format); + vaswprintf(&extra, format, ap); + va_end(ap); + + return error_push(L"%s: %d: %s", extra, code, errstr); +} + +static LPWSTR error_pop() +{ + if (errors == NULL) { + return NULL; + } + + error_item_t *item = (error_item_t*)InterlockedPopEntrySList(errors); + + if (item == NULL) { + return NULL; + } + + LPCWSTR const message = item->message; + _aligned_free(item); + + return (LPWSTR)message; +} + +/* + * Output error messages to stderr and return -1 + */ +void errors_output_all() +{ + LPWSTR message; + int buflen = 128; + char *buffer = malloc(buflen); + + while (NULL != (message = error_pop())) { + int result = WSTR_TO_UTF8(message, buffer, buflen); + + if (result == 0) { + if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) { + continue; + } + + result = WSTR_MEASURE_UTF8(message); + if (result == 0) { + continue; + } + + char *tmp = realloc(buffer, result); + if (tmp == NULL) { + continue; + } + + buffer = tmp; + buflen = result; + + result = WSTR_TO_UTF8(message, buffer, buflen); + if (result == 0) { + continue; + } + } + + fprintf(stderr, "%s\n", buffer); + } + + errors_destroy(); + free(buffer); +} diff --git a/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Errors.h b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Errors.h new file mode 100644 index 0000000..ecb8622 --- /dev/null +++ b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Errors.h @@ -0,0 +1,13 @@ +#pragma once + +#define SUCCESS (0) +#define FAILURE (-1) + +typedef int RESULT; + +BOOL errors_init(); +BOOL errors_destroy(); +int errors_count(); +BOOL error_push(LPCWSTR const format, ...); +BOOL system_error_push(const int code, LPCWSTR const format, ...); +void errors_output_all(); diff --git a/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/ProcessWrapper.c b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/ProcessWrapper.c new file mode 100644 index 0000000..40548a4 --- /dev/null +++ b/resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/ProcessWrapper.c @@ -0,0 +1,790 @@ +#include +#include +#include "Errors.h" +#include "Args.h" +#include "Encoding.h" + +#pragma comment(lib, "Ws2_32.lib") + +#define SOCKET_COUNT 3 +#define BUFFER_SIZE 1024 + +#define TOKEN_SIZE globals.arguments.token_size +#define SERVER_TOKEN(id) (globals.server_tokens.buf + ((id) * TOKEN_SIZE)) +#define CLIENT_TOKEN(id) (globals.client_tokens.buf + ((id) * TOKEN_SIZE)) + +typedef enum _socket_state { + SOCKET_STATE_WAIT_CONNECT, + SOCKET_STATE_WAIT_ACK, + SOCKET_STATE_CONNECTED, + SOCKET_STATE_ERROR, +} socket_state_t; + +typedef struct _socket_info { + int id; + SOCKET socket; + socket_state_t state; +} socket_info_t; + +#define HANDSHAKE_STATUS_OPTION_COUNT 7 + +enum handshake_status { + HANDSHAKE_STATUS_SUCCESS, + HANDSHAKE_STATUS_SIGNAL_UNEXPECTED, + HANDSHAKE_STATUS_INVALID_STREAM_ID, + HANDSHAKE_STATUS_INVALID_PROCESS_ID, + HANDSHAKE_STATUS_DUPLICATE_STREAM_ID, + HANDSHAKE_STATUS_INVALID_CLIENT_TOKEN, + HANDSHAKE_STATUS_INVALID_SERVER_TOKEN, +}; + +LPCWSTR handshake_status_messages[HANDSHAKE_STATUS_OPTION_COUNT] = { + L"Success", + L"Signal not expected at this time", + L"Invalid stream identifier", + L"Invalid process identifier", + L"Duplicate stream identifier", + L"Invalid client security token", + L"Invalid server security token", +}; + +typedef enum _signal_code { + SIGNAL_CODE_HANDSHAKE = 0x01, + SIGNAL_CODE_HANDSHAKE_ACK = 0x02, + SIGNAL_CODE_CHILD_PID = 0x03, + SIGNAL_CODE_EXIT_CODE = 0x04, +} signal_code_t; + +typedef struct _pipe { + HANDLE read; + HANDLE write; +} pipe_t; + +typedef struct _process_info { + pipe_t pipes[3]; + PROCESS_INFORMATION process_info; + SECURITY_ATTRIBUTES security_attributes; + STARTUPINFOW start_info; +} process_info_t; + +typedef struct _file_socket_pair { + int id; + HANDLE file; + SOCKET socket; +} file_socket_pair_t; + +static struct { + program_arguments_t arguments; + WSABUF client_tokens; + WSABUF server_tokens; + LPWSTR exe_command_line; +} globals; + +WSADATA wsa_data; + +/* + * Encode a DWORD to a char buffer in network byte order + */ +static void dword_to_buffer(const DWORD value, char* buffer) +{ + buffer[0] = value >> 24 & 0xFF; + buffer[1] = value >> 16 & 0xFF; + buffer[2] = value >> 8 & 0xFF; + buffer[3] = value & 0xFF; +} + +static BOOL socket_connect(socket_info_t* socket_info) +{ + SOCKADDR* sockaddr; + int namelen; + u_long non_blocking = 1; + + int result = ioctlsocket(socket_info->socket, FIONBIO, &non_blocking); + + if (result != NO_ERROR) { + error_push(L"Failed to set socket #%d to non-blocking mode, failed with %d", socket_info->id, result); + return FALSE; + } + + if (globals.arguments.server_address_is_in6) { + struct sockaddr_in6 addr; + namelen = sizeof(addr); + addr.sin6_family = AF_INET6; + addr.sin6_addr = *globals.arguments.server_address.in6_addr; + addr.sin6_flowinfo = 0; /* I have no idea what this is for, but it doesn't seem to matter */ + addr.sin6_port = htons(globals.arguments.server_port); + sockaddr = (SOCKADDR*)&addr; + } else { + struct sockaddr_in addr; + namelen = sizeof(addr); + addr.sin_family = AF_INET; + addr.sin_addr = *globals.arguments.server_address.in_addr; + addr.sin_port = htons(globals.arguments.server_port); + sockaddr = (SOCKADDR*)&addr; + } + + result = WSAConnect(socket_info->socket, sockaddr, namelen, NULL, NULL, NULL, NULL); + + /* Should fail with WSAEWOULDBLOCK */ + if (result != SOCKET_ERROR) { + error_push(L"Connecting socket #%d unexpectedly succeeded", socket_info->id); + return FALSE; + } + + const int error = WSAGetLastError(); + + if (error != WSAEWOULDBLOCK) { + system_error_push(error, L"Connecting socket #%d failed", socket_info->id); + return FALSE; + } + + return TRUE; +} + +/* + * Send data to a socket + * + * This function returns TRUE only if all the data in the supplied buffers was successfully sent in a single operation. In practice this should be + * a safe assumption, since the sockets are in blocking mode while passing through child process data, and all other data exchange is done in very + * small chunks. + */ +static BOOL socket_send(const SOCKET socket, const int id, WSABUF *buffers, const DWORD buffer_count, LPCWSTR const description) +{ + ULONG length = 0; + DWORD bytes_written; + + /* Assume that the socket is writable without blocking, at this point the internal buffer must be empty */ + const int result = WSASend(socket, buffers, buffer_count, &bytes_written, 0, NULL, NULL); + + if (result == SOCKET_ERROR) { + system_error_push(WSAGetLastError(), L"Failed to send %s to socket #%d", description, id); + return FALSE; + } + + for (DWORD i = 0; i < buffer_count; i++) { + length += buffers[i].len; + } + + if (bytes_written != length) { + error_push(L"Failed to send %s to socket #%d: sent %d of %d bytes", description, id, bytes_written, length); + return FALSE; + } + + return TRUE; +} + +/* + * Process writability on a socket which is connecting + */ +static BOOL socket_process_connect_writable(socket_info_t* socket_info) +{ + u_long non_blocking = 0; + + const int result = ioctlsocket(socket_info->socket, FIONBIO, &non_blocking); + + if (result != NO_ERROR) { + error_push(L"Failed to set socket #%d to blocking mode, failed with %d", socket_info->id, result); + return FALSE; + } + + char socket_id[6]; + const WSABUF socket_id_buffer = { .len = 6,.buf = socket_id }; + const WSABUF token_buffer = { .len = TOKEN_SIZE, .buf = CLIENT_TOKEN(socket_info->id) }; + WSABUF buffers[2]; + + socket_id[0] = SIGNAL_CODE_HANDSHAKE; + dword_to_buffer(GetCurrentProcessId(), socket_id + 1); + socket_id[5] = socket_info->id; + + buffers[0] = socket_id_buffer; + buffers[1] = token_buffer; + + if (!socket_send(socket_info->socket, socket_info->id, buffers, 2, L"handshake")) { + return FALSE; + } + + socket_info->state = SOCKET_STATE_WAIT_ACK; + + return TRUE; +} + +/* + * Process readability on a socket which is connecting + */ +static BOOL socket_process_connect_readable(socket_info_t* socket_info) +{ + WSABUF buffer; + DWORD bytes_read, flags = 0; + + buffer.len = TOKEN_SIZE + 2; + buffer.buf = malloc(buffer.len); + + const int result = WSARecv(socket_info->socket, &buffer, 1, &bytes_read, &flags, NULL, NULL); + + if (result == SOCKET_ERROR) { + system_error_push(WSAGetLastError(), L"Failed to read handshake data from socket #%d", socket_info->id); + free(buffer.buf); + return FALSE; + } + + if (bytes_read < 2) { + error_push(L"Failed to read handshake data from socket #%d: received %d of expected %d bytes", socket_info->id, bytes_read, buffer.len); + free(buffer.buf); + return FALSE; + } + + if (buffer.buf[0] != SIGNAL_CODE_HANDSHAKE_ACK) { + error_push(L"Handshake failed for socket #%d: Unexpected signal code %d from server, expecting HANDSHAKE_ACK", socket_info->id, buffer.buf[0]); + free(buffer.buf); + return FALSE; + } + + if (buffer.buf[1] != HANDSHAKE_STATUS_SUCCESS) { + error_push( + L"Handshake failed for socket #%d: Server rejected connection: %d: %s", + socket_info->id, buffer.buf[1], + buffer.buf[1] < HANDSHAKE_STATUS_OPTION_COUNT ? handshake_status_messages[(unsigned char)buffer.buf[1]] : L"Unknown error" + ); + free(buffer.buf); + return FALSE; + } + + /* If we get this far then we need to ACK the server's message */ + char ack_message[2] = { SIGNAL_CODE_HANDSHAKE_ACK, HANDSHAKE_STATUS_INVALID_SERVER_TOKEN }; + WSABUF ack_buffer = { .len = 2, .buf = ack_message }; + BOOL success = FALSE; + + if (bytes_read != buffer.len) { + error_push(L"Failed to read handshake data from socket #%d: received %d of expected %d bytes", socket_info->id, bytes_read, buffer.len); + } else if (memcmp(buffer.buf + 2, SERVER_TOKEN(socket_info->id), TOKEN_SIZE) != 0) { + error_push(L"Handshake failed for socket #%d: Invalid server token", socket_info->id); + } else { + ack_message[1] = HANDSHAKE_STATUS_SUCCESS; + socket_info->state = SOCKET_STATE_CONNECTED; + success = TRUE; + } + + free(buffer.buf); + + if (!socket_send(socket_info->socket, socket_info->id, &ack_buffer, 1, L"handshake ack")) { + return FALSE; + } + + return success; +} + +/* + * Process error on a socket which is connecting + */ +static void socket_process_connect_error(socket_info_t* socket_info) +{ + int code; + int len = sizeof(int); + + const int result = getsockopt(socket_info->socket, SOL_SOCKET, SO_ERROR, (char*)&code, &len); + + if (result == SOCKET_ERROR) { + error_push(L"Failed to connect socket #%d: Unknown error", socket_info->id); + } else { + system_error_push(code, L"Failed to connect socket #%d", socket_info->id); + } +} + +/* + * Determines whether any sockets have pending connect actions + */ +static BOOL socketset_have_pending_connect(socket_info_t **sockets) +{ + for (int i = 0; i < SOCKET_COUNT; i++) { + if (sockets[i]->state < SOCKET_STATE_CONNECTED) { + return TRUE; + } + } + + return FALSE; +} + +/* + * Initialize the sockets array + */ +static BOOL socketset_create(socket_info_t** sockets, int count) +{ + const int address_family = globals.arguments.server_address_is_in6 ? AF_INET6 : AF_INET; + + for (int i = 0; i < count; i++) { + socket_info_t* socket_info = malloc(sizeof(socket_info_t)); + + socket_info->id = i; + socket_info->state = SOCKET_STATE_WAIT_CONNECT; + socket_info->socket = socket(address_family, SOCK_STREAM, IPPROTO_TCP); + + if (socket_info->socket == INVALID_SOCKET) { + error_push(L"Failed to create socket #%d", socket_info->id); + return FALSE; + } + + sockets[i] = socket_info; + } + + return TRUE; +} + +/* + * Thread main routine to connect sockets + */ +static DWORD WINAPI socketset_connect(LPVOID param) +{ + socket_info_t **sockets = (socket_info_t**)param; + FD_SET read_set; + FD_SET write_set; + FD_SET error_set; + + for (int i = 0; i < SOCKET_COUNT; i++) { + if (!socket_connect(sockets[i])) { + return FAILURE; + } + } + + while (socketset_have_pending_connect(sockets)) { + FD_ZERO(&read_set); + FD_ZERO(&write_set); + FD_ZERO(&error_set); + + for (int i = 0; i < SOCKET_COUNT; i++) { + if (sockets[i]->state == SOCKET_STATE_WAIT_CONNECT) { + FD_SET(sockets[i]->socket, &write_set); + FD_SET(sockets[i]->socket, &error_set); + } else if (sockets[i]->state == SOCKET_STATE_WAIT_ACK) { + FD_SET(sockets[i]->socket, &read_set); + } + } + + int pending_activity_count = select(0, &read_set, &write_set, &error_set, NULL); + + if (pending_activity_count == SOCKET_ERROR) { + system_error_push(WSAGetLastError(), L"select() operation failed"); + return FAILURE; + } + + if (pending_activity_count == 0) { + error_push(L"select() unexpectedly returned zero sockets"); + return FAILURE; + } + + for (int i = 0; pending_activity_count > 0 && i < SOCKET_COUNT; i++) { + if (FD_ISSET(sockets[i]->socket, &read_set)) { + if (!socket_process_connect_readable(sockets[i])) { + return FAILURE; + } + + pending_activity_count--; + } else if (FD_ISSET(sockets[i]->socket, &write_set)) { + if (!socket_process_connect_writable(sockets[i])) { + return FAILURE; + } + + pending_activity_count--; + } else if (FD_ISSET(sockets[i]->socket, &error_set)) { + socket_process_connect_error(sockets[i]); + return FAILURE; + } + } + } + + return SUCCESS; +} + +static BOOL process_init(process_info_t *process_info) +{ + process_info->security_attributes.nLength = sizeof(SECURITY_ATTRIBUTES); + process_info->security_attributes.bInheritHandle = TRUE; + process_info->security_attributes.lpSecurityDescriptor = NULL; + + for (int i = 0; i < 3; i++) { + if (!CreatePipe(&process_info->pipes[i].read, &process_info->pipes[i].write, &process_info->security_attributes, 0)) { + error_push(L"Failed to create pipe for process I/O stream #%d", i); + return FALSE; + } + + if (!SetHandleInformation(i == 0 ? process_info->pipes[i].write : process_info->pipes[i].read, HANDLE_FLAG_INHERIT, 0)) { + error_push(L"Failed to set handle information for process I/O stream #%d", i); + return FALSE; + } + } + + process_info->start_info.cb = sizeof(STARTUPINFO); + process_info->start_info.hStdInput = process_info->pipes[0].read; + process_info->start_info.hStdOutput = process_info->pipes[1].write; + process_info->start_info.hStdError = process_info->pipes[2].write; + process_info->start_info.dwFlags |= STARTF_USESTDHANDLES; + + return TRUE; +} + +static BOOL process_start(process_info_t *process_info) +{ + const BOOL result = CreateProcessW( + NULL, + globals.exe_command_line, + &process_info->security_attributes, // process security attributes + &process_info->security_attributes, // primary thread security attributes + TRUE, // handles are inherited + CREATE_NO_WINDOW | NORMAL_PRIORITY_CLASS, + NULL, // use parent's environment + globals.arguments.exe_cwd, + &process_info->start_info, + &process_info->process_info + ); + + if (!result) { + system_error_push(GetLastError(), L"Failed to create child process"); + return FALSE; + } + + CloseHandle(process_info->process_info.hThread); + CloseHandle(process_info->pipes[0].read); + CloseHandle(process_info->pipes[1].write); + CloseHandle(process_info->pipes[2].write); + + return TRUE; +} + +static DWORD WINAPI copy_output_to_socket(LPVOID param) +{ + DWORD bytes_read; + WSABUF buffer; + int result = FAILURE; + file_socket_pair_t *pair = (file_socket_pair_t*)param; + + buffer.buf = malloc(BUFFER_SIZE); + buffer.len = BUFFER_SIZE; + + while (TRUE) { + if (!ReadFile(pair->file, buffer.buf, BUFFER_SIZE, &bytes_read, NULL)) { + const int error = GetLastError(); + + /* The child process ended (may also succeed with zero bytes depending on the order in which things happen) */ + if (error == ERROR_BROKEN_PIPE) { + goto success; + } + + system_error_push(GetLastError(), L"Failed to read from child process pipe #%d", pair->id); + goto failure; + } + + /* The child process ended */ + if (bytes_read == 0) { + goto success; + } + + buffer.len = bytes_read; + + if (!socket_send(pair->socket, pair->id, &buffer, 1, L"data")) { + goto failure; + } + } + +success: + result = SUCCESS; + +failure: + CloseHandle(pair->file); + closesocket(pair->socket); + + return result; +} + +static DWORD WINAPI copy_socket_to_input(LPVOID param) +{ + DWORD bytes_read, bytes_written, flags = 0; + WSABUF buffer; + int result = FAILURE; + file_socket_pair_t *pair = (file_socket_pair_t*)param; + + buffer.buf = malloc(BUFFER_SIZE); + buffer.len = BUFFER_SIZE; + + while (TRUE) { + if (WSARecv(pair->socket, &buffer, 1, &bytes_read, &flags, NULL, NULL) == SOCKET_ERROR) { + system_error_push(GetLastError(), L"Failed to read from socket #%d", pair->id); + goto failure; + } + + if (bytes_read == 0) { + goto success; + } + + if (!WriteFile(pair->file, buffer.buf, bytes_read, &bytes_written, NULL)) { + system_error_push(GetLastError(), L"Failed to send data to child process pipe #%d", pair->id); + goto failure; + } + + if (bytes_written != bytes_read) { + error_push(L"Failed to send data to child process pipe #%d: sent %d of %d bytes", pair->id, bytes_written, bytes_read); + goto failure; + } + } + +success: + result = SUCCESS; + +failure: + /* Don't close the socket, we'll use it to inform the parent when the process is finished */ + CloseHandle(pair->file); + + return result; +} + +BOOL get_tokens_from_stdin() +{ + DWORD bytes_read; + const DWORD expected_token_size = TOKEN_SIZE * 6; + const ULONG peer_tokens_len = TOKEN_SIZE * 3; + HANDLE stdin_handle = GetStdHandle(STD_INPUT_HANDLE); + char buffer[65536]; /* https://stackoverflow.com/a/28452546 */ + + if (!ReadFile(stdin_handle, buffer, expected_token_size, &bytes_read, NULL)) { + system_error_push(GetLastError(), L"Failed to read tokens from stdin"); + return FALSE; + } + + if (bytes_read != expected_token_size) { + error_push(L"Failed to read tokens from stdin: received %d of expected %d bytes", bytes_read, expected_token_size); + return FALSE; + } + + globals.client_tokens.len = peer_tokens_len; + globals.client_tokens.buf = malloc(peer_tokens_len); + memcpy(globals.client_tokens.buf, buffer, peer_tokens_len); + + globals.server_tokens.len = peer_tokens_len; + globals.server_tokens.buf = malloc(peer_tokens_len); + memcpy(globals.server_tokens.buf, buffer + peer_tokens_len, peer_tokens_len); + + if (!ReadFile(stdin_handle, buffer, 1, &bytes_read, NULL)) { + system_error_push(GetLastError(), L"Failed to read token-command separator from stdin"); + return FALSE; + } + + if (bytes_read != 1) { + error_push(L"Failed to read token-command separator from stdin: received %d of expected 1 byte", bytes_read); + return FALSE; + } + + if (buffer[0] != 0) { + error_push(L"Failed to read token-command separator from stdin: expected 0, got %d", buffer[0]); + return FALSE; + } + + if (!ReadFile(stdin_handle, buffer, 65536, &bytes_read, NULL)) { + system_error_push(GetLastError(), L"Failed to read command from stdin"); + return FALSE; + } + + if (bytes_read == 65536) { + error_push(L"Failed to read command from stdin: command too long"); + return FALSE; + } + + if (buffer[bytes_read - 1] != 0) { + error_push(L"Failed to read command from stdin: missing null terminator"); + return FALSE; + } + + const int len = UTF8_MEASURE_WSTR(buffer); + + if (len == 0) { + error_push(L"Failed to read command from stdin: invalid UTF-8 string"); + return FALSE; + } + + globals.exe_command_line = malloc(len * sizeof(WCHAR)); + + if (UTF8_TO_WSTR(buffer, globals.exe_command_line, len) == 0) { + error_push(L"Failed to read command from stdin: failed to decode UTF-8 string"); + return FALSE; + } + + return TRUE; +} + +static BOOL send_dword_to_parent(socket_info_t *socket, const signal_code_t signal_code, const DWORD data, LPCWSTR const description) +{ + char bytes[5] = { signal_code }; + WSABUF buffer = { .len = 5, .buf = bytes }; + + dword_to_buffer(data, bytes + 1); + + return socket_send(socket->socket, socket->id, &buffer, 1, description); +} + +static BOOL wait_for_threads(HANDLE *copy_threads) +{ + /* Check if any stream copy threads are still active and wait for them if they are */ + HANDLE active_threads[SOCKET_COUNT]; + int active_thread_count = 0; + DWORD code; + + for (int i = 0; i < SOCKET_COUNT; i++) { + if (!GetExitCodeThread(copy_threads[i], &code)) { + system_error_push(GetLastError(), L"Retrieving copy thread #%d exit code failed", i); + return FALSE; + } + + if (code == STILL_ACTIVE) { + active_threads[active_thread_count++] = copy_threads[i]; + } else if (code != SUCCESS) { + return FALSE; + } + } + + if (active_thread_count == 0) { + return TRUE; + } + + if (WaitForMultipleObjects(active_thread_count, active_threads, TRUE, INFINITE) == WAIT_FAILED) { + system_error_push(GetLastError(), L"Wait operation on copy threads failed"); + } + + for (int i = 0; i < SOCKET_COUNT; i++) { + if (!GetExitCodeThread(copy_threads[i], &code)) { + system_error_push(GetLastError(), L"Retrieving copy thread #%d exit code failed", i); + return FALSE; + } + + if (code != SUCCESS) { + return FALSE; + } + } + + return TRUE; +} + +int wmain(const int argc, LPCWSTR* argv) +{ + DWORD exit_code; + socket_info_t* sockets[SOCKET_COUNT]; + + /* Initialize error handlers */ + errors_init(); + + /* Initialize Winsock */ + const int result = WSAStartup(MAKEWORD(2, 2), &wsa_data); + + if (result != 0) { + error_push(L"WSAStartup failed: %d", result); + } + + /* Parse args */ + if (!parse_opts(&globals.arguments, argc, argv)) { + errors_output_all(); + return FAILURE; + } + + /* Get process identifier token from stdin */ + if (!get_tokens_from_stdin()) { + errors_output_all(); + return FAILURE; + } + + /* Connect to server */ + if (!socketset_create(sockets, SOCKET_COUNT)) { + errors_output_all(); + return FAILURE; + } + + HANDLE connect_thread = CreateThread(NULL, 0, socketset_connect, &sockets, 0, NULL); + + /* Initialize the data for the child process */ + process_info_t process_info; + ZeroMemory(&process_info, sizeof(process_info_t)); + + if (!process_init(&process_info)) { + errors_output_all(); + return FAILURE; + } + + /* Wait until server is connected */ + if (WaitForSingleObject(connect_thread, INFINITE) == WAIT_FAILED) { + system_error_push(GetLastError(), L"Wait operation on connect thread failed"); + errors_output_all(); + return FAILURE; + } + + if (!GetExitCodeThread(connect_thread, &exit_code)) { + system_error_push(GetLastError(), L"Retrieving connect thread exit code failed"); + errors_output_all(); + return FAILURE; + } + + if (exit_code != SUCCESS) { + errors_output_all(); + return FAILURE; + } + + /* Start the process */ + if (!process_start(&process_info)) { + errors_output_all(); + return FAILURE; + } + + /* Send the process id to the parent on the stdin socket - despite the fact that another + * thread might be doing stuff with this socket it is safe because it will only be reading */ + if (!send_dword_to_parent(sockets[0], SIGNAL_CODE_CHILD_PID, process_info.process_info.dwProcessId, L"PID")) { + errors_output_all(); + return FAILURE; + } + + /* Start stream copy threads */ + HANDLE copy_threads[SOCKET_COUNT]; + + file_socket_pair_t stdin_pair; + stdin_pair.id = 0; + stdin_pair.socket = sockets[0]->socket; + stdin_pair.file = process_info.pipes[0].write; + copy_threads[0] = CreateThread(NULL, 0, copy_socket_to_input, &stdin_pair, 0, NULL); + + file_socket_pair_t stdout_pair; + stdout_pair.id = 1; + stdout_pair.socket = sockets[1]->socket; + stdout_pair.file = process_info.pipes[1].read; + copy_threads[1] = CreateThread(NULL, 0, copy_output_to_socket, &stdout_pair, 0, NULL); + + file_socket_pair_t stderr_pair; + stderr_pair.id = 2; + stderr_pair.socket = sockets[2]->socket; + stderr_pair.file = process_info.pipes[2].read; + copy_threads[2] = CreateThread(NULL, 0, copy_output_to_socket, &stderr_pair, 0, NULL); + + /* Wait until the child process ends */ + if (WaitForSingleObject(process_info.process_info.hProcess, INFINITE) == WAIT_FAILED) { + system_error_push(GetLastError(), L"Wait operation on child process failed"); + errors_output_all(); + return FAILURE; + } + + /* Get the process' exit code */ + if (!GetExitCodeProcess(process_info.process_info.hProcess, &exit_code)) { + system_error_push(GetLastError(), L"Retrieving process exit code failed"); + errors_output_all(); + return FAILURE; + } + + /* Send the process exit code to the parent on the stdin socket */ + if (!send_dword_to_parent(sockets[0], SIGNAL_CODE_EXIT_CODE, exit_code, L"exit code")) { + errors_output_all(); + return FAILURE; + } + + /* Check if any stream copy threads are still active and wait for them if they are */ + if (!wait_for_threads(copy_threads)) { + errors_output_all(); + return FAILURE; + } + + /* Don't close the stdin socket until all data has been sent *and* the copy thread as ended */ + closesocket(sockets[0]->socket); + + /* Exit with the same code as the child */ + return exit_code; +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/.gitattributes.source b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/.gitattributes.source new file mode 100644 index 0000000..700a7ff --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/.gitattributes.source @@ -0,0 +1,8 @@ +tests/ export-ignore +tools/ export-ignore +extracted.json export-ignore +README.md export-ignore +CHANGELOG.md export-ignore +psalm-baseline.xml export-ignore +langs/ export-ignore + diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/LICENSE b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/LICENSE new file mode 100644 index 0000000..dba13ed --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/README.md b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/README.md new file mode 100644 index 0000000..a2f818f --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/README.md @@ -0,0 +1,1332 @@ +# MadelineProto, a PHP MTProto telegram client + +Created by Daniil Gentili + +`#StandWithUkraine 🇺🇦` + +Do join the official channel, [@MadelineProto](https://t.me/MadelineProto) and the [support groups](https://t.me/pwrtelegramgroup)! + +Approved by Telegram! + +## What's this? + +This library can be used to easily interact with Telegram **without** the bot API, just like the official apps. + +It can login with a phone number (MTProto API), or with a bot token (MTProto API, **no bot API involved!**). + +[It is now fully async](https://docs.madelineproto.xyz/docs/ASYNC.html)! + +## Getting started ([now fully async!](https://docs.madelineproto.xyz/docs/ASYNC.html)) + +```php +start(); + +$me = $MadelineProto->getSelf(); + +$MadelineProto->logger($me); + +if (!$me['bot']) { + $MadelineProto->messages->sendMessage(peer: '@stickeroptimizerbot', message: "/start"); + + $MadelineProto->channels->joinChannel(channel: '@MadelineProto'); + + try { + $MadelineProto->messages->importChatInvite(hash: 'https://t.me/+Por5orOjwgccnt2w'); + } catch (\danog\MadelineProto\RPCErrorException $e) { + $MadelineProto->logger($e); + } +} +$MadelineProto->echo('OK, done!'); +``` + +Try running this code in a browser or in a console! + + +Tip: if you receive an error (or nothing), [send us](https://t.me/pwrtelegramgroup) the error message and the `MadelineProto.log` file that was created in the same directory (if running from a browser). + +## Made with MadelineProto + +The following open source projects were created using MadelineProto: you can directly install them, or explore the source code as direct examples on how to use MadelineProto's many features! + +* [magnaluna webradio](https://magna.madelineproto.xyz) - Multifeatured Telegram VoIP webradio +* [`simpleBot.php`](https://github.com/danog/MadelineProto/blob/v8/examples/simpleBot.php) - Extremely basic example +* [`tgstories_dl_bot.php`](https://github.com/danog/MadelineProto/blob/v8/examples/tgstories_dl_bot.php) - Source code of [@tgstories_dl_bot](https://t.me/tgstories_dl_bot) - Bot to download any Telegram Story! +* [`downloadRenameBot.php`](https://github.com/danog/downloadRenameBot/blob/main/bot.php) - Download files by URL and rename Telegram files using this async parallelized bot! +* [`secret_bot.php`](https://github.com/danog/MadelineProto/blob/v8/examples/secret_bot.php) - Secret chat bot! +* [`pipesbot.php`](https://github.com/danog/pipesbot) - Creating inline bots and using other inline bots via a userbot! +* [`bot.php`](https://github.com/danog/MadelineProto/blob/v8/examples/bot.php) - Examples for how to use filters, updates, get download links for any file, Telegram Stories and much more! + +Want to add your own open-source project to this list? [Click here!](https://docs.madelineproto.xyz/FOSS.html) + +Some of MadelineProto's core components are also available as separate, standalone libraries: + +- [danog/async-orm](https://github.com/danog/AsyncOrm) - Async ORM based on AMPHP v3 and fibers. +- [danog/telegram-entities](https://github.com/danog/telegram-entities) - A library to work with Telegram UTF-16 styled text entities. +- [danog/tg-file-decoder](https://github.com/danog/tg-file-decoder) - A library to work with Telegram bot API file IDs. +- [danog/tg-dialog-id](https://github.com/danog/tg-dialog-id) - A library to work with Telegram bot API dialog IDs. +- [danog/loop](https://github.com/danog/loop) - Loop/actor model abstraction for AMPHP. +- [danog/better-prometheus](https://github.com/danog/better-prometheus) - A better Prometheus library for PHP applications. +- [danog/ipc](https://github.com/danog/ipc) - Async IPC component for AMPHP. +- [danog/dns-over-https](https://github.com/danog/dns-over-https) - Async DNS-over-HTTPS resolution for AMPHP. + +## Documentation + +* [Creating a client](https://docs.madelineproto.xyz/docs/CREATING_A_CLIENT.html) - This page explains how to create a MadelineProto instance. +* [Login](https://docs.madelineproto.xyz/docs/LOGIN.html) - There are many ways you can login with MadelineProto. + * [Getting permission to use the telegram API](https://docs.madelineproto.xyz/docs/LOGIN.html#getting-permission-to-use-the-telegram-api) + * [Automatic](https://docs.madelineproto.xyz/docs/LOGIN.html#automatic) + * [Manual (user)](https://docs.madelineproto.xyz/docs/LOGIN.html#manual-user) + * [API ID](https://docs.madelineproto.xyz/docs/LOGIN.html#api-id) + * [Manual (bot)](https://docs.madelineproto.xyz/docs/LOGIN.html#manual-bot) + * [QR code login (user)](https://docs.madelineproto.xyz/docs/LOGIN.html#qr-code-user) +* [Features](https://docs.madelineproto.xyz/docs/FEATURES.html) - MadelineProto can do everything official clients can do, and more! +* [Requirements](https://docs.madelineproto.xyz/docs/REQUIREMENTS.html) - MadelineProto requires the mbstring, xml, json, fileinfo, gmp, openssl, iconv, gd extensions to function properly. +* [MadelineProto on Docker](https://docs.madelineproto.xyz/docs/DOCKER.html) - MadelineProto offers an official MadelineProto docker image for the linux/amd64, linux/arm64 and linux/riscv64 platforms @ hub.madelineproto.xyz/danog/madelineproto. + * [Getting started](https://docs.madelineproto.xyz/docs/DOCKER.html#getting-started) + * [CLI bot (recommended)](https://docs.madelineproto.xyz/docs/DOCKER.html#cli-bot-recommended) + * [Databases on docker](https://docs.madelineproto.xyz/docs/DOCKER.html#databases-on-docker) + * [Web docker](https://docs.madelineproto.xyz/docs/DOCKER.html#web-docker) + * [Custom extensions](https://docs.madelineproto.xyz/docs/DOCKER.html#custom-extensions) +* [Metrics](https://docs.madelineproto.xyz/docs/METRICS.html) - MadelineProto can expose many useful metrics, that can be visualized using the official MadelineProto Grafana dashboard. +* [Installation](https://docs.madelineproto.xyz/docs/INSTALLATION.html) - There are various ways to install MadelineProto: + * [Simple](https://docs.madelineproto.xyz/docs/INSTALLATION.html#simple) + * [Composer from existing project](https://docs.madelineproto.xyz/docs/INSTALLATION.html#composer-from-existing-project) + * [Composer from scratch](https://docs.madelineproto.xyz/docs/INSTALLATION.html#composer-from-scratch) +* [Broadcasting messages to all users](https://docs.madelineproto.xyz/docs/BROADCAST.html) - MadelineProto can be used to broadcast messages to all users, chats and channels of a bot or userbot. +* [Handling updates (new messages & other events)](https://docs.madelineproto.xyz/docs/UPDATES.html) - Update handling can be done in different ways: + * [Async Event driven](https://docs.madelineproto.xyz/docs/UPDATES.html#async-event-driven) + * [Full example](https://docs.madelineproto.xyz/docs/UPDATES.html#async-event-driven) + * [Bound methods](https://docs.madelineproto.xyz/docs/UPDATES.html#bound-methods) + * [Filters](https://docs.madelineproto.xyz/docs/FILTERS.html) + * [Simple filters](https://docs.madelineproto.xyz/docs/FILTERS.html#simple-filters) + * [Attribute filters](https://docs.madelineproto.xyz/docs/FILTERS.html#attribute-filters) + * [MTProto filters](https://docs.madelineproto.xyz/docs/FILTERS.html#mtproto-filters) + * [Plugins](https://docs.madelineproto.xyz/docs/PLUGINS.html) + * [Cron](https://docs.madelineproto.xyz/docs/UPDATES.html#cron) + * [Persisting data and IPC](https://docs.madelineproto.xyz/docs/UPDATES.html#persisting-data-and-ipc) + * [Built-in ORM](https://docs.madelineproto.xyz/docs/UPDATES.html#built-in-orm) + * [IPC](https://docs.madelineproto.xyz/docs/UPDATES.html#ipc) + * [Restarting](https://docs.madelineproto.xyz/docs/UPDATES.html#restarting) + * [Self-restart on webhosts](https://docs.madelineproto.xyz/docs/UPDATES.html#self-restart-on-webhosts) + * [Multi-account](https://docs.madelineproto.xyz/docs/UPDATES.html#multiaccount) + * [Automatic static analysis](https://docs.madelineproto.xyz/docs/UPDATES.html#automatic-static-analysis) + * [Avoiding the use of filesystem functions](https://docs.madelineproto.xyz/docs/UPDATES.html#avoiding-the-use-of-filesystem-functions) + * [Webhook (for HTTP APIs)](https://docs.madelineproto.xyz/docs/UPDATES.html#webhook) + * [getUpdates (only for Javascript APIs)](https://docs.madelineproto.xyz/docs/UPDATES.html#getUpdates) + * [Noop (default)](https://docs.madelineproto.xyz/docs/UPDATES.html#noop) + * [danog\MadelineProto\Broadcast\Progress »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Broadcast/Progress.html) - Broadcast progress. + * [danog\MadelineProto\EventHandler\AbstractMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractMessage.html) - Represents an incoming or outgoing message. + * [danog\MadelineProto\EventHandler\AbstractPrivateMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractPrivateMessage.html) - Represents a private or secret chat message. + * [danog\MadelineProto\EventHandler\AbstractStory »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractStory.html) - Represents a Telegram Story. + * [danog\MadelineProto\EventHandler\BotCommands »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/BotCommands.html) - The [command set](https://core.telegram.org/api/bots/commands) of a certain bot in a certain chat has changed. + * [danog\MadelineProto\EventHandler\CallbackQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/CallbackQuery.html) - Represents a query sent by the user by clicking on a button. + * [danog\MadelineProto\EventHandler\Channel\ChannelParticipant »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/ChannelParticipant.html) - A participant has left, joined, was banned or admin'd in a [channel or supergroup](https://core.telegram.org/api/channel). + * [danog\MadelineProto\EventHandler\Channel\MessageForwards »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/MessageForwards.html) - Indicates that the forward counter of a message in a channel has changed. + * [danog\MadelineProto\EventHandler\Channel\MessageViewsChanged »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/MessageViewsChanged.html) - Indicates that the view counter of a message in a channel has changed. + * [danog\MadelineProto\EventHandler\Channel\UpdateChannel »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/UpdateChannel.html) - A new channel is available, or info about an existing channel was changed. + * [danog\MadelineProto\EventHandler\ChatInviteRequester »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester.html) - Indicates someone has requested to join a chat or channel. + * [danog\MadelineProto\EventHandler\ChatInviteRequester\BotChatInviteRequest »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/BotChatInviteRequest.html) - Indicates someone has requested to join a chat or channel (bots only). + * [danog\MadelineProto\EventHandler\ChatInviteRequester\PendingJoinRequests »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/PendingJoinRequests.html) - Someone has requested to join a chat or channel. + * [danog\MadelineProto\EventHandler\Delete »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete.html) - Indicates that some messages were deleted. + * [danog\MadelineProto\EventHandler\Delete\DeleteChannelMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteChannelMessages.html) - Some messages in a [supergroup/channel](https://core.telegram.org/api/channel) were deleted. + * [danog\MadelineProto\EventHandler\Delete\DeleteMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteMessages.html) - Some messages were deleted in a private chat or simple group. + * [danog\MadelineProto\EventHandler\Delete\DeleteScheduledMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteScheduledMessages.html) - Some [scheduled messages](https://core.telegram.org/api/scheduled-messages) were deleted from the schedule queue of a chat. + * [danog\MadelineProto\EventHandler\InlineQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/InlineQuery.html) - An incoming inline query. + * [danog\MadelineProto\EventHandler\Message »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message.html) - Represents an incoming or outgoing message. + * [danog\MadelineProto\EventHandler\Message\ChannelMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ChannelMessage.html) - Represents an incoming or outgoing channel message. + * [danog\MadelineProto\EventHandler\Message\CommentReply »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/CommentReply.html) - Represents a reply to one of our messages in a channel comment group that we're not a member of (i.e. received via `@replies`). + * [danog\MadelineProto\EventHandler\Message\GroupMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/GroupMessage.html) - Represents an incoming or outgoing group message. + * [danog\MadelineProto\EventHandler\Message\PrivateMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/PrivateMessage.html) - Represents an incoming or outgoing private message. + * [danog\MadelineProto\EventHandler\Message\SecretMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/SecretMessage.html) - Represents New encrypted message. + * [danog\MadelineProto\EventHandler\Message\ServiceMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ServiceMessage.html) - Represents info about a service message. + * [danog\MadelineProto\EventHandler\Message\ServiceMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ServiceMessage.html) - Represents info about a service message. + * [danog\MadelineProto\EventHandler\Message\Service\DialogBotAllowed »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogBotAllowed.html) - We have given the bot permission to send us direct messages. + * [danog\MadelineProto\EventHandler\Message\Service\DialogChannelCreated »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelCreated.html) - The channel was created. + * [danog\MadelineProto\EventHandler\Message\Service\DialogChannelMigrateFrom »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelMigrateFrom.html) - Indicates the channel was [migrated](https://core.telegram.org/api/channel) from the specified chat. + * [danog\MadelineProto\EventHandler\Message\Service\DialogChatJoinedByLink »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatJoinedByLink.html) - A user joined the chat via an invite link. + * [danog\MadelineProto\EventHandler\Message\Service\DialogChatMigrateTo »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatMigrateTo.html) - Indicates the chat was [migrated](https://core.telegram.org/api/channel) to the specified supergroup. + * [danog\MadelineProto\EventHandler\Message\Service\DialogContactSignUp »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogContactSignUp.html) - A contact just signed up to telegram. + * [danog\MadelineProto\EventHandler\Message\Service\DialogCreated »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogCreated.html) - A chat or channel was created. + * [danog\MadelineProto\EventHandler\Message\Service\DialogDeleteMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogDeleteMessages.html) - Deleted messages. + * [danog\MadelineProto\EventHandler\Message\Service\DialogGameScore »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGameScore.html) - Someone scored in a game. + * [danog\MadelineProto\EventHandler\Message\Service\DialogGeoProximityReached »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGeoProximityReached.html) - A user of the chat is now in proximity of another user. + * [danog\MadelineProto\EventHandler\Message\Service\DialogGiftPremium »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGiftPremium.html) - Info about a gifted Telegram Premium subscription. + * [danog\MadelineProto\EventHandler\Message\Service\DialogGiftStars »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGiftStars.html) - Info about a gifted Telegram Stars. + * [danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall.html) - Represents a service message about a group call. + * [danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall\GroupCall »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCall.html) - The group call has started or ended. + * [danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall\GroupCallInvited »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallInvited.html) - A set of users was invited to the group call. + * [danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall\GroupCallScheduled »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallScheduled.html) - A group call was scheduled. + * [danog\MadelineProto\EventHandler\Message\Service\DialogHistoryCleared »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogHistoryCleared.html) - Chat history was cleared. + * [danog\MadelineProto\EventHandler\Message\Service\DialogMemberJoinedByRequest »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberJoinedByRequest.html) - A user was accepted into the group by an admin. + * [danog\MadelineProto\EventHandler\Message\Service\DialogMemberLeft »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberLeft.html) - A member left the chat or channel. + * [danog\MadelineProto\EventHandler\Message\Service\DialogMembersJoined »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMembersJoined.html) - Some members joined the chat or channel. + * [danog\MadelineProto\EventHandler\Message\Service\DialogMessagePinned »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMessagePinned.html) - A message was pinned in a chat. + * [danog\MadelineProto\EventHandler\Message\Service\DialogNoForwardRequest »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogNoForwardRequest.html) - Emitted only in private chats if the other side requested to disable content protection ». + * [danog\MadelineProto\EventHandler\Message\Service\DialogNoForwardToggle »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogNoForwardToggle.html) - Emitted only in private chats when enabling or disabling content protection ». + * [danog\MadelineProto\EventHandler\Message\Service\DialogPaymentSent »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPaymentSent.html) - A payment was sent. + * [danog\MadelineProto\EventHandler\Message\Service\DialogPaymentSentMe »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPaymentSentMe.html) - A user just sent a payment to me (a bot). + * [danog\MadelineProto\EventHandler\Message\Service\DialogPeerRequested »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPeerRequested.html) - Contains info about a peer that the user shared with the bot after clicking on a [keyboardButtonRequestPeer](https://docs.madelineproto.xyz/API_docs/constructors/keyboardButtonRequestPeer.html) button. + * [danog\MadelineProto\EventHandler\Message\Service\DialogPhoneCall »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhoneCall.html) - A phone call. + * [danog\MadelineProto\EventHandler\Message\Service\DialogPhotoChanged »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhotoChanged.html) - The photo of the dialog was changed or deleted. + * [danog\MadelineProto\EventHandler\Message\Service\DialogReadMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogReadMessages.html) - Messages marked as read. + * [danog\MadelineProto\EventHandler\Message\Service\DialogScreenshotTaken »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogScreenshotTaken.html) - A screenshot of the chat was taken. + * [danog\MadelineProto\EventHandler\Message\Service\DialogSetChatTheme »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatTheme.html) - The chat theme was changed. + * [danog\MadelineProto\EventHandler\Message\Service\DialogSetChatWallPaper »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatWallPaper.html) - The [wallpaper](https://core.telegram.org/api/wallpapers) of the current chat was changed. + * [danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) - The Time-To-Live of messages in this chat was changed. + * [danog\MadelineProto\EventHandler\Message\Service\DialogStarGift »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogStarGift.html) - Info about a Star gifted. + * [danog\MadelineProto\EventHandler\Message\Service\DialogSuggestProfilePhoto »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSuggestProfilePhoto.html) - A new profile picture was suggested using [photos.uploadContactProfilePhoto](https://docs.madelineproto.xyz/API_docs/methods/photos.uploadContactProfilePhoto.html). + * [danog\MadelineProto\EventHandler\Message\Service\DialogTitleChanged »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTitleChanged.html) - The title of a channel or group has changed. + * [danog\MadelineProto\EventHandler\Message\Service\DialogTopicCreated »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicCreated.html) - A [forum topic](https://core.telegram.org/api/forum#forum-topics) was created. + * [danog\MadelineProto\EventHandler\Message\Service\DialogTopicEdited »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicEdited.html) - [Forum topic](https://core.telegram.org/api/forum#forum-topics) information was edited. + * [danog\MadelineProto\EventHandler\Message\Service\DialogWebView »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogWebView.html) - Data from an opened [reply keyboard bot web app](https://core.telegram.org/api/bots/webapps) was relayed to the bot that owns it (user & bot side service message). + * [danog\MadelineProto\EventHandler\Payments\Payment »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Payments/Payment.html) - This object contains information about an incoming pre-checkout query. + * [danog\MadelineProto\EventHandler\Pinned »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned.html) - Indicates that some messages were pinned/unpinned. + * [danog\MadelineProto\EventHandler\Pinned\PinnedChannelMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedChannelMessages.html) - Represents messages that were pinned/unpinned in a [channel](https://core.telegram.org/api/channel). + * [danog\MadelineProto\EventHandler\Pinned\PinnedGroupMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedGroupMessages.html) - Represents messages that were pinned/unpinned in a [chat/supergroup](https://core.telegram.org/api/channel). + * [danog\MadelineProto\EventHandler\Pinned\PinnedPrivateMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedPrivateMessages.html) - Some messages were pinned in a private chat. + * [danog\MadelineProto\EventHandler\Privacy »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Privacy.html) - Indicates some privacy rules for a user or set of users. + * [danog\MadelineProto\EventHandler\Query\ButtonQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ButtonQuery.html) - Represents a query sent by the user by clicking on a button. + * [danog\MadelineProto\EventHandler\Query\ChatButtonQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ChatButtonQuery.html) - Represents a query sent by the user by clicking on a button in a chat. + * [danog\MadelineProto\EventHandler\Query\ChatGameQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ChatGameQuery.html) - Represents a query sent by the user by clicking on a "Play game" button in a chat. + * [danog\MadelineProto\EventHandler\Query\GameQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/GameQuery.html) - Represents a query sent by the user by clicking on a "Play game" button. + * [danog\MadelineProto\EventHandler\Query\InlineButtonQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/InlineButtonQuery.html) - Represents a query sent by the user by clicking on a button in an inline message. + * [danog\MadelineProto\EventHandler\Query\InlineGameQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/InlineGameQuery.html) - Represents a query sent by the user by clicking on a "Play game" button in an inline message. + * [danog\MadelineProto\EventHandler\Story\Story »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/Story.html) - Represents a Telegram story. + * [danog\MadelineProto\EventHandler\Story\StoryDeleted »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/StoryDeleted.html) - Represents a deleted story. + * [danog\MadelineProto\EventHandler\Story\StoryReaction »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/StoryReaction.html) - Represents a reaction to a story. + * [danog\MadelineProto\EventHandler\Typing »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing.html) - A user is typing. + * [danog\MadelineProto\EventHandler\Typing\ChatUserTyping »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/ChatUserTyping.html) - The user is preparing a message in a group; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing. + * [danog\MadelineProto\EventHandler\Typing\SecretUserTyping »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/SecretUserTyping.html) - The user is preparing a message in a secret chat; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing. + * [danog\MadelineProto\EventHandler\Typing\SupergroupUserTyping »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/SupergroupUserTyping.html) - A user is typing in a [supergroup](https://core.telegram.org/api/channel). + * [danog\MadelineProto\EventHandler\Typing\UserTyping »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/UserTyping.html) - The user is preparing a message; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing. + * [danog\MadelineProto\EventHandler\User\Blocked »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Blocked.html) - A peer was blocked. + * [danog\MadelineProto\EventHandler\User\BotStopped »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/BotStopped.html) - A bot was stopped or re-started. + * [danog\MadelineProto\EventHandler\User\Phone »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Phone.html) - A user’s phone number was changed. + * [danog\MadelineProto\EventHandler\User\Status »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status.html) - Contains a status update. + * [danog\MadelineProto\EventHandler\User\Status\Emoji »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Emoji.html) - The [emoji status](https://core.telegram.org/api/emoji-status) of a certain user has changed or was removed. + * [danog\MadelineProto\EventHandler\User\Status\EmptyStatus »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/EmptyStatus.html) - User status has not been set yet. + * [danog\MadelineProto\EventHandler\User\Status\LastMonth »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/LastMonth.html) - Online status: last seen last month. + * [danog\MadelineProto\EventHandler\User\Status\LastWeek »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/LastWeek.html) - Online status: last seen last week. + * [danog\MadelineProto\EventHandler\User\Status\Offline »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Offline.html) - The user’s offline status. + * [danog\MadelineProto\EventHandler\User\Status\Online »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Online.html) - Online status of the user. + * [danog\MadelineProto\EventHandler\User\Status\Recently »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Recently.html) - Online status: last seen recently. + * [danog\MadelineProto\EventHandler\User\Username »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Username.html) - Changes were made to the user’s first name, last name or username. + * [danog\MadelineProto\VoIP »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/VoIP.html) - This update represents a VoIP Telegram call. +* [Filters](https://docs.madelineproto.xyz/docs/FILTERS.html) - MadelineProto offers a very simple and intuitive message filtering system, based on PHP's type system and attributes. + * [Simple filters](https://docs.madelineproto.xyz/docs/FILTERS.html#simple-filters) + * [Attribute filters](https://docs.madelineproto.xyz/docs/FILTERS.html#attribute-filters) + * [Creating custom attribute filters](https://docs.madelineproto.xyz/docs/FILTERS.html#creating-custom-attribute-filters) + * [MTProto filters](https://docs.madelineproto.xyz/docs/FILTERS.html#mtproto-filters) +* [Plugins](https://docs.madelineproto.xyz/docs/PLUGINS.html) - MadelineProto offers a native plugin system, based on event handlers! + * [Installing plugins](https://docs.madelineproto.xyz/docs/PLUGINS.html#installing-plugins) + * [Simple installation](https://docs.madelineproto.xyz/docs/PLUGINS.html#simple-installation) + * [Composer installation](https://docs.madelineproto.xyz/docs/PLUGINS.html#composer-installation) + * [Builtin plugins](https://docs.madelineproto.xyz/docs/PLUGINS.html#builtin-plugins) + * [Creating plugins](https://docs.madelineproto.xyz/docs/PLUGINS.html#creating-plugins) + * [Full plugin example](https://docs.madelineproto.xyz/docs/PLUGINS.html#full-plugin-example) + * [Limitations](https://docs.madelineproto.xyz/docs/PLUGINS.html#limitations) + * [Namespace requirements](https://docs.madelineproto.xyz/docs/PLUGINS.html#namespace-requirements) + * [Distribution](https://docs.madelineproto.xyz/docs/PLUGINS.html#distribution) + * [danog\MadelineProto\EventHandler\Plugin\RestartPlugin »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Plugin/RestartPlugin.html) + * [Configuration](https://docs.madelineproto.xyz/docs/UPDATES.html#configuration) + * [Creating and uploading text files](https://docs.madelineproto.xyz/docs/UPDATES.html#creating-and-uploading-text-files) + * [Logging](https://docs.madelineproto.xyz/docs/UPDATES.html#logging) +* [Database](https://docs.madelineproto.xyz/docs/DATABASE.html) - MadelineProto optionally can keep some of its internal data in a database, such as mysql, mariadb, postgres or redis (you can also add your own!), reducing RAM usage. + * [\danog\MadelineProto\Settings\Database\Memory: Memory backend settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Database/Memory.html) + * [\danog\MadelineProto\Settings\Database\Mysql: MySQL backend settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Database/Mysql.html) + * [\danog\MadelineProto\Settings\Database\Postgres: Postgres backend settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Database/Postgres.html) + * [\danog\MadelineProto\Settings\Database\Redis: Redis backend settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Database/Redis.html) +* [Settings](https://docs.madelineproto.xyz/docs/SETTINGS.html) - MadelineProto has lots of settings that can be used to modify the behaviour of the library. + * [AppInfo: App information.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/AppInfo.html) + * [Auth: Cryptography settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Auth.html) + * [Connection: Connection settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Connection.html) + * [Files: File management settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Files.html) + * [Logger: Logger settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Logger.html) + * [Peer: Peer database settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Peer.html) + * [Pwr: PWRTelegram settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Pwr.html) + * [RPC: RPC settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/RPC.html) + * [SecretChats: Secret chat settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/SecretChats.html) + * [Serialization: Serialization settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Serialization.html) + * [TLSchema: TL schema settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/TLSchema.html) + * [Templates: Web and CLI template settings for login.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Templates.html) + * [VoIP: VoIP settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/VoIP.html) + * [Database\Memory: Memory backend settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Database/Memory.html) + * [Database\Mysql: MySQL backend settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Database/Mysql.html) + * [Database\Postgres: Postgres backend settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Database/Postgres.html) + * [Database\Redis: Redis backend settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Database/Redis.html) +* [Getting info about the current user](https://docs.madelineproto.xyz/docs/SELF.html) - Here's how you can fetch info about the currently logged in user +* [Exceptions](https://docs.madelineproto.xyz/docs/EXCEPTIONS.html) - MadelineProto can throw lots of different exceptions. + * [List of exception types](https://docs.madelineproto.xyz/docs/EXCEPTIONS.html#list-of-exception-types) + * [Pretty TL trace](https://docs.madelineproto.xyz/docs/EXCEPTIONS.html#pretty-tl-trace) + * [Getting the TL trace](https://docs.madelineproto.xyz/docs/EXCEPTIONS.html#getting-the-tl-trace) +* [Avoiding FLOOD_WAITs](https://docs.madelineproto.xyz/docs/FLOOD_WAIT.html) - If you make too many requests to telegram, you might get FLOOD_WAITed for a while. To avoid these flood waits, you must calculate the flood wait rate. +* [Logging](https://docs.madelineproto.xyz/docs/LOGGING.html) - MadelineProto provides a unified class for logging messages to the logging destination defined in settings. +* [Telegram VoIP phone calls](https://docs.madelineproto.xyz/docs/CALLS.html) - MadelineProto provides an easy wrapper to work with phone calls. + * [Requesting a call](https://docs.madelineproto.xyz/docs/CALLS.html#requesting-a-call) + * [Playing audio files](https://docs.madelineproto.xyz/docs/CALLS.html#playing-audio-files) + * [Webhost support!](https://docs.madelineproto.xyz/docs/CALLS.html#webhost-support) + * [Accepting calls](https://docs.madelineproto.xyz/docs/CALLS.html#accepting-calls) +* [Uploading and downloading files](https://docs.madelineproto.xyz/docs/FILES.html) - MadelineProto provides fully parallelized wrapper methods to upload and download files that support bot API file ids, direct upload by URL and file renaming. + * [Bot API file IDs](https://docs.madelineproto.xyz/docs/FILES.html#bot-api-file-ids) + * [Uploading & sending files](https://docs.madelineproto.xyz/docs/FILES.html#sending-files) + * [Security notice](https://docs.madelineproto.xyz/docs/FILES.html#security-notice) + * [Photos](https://docs.madelineproto.xyz/docs/FILES.html#photos) + * [Photos as documents](https://docs.madelineproto.xyz/docs/FILES.html#photos-as-documents) + * [Documents](https://docs.madelineproto.xyz/docs/FILES.html#documents) + * [GIFs](https://docs.madelineproto.xyz/docs/FILES.html#gifs) + * [Videos](https://docs.madelineproto.xyz/docs/FILES.html#videos) + * [Music](https://docs.madelineproto.xyz/docs/FILES.html#music) + * [Voice](https://docs.madelineproto.xyz/docs/FILES.html#voice) + * [Stickers](https://docs.madelineproto.xyz/docs/FILES.html#stickers) + * [Uploading files](https://docs.madelineproto.xyz/docs/FILES.html#uploading-files) + * [Reusing uploaded files](https://docs.madelineproto.xyz/docs/FILES.html#reusing-uploaded-files) + * [Renaming files](https://docs.madelineproto.xyz/docs/FILES.html#renaming-files) + * [Downloading files](https://docs.madelineproto.xyz/docs/FILES.html#downloading-files) + * [Extracting download info](https://docs.madelineproto.xyz/docs/FILES.html#extracting-download-info) + * [Getting a download link](https://docs.madelineproto.xyz/docs/FILES.html#getting-a-download-link) + * [Downloading profile pictures](https://docs.madelineproto.xyz/docs/FILES.html#downloading-profile-pictures) + * [Download to directory](https://docs.madelineproto.xyz/docs/FILES.html#download-to-directory) + * [Download to file](https://docs.madelineproto.xyz/docs/FILES.html#download-to-file) + * [Download to stream](https://docs.madelineproto.xyz/docs/FILES.html#download-to-stream) + * [Download to callback](https://docs.madelineproto.xyz/docs/FILES.html#download-to-callback) + * [Download to http-server](https://docs.madelineproto.xyz/docs/FILES.html#download-to-http-server) + * [Download to browser](https://docs.madelineproto.xyz/docs/FILES.html#download-to-browser) + * [Getting progress](https://docs.madelineproto.xyz/docs/FILES.html#getting-progress) +* [Getting info about chats](https://docs.madelineproto.xyz/docs/CHAT_INFO.html) - There are various methods that can be used to fetch info about chats, based on bot API id, Peer, User, Chat objects. + * [Full chat info with full list of participants](https://docs.madelineproto.xyz/docs/CHAT_INFO.html#getPwrChat) + * [Full chat info](https://docs.madelineproto.xyz/docs/CHAT_INFO.html#getFullInfo) + * [Reduced chat info (very fast)](https://docs.madelineproto.xyz/docs/CHAT_INFO.html#getInfo) + * [Just the chat ID (extremely fast)](https://docs.madelineproto.xyz/docs/CHAT_INFO.html#getId) +* [Getting all chats (dialogs)](https://docs.madelineproto.xyz/docs/DIALOGS.html) - There are two ways to get a list of all chats, depending if you logged in as a user, or as a bot. + * [Dialog ID list](https://docs.madelineproto.xyz/docs/DIALOGS.html#getDialogIds) + * [Full dialog info](https://docs.madelineproto.xyz/docs/DIALOGS.html#getFullDialogs) +* [Inline buttons](https://docs.madelineproto.xyz/docs/INLINE_BUTTONS.html) - You can easily click inline buttons using MadelineProto, just access the correct button: +* [Secret chats](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html) - MadelineProto provides wrappers to work with secret chats. + * [Requesting secret chats](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html#requesting-secret-chats) + * [Accepting secret chats](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html#accepting-secret-chats) + * [Checking secret chat status](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html#checking-secret-chat-status) + * [Sending secret messages](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html#sending-secret-messages) +* [Using a proxy](https://docs.madelineproto.xyz/docs/PROXY.html) - You can use a proxy with MadelineProto. + * [How to set a proxy](https://docs.madelineproto.xyz/docs/PROXY.html#how-to-set-a-proxy) + * [Multiple proxies with automatic switch](https://docs.madelineproto.xyz/docs/PROXY.html#multiple-proxies-with-automatic-switch) + * [Use pre-built MTProxy](https://docs.madelineproto.xyz/docs/PROXY.html#mtproxy) + * [Use pre-built Socks5 proxy](https://docs.madelineproto.xyz/docs/PROXY.html#socks5-proxy) + * [Use pre-built HTTP proxy](https://docs.madelineproto.xyz/docs/PROXY.html#http-proxy) + * [Build your own proxy](https://docs.madelineproto.xyz/docs/PROXY.html#build-your-proxy) +* [Async](https://docs.madelineproto.xyz/docs/ASYNC.html) - MadelineProto now features async, for incredible speed improvements, and parallel processing, all powered by amphp. + * [Usage](https://docs.madelineproto.xyz/docs/ASYNC.html#usage) + * [Async in event handler](https://docs.madelineproto.xyz/docs/ASYNC.html#async-in-event-handler) + * [Multiple async](https://docs.madelineproto.xyz/docs/ASYNC.html#multiple-async) + * [Ignored async](https://docs.madelineproto.xyz/docs/ASYNC.html#ignored-async) + * [Combining async operations](https://docs.madelineproto.xyz/docs/ASYNC.html#combining-async-operations) + * [MadelineProto and AMPHP async APIs](https://docs.madelineproto.xyz/docs/ASYNC.html#madelineproto-and-amphp-async-apis) + * [Helper methods](https://docs.madelineproto.xyz/docs/ASYNC.html#helper-methods) + * [Async sleep](https://docs.madelineproto.xyz/docs/ASYNC.html#async-sleep-does-not-block-the-main-thread) + * [Async readline](https://docs.madelineproto.xyz/docs/ASYNC.html#async-readline-does-not-block-the-main-thread) + * [Async echo](https://docs.madelineproto.xyz/docs/ASYNC.html#async-echo-does-not-block-the-main-thread) + * [MadelineProto HTTP client](https://docs.madelineproto.xyz/docs/ASYNC.html#madelineproto-http-client) + * [Async forking](https://docs.madelineproto.xyz/docs/ASYNC.html#async-forking-does-async-green-thread-forking) + * [Async flock](https://docs.madelineproto.xyz/docs/ASYNC.html#async-flock) + * [MadelineProto async loop APIs](https://docs.madelineproto.xyz/docs/ASYNC.html#async-loop-apis) +* [FAQ](https://docs.madelineproto.xyz/docs/FAQ.html) - Here's a list of common MadelineProto questions and answers. +* [Upgrading from MadelineProto v7 to v8](https://docs.madelineproto.xyz/docs/UPGRADING.html) - MadelineProto v8 is a major MadelineProto update, that removes a large number of long-deprecated APIs: I've created this upgrade checklist, to simplify the upgrade process. +* [Using methods](https://docs.madelineproto.xyz/docs/USING_METHODS.html) - There are simplifications for many, if not all of, these methods. + * [Named arguments](https://docs.madelineproto.xyz/docs/USING_METHODS.html#named-arguments) + * [Peers](https://docs.madelineproto.xyz/docs/USING_METHODS.html#peers) + * [Files](https://docs.madelineproto.xyz/docs/FILES.html) + * [Secret chats](https://docs.madelineproto.xyz/docs/USING_METHODS.html#secret-chats) + * [Entities (Markdown & HTML)](https://docs.madelineproto.xyz/docs/USING_METHODS.html#entities) + * [reply_markup (keyboards & inline keyboards)](https://docs.madelineproto.xyz/docs/USING_METHODS.html#reply_markup) + * [bot API objects](https://docs.madelineproto.xyz/docs/USING_METHODS.html#bot-api-objects) + * [No result](https://docs.madelineproto.xyz/docs/USING_METHODS.html#no-result) + * [Multiple method calls](https://docs.madelineproto.xyz/docs/USING_METHODS.html#multiple-method-calls) + * [Cancellation](https://docs.madelineproto.xyz/docs/USING_METHODS.html#cancellation) + * [FULL API Documentation with descriptions](https://docs.madelineproto.xyz/API_docs/methods/) + * [Login](https://docs.madelineproto.xyz/docs/LOGIN.html) + * [Change 2FA password: update2FA](https://docs.madelineproto.xyz/update2fa.html) + * [Get all chats, broadcast a message to all chats: getDialogIds, getDialogs, getFullDialogs](https://docs.madelineproto.xyz/docs/DIALOGS.html) + * [Get the full participant list of a channel/group/supergroup: getPwrChat](https://docs.madelineproto.xyz/getPwrChat.html) + * [Get full info about a user/chat/supergroup/channel: getFullInfo](https://docs.madelineproto.xyz/getFullInfo.html) + * [Get info about a user/chat/supergroup/channel: getInfo](https://docs.madelineproto.xyz/getInfo.html) + * [Get the ID of a user/chat/supergroup/channel/update: getID](https://docs.madelineproto.xyz/getId.html) + * [Get info about the currently logged-in user: getSelf](https://docs.madelineproto.xyz/getSelf.html) + * [Upload or download files up to 4 GB: uploadFrom*, downloadTo*](https://docs.madelineproto.xyz/docs/FILES.html) + * [Make a phone call and play a song](https://docs.madelineproto.xyz/docs/CALLS.html) + * [Create a secret chat bot](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html) + * A collectible gift we own » can be put up for sale on the gift marketplace » with this method, see here » for more info: payments.updateStarGiftPrice + * Abort a pending 2FA password reset, see here for more info »: account.declinePasswordReset + * Accept QR code login token, logging in the app that generated it: auth.acceptLoginToken + * Accept call: acceptCall + * Accept secret chat: acceptSecretChat + * Accept the new terms of service: help.acceptTermsOfService + * Activate or deactivate a Telegram Star subscription »: payments.changeStarsSubscription + * Activate or deactivate a purchased fragment.com username associated to a bot we own: bots.toggleUsername + * Activate or deactivate a purchased fragment.com username associated to a supergroup or channel we own: channels.toggleUsername + * Activate or deactivate a purchased fragment.com username associated to the currently logged-in user: account.toggleUsername + * Activates stories stealth mode, see here » for more info: stories.activateStealthMode + * Add GIF to saved gifs list: messages.saveGif + * Add a main mini app preview, see here » for more info: bots.addPreviewMedia + * Add a sticker to a stickerset. The sticker set must have been created by the current user/bot: stickers.addStickerToSet + * Add an existing telegram user as contact: contacts.addContact + * Add or remove gifts from a star gift collection », or rename the collection: payments.updateStarGiftCollection + * Add/remove sticker from recent stickers list: messages.saveRecentSticker + * Adds a peer to a blocklist, see here » for more info: contacts.block + * Adds a user to a chat and sends a service message on it: messages.addChatUser + * Adds or removes a song from the current user's profile see here » for more info on the music tab of the profile page: account.saveMusic + * Admins with ban_users admin rights » may allow users that apply a certain number of booosts » to the group to bypass slow mode » and other » supergroup restrictions, see here » for more info: channels.setBoostsToUnblockRestrictions + * Allow a user to send us messages without paying if paid messages » are enabled: account.toggleNoPaidMessagesException + * Allow or prevent a bot from changing our emoji status »: bots.toggleUserEmojiStatusPermission + * Allow the specified bot to send us messages: bots.allowSendMessage + * Answer an inline query, for bots only: messages.setInlineBotResults + * Answers a custom query; for bots only: bots.answerWebhookJSONQuery + * Appends one or more items to a todo list »: messages.appendTodoList + * Apply a Telegram Premium giftcode »: payments.applyGiftCode + * Apply changes to multiple stickersets: messages.toggleStickerSets + * Apply one or more boosts » to a peer: premium.applyBoost + * Approve or reject a suggested post »: messages.toggleSuggestedPostApproval + * Associate (or remove) a personal channel », that will be listed on our personal profile page »: account.updatePersonalChannel + * Associate a group to a channel as discussion group for that channel: channels.setDiscussionGroup + * Associate a stickerset to the supergroup: channels.setStickers + * Asynchronously lock a file: flock + * Asynchronously read line: readLine + * Asynchronously sleep: sleep + * Asynchronously write to stdout/browser: echo + * Ban/unban/kick a user in a supergroup/channel: channels.editBanned + * Base64URL encode: base64urlEncode + * Before offering the user the choice to add a message to a quick reply shortcut, to make sure that none of the limits specified here » were reached: messages.checkQuickReplyShortcut + * Bot owners only, fetch main mini app preview information, see here » for more info: bots.getPreviewInfo + * Bots may invoke this method to re-fetch the updateBotBusinessConnect constructor associated with a specific business connection_id, see here » for more info on connected business bots.: account.getBotBusinessConnection + * Broadcast a blockchain block to all members of a conference call, see here » for more info: phone.sendConferenceCallBroadcast + * Businesses » may advertise their location using this method, see here » for more info: account.updateBusinessLocation + * Can only be invoked by non-bot admins of a monoforum », obtains the original sender of a message sent by other monoforum admins to the monoforum, on behalf of the channel associated to the monoforum: channels.getMessageAuthor + * Can only be used by TSF members to obtain internal information: help.getUserInfo + * Cancel a bot subscription: payments.botCancelStarsSubscription + * Cancel a running broadcast: cancelBroadcast + * Cancel the code that was sent to verify an email to use as 2FA recovery method: account.cancelPasswordEmail + * Cancel the login verification code: auth.cancelCode + * Change default emoji reaction to use in the quick reaction menu: the value is synced across devices and can be fetched using help.getConfig, reactions_default field: messages.setDefaultReaction + * Change group call settings: phone.toggleGroupCallSettings + * Change media autodownload settings: account.saveAutoDownloadSettings + * Change or remove the username of a supergroup/channel: channels.updateUsername + * Change privacy settings of current account: account.setPrivacy + * Change settings related to a session: account.changeAuthorizationSettings + * Change the chat theme of a certain chat, see here » for more info: messages.setChatTheme + * Change the default peer that should be used when sending messages, reactions, poll votes to a specific group: messages.saveDefaultSendAs + * Change the emoji status of a user (invoked by bots, see here » for more info on the full flow): bots.updateUserEmojiStatus + * Change the phone number of the current account: account.changePhone + * Change the photo of a channel/supergroup: channels.editPhoto + * Change the reaction notification settings »: account.setReactionsNotifySettings + * Change the set of message reactions » that can be used in a certain group, supergroup or channel: messages.setChatAvailableReactions + * Changes chat name and sends a service message on it: messages.editChatTitle + * Changes chat photo and sends a service message on it: messages.editChatPhoto + * Changes the absolute position of a sticker in the set to which it belongs. The sticker set must have been created by the current user/bot: stickers.changeStickerPosition + * Changes the default value of the Time-To-Live setting, applied to all new chats: messages.setDefaultHistoryTTL + * Changes the main profile tab of a channel, see here » for more info: channels.setMainProfileTab + * Changes the main profile tab of the current user, see here » for more info: account.setMainProfileTab + * Changes the privacy of already sent paid reactions on a specific message: messages.togglePaidReactionPrivacy + * Changes username for the current user: account.updateUsername + * Check if a certain event handler plugin is installed: hasPlugin + * Check if a mini app can request the download of a specific file: called when handling web_app_request_file_download events »: bots.checkDownloadFileParams + * Check if a username is free and can be assigned to a channel/supergroup: channels.checkUsername + * Check if an event handler instance is present: hasEventHandler + * Check if has admins: hasAdmins + * Check if has report peers: hasReportPeers + * Check if is array or similar (traversable && countable && arrayAccess): isArrayOrAlike + * Check if peer is present in internal peer database: peerIsset + * Check if the 2FA recovery code sent using auth.requestPasswordRecovery is valid, before passing it to auth.recoverPassword: auth.checkRecoveryPassword + * Check if the passed songs are still pinned to the user's profile, or refresh the file references of songs pinned on a user's profile see here » for more info: users.getSavedMusicByID + * Check if the specified gift » can be sent: payments.checkCanSendGift + * Check if the specified global post search » requires payment: channels.checkSearchPostsFlood + * Check if the specified peer is a bot: isBot + * Check if the specified peer is a forum: isForum + * Check if we can process SMS jobs (official clients only): smsjobs.isEligibleToJoin + * Check the validity of a chat invite link and get basic info about it: messages.checkChatInvite + * Check whether chat history exported from another chat app can be imported into a specific Telegram chat, click here for more info »: messages.checkHistoryImportPeer + * Check whether secret chat exists: hasSecretChat + * Check whether the given short name is available: stickers.checkShortName + * Check whether the group call Server Forwarding Unit is currently receiving the streams with the specified WebRTC source IDs.: phone.checkGroupCall + * Check whether the specified bot can send us messages: bots.canSendMessage + * Check whether we can post stories as the specified peer: stories.canSendStory + * Check whether we can write to the specified users, used to implement bulk checks for Premium-only messages » and paid messages »: users.getRequirementsToContact + * Checks whether a purchase is possible. Must be called before in-store purchase, official apps only: payments.canPurchaseStore + * Clear all drafts: messages.clearAllDrafts + * Clear all peer-specific autosave settings: account.deleteAutoSaveExceptions + * Clear bot commands for the specified bot scope and language code: bots.resetBotCommands + * Clear recent stickers: messages.clearRecentStickers + * Clear recently used message reactions: messages.clearRecentReactions + * Clear saved payment information: payments.clearSavedInfo + * Clears list of recently used emoji statuses: account.clearRecentEmojiStatuses + * Close connection with client, connected via web: closeConnection + * Complet user login using login code: completePhoneLogin + * Complete 2FA login: complete2faLogin + * Complete signup to Telegram: completeSignup + * Complete the history import process, importing all messages into the chat.: messages.startHistoryImport + * Completely delete a quick reply shortcut.: messages.deleteQuickReplyShortcut + * Confirm a phone number to cancel account deletion, for more info click here »: account.confirmPhone + * Confirms receipt of messages by a client, cancels PUSH-notification sending: messages.receivedMessages + * Connect a business bot » to the current account, or to change the current connection settings: account.updateConnectedBot + * Convert MTProto parameters to bot API parameters: MTProtoToBotAPI + * Convert TD parameters to tdcli: tdToTdcli + * Convert TD to MTProto parameters: tdToMTProto + * Convert a collectible gift » to an NFT on the TON blockchain: payments.getStarGiftWithdrawalUrl + * Convert a message and a set of entities to HTML: entitiesToHtml + * Convert a received gift » into Telegram Stars: this will permanently destroy the gift, converting it into starGift.convert_stars Telegram Stars, added to the user's balance: payments.convertStarGift + * Convert a supergroup to a gigagroup, when requested by channel suggestions: channels.convertToGigagroup + * Convert bot API parameters to MTProto parameters: botAPIToMTProto + * Convert double to binary version: packDouble + * Convert integer to base256 long: packSignedLong + * Convert integer to base256 signed int: packSignedInt + * Convert tdcli parameters to tdcli: tdcliToTd + * Convert to camelCase: toCamelCase + * Convert to snake_case: toSnakeCase + * Convert value to unsigned base256 int: packUnsignedInt + * Converts a string into an async amphp stream: stringToStream + * Create a business chat deep link »: account.createBusinessChatLink + * Create a group call or livestream: phone.createGroupCall + * Create a star gift collection »: payments.createStarGiftCollection + * Create a stickerset: stickers.createStickerSet + * Create a supergroup/channel: channels.createChannel + * Create a theme: account.createTheme + * Create and optionally join a new conference call: phone.createConferenceCall + * Create and upload a new wallpaper: account.uploadWallPaper + * Create array: arr + * Create, edit or delete the affiliate program of a bot we own: bots.updateStarRefProgram + * Creates a new chat: messages.createChat + * Creates a story album: stories.createAlbum + * Creates and returns a prometheus counter: getPromCounter + * Creates and returns a prometheus gauge: getPromGauge + * Creates and returns a prometheus histogram: getPromHistogram + * Creates and returns a prometheus summary: getPromSummary + * Declines a conference call invite: phone.declineConferenceCallInvite + * Delete a business chat deep link »: account.deleteBusinessChatLink + * Delete a channel/supergroup: channels.deleteChannel + * Delete a chat invite: messages.deleteExportedChatInvite + * Delete a chat: messages.deleteChat + * Delete a fact-check from a message: messages.deleteFactCheck + * Delete a folder imported using a chat folder deep link »: chatlists.leaveChatlist + * Delete a main mini app preview, see here » for more info: bots.deletePreviewMedia + * Delete a previously created chat folder deep link »: chatlists.deleteExportedInvite + * Delete a star gift collection »: payments.deleteStarGiftCollection + * Delete a story album: stories.deleteAlbum + * Delete all installed wallpapers, reverting to the default wallpaper set: account.resetWallPapers + * Delete all messages sent by a specific participant of a given supergroup: channels.deleteParticipantHistory + * Delete all revoked chat invites: messages.deleteRevokedExportedChatInvites + * Delete all temporary authorization keys except for the ones specified: auth.dropTempAuthKeys + * Delete contacts by phone number: contacts.deleteByPhones + * Delete messages in a channel/supergroup: channels.deleteMessages + * Delete one or more messages from a quick reply shortcut. This will also emit an updateDeleteQuickReplyMessages update: messages.deleteQuickReplyMessages + * Delete scheduled messages: messages.deleteScheduledMessages + * Delete stored Telegram Passport documents, for more info see the passport docs »: account.deleteSecureValue + * Delete the entire phone call history: messages.deletePhoneCallHistory + * Delete the history of a supergroup: channels.deleteHistory + * Delete the user's account from the telegram servers: account.deleteAccount + * Deletes a device by its token, stops sending PUSH-notifications to it: account.unregisterDevice + * Deletes a peer from a blocklist, see here » for more info: contacts.unblock + * Deletes a stickerset we created: stickers.deleteStickerSet + * Deletes a user from a chat and sends a service message on it: messages.deleteChatUser + * Deletes communication history: messages.deleteHistory + * Deletes messages by their identifiers: messages.deleteMessages + * Deletes messages from a monoforum topic », or deletes messages forwarded from a specific peer to saved messages »: messages.deleteSavedHistory + * Deletes profile photos. The method returns a list of successfully deleted photo IDs: photos.deletePhotos + * Deletes several contacts from the list: contacts.deleteContacts + * Deletes some posted stories: stories.deleteStories + * Disable SMS jobs (official clients only): smsjobs.leave + * Disable ads on the specified channel, for all users: channels.restrictSponsoredMessages + * Disable all purchased usernames of a supergroup or channel: channels.deactivateAllUsernames + * Disable or re-enable Telegram ads for the current Premium account: account.toggleSponsoredMessages + * Discard call: discardCall + * Discard secret chat: discardSecretChat + * Dismiss a suggestion, see here for more info »: help.dismissSuggestion + * Dismiss new pending peers recently added to a chat folder deep link »: chatlists.hideChatlistUpdates + * Dismiss or approve a chat join request related to a specific chat or channel: messages.hideChatJoinRequest + * Dismiss or approve all join requests related to a specific chat or channel: messages.hideAllChatJoinRequests + * Display or remove a received gift » from our profile: payments.saveStarGift + * Download file to amphp/http-server response: downloadToResponse + * Download file to an amphp stream, returning it: downloadToReturnedStream + * Download file to browser: downloadToBrowser + * Download file to callable: downloadToCallable + * Download file to directory: downloadToDir + * Download file to stream: downloadToStream + * Download file: downloadToFile + * Downloads a file to the browser using the specified session file: downloadServer + * Edit a chat folder deep link »: chatlists.editExportedInvite + * Edit a created business chat deep link »: account.editBusinessChatLink + * Edit a main mini app preview, see here » for more info: bots.editPreviewMedia + * Edit an exported chat invite: messages.editExportedChatInvite + * Edit an inline bot message: messages.editInlineBotMessage + * Edit an uploaded story: stories.editStory + * Edit information about a given group call participant: phone.editGroupCallParticipant + * Edit location of geogroup, see here » for more info on geogroups: channels.editLocation + * Edit message: messages.editMessage + * Edit peers in peer folder: folders.editPeerFolders + * Edit the close friends list, see here » for more info: contacts.editCloseFriends + * Edit the default banned rights of a channel/supergroup/group: messages.editChatDefaultBannedRights + * Edit the description of a group/supergroup/channel: messages.editChatAbout + * Edit the name of a channel/supergroup: channels.editTitle + * Edit the title of a group call or livestream: phone.editGroupCallTitle + * Edit/create a fact-check on a message: messages.editFactCheck + * Edits notification settings from a given user/group, from all users/all groups: account.updateNotifySettings + * Enable SMS jobs (official clients only): smsjobs.join + * Enable or disable content protection on a channel or chat: messages.toggleNoForwards + * Enable or disable folder tags »: messages.toggleDialogFilterTags + * Enable or disable forum functionality in a supergroup: channels.toggleForum + * Enable or disable paid messages » in this supergroup or monoforum: channels.updatePaidMessagesPrice + * Enable or disable the native antispam system: channels.toggleAntiSpam + * Enable or disable web bot attachment menu »: messages.toggleBotInAttachMenu + * Enable/disable message signatures in channels: channels.toggleSignatures + * Enable/disable top peers: contacts.toggleTopPeers + * Enables or disables the reception of notifications every time a gift » is received by the specified channel, can only be invoked by admins with post_messages admin rights: payments.toggleChatStarGiftNotifications + * Escape string for MadelineProto's HTML entity converter: htmlEscape + * Escape string for URL: markdownUrlEscape + * Escape string for markdown code section: markdownCodeEscape + * Escape string for markdown codeblock: markdownCodeblockEscape + * Escape string for markdown: markdownEscape + * Executes a custom broadcast action with all peers (users, chats, channels) of the bot: broadcastCustom + * Export a folder », creating a chat folder deep link »: chatlists.exportChatlistInvite + * Export an invite link for a chat: messages.exportChatInvite + * Export authorization: exportAuthorization + * Extract Update constructors from an Updates constructor: extractUpdates + * Extract a message ID from an Updates constructor: extractMessageId + * Extract a message constructor from an Updates constructor: extractMessage + * Extract an update message constructor from an Updates constructor: extractMessageUpdate + * Extract file info from bot API message: extractBotAPIFile + * Fetch (a subset or all) messages in a quick reply shortcut »: messages.getQuickReplyMessages + * Fetch Telegram Stars transactions: payments.getStarsTransactions + * Fetch a default recommended list of saved message tag reactions: messages.getDefaultTagReactions + * Fetch a list of star giveaway options »: payments.getStarsGiveawayOptions + * Fetch all affiliations we have created for a certain peer: payments.getConnectedStarRefBots + * Fetch all stickersets » owned by the current user: messages.getMyStickers + * Fetch all users with birthdays that fall within +1/-1 days, relative to the current day: this method should be invoked by clients every 6-8 hours, and if the result is non-empty, it should be used to appropriately update locally cached birthday information in user.birthday: contacts.getBirthdays + * Fetch basic info about all existing quick reply shortcuts: messages.getQuickReplies + * Fetch custom emoji stickers »: messages.getCustomEmojiDocuments + * Fetch info about a specific bot affiliation »: payments.getConnectedStarRefBot + * Fetch info about specific gifts owned by a peer we control: payments.getSavedStarGift + * Fetch information about a fragment collectible, see here » for more info on the full flow: fragment.getCollectibleInfo + * Fetch main mini app previews, see here » for more info: bots.getPreviewMedias + * Fetch new chats associated with an imported chat folder deep link ». Must be invoked at most every chatlist_update_period seconds (as per the related client configuration parameter »): chatlists.getChatlistUpdates + * Fetch one or more factchecks, see here » for the full flow: messages.getFactCheck + * Fetch popular Main Mini Apps, to be used in the apps tab of global search »: bots.getPopularAppBots + * Fetch saved messages » forwarded from a specific peer, or fetch messages from a monoforum topic »: messages.getSavedHistory + * Fetch saved notification sounds: account.getSavedRingtones + * Fetch the List of active (or active and hidden) stories, see here » for more info on watching stories: stories.getAllStories + * Fetch the blocks of a conference blockchain »: phone.getGroupCallChainBlocks + * Fetch the full active story list of a specific peer: stories.getPeerStories + * Fetch the full list of gifts owned by a peer: payments.getSavedStarGifts + * Fetch the full list of only the IDs of songs currently added to the profile, see here » for more info: account.getSavedMusicIds + * Fetch the full list of saved message tags created by the user: messages.getSavedReactionTags + * Fetch the full list of usable animated message effects »: messages.getAvailableEffects + * Fetch the stories pinned on a peer's profile: stories.getPinnedStories + * Fetch the story archive » of a peer we control: stories.getStoriesArchive + * Fetch updated information about paid media, see here » for the full flow: messages.getExtendedMedia + * Fetches all star gift collections » of a peer: payments.getStarGiftCollections + * Fetches an updatePaidReactionPrivacy update with the current default paid reaction privacy, see here » for more info: messages.getPaidReactionPrivacy + * Find out if a media message's caption can be edited: messages.getMessageEditData + * Finish an SMS job (official clients only): smsjobs.finishJob + * Fork a new green thread and execute the passed function in the background: callFork + * Forwards a list of messages to all peers (users, chats, channels) of the bot: broadcastForwardMessages + * Forwards messages by their IDs: messages.forwardMessages + * Generate MTProto vector hash: genVectorHash + * Generate a login token, for login via QR code.: auth.exportLoginToken + * Generate a story deep link for a specific story: stories.exportStoryLink + * Generate an invoice deep link: payments.exportInvoice + * Generates a temporary profile link for the currently logged-in user: contacts.exportContactToken + * Get PSR logger: getPsrLogger + * Get RTMP URL and stream key for RTMP livestreams. Can be used even before creating the actual RTMP livestream with phone.createGroupCall (the rtmp_stream flag must be set): phone.getGroupCallStreamRtmpUrl + * Get SMS jobs status (official clients only): smsjobs.getStatus + * Get TL namespaces: getMethodNamespaces + * Get TL serializer: getTL + * Get Telegram Premium promotion information: help.getPremiumPromo + * Get Telegram Star revenue statistics »: payments.getStarsRevenueStats + * Get Telegram UTF-8 length of string: mbStrlen + * Get a document by its SHA256 hash, mainly used for gifs: messages.getDocumentByHash + * Get a list of available gifts, see here » for more info: payments.getStarGifts + * Get a list of bots owned by the current user: bots.getAdminedBots + * Get a list of channels/supergroups we left, requires a takeout session, see here » for more info: channels.getLeftChannels + * Get a list of default suggested channel emoji statuses: account.getChannelDefaultEmojiStatuses + * Get a list of default suggested emoji statuses: account.getDefaultEmojiStatuses + * Get a list of peers that can be used to join a group call, presenting yourself as a specific user/channel: phone.getGroupCallJoinAs + * Get a list of sponsored messages for a peer, see here » for more info: messages.getSponsoredMessages + * Get a message to show to the user when starting the bot: getWebMessage + * Get a payment form: payments.getPaymentForm + * Get a set of suggested custom emoji stickers that can be used as group picture: account.getDefaultGroupPhotoEmojis + * Get a set of suggested custom emoji stickers that can be used as profile picture: account.getDefaultProfilePhotoEmojis + * Get a set of suggested custom emoji stickers that can be used in an accent color pattern: account.getDefaultBackgroundEmojis + * Get admin IDs (equal to all user report peers): getAdminIds + * Get all archived stickers: messages.getArchivedStickers + * Get all available chat themes »: account.getChatThemes + * Get all contacts, requires a takeout session, see here » for more info: contacts.getSaved + * Get all groups that can be used as discussion groups: channels.getGroupsForDiscussion + * Get all installed stickers: messages.getAllStickers + * Get all pending and running calls, indexed by user ID: getAllCalls + * Get all saved Telegram Passport documents, for more info see the passport docs »: account.getAllSecureValues + * Get an invite link for a group call or livestream: phone.exportGroupCallInvite + * Get and increase the view counter of a message sent or forwarded from a channel: messages.getMessagesViews + * Get app-specific configuration, see client configuration for more info on the result: help.getAppConfig + * Get async DNS client: getDNSClient + * Get async HTTP client: getHTTPClient + * Get authorization info: getAuthorization + * Get autosave settings: account.getAutoSaveSettings + * Get cached (or eventually re-fetch) server-side config: getConfig + * Get cached server-side config: getCachedConfig + * Get call state: getCallState + * Get changed emoji keywords »: messages.getEmojiKeywordsDifference + * Get channel statistics: stats.getBroadcastStats + * Get channel/supergroup messages: channels.getMessages + * Get channels/supergroups/geogroups we're admin in. Usually called when the user exceeds the limit for owned public channels/supergroups/geogroups, and the user is given the choice to remove one of his channels/supergroups/geogroups: channels.getAdminedPublicChannels + * Get chats in common with a user: messages.getCommonChats + * Get collectible gifts of a specific type currently on resale, see here » for more info: payments.getResaleStarGifts + * Get configuration for CDN file downloads: help.getCdnConfig + * Get contents of remote file asynchronously: fileGetContents + * Get count of online users in a chat: messages.getOnlines + * Get current number of memory-mapped regions, UNIX only: getMaps + * Get current password hint: getHint + * Get days to live of account: account.getAccountTTL + * Get dialog info of specified peers: messages.getPeerDialogs + * Get dialogs manually marked as unread: messages.getDialogUnreadMarks + * Get diffie-hellman configuration: getDhConfig + * Get discussion message from the associated discussion group of a channel to show it on top of the comment section, without actually joining the group: messages.getDiscussionMessage + * Get download info of file: getDownloadInfo + * Get download link of media file: getDownloadLink + * Get event handler (or plugin instance): getEventHandler + * Get extension from file location: getExtensionFromLocation + * Get extension from mime type: getExtensionFromMime + * Get faved stickers: messages.getFavedStickers + * Get featured stickers: messages.getFeaturedStickers + * Get final element of array: end + * Get folders: messages.getDialogFilters + * Get full list of MTProto and API methods: getAllMethods + * Get global privacy settings: account.getGlobalPrivacySettings + * Get group call participants: phone.getGroupParticipants + * Get highscores of a game sent using an inline bot: messages.getInlineGameHighScores + * Get highscores of a game: messages.getGameHighScores + * Get inactive channels and supergroups: channels.getInactiveChannels + * Get info about RTMP streams in a group call or livestream.: phone.getGroupCallStreamChannels + * Get info about a certain wallpaper: account.getWallPaper + * Get info about a channel/supergroup participant: channels.getParticipant + * Get info about a chat invite: messages.getExportedChatInvite + * Get info about a credit card: payments.getBankCardData + * Get info about a group call: phone.getGroupCall + * Get info about a stickerset: messages.getStickerSet + * Get info about an SMS job (official clients only): smsjobs.getSmsJob + * Get info about an unsupported deep link, see here for more info »: help.getDeepLinkInfo + * Get info about chat invites generated by admins: messages.getAdminsWithInvites + * Get info about file: getFileInfo + * Get info about multiple wallpapers: account.getMultiWallPapers + * Get info about the chat invites of a specific chat: messages.getExportedChatInvites + * Get info about the logged-in user, not cached: fullGetSelf + * Get info about the users that joined the chat using a specific chat invite: messages.getChatInviteImporters + * Get information about a language in a localization pack: langpack.getLanguage + * Get information about all languages in a localization pack: langpack.getLanguages + * Get information about the value of a collectible gift »: payments.getUniqueStarGiftValueInfo + * Get installed mask stickers: messages.getMaskStickers + * Get installed themes: account.getThemes + * Get instant view page: messages.getWebPage + * Get link and embed info of a message in a channel/supergroup: channels.exportMessageLink + * Get live location history of a certain user: messages.getRecentLocations + * Get localization pack strings: langpack.getLangPack + * Get localized emoji keywords »: messages.getEmojiKeywords + * Get localized name of the telegram support user: help.getSupportName + * Get localized name, about text and description of a bot (or of the current account, if called by a bot): bots.getBotInfo + * Get logged-in sessions: account.getAuthorizations + * Get logger: getLogger + * Get maximum number of memory-mapped regions, UNIX only: getMaxMaps + * Get media autodownload settings: account.getAutoDownloadSettings + * Get memory profile with memprof: getMemoryProfile + * Get message ranges for saving the user's chat history: messages.getSplitRanges + * Get message reaction list, along with the sender of each reaction: messages.getMessageReactionsList + * Get message reactions »: messages.getMessagesReactions + * Get message statistics: stats.getMessageStats + * Get messages in a reply thread: messages.getReplies + * Get mime type from buffer: getMimeFromBuffer + * Get mime type from file extension: getMimeFromExtension + * Get mime type of file: getMimeFromFile + * Get more info about a Seamless Telegram Login authorization request, for more info click here »: messages.requestUrlAuth + * Get most used peers: contacts.getTopPeers + * Get name, ISO code, localized name and phone codes/patterns of all available countries: help.getCountriesList + * Get namespaced methods (method => namespace): getMethodsNamespaced + * Get new strings in language pack: langpack.getDifference + * Get passport configuration: help.getPassportConfig + * Get payment receipt: payments.getPaymentReceipt + * Get peer settings: messages.getPeerSettings + * Get phone call configuration to be passed to libtgvoip's shared config: phone.getCallConfig + * Get phone call information: getCall + * Get pinned dialogs: messages.getPinnedDialogs + * Get pinned saved dialogs, see here » for more info: messages.getPinnedSavedDialogs + * Get poll results for non-anonymous polls: messages.getPollVotes + * Get poll results: messages.getPollResults + * Get preview of webpage: messages.getWebPagePreview + * Get privacy settings of current account: account.getPrivacy + * Get random integer: randomInt + * Get recent stickers: messages.getRecentStickers + * Get recently used emoji statuses: account.getRecentEmojiStatuses + * Get recently used message reactions: messages.getRecentReactions + * Get recently used t.me links: help.getRecentMeUrls + * Get saved GIFs: messages.getSavedGifs + * Get saved Telegram Passport document, for more info see the passport docs »: account.getSecureValue + * Get saved payment information: payments.getSavedInfo + * Get scheduled messages: messages.getScheduledHistory + * Get scheduled messages: messages.getScheduledMessages + * Get secret chat: getSecretChat + * Get secure random string of specified length: random + * Get sensitive content settings: account.getContentSettings + * Get songs pinned to the user's profile, see here » for more info: users.getSavedMusic + * Get sponsored messages for channel: getSponsoredMessages + * Get statistics for a certain story: stats.getStoryStats + * Get stickers attached to a photo or video: messages.getAttachedStickers + * Get stickers by emoji: messages.getStickers + * Get stories in a story album »: stories.getAlbumStories + * Get story albums created by a peer: stories.getAlbums + * Get strings from a language pack: langpack.getStrings + * Get suggested folders: messages.getSuggestedDialogFilters + * Get supergroup statistics: stats.getMegagroupStats + * Get temporary payment password: account.getTmpPassword + * Get the IDs of the maximum read stories for a set of peers: stories.getPeerMaxIDs + * Get the admin log of a channel/supergroup: channels.getAdminLog + * Get the current Telegram Stars balance of the current account (with peer=inputPeerSelf), or the stars balance of the bot specified in peer: payments.getStarsStatus + * Get the current reaction notification settings »: account.getReactionsNotifySettings + * Get the exact read date of one of our messages, sent to a private chat with another user: messages.getOutboxReadDate + * Get the file that is currently being played: callGetCurrent + * Get the number of results that would be found by a messages.search call with the same parameters: messages.getSearchCounters + * Get the number of stars we have received from the specified user thanks to paid messages »; the received amount will be equal to the sent amount multiplied by stars_paid_message_commission_permille divided by 1000: account.getPaidMessagesRevenue + * Get the participants of a supergroup/channel: channels.getParticipants + * Get the phone call with the specified user ID: getCallByPeer + * Get the progress of a currently running broadcast: getBroadcastProgress + * Get the reaction and interaction list of a story posted to a channel, along with the sender of each reaction: stories.getStoryReactionsList + * Get the set of accent color palettes » that can be used for message accents: help.getPeerColors + * Get the set of accent color palettes » that can be used in profile page backgrounds: help.getPeerProfileColors + * Get the telegram IDs of all contacts.: contacts.getContactIDs + * Get theme information: account.getTheme + * Get type of peer: getType + * Get unread messages where we were mentioned: messages.getUnreadMentions + * Get unread reactions to messages you sent: messages.getUnreadReactions + * Get users and geochats near you, see here » for more info: contacts.getLocated + * Get various warnings to show to the user in the web UI: getWebWarnings + * Get web login widget authorizations: account.getWebAuthorizations + * Get which users read a specific message: only available for groups and supergroups with less than chat_read_mark_size_threshold members, read receipts will be stored for chat_read_mark_expire_period seconds after the message was sent, see client configuration for more info »: messages.getMessageReadParticipants + * Gets a secret chat message: getSecretMessage + * Gets current notification settings for a given user/group, from all users/all groups: account.getNotifySettings + * Gets featured custom emoji stickersets: messages.getFeaturedEmojiStickers + * Gets info of the propic of a user: getPropicInfo + * Gets the current number of boosts of a channel/supergroup: premium.getBoostsStatus + * Gets the default value of the Time-To-Live setting, applied to all new chats: messages.getDefaultHistoryTTL + * Gets the list of currently installed custom emoji stickersets: messages.getEmojiStickers + * Gets the menu button action for a given user or for all users, previously set using bots.setBotMenuButton; users can see this information in the botInfo constructor: bots.getBotMenuButton + * Globally search for posts from public channels » (including those we aren't a member of) containing either a specific hashtag, or a full text query: channels.searchPosts + * Globally search for stories using a hashtag or a location media area, see here » for more info on the full flow: stories.searchPosts + * Got popular message reactions: messages.getTopReactions + * Hide MTProxy/Public Service Announcement information: help.hidePromoData + * Hide or display the participants list in a supergroup: channels.toggleParticipantsHidden + * Hide the active stories of a specific peer, preventing them from being displayed on the action bar on the homescreen: stories.toggleAllStoriesHidden + * Hide the active stories of a user, preventing them from being displayed on the action bar on the homescreen, see here » for more info: stories.togglePeerStoriesHidden + * Hide/unhide message history for new channel/supergroup users: channels.togglePreHistoryHidden + * If the add contact action bar is active, add that user as contact: contacts.acceptContact + * If you sent an invoice requesting a shipping address and the parameter is_flexible was specified, the bot will receive an updateBotShippingQuery update. Use this method to reply to shipping queries: messages.setBotShippingResults + * Import a chat folder deep link », joining some or all the chats in the folder: chatlists.joinChatlistInvite + * Import a chat invite and join a private chat/supergroup/channel: messages.importChatInvite + * Import authorization: importAuthorization + * Import chat history from a foreign chat app into a specific Telegram chat, click here for more info about imported chats »: messages.initHistoryImport + * Imports contacts: saves a full list on the server, adds already registered contacts to the contact list, returns added contacts and their info: contacts.importContacts + * Increment the view counter of one or more stories: stories.incrementStoryViews + * Indicate to the server (from the user side) that the user is still using a web app: messages.prolongWebView + * Inflate stripped photosize to full JPG payload: inflateStripped + * Informs server about a purchase made through the App Store: for official applications only: payments.assignAppStoreTransaction + * Informs server about a purchase made through the Play Store: for official applications only: payments.assignPlayMarketTransaction + * Informs the server about the number of pending bot updates if they haven't been processed for a long time; for bots only: help.setBotUpdatesStatus + * Informs the server that the user has interacted with a sponsored message in one of the ways listed here »: messages.clickSponsoredMessage + * Initialize a takeout session, see here » for more info: account.initTakeoutSession + * Initialize connection: initConnection + * Initialize self-restart hack: initSelfRestart + * Initiate a 2FA password reset: can only be used if the user is already logged-in, see here for more info »: account.resetPassword + * Initiates QR code login: qrLogin + * Install a stickerset: messages.installStickerSet + * Install a theme: account.installTheme + * Install wallpaper: account.installWallPaper + * Install/uninstall wallpaper: account.saveWallPaper + * Installs a previously uploaded photo as a profile photo: photos.updateProfilePhoto + * Internal endpoint used by the download server: processDownloadServerPing + * Internal use: help.editUserInfo + * Invalidate the specified login codes, see here » for more info: account.invalidateSignInCodes + * Invite a set of users to a group call: phone.inviteToGroupCall + * Invite a user to a conference call: phone.inviteConferenceCallParticipant + * Invite users to a channel/supergroup: channels.inviteToChannel + * Invoke a method using a Telegram Business Bot connection, see here » for more info, including a list of the methods that can be wrapped in this constructor: invokeWithBusinessConnection + * Invoke a method within a takeout session, see here » for more info: invokeWithTakeout + * Invoke a request without subscribing the used connection for updates (this is enabled by default for file queries): invokeWithoutUpdates + * Invoke the specified query using the specified API layer: invokeWithLayer + * Invoke with the given message range: invokeWithMessagesRange + * Invokes a query after a successful completion of previous queries: invokeAfterMsgs + * Invokes a query after successful completion of one of the previous queries: invokeAfterMsg + * Join a bot's affiliate program, becoming an affiliate »: payments.connectStarRefBot + * Join a channel/supergroup: channels.joinChannel + * Join a group call: phone.joinGroupCall + * Join channels and supergroups recently added to a chat folder deep link »: chatlists.joinChatlistUpdates + * Launch a prepaid giveaway »: payments.launchPrepaidGiveaway + * Leave a bot's affiliate program »: payments.editConnectedStarRefBot + * Leave a channel/supergroup: channels.leaveChannel + * Leave a group call: phone.leaveGroupCall + * List all chat folder deep links » associated to a folder: chatlists.getExportedInvites + * List all created business chat deep links »: account.getBusinessChatLinks + * List all currently connected business bots »: account.getConnectedBots + * Load channel statistics graph asynchronously: stats.loadAsyncGraph + * Log in to telegram (via CLI or web): start + * Log out an active authorized session by its hash: account.resetAuthorization + * Log out an active web telegram login session: account.resetWebAuthorization + * Logger: logger + * Login as bot: botLogin + * Login as user: phoneLogin + * Login by importing an authorization token: auth.importWebTokenAuthorization + * Login using a redirected login token, generated in case of DC mismatch during QR code login: auth.importLoginToken + * Logout the session: logout + * Look for custom emojis associated to a UTF8 emoji: messages.searchCustomEmoji + * Look for updates of telegram's terms of service: help.getTermsOfServiceUpdate + * MTProto to TD params: MTProtoToTd + * MTProto to TDCLI params: MTProtoToTdcli + * Make a payment using Telegram Stars, see here » for more info: payments.sendStarsForm + * Make a user admin in a basic group: messages.editChatAdmin + * Manually convert HTML to a message and a set of entities: htmlToMessageEntities + * Manually convert markdown to a message and a set of entities: markdownToMessageEntities + * Manually mark dialog as unread: messages.markDialogUnread + * Mark a specific sponsored message » as read: messages.viewSponsoredMessage + * Mark a thread as read: messages.readDiscussion + * Mark all stories up to a certain ID as read, for a given peer; will emit an updateReadStories update to all logged-in sessions: stories.readStories + * Mark channel/supergroup history as read: channels.readHistory + * Mark channel/supergroup message contents as read, emitting an updateChannelReadMessagesContents: channels.readMessageContents + * Mark mentions as read: messages.readMentions + * Mark message reactions » as read: messages.readReactions + * Mark messages as read in a monoforum topic »: messages.readSavedHistory + * Mark new featured stickers as read: messages.readFeaturedStickers + * Mark one or more items of a todo list » as completed or not completed: messages.toggleTodoCompleted + * Mark or unmark a sticker as favorite: messages.faveSticker + * Mark sponsored message as read: viewSponsoredMessage + * Marks message history as read: messages.readHistory + * Marks message history within a secret chat as read: messages.readEncryptedHistory + * Method for fetching previously featured stickers: messages.getOldFeaturedStickers + * Modify autosave settings: account.saveAutoSaveSettings + * Modify the admin rights of a user in a supergroup/channel: channels.editAdmin + * Notifies the sender about the recipient having listened a voice message or watched a video, emitting an updateReadMessagesContents: messages.readMessageContents + * Notify the other user in a private chat that a screenshot of the chat was taken: messages.sendScreenshotNotification + * Notify the user that the sent passport data contains some errors The user will not be able to re-submit their Passport data to you until the errors are fixed (the contents of the field for which you returned the error must change): users.setSecureValueErrors + * Obtain a certain event handler plugin instance: getPlugin + * Obtain a list of Telegram Premium giveaway/gift code » options: payments.getPremiumGiftCodeOptions + * Obtain a list of Telegram Stars gift options » as starsGiftOption constructors: payments.getStarsGiftOptions + * Obtain a list of Telegram Stars topup options » as starsTopupOption constructors: payments.getStarsTopupOptions + * Obtain a list of active, expired or cancelled Telegram Star subscriptions »: payments.getStarsSubscriptions + * Obtain a list of bot commands for the specified bot scope and language code: bots.getBotCommands + * Obtain a list of channels where the user can post stories: stories.getChatsToSend + * Obtain a list of emoji statuses » for owned collectible gifts: account.getCollectibleEmojiStatuses + * Obtain a list of related languages that must be used when fetching emoji keyword lists »: messages.getEmojiKeywordsLanguages + * Obtain a list of similarly themed bots, selected based on similarities in their subscriber bases, see here » for more info: bots.getBotRecommendations + * Obtain a list of similarly themed public channels, selected based on similarities in their subscriber bases: channels.getChannelRecommendations + * Obtain a list of sponsored peer search results for a given query: contacts.getSponsoredPeers + * Obtain a list of suggested mini apps with available affiliate programs: payments.getSuggestedStarRefBots + * Obtain a prepared inline message generated by a mini app: invoked when handling web_app_send_prepared_message events: messages.getPreparedInlineMessage + * Obtain a preview of the possible attributes (chosen randomly) a gift » can receive after upgrading it to a collectible gift », see here » for more info: payments.getStarGiftUpgradePreview + * Obtain all chat themes » associated to owned collectible gifts »: account.getUniqueGiftChatThemes + * Obtain available message reactions »: messages.getAvailableReactions + * Obtain configuration for two-factor authorization with password: account.getPassword + * Obtain forwards of a story as a message to public chats and reposts by public channels: stats.getStoryPublicForwards + * Obtain full info about a set of stories by their IDs: stories.getStoriesByID + * Obtain info about Telegram Star transactions » using specific transaction IDs: payments.getStarsTransactionsByID + * Obtain info about a collectible gift » using a slug obtained from a collectible gift link »: payments.getUniqueStarGift + * Obtain info about the view count, forward count, reactions and recent viewers of one or more stories: stories.getStoriesViews + * Obtain information about a Telegram Premium giftcode »: payments.checkGiftCode + * Obtain information about a Telegram Premium giveaway »: payments.getGiveawayInfo + * Obtain information about a chat folder deep link »: chatlists.checkChatlistInvite + * Obtain information about a direct link Mini App: messages.getBotApp + * Obtain information about specific saved message dialogs » or monoforum topics »: messages.getSavedDialogsByID + * Obtain the API ID UI template: getWebAPITemplate + * Obtain the latest read story ID for all peers when first logging in, returned as a list of updateReadStories updates, see here » for more info: stories.getAllReadPeerStories + * Obtain the list of users that have viewed a specific story we posted: stories.getStoryViewsList + * Obtain user info from a temporary profile link: contacts.importContactToken + * Obtain which peers are we currently boosting, and how many boost slots we have left: premium.getMyBoosts + * Obtains a list of messages, indicating to which other public channels was a channel message forwarded.: stats.getMessagePublicForwards + * Obtains a list of peers that can be used to send messages in a specific group: channels.getSendAs + * Obtains a pipe that can be used to upload a file from a stream: getStreamPipe + * Obtains info about the boosts that were applied to a certain channel or supergroup (admins only): premium.getBoostsList + * Obtains information about a chat export file, generated by a foreign chat app, click here for more info about imported chats »: messages.checkHistoryImport + * Official apps only, reports that the SMS authentication code wasn't delivered: auth.reportMissingCode + * Official clients only, invoke with Apple push verification: invokeWithApnsSecret + * Official clients only, invoke with Google Play Integrity token: invokeWithGooglePlayIntegrity + * Official clients only: re-execute a method call that required reCAPTCHA verification via a RECAPTCHA_CHECK_%s__%s, where the first placeholder is the action, and the second one is the reCAPTCHA key ID: invokeWithReCaptcha + * Once the user has confirmed their payment and shipping details, the bot receives an updateBotPrecheckoutQuery update.: messages.setBotPrecheckoutResults + * Only useful when consuming MadelineProto updates through an API in another language (like Javascript), **absolutely not recommended when directly writing MadelineProto bots**: getUpdates + * Open a Main Mini App: messages.requestMainWebView + * Open a bot mini app from a direct Mini App deep link, sending over user information after user confirmation: messages.requestAppWebView + * Open a bot mini app, sending over user information after user confirmation: messages.requestWebView + * Open a bot mini app: messages.requestSimpleWebView + * Opens a file in append-only mode: openFileAppendOnly + * Optional: notify the server that the user is currently busy in a call: this will automatically refuse all incoming phone calls until the current phone call is ended: phone.receivedCall + * Parse, update and store settings: updateSettings + * Pause or unpause a specific chat, temporarily disconnecting it from all business bots »: account.toggleConnectedBotPaused + * Pauses playback of the current audio file in the call: pausePlay + * Perform static analysis on a certain event handler class, to make sure it satisfies some performance requirements: validateEventHandlerClass + * Permanently disconnect a specific chat from all business bots » (equivalent to specifying it in recipients.exclude_users during initial configuration with account.updateConnectedBot »); to reconnect of a chat disconnected using this method the user must reconnect the entire bot by invoking account.updateConnectedBot »: account.disablePeerConnectedBot + * Pin a message: messages.updatePinnedMessage + * Pin or unpin a saved message dialog »: messages.toggleSavedDialogPin + * Pin or unpin one or more stories: stories.togglePinned + * Pin some stories to the top of the profile, see here » for more info: stories.togglePinnedToTop + * Pin/unpin a dialog: messages.toggleDialogPin + * Pins a received gift on top of the profile of the user or owned channels by using payments.toggleStarGiftsPinnedToTop: payments.toggleStarGiftsPinnedToTop + * Play file in call: callPlay + * Play files on hold in call: callPlayOnHold + * Positive modulo: posmod + * Press an inline callback button and get a callback answer from the bot: messages.getBotCallbackAnswer + * Provide a buffered reader for a file, URL or amp stream: openBuffered + * Provide a stream for a file, URL or amp stream: getStream + * Query an inline bot: messages.getInlineBotResults + * Rate a call, returns info about the rating message sent to the official VoIP bot: phone.setCallRating + * Rate transcribed voice message: messages.rateTranscribedAudio + * Re-join a private channel associated to an active Telegram Star subscription »: payments.fulfillStarsSubscription + * React to a story: stories.sendReaction + * React to message: messages.sendReaction + * Refresh full peer cache for a certain peer: refreshFullPeerCache + * Refresh peer cache for a certain peer: refreshPeerCache + * Refund a Telegram Stars transaction, see here » for more info: payments.refundStarsCharge + * Register device to receive PUSH notifications: account.registerDevice + * Remove a sticker from the set where it belongs. The sticker set must have been created by the current user/bot: stickers.removeStickerFromSet + * Remove participants from a conference call: phone.deleteConferenceCallParticipants + * Removes all contacts without an associated Telegram account: contacts.resetSaved + * Rename a quick reply shortcut.: messages.editQuickReplyShortcut + * Rename a story albums », or add, delete or reorder stories in it: stories.updateAlbum + * Renames a stickerset: stickers.renameStickerSet + * Renders prometheus stats using the specified renderer: renderPromStats + * Reorder a main mini app previews, see here » for more info: bots.reorderPreviewMedias + * Reorder active usernames: channels.reorderUsernames + * Reorder folders: messages.updateDialogFiltersOrder + * Reorder installed stickersets: messages.reorderStickerSets + * Reorder pinned dialogs: messages.reorderPinnedDialogs + * Reorder pinned saved message dialogs »: messages.reorderPinnedSavedDialogs + * Reorder quick reply shortcuts: messages.reorderQuickReplies + * Reorder story albums on a profile »: stories.reorderAlbums + * Reorder the star gift collections » on an owned peer's profile: payments.reorderStarGiftCollections + * Reorder usernames associated to a bot we own: bots.reorderUsernames + * Reorder usernames associated with the currently logged-in user: account.reorderUsernames + * Replace a sticker in a stickerset »: stickers.replaceSticker + * Replace the contents of an entire blocklist, see here for more info »: contacts.setBlocked + * Report a message in a chat for violation of telegram's Terms of Service: messages.report + * Report a message reaction: messages.reportReaction + * Report a native antispam false positive: channels.reportAntiSpamFalsePositive + * Report a new incoming chat for spam, if the peer settings of the chat allow us to do that: messages.reportSpam + * Report a peer for violation of telegram's Terms of Service: account.reportPeer + * Report a profile photo of a dialog: account.reportProfilePhoto + * Report a secret chat for spam: messages.reportEncryptedSpam + * Report a sponsored message », see here » for more info on the full flow: messages.reportSponsoredMessage + * Report a story: stories.report + * Report an error to the previously set peer: report + * Report memory profile with memprof: reportMemoryProfile + * Reports some messages from a user in a supergroup as spam; requires administrator rights in the supergroup: channels.reportSpam + * Represents a list of emoji categories, to be used when choosing a sticker: messages.getEmojiStickerGroups + * Represents a list of emoji categories, to be used when selecting custom emojis to set as custom emoji status: messages.getEmojiStatusGroups + * Represents a list of emoji categories, to be used when selecting custom emojis to set as profile picture: messages.getEmojiProfilePhotoGroups + * Represents a list of emoji categories: messages.getEmojiGroups + * Request VoIP call: requestCall + * Request an SMS code via Firebase: auth.requestFirebaseSms + * Request recovery code of a 2FA password, only for accounts with a recovery email configured: auth.requestPasswordRecovery + * Request secret chat: requestSecretChat + * Resend the code to verify an email to use as 2FA recovery method: account.resendPasswordEmail + * Resend the login code via another medium, the phone code type is determined by the return value of the previous auth.sendCode/auth.resendCode: see login for more info: auth.resendCode + * Reset all active web telegram login sessions: account.resetWebAuthorizations + * Reset rating of top peer: contacts.resetTopPeerRating + * Reset the 2FA password using the recovery code sent using auth.requestPasswordRecovery: auth.recoverPassword + * Reset the login email »: auth.resetLoginEmail + * Reset the update state and fetch all updates from the beginning: resetUpdateState + * Resets all notification settings from users and groups: account.resetNotifySettings + * Resolve a business chat deep link »: account.resolveBusinessChatLink + * Resolve a phone number to get user info, if their privacy settings allow it: contacts.resolvePhone + * Restart update loop: restart + * Resumes playback of the current audio file in the call: resumePlay + * Rethrow exception into event loop: rethrow + * Return all message drafts.: messages.getAllDrafts + * Return current settings: getSettings + * Returns a Telegram Passport authorization form for sharing data with a service: account.getAuthorizationForm + * Returns a URL for a Telegram Ad platform account that can be used to set up advertisements for channel/bot in peer, paid using the Telegram Stars owned by the specified peer, see here » for more info: payments.getStarsRevenueAdsAccountUrl + * Returns a list of available wallpapers: account.getWallPapers + * Returns a set of useful suggestions and PSA/MTProxy sponsored peers, see here » for more info: help.getPromoData + * Returns an HTTP URL which can be used to automatically log in into translation platform and suggest new emoji keywords ». The URL will be valid for 30 seconds after generation: messages.getEmojiURL + * Returns attachment menu entry for a bot mini app that can be launched from the attachment menu »: messages.getAttachMenuBot + * Returns chat basic info on their IDs: messages.getChats + * Returns content of a web file, by proxying the request through telegram, see the webfile docs for more info: upload.getWebFile + * Returns current configuration, including data center configuration: help.getConfig + * Returns fetch the full list of custom emoji IDs » that cannot be used in channel emoji statuses »: account.getChannelRestrictedStatusEmojis + * Returns identifiers of pinned or always included chats from a chat folder imported using a chat folder deep link », which are suggested to be left when the chat folder is deleted: chatlists.getLeaveChatlistSuggestions + * Returns info on data center nearest to the user: help.getNearestDc + * Returns information about the next messages of the specified type in the chat split by days: messages.getSearchResultsCalendar + * Returns information on update availability for the current application: help.getAppUpdate + * Returns installed attachment menu bot mini apps »: messages.getAttachMenuBots + * Returns list of chats with non-default notification settings: account.getNotifyExceptions + * Returns localized text of a text message with an invitation: help.getInviteText + * Returns sparse positions of messages of the specified type in the chat to be used for shared media scroll implementation: messages.getSearchResultsPositions + * Returns the conversation history with one interlocutor / within a chat: messages.getHistory + * Returns the current saved dialog list » or monoforum topic list »: messages.getSavedDialogs + * Returns the current user dialog list: messages.getDialogs + * Returns the current user's contact list: contacts.getContacts + * Returns the list of blocked users: contacts.getBlocked + * Returns the list of messages by their IDs: messages.getMessages + * Returns the list of user photos: photos.getUserPhotos + * Returns the lists of boost that were applied to a channel/supergroup by a specific user (admins only): premium.getUserBoosts + * Returns the session name: getSessionName + * Returns the support user for the "ask a question" feature: help.getSupport + * Returns timezone information that may be used elsewhere in the API, such as to set Telegram Business opening hours »: help.getTimezonesList + * Returns users found by username substring: contacts.search + * Returns whether the current user is a bot: isSelfBot + * Returns whether the current user is a premium user, cached: isPremium + * Returns whether the current user is a user: isSelfUser + * Reupload telegram file: uploadFromTgfile + * Save a message draft associated to a chat: messages.saveDraft + * Save a prepared inline message, to be shared by the user of the mini app using a web_app_send_prepared_message event: messages.savePreparedInlineMessage + * Save a theme: account.saveTheme + * Save or remove saved notification sound: account.saveRingtone + * Save phone call debug information: phone.saveCallLog + * Saves logs of application on the server: help.saveAppLog + * Search for custom emoji stickersets »: messages.searchEmojiStickerSets + * Search for messages and peers globally: messages.searchGlobal + * Search for messages: messages.search + * Search for stickers using AI-powered keyword search: messages.searchStickers + * Search for stickersets: messages.searchStickerSets + * Securely save Telegram Passport document, for more info see the passport docs »: account.saveSecureValue + * Send VoIP signaling data: phone.sendSignalingData + * Send a custom request from a mini bot app, triggered by a web_app_invoke_custom_method event »: bots.invokeWebViewCustomMethod + * Send a media: messages.sendMedia + * Send a quick reply shortcut »: messages.sendQuickReplyMessages + * Send a result obtained using messages.getInlineBotResults: messages.sendInlineBotResult + * Send an album or grouped media: messages.sendMultiMedia + * Send an email verification code: account.sendVerifyEmailCode + * Send compiled payment form: payments.sendPaymentForm + * Send confirmation code to cancel account deletion, for more info click here »: account.sendConfirmPhoneCode + * Send one or more chosen peers, as requested by a keyboardButtonRequestPeer button: messages.sendBotRequestedPeer + * Send phone call debug data to server: phone.saveCallDebug + * Send scheduled messages right away: messages.sendScheduledMessages + * Send the verification phone code for telegram passport: account.sendVerifyPhoneCode + * Send typing event by the current user to a secret chat: messages.setEncryptedTyping + * Sends a Telegram Passport authorization form, effectively sharing data with the service: account.acceptAuthorization + * Sends a current user typing event (see SendMessageAction for all event types) to a conversation partner or group: messages.setTyping + * Sends a custom request; for bots only: bots.sendCustomRequest + * Sends a document: sendDocument + * Sends a gif: sendGif + * Sends a list of messages to all peers (users, chats, channels) of the bot: broadcastMessages + * Sends a message to a chat: messages.sendMessage + * Sends a message to all report peers (admins of the bot): sendMessageToAdmins + * Sends a message with a file attachment to a secret chat: messages.sendEncryptedFile + * Sends a message: sendMessage + * Sends a photo: sendDocumentPhoto + * Sends a photo: sendPhoto + * Sends a service message to a secret chat: messages.sendEncryptedService + * Sends a sticker: sendSticker + * Sends a text message to a secret chat: messages.sendEncrypted + * Sends a video: sendVideo + * Sends a voice: sendVoice + * Sends an audio: sendAudio + * Sends an updateCustomEvent update to the event handler: sendCustomEvent + * Sends one or more paid Telegram Star reactions », transferring Telegram Stars » to a channel's balance: messages.sendPaidReaction + * Set NOOP update handler, ignoring all updates: setNoop + * Set a custom emoji stickerset for supergroups. Only usable after reaching at least the boost level » specified in the group_emoji_stickers_level_min » config parameter: channels.setEmojiStickers + * Set a custom wallpaper » in a specific private chat with another user: messages.setChatWallPaper + * Set a list of Telegram Business away messages: account.updateBusinessAwayMessage + * Set a list of Telegram Business greeting messages: account.updateBusinessGreetingMessage + * Set account self-destruction period: account.setAccountTTL + * Set an emoji status for a channel or supergroup: channels.updateEmojiStatus + * Set an emoji status: account.updateEmojiStatus + * Set bot command list: bots.setBotCommands + * Set global privacy settings: account.setGlobalPrivacySettings + * Set localized name, about text and description of a bot (or of the current account, if called by a bot): bots.setBotInfo + * Set maximum Time-To-Live of all messages in the specified chat: messages.setHistoryTTL + * Set or remove the Telegram Business introduction »: account.updateBusinessIntro + * Set output file or stream for incoming OPUS audio packets in a call: callSetOutput + * Set peer(s) where to send errors occurred in the event loop: setReportPeers + * Set sensitive content settings (for viewing or hiding NSFW content): account.setContentSettings + * Set stickerset thumbnail: stickers.setStickerSetThumb + * Set the API ID UI template: setWebApiTemplate + * Set the callback answer to a user button press (bots only): messages.setBotCallbackAnswer + * Set the default peer that will be used to join a group call in a specific dialog: phone.saveDefaultGroupCallJoinAs + * Set the default suggested admin rights for bots being added as admins to channels, see here for more info on how to handle them »: bots.setBotBroadcastDefaultAdminRights + * Set the default suggested admin rights for bots being added as admins to groups, see here for more info on how to handle them »: bots.setBotGroupDefaultAdminRights + * Set time-to-live of current session: account.setAuthorizationTTL + * Set webhook update handler: setWebhook + * Set whether all users should join a discussion group in order to comment on a post »: channels.toggleJoinToSend + * Set whether all users should request admin approval to join the group »: channels.toggleJoinRequest + * Sets the menu button action » for a given user or for all users: bots.setBotMenuButton + * Should be called after the user hides the report spam/add as contact bar of a new chat, effectively prevents the user from executing the actions specified in the action bar »: messages.hidePeerSettingsBar + * Show or hide the real-time chat translation popup for a certain chat: messages.togglePeerTranslations + * Specify a set of Telegram Business opening hours.: account.updateBusinessWorkHours + * Start a conversation with a bot using a deep linking parameter: messages.startBot + * Start a scheduled group call: phone.startScheduledGroupCall + * Start multiple instances of MadelineProto and the event handlers (enables async): startAndLoopMulti + * Start or stop recording a group call: the recorded audio and video streams will be automatically sent to Saved messages (the chat with ourselves): phone.toggleGroupCallRecord + * Start screen sharing in a call: phone.joinGroupCallPresentation + * Stop getting notifications about discussion replies of a certain user in @replies: contacts.blockFromReplies + * Stop screen sharing in a group call: phone.leaveGroupCallPresentation + * Stop update loop: stop + * Stops playing all files in the call, clears the main and the hold playlist: stopPlay + * Store RSA keys for CDN datacenters: getCdnConfig + * Submit requested order information for validation: payments.validateRequestedInfo + * Subscribe or unsubscribe to a scheduled group call: phone.toggleGroupCallStartSubscription + * Subscribe to event handler updates for a channel/supergroup we're not a member of: subscribeToUpdates + * Suggests a short name for a given stickerpack name: stickers.suggestShortName + * Telegram UTF-8 multibyte split: mbStrSplit + * Telegram UTF-8 multibyte substring: mbSubstr + * Terminate a group call: phone.discardGroupCall + * Terminate a takeout session, see here » for more info: account.finishTakeoutSession + * Terminate webview interaction started with messages.requestWebView, sending the specified message to the chat on behalf of the user: messages.sendWebViewResultMessage + * Terminates all user's authorized sessions except for the current one: auth.resetAuthorizations + * Test fibers: testFibers + * Toggle autotranslation in a channel, for all users: see here » for more info: channels.toggleAutotranslation + * Toggle contact sign up notifications: account.setContactSignUpNotification + * Toggle supergroup slow mode: if enabled, users will only be able to send one message every seconds seconds: channels.toggleSlowMode + * Transcribe voice message: messages.transcribeAudio + * Transfer a collectible gift to another user or channel: can only be used if transfer is free (i.e. messageActionStarGiftUnique.transfer_stars is not set); see here » for more info on the full flow (including the different flow to use in case the transfer isn't free): payments.transferStarGift + * Translate a given text: messages.translateText + * Turn a basic group into a supergroup: messages.migrateChat + * Uninstall a stickerset: messages.uninstallStickerSet + * Unpack base256 signed int: unpackSignedInt + * Unpack base256 signed long to string: unpackSignedLongString + * Unpack base256 signed long: unpackSignedLong + * Unpack binary double: unpackDouble + * Unpack bot API file ID: unpackFileId + * Unpin all pinned messages: messages.unpinAllMessages + * Unset event handler: unsetEventHandler + * Update SMS job settings (official clients only): smsjobs.updateSettings + * Update folder: messages.updateDialogFilter + * Update our birthday, see here » for more info: account.updateBirthday + * Update the accent color and background custom emoji » of a channel: channels.updateColor + * Update the accent color and background custom emoji » of the current account: account.updateColor + * Update the description of a saved message tag »: messages.updateSavedReactionTag + * Update the keywords, emojis or mask coordinates of a sticker: stickers.changeSticker + * Update theme: account.updateTheme + * Updates current user profile photo: photos.uploadProfilePhoto + * Updates online user status: account.updateStatus + * Updates user profile: account.updateProfile + * Upgrade a gift to a collectible gift: can only be used if the upgrade was already paid by the gift sender; see here » for more info on the full flow (including the different flow to use in case the upgrade was not paid by the gift sender): payments.upgradeStarGift + * Upload a custom profile picture for a contact, or suggest a new profile picture to a contact: photos.uploadContactProfilePhoto + * Upload a file and associate it to a chat (without actually sending it to the chat): messages.uploadMedia + * Upload a media file associated with an imported chat, click here for more info »: messages.uploadImportedMedia + * Upload encrypted file and associate it to a secret chat (without actually sending it to the chat): messages.uploadEncryptedFile + * Upload file from URL: uploadFromUrl + * Upload file from callable: uploadFromCallable + * Upload file from stream: uploadFromStream + * Upload file to secret chat: uploadEncrypted + * Upload file: upload + * Upload notification sound, use account.saveRingtone to convert it and add it to the list of saved notification sounds: account.uploadRingtone + * Upload theme: account.uploadTheme + * Uploads a Telegram Story: stories.sendStory + * Uploads a document without sending it: uploadDocument + * Uploads a gif without actually sending it: uploadGif + * Uploads a photo without sending it to the chat: uploadDocumentPhoto + * Uploads a photo, without sending it: uploadPhoto + * Uploads a sticker without sending it: uploadSticker + * Uploads a video, without actually sending it: uploadVideo + * Uploads a voice without actually sending it to the chat: uploadVoice + * Uploads an audio without actually sending it: uploadAudio + * Use this method to obtain the online statuses of all contacts with an accessible Telegram account: contacts.getStatuses + * Use this method to set the score of the specified user in a game sent as a normal message (bots only): messages.setGameScore + * Use this method to set the score of the specified user in a game sent as an inline message (bots only): messages.setInlineGameScore + * Use this to accept a Seamless Telegram Login authorization request, for more info click here »: messages.acceptUrlAuth + * Used by the user to relay data from an opened reply keyboard bot mini app to the bot that owns it: messages.sendWebViewData + * Used for Telegram Gateway verification messages »: indicate to the server that one or more messages were received by the client, if requested by the message.report_delivery_until_date flag or the equivalent flag in push notifications: messages.reportMessagesDelivery + * Users may also choose to display messages from all topics of a forum as if they were sent to a normal group, using a "View as messages" setting in the local client: this setting only affects the current account, and is synced to other logged in sessions using this method: channels.toggleViewForumAsMessages + * Validates a username and checks availability: account.checkUsername + * Verify a new phone number to associate to the current account: account.sendChangePhoneCode + * Verify a phone number for telegram passport: account.verifyPhone + * Verify a user or chat on behalf of an organization »: bots.setCustomVerification + * Verify an email address: account.verifyEmail + * Verify an email to use as 2FA recovery method: account.confirmPasswordEmail + * View and search recently sent media.: messages.searchSentMedia + * Vote in a poll: messages.sendVote + * When called, skips to the next file in the playlist: skipPlay + * When client-side passcode lock feature is enabled, will not show message texts in incoming PUSH notifications: account.updateDeviceLocked + * When was full info for this chat last cached: fullChatLastUpdated + * Whether the currently playing audio file is paused: isPlayPaused + * Whether the user will receive notifications when contacts sign up: account.getContactSignUpNotification + * Whether this is altervista: isAltervista + * Whether we can convert any audio/video file to a VoIP OGG OPUS file, or the files must be preconverted using @libtgvoipbot: canConvertOgg + * Whether we can convert any audio/video file using ffmpeg: canUseFFmpeg + * Whether we're an IPC client instance: isIpc + * Whether we're an IPC server process (as opposed to an event handler): isIpcWorker + * Whether we're currently connected to the test DCs: isTestMode + * Withdraw funds from a channel or bot's star balance »: payments.getStarsRevenueWithdrawalUrl + * Wrap a Message constructor into an abstract Message object: wrapMessage + * Wrap a Pin constructor into an abstract Pinned object: wrapPin + * Wrap a media constructor into an abstract Media object: wrapMedia + * Wrap an Update constructor into an abstract Update object: wrapUpdate + * account.deletePasskey + * account.getPasskeys + * account.initPasskeyRegistration + * account.registerPasskey + * aicompose.createTone + * aicompose.deleteTone + * aicompose.getTone + * aicompose.getToneExample + * aicompose.getTones + * aicompose.saveTone + * aicompose.updateTone + * auth.checkPaidAuth + * auth.finishPasskeyLogin + * auth.initPasskeyLogin + * base64URL decode: base64urlDecode + * bots.checkUsername + * bots.createBot + * bots.editAccessSettings + * bots.exportBotToken + * bots.getAccessSettings + * bots.getRequestedWebViewButton + * bots.requestWebViewButton + * contacts.updateContactNote + * messages.addPollAnswer + * messages.checkUrlAuthMatchCode + * messages.composeMessageWithAI + * messages.createForumTopic + * messages.declineUrlAuth + * messages.deleteParticipantReaction + * messages.deleteParticipantReactions + * messages.deletePollAnswer + * messages.deleteTopicHistory + * messages.editChatCreator + * messages.editChatParticipantRank + * messages.editForumTopic + * messages.getEmojiGameInfo + * messages.getForumTopics + * messages.getForumTopicsByID + * messages.getFutureChatCreatorAfterLeave + * messages.getPersonalChannelHistory + * messages.getUnreadPollVotes + * messages.readPollVotes + * messages.reorderPinnedForumTopics + * messages.reportMusicListen + * messages.reportReadMetrics + * messages.setBotGuestChatResult + * messages.summarizeText + * messages.updatePinnedForumTopic + * null-byte RLE decode: rleDecode + * null-byte RLE encode: rleEncode + * payments.craftStarGift + * payments.getCraftStarGifts + * payments.getStarGiftActiveAuctions + * payments.getStarGiftAuctionAcquiredGifts + * payments.getStarGiftAuctionState + * payments.getStarGiftUpgradeAttributes + * payments.resolveStarGiftOffer + * payments.sendStarGiftOffer + * phone.deleteGroupCallMessages + * phone.deleteGroupCallParticipantMessages + * phone.getGroupCallStars + * phone.saveDefaultSendAs + * phone.sendGroupCallEncryptedMessage + * phone.sendGroupCallMessage + * stats.getPollStats + * stories.startLive + * users.suggestBirthday +* [Contributing](https://docs.madelineproto.xyz/docs/CONTRIB.html) - You can contribute in various ways. + * [Translation](https://docs.madelineproto.xyz/docs/CONTRIB.html#translation) + * [Contribution guide](https://docs.madelineproto.xyz/docs/CONTRIB.html#contribution-guide) + * [Credits](https://docs.madelineproto.xyz/docs/CONTRIB.html#credits) +* [Web templates for `$MadelineProto->start()`](https://docs.madelineproto.xyz/docs/TEMPLATES.html) - The web template used for the $MadelineProto->start() and API ID web UIs can be changed. + diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/composer.json b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/composer.json new file mode 100644 index 0000000..799799b --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/composer.json @@ -0,0 +1,152 @@ +{ + "name": "danog/madelineproto", + "description": "Async PHP client API for the telegram MTProto protocol.", + "type": "library", + "license": "AGPL-3.0-only", + "homepage": "https://docs.madelineproto.xyz", + "keywords": [ + "telegram", + "mtproto", + "protocol", + "bytes", + "messenger", + "client", + "PHP", + "video", + "stickers", + "audio", + "files", + "GB" + ], + "conflict": { + "krakjoe/pthreads-polyfill": "*", + "ext-pthreads": "*" + }, + "require": { + "php-64bit": ">=8.2", + "danog/primemodule": "^1.0.13", + "symfony/polyfill-mbstring": ">=1.32", + "ext-json": "*", + "ext-xml": "*", + "ext-dom": "*", + "ext-filter": "*", + "ext-hash": "*", + "ext-zlib": "*", + "ext-fileinfo": "*", + "amphp/amp": "^3.1.1", + "amphp/http-client": "^5.3.4", + "amphp/websocket-client": "^2.0.2", + "amphp/http": "^2.1.2", + "amphp/socket": "^2.3.1", + "amphp/dns": "^2.4.0", + "amphp/byte-stream": "^2.1.2", + "amphp/file": "^3.2.0", + "amphp/mysql": "^3", + "amphp/postgres": "^2.1.1", + "danog/dns-over-https": "^1.0.1", + "amphp/http-client-cookies": "^2", + "danog/tg-file-decoder": "^1.0.2", + "league/uri": "^7.5.1", + "danog/ipc": "^1.0.1", + "amphp/log": "^2", + "danog/loop": "^1.1.1", + "phpseclib/phpseclib": "^3.0.47", + "amphp/redis": "^2.0.3", + "psr/http-factory": "^1.1.0", + "psr/log": "^3.0.2", + "webmozart/assert": "^1.12.1", + "bacon/bacon-qr-code": "^3.0.1", + "nikic/php-parser": "^5.6.2", + "revolt/event-loop": "^1.0.7", + "danog/async-orm": "^1.1.4", + "danog/telegram-entities": "^1.0.5", + "danog/better-prometheus": "^0.1.1", + "amphp/http-server": "^3.4.3", + "danog/tg-dialog-id": "^2", + "symfony/polyfill-php83": "^1.32" + }, + "require-dev": { + "quasarstream/webrtc": "^1.0", + "ext-ctype": "*", + "danog/phpdoc": "^0.1.24", + "phpunit/phpunit": "^9.6.29", + "amphp/phpunit-util": "^3", + "bamarni/composer-bin-plugin": "1.8.2", + "symfony/yaml": "^6.4.26", + "revolt/event-loop-adapter-react": "^1.1.1", + "dg/bypass-finals": "dev-master", + "brianium/paratest": "^6.11.1", + "vimeo/psalm": "dev-master", + "sebastian/diff": "^4.0" + }, + "suggest": { + "ext-primemodule": "Install the primemodule and FFI extensions to speed up MadelineProto (https://prime.madelineproto.xyz)", + "ext-ffi": "Install the primemodule and FFI extensions to speed up MadelineProto (https://prime.madelineproto.xyz)", + "ext-pdo": "Install the pdo extension to store session data on MySQL", + "ext-openssl": "Install the openssl extension for faster crypto", + "ext-uv": "Install the uv extension to greatly speed up MadelineProto!", + "ext-gmp": "Install the gmp extension to speed up authorization", + "ext-bcmath": "Install the bcmath extension to speed up authorization" + }, + "authors": [ + { + "name": "Daniil Gentili", + "email": "daniil@daniil.it" + } + ], + "autoload": { + "psr-4": { + "danog\\MadelineProto\\": "src" + }, + "files": [ + "src/polyfill.php" + ] + }, + "autoload-dev": { + "psr-4": { + "danog\\MadelineProto\\Test\\": "tests/danog/MadelineProto", + "danog\\MadelineProto\\": "tools/" + }, + "files": [ + "tools/build_docs/schemas.php", + "tools/build_docs/merge.php", + "tools/build_docs/layerUpgrade.php" + ] + }, + "scripts": { + "build": [ + "@docs", + "@docs-fix", + "@cs-fix", + "@fuzz", + "@file_ref_map", + "@psalm", + "@test-light" + ], + "test": [ + "@paratest" + ], + "test-light": [ + "@paratest-light" + ], + "cs-fix": "PHP_CS_FIXER_IGNORE_ENV=1 php -d pcre.jit=0 vendor/bin/php-cs-fixer fix -v", + "psalm": "psalm --no-cache --threads=10", + "docs": "php tools/build_docs.php", + "fuzz": "php tools/fuzzer.php", + "file_ref_map": "php tools/gen_filerefmap.php", + "docs-fix": "tools/fix_docs.sh", + "paratest": "@php -dzend.assertions=1 ./vendor/bin/paratest -fv", + "paratest-light": "@php -dzend.assertions=1 ./vendor/bin/paratest -fvc phpunit-light.xml", + "bin": "echo 'bin not installed'", + "post-install-cmd": ["@composer bin all install --ansi"], + "post-update-cmd": ["@composer bin all update --ansi"] + }, + "config": { + "allow-plugins": { + "bamarni/composer-bin-plugin": true, + "phabel/phabel": true, + "dealerdirect/phpcodesniffer-composer-installer": true, + "symfony/thanks": true + } + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/docs/template/disallow.json b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/docs/template/disallow.json new file mode 100644 index 0000000..6f7ab35 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/docs/template/disallow.json @@ -0,0 +1,41 @@ +{ + "__messages.getHistory": "Please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html)", + "__channels.getMessages": "Please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html)", + "__messages.getMessages": "Please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html)", + "account.updatePasswordSettings": "You cannot use this method directly; use $MadelineProto->update2fa($params), instead (see https:\/\/docs.madelineproto.xyz for more info)", + "account.getPasswordSettings": "You cannot use this method directly; use $MadelineProto->update2fa($params), instead (see https:\/\/docs.madelineproto.xyz for more info)", + "messages.receivedQueue": "You cannot use this method directly", + "messages.getDhConfig": "You cannot use this method directly, instead use $MadelineProto->getDhConfig();", + "auth.bindTempAuthKey": "You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https:\/\/docs.madelineproto.xyz\/docs\/SETTINGS.html for more info", + "auth.exportAuthorization": "You cannot use this method directly, use $MadelineProto->exportAuthorization() instead, see https:\/\/docs.madelineproto.xyz\/docs\/LOGIN.html", + "auth.importAuthorization": "You cannot use this method directly, use $MadelineProto->importAuthorization($authorization) instead, see https:\/\/docs.madelineproto.xyz\/docs\/LOGIN.html", + "auth.logOut": "You cannot use this method directly, use the logout method instead (see https:\/\/docs.madelineproto.xyz for more info)", + "auth.importBotAuthorization": "You cannot use this method directly, use the botLogin method instead (see https:\/\/docs.madelineproto.xyz for more info)", + "auth.sendCode": "You cannot use this method directly, use the phoneLogin method instead (see https:\/\/docs.madelineproto.xyz for more info)", + "auth.signIn": "You cannot use this method directly, use the completePhoneLogin method instead (see https:\/\/docs.madelineproto.xyz for more info)", + "auth.checkPassword": "You cannot use this method directly, use the complete2falogin method instead (see https:\/\/docs.madelineproto.xyz for more info)", + "auth.signUp": "You cannot use this method directly, use the completeSignup method instead (see https:\/\/docs.madelineproto.xyz for more info)", + "users.getFullUser": "You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https:\/\/docs.madelineproto.xyz for more info)", + "users.getUsers": "You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https:\/\/docs.madelineproto.xyz for more info)", + "channels.getChannels": "You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https:\/\/docs.madelineproto.xyz for more info)", + "channels.getFullChannel": "You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https:\/\/docs.madelineproto.xyz for more info)", + "messages.getFullChat": "You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https:\/\/docs.madelineproto.xyz for more info)", + "contacts.resolveUsername": "You cannot use this method directly, use the resolveUsername, getPwrChat, getInfo, getFullInfo methods instead (see https:\/\/docs.madelineproto.xyz for more info)", + "messages.acceptEncryption": "You cannot use this method directly, see https:\/\/docs.madelineproto.xyz for more info on handling secret chats", + "messages.discardEncryption": "You cannot use this method directly, see https:\/\/docs.madelineproto.xyz for more info on handling secret chats", + "messages.requestEncryption": "You cannot use this method directly, see https:\/\/docs.madelineproto.xyz for more info on handling secret chats", + "phone.requestCall": "You cannot use this method directly, see https:\/\/docs.madelineproto.xyz#calls for more info on handling calls", + "phone.acceptCall": "You cannot use this method directly, see https:\/\/docs.madelineproto.xyz#calls for more info on handling calls", + "phone.confirmCall": "You cannot use this method directly, see https:\/\/docs.madelineproto.xyz#calls for more info on handling calls", + "phone.discardCall": "You cannot use this method directly, see https:\/\/docs.madelineproto.xyz#calls for more info on handling calls", + "updates.getChannelDifference": "You cannot use this method directly, please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html), instead.", + "updates.getDifference": "You cannot use this method directly, please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html), instead.", + "updates.getState": "You cannot use this method directly, please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html), instead.", + "upload.getCdnFile": "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https:\/\/docs.madelineproto.xyz for more info", + "upload.getFileHashes": "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https:\/\/docs.madelineproto.xyz for more info", + "upload.getCdnFileHashes": "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https:\/\/docs.madelineproto.xyz for more info", + "upload.reuploadCdnFile": "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https:\/\/docs.madelineproto.xyz for more info", + "upload.getFile": "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https:\/\/docs.madelineproto.xyz for more info", + "upload.saveFilePart": "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https:\/\/docs.madelineproto.xyz for more info", + "upload.saveBigFilePart": "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https:\/\/docs.madelineproto.xyz for more info" +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/extracted.json b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/extracted.json new file mode 100644 index 0000000..885e2db --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/extracted.json @@ -0,0 +1,8607 @@ +{ + "object_decryptedMessage": "Contents of an encrypted message.", + "object_decryptedMessage_param_random_id_type_long": "Random message ID, assigned by the author of message.
Must be equal to the ID passed to sending method.", + "object_decryptedMessage_param_random_bytes_type_bytes": "Random bytes, removed in layer 17.", + "object_decryptedMessage_param_message_type_string": "Message text", + "object_decryptedMessage_param_media_type_flags.9?DecryptedMessageMedia": "Media content", + "object_decryptedMessage_param_ttl_type_int": "Message lifetime. Has higher priority than [decryptedMessageActionSetMessageTTL](..\/constructors\/decryptedMessageActionSetMessageTTL.md).
Parameter added in Layer 17.", + "object_decryptedMessage_param_entities_type_flags.7?Vector<MessageEntity>": "Message [entities](https:\/\/core.telegram.org\/api\/entities) for styled text (parameter added in layer 45)", + "object_decryptedMessage_param_via_bot_name_type_flags.11?string": "Specifies the ID of the inline bot that generated the message (parameter added in layer 45)", + "object_decryptedMessage_param_reply_to_random_id_type_flags.3?long": "Random message ID of the message this message replies to (parameter added in layer 45)", + "object_decryptedMessage_param_grouped_id_type_flags.17?long": "Random group ID, assigned by the author of message.
Multiple encrypted messages with a photo attached and with the same group ID indicate an [album or grouped media](https:\/\/core.telegram.org\/api\/files#albums-grouped-media) (parameter added in layer 45)", + "object_decryptedMessageService": "Contents of an encrypted service message.", + "object_decryptedMessageService_param_random_id_type_long": "Random message ID, assigned by the message author.
Must be equal to the ID passed to the sending method.", + "object_decryptedMessageService_param_random_bytes_type_bytes": "Random bytes, removed in Layer 17.", + "object_decryptedMessageService_param_action_type_DecryptedMessageAction": "Action relevant to the service message", + "object_decryptedMessageMediaEmpty": "Empty constructor, no media content.", + "object_decryptedMessageMediaPhoto": "Photo attached to an encrypted message.", + "object_decryptedMessageMediaPhoto_param_thumb_type_bytes": "Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90)", + "object_decryptedMessageMediaPhoto_param_thumb_w_type_int": "Thumbnail width", + "object_decryptedMessageMediaPhoto_param_thumb_h_type_int": "Thumbnail height", + "object_decryptedMessageMediaPhoto_param_w_type_int": "Photo width", + "object_decryptedMessageMediaPhoto_param_h_type_int": "Photo height", + "object_decryptedMessageMediaPhoto_param_size_type_int": "Size of the photo in bytes", + "object_decryptedMessageMediaPhoto_param_key_type_bytes": "Key to decrypt an attached file with a full version", + "object_decryptedMessageMediaPhoto_param_iv_type_bytes": "Initialization vector", + "object_decryptedMessageMediaPhoto_param_caption_type_string": "Caption", + "object_decryptedMessageMediaVideo": "Video attached to an encrypted message.", + "object_decryptedMessageMediaVideo_param_thumb_type_bytes": "Content of thumbnail file (JPEG file, quality 55, set in a square 90x90)", + "object_decryptedMessageMediaVideo_param_thumb_w_type_int": "Thumbnail width", + "object_decryptedMessageMediaVideo_param_thumb_h_type_int": "Thumbnail height", + "object_decryptedMessageMediaVideo_param_duration_type_int": "Duration of video in seconds", + "object_decryptedMessageMediaVideo_param_w_type_int": "Image width", + "object_decryptedMessageMediaVideo_param_h_type_int": "Image height", + "object_decryptedMessageMediaVideo_param_size_type_int": "File size", + "object_decryptedMessageMediaVideo_param_key_type_bytes": "Key to decrypt the attached video file", + "object_decryptedMessageMediaVideo_param_iv_type_bytes": "Initialization vector", + "object_decryptedMessageMediaVideo_param_mime_type_type_string": "MIME-type of the video file
Parameter added in Layer 17.", + "object_decryptedMessageMediaVideo_param_caption_type_string": "Caption", + "object_decryptedMessageMediaGeoPoint": "GeoPoint attached to an encrypted message.", + "object_decryptedMessageMediaGeoPoint_param_lat_type_double": "Latitude of point", + "object_decryptedMessageMediaGeoPoint_param_long_type_double": "Longitude of point", + "object_decryptedMessageMediaContact": "Contact attached to an encrypted message.", + "object_decryptedMessageMediaContact_param_phone_number_type_string": "Phone number", + "object_decryptedMessageMediaContact_param_first_name_type_string": "Contact's first name", + "object_decryptedMessageMediaContact_param_last_name_type_string": "Contact's last name", + "object_decryptedMessageMediaContact_param_user_id_type_int": "Telegram User ID of signed-up contact", + "object_decryptedMessageActionSetMessageTTL": "Setting of a message lifetime after reading.\n\nUpon receiving such message the client shall start deleting of all messages of an encrypted chat **ttl\\_seconds** seconds after the messages were read by user.", + "object_decryptedMessageActionSetMessageTTL_param_ttl_seconds_type_int": "Lifetime in seconds", + "object_decryptedMessageMediaDocument": "Document attached to a message in a secret chat.", + "object_decryptedMessageMediaDocument_param_thumb_type_bytes": "Thumbnail-file contents (JPEG-file, quality 55, set in a 90x90 square)", + "object_decryptedMessageMediaDocument_param_thumb_w_type_int": "Thumbnail width", + "object_decryptedMessageMediaDocument_param_thumb_h_type_int": "Thumbnail height", + "object_decryptedMessageMediaDocument_param_file_name_type_string": "File name, moved to `attributes` in Layer 45.", + "object_decryptedMessageMediaDocument_param_mime_type_type_string": "File MIME-type", + "object_decryptedMessageMediaDocument_param_size_type_long": "Document size ([int](..\/types\/int.md) on layer <143, [long](..\/types\/long.md) on layer >=143)", + "object_decryptedMessageMediaDocument_param_key_type_bytes": "Key to decrypt the attached document file", + "object_decryptedMessageMediaDocument_param_iv_type_bytes": "Initialization", + "object_decryptedMessageMediaDocument_param_attributes_type_Vector<DocumentAttribute>": "Document attributes for media types", + "object_decryptedMessageMediaDocument_param_caption_type_string": "Caption", + "object_decryptedMessageMediaAudio": "Audio file attached to a secret chat message.", + "object_decryptedMessageMediaAudio_param_duration_type_int": "Audio duration in seconds", + "object_decryptedMessageMediaAudio_param_size_type_int": "File size", + "object_decryptedMessageMediaAudio_param_key_type_bytes": "Key to decrypt the attached media file", + "object_decryptedMessageMediaAudio_param_iv_type_bytes": "Initialization vector", + "object_decryptedMessageMediaAudio_param_mime_type_type_string": "MIME-type of the audio file
Parameter added in Layer 13.", + "object_decryptedMessageActionReadMessages": "Messages marked as read.", + "object_decryptedMessageActionReadMessages_param_random_ids_type_Vector<long>": "List of message IDs", + "object_decryptedMessageActionDeleteMessages": "Deleted messages.", + "object_decryptedMessageActionDeleteMessages_param_random_ids_type_Vector<long>": "List of deleted message IDs", + "object_decryptedMessageActionScreenshotMessages": "A screenshot was taken.", + "object_decryptedMessageActionScreenshotMessages_param_random_ids_type_Vector<long>": "List of affected message ids (that appeared on the screenshot)", + "object_decryptedMessageActionFlushHistory": "The entire message history has been deleted.", + "object_decryptedMessageLayer": "Sets the layer number for the contents of an encrypted message.", + "object_decryptedMessageLayer_param_random_bytes_type_bytes": "Set of random bytes to prevent content recognition in short encrypted messages.
Clients are required to check that there are at least 15 random bytes included in each message. Messages with less than 15 random bytes must be ignored.
Parameter moved here from [decryptedMessage](..\/constructors\/decryptedMessage.md) in Layer 17.", + "object_decryptedMessageLayer_param_layer_type_int": "Layer number. Mimimal value - **17** (the layer in which the constructor was added).", + "object_decryptedMessageLayer_param_in_seq_no_type_int": "2x the number of messages in the sender's inbox (including deleted and service messages), incremented by 1 if current user was not the chat creator
Parameter added in Layer 17.", + "object_decryptedMessageLayer_param_out_seq_no_type_int": "2x the number of messages in the recipient's inbox (including deleted and service messages), incremented by 1 if current user was the chat creator
Parameter added in Layer 17.", + "object_decryptedMessageLayer_param_message_type_DecryptedMessage": "The content of message itself", + "object_sendMessageTypingAction": "User is typing.", + "object_sendMessageCancelAction": "Invalidate all previous action updates. E.g. when user deletes entered text or aborts a video upload.", + "object_sendMessageRecordVideoAction": "User is recording a video.", + "object_sendMessageUploadVideoAction": "User is uploading a video.", + "object_sendMessageUploadVideoAction_param_progress_type_int": "Progress percentage", + "object_sendMessageRecordAudioAction": "User is recording a voice message.", + "object_sendMessageUploadAudioAction": "User is uploading a voice message.", + "object_sendMessageUploadAudioAction_param_progress_type_int": "Progress percentage", + "object_sendMessageUploadPhotoAction": "User is uploading a photo.", + "object_sendMessageUploadPhotoAction_param_progress_type_int": "Progress percentage", + "object_sendMessageUploadDocumentAction": "User is uploading a file.", + "object_sendMessageUploadDocumentAction_param_progress_type_int": "Progress percentage", + "object_sendMessageGeoLocationAction": "User is selecting a location to share.", + "object_sendMessageChooseContactAction": "User is selecting a contact to share.", + "object_decryptedMessageActionResend": "Request for the other party in a Secret Chat to automatically resend a contiguous range of previously sent messages, as explained in [Sequence number is Secret Chats](https:\/\/core.telegram.org\/api\/end-to-end\/seq_no).", + "object_decryptedMessageActionResend_param_start_seq_no_type_int": "`out_seq_no` of the first message to be resent, with correct parity", + "object_decryptedMessageActionResend_param_end_seq_no_type_int": "`out_seq_no` of the last message to be resent, with same parity.", + "object_decryptedMessageActionNotifyLayer": "A notification stating the API layer that is used by the client. You should use your current layer and take notice of the layer used on the other side of a conversation when sending messages.", + "object_decryptedMessageActionNotifyLayer_param_layer_type_int": "Layer number, must be **17** or higher (this constructor was introduced in Layer 17.", + "object_decryptedMessageActionTyping": "User is preparing a message: typing, recording, uploading, etc.", + "object_decryptedMessageActionTyping_param_action_type_SendMessageAction": "Type of action", + "object_decryptedMessageActionRequestKey": "Request rekeying, see [rekeying process](https:\/\/core.telegram.org\/api\/end-to-end\/pfs)", + "object_decryptedMessageActionRequestKey_param_exchange_id_type_long": "Exchange ID", + "object_decryptedMessageActionRequestKey_param_g_a_type_bytes": "g\\_a, see [rekeying process](https:\/\/core.telegram.org\/api\/end-to-end\/pfs)", + "object_decryptedMessageActionAcceptKey": "Accept new key", + "object_decryptedMessageActionAcceptKey_param_exchange_id_type_long": "Exchange ID", + "object_decryptedMessageActionAcceptKey_param_g_b_type_bytes": "B parameter, see [rekeying process](https:\/\/core.telegram.org\/api\/end-to-end\/pfs)", + "object_decryptedMessageActionAcceptKey_param_key_fingerprint_type_long": "Key fingerprint, see [rekeying process](https:\/\/core.telegram.org\/api\/end-to-end\/pfs)", + "object_decryptedMessageActionAbortKey": "Abort rekeying", + "object_decryptedMessageActionAbortKey_param_exchange_id_type_long": "Exchange ID", + "object_decryptedMessageActionCommitKey": "Commit new key, see [rekeying process](https:\/\/core.telegram.org\/api\/end-to-end\/pfs)", + "object_decryptedMessageActionCommitKey_param_exchange_id_type_long": "Exchange ID, see [rekeying process](https:\/\/core.telegram.org\/api\/end-to-end\/pfs)", + "object_decryptedMessageActionCommitKey_param_key_fingerprint_type_long": "Key fingerprint, see [rekeying process](https:\/\/core.telegram.org\/api\/end-to-end\/pfs)", + "object_decryptedMessageActionNoop": "NOOP action", + "object_documentAttributeImageSize": "Defines the width and height of an image uploaded as document", + "object_documentAttributeImageSize_param_w_type_int": "Width of image", + "object_documentAttributeImageSize_param_h_type_int": "Height of image", + "object_documentAttributeAnimated": "Defines an animated GIF", + "object_documentAttributeSticker": "Defines a sticker", + "object_documentAttributeSticker_param_mask_type_flags.1?true": "Whether this is a mask sticker", + "object_documentAttributeSticker_param_alt_type_string": "Alternative emoji representation of sticker", + "object_documentAttributeSticker_param_stickerset_type_InputStickerSet": "Associated stickerset", + "object_documentAttributeSticker_param_mask_coords_type_flags.0?MaskCoords": "Mask coordinates (if this is a mask sticker, attached to a photo)", + "object_documentAttributeVideo": "Defines a video", + "object_documentAttributeVideo_param_round_message_type_flags.0?true": "Whether this is a round video", + "object_documentAttributeVideo_param_supports_streaming_type_flags.1?true": "Whether the video supports streaming", + "object_documentAttributeVideo_param_nosound_type_flags.3?true": "Whether the specified document is a video file with no audio tracks", + "object_documentAttributeVideo_param_duration_type_double": "Duration in seconds", + "object_documentAttributeVideo_param_w_type_int": "Video width", + "object_documentAttributeVideo_param_h_type_int": "Video height", + "object_documentAttributeVideo_param_preload_prefix_size_type_flags.2?int": "Number of bytes to preload when preloading videos (particularly [video stories](https:\/\/core.telegram.org\/api\/stories)).", + "object_documentAttributeVideo_param_video_start_ts_type_flags.4?double": "Floating point UNIX timestamp in seconds, indicating the frame of the video that should be used as static preview and thumbnail.", + "object_documentAttributeVideo_param_video_codec_type_flags.5?string": "Codec used for the video, i.e. \"h264\", \"h265\", or \"av1\"", + "object_documentAttributeAudio": "Represents an audio file", + "object_documentAttributeAudio_param_voice_type_flags.10?true": "Whether this is a voice message", + "object_documentAttributeAudio_param_duration_type_int": "Duration in seconds", + "object_documentAttributeAudio_param_title_type_flags.0?string": "Name of song", + "object_documentAttributeAudio_param_performer_type_flags.1?string": "Performer", + "object_documentAttributeAudio_param_waveform_type_flags.2?bytes": "Waveform: consists in a series of bitpacked 5-bit values.
Example implementation: [android](https:\/\/github.com\/DrKLO\/Telegram\/blob\/96dce2c9aabc33b87db61d830aa087b6b03fe397\/TMessagesProj\/jni\/audio.c#L546).", + "object_documentAttributeFilename": "A simple document with a file name", + "object_documentAttributeFilename_param_file_name_type_string": "The file name", + "object_photoSizeEmpty": "Empty constructor. Image with this thumbnail is unavailable.", + "object_photoSizeEmpty_param_type_type_string": "[Thumbnail type \u00bb](https:\/\/core.telegram.org\/api\/files#image-thumbnail-types)", + "object_photoSize": "Image description.", + "object_photoSize_param_type_type_string": "[Thumbnail type \u00bb](https:\/\/core.telegram.org\/api\/files#image-thumbnail-types)", + "object_photoSize_param_w_type_int": "Image width", + "object_photoSize_param_h_type_int": "Image height", + "object_photoSize_param_size_type_int": "File size", + "object_photoCachedSize": "Description of an image and its content.", + "object_photoCachedSize_param_type_type_string": "Thumbnail type", + "object_photoCachedSize_param_w_type_int": "Image width", + "object_photoCachedSize_param_h_type_int": "Image height", + "object_photoCachedSize_param_bytes_type_bytes": "Binary data, file content", + "object_fileLocationUnavailable": "File is currently unavailable.", + "object_fileLocationUnavailable_param_volume_id_type_long": "Volume ID", + "object_fileLocationUnavailable_param_local_id_type_int": "Local ID", + "object_fileLocationUnavailable_param_secret_type_long": "Secret", + "object_fileLocation": "File location.", + "object_fileLocation_param_dc_id_type_int": "DC ID", + "object_fileLocation_param_volume_id_type_long": "Volume ID", + "object_fileLocation_param_local_id_type_int": "Local ID", + "object_fileLocation_param_secret_type_long": "Secret", + "object_decryptedMessageMediaExternalDocument": "Non-e2e documented forwarded from non-secret chat", + "object_decryptedMessageMediaExternalDocument_param_id_type_long": "Document ID", + "object_decryptedMessageMediaExternalDocument_param_access_hash_type_long": "access hash", + "object_decryptedMessageMediaExternalDocument_param_date_type_int": "Date", + "object_decryptedMessageMediaExternalDocument_param_mime_type_type_string": "Mime type", + "object_decryptedMessageMediaExternalDocument_param_size_type_int": "Size", + "object_decryptedMessageMediaExternalDocument_param_thumb_type_PhotoSize": "Thumbnail", + "object_decryptedMessageMediaExternalDocument_param_dc_id_type_int": "DC ID", + "object_decryptedMessageMediaExternalDocument_param_attributes_type_Vector<DocumentAttribute>": "Attributes for media types", + "object_messageEntityUnknown": "Unknown message entity", + "object_messageEntityUnknown_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityUnknown_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityMention": "Message entity [mentioning](https:\/\/core.telegram.org\/api\/mentions) a user by `@username`; [messageEntityMentionName](..\/constructors\/messageEntityMentionName.md) can also be used to mention users by their ID.", + "object_messageEntityMention_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityMention_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityHashtag": "**\\#hashtag** message entity", + "object_messageEntityHashtag_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityHashtag_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityBotCommand": "Message entity representing a bot \/command", + "object_messageEntityBotCommand_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityBotCommand_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityUrl": "Message entity representing an in-text url: ; for [text urls](https:\/\/google.com), use [messageEntityTextUrl](..\/constructors\/messageEntityTextUrl.md).", + "object_messageEntityUrl_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityUrl_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityEmail": "Message entity representing an .", + "object_messageEntityEmail_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityEmail_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityBold": "Message entity representing **bold text**.", + "object_messageEntityBold_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityBold_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityItalic": "Message entity representing *italic text*.", + "object_messageEntityItalic_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityItalic_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityCode": "Message entity representing a `codeblock`.", + "object_messageEntityCode_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityCode_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityPre": "Message entity representing a preformatted `codeblock`, allowing the user to specify a programming language for the codeblock.", + "object_messageEntityPre_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityPre_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityPre_param_language_type_string": "Programming language of the code", + "object_messageEntityTextUrl": "Message entity representing a [text url](https:\/\/google.com): for in-text urls like use [messageEntityUrl](..\/constructors\/messageEntityUrl.md).\n\nNote that an additional confirmation popup with the full URL must be displayed to the user before opening this link, unless the domain satisfies the conditions specified in the [domain whitelist documentation \u00bb](https:\/\/core.telegram.org\/api\/config#whitelisted-domains).", + "object_messageEntityTextUrl_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityTextUrl_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityTextUrl_param_url_type_string": "The actual URL", + "object_inputStickerSetShortName": "Stickerset by short name, from a [stickerset deep link \u00bb](https:\/\/core.telegram.org\/api\/links#stickerset-links)", + "object_inputStickerSetShortName_param_short_name_type_string": "Short name from a [stickerset deep link \u00bb](https:\/\/core.telegram.org\/api\/links#stickerset-links)", + "object_inputStickerSetEmpty": "Empty constructor", + "object_decryptedMessageMediaVenue": "Venue", + "object_decryptedMessageMediaVenue_param_lat_type_double": "Latitude of venue", + "object_decryptedMessageMediaVenue_param_long_type_double": "Longitude of venue", + "object_decryptedMessageMediaVenue_param_title_type_string": "Venue name", + "object_decryptedMessageMediaVenue_param_address_type_string": "Address", + "object_decryptedMessageMediaVenue_param_provider_type_string": "Venue provider: currently only \"foursquare\" and \"gplaces\" (Google Places) need to be supported", + "object_decryptedMessageMediaVenue_param_venue_id_type_string": "Venue ID in the provider's database", + "object_decryptedMessageMediaWebPage": "Webpage preview", + "object_decryptedMessageMediaWebPage_param_url_type_string": "URL of webpage", + "object_sendMessageRecordRoundAction": "User is recording a round video to share", + "object_sendMessageUploadRoundAction": "User is uploading a round video", + "object_sendMessageUploadRoundAction_param_progress_type_int": "Progress percentage", + "object_messageEntityUnderline": "Message entity representing underlined text.", + "object_messageEntityUnderline_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityUnderline_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityStrike": "Message entity representing strikethrough<\/del> text.", + "object_messageEntityStrike_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityStrike_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityBlockquote": "Message entity representing a block quote.", + "object_messageEntityBlockquote_param_collapsed_type_flags.0?true": "Whether the quote is collapsed by default.", + "object_messageEntityBlockquote_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityBlockquote_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntitySpoiler": "Message entity representing a spoiler", + "object_messageEntitySpoiler_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntitySpoiler_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityCustomEmoji": "Represents a custom emoji. \nNote that this entity must wrap exactly one regular emoji (the one contained in [documentAttributeCustomEmoji](..\/constructors\/documentAttributeCustomEmoji.md).`alt`) in the related text, otherwise the server will ignore it.", + "object_messageEntityCustomEmoji_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityCustomEmoji_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityCustomEmoji_param_document_id_type_long": "Document ID of the [custom emoji](https:\/\/core.telegram.org\/api\/custom-emoji), use [messages.getCustomEmojiDocuments](..\/methods\/messages.getCustomEmojiDocuments.md) to fetch the emoji animation and the actual emoji it represents.", + "object_boolFalse": "Constructor may be interpreted as a **boolean**`false` value.", + "object_boolTrue": "The constructor can be interpreted as a **boolean**`true` value.", + "object_true": "See [predefined identifiers](https:\/\/core.telegram.org\/mtproto\/TL-formal#predefined-identifiers).", + "object_vector": "A universal vector constructor.", + "object_error": "Error.", + "object_error_param_code_type_int": "Error code", + "object_error_param_text_type_string": "Message", + "object_null": "Corresponds to an arbitrary empty object.", + "object_inputPeerEmpty": "An empty constructor, no user or chat is defined.", + "object_inputPeerSelf": "Defines the current user.", + "object_inputPeerChat": "Defines a chat for further interaction.", + "object_inputPeerChat_param_chat_id_type_long": "Chat identifier", + "object_inputPeerUser": "Defines a user for further interaction.", + "object_inputPeerUser_param_user_id_type_long": "User identifier", + "object_inputPeerUser_param_access_hash_type_long": "**access\\_hash** value from the [user](..\/constructors\/user.md) constructor", + "object_inputPeerChannel": "Defines a channel for further interaction.", + "object_inputPeerChannel_param_channel_id_type_long": "Channel identifier", + "object_inputPeerChannel_param_access_hash_type_long": "**access\\_hash** value from the [channel](..\/constructors\/channel.md) constructor", + "object_inputPeerUserFromMessage": "Defines a [min](https:\/\/core.telegram.org\/api\/min) user that was seen in a certain message of a certain chat.", + "object_inputPeerUserFromMessage_param_peer_type_InputPeer": "The chat where the user was seen", + "object_inputPeerUserFromMessage_param_msg_id_type_int": "The message ID", + "object_inputPeerUserFromMessage_param_user_id_type_long": "The identifier of the user that was seen", + "object_inputPeerChannelFromMessage": "Defines a [min](https:\/\/core.telegram.org\/api\/min) channel that was seen in a certain message of a certain chat.", + "object_inputPeerChannelFromMessage_param_peer_type_InputPeer": "The chat where the channel's message was seen", + "object_inputPeerChannelFromMessage_param_msg_id_type_int": "The message ID", + "object_inputPeerChannelFromMessage_param_channel_id_type_long": "The identifier of the channel that was seen", + "object_inputUserEmpty": "Empty constructor, does not define a user.", + "object_inputUserSelf": "Defines the current user.", + "object_inputUser": "Defines a user for further interaction.", + "object_inputUser_param_user_id_type_long": "User identifier", + "object_inputUser_param_access_hash_type_long": "**access\\_hash** value from the [user](..\/constructors\/user.md) constructor", + "object_inputUserFromMessage": "Defines a [min](https:\/\/core.telegram.org\/api\/min) user that was seen in a certain message of a certain chat.", + "object_inputUserFromMessage_param_peer_type_InputPeer": "The chat where the user was seen", + "object_inputUserFromMessage_param_msg_id_type_int": "The message ID", + "object_inputUserFromMessage_param_user_id_type_long": "The identifier of the user that was seen", + "object_inputPhoneContact": "Phone contact.", + "object_inputPhoneContact_param_client_id_type_long": "An arbitrary 64-bit integer: it should be set, for example, to an incremental number when using [contacts.importContacts](..\/methods\/contacts.importContacts.md), in order to retry importing only the contacts that weren't imported successfully, according to the client\\_ids returned in [contacts.importedContacts](..\/constructors\/contacts.importedContacts.md).`retry_contacts`.", + "object_inputPhoneContact_param_phone_type_string": "Phone number", + "object_inputPhoneContact_param_first_name_type_string": "Contact's first name", + "object_inputPhoneContact_param_last_name_type_string": "Contact's last name", + "object_inputFile": "Defines a file saved in parts using the method [upload.saveFilePart](..\/methods\/upload.saveFilePart.md).", + "object_inputFile_param_id_type_long": "Random file identifier created by the client", + "object_inputFile_param_parts_type_int": "Number of parts saved", + "object_inputFile_param_name_type_string": "Full name of the file", + "object_inputFile_param_md5_checksum_type_string": "In case the file's [md5-hash](https:\/\/en.wikipedia.org\/wiki\/MD5#MD5_hashes) was passed, contents of the file will be checked prior to use", + "object_inputFileBig": "Assigns a big file (over 10 MB in size), saved in part using the method [upload.saveBigFilePart](..\/methods\/upload.saveBigFilePart.md).", + "object_inputFileBig_param_id_type_long": "Random file id, created by the client", + "object_inputFileBig_param_parts_type_int": "Number of parts saved", + "object_inputFileBig_param_name_type_string": "Full file name", + "object_inputFileStoryDocument": "Used to [edit the thumbnail\/static preview of a story, see here \u00bb](https:\/\/core.telegram.org\/api\/stories#editing-stories) for more info on the full flow.", + "object_inputFileStoryDocument_param_id_type_InputDocument": "The old story video.", + "object_inputMediaEmpty": "Empty media content of a message.", + "object_inputMediaUploadedPhoto": "Photo", + "object_inputMediaUploadedPhoto_param_spoiler_type_flags.2?true": "Whether this media should be hidden behind a spoiler warning", + "object_inputMediaUploadedPhoto_param_file_type_InputFile": "The [uploaded file](https:\/\/core.telegram.org\/api\/files)", + "object_inputMediaUploadedPhoto_param_stickers_type_flags.0?Vector<InputDocument>": "Attached mask stickers", + "object_inputMediaUploadedPhoto_param_ttl_seconds_type_flags.1?int": "Time to live in seconds of self-destructing photo", + "object_inputMediaPhoto": "Forwarded photo", + "object_inputMediaPhoto_param_spoiler_type_flags.1?true": "Whether this media should be hidden behind a spoiler warning", + "object_inputMediaPhoto_param_id_type_InputPhoto": "Photo to be forwarded", + "object_inputMediaPhoto_param_ttl_seconds_type_flags.0?int": "Time to live in seconds of self-destructing photo", + "object_inputMediaGeoPoint": "Map.", + "object_inputMediaGeoPoint_param_geo_point_type_InputGeoPoint": "GeoPoint", + "object_inputMediaContact": "Phone book contact", + "object_inputMediaContact_param_phone_number_type_string": "Phone number", + "object_inputMediaContact_param_first_name_type_string": "Contact's first name", + "object_inputMediaContact_param_last_name_type_string": "Contact's last name", + "object_inputMediaContact_param_vcard_type_string": "Contact vcard", + "object_inputMediaUploadedDocument": "New document", + "object_inputMediaUploadedDocument_param_nosound_video_type_flags.3?true": "Whether to send the file as a video even if it doesn't have an audio track (i.e. if set, the [documentAttributeAnimated](..\/constructors\/documentAttributeAnimated.md) attribute will **not** be set even for videos without audio)", + "object_inputMediaUploadedDocument_param_force_file_type_flags.4?true": "Force the media file to be uploaded as document", + "object_inputMediaUploadedDocument_param_spoiler_type_flags.5?true": "Whether this media should be hidden behind a spoiler warning", + "object_inputMediaUploadedDocument_param_file_type_InputFile": "The [uploaded file](https:\/\/core.telegram.org\/api\/files)", + "object_inputMediaUploadedDocument_param_thumb_type_flags.2?InputFile": "Thumbnail of the document, uploaded as for the file", + "object_inputMediaUploadedDocument_param_mime_type_type_string": "MIME type of document", + "object_inputMediaUploadedDocument_param_attributes_type_Vector<DocumentAttribute>": "Attributes that specify the type of the document (video, audio, voice, sticker, etc.)", + "object_inputMediaUploadedDocument_param_stickers_type_flags.0?Vector<InputDocument>": "Attached stickers", + "object_inputMediaUploadedDocument_param_video_cover_type_flags.6?InputPhoto": "Start playing the video at the specified timestamp (seconds).", + "object_inputMediaUploadedDocument_param_video_timestamp_type_flags.7?int": "Start playing the video at the specified timestamp (seconds).", + "object_inputMediaUploadedDocument_param_ttl_seconds_type_flags.1?int": "Time to live in seconds of self-destructing document", + "object_inputMediaDocument": "Forwarded document", + "object_inputMediaDocument_param_spoiler_type_flags.2?true": "Whether this media should be hidden behind a spoiler warning", + "object_inputMediaDocument_param_id_type_InputDocument": "The document to be forwarded.", + "object_inputMediaDocument_param_video_cover_type_flags.3?InputPhoto": "Custom video cover.", + "object_inputMediaDocument_param_video_timestamp_type_flags.4?int": "Start playing the video at the specified timestamp (seconds).", + "object_inputMediaDocument_param_ttl_seconds_type_flags.0?int": "Time to live of self-destructing document", + "object_inputMediaDocument_param_query_type_flags.1?string": "Text query or emoji that was used by the user to find this sticker or GIF: used to improve search result relevance.", + "object_inputMediaVenue": "Can be used to send a venue geolocation.", + "object_inputMediaVenue_param_geo_point_type_InputGeoPoint": "Geolocation", + "object_inputMediaVenue_param_title_type_string": "Venue name", + "object_inputMediaVenue_param_address_type_string": "Physical address of the venue", + "object_inputMediaVenue_param_provider_type_string": "Venue provider: currently only \"foursquare\" and \"gplaces\" (Google Places) need to be supported", + "object_inputMediaVenue_param_venue_id_type_string": "Venue ID in the provider's database", + "object_inputMediaVenue_param_venue_type_type_string": "Venue type in the provider's database", + "object_inputMediaPhotoExternal": "New photo that will be uploaded by the server using the specified URL", + "object_inputMediaPhotoExternal_param_spoiler_type_flags.1?true": "Whether this media should be hidden behind a spoiler warning", + "object_inputMediaPhotoExternal_param_url_type_string": "URL of the photo", + "object_inputMediaPhotoExternal_param_ttl_seconds_type_flags.0?int": "Self-destruct time to live of photo", + "object_inputMediaDocumentExternal": "Document that will be downloaded by the telegram servers", + "object_inputMediaDocumentExternal_param_spoiler_type_flags.1?true": "Whether this media should be hidden behind a spoiler warning", + "object_inputMediaDocumentExternal_param_url_type_string": "URL of the document", + "object_inputMediaDocumentExternal_param_ttl_seconds_type_flags.0?int": "Self-destruct time to live of document", + "object_inputMediaDocumentExternal_param_video_cover_type_flags.2?InputPhoto": "Custom video cover.", + "object_inputMediaDocumentExternal_param_video_timestamp_type_flags.3?int": "Start playing the video at the specified timestamp (seconds).", + "object_inputMediaGame": "A game", + "object_inputMediaGame_param_id_type_InputGame": "The game to forward", + "object_inputMediaInvoice": "Generated invoice of a [bot payment](https:\/\/core.telegram.org\/bots\/payments)", + "object_inputMediaInvoice_param_title_type_string": "Product name, 1-32 characters", + "object_inputMediaInvoice_param_description_type_string": "Product description, 1-255 characters", + "object_inputMediaInvoice_param_photo_type_flags.0?InputWebDocument": "URL of the product photo for the invoice. Can be a photo of the goods or a marketing image for a service. People like it better when they see what they are paying for.", + "object_inputMediaInvoice_param_invoice_type_Invoice": "The actual invoice", + "object_inputMediaInvoice_param_payload_type_bytes": "Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes.", + "object_inputMediaInvoice_param_provider_type_flags.3?string": "Payments provider token, obtained via [Botfather](https:\/\/t.me\/botfather)", + "object_inputMediaInvoice_param_provider_data_type_DataJSON": "JSON-encoded data about the invoice, which will be shared with the payment provider. A detailed description of required fields should be provided by the payment provider.", + "object_inputMediaInvoice_param_start_param_type_flags.1?string": "Unique [bot deep links start parameter](https:\/\/core.telegram.org\/api\/links#bot-links). If present, forwarded copies of the sent message will have a URL button with a [deep link](https:\/\/core.telegram.org\/api\/links#bot-links) to the bot (instead of a Pay button), with the value used as the start parameter. If absent, forwarded copies of the sent message will have a Pay button, allowing multiple users to pay directly from the forwarded message, using the same invoice.", + "object_inputMediaInvoice_param_extended_media_type_flags.2?InputMedia": "Deprecated", + "object_inputMediaGeoLive": "[Live geolocation](https:\/\/core.telegram.org\/api\/live-location)", + "object_inputMediaGeoLive_param_stopped_type_flags.0?true": "Whether sending of the geolocation was stopped", + "object_inputMediaGeoLive_param_geo_point_type_InputGeoPoint": "Current geolocation", + "object_inputMediaGeoLive_param_heading_type_flags.2?int": "For [live locations](https:\/\/core.telegram.org\/api\/live-location), a direction in which the location moves, in degrees; 1-360.", + "object_inputMediaGeoLive_param_period_type_flags.1?int": "Validity period of the current location", + "object_inputMediaGeoLive_param_proximity_notification_radius_type_flags.3?int": "For [live locations](https:\/\/core.telegram.org\/api\/live-location), a maximum distance to another chat member for proximity alerts, in meters (0-100000)", + "object_inputMediaPoll": "A poll", + "object_inputMediaPoll_param_poll_type_Poll": "The poll to send", + "object_inputMediaPoll_param_correct_answers_type_flags.0?Vector<bytes>": "Correct answer IDs (for quiz polls)", + "object_inputMediaPoll_param_solution_type_flags.1?string": "Explanation of quiz solution", + "object_inputMediaPoll_param_solution_entities_type_flags.1?Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "object_inputMediaDice": "Send a [dice-based animated sticker](https:\/\/core.telegram.org\/api\/dice)", + "object_inputMediaDice_param_emoticon_type_string": "The emoji, for now \ud83c\udfc0, \ud83c\udfb2 and \ud83c\udfaf are supported", + "object_inputMediaStory": "Forwarded story", + "object_inputMediaStory_param_peer_type_InputPeer": "Peer where the story was posted", + "object_inputMediaStory_param_id_type_int": "Story ID", + "object_inputMediaWebPage": "Specifies options that will be used to generate the link preview for the caption, or even a standalone link preview without an attached message.", + "object_inputMediaWebPage_param_force_large_media_type_flags.0?true": "If set, specifies that a large media preview should be used.", + "object_inputMediaWebPage_param_force_small_media_type_flags.1?true": "If set, specifies that a small media preview should be used.", + "object_inputMediaWebPage_param_optional_type_flags.2?true": "If **not** set, a `WEBPAGE_NOT_FOUND` RPC error will be emitted if a webpage preview cannot be generated for the specified `url`; otherwise, no error will be emitted (unless the provided message is also empty, in which case a `MESSAGE_EMPTY` will be emitted, instead).", + "object_inputMediaWebPage_param_url_type_string": "The URL to use for the link preview.", + "object_inputMediaPaidMedia": "[Paid media, see here \u00bb](https:\/\/core.telegram.org\/api\/paid-media) for more info.", + "object_inputMediaPaidMedia_param_stars_amount_type_long": "The price of the media in [Telegram Stars](https:\/\/core.telegram.org\/api\/stars).", + "object_inputMediaPaidMedia_param_extended_media_type_Vector<InputMedia>": "Photos or videos.", + "object_inputMediaPaidMedia_param_payload_type_flags.0?string": "Bots only, specifies a custom payload that will then be passed in [updateBotPurchasedPaidMedia](..\/constructors\/updateBotPurchasedPaidMedia.md) when a payment is made (this field will not be visible to the user)", + "object_inputMediaTodo": "Creates a [todo list \u00bb](https:\/\/core.telegram.org\/api\/todo).", + "object_inputMediaTodo_param_todo_type_TodoList": "The todo list.", + "object_inputChatPhotoEmpty": "Empty constructor, remove group photo.", + "object_inputChatUploadedPhoto": "New photo to be set as group profile photo.\n\nThe `file`, `video` and `video_emoji_markup` flags are mutually exclusive.", + "object_inputChatUploadedPhoto_param_file_type_flags.0?InputFile": "File saved in parts using the method [upload.saveFilePart](..\/methods\/upload.saveFilePart.md)", + "object_inputChatUploadedPhoto_param_video_type_flags.1?InputFile": "Square video for animated profile picture", + "object_inputChatUploadedPhoto_param_video_start_ts_type_flags.2?double": "Floating point UNIX timestamp in seconds, indicating the frame of the video\/sticker that should be used as static preview; can only be used if `video` or `video_emoji_markup` is set.", + "object_inputChatUploadedPhoto_param_video_emoji_markup_type_flags.3?VideoSize": "Animated sticker profile picture, must contain either a [videoSizeEmojiMarkup](..\/constructors\/videoSizeEmojiMarkup.md) or a [videoSizeStickerMarkup](..\/constructors\/videoSizeStickerMarkup.md) constructor.", + "object_inputChatPhoto": "Existing photo to be set as a chat profile photo.", + "object_inputChatPhoto_param_id_type_InputPhoto": "Existing photo", + "object_inputGeoPointEmpty": "Empty GeoPoint constructor.", + "object_inputGeoPoint": "Defines a GeoPoint by its coordinates.", + "object_inputGeoPoint_param_lat_type_double": "Latitude", + "object_inputGeoPoint_param_long_type_double": "Longitude", + "object_inputGeoPoint_param_accuracy_radius_type_flags.0?int": "The estimated horizontal accuracy of the location, in meters; as defined by the sender.", + "object_inputPhotoEmpty": "Empty constructor.", + "object_inputPhoto": "Defines a photo for further interaction.", + "object_inputPhoto_param_id_type_long": "Photo identifier", + "object_inputPhoto_param_access_hash_type_long": "**access\\_hash** value from the [photo](..\/constructors\/photo.md) constructor", + "object_inputPhoto_param_file_reference_type_bytes": "[File reference](https:\/\/core.telegram.org\/api\/file-references)", + "object_inputFileLocation": "DEPRECATED location of a photo", + "object_inputFileLocation_param_volume_id_type_long": "Server volume", + "object_inputFileLocation_param_local_id_type_int": "File identifier", + "object_inputFileLocation_param_secret_type_long": "Check sum to access the file", + "object_inputFileLocation_param_file_reference_type_bytes": "[File reference](https:\/\/core.telegram.org\/api\/file-references)", + "object_inputEncryptedFileLocation": "Location of encrypted secret chat file.", + "object_inputEncryptedFileLocation_param_id_type_long": "File ID, **id** parameter value from [encryptedFile](..\/constructors\/encryptedFile.md)", + "object_inputEncryptedFileLocation_param_access_hash_type_long": "Checksum, **access\\_hash** parameter value from [encryptedFile](..\/constructors\/encryptedFile.md)", + "object_inputDocumentFileLocation": "Document location (video, voice, audio, basically every type except photo)", + "object_inputDocumentFileLocation_param_id_type_long": "Document ID", + "object_inputDocumentFileLocation_param_access_hash_type_long": "**access\\_hash** parameter from the [document](..\/constructors\/document.md) constructor", + "object_inputDocumentFileLocation_param_file_reference_type_bytes": "[File reference](https:\/\/core.telegram.org\/api\/file-references)", + "object_inputDocumentFileLocation_param_thumb_size_type_string": "Thumbnail size to download the thumbnail", + "object_inputSecureFileLocation": "Location of encrypted telegram [passport](https:\/\/core.telegram.org\/passport) file.", + "object_inputSecureFileLocation_param_id_type_long": "File ID, **id** parameter value from [secureFile](..\/constructors\/secureFile.md)", + "object_inputSecureFileLocation_param_access_hash_type_long": "Checksum, **access\\_hash** parameter value from [secureFile](..\/constructors\/secureFile.md)", + "object_inputTakeoutFileLocation": "Used to download a JSON file that will contain all personal data related to features that do not have a specialized [takeout method](https:\/\/core.telegram.org\/api\/takeout) yet, see [here \u00bb](https:\/\/core.telegram.org\/api\/takeout) for more info on the takeout API.", + "object_inputPhotoFileLocation": "Use this object to download a photo with [upload.getFile](..\/methods\/upload.getFile.md) method", + "object_inputPhotoFileLocation_param_id_type_long": "Photo ID, obtained from the [photo](..\/constructors\/photo.md) object", + "object_inputPhotoFileLocation_param_access_hash_type_long": "Photo's access hash, obtained from the [photo](..\/constructors\/photo.md) object", + "object_inputPhotoFileLocation_param_file_reference_type_bytes": "[File reference](https:\/\/core.telegram.org\/api\/file-references)", + "object_inputPhotoFileLocation_param_thumb_size_type_string": "The [PhotoSize](..\/types\/PhotoSize.md) to download: must be set to the `type` field of the desired PhotoSize object of the [photo](..\/constructors\/photo.md)", + "object_inputPhotoLegacyFileLocation": "DEPRECATED legacy photo file location", + "object_inputPhotoLegacyFileLocation_param_id_type_long": "Photo ID", + "object_inputPhotoLegacyFileLocation_param_access_hash_type_long": "Access hash", + "object_inputPhotoLegacyFileLocation_param_file_reference_type_bytes": "File reference", + "object_inputPhotoLegacyFileLocation_param_volume_id_type_long": "Volume ID", + "object_inputPhotoLegacyFileLocation_param_local_id_type_int": "Local ID", + "object_inputPhotoLegacyFileLocation_param_secret_type_long": "Secret", + "object_inputPeerPhotoFileLocation": "Location of profile photo of channel\/group\/supergroup\/user", + "object_inputPeerPhotoFileLocation_param_big_type_flags.0?true": "Whether to download the high-quality version of the picture", + "object_inputPeerPhotoFileLocation_param_peer_type_InputPeer": "The peer whose profile picture should be downloaded", + "object_inputPeerPhotoFileLocation_param_photo_id_type_long": "Photo ID", + "object_inputStickerSetThumb": "Location of stickerset thumbnail (see [files](https:\/\/core.telegram.org\/api\/files))", + "object_inputStickerSetThumb_param_stickerset_type_InputStickerSet": "Sticker set", + "object_inputStickerSetThumb_param_thumb_version_type_int": "Thumbnail version", + "object_inputGroupCallStream": "Chunk of a livestream", + "object_inputGroupCallStream_param_call_type_InputGroupCall": "Livestream info", + "object_inputGroupCallStream_param_time_ms_type_long": "Timestamp in milliseconds", + "object_inputGroupCallStream_param_scale_type_int": "Specifies the duration of the video segment to fetch in milliseconds, by bitshifting `1000` to the right `scale` times: `duration_ms := 1000 >> scale`", + "object_inputGroupCallStream_param_video_channel_type_flags.0?int": "Selected video channel", + "object_inputGroupCallStream_param_video_quality_type_flags.0?int": "Selected video quality (0 = lowest, 1 = medium, 2 = best)", + "object_peerUser": "Chat partner", + "object_peerUser_param_user_id_type_long": "User identifier", + "object_peerChat": "Group.", + "object_peerChat_param_chat_id_type_long": "Group identifier", + "object_peerChannel": "Channel\/supergroup", + "object_peerChannel_param_channel_id_type_long": "Channel ID", + "object_storage.fileUnknown": "Unknown type.", + "object_storage.filePartial": "Part of a bigger file.", + "object_storage.fileJpeg": "JPEG image. MIME type: `image\/jpeg`.", + "object_storage.fileGif": "GIF image. MIME type: `image\/gif`.", + "object_storage.filePng": "PNG image. MIME type: `image\/png`.", + "object_storage.filePdf": "PDF document image. MIME type: `application\/pdf`.", + "object_storage.fileMp3": "Mp3 audio. MIME type: `audio\/mpeg`.", + "object_storage.fileMov": "Quicktime video. MIME type: `video\/quicktime`.", + "object_storage.fileMp4": "MPEG-4 video. MIME type: `video\/mp4`.", + "object_storage.fileWebp": "WEBP image. MIME type: `image\/webp`.", + "object_userEmpty": "Empty constructor, non-existent user.", + "object_userEmpty_param_id_type_long": "User identifier or `0`", + "object_user": "Indicates info about a certain user.\n\nUnless specified otherwise, when updating the [local peer database](https:\/\/core.telegram.org\/api\/peers), all fields from the newly received constructor take priority over the old constructor cached locally (including by removing fields that aren't set in the new constructor).\n\nSee [here \u00bb](https:\/\/github.com\/tdlib\/td\/blob\/cb164927417f22811c74cd8678ed4a5ab7cb80ba\/td\/telegram\/UserManager.cpp#L2267) for an implementation of the logic to use when updating the [local user peer database](https:\/\/core.telegram.org\/api\/peers).", + "object_user_param_self_type_flags.10?true": "Whether this user indicates the currently logged in user", + "object_user_param_contact_type_flags.11?true": "Whether this user is a contact
When updating the [local peer database](https:\/\/core.telegram.org\/api\/peers), do not apply changes to this field if the `min` flag is set.", + "object_user_param_mutual_contact_type_flags.12?true": "Whether this user is a mutual contact.
When updating the [local peer database](https:\/\/core.telegram.org\/api\/peers), do not apply changes to this field if the `min` flag is set.", + "object_user_param_deleted_type_flags.13?true": "Whether the account of this user was deleted.
Changes to this flag should invalidate the local [userFull](..\/constructors\/userFull.md) cache for this user ID, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#full-info-database) for more info.", + "object_user_param_bot_type_flags.14?true": "Is this user a bot?
Changes to this flag should invalidate the local [userFull](..\/constructors\/userFull.md) cache for this user ID, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#full-info-database) for more info.", + "object_user_param_bot_chat_history_type_flags.15?true": "Can the bot see all messages in groups?", + "object_user_param_bot_nochats_type_flags.16?true": "Can the bot be added to groups?", + "object_user_param_verified_type_flags.17?true": "Whether this user is verified", + "object_user_param_restricted_type_flags.18?true": "Access to this user must be restricted for the reason specified in `restriction_reason`", + "object_user_param_min_type_flags.20?true": "See [min](https:\/\/core.telegram.org\/api\/min)", + "object_user_param_bot_inline_geo_type_flags.21?true": "Whether the bot can request our geolocation in inline mode", + "object_user_param_support_type_flags.23?true": "Whether this is an official support user", + "object_user_param_scam_type_flags.24?true": "This may be a scam user", + "object_user_param_apply_min_photo_type_flags.25?true": "If set and `min` is set, the value of `photo` can be used to update the local database, see the documentation of that flag for more info.", + "object_user_param_fake_type_flags.26?true": "If set, this user was reported by many users as a fake or scam user: be careful when interacting with them.", + "object_user_param_bot_attach_menu_type_flags.27?true": "Whether this bot offers an [attachment menu web app](https:\/\/core.telegram.org\/api\/bots\/attach)", + "object_user_param_premium_type_flags.28?true": "Whether this user is a Telegram Premium user
Changes to this flag should invalidate the local [userFull](..\/constructors\/userFull.md) cache for this user ID, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#full-info-database) for more info.
Changes to this flag if the `self` flag is set should also trigger the following calls, to refresh the respective caches:
- The [help.getConfig](..\/methods\/help.getConfig.md) cache
- The [messages.getTopReactions](..\/methods\/messages.getTopReactions.md) cache if the `bot` flag is **not** set", + "object_user_param_attach_menu_enabled_type_flags.29?true": "Whether we installed the [attachment menu web app](https:\/\/core.telegram.org\/api\/bots\/attach) offered by this bot.
When updating the [local peer database](https:\/\/core.telegram.org\/api\/peers), do not apply changes to this field if the `min` flag is set.", + "object_user_param_flags2_type_#": "Flags, see [TL conditional fields](https:\/\/core.telegram.org\/mtproto\/TL-combinators#conditional-fields)", + "object_user_param_bot_can_edit_type_flags2.1?true": "Whether we can edit the profile picture, name, about text and description of this bot because we own it.
When updating the [local peer database](https:\/\/core.telegram.org\/api\/peers), do not apply changes to this field if the `min` flag is set.
Changes to this flag (if `min` is not set) should invalidate the local [userFull](..\/constructors\/userFull.md) cache for this user ID.", + "object_user_param_close_friend_type_flags2.2?true": "Whether we marked this user as a [close friend, see here \u00bb for more info](https:\/\/core.telegram.org\/api\/privacy).
When updating the [local peer database](https:\/\/core.telegram.org\/api\/peers), do not apply changes to this field if the `min` flag is set.", + "object_user_param_stories_hidden_type_flags2.3?true": "Whether we have [hidden \u00bb](https:\/\/core.telegram.org\/api\/stories#hiding-stories-of-other-users) all active stories of this user.
When updating the [local peer database](https:\/\/core.telegram.org\/api\/peers), do not apply changes to this field if the `min` flag is set.", + "object_user_param_stories_unavailable_type_flags2.4?true": "No stories from this user are visible.", + "object_user_param_contact_require_premium_type_flags2.10?true": "See [here for more info on this flag \u00bb](https:\/\/core.telegram.org\/api\/privacy#require-premium-for-new-non-contact-users).", + "object_user_param_bot_business_type_flags2.11?true": "Whether this bot can be [connected to a user as specified here \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots).", + "object_user_param_bot_has_main_app_type_flags2.13?true": "If set, this bot has configured a [Main Mini App \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-apps).", + "object_user_param_id_type_long": "ID of the user, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#peer-id) for more info and the available ID range.", + "object_user_param_access_hash_type_flags.0?long": "Access hash of the user, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#access-hash) for more info.
If this flag is set, when updating the [local peer database](https:\/\/core.telegram.org\/api\/peers), generate a virtual flag called `min_access_hash`, which is:
- Set to `true` if `min` is set AND
-- The `phone` flag is **not** set OR
-- The `phone` flag is set and the associated phone number string is non-empty
- Set to `false` otherwise.

Then, apply both `access_hash` and `min_access_hash` to the local database if:
- `min_access_hash` is false OR
- `min_access_hash` is true AND
-- There is no locally cached object for this user OR
-- There is no `access_hash` in the local cache OR
-- The cached object's `min_access_hash` is also true

If the final merged object stored to the database has the `min_access_hash` field set to true, the related `access_hash` is **only** suitable to use in [`inputPeerPhotoFileLocation` \u00bb](..\/constructors\/inputPeerPhotoFileLocation.md), to directly [download the profile pictures](https:\/\/core.telegram.org\/api\/files) of users, everywhere else a `inputPeer*FromMessage` constructor will have to be generated as specified [here \u00bb](https:\/\/core.telegram.org\/api\/min).
Bots can also use min access hashes in some conditions, by passing `0` instead of the min access hash.", + "object_user_param_first_name_type_flags.1?string": "First name.
When updating the [local peer database](https:\/\/core.telegram.org\/api\/peers), apply changes to this field only if:
- The `min` flag is not set OR
- The `min` flag is set AND
-- The `min` flag of the locally cached user entry is set.", + "object_user_param_last_name_type_flags.2?string": "Last name.
When updating the [local peer database](https:\/\/core.telegram.org\/api\/peers), apply changes to this field only if:
- The `min` flag is not set OR
- The `min` flag is set AND
-- The `min` flag of the locally cached user entry is set.", + "object_user_param_username_type_flags.3?string": "Main active username.
When updating the [local peer database](https:\/\/core.telegram.org\/api\/peers), apply changes to this field only if:
- The `min` flag is not set OR
- The `min` flag is set AND
-- The `min` flag of the locally cached user entry is set.
Changes to this flag should invalidate the local [userFull](..\/constructors\/userFull.md) cache for this user ID if the above conditions are respected and the `bot_can_edit` flag is also set.", + "object_user_param_phone_type_flags.4?string": "Phone number.
When updating the [local peer database](https:\/\/core.telegram.org\/api\/peers), apply changes to this field only if:
- The `min` flag is not set OR
- The `min` flag is set AND
-- The `min` flag of the locally cached user entry is set.", + "object_user_param_photo_type_flags.5?UserProfilePhoto": "Profile picture of user.
When updating the [local peer database](https:\/\/core.telegram.org\/api\/peers), apply changes to this field only if:
- The `min` flag is not set OR
- The `min` flag is set AND
-- The `apply_min_photo` flag is set OR
-- The `min` flag of the locally cached user entry is set.", + "object_user_param_status_type_flags.6?UserStatus": "Online status of user.
When updating the [local peer database](https:\/\/core.telegram.org\/api\/peers), apply changes to this field only if:
- The `min` flag is not set OR
- The `min` flag is set AND
-- The `min` flag of the locally cached user entry is set OR
-- The locally cached user entry is equal to [userStatusEmpty](..\/constructors\/userStatusEmpty.md).", + "object_user_param_bot_info_version_type_flags.14?int": "Version of the [bot\\_info field in userFull](..\/constructors\/userFull.md), incremented every time it changes.
Changes to this flag should invalidate the local [userFull](..\/constructors\/userFull.md) cache for this user ID, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#full-info-database) for more info.", + "object_user_param_restriction_reason_type_flags.18?Vector<RestrictionReason>": "Contains the reason why access to this user must be restricted.", + "object_user_param_bot_inline_placeholder_type_flags.19?string": "Inline placeholder for this inline bot", + "object_user_param_lang_code_type_flags.22?string": "Language code of the user", + "object_user_param_emoji_status_type_flags.30?EmojiStatus": "[Emoji status](https:\/\/core.telegram.org\/api\/emoji-status)", + "object_user_param_usernames_type_flags2.0?Vector<Username>": "Additional usernames.
When updating the [local peer database](https:\/\/core.telegram.org\/api\/peers), apply changes to this field only if:
- The `min` flag is not set OR
- The `min` flag is set AND
-- The `min` flag of the locally cached user entry is set.
Changes to this flag (if the above conditions are respected) should invalidate the local [userFull](..\/constructors\/userFull.md) cache for this user ID.", + "object_user_param_stories_max_id_type_flags2.5?int": "ID of the maximum read [story](https:\/\/core.telegram.org\/api\/stories).
When updating the [local peer database](https:\/\/core.telegram.org\/api\/peers), do not apply changes to this field if the `min` flag of the incoming constructor is set.", + "object_user_param_color_type_flags2.8?PeerColor": "The user's [accent color](https:\/\/core.telegram.org\/api\/colors).", + "object_user_param_profile_color_type_flags2.9?PeerColor": "The user's [profile color](https:\/\/core.telegram.org\/api\/colors).", + "object_user_param_bot_active_users_type_flags2.12?int": "Monthly Active Users (MAU) of this bot (may be absent for small bots).", + "object_user_param_bot_verification_icon_type_flags2.14?long": "Describes a [bot verification icon \u00bb](https:\/\/core.telegram.org\/api\/bots\/verification).", + "object_user_param_send_paid_messages_stars_type_flags2.15?long": "If set, the user has enabled [paid messages \u00bb](https:\/\/core.telegram.org\/api\/paid-messages), we *might* need to pay the specified amount of [Stars](https:\/\/core.telegram.org\/api\/stars) to send them messages, depending on the configured exceptions: check [userFull](..\/constructors\/userFull.md).`send_paid_messages_stars` or [users.getRequirementsToContact](..\/methods\/users.getRequirementsToContact.md) to see if the currently logged in user actually has to pay or not, see [here \u00bb](https:\/\/core.telegram.org\/api\/paid-messages) for the full flow.", + "object_userProfilePhotoEmpty": "Profile photo has not been set, or was hidden.", + "object_userProfilePhoto": "User profile photo.", + "object_userProfilePhoto_param_has_video_type_flags.0?true": "Whether an [animated profile picture](https:\/\/core.telegram.org\/api\/files#animated-profile-pictures) is available for this user", + "object_userProfilePhoto_param_personal_type_flags.2?true": "Whether this profile photo is only visible to us (i.e. it was set using [photos.uploadContactProfilePhoto](..\/methods\/photos.uploadContactProfilePhoto.md)).", + "object_userProfilePhoto_param_photo_id_type_long": "Identifier of the respective photo", + "object_userProfilePhoto_param_stripped_thumb_type_flags.1?bytes": "[Stripped thumbnail](https:\/\/core.telegram.org\/api\/files#stripped-thumbnails)", + "object_userProfilePhoto_param_dc_id_type_int": "DC ID where the photo is stored", + "object_userStatusEmpty": "User status has not been set yet.", + "object_userStatusOnline": "Online status of the user.", + "object_userStatusOnline_param_expires_type_int": "Time to expiration of the current online status", + "object_userStatusOffline": "The user's offline status.", + "object_userStatusOffline_param_was_online_type_int": "Time the user was last seen online", + "object_userStatusRecently": "Online status: last seen recently", + "object_userStatusRecently_param_by_me_type_flags.0?true": "If set, the exact user status of this user is actually available to us, but to view it we must first purchase a [Premium](https:\/\/core.telegram.org\/api\/premium) subscription, or allow this user to see *our* exact last online status. See [here \u00bb](..\/constructors\/privacyKeyStatusTimestamp.md) for more info.", + "object_userStatusLastWeek": "Online status: last seen last week", + "object_userStatusLastWeek_param_by_me_type_flags.0?true": "If set, the exact user status of this user is actually available to us, but to view it we must first purchase a [Premium](https:\/\/core.telegram.org\/api\/premium) subscription, or allow this user to see *our* exact last online status. See [here \u00bb](..\/constructors\/privacyKeyStatusTimestamp.md) for more info.", + "object_userStatusLastMonth": "Online status: last seen last month", + "object_userStatusLastMonth_param_by_me_type_flags.0?true": "If set, the exact user status of this user is actually available to us, but to view it we must first purchase a [Premium](https:\/\/core.telegram.org\/api\/premium) subscription, or allow this user to see *our* exact last online status. See [here \u00bb](..\/constructors\/privacyKeyStatusTimestamp.md) for more info.", + "object_chatEmpty": "Empty constructor, group doesn't exist", + "object_chatEmpty_param_id_type_long": "Group identifier", + "object_chat": "Info about a group.\n\nWhen updating the [local peer database](https:\/\/core.telegram.org\/api\/peers), all fields from the newly received constructor take priority over the old constructor cached locally (including by removing fields that aren't set in the new constructor).\n\nSee [here \u00bb](https:\/\/github.com\/tdlib\/td\/blob\/a24af0992245f838f2b4b418a0a2d5fa9caa27b5\/td\/telegram\/ChatManager.cpp#L5152) for an implementation of the logic to use when updating the [local user peer database](https:\/\/core.telegram.org\/api\/peers).", + "object_chat_param_creator_type_flags.0?true": "Whether the current user is the creator of the group", + "object_chat_param_left_type_flags.2?true": "Whether the current user has left the group", + "object_chat_param_deactivated_type_flags.5?true": "Whether the group was [migrated](https:\/\/core.telegram.org\/api\/channel)", + "object_chat_param_call_active_type_flags.23?true": "Whether a group call is currently active", + "object_chat_param_call_not_empty_type_flags.24?true": "Whether there's anyone in the group call", + "object_chat_param_noforwards_type_flags.25?true": "Whether this group is [protected](https:\/\/telegram.org\/blog\/protected-content-delete-by-date-and-more), thus does not allow forwarding messages from it", + "object_chat_param_id_type_long": "ID of the group, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#peer-id) for more info and the available ID range.", + "object_chat_param_title_type_string": "Title", + "object_chat_param_photo_type_ChatPhoto": "Chat photo", + "object_chat_param_participants_count_type_int": "Participant count", + "object_chat_param_date_type_int": "Date of creation of the group", + "object_chat_param_version_type_int": "Used in basic groups to reorder updates and make sure that all of them were received.", + "object_chat_param_migrated_to_type_flags.6?InputChannel": "Means this chat was [upgraded](https:\/\/core.telegram.org\/api\/channel) to a supergroup", + "object_chat_param_admin_rights_type_flags.14?ChatAdminRights": "[Admin rights](https:\/\/core.telegram.org\/api\/rights) of the user in the group", + "object_chat_param_default_banned_rights_type_flags.18?ChatBannedRights": "[Default banned rights](https:\/\/core.telegram.org\/api\/rights) of all users in the group", + "object_chatForbidden": "A group to which the user has no access. E.g., because the user was kicked from the group.", + "object_chatForbidden_param_id_type_long": "User identifier", + "object_chatForbidden_param_title_type_string": "Group name", + "object_channel": "Channel\/supergroup info\n\nWhen updating the [local peer database](https:\/\/core.telegram.org\/api\/peers), all fields from the newly received constructor take priority over the old constructor cached locally (including by removing fields that aren't set in the new constructor).\n\nThe only exception to the above rule is when the `min` flag is set, in which case **only** the following fields must be applied over any locally stored version:\n\n- `title`\n- `megagroup`\n- `color`\n- `photo`\n- `username`\n- `usernames`\n- `has_geo`\n- `noforwards`\n- `emoji_status`\n- `has_link`\n- `slow_mode_enabled`\n- `scam`\n- `fake`\n- `gigagroup`\n- `forum`\n- `level`\n- `restricted`\n- `restriction_reason`\n- `join_to_send`\n- `join_request`\n- `is_verified`\n- `default_banned_rights`\n- `signature_profiles`\n- `autotranslation`\n- `broadcast_messages_allowed`\n- `monoforum`\n- `forum_tabs`\n- `linked_monoforum_id`\n- `send_paid_messages_stars`\n- `bot_verification_icon`\n\nSee [here \u00bb](https:\/\/github.com\/tdlib\/td\/blob\/a24af0992245f838f2b4b418a0a2d5fa9caa27b5\/td\/telegram\/ChatManager.cpp#L8329) for an implementation of the logic to use when updating the [local user peer database](https:\/\/core.telegram.org\/api\/peers).", + "object_channel_param_creator_type_flags.0?true": "Whether the current user is the creator of this channel", + "object_channel_param_left_type_flags.2?true": "Whether the current user has left or is not a member of this channel", + "object_channel_param_broadcast_type_flags.5?true": "Is this a channel?", + "object_channel_param_verified_type_flags.7?true": "Is this channel verified by telegram?", + "object_channel_param_megagroup_type_flags.8?true": "Is this a supergroup?
Changes to this flag should invalidate the local [channelFull](..\/constructors\/channelFull.md) cache for this channel\/supergroup ID, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#full-info-database) for more info.", + "object_channel_param_restricted_type_flags.9?true": "Whether viewing\/writing in this channel for a reason (see `restriction_reason`)", + "object_channel_param_signatures_type_flags.11?true": "Whether signatures are enabled (channels)", + "object_channel_param_min_type_flags.12?true": "See [min](https:\/\/core.telegram.org\/api\/min)", + "object_channel_param_scam_type_flags.19?true": "This channel\/supergroup is probably a scam
Changes to this flag should invalidate the local [channelFull](..\/constructors\/channelFull.md) cache for this channel\/supergroup ID, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#full-info-database) for more info.", + "object_channel_param_has_link_type_flags.20?true": "Whether this channel has a linked [discussion group \u00bb](https:\/\/core.telegram.org\/api\/discussion) (or this supergroup is a channel's discussion group). The actual ID of the linked channel\/supergroup is contained in [channelFull](..\/constructors\/channelFull.md).`linked_chat_id`.
Changes to this flag should invalidate the local [channelFull](..\/constructors\/channelFull.md) cache for this channel\/supergroup ID, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#full-info-database) for more info.", + "object_channel_param_has_geo_type_flags.21?true": "Whether this chanel has a geoposition", + "object_channel_param_slowmode_enabled_type_flags.22?true": "Whether slow mode is enabled for groups to prevent flood in chat.
Changes to this flag should invalidate the local [channelFull](..\/constructors\/channelFull.md) cache for this channel\/supergroup ID, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#full-info-database) for more info.", + "object_channel_param_call_active_type_flags.23?true": "Whether a group call or livestream is currently active", + "object_channel_param_call_not_empty_type_flags.24?true": "Whether there's anyone in the group call or livestream", + "object_channel_param_fake_type_flags.25?true": "If set, this [supergroup\/channel](https:\/\/core.telegram.org\/api\/channel) was reported by many users as a fake or scam: be careful when interacting with it.
Changes to this flag should invalidate the local [channelFull](..\/constructors\/channelFull.md) cache for this channel\/supergroup ID, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#full-info-database) for more info.", + "object_channel_param_gigagroup_type_flags.26?true": "Whether this [supergroup](https:\/\/core.telegram.org\/api\/channel) is a gigagroup
Changes to this flag should invalidate the local [channelFull](..\/constructors\/channelFull.md) cache for this channel\/supergroup ID, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#full-info-database) for more info.", + "object_channel_param_noforwards_type_flags.27?true": "Whether this channel or group is [protected](https:\/\/telegram.org\/blog\/protected-content-delete-by-date-and-more), thus does not allow forwarding messages from it", + "object_channel_param_join_to_send_type_flags.28?true": "Whether a user needs to join the supergroup before they can send messages: can be false only for [discussion groups \u00bb](https:\/\/core.telegram.org\/api\/discussion), toggle using [channels.toggleJoinToSend](..\/methods\/channels.toggleJoinToSend.md)
Changes to this flag should invalidate the local [channelFull](..\/constructors\/channelFull.md) cache for this channel\/supergroup ID, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#full-info-database) for more info.", + "object_channel_param_join_request_type_flags.29?true": "Whether a user's join request will have to be [approved by administrators](https:\/\/core.telegram.org\/api\/invites#join-requests), toggle using [channels.toggleJoinToSend](..\/methods\/channels.toggleJoinRequest.md)
Changes to this flag should invalidate the local [channelFull](..\/constructors\/channelFull.md) cache for this channel\/supergroup ID, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#full-info-database) for more info.", + "object_channel_param_forum_type_flags.30?true": "Whether this supergroup is a [forum](https:\/\/core.telegram.org\/api\/forum).
Changes to this flag should invalidate the local [channelFull](..\/constructors\/channelFull.md) cache for this channel\/supergroup ID, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#full-info-database) for more info.", + "object_channel_param_flags2_type_#": "Flags, see [TL conditional fields](https:\/\/core.telegram.org\/mtproto\/TL-combinators#conditional-fields)", + "object_channel_param_stories_hidden_type_flags2.1?true": "Whether we have [hidden all stories posted by this channel \u00bb](https:\/\/core.telegram.org\/api\/stories#hiding-stories-of-other-users).", + "object_channel_param_stories_hidden_min_type_flags2.2?true": "If set, indicates that the `stories_hidden` flag was not populated, and its value must cannot be relied on; use the previously cached value, or re-fetch the constructor using [channels.getChannels](..\/methods\/channels.getChannels.md) to obtain the latest value of the `stories_hidden` flag.", + "object_channel_param_stories_unavailable_type_flags2.3?true": "No stories from the channel are visible.", + "object_channel_param_signature_profiles_type_flags2.12?true": "If set, messages sent by admins to this channel will link to the admin's profile (just like with groups).", + "object_channel_param_autotranslation_type_flags2.15?true": "If set, [autotranslation](https:\/\/core.telegram.org\/api\/translation#autotranslation-for-channels) was enabled for all users by the admin of the channel, as specified [here \u00bb](https:\/\/core.telegram.org\/api\/translation#autotranslation-for-channels).", + "object_channel_param_broadcast_messages_allowed_type_flags2.16?true": "If set, this channel has an associated [monoforum \u00bb](https:\/\/core.telegram.org\/api\/monoforum), and its ID is specified in the `linked_monoforum_id` flag.", + "object_channel_param_monoforum_type_flags2.17?true": "If set, this is a [monoforum \u00bb](https:\/\/core.telegram.org\/api\/monoforum), and the ID of the associated channel is specified in the `linked_monoforum_id`.", + "object_channel_param_forum_tabs_type_flags2.19?true": "[If set, enables the tabbed forum UI \u00bb](https:\/\/core.telegram.org\/api\/forum#tabbed-or-list-based-forum-ui).", + "object_channel_param_id_type_long": "ID of the channel, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#peer-id) for more info and the available ID range.", + "object_channel_param_access_hash_type_flags.13?long": "Access hash, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#access-hash) for more info", + "object_channel_param_title_type_string": "Title", + "object_channel_param_username_type_flags.6?string": "Main active username.", + "object_channel_param_photo_type_ChatPhoto": "Profile photo", + "object_channel_param_date_type_int": "Date when the user joined the supergroup\/channel, or if the user isn't a member, its creation date", + "object_channel_param_restriction_reason_type_flags.9?Vector<RestrictionReason>": "Contains the reason why access to this channel must be restricted.
Changes to this flag should invalidate the local [channelFull](..\/constructors\/channelFull.md) cache for this channel\/supergroup ID, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#full-info-database) for more info.", + "object_channel_param_admin_rights_type_flags.14?ChatAdminRights": "Admin rights of the user in this channel (see [rights](https:\/\/core.telegram.org\/api\/rights))", + "object_channel_param_banned_rights_type_flags.15?ChatBannedRights": "Banned rights of the user in this channel (see [rights](https:\/\/core.telegram.org\/api\/rights))", + "object_channel_param_default_banned_rights_type_flags.18?ChatBannedRights": "Default chat rights (see [rights](https:\/\/core.telegram.org\/api\/rights))", + "object_channel_param_participants_count_type_flags.17?int": "Participant count", + "object_channel_param_usernames_type_flags2.0?Vector<Username>": "Additional usernames", + "object_channel_param_stories_max_id_type_flags2.4?int": "ID of the maximum read [story](https:\/\/core.telegram.org\/api\/stories).", + "object_channel_param_color_type_flags2.7?PeerColor": "The channel's [accent color](https:\/\/core.telegram.org\/api\/colors).", + "object_channel_param_profile_color_type_flags2.8?PeerColor": "The channel's [profile color](https:\/\/core.telegram.org\/api\/colors).", + "object_channel_param_emoji_status_type_flags2.9?EmojiStatus": "[Emoji status](https:\/\/core.telegram.org\/api\/emoji-status)", + "object_channel_param_level_type_flags2.10?int": "[Boost level](https:\/\/core.telegram.org\/api\/boost).
Changes to this flag should invalidate the local [channelFull](..\/constructors\/channelFull.md) cache for this channel\/supergroup ID, see [here \u00bb](https:\/\/core.telegram.org\/api\/peers#full-info-database) for more info.", + "object_channel_param_subscription_until_date_type_flags2.11?int": "Expiration date of the [Telegram Star subscription \u00bb](https:\/\/core.telegram.org\/api\/stars#star-subscriptions) the current user has bought to gain access to this channel.", + "object_channel_param_bot_verification_icon_type_flags2.13?long": "Describes a [bot verification icon \u00bb](https:\/\/core.telegram.org\/api\/bots\/verification).", + "object_channel_param_send_paid_messages_stars_type_flags2.14?long": "If set, this supergroup or [monoforum](https:\/\/core.telegram.org\/api\/monoforum) has enabled [paid messages \u00bb](https:\/\/core.telegram.org\/api\/paid-messages), we *might* need to pay the specified amount of [Stars](https:\/\/core.telegram.org\/api\/stars) to send messages to it, depending on the configured exceptions: check [channelFull](..\/constructors\/channelFull.md).`send_paid_messages_stars` to see if the currently logged in user actually has to pay or not, see [here \u00bb](https:\/\/core.telegram.org\/api\/paid-messages) for the full flow (only set for the monoforum, not the associated channel).", + "object_channel_param_linked_monoforum_id_type_flags2.18?long": "For channels with associated [monoforums](https:\/\/core.telegram.org\/api\/monoforum), the [monoforum](https:\/\/core.telegram.org\/api\/monoforum) ID. For [Monoforums](https:\/\/core.telegram.org\/api\/monoforum), the ID of the associated channel.", + "object_channelForbidden": "Indicates a channel\/supergroup we can't access because we were banned, or for some other reason.", + "object_channelForbidden_param_broadcast_type_flags.5?true": "Is this a channel", + "object_channelForbidden_param_megagroup_type_flags.8?true": "Is this a supergroup", + "object_channelForbidden_param_id_type_long": "Channel ID", + "object_channelForbidden_param_access_hash_type_long": "Access hash", + "object_channelForbidden_param_title_type_string": "Title", + "object_channelForbidden_param_until_date_type_flags.16?int": "The ban is valid until the specified date", + "object_chatFull": "Full info about a [basic group](https:\/\/core.telegram.org\/api\/channel#basic-groups).\n\nWhen updating the [local peer database \u00bb](https:\/\/core.telegram.org\/api\/peers), all fields from the newly received constructor take priority over the old constructor cached locally (including by removing fields that aren't set in the new constructor).", + "object_chatFull_param_can_set_username_type_flags.7?true": "Can we change the username of this chat", + "object_chatFull_param_has_scheduled_type_flags.8?true": "Whether [scheduled messages](https:\/\/core.telegram.org\/api\/scheduled-messages) are available", + "object_chatFull_param_translations_disabled_type_flags.19?true": "Whether the [real-time chat translation popup](https:\/\/core.telegram.org\/api\/translation) should be hidden.", + "object_chatFull_param_id_type_long": "ID of the chat", + "object_chatFull_param_about_type_string": "About string for this chat", + "object_chatFull_param_participants_type_ChatParticipants": "Participant list", + "object_chatFull_param_chat_photo_type_flags.2?Photo": "Chat photo", + "object_chatFull_param_notify_settings_type_PeerNotifySettings": "Notification settings", + "object_chatFull_param_exported_invite_type_flags.13?ExportedChatInvite": "Chat invite", + "object_chatFull_param_bot_info_type_flags.3?Vector<BotInfo>": "Info about bots that are in this chat", + "object_chatFull_param_pinned_msg_id_type_flags.6?int": "Message ID of the last [pinned message](https:\/\/core.telegram.org\/api\/pin)", + "object_chatFull_param_folder_id_type_flags.11?int": "[Peer folder ID, for more info click here](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "object_chatFull_param_call_type_flags.12?InputGroupCall": "Group call information", + "object_chatFull_param_ttl_period_type_flags.14?int": "Time-To-Live of messages sent by the current user to this chat", + "object_chatFull_param_groupcall_default_join_as_type_flags.15?Peer": "When using [phone.getGroupCallJoinAs](..\/methods\/phone.getGroupCallJoinAs.md) to get a list of peers that can be used to join a group call, this field indicates the peer that should be selected by default.", + "object_chatFull_param_theme_emoticon_type_flags.16?string": "Emoji representing a specific chat theme", + "object_chatFull_param_requests_pending_type_flags.17?int": "Pending [join requests \u00bb](https:\/\/core.telegram.org\/api\/invites#join-requests)", + "object_chatFull_param_recent_requesters_type_flags.17?Vector<long>": "IDs of users who requested to join recently", + "object_chatFull_param_available_reactions_type_flags.18?ChatReactions": "Allowed [message reactions \u00bb](https:\/\/core.telegram.org\/api\/reactions)", + "object_chatFull_param_reactions_limit_type_flags.20?int": "This flag may be used to impose a custom limit of unique reactions (i.e. a customizable version of [appConfig.reactions\\_uniq\\_max](https:\/\/core.telegram.org\/api\/config#reactions-uniq-max)).", + "object_channelFull": "Full info about a [channel](https:\/\/core.telegram.org\/api\/channel#channels), [supergroup](https:\/\/core.telegram.org\/api\/channel#supergroups) or [gigagroup](https:\/\/core.telegram.org\/api\/channel#gigagroups).\n\nWhen updating the [local peer database \u00bb](https:\/\/core.telegram.org\/api\/peers), all fields from the newly received constructor take priority over the old constructor cached locally (including by removing fields that aren't set in the new constructor).", + "object_channelFull_param_can_view_participants_type_flags.3?true": "Can we view the participant list?", + "object_channelFull_param_can_set_username_type_flags.6?true": "Can we set the channel's username?", + "object_channelFull_param_can_set_stickers_type_flags.7?true": "Can we [associate](..\/methods\/channels.setStickers.md) a stickerpack to the supergroup?", + "object_channelFull_param_hidden_prehistory_type_flags.10?true": "Is the history before we joined hidden to us?", + "object_channelFull_param_can_set_location_type_flags.16?true": "Can we set the geolocation of this group (for geogroups)", + "object_channelFull_param_has_scheduled_type_flags.19?true": "Whether scheduled messages are available", + "object_channelFull_param_can_view_stats_type_flags.20?true": "Can the user view [channel\/supergroup statistics](https:\/\/core.telegram.org\/api\/stats)", + "object_channelFull_param_blocked_type_flags.22?true": "Whether any anonymous admin of this supergroup was blocked: if set, you won't receive messages from anonymous group admins in [discussion replies via @replies](https:\/\/core.telegram.org\/api\/discussion)", + "object_channelFull_param_flags2_type_#": "Flags, see [TL conditional fields](https:\/\/core.telegram.org\/mtproto\/TL-combinators#conditional-fields)", + "object_channelFull_param_can_delete_channel_type_flags2.0?true": "Can we delete this channel?", + "object_channelFull_param_antispam_type_flags2.1?true": "Whether [native antispam](https:\/\/core.telegram.org\/api\/antispam) functionality is enabled in this supergroup.", + "object_channelFull_param_participants_hidden_type_flags2.2?true": "Whether the participant list is hidden.", + "object_channelFull_param_translations_disabled_type_flags2.3?true": "Whether the [real-time chat translation popup](https:\/\/core.telegram.org\/api\/translation) should be hidden.", + "object_channelFull_param_stories_pinned_available_type_flags2.5?true": "Whether this user has some [pinned stories](https:\/\/core.telegram.org\/api\/stories#pinned-or-archived-stories).", + "object_channelFull_param_view_forum_as_messages_type_flags2.6?true": "Users may also choose to display messages from all topics of a [forum](https:\/\/core.telegram.org\/api\/forum) as if they were sent to a normal group, using a \"View as messages\" setting in the local client.
This setting only affects the current account, and is synced to other logged in sessions using the [channels.toggleViewForumAsMessages](..\/methods\/channels.toggleViewForumAsMessages.md) method; invoking this method will update the value of this flag.", + "object_channelFull_param_restricted_sponsored_type_flags2.11?true": "Whether ads on this channel were [disabled as specified here \u00bb](https:\/\/core.telegram.org\/api\/boost#disable-ads-on-the-channel) (this flag is only visible to the owner of the channel).", + "object_channelFull_param_can_view_revenue_type_flags2.12?true": "If set, this user can view [ad revenue statistics \u00bb](https:\/\/core.telegram.org\/api\/revenue#revenue-statistics) for this channel.", + "object_channelFull_param_paid_media_allowed_type_flags2.14?true": "Whether the current user can send or forward [paid media \u00bb](https:\/\/core.telegram.org\/api\/paid-media) to this channel.", + "object_channelFull_param_can_view_stars_revenue_type_flags2.15?true": "If set, this user can view [Telegram Star revenue statistics \u00bb](https:\/\/core.telegram.org\/api\/stars#revenue-statistics) for this channel.", + "object_channelFull_param_paid_reactions_available_type_flags2.16?true": "If set, users may send [paid Telegram Star reactions \u00bb](https:\/\/core.telegram.org\/api\/reactions#paid-reactions) to messages of this channel.", + "object_channelFull_param_stargifts_available_type_flags2.19?true": "If set, users may send [Gifts \u00bb](https:\/\/core.telegram.org\/api\/gifts) to this channel.", + "object_channelFull_param_paid_messages_available_type_flags2.20?true": "If set, admins may [enable enable paid messages \u00bb](https:\/\/core.telegram.org\/api\/paid-messages) in this supergroup.", + "object_channelFull_param_id_type_long": "ID of the channel", + "object_channelFull_param_about_type_string": "Info about the channel", + "object_channelFull_param_participants_count_type_flags.0?int": "Number of participants of the channel", + "object_channelFull_param_admins_count_type_flags.1?int": "Number of channel admins", + "object_channelFull_param_kicked_count_type_flags.2?int": "Number of users [kicked](https:\/\/core.telegram.org\/api\/rights) from the channel", + "object_channelFull_param_banned_count_type_flags.2?int": "Number of users [banned](https:\/\/core.telegram.org\/api\/rights) from the channel", + "object_channelFull_param_online_count_type_flags.13?int": "Number of users currently online", + "object_channelFull_param_read_inbox_max_id_type_int": "Position up to which all incoming messages are read.", + "object_channelFull_param_read_outbox_max_id_type_int": "Position up to which all outgoing messages are read.", + "object_channelFull_param_unread_count_type_int": "Count of unread messages", + "object_channelFull_param_chat_photo_type_Photo": "Channel picture", + "object_channelFull_param_notify_settings_type_PeerNotifySettings": "Notification settings", + "object_channelFull_param_exported_invite_type_flags.23?ExportedChatInvite": "Invite link", + "object_channelFull_param_bot_info_type_Vector<BotInfo>": "Info about bots in the channel\/supergroup", + "object_channelFull_param_migrated_from_chat_id_type_flags.4?long": "The chat ID from which this group was [migrated](https:\/\/core.telegram.org\/api\/channel)", + "object_channelFull_param_migrated_from_max_id_type_flags.4?int": "The message ID in the original chat at which this group was [migrated](https:\/\/core.telegram.org\/api\/channel)", + "object_channelFull_param_pinned_msg_id_type_flags.5?int": "Message ID of the last [pinned message](https:\/\/core.telegram.org\/api\/pin)", + "object_channelFull_param_stickerset_type_flags.8?StickerSet": "Associated stickerset", + "object_channelFull_param_available_min_id_type_flags.9?int": "Identifier of a maximum unavailable message in a channel due to hidden history.", + "object_channelFull_param_folder_id_type_flags.11?int": "[Peer folder ID, for more info click here](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "object_channelFull_param_linked_chat_id_type_flags.14?long": "ID of the linked [discussion chat](https:\/\/core.telegram.org\/api\/discussion) for channels (and vice versa, the ID of the linked channel for discussion chats).", + "object_channelFull_param_location_type_flags.15?ChannelLocation": "Location of the geogroup", + "object_channelFull_param_slowmode_seconds_type_flags.17?int": "If specified, users in supergroups will only be able to send one message every `slowmode_seconds` seconds", + "object_channelFull_param_slowmode_next_send_date_type_flags.18?int": "Indicates when the user will be allowed to send another message in the supergroup (unixtime)", + "object_channelFull_param_stats_dc_type_flags.12?int": "If set, specifies the DC to use for fetching channel statistics", + "object_channelFull_param_pts_type_int": "Latest [PTS](https:\/\/core.telegram.org\/api\/updates) for this channel", + "object_channelFull_param_call_type_flags.21?InputGroupCall": "Livestream or group call information", + "object_channelFull_param_ttl_period_type_flags.24?int": "Time-To-Live of messages in this channel or supergroup", + "object_channelFull_param_pending_suggestions_type_flags.25?Vector<string>": "A list of [suggested actions](https:\/\/core.telegram.org\/api\/config#suggestions) for the supergroup admin, [see here for more info \u00bb](https:\/\/core.telegram.org\/api\/config#suggestions).", + "object_channelFull_param_groupcall_default_join_as_type_flags.26?Peer": "When using [phone.getGroupCallJoinAs](..\/methods\/phone.getGroupCallJoinAs.md) to get a list of peers that can be used to join a group call, this field indicates the peer that should be selected by default.", + "object_channelFull_param_theme_emoticon_type_flags.27?string": "Emoji representing a specific chat theme", + "object_channelFull_param_requests_pending_type_flags.28?int": "Pending [join requests \u00bb](https:\/\/core.telegram.org\/api\/invites#join-requests)", + "object_channelFull_param_recent_requesters_type_flags.28?Vector<long>": "IDs of users who requested to join recently", + "object_channelFull_param_default_send_as_type_flags.29?Peer": "Default peer used for sending messages to this channel", + "object_channelFull_param_available_reactions_type_flags.30?ChatReactions": "Allowed [message reactions \u00bb](https:\/\/core.telegram.org\/api\/reactions)", + "object_channelFull_param_reactions_limit_type_flags2.13?int": "This flag may be used to impose a custom limit of unique reactions (i.e. a customizable version of [appConfig.reactions\\_uniq\\_max](https:\/\/core.telegram.org\/api\/config#reactions-uniq-max)).", + "object_channelFull_param_stories_type_flags2.4?PeerStories": "Channel [stories](https:\/\/core.telegram.org\/api\/stories)", + "object_channelFull_param_wallpaper_type_flags2.7?WallPaper": "[Wallpaper](https:\/\/core.telegram.org\/api\/wallpapers)", + "object_channelFull_param_boosts_applied_type_flags2.8?int": "The number of [boosts](https:\/\/core.telegram.org\/api\/boost) the current user has applied to the current *supergroup*.", + "object_channelFull_param_boosts_unrestrict_type_flags2.9?int": "The number of [boosts](https:\/\/core.telegram.org\/api\/boost) this *supergroup* requires to bypass slowmode and other restrictions, see [here \u00bb](https:\/\/core.telegram.org\/api\/boost#bypass-slowmode-and-chat-restrictions) for more info.", + "object_channelFull_param_emojiset_type_flags2.10?StickerSet": "[Custom emoji stickerset](https:\/\/core.telegram.org\/api\/custom-emoji) associated to the current *supergroup*, set using [channels.setEmojiStickers](..\/methods\/channels.setEmojiStickers.md) after reaching the appropriate boost level, see [here \u00bb](https:\/\/core.telegram.org\/api\/boost#setting-a-custom-emoji-stickerset-for-supergroups) for more info.", + "object_channelFull_param_bot_verification_type_flags2.17?BotVerification": "[Bot verification icon](https:\/\/core.telegram.org\/api\/bots\/verification)", + "object_channelFull_param_stargifts_count_type_flags2.18?int": "Admins with [chatAdminRights](..\/constructors\/chatAdminRights.md).`post_messages` rights will see the total number of received gifts, everyone else will see the number of gifts added to the channel's profile.", + "object_channelFull_param_send_paid_messages_stars_type_flags2.21?long": "If set and bigger than 0, this supergroup, [monoforum](https:\/\/core.telegram.org\/api\/monoforum) or the monoforum associated to this channel has enabled [paid messages \u00bb](https:\/\/core.telegram.org\/api\/paid-messages) and we *must* pay the specified amount of [Stars](https:\/\/core.telegram.org\/api\/stars) to send messages to it, see [here \u00bb](https:\/\/core.telegram.org\/api\/paid-messages) for the full flow.
This flag will be set both for the monoforum and for [channelFull](..\/constructors\/channelFull.md) of the associated channel).
If set and equal to 0, the monoforum requires payment in general but we were exempted from paying.", + "object_channelFull_param_main_tab_type_flags2.22?ProfileTab": "The main tab for the channel's profile, see [here \u00bb](https:\/\/core.telegram.org\/api\/profile#tabs) for more info.", + "object_chatParticipant": "Group member.", + "object_chatParticipant_param_user_id_type_long": "Member user ID", + "object_chatParticipant_param_inviter_id_type_long": "ID of the user that added the member to the group", + "object_chatParticipant_param_date_type_int": "Date added to the group", + "object_chatParticipantCreator": "Represents the creator of the group", + "object_chatParticipantCreator_param_user_id_type_long": "ID of the user that created the group", + "object_chatParticipantAdmin": "Chat admin", + "object_chatParticipantAdmin_param_user_id_type_long": "ID of a group member that is admin", + "object_chatParticipantAdmin_param_inviter_id_type_long": "ID of the user that added the member to the group", + "object_chatParticipantAdmin_param_date_type_int": "Date when the user was added", + "object_chatParticipantsForbidden": "Info on members is unavailable", + "object_chatParticipantsForbidden_param_chat_id_type_long": "Group ID", + "object_chatParticipantsForbidden_param_self_participant_type_flags.0?ChatParticipant": "Info about the group membership of the current user", + "object_chatParticipants": "Group members.", + "object_chatParticipants_param_chat_id_type_long": "Group identifier", + "object_chatParticipants_param_participants_type_Vector<ChatParticipant>": "List of group members", + "object_chatParticipants_param_version_type_int": "Group version number", + "object_chatPhotoEmpty": "Group photo is not set.", + "object_chatPhoto": "Group profile photo.", + "object_chatPhoto_param_has_video_type_flags.0?true": "Whether the user has an animated profile picture", + "object_chatPhoto_param_photo_id_type_long": "Photo ID", + "object_chatPhoto_param_stripped_thumb_type_flags.1?bytes": "[Stripped thumbnail](https:\/\/core.telegram.org\/api\/files#stripped-thumbnails)", + "object_chatPhoto_param_dc_id_type_int": "DC where this photo is stored", + "object_messageEmpty": "Empty constructor, non-existent message.", + "object_messageEmpty_param_id_type_int": "Message identifier", + "object_messageEmpty_param_peer_id_type_flags.0?Peer": "Peer ID, the chat where this message was sent", + "object_message": "A message", + "object_message_param_out_type_flags.1?true": "Is this an outgoing message", + "object_message_param_mentioned_type_flags.4?true": "Whether we were [mentioned](https:\/\/core.telegram.org\/api\/mentions) in this message", + "object_message_param_media_unread_type_flags.5?true": "Whether there are unread media attachments in this message", + "object_message_param_silent_type_flags.13?true": "Whether this is a silent message (no notification triggered)", + "object_message_param_post_type_flags.14?true": "Whether this is a channel post", + "object_message_param_from_scheduled_type_flags.18?true": "Whether this is a [scheduled message](https:\/\/core.telegram.org\/api\/scheduled-messages)", + "object_message_param_legacy_type_flags.19?true": "This is a legacy message: it has to be refetched with the new layer", + "object_message_param_edit_hide_type_flags.21?true": "Whether the message should be shown as not modified to the user, even if an edit date is present", + "object_message_param_pinned_type_flags.24?true": "Whether this message is [pinned](https:\/\/core.telegram.org\/api\/pin)", + "object_message_param_noforwards_type_flags.26?true": "Whether this message is [protected](https:\/\/telegram.org\/blog\/protected-content-delete-by-date-and-more) and thus cannot be forwarded; clients should also prevent users from saving attached media (i.e. videos should only be streamed, photos should be kept in RAM, et cetera).", + "object_message_param_invert_media_type_flags.27?true": "If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.", + "object_message_param_flags2_type_#": "Flags, see [TL conditional fields](https:\/\/core.telegram.org\/mtproto\/TL-combinators#conditional-fields)", + "object_message_param_offline_type_flags2.1?true": "If set, the message was sent because of a scheduled action by the message sender, for example, as away, or a greeting service message.", + "object_message_param_video_processing_pending_type_flags2.4?true": "The video contained in the message is currently being processed by the server (i.e. to generate alternative qualities, that will be contained in the final [messageMediaDocument](..\/constructors\/messageMediaDocument.md).`alt_document`), and will be sent once the video is processed, which will happen approximately at the specified `date` (i.e. messages with this flag set should be treated similarly to [scheduled messages](https:\/\/core.telegram.org\/api\/scheduled-messages), but instead of the scheduled date, `date` contains the estimated conversion date).
See [here \u00bb](https:\/\/core.telegram.org\/api\/files#video-qualities) for more info.", + "object_message_param_paid_suggested_post_stars_type_flags2.8?true": "Set if this is a [suggested channel post \u00bb](https:\/\/core.telegram.org\/api\/suggested-posts) that was paid using [Telegram Stars](https:\/\/core.telegram.org\/api\/stars).", + "object_message_param_paid_suggested_post_ton_type_flags2.9?true": "Set if this is a [suggested channel post \u00bb](https:\/\/core.telegram.org\/api\/suggested-posts) that was paid using Toncoins.", + "object_message_param_id_type_int": "ID of the message", + "object_message_param_from_id_type_flags.8?Peer": "ID of the sender of the message", + "object_message_param_from_boosts_applied_type_flags.29?int": "Supergroups only, contains the number of [boosts](https:\/\/core.telegram.org\/api\/boost) this user has given the current supergroup, and should be shown in the UI in the header of the message.
Only present for incoming messages from non-anonymous supergroup members that have boosted the supergroup.
Note that this counter should be locally overridden for non-anonymous *outgoing* messages, according to the current value of [channelFull](..\/constructors\/channelFull.md).`boosts_applied`, to ensure the value is correct even for messages sent by the current user before a supergroup was boosted (or after a boost has expired or the number of boosts has changed); do not update this value for incoming messages from other users, even if their boosts have changed.", + "object_message_param_peer_id_type_Peer": "Peer ID, the chat where this message was sent", + "object_message_param_saved_peer_id_type_flags.28?Peer": "Messages from a [saved messages dialog \u00bb](https:\/\/core.telegram.org\/api\/saved-messages) will have `peer`=[inputPeerSelf](..\/constructors\/inputPeerSelf.md) and the `saved_peer_id` flag set to the ID of the saved dialog.
Messages from a [monoforum \u00bb](https:\/\/core.telegram.org\/api\/monoforum) will have `peer`=ID of the monoforum and the `saved_peer_id` flag set to the ID of a topic.", + "object_message_param_fwd_from_type_flags.2?MessageFwdHeader": "Info about forwarded messages", + "object_message_param_via_bot_id_type_flags.11?long": "ID of the inline bot that generated the message", + "object_message_param_via_business_bot_id_type_flags2.0?long": "Whether the message was sent by the [business bot](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots) specified in `via_bot_id` on behalf of the user.", + "object_message_param_reply_to_type_flags.3?MessageReplyHeader": "Reply information", + "object_message_param_date_type_int": "Date of the message", + "object_message_param_message_type_string": "The message", + "object_message_param_media_type_flags.9?MessageMedia": "Media attachment", + "object_message_param_reply_markup_type_flags.6?ReplyMarkup": "Reply markup (bot\/inline keyboards)", + "object_message_param_entities_type_flags.7?Vector<MessageEntity>": "Message [entities](https:\/\/core.telegram.org\/api\/entities) for styled text", + "object_message_param_views_type_flags.10?int": "View count for channel posts", + "object_message_param_forwards_type_flags.10?int": "Forward counter", + "object_message_param_replies_type_flags.23?MessageReplies": "Info about [post comments (for channels) or message replies (for groups)](https:\/\/core.telegram.org\/api\/threads)", + "object_message_param_edit_date_type_flags.15?int": "Last edit date of this message", + "object_message_param_post_author_type_flags.16?string": "Name of the author of this message for channel posts (with signatures enabled)", + "object_message_param_grouped_id_type_flags.17?long": "Multiple media messages sent using [messages.sendMultiMedia](..\/methods\/messages.sendMultiMedia.md) with the same grouped ID indicate an [album or media group](https:\/\/core.telegram.org\/api\/files#albums-grouped-media)", + "object_message_param_reactions_type_flags.20?MessageReactions": "Reactions to this message", + "object_message_param_restriction_reason_type_flags.22?Vector<RestrictionReason>": "Contains the reason why access to this message must be restricted.", + "object_message_param_ttl_period_type_flags.25?int": "Time To Live of the message, once message.date+message.ttl\\_period === time(), the message will be deleted on the server, and must be deleted locally as well.", + "object_message_param_quick_reply_shortcut_id_type_flags.30?int": "If set, this message is a [quick reply shortcut message \u00bb](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts) (note that quick reply shortcut messages *sent* to a private chat will *not* have this field set).", + "object_message_param_effect_type_flags2.2?long": "A [message effect that should be played as specified here \u00bb](https:\/\/core.telegram.org\/api\/effects).", + "object_message_param_factcheck_type_flags2.3?FactCheck": "Represents a [fact-check \u00bb](https:\/\/core.telegram.org\/api\/factcheck).", + "object_message_param_report_delivery_until_date_type_flags2.5?int": "Used for [Telegram Gateway verification messages](https:\/\/telegram.org\/blog\/star-messages-gateway-2-0-and-more#save-even-more-on-user-verification): if set and the current unixtime is bigger than the specified unixtime, invoke [messages.reportMessagesDelivery](..\/methods\/messages.reportMessagesDelivery.md) passing the ID and the peer of this message as soon as it is received by the client (optionally batching requests for the same peer).", + "object_message_param_paid_message_stars_type_flags2.6?long": "The amount of stars the **sender** has paid to send the message, see [here \u00bb](https:\/\/core.telegram.org\/api\/paid-messages) for more info.", + "object_message_param_suggested_post_type_flags2.7?SuggestedPost": "Used to [suggest a post to a channel, see here \u00bb](https:\/\/core.telegram.org\/api\/suggested-posts) for more info on the full flow.", + "object_messageService": "Indicates a service message", + "object_messageService_param_out_type_flags.1?true": "Whether the message is outgoing", + "object_messageService_param_mentioned_type_flags.4?true": "Whether we were mentioned in the message", + "object_messageService_param_media_unread_type_flags.5?true": "Whether the message contains unread media", + "object_messageService_param_reactions_are_possible_type_flags.9?true": "Whether you can [react to this message \u00bb](https:\/\/core.telegram.org\/api\/reactions).", + "object_messageService_param_silent_type_flags.13?true": "Whether the message is silent", + "object_messageService_param_post_type_flags.14?true": "Whether it's a channel post", + "object_messageService_param_legacy_type_flags.19?true": "This is a legacy message: it has to be refetched with the new layer", + "object_messageService_param_id_type_int": "Message ID", + "object_messageService_param_from_id_type_flags.8?Peer": "ID of the sender of this message", + "object_messageService_param_peer_id_type_Peer": "Sender of service message", + "object_messageService_param_saved_peer_id_type_flags.28?Peer": "Will only be set for service messages within a [monoforum topic \u00bb](https:\/\/core.telegram.org\/api\/monoforum): `peer` will be equal to the ID of the monoforum and the `saved_peer_id` flag will be set to the ID of a topic.", + "object_messageService_param_reply_to_type_flags.3?MessageReplyHeader": "Reply (thread) information", + "object_messageService_param_date_type_int": "Message date", + "object_messageService_param_action_type_MessageAction": "Event connected with the service message", + "object_messageService_param_reactions_type_flags.20?MessageReactions": "[Reactions \u00bb](https:\/\/core.telegram.org\/api\/reactions).", + "object_messageService_param_ttl_period_type_flags.25?int": "Time To Live of the message, once message.date+message.ttl\\_period === time(), the message will be deleted on the server, and must be deleted locally as well.", + "object_messageMediaEmpty": "Empty constructor.", + "object_messageMediaPhoto": "Attached photo.", + "object_messageMediaPhoto_param_spoiler_type_flags.3?true": "Whether this media should be hidden behind a spoiler warning", + "object_messageMediaPhoto_param_photo_type_flags.0?Photo": "Photo", + "object_messageMediaPhoto_param_ttl_seconds_type_flags.2?int": "Time to live in seconds of self-destructing photo", + "object_messageMediaGeo": "Attached map.", + "object_messageMediaGeo_param_geo_type_GeoPoint": "GeoPoint", + "object_messageMediaContact": "Attached contact.", + "object_messageMediaContact_param_phone_number_type_string": "Phone number", + "object_messageMediaContact_param_first_name_type_string": "Contact's first name", + "object_messageMediaContact_param_last_name_type_string": "Contact's last name", + "object_messageMediaContact_param_vcard_type_string": "VCARD of contact", + "object_messageMediaContact_param_user_id_type_long": "User identifier or `0`, if the user with the given phone number is not registered", + "object_messageMediaUnsupported": "Current version of the client does not support this media type.", + "object_messageMediaDocument": "Document (video, audio, voice, sticker, any media type except photo)", + "object_messageMediaDocument_param_nopremium_type_flags.3?true": "Whether this is a normal sticker, if not set this is a premium sticker and a premium sticker animation must be played.", + "object_messageMediaDocument_param_spoiler_type_flags.4?true": "Whether this media should be hidden behind a spoiler warning", + "object_messageMediaDocument_param_video_type_flags.6?true": "Whether this is a video.", + "object_messageMediaDocument_param_round_type_flags.7?true": "Whether this is a round video.", + "object_messageMediaDocument_param_voice_type_flags.8?true": "Whether this is a voice message.", + "object_messageMediaDocument_param_document_type_flags.0?Document": "Attached document", + "object_messageMediaDocument_param_alt_documents_type_flags.5?Vector<Document>": "Videos only, contains alternative qualities of the video.", + "object_messageMediaDocument_param_video_cover_type_flags.9?Photo": "Custom video cover.", + "object_messageMediaDocument_param_video_timestamp_type_flags.10?int": "Start playing the video at the specified timestamp (seconds).", + "object_messageMediaDocument_param_ttl_seconds_type_flags.2?int": "Time to live of self-destructing document", + "object_messageMediaWebPage": "Preview of webpage", + "object_messageMediaWebPage_param_force_large_media_type_flags.0?true": "If set, specifies that a large media preview should be used.", + "object_messageMediaWebPage_param_force_small_media_type_flags.1?true": "If set, specifies that a small media preview should be used.", + "object_messageMediaWebPage_param_manual_type_flags.3?true": "If set, indicates that the URL used for the webpage preview was specified manually using [inputMediaWebPage](..\/constructors\/inputMediaWebPage.md), and may not be related to any of the URLs specified in the message.", + "object_messageMediaWebPage_param_safe_type_flags.4?true": "If set, the webpage can be opened directly without user confirmation; otherwise, user confirmation is required, showing the exact URL that will be opened.", + "object_messageMediaWebPage_param_webpage_type_WebPage": "Webpage preview", + "object_messageMediaVenue": "Venue", + "object_messageMediaVenue_param_geo_type_GeoPoint": "Geolocation of venue", + "object_messageMediaVenue_param_title_type_string": "Venue name", + "object_messageMediaVenue_param_address_type_string": "Address", + "object_messageMediaVenue_param_provider_type_string": "Venue provider: currently only \"foursquare\" and \"gplaces\" (Google Places) need to be supported", + "object_messageMediaVenue_param_venue_id_type_string": "Venue ID in the provider's database", + "object_messageMediaVenue_param_venue_type_type_string": "Venue type in the provider's database", + "object_messageMediaGame": "Telegram game", + "object_messageMediaGame_param_game_type_Game": "Game", + "object_messageMediaInvoice": "Invoice", + "object_messageMediaInvoice_param_shipping_address_requested_type_flags.1?true": "Whether the shipping address was requested", + "object_messageMediaInvoice_param_test_type_flags.3?true": "Whether this is an example invoice", + "object_messageMediaInvoice_param_title_type_string": "Product name, 1-32 characters", + "object_messageMediaInvoice_param_description_type_string": "Product description, 1-255 characters", + "object_messageMediaInvoice_param_photo_type_flags.0?WebDocument": "URL of the product photo for the invoice. Can be a photo of the goods or a marketing image for a service. People like it better when they see what they are paying for.", + "object_messageMediaInvoice_param_receipt_msg_id_type_flags.2?int": "Message ID of receipt: if set, clients should change the text of the first [keyboardButtonBuy](..\/constructors\/keyboardButtonBuy.md) button always attached to the [message](..\/constructors\/message.md) to a localized version of the word `Receipt`", + "object_messageMediaInvoice_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code, or `XTR` for [Telegram Stars](https:\/\/core.telegram.org\/api\/stars).", + "object_messageMediaInvoice_param_total_amount_type_long": "Total price in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_messageMediaInvoice_param_start_param_type_string": "Unique bot deep-linking parameter that can be used to generate this invoice", + "object_messageMediaInvoice_param_extended_media_type_flags.4?MessageExtendedMedia": "Deprecated", + "object_messageMediaGeoLive": "Indicates a [live geolocation](https:\/\/core.telegram.org\/api\/live-location)", + "object_messageMediaGeoLive_param_geo_type_GeoPoint": "Geolocation", + "object_messageMediaGeoLive_param_heading_type_flags.0?int": "For [live locations](https:\/\/core.telegram.org\/api\/live-location), a direction in which the location moves, in degrees; 1-360", + "object_messageMediaGeoLive_param_period_type_int": "Validity period of provided geolocation", + "object_messageMediaGeoLive_param_proximity_notification_radius_type_flags.1?int": "For [live locations](https:\/\/core.telegram.org\/api\/live-location), a maximum distance to another chat member for proximity alerts, in meters (0-100000).", + "object_messageMediaPoll": "Poll", + "object_messageMediaPoll_param_poll_type_Poll": "The poll", + "object_messageMediaPoll_param_results_type_PollResults": "The results of the poll", + "object_messageMediaDice": "[Dice-based animated sticker](https:\/\/core.telegram.org\/api\/dice)", + "object_messageMediaDice_param_value_type_int": "[Dice value](https:\/\/core.telegram.org\/api\/dice)", + "object_messageMediaDice_param_emoticon_type_string": "The emoji, for now \ud83c\udfc0, \ud83c\udfb2 and \ud83c\udfaf are supported", + "object_messageMediaStory": "Represents a forwarded [story](https:\/\/core.telegram.org\/api\/stories) or a story mention.", + "object_messageMediaStory_param_via_mention_type_flags.1?true": "If set, indicates that this someone has mentioned us in this story (i.e. by tagging us in the description) or vice versa, we have mentioned the other peer (if the message is outgoing).", + "object_messageMediaStory_param_peer_type_Peer": "Peer that posted the story.", + "object_messageMediaStory_param_id_type_int": "Story ID", + "object_messageMediaStory_param_story_type_flags.0?StoryItem": "The story itself, if absent fetch it using [stories.getStoriesByID](..\/methods\/stories.getStoriesByID.md) and the `peer`\/`id` parameters specified above.", + "object_messageMediaGiveaway": "Contains info about a [giveaway, see here \u00bb](https:\/\/core.telegram.org\/api\/giveaways) for more info.", + "object_messageMediaGiveaway_param_only_new_subscribers_type_flags.0?true": "If set, only new subscribers starting from the giveaway creation date will be able to participate to the giveaway.", + "object_messageMediaGiveaway_param_winners_are_visible_type_flags.2?true": "If set, giveaway winners are public and will be listed in a [messageMediaGiveawayResults](..\/constructors\/messageMediaGiveawayResults.md) message that will be automatically sent to the channel once the giveaway ends.", + "object_messageMediaGiveaway_param_channels_type_Vector<long>": "The channels that the user must join to participate in the giveaway.", + "object_messageMediaGiveaway_param_countries_iso2_type_flags.1?Vector<string>": "If set, only users residing in these countries can participate in the giveaway, (specified as a list of two-letter ISO 3166-1 alpha-2 country codes); otherwise there are no country-based limitations.", + "object_messageMediaGiveaway_param_prize_description_type_flags.3?string": "Can contain a textual description of additional giveaway prizes.", + "object_messageMediaGiveaway_param_quantity_type_int": "Number of [Telegram Premium](https:\/\/core.telegram.org\/api\/premium) subscriptions given away.", + "object_messageMediaGiveaway_param_months_type_flags.4?int": "Duration in months of each [Telegram Premium](https:\/\/core.telegram.org\/api\/premium) subscription in the giveaway.", + "object_messageMediaGiveaway_param_stars_type_flags.5?long": "For [Telegram Star giveaways](https:\/\/core.telegram.org\/api\/stars#star-giveaways), the total number of Telegram Stars being given away.", + "object_messageMediaGiveaway_param_until_date_type_int": "The end date of the giveaway.", + "object_messageMediaGiveawayResults": "A [giveaway](https:\/\/core.telegram.org\/api\/giveaways) with public winners has finished, this constructor contains info about the winners.", + "object_messageMediaGiveawayResults_param_only_new_subscribers_type_flags.0?true": "If set, only new subscribers starting from the giveaway creation date participated in the giveaway.", + "object_messageMediaGiveawayResults_param_refunded_type_flags.2?true": "If set, the giveaway was canceled and was fully refunded.", + "object_messageMediaGiveawayResults_param_channel_id_type_long": "ID of the channel\/supergroup that was automatically [boosted](https:\/\/core.telegram.org\/api\/boost) by the winners of the giveaway for duration of the Premium subscription.", + "object_messageMediaGiveawayResults_param_additional_peers_count_type_flags.3?int": "Number of other channels that participated in the giveaway.", + "object_messageMediaGiveawayResults_param_launch_msg_id_type_int": "Identifier of the message with the giveaway in `channel_id`.", + "object_messageMediaGiveawayResults_param_winners_count_type_int": "Total number of winners in the giveaway.", + "object_messageMediaGiveawayResults_param_unclaimed_count_type_int": "Number of not-yet-claimed prizes.", + "object_messageMediaGiveawayResults_param_winners_type_Vector<long>": "Up to 100 user identifiers of the winners of the giveaway.", + "object_messageMediaGiveawayResults_param_months_type_flags.4?int": "Duration in months of each [Telegram Premium](https:\/\/core.telegram.org\/api\/premium) subscription in the giveaway.", + "object_messageMediaGiveawayResults_param_stars_type_flags.5?long": "For [Telegram Star giveaways](https:\/\/core.telegram.org\/api\/stars#star-giveaways), the total number of Telegram Stars being given away.", + "object_messageMediaGiveawayResults_param_prize_description_type_flags.1?string": "Can contain a textual description of additional giveaway prizes.", + "object_messageMediaGiveawayResults_param_until_date_type_int": "Point in time (Unix timestamp) when the winners were selected. May be bigger than winners selection date specified in initial parameters of the giveaway.", + "object_messageMediaPaidMedia": "[Paid media, see here \u00bb](https:\/\/core.telegram.org\/api\/paid-media) for more info.", + "object_messageMediaPaidMedia_param_stars_amount_type_long": "The price of the media in [Telegram Stars](https:\/\/core.telegram.org\/api\/stars).", + "object_messageMediaPaidMedia_param_extended_media_type_Vector<MessageExtendedMedia>": "Either the paid-for media, or super low resolution media previews if the media wasn't purchased yet, [see here \u00bb](https:\/\/core.telegram.org\/api\/paid-media#viewing-paid-media) for more info.", + "object_messageMediaToDo": "Represents a [todo list \u00bb](https:\/\/core.telegram.org\/api\/todo).", + "object_messageMediaToDo_param_todo_type_TodoList": "The todo list.", + "object_messageMediaToDo_param_completions_type_flags.0?Vector<TodoCompletion>": "Completed items.", + "object_messageActionEmpty": "Empty constructor.", + "object_messageActionChatCreate": "Group created", + "object_messageActionChatCreate_param_title_type_string": "Group name", + "object_messageActionChatCreate_param_users_type_Vector<long>": "List of group members", + "object_messageActionChatEditTitle": "Group name changed.", + "object_messageActionChatEditTitle_param_title_type_string": "New group name", + "object_messageActionChatEditPhoto": "Group profile changed", + "object_messageActionChatEditPhoto_param_photo_type_Photo": "New group profile photo", + "object_messageActionChatDeletePhoto": "Group profile photo removed.", + "object_messageActionChatAddUser": "New member in the group", + "object_messageActionChatAddUser_param_users_type_Vector<long>": "Users that were invited to the chat", + "object_messageActionChatDeleteUser": "User left the group.", + "object_messageActionChatDeleteUser_param_user_id_type_long": "Leaving user ID", + "object_messageActionChatJoinedByLink": "A user joined the chat via an invite link", + "object_messageActionChatJoinedByLink_param_inviter_id_type_long": "ID of the user that created the invite link", + "object_messageActionChannelCreate": "The channel was created", + "object_messageActionChannelCreate_param_title_type_string": "Original channel\/supergroup title", + "object_messageActionChatMigrateTo": "Indicates the chat was [migrated](https:\/\/core.telegram.org\/api\/channel) to the specified supergroup", + "object_messageActionChatMigrateTo_param_channel_id_type_long": "The supergroup it was migrated to", + "object_messageActionChannelMigrateFrom": "Indicates the channel was [migrated](https:\/\/core.telegram.org\/api\/channel) from the specified chat", + "object_messageActionChannelMigrateFrom_param_title_type_string": "The old chat title", + "object_messageActionChannelMigrateFrom_param_chat_id_type_long": "The old chat ID", + "object_messageActionPinMessage": "A message was pinned", + "object_messageActionHistoryClear": "Chat history was cleared", + "object_messageActionGameScore": "Someone scored in a game", + "object_messageActionGameScore_param_game_id_type_long": "Game ID", + "object_messageActionGameScore_param_score_type_int": "Score", + "object_messageActionPaymentSentMe": "A user just sent a payment to me (a bot)", + "object_messageActionPaymentSentMe_param_recurring_init_type_flags.2?true": "Whether this is the first payment of a recurring payment we just subscribed to", + "object_messageActionPaymentSentMe_param_recurring_used_type_flags.3?true": "Whether this payment is part of a recurring payment", + "object_messageActionPaymentSentMe_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code, or `XTR` for [Telegram Stars](https:\/\/core.telegram.org\/api\/stars).", + "object_messageActionPaymentSentMe_param_total_amount_type_long": "Price of the product in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_messageActionPaymentSentMe_param_payload_type_bytes": "Bot specified invoice payload", + "object_messageActionPaymentSentMe_param_info_type_flags.0?PaymentRequestedInfo": "Order info provided by the user", + "object_messageActionPaymentSentMe_param_shipping_option_id_type_flags.1?string": "Identifier of the shipping option chosen by the user", + "object_messageActionPaymentSentMe_param_charge_type_PaymentCharge": "Provider payment identifier", + "object_messageActionPaymentSentMe_param_subscription_until_date_type_flags.4?int": "Expiration date of the [Telegram Star subscription \u00bb](https:\/\/core.telegram.org\/api\/stars#star-subscriptions).", + "object_messageActionPaymentSent": "A payment was sent", + "object_messageActionPaymentSent_param_recurring_init_type_flags.2?true": "Whether this is the first payment of a recurring payment we just subscribed to", + "object_messageActionPaymentSent_param_recurring_used_type_flags.3?true": "Whether this payment is part of a recurring payment", + "object_messageActionPaymentSent_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code, or `XTR` for [Telegram Stars](https:\/\/core.telegram.org\/api\/stars).", + "object_messageActionPaymentSent_param_total_amount_type_long": "Price of the product in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_messageActionPaymentSent_param_invoice_slug_type_flags.0?string": "An invoice slug taken from an [invoice deep link](https:\/\/core.telegram.org\/api\/links#invoice-links) or from the [`premium_invoice_slug` app config parameter \u00bb](https:\/\/core.telegram.org\/api\/config#premium-invoice-slug)", + "object_messageActionPaymentSent_param_subscription_until_date_type_flags.4?int": "Expiration date of the [Telegram Star subscription \u00bb](https:\/\/core.telegram.org\/api\/stars#star-subscriptions).", + "object_messageActionPhoneCall": "A phone call", + "object_messageActionPhoneCall_param_video_type_flags.2?true": "Is this a video call?", + "object_messageActionPhoneCall_param_call_id_type_long": "Call ID", + "object_messageActionPhoneCall_param_reason_type_flags.0?PhoneCallDiscardReason": "If the call has ended, the reason why it ended", + "object_messageActionPhoneCall_param_duration_type_flags.1?int": "Duration of the call in seconds", + "object_messageActionScreenshotTaken": "A screenshot of the chat was taken", + "object_messageActionCustomAction": "Custom action (most likely not supported by the current layer, an upgrade might be needed)", + "object_messageActionCustomAction_param_message_type_string": "Action message", + "object_messageActionBotAllowed": "We have given the bot permission to send us direct messages.\n\nThe optional fields specify how did we authorize the bot to send us messages.", + "object_messageActionBotAllowed_param_attach_menu_type_flags.1?true": "We have authorized the bot to send us messages by installing the bot's [attachment menu](https:\/\/core.telegram.org\/api\/bots\/attach).", + "object_messageActionBotAllowed_param_from_request_type_flags.3?true": "We have allowed the bot to send us messages using [bots.allowSendMessage \u00bb](..\/methods\/bots.allowSendMessage.md).", + "object_messageActionBotAllowed_param_domain_type_flags.0?string": "We have authorized the bot to send us messages by logging into a website via [Telegram Login \u00bb](https:\/\/core.telegram.org\/widgets\/login); this field contains the domain name of the website on which the user has logged in.", + "object_messageActionBotAllowed_param_app_type_flags.2?BotApp": "We have authorized the bot to send us messages by opening the specified [bot mini app](https:\/\/core.telegram.org\/api\/bots\/webapps).", + "object_messageActionSecureValuesSentMe": "Secure [telegram passport](https:\/\/core.telegram.org\/passport) values were received", + "object_messageActionSecureValuesSentMe_param_values_type_Vector<SecureValue>": "Vector with information about documents and other Telegram Passport elements that were shared with the bot", + "object_messageActionSecureValuesSentMe_param_credentials_type_SecureCredentialsEncrypted": "Encrypted credentials required to decrypt the data", + "object_messageActionSecureValuesSent": "Request for secure [telegram passport](https:\/\/core.telegram.org\/passport) values was sent", + "object_messageActionSecureValuesSent_param_types_type_Vector<SecureValueType>": "Secure value types", + "object_messageActionContactSignUp": "A contact just signed up to telegram", + "object_messageActionGeoProximityReached": "A user of the chat is now in proximity of another user", + "object_messageActionGeoProximityReached_param_from_id_type_Peer": "The user or chat that is now in proximity of `to_id`", + "object_messageActionGeoProximityReached_param_to_id_type_Peer": "The user or chat that subscribed to [live geolocation proximity alerts](https:\/\/core.telegram.org\/api\/live-location#proximity-alert)", + "object_messageActionGeoProximityReached_param_distance_type_int": "Distance, in meters (0-100000)", + "object_messageActionGroupCall": "The group call has ended", + "object_messageActionGroupCall_param_call_type_InputGroupCall": "Group call", + "object_messageActionGroupCall_param_duration_type_flags.0?int": "Group call duration", + "object_messageActionInviteToGroupCall": "A set of users was invited to the group call", + "object_messageActionInviteToGroupCall_param_call_type_InputGroupCall": "The group call", + "object_messageActionInviteToGroupCall_param_users_type_Vector<long>": "The invited users", + "object_messageActionSetMessagesTTL": "The Time-To-Live of messages in this chat was changed.", + "object_messageActionSetMessagesTTL_param_period_type_int": "New Time-To-Live of all messages sent in this chat; if 0, autodeletion was disabled.", + "object_messageActionSetMessagesTTL_param_auto_setting_from_type_flags.0?long": "If set, the chat TTL setting was set not due to a manual change by one of participants, but automatically because one of the participants has the [default TTL settings enabled \u00bb](..\/methods\/messages.setDefaultHistoryTTL.md). For example, when a user writes to us for the first time and we have set a default messages TTL of 1 week, this service message (with `auto_setting_from=our_userid`) will be emitted before our first message.", + "object_messageActionGroupCallScheduled": "A group call was scheduled", + "object_messageActionGroupCallScheduled_param_call_type_InputGroupCall": "The group call", + "object_messageActionGroupCallScheduled_param_schedule_date_type_int": "When is this group call scheduled to start", + "object_messageActionSetChatTheme": "The chat theme was changed", + "object_messageActionSetChatTheme_param_theme_type_ChatTheme": "The new chat theme.", + "object_messageActionChatJoinedByRequest": "A user was accepted into the group by an admin", + "object_messageActionWebViewDataSentMe": "Data from an opened [reply keyboard bot mini app](https:\/\/core.telegram.org\/api\/bots\/webapps) was relayed to the bot that owns it (bot side service message).", + "object_messageActionWebViewDataSentMe_param_text_type_string": "Text of the [keyboardButtonSimpleWebView](..\/constructors\/keyboardButtonSimpleWebView.md) that was pressed to open the web app.", + "object_messageActionWebViewDataSentMe_param_data_type_string": "Relayed data.", + "object_messageActionWebViewDataSent": "Data from an opened [reply keyboard bot mini app](https:\/\/core.telegram.org\/api\/bots\/webapps) was relayed to the bot that owns it (user side service message).\n\nClients should display a service message with the text `Data from the \u00ab$text\u00bb button was transferred to the bot.`", + "object_messageActionWebViewDataSent_param_text_type_string": "Text of the [keyboardButtonSimpleWebView](..\/constructors\/keyboardButtonSimpleWebView.md) that was pressed to open the web app.", + "object_messageActionGiftPremium": "Info about a gifted Telegram Premium subscription\n\nThis service message should be displayed below the appropriate sticker from the [inputStickerSetPremiumGifts \u00bb](..\/constructors\/inputStickerSetPremiumGifts.md) [stickerset \u00bb](https:\/\/core.telegram.org\/api\/stickers#stickersets):\n\n- If `months == 1`, choose the sticker with emoji equal to \"1\ufe0f\u20e3\"\n- If `months == 3`, choose the sticker with emoji equal to \"2\ufe0f\u20e3\"\n- If `months == 6`, choose the sticker with emoji equal to \"3\ufe0f\u20e3\"\n- If `months == 12`, choose the sticker with emoji equal to \"4\ufe0f\u20e3\"\n- If `months == 24`, choose the sticker with emoji equal to \"5\ufe0f\u20e3\"\n- Otherwise, fallback to the sticker with emoji equal to \"1\ufe0f\u20e3\"", + "object_messageActionGiftPremium_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code", + "object_messageActionGiftPremium_param_amount_type_long": "Price of the gift in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_messageActionGiftPremium_param_months_type_int": "Duration of the gifted Telegram Premium subscription.", + "object_messageActionGiftPremium_param_crypto_currency_type_flags.0?string": "If the gift was bought using a cryptocurrency, the cryptocurrency name.", + "object_messageActionGiftPremium_param_crypto_amount_type_flags.0?long": "If the gift was bought using a cryptocurrency, price of the gift in the smallest units of a cryptocurrency.", + "object_messageActionGiftPremium_param_message_type_flags.1?TextWithEntities": "Message attached with the gift", + "object_messageActionTopicCreate": "A [forum topic](https:\/\/core.telegram.org\/api\/forum#forum-topics) was created.", + "object_messageActionTopicCreate_param_title_type_string": "Topic name.", + "object_messageActionTopicCreate_param_icon_color_type_int": "If no custom emoji icon is specified, specifies the color of the fallback topic icon (RGB), one of `0x6FB9F0`, `0xFFD67E`, `0xCB86DB`, `0x8EEE98`, `0xFF93B2`, or `0xFB6F5F`.", + "object_messageActionTopicCreate_param_icon_emoji_id_type_flags.0?long": "ID of the [custom emoji](https:\/\/core.telegram.org\/api\/custom-emoji) used as topic icon.", + "object_messageActionTopicEdit": "[Forum topic](https:\/\/core.telegram.org\/api\/forum#forum-topics) information was edited.", + "object_messageActionTopicEdit_param_title_type_flags.0?string": "New topic title.", + "object_messageActionTopicEdit_param_icon_emoji_id_type_flags.1?long": "ID of the new [custom emoji](https:\/\/core.telegram.org\/api\/custom-emoji) used as topic icon, or if it was removed.", + "object_messageActionTopicEdit_param_closed_type_flags.2?Bool": "Whether the topic was opened or closed.", + "object_messageActionTopicEdit_param_hidden_type_flags.3?Bool": "Whether the topic was hidden or unhidden (only valid for the \"General\" topic, `id=1`).", + "object_messageActionSuggestProfilePhoto": "A new profile picture was suggested using [photos.uploadContactProfilePhoto](..\/methods\/photos.uploadContactProfilePhoto.md).", + "object_messageActionSuggestProfilePhoto_param_photo_type_Photo": "The photo that the user suggested we set as profile picture.", + "object_messageActionRequestedPeer": "Contains info about one or more peers that the we (the user) shared with the bot after clicking on a [keyboardButtonRequestPeer](..\/constructors\/keyboardButtonRequestPeer.md) button (service message sent by the user).", + "object_messageActionRequestedPeer_param_button_id_type_int": "`button_id` contained in the [keyboardButtonRequestPeer](..\/constructors\/keyboardButtonRequestPeer.md)", + "object_messageActionRequestedPeer_param_peers_type_Vector<Peer>": "The shared peers", + "object_messageActionSetChatWallPaper": "The [wallpaper \u00bb](https:\/\/core.telegram.org\/api\/wallpapers) of the current chat was changed.", + "object_messageActionSetChatWallPaper_param_same_type_flags.0?true": "If set, indicates the user applied a [wallpaper \u00bb](https:\/\/core.telegram.org\/api\/wallpapers) previously sent by the other user in a [messageActionSetChatWallPaper](..\/constructors\/messageActionSetChatWallPaper.md) message.", + "object_messageActionSetChatWallPaper_param_for_both_type_flags.1?true": "If set, indicates the wallpaper was forcefully applied for both sides, without explicit confirmation from the other side.
If the message is incoming, and we did not like the new wallpaper the other user has chosen for us, we can re-set our previous wallpaper just on our side, by invoking [messages.setChatWallPaper](..\/methods\/messages.setChatWallPaper.md), providing only the `revert` flag (and obviously the `peer` parameter).", + "object_messageActionSetChatWallPaper_param_wallpaper_type_WallPaper": "New [wallpaper](https:\/\/core.telegram.org\/api\/wallpapers)", + "object_messageActionGiftCode": "Contains a [Telegram Premium giftcode link](https:\/\/core.telegram.org\/api\/links#premium-giftcode-links).", + "object_messageActionGiftCode_param_via_giveaway_type_flags.0?true": "If set, this gift code was received from a [giveaway \u00bb](https:\/\/core.telegram.org\/api\/giveaways) started by a channel\/supergroup we're subscribed to.", + "object_messageActionGiftCode_param_unclaimed_type_flags.5?true": "If set, the link was not [redeemed](https:\/\/core.telegram.org\/api\/links#premium-giftcode-links) yet.", + "object_messageActionGiftCode_param_boost_peer_type_flags.1?Peer": "Identifier of the channel\/supergroup that created the gift code [either directly or through a giveaway](https:\/\/core.telegram.org\/api\/giveaways): if we import this giftcode link, we will also automatically [boost](https:\/\/core.telegram.org\/api\/boost) this channel\/supergroup.", + "object_messageActionGiftCode_param_months_type_int": "Duration in months of the gifted [Telegram Premium subscription](https:\/\/core.telegram.org\/api\/premium).", + "object_messageActionGiftCode_param_slug_type_string": "Slug of the [Telegram Premium giftcode link](https:\/\/core.telegram.org\/api\/links#premium-giftcode-links)", + "object_messageActionGiftCode_param_currency_type_flags.2?string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code", + "object_messageActionGiftCode_param_amount_type_flags.2?long": "Total price in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_messageActionGiftCode_param_crypto_currency_type_flags.3?string": "If set, the gift was made using the specified cryptocurrency.", + "object_messageActionGiftCode_param_crypto_amount_type_flags.3?long": "If `crypto_currency` is set, contains the paid amount, in the smallest units of the cryptocurrency.", + "object_messageActionGiftCode_param_message_type_flags.4?TextWithEntities": "Message attached with the gift", + "object_messageActionGiveawayLaunch": "A [giveaway](https:\/\/core.telegram.org\/api\/giveaways) was started.", + "object_messageActionGiveawayLaunch_param_stars_type_flags.0?long": "For [Telegram Star giveaways](https:\/\/core.telegram.org\/api\/stars#star-giveaways), the total number of Telegram Stars being given away.", + "object_messageActionGiveawayResults": "A [giveaway](https:\/\/core.telegram.org\/api\/giveaways) has ended.", + "object_messageActionGiveawayResults_param_stars_type_flags.0?true": "If set, this is a [Telegram Star giveaway](https:\/\/core.telegram.org\/api\/stars#star-giveaways)", + "object_messageActionGiveawayResults_param_winners_count_type_int": "Number of winners in the giveaway", + "object_messageActionGiveawayResults_param_unclaimed_count_type_int": "Number of undistributed prizes", + "object_messageActionBoostApply": "Some [boosts \u00bb](https:\/\/core.telegram.org\/api\/boost) were applied to the channel or supergroup.", + "object_messageActionBoostApply_param_boosts_type_int": "Number of applied [boosts](https:\/\/core.telegram.org\/api\/boost).", + "object_messageActionRequestedPeerSentMe": "Contains info about one or more peers that the a user shared with the me (the bot) after clicking on a [keyboardButtonRequestPeer](..\/constructors\/keyboardButtonRequestPeer.md) button (service message received by the bot).", + "object_messageActionRequestedPeerSentMe_param_button_id_type_int": "`button_id` contained in the [keyboardButtonRequestPeer](..\/constructors\/keyboardButtonRequestPeer.md)", + "object_messageActionRequestedPeerSentMe_param_peers_type_Vector<RequestedPeer>": "Info about the shared peers.", + "object_messageActionPaymentRefunded": "Describes a payment refund (service message received by both users and bots).", + "object_messageActionPaymentRefunded_param_peer_type_Peer": "Identifier of the peer that returned the funds.", + "object_messageActionPaymentRefunded_param_currency_type_string": "Currency, `XTR` for Telegram Stars.", + "object_messageActionPaymentRefunded_param_total_amount_type_long": "Total price in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_messageActionPaymentRefunded_param_payload_type_flags.0?bytes": "Bot specified invoice payload (only received by bots).", + "object_messageActionPaymentRefunded_param_charge_type_PaymentCharge": "Provider payment identifier", + "object_messageActionGiftStars": "You gifted or were gifted some [Telegram Stars](https:\/\/core.telegram.org\/api\/stars).\n\nThis service message should be displayed below the appropriate sticker from the [inputStickerSetPremiumGifts \u00bb](..\/constructors\/inputStickerSetPremiumGifts.md) [stickerset \u00bb](https:\/\/core.telegram.org\/api\/stickers#stickersets):\n\n- If `stars <= 1000`, choose the sticker with emoji equal to \"2\ufe0f\u20e3\"\n- If `stars < 2500`, choose the sticker with emoji equal to \"3\ufe0f\u20e3\"\n- Otherwise, choose the sticker with emoji equal to \"4\ufe0f\u20e3\"", + "object_messageActionGiftStars_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code", + "object_messageActionGiftStars_param_amount_type_long": "Price of the gift in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_messageActionGiftStars_param_stars_type_long": "Amount of gifted stars", + "object_messageActionGiftStars_param_crypto_currency_type_flags.0?string": "If the gift was bought using a cryptocurrency, the cryptocurrency name.", + "object_messageActionGiftStars_param_crypto_amount_type_flags.0?long": "If the gift was bought using a cryptocurrency, price of the gift in the smallest units of a cryptocurrency.", + "object_messageActionGiftStars_param_transaction_id_type_flags.1?string": "Identifier of the transaction, only visible to the receiver of the gift.", + "object_messageActionPrizeStars": "You won some [Telegram Stars](https:\/\/core.telegram.org\/api\/stars) in a [Telegram Star giveaway \u00bb](https:\/\/core.telegram.org\/api\/giveaways#star-giveaways).\n\nThis service message should be displayed below the appropriate sticker from the [inputStickerSetPremiumGifts \u00bb](..\/constructors\/inputStickerSetPremiumGifts.md) [stickerset \u00bb](https:\/\/core.telegram.org\/api\/stickers#stickersets):\n\n- If `stars <= 1000`, choose the sticker with emoji equal to \"2\ufe0f\u20e3\"\n- If `stars < 2500`, choose the sticker with emoji equal to \"3\ufe0f\u20e3\"\n- Otherwise, choose the sticker with emoji equal to \"4\ufe0f\u20e3\"", + "object_messageActionPrizeStars_param_unclaimed_type_flags.0?true": "If set, this indicates the reverse transaction that refunds the remaining stars to the creator of a giveaway if, when the giveaway ends, the number of members in the channel is smaller than the number of winners in the giveaway.", + "object_messageActionPrizeStars_param_stars_type_long": "The number of Telegram Stars you won", + "object_messageActionPrizeStars_param_transaction_id_type_string": "ID of the telegram star transaction.", + "object_messageActionPrizeStars_param_boost_peer_type_Peer": "Identifier of the peer that was automatically boosted by the winners of the giveaway.", + "object_messageActionPrizeStars_param_giveaway_msg_id_type_int": "ID of the message containing the [messageMediaGiveaway](..\/constructors\/messageMediaGiveaway.md)", + "object_messageActionStarGift": "You received a [gift, see here \u00bb](https:\/\/core.telegram.org\/api\/gifts) for more info.", + "object_messageActionStarGift_param_name_hidden_type_flags.0?true": "If set, the name of the sender of the gift will be hidden if the destination user decides to display the gift on their profile", + "object_messageActionStarGift_param_saved_type_flags.2?true": "Whether this gift was added to the destination user's profile (may be toggled using [payments.saveStarGift](..\/methods\/payments.saveStarGift.md) and fetched using [payments.getSavedStarGifts](..\/methods\/payments.getSavedStarGifts.md))", + "object_messageActionStarGift_param_converted_type_flags.3?true": "Whether this gift was converted to [Telegram Stars](https:\/\/core.telegram.org\/api\/stars) and cannot be displayed on the profile anymore.", + "object_messageActionStarGift_param_upgraded_type_flags.5?true": "This gift was upgraded to a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "object_messageActionStarGift_param_refunded_type_flags.9?true": "This gift is not available anymore because a request to refund the payment related to this gift was made, and the money was returned.", + "object_messageActionStarGift_param_can_upgrade_type_flags.10?true": "If set, this gift can be [upgraded to a collectible gift](https:\/\/core.telegram.org\/api\/gifts#upgrade-a-gift-to-a-collectible-gift); can only be set for the receiver of a gift.", + "object_messageActionStarGift_param_prepaid_upgrade_type_flags.13?true": "The sender has already pre-paid for the upgrade of this gift to a collectible gift.", + "object_messageActionStarGift_param_upgrade_separate_type_flags.16?true": "This service message is the notification of a [separate pre-payment for the upgrade of a gift we own](https:\/\/core.telegram.org\/api\/gifts#prepaying-for-someone-elses-upgrade).", + "object_messageActionStarGift_param_gift_type_StarGift": "Info about the gift", + "object_messageActionStarGift_param_message_type_flags.1?TextWithEntities": "Additional message from the sender of the gift", + "object_messageActionStarGift_param_convert_stars_type_flags.4?long": "The receiver of this gift may convert it to this many Telegram Stars, instead of displaying it on their profile page.
`convert_stars` will be equal to `stars` only if the gift was bought using recently bought Telegram Stars, otherwise it will be less than `stars`.", + "object_messageActionStarGift_param_upgrade_msg_id_type_flags.5?int": "If set, this gift was [upgraded to a collectible gift](https:\/\/core.telegram.org\/api\/gifts#upgrade-a-gift-to-a-collectible-gift), and the corresponding [messageActionStarGiftUnique](..\/constructors\/messageActionStarGiftUnique.md) is available at the specified message ID.", + "object_messageActionStarGift_param_upgrade_stars_type_flags.8?long": "The number of Telegram Stars the user can pay to [convert the gift into a collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "object_messageActionStarGift_param_from_id_type_flags.11?Peer": "Sender of the gift (unset for anonymous gifts).", + "object_messageActionStarGift_param_peer_type_flags.12?Peer": "Receiver of the gift.", + "object_messageActionStarGift_param_saved_id_type_flags.12?long": "For channel gifts, ID to use in [inputSavedStarGiftChat](..\/constructors\/inputSavedStarGiftChat.md) constructors.", + "object_messageActionStarGift_param_prepaid_upgrade_hash_type_flags.14?string": "[Hash to prepay for a gift upgrade separately \u00bb](https:\/\/core.telegram.org\/api\/gifts#prepaying-for-someone-elses-upgrade).", + "object_messageActionStarGift_param_gift_msg_id_type_flags.15?int": "For [separate upgrades](https:\/\/core.telegram.org\/api\/gifts#prepaying-for-someone-elses-upgrade), the identifier of the message with the gift whose upgrade was prepaid (only valid for the receiver of the service message).", + "object_messageActionStarGiftUnique": "A [gift \u00bb](https:\/\/core.telegram.org\/api\/gifts) was upgraded to a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "object_messageActionStarGiftUnique_param_upgrade_type_flags.0?true": "If set, this collectible was [upgraded \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts) to a collectible gift from a previously received or sent (depending on the `out` flag of the containing [messageService](..\/constructors\/messageService.md)) non-collectible gift.", + "object_messageActionStarGiftUnique_param_transferred_type_flags.1?true": "If set, this collectible was transferred (either to the current user or by the current user to the other user in the private chat, depending on the `out` flag of the containing [messageService](..\/constructors\/messageService.md)).", + "object_messageActionStarGiftUnique_param_saved_type_flags.2?true": "If set, this gift is visible on the user or channel's profile page; can only be set for the receiver of a gift.", + "object_messageActionStarGiftUnique_param_refunded_type_flags.5?true": "This gift was upgraded to a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts) and then re-downgraded to a regular gift because a request to refund the payment related to the upgrade was made, and the money was returned.", + "object_messageActionStarGiftUnique_param_prepaid_upgrade_type_flags.11?true": "The sender has pre-paid for the upgrade of this gift to a collectible gift.", + "object_messageActionStarGiftUnique_param_gift_type_StarGift": "The collectible gift.", + "object_messageActionStarGiftUnique_param_can_export_at_type_flags.3?int": "If set, indicates that the current gift can't be [exported to the TON blockchain \u00bb](https:\/\/core.telegram.org\/api\/gifts#withdraw-a-collectible-gift-to-the-ton-blockchain) yet: the owner will be able to export it at the specified unixtime.", + "object_messageActionStarGiftUnique_param_transfer_stars_type_flags.4?long": "If set, indicates that the gift can be [transferred \u00bb](https:\/\/core.telegram.org\/api\/gifts#transferring-collectible-gifts) to another user by paying the specified amount of stars.", + "object_messageActionStarGiftUnique_param_from_id_type_flags.6?Peer": "Sender of the gift (unset for anonymous gifts).", + "object_messageActionStarGiftUnique_param_peer_type_flags.7?Peer": "Receiver of the gift.", + "object_messageActionStarGiftUnique_param_saved_id_type_flags.7?long": "For channel gifts, ID to use in [inputSavedStarGiftChat](..\/constructors\/inputSavedStarGiftChat.md) constructors.", + "object_messageActionStarGiftUnique_param_resale_amount_type_flags.8?StarsAmount": "Resale price of the gift.", + "object_messageActionStarGiftUnique_param_can_transfer_at_type_flags.9?int": "If set, indicates that the current gift can't be [transferred \u00bb](https:\/\/core.telegram.org\/api\/gifts#transferring-collectible-gifts) yet: the owner will be able to transfer it at the specified unixtime.", + "object_messageActionStarGiftUnique_param_can_resell_at_type_flags.10?int": "If set, indicates that the current gift can't be [resold \u00bb](https:\/\/core.telegram.org\/api\/gifts#reselling-collectible-gifts) yet: the owner will be able to put it up for sale at the specified unixtime.", + "object_messageActionPaidMessagesRefunded": "Sent from peer A to B, indicates that A refunded all [stars](https:\/\/core.telegram.org\/api\/stars) B previously paid to send messages to A, see [here \u00bb](https:\/\/core.telegram.org\/api\/paid-messages) for more info on paid messages.", + "object_messageActionPaidMessagesRefunded_param_count_type_int": "Number of paid messages affected by the refund.", + "object_messageActionPaidMessagesRefunded_param_stars_type_long": "Number of refunded stars.", + "object_messageActionPaidMessagesPrice": "The price of [paid messages \u00bb](https:\/\/core.telegram.org\/api\/paid-messages) in this chat was changed.", + "object_messageActionPaidMessagesPrice_param_broadcast_messages_allowed_type_flags.0?true": "Can only be set for channels, if set indicates that [direct messages were enabled \u00bb](https:\/\/core.telegram.org\/api\/monoforum), otherwise indicates that direct messages were disabled; the price of paid messages is related to the price of direct messages (aka those sent to the associated [monoforum](https:\/\/core.telegram.org\/api\/monoforum)).", + "object_messageActionPaidMessagesPrice_param_stars_type_long": "The new price in [Telegram Stars](https:\/\/core.telegram.org\/api\/stars), can be `0` if messages are now free.", + "object_messageActionConferenceCall": "Represents a [conference call](https:\/\/core.telegram.org\/api\/end-to-end\/group-calls) (or an invitation to a conference call, if neither the `missed` nor `active` flags are set).\n\nIf [call\\_requests\\_disabled](https:\/\/core.telegram.org\/api\/config#call-requests-disabled) is not set or false, an incoming [messageActionConferenceCall](..\/constructors\/messageActionConferenceCall.md) with the `missed` and `active` flags **not** set should trigger ringing and an incoming call screen, just like for one-on-one calls.", + "object_messageActionConferenceCall_param_missed_type_flags.0?true": "Whether the conference call has ended and the user hasn't joined.", + "object_messageActionConferenceCall_param_active_type_flags.1?true": "Whether the user is currently in the conference call.", + "object_messageActionConferenceCall_param_video_type_flags.4?true": "Whether this is a video conference call.", + "object_messageActionConferenceCall_param_call_id_type_long": "Call ID.", + "object_messageActionConferenceCall_param_duration_type_flags.2?int": "Call duration, for left calls only.", + "object_messageActionConferenceCall_param_other_participants_type_flags.3?Vector<Peer>": "Identifiers of some other call participants.", + "object_messageActionTodoCompletions": "Items were marked as completed or not completed in a [todo list \u00bb](https:\/\/core.telegram.org\/api\/todo).", + "object_messageActionTodoCompletions_param_completed_type_Vector<int>": "Items marked as completed.", + "object_messageActionTodoCompletions_param_incompleted_type_Vector<int>": "Items marked as not completed.", + "object_messageActionTodoAppendTasks": "Items were appended to the [todo list \u00bb](https:\/\/core.telegram.org\/api\/todo).", + "object_messageActionTodoAppendTasks_param_list_type_Vector<TodoItem>": "Appended items.", + "object_messageActionSuggestedPostApproval": "A [suggested post \u00bb](https:\/\/core.telegram.org\/api\/suggested-posts) was approved or rejected.", + "object_messageActionSuggestedPostApproval_param_rejected_type_flags.0?true": "Whether the suggested post was rejected.", + "object_messageActionSuggestedPostApproval_param_balance_too_low_type_flags.1?true": "If set, the post was approved but the user's balance is too low to pay for the suggested post.", + "object_messageActionSuggestedPostApproval_param_reject_comment_type_flags.2?string": "If the suggested post was rejected, can optionally contain a rejection comment.", + "object_messageActionSuggestedPostApproval_param_schedule_date_type_flags.3?int": "Scheduling date.", + "object_messageActionSuggestedPostApproval_param_price_type_flags.4?StarsAmount": "Price for the suggested post.", + "object_messageActionSuggestedPostSuccess": "A [suggested post \u00bb](https:\/\/core.telegram.org\/api\/suggested-posts) was successfully posted, and payment for it was successfully received.", + "object_messageActionSuggestedPostSuccess_param_price_type_StarsAmount": "The price.", + "object_messageActionSuggestedPostRefund": "A [suggested post \u00bb](https:\/\/core.telegram.org\/api\/suggested-posts) was accepted and posted or scheduled, but either the channel deleted the posted\/scheduled post before [stars\\_suggested\\_post\\_age\\_min](https:\/\/core.telegram.org\/api\/config#stars-suggested-post-age-min) seconds have elapsed, or the user refunded the payment for the stars used to pay for the suggested post.", + "object_messageActionSuggestedPostRefund_param_payer_initiated_type_flags.0?true": "If set, the user refunded the payment for the stars used to pay for the suggested post.", + "object_messageActionGiftTon": "You were gifted some toncoins.\n\nThis service message should be displayed below the appropriate sticker from the [inputStickerSetTonGifts \u00bb](..\/constructors\/inputStickerSetTonGifts.md) [stickerset \u00bb](https:\/\/core.telegram.org\/api\/stickers#stickersets):\n\n- If `crypto_amount <= 10_000_000_000`, choose the sticker with emoji equal to \"2\ufe0f\u20e3\"\n- If `crypto_amount <= 50_000_000_000`, choose the sticker with emoji equal to \"1\ufe0f\u20e3\"\n- Otherwise, choose the sticker with emoji equal to \"3\ufe0f\u20e3\"", + "object_messageActionGiftTon_param_currency_type_string": "Name of a localized FIAT currency.", + "object_messageActionGiftTon_param_amount_type_long": "FIAT currency equivalent (in the currency specified in `currency`) of the amount specified in `crypto_amount`.", + "object_messageActionGiftTon_param_crypto_currency_type_string": "Name of the cryptocurrency.", + "object_messageActionGiftTon_param_crypto_amount_type_long": "Amount in the smallest unit of the cryptocurrency (for TONs, one billionth of a ton, AKA a nanoton).", + "object_messageActionGiftTon_param_transaction_id_type_flags.0?string": "Transaction ID.", + "object_dialog": "Chat", + "object_dialog_param_pinned_type_flags.2?true": "Is the dialog pinned", + "object_dialog_param_unread_mark_type_flags.3?true": "Whether the chat was manually marked as unread", + "object_dialog_param_view_forum_as_messages_type_flags.6?true": "Users may also choose to display messages from all topics of a [forum](https:\/\/core.telegram.org\/api\/forum) as if they were sent to a normal group, using a \"View as messages\" setting in the local client.
This setting only affects the current account, and is synced to other logged in sessions using the [channels.toggleViewForumAsMessages](..\/methods\/channels.toggleViewForumAsMessages.md) method; invoking this method will update the value of this flag.", + "object_dialog_param_peer_type_Peer": "The chat", + "object_dialog_param_top_message_type_int": "The latest message ID", + "object_dialog_param_read_inbox_max_id_type_int": "Position up to which all incoming messages are read.", + "object_dialog_param_read_outbox_max_id_type_int": "Position up to which all outgoing messages are read.", + "object_dialog_param_unread_count_type_int": "Number of unread messages", + "object_dialog_param_unread_mentions_count_type_int": "Number of [unread mentions](https:\/\/core.telegram.org\/api\/mentions)", + "object_dialog_param_unread_reactions_count_type_int": "Number of unread reactions to messages you sent", + "object_dialog_param_notify_settings_type_PeerNotifySettings": "Notification settings", + "object_dialog_param_pts_type_flags.0?int": "[PTS](https:\/\/core.telegram.org\/api\/updates)", + "object_dialog_param_draft_type_flags.1?DraftMessage": "Message [draft](https:\/\/core.telegram.org\/api\/drafts)", + "object_dialog_param_folder_id_type_flags.4?int": "[Peer folder ID, for more info click here](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "object_dialog_param_ttl_period_type_flags.5?int": "Time-to-live of all messages sent in this dialog", + "object_dialogFolder": "Dialog in folder", + "object_dialogFolder_param_pinned_type_flags.2?true": "Is this folder pinned", + "object_dialogFolder_param_folder_type_Folder": "The folder", + "object_dialogFolder_param_peer_type_Peer": "Peer in folder", + "object_dialogFolder_param_top_message_type_int": "Latest message ID of dialog", + "object_dialogFolder_param_unread_muted_peers_count_type_int": "Number of unread muted peers in folder", + "object_dialogFolder_param_unread_unmuted_peers_count_type_int": "Number of unread unmuted peers in folder", + "object_dialogFolder_param_unread_muted_messages_count_type_int": "Number of unread messages from muted peers in folder", + "object_dialogFolder_param_unread_unmuted_messages_count_type_int": "Number of unread messages from unmuted peers in folder", + "object_photoEmpty": "Empty constructor, non-existent photo", + "object_photoEmpty_param_id_type_long": "Photo identifier", + "object_photo": "Photo", + "object_photo_param_has_stickers_type_flags.0?true": "Whether the photo has mask stickers attached to it", + "object_photo_param_id_type_long": "ID", + "object_photo_param_access_hash_type_long": "Access hash", + "object_photo_param_file_reference_type_bytes": "[file reference](https:\/\/core.telegram.org\/api\/file-references)", + "object_photo_param_date_type_int": "Date of upload", + "object_photo_param_sizes_type_Vector<PhotoSize>": "Available sizes for download", + "object_photo_param_video_sizes_type_flags.1?Vector<VideoSize>": "[For animated profiles](https:\/\/core.telegram.org\/api\/files#animated-profile-pictures), the MPEG4 videos", + "object_photo_param_dc_id_type_int": "DC ID to use for download", + "object_photoStrippedSize": "A low-resolution compressed JPG payload", + "object_photoStrippedSize_param_type_type_string": "Thumbnail type", + "object_photoStrippedSize_param_bytes_type_bytes": "Thumbnail data, see [here for more info on decompression \u00bb](https:\/\/core.telegram.org\/api\/files#stripped-thumbnails)", + "object_photoSizeProgressive": "Progressively encoded photosize", + "object_photoSizeProgressive_param_type_type_string": "[Photosize type \u00bb](https:\/\/core.telegram.org\/api\/files#image-thumbnail-types)", + "object_photoSizeProgressive_param_w_type_int": "Photo width", + "object_photoSizeProgressive_param_h_type_int": "Photo height", + "object_photoSizeProgressive_param_sizes_type_Vector<int>": "Sizes of progressive JPEG file prefixes, which can be used to preliminarily show the image.", + "object_photoPathSize": "Messages with animated stickers can have a compressed svg (< 300 bytes) to show the outline of the sticker before fetching the actual lottie animation.", + "object_photoPathSize_param_type_type_string": "Always `j`", + "object_photoPathSize_param_bytes_type_bytes": "Compressed SVG path payload, [see here for decompression instructions](https:\/\/core.telegram.org\/api\/files#vector-thumbnails)", + "object_geoPointEmpty": "Empty constructor.", + "object_geoPoint": "GeoPoint.", + "object_geoPoint_param_long_type_double": "Longitude", + "object_geoPoint_param_lat_type_double": "Latitude", + "object_geoPoint_param_access_hash_type_long": "Access hash", + "object_geoPoint_param_accuracy_radius_type_flags.0?int": "The estimated horizontal accuracy of the location, in meters; as defined by the sender.", + "object_auth.sentCode": "Contains info about a sent verification code.", + "object_auth.sentCode_param_type_type_auth.SentCodeType": "Phone code type", + "object_auth.sentCode_param_phone_code_hash_type_string": "Phone code hash, to be stored and later re-used with [auth.signIn](..\/methods\/auth.signIn.md)", + "object_auth.sentCode_param_next_type_type_flags.1?auth.CodeType": "Phone code type that will be sent next, if the phone code is not received within `timeout` seconds: to send it use [auth.resendCode](..\/methods\/auth.resendCode.md)", + "object_auth.sentCode_param_timeout_type_flags.2?int": "Timeout for reception of the phone code", + "object_auth.sentCodeSuccess": "The user successfully authorized using [future auth tokens](https:\/\/core.telegram.org\/api\/auth#future-auth-tokens)", + "object_auth.sentCodeSuccess_param_authorization_type_auth.Authorization": "Authorization info", + "object_auth.sentCodePaymentRequired": "Official apps may receive this constructor, indicating that due to the high cost of SMS verification codes for the user's country\/provider, the user must purchase a [Telegram Premium](https:\/\/core.telegram.org\/api\/premium) subscription in order to proceed with the login\/signup.", + "object_auth.sentCodePaymentRequired_param_store_product_type_string": "Store identifier of the Telegram Premium subscription.", + "object_auth.sentCodePaymentRequired_param_phone_code_hash_type_string": "Phone code hash, to be stored and later re-used with [auth.signIn](..\/methods\/auth.signIn.md)", + "object_auth.sentCodePaymentRequired_param_support_email_address_type_string": "An email address that can be contacted for more information about this request.", + "object_auth.sentCodePaymentRequired_param_support_email_subject_type_string": "The mandatory subject for the email.", + "object_auth.authorization": "Contains user authorization info.", + "object_auth.authorization_param_setup_password_required_type_flags.1?true": "Suggests the user to set up a 2-step verification password to be able to log in again", + "object_auth.authorization_param_otherwise_relogin_days_type_flags.1?int": "If and only if setup\\_password\\_required is set and the user declines to set a 2-step verification password, they will be able to log into their account via SMS again only after this many days pass.", + "object_auth.authorization_param_tmp_sessions_type_flags.0?int": "Temporary [passport](https:\/\/core.telegram.org\/passport) sessions", + "object_auth.authorization_param_future_auth_token_type_flags.2?bytes": "A [future auth token](https:\/\/core.telegram.org\/api\/auth#future-auth-tokens)", + "object_auth.authorization_param_user_type_User": "Info on authorized user", + "object_auth.authorizationSignUpRequired": "An account with this phone number doesn't exist on telegram: the user has to [enter basic information and sign up](https:\/\/core.telegram.org\/api\/auth)", + "object_auth.authorizationSignUpRequired_param_terms_of_service_type_flags.0?help.TermsOfService": "Telegram's terms of service: the user must read and accept the terms of service before signing up to telegram", + "object_auth.exportedAuthorization": "Data for copying of authorization between data centers.", + "object_auth.exportedAuthorization_param_id_type_long": "current user identifier", + "object_auth.exportedAuthorization_param_bytes_type_bytes": "authorizes key", + "object_inputNotifyPeer": "Notifications generated by a certain user or group.", + "object_inputNotifyPeer_param_peer_type_InputPeer": "User or group", + "object_inputNotifyUsers": "Notifications generated by all users.", + "object_inputNotifyChats": "Notifications generated by all groups.", + "object_inputNotifyBroadcasts": "All [channels](https:\/\/core.telegram.org\/api\/channel)", + "object_inputNotifyForumTopic": "Notifications generated by a [topic](https:\/\/core.telegram.org\/api\/forum#forum-topics) in a [forum](https:\/\/core.telegram.org\/api\/forum).", + "object_inputNotifyForumTopic_param_peer_type_InputPeer": "Forum ID", + "object_inputNotifyForumTopic_param_top_msg_id_type_int": "[Topic ID](https:\/\/core.telegram.org\/api\/forum#forum-topics)", + "object_inputPeerNotifySettings": "Notification settings.", + "object_inputPeerNotifySettings_param_show_previews_type_flags.0?Bool": "If the text of the message shall be displayed in notification", + "object_inputPeerNotifySettings_param_silent_type_flags.1?Bool": "Peer was muted?", + "object_inputPeerNotifySettings_param_mute_until_type_flags.2?int": "Date until which all notifications shall be switched off", + "object_inputPeerNotifySettings_param_sound_type_flags.3?NotificationSound": "Identifier of an audio file to play for notifications.", + "object_inputPeerNotifySettings_param_stories_muted_type_flags.6?Bool": "Whether story notifications should be disabled.", + "object_inputPeerNotifySettings_param_stories_hide_sender_type_flags.7?Bool": "Whether the sender name should be displayed in story notifications.", + "object_inputPeerNotifySettings_param_stories_sound_type_flags.8?NotificationSound": "Identifier of an audio file to play for story notifications.", + "object_peerNotifySettings": "Notification settings.", + "object_peerNotifySettings_param_show_previews_type_flags.0?Bool": "(Ternary value) If set, indicates whether or not to display previews of messages in notifications; otherwise the default behavior should be used.", + "object_peerNotifySettings_param_silent_type_flags.1?Bool": "(Ternary value) If set, indicates whether to mute or unmute the peer; otherwise the default behavior should be used.", + "object_peerNotifySettings_param_mute_until_type_flags.2?int": "Mute all notifications until this date", + "object_peerNotifySettings_param_ios_sound_type_flags.3?NotificationSound": "Notification sound for the official iOS application", + "object_peerNotifySettings_param_android_sound_type_flags.4?NotificationSound": "Notification sound for the official android application", + "object_peerNotifySettings_param_other_sound_type_flags.5?NotificationSound": "Notification sound for other applications", + "object_peerNotifySettings_param_stories_muted_type_flags.6?Bool": "Whether story notifications should be disabled.", + "object_peerNotifySettings_param_stories_hide_sender_type_flags.7?Bool": "Whether the sender name should be displayed in story notifications.", + "object_peerNotifySettings_param_stories_ios_sound_type_flags.8?NotificationSound": "Sound for story notifications on the official iOS application", + "object_peerNotifySettings_param_stories_android_sound_type_flags.9?NotificationSound": "Sound for story notifications on the official Android application", + "object_peerNotifySettings_param_stories_other_sound_type_flags.10?NotificationSound": "Sound for story notifications on other applications", + "object_peerSettings": "List of actions that are possible when interacting with this user, to be shown as suggested actions in the [chat action bar \u00bb](https:\/\/core.telegram.org\/api\/action-bar), see [here \u00bb](https:\/\/core.telegram.org\/api\/action-bar) for more info.", + "object_peerSettings_param_report_spam_type_flags.0?true": "Whether we can still report the user for spam", + "object_peerSettings_param_add_contact_type_flags.1?true": "Whether we can add the user as contact", + "object_peerSettings_param_block_contact_type_flags.2?true": "Whether we can block the user", + "object_peerSettings_param_share_contact_type_flags.3?true": "Whether we can share the user's contact", + "object_peerSettings_param_need_contacts_exception_type_flags.4?true": "Whether a special exception for contacts is needed", + "object_peerSettings_param_report_geo_type_flags.5?true": "Whether we can report a geogroup as irrelevant for this location", + "object_peerSettings_param_autoarchived_type_flags.7?true": "Whether this peer was automatically archived according to [privacy settings](..\/constructors\/globalPrivacySettings.md) and can be unarchived", + "object_peerSettings_param_invite_members_type_flags.8?true": "If set, this is a recently created group chat to which new members can be invited", + "object_peerSettings_param_request_chat_broadcast_type_flags.10?true": "This flag is set if `request_chat_title` and `request_chat_date` fields are set and the [join request \u00bb](https:\/\/core.telegram.org\/api\/invites#join-requests) is related to a channel (otherwise if only the request fields are set, the [join request \u00bb](https:\/\/core.telegram.org\/api\/invites#join-requests) is related to a chat).", + "object_peerSettings_param_business_bot_paused_type_flags.11?true": "This flag is set if both `business_bot_id` and `business_bot_manage_url` are set and all [connected business bots \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots) were paused in this chat using [account.toggleConnectedBotPaused \u00bb](..\/methods\/account.toggleConnectedBotPaused.md).", + "object_peerSettings_param_business_bot_can_reply_type_flags.12?true": "This flag is set if both `business_bot_id` and `business_bot_manage_url` are set and [connected business bots \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots) can reply to messages in this chat, as specified by the settings during [initial configuration](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots).", + "object_peerSettings_param_geo_distance_type_flags.6?int": "Distance in meters between us and this peer", + "object_peerSettings_param_request_chat_title_type_flags.9?string": "If set, this is a private chat with an administrator of a chat or channel to which the user sent a join request, and this field contains the chat\/channel's title.", + "object_peerSettings_param_request_chat_date_type_flags.9?int": "If set, this is a private chat with an administrator of a chat or channel to which the user sent a join request, and this field contains the timestamp when the [join request \u00bb](https:\/\/core.telegram.org\/api\/invites#join-requests) was sent.", + "object_peerSettings_param_business_bot_id_type_flags.13?long": "Contains the ID of the [business bot \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots) managing this chat, used to display info about the bot in the action bar.", + "object_peerSettings_param_business_bot_manage_url_type_flags.13?string": "Contains a [deep link \u00bb](https:\/\/core.telegram.org\/api\/links), used to open a management menu in the business bot. This flag is set if and only if `business_bot_id` is set.", + "object_peerSettings_param_charge_paid_message_stars_type_flags.14?long": "All users that must [pay *us* \u00bb](https:\/\/core.telegram.org\/api\/paid-messages) to send us private messages will have this flag set *only for us*, containing the amount of required stars, see [here \u00bb](https:\/\/core.telegram.org\/api\/paid-messages) for more info on paid messages.", + "object_peerSettings_param_registration_month_type_flags.15?string": "Used to display the user's registration year and month, the string is in `MM.YYYY` format, where `MM` is the registration month (`1-12`), and `YYYY` is the registration year.", + "object_peerSettings_param_phone_country_type_flags.16?string": "The country code of the user's phone number.", + "object_peerSettings_param_name_change_date_type_flags.17?int": "When was the user's name last changed.", + "object_peerSettings_param_photo_change_date_type_flags.18?int": "When was the user's photo last changed.", + "object_wallPaper": "Represents a [wallpaper](https:\/\/core.telegram.org\/api\/wallpapers) based on an image.", + "object_wallPaper_param_id_type_long": "Identifier", + "object_wallPaper_param_creator_type_flags.0?true": "Whether we created this wallpaper", + "object_wallPaper_param_default_type_flags.1?true": "Whether this is the default wallpaper", + "object_wallPaper_param_pattern_type_flags.3?true": "Whether this is a [pattern wallpaper \u00bb](https:\/\/core.telegram.org\/api\/wallpapers#pattern-wallpapers)", + "object_wallPaper_param_dark_type_flags.4?true": "Whether this wallpaper should be used in dark mode.", + "object_wallPaper_param_access_hash_type_long": "Access hash", + "object_wallPaper_param_slug_type_string": "Unique wallpaper ID, used when generating [wallpaper links](https:\/\/core.telegram.org\/api\/links#wallpaper-links) or [importing wallpaper links](https:\/\/core.telegram.org\/api\/wallpapers).", + "object_wallPaper_param_document_type_Document": "The actual wallpaper", + "object_wallPaper_param_settings_type_flags.2?WallPaperSettings": "Info on how to generate the wallpaper, according to [these instructions \u00bb](https:\/\/core.telegram.org\/api\/wallpapers).", + "object_wallPaperNoFile": "Represents a [wallpaper](https:\/\/core.telegram.org\/api\/wallpapers) only based on colors\/gradients.", + "object_wallPaperNoFile_param_id_type_long": "Wallpaper ID", + "object_wallPaperNoFile_param_default_type_flags.1?true": "Whether this is the default wallpaper", + "object_wallPaperNoFile_param_dark_type_flags.4?true": "Whether this wallpaper should be used in dark mode.", + "object_wallPaperNoFile_param_settings_type_flags.2?WallPaperSettings": "Info on how to generate the wallpaper.", + "object_inputReportReasonSpam": "Report for spam", + "object_inputReportReasonViolence": "Report for violence", + "object_inputReportReasonPornography": "Report for pornography", + "object_inputReportReasonChildAbuse": "Report for child abuse", + "object_inputReportReasonOther": "Other", + "object_inputReportReasonCopyright": "Report for copyrighted content", + "object_inputReportReasonGeoIrrelevant": "Report an irrelevant geogroup", + "object_inputReportReasonFake": "Report for impersonation", + "object_inputReportReasonIllegalDrugs": "Report for illegal drugs", + "object_inputReportReasonPersonalDetails": "Report for divulgation of personal details", + "object_userFull": "Extended user info\n\nWhen updating the [local peer database \u00bb](https:\/\/core.telegram.org\/api\/peers), all fields from the newly received constructor take priority over the old constructor cached locally (including by removing fields that aren't set in the new constructor).", + "object_userFull_param_blocked_type_flags.0?true": "Whether you have blocked this user", + "object_userFull_param_phone_calls_available_type_flags.4?true": "Whether this user can make VoIP calls", + "object_userFull_param_phone_calls_private_type_flags.5?true": "Whether this user's privacy settings allow you to call them", + "object_userFull_param_can_pin_message_type_flags.7?true": "Whether you can pin messages in the chat with this user, you can do this only for a chat with yourself", + "object_userFull_param_has_scheduled_type_flags.12?true": "Whether [scheduled messages](https:\/\/core.telegram.org\/api\/scheduled-messages) are available", + "object_userFull_param_video_calls_available_type_flags.13?true": "Whether the user can receive video calls", + "object_userFull_param_voice_messages_forbidden_type_flags.20?true": "Whether this user doesn't allow sending voice messages in a private chat with them", + "object_userFull_param_translations_disabled_type_flags.23?true": "Whether the [real-time chat translation popup](https:\/\/core.telegram.org\/api\/translation) should be hidden.", + "object_userFull_param_stories_pinned_available_type_flags.26?true": "Whether this user has some [pinned stories](https:\/\/core.telegram.org\/api\/stories#pinned-or-archived-stories).", + "object_userFull_param_blocked_my_stories_from_type_flags.27?true": "Whether we've [blocked this user, preventing them from seeing our stories \u00bb](https:\/\/core.telegram.org\/api\/block).", + "object_userFull_param_wallpaper_overridden_type_flags.28?true": "Whether the other user has chosen a custom wallpaper for us using [messages.setChatWallPaper](..\/methods\/messages.setChatWallPaper.md) and the `for_both` flag, see [here \u00bb](https:\/\/core.telegram.org\/api\/wallpapers#installing-wallpapers-in-a-specific-chat-or-channel) for more info.", + "object_userFull_param_contact_require_premium_type_flags.29?true": "If set, we cannot write to this user: subscribe to [Telegram Premium](https:\/\/core.telegram.org\/api\/premium) to get permission to write to this user.
To set this flag for ourselves invoke [account.setGlobalPrivacySettings](..\/methods\/account.setGlobalPrivacySettings.md), setting the `settings.new_noncontact_peers_require_premium` flag, see [here \u00bb](https:\/\/core.telegram.org\/api\/privacy#require-premium-for-new-non-contact-users) for more info.", + "object_userFull_param_read_dates_private_type_flags.30?true": "If set, we cannot fetch the exact read date of messages we send to this user using [messages.getOutboxReadDate](..\/methods\/messages.getOutboxReadDate.md).
The exact read date of messages might still be unavailable for other reasons, see [here \u00bb](..\/methods\/messages.getOutboxReadDate.md) for more info.
To set this flag for ourselves invoke [account.setGlobalPrivacySettings](..\/methods\/account.setGlobalPrivacySettings.md), setting the `settings.hide_read_marks` flag.", + "object_userFull_param_flags2_type_#": "Flags, see [TL conditional fields](https:\/\/core.telegram.org\/mtproto\/TL-combinators#conditional-fields)", + "object_userFull_param_sponsored_enabled_type_flags2.7?true": "Whether ads were re-enabled for the current account (only accessible to the currently logged-in user), see [here \u00bb](https:\/\/core.telegram.org\/api\/business#re-enable-ads) for more info.", + "object_userFull_param_can_view_revenue_type_flags2.9?true": "If set, this user can view [ad revenue statistics \u00bb](https:\/\/core.telegram.org\/api\/revenue#revenue-statistics) for this bot.", + "object_userFull_param_bot_can_manage_emoji_status_type_flags2.10?true": "If set, this is a bot that can [change our emoji status \u00bb](https:\/\/core.telegram.org\/api\/emoji-status#setting-an-emoji-status-from-a-bot)", + "object_userFull_param_display_gifts_button_type_flags2.16?true": "If this flag is set for both us and another user (changed through [globalPrivacySettings](..\/constructors\/globalPrivacySettings.md)), a gift button should always be displayed in the text field in private chats with the other user: once clicked, the gift UI should be displayed, offering the user options to gift [Telegram Premium \u00bb](https:\/\/core.telegram.org\/api\/premium) subscriptions or [Telegram Gifts \u00bb](https:\/\/core.telegram.org\/api\/gifts).", + "object_userFull_param_id_type_long": "User ID", + "object_userFull_param_about_type_flags.1?string": "Bio of the user", + "object_userFull_param_settings_type_PeerSettings": "Peer settings", + "object_userFull_param_personal_photo_type_flags.21?Photo": "Personal profile photo, to be shown instead of `profile_photo`.", + "object_userFull_param_profile_photo_type_flags.2?Photo": "Profile photo", + "object_userFull_param_fallback_photo_type_flags.22?Photo": "Fallback profile photo, displayed if no photo is present in `profile_photo` or `personal_photo`, due to privacy settings.", + "object_userFull_param_notify_settings_type_PeerNotifySettings": "Notification settings", + "object_userFull_param_bot_info_type_flags.3?BotInfo": "For bots, info about the bot (bot commands, etc)", + "object_userFull_param_pinned_msg_id_type_flags.6?int": "Message ID of the last [pinned message](https:\/\/core.telegram.org\/api\/pin)", + "object_userFull_param_common_chats_count_type_int": "Chats in common with this user", + "object_userFull_param_folder_id_type_flags.11?int": "[Peer folder ID, for more info click here](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "object_userFull_param_ttl_period_type_flags.14?int": "Time To Live of all messages in this chat; once a message is this many seconds old, it must be deleted.", + "object_userFull_param_theme_type_flags.15?ChatTheme": "[The chat theme associated with this user \u00bb](https:\/\/core.telegram.org\/api\/themes#chat-themes).", + "object_userFull_param_private_forward_name_type_flags.16?string": "Anonymized text to be shown instead of the user's name on forwarded messages", + "object_userFull_param_bot_group_admin_rights_type_flags.17?ChatAdminRights": "A [suggested set of administrator rights](https:\/\/core.telegram.org\/api\/rights#suggested-bot-rights) for the bot, to be shown when adding the bot as admin to a group, see [here for more info on how to handle them \u00bb](https:\/\/core.telegram.org\/api\/rights#suggested-bot-rights).", + "object_userFull_param_bot_broadcast_admin_rights_type_flags.18?ChatAdminRights": "A [suggested set of administrator rights](https:\/\/core.telegram.org\/api\/rights#suggested-bot-rights) for the bot, to be shown when adding the bot as admin to a channel, see [here for more info on how to handle them \u00bb](https:\/\/core.telegram.org\/api\/rights#suggested-bot-rights).", + "object_userFull_param_wallpaper_type_flags.24?WallPaper": "[Wallpaper](https:\/\/core.telegram.org\/api\/wallpapers) to use in the private chat with the user.", + "object_userFull_param_stories_type_flags.25?PeerStories": "Active [stories \u00bb](https:\/\/core.telegram.org\/api\/stories)", + "object_userFull_param_business_work_hours_type_flags2.0?BusinessWorkHours": "[Telegram Business working hours \u00bb](https:\/\/core.telegram.org\/api\/business#opening-hours).", + "object_userFull_param_business_location_type_flags2.1?BusinessLocation": "[Telegram Business location \u00bb](https:\/\/core.telegram.org\/api\/business#location).", + "object_userFull_param_business_greeting_message_type_flags2.2?BusinessGreetingMessage": "[Telegram Business greeting message \u00bb](https:\/\/core.telegram.org\/api\/business#greeting-messages).", + "object_userFull_param_business_away_message_type_flags2.3?BusinessAwayMessage": "[Telegram Business away message \u00bb](https:\/\/core.telegram.org\/api\/business#away-messages).", + "object_userFull_param_business_intro_type_flags2.4?BusinessIntro": "Specifies a custom [Telegram Business profile introduction \u00bb](https:\/\/core.telegram.org\/api\/business#business-introduction).", + "object_userFull_param_birthday_type_flags2.5?Birthday": "Contains info about the user's [birthday \u00bb](https:\/\/core.telegram.org\/api\/profile#birthday).", + "object_userFull_param_personal_channel_id_type_flags2.6?long": "ID of the associated personal [channel \u00bb](https:\/\/core.telegram.org\/api\/channel), that should be shown in the [profile page](https:\/\/core.telegram.org\/api\/profile#personal-channel).", + "object_userFull_param_personal_channel_message_type_flags2.6?int": "ID of the latest message of the associated personal [channel \u00bb](https:\/\/core.telegram.org\/api\/channel), that should be previewed in the [profile page](https:\/\/core.telegram.org\/api\/profile#personal-channel).", + "object_userFull_param_stargifts_count_type_flags2.8?int": "Number of [gifts](https:\/\/core.telegram.org\/api\/gifts) the user has chosen to display on their profile", + "object_userFull_param_starref_program_type_flags2.11?StarRefProgram": "This bot has an active [referral program \u00bb](https:\/\/core.telegram.org\/api\/bots\/referrals)", + "object_userFull_param_bot_verification_type_flags2.12?BotVerification": "Describes a [bot verification icon \u00bb](https:\/\/core.telegram.org\/api\/bots\/verification).", + "object_userFull_param_send_paid_messages_stars_type_flags2.14?long": "If set and bigger than 0, this user has enabled [paid messages \u00bb](https:\/\/core.telegram.org\/api\/paid-messages) and we *must* pay the specified amount of [Stars](https:\/\/core.telegram.org\/api\/stars) to send messages to them, see [here \u00bb](https:\/\/core.telegram.org\/api\/paid-messages) for the full flow.
If set and equal to 0, the user requires payment in general but we were exempted from paying [for any of the reasons specified in the docs \u00bb](https:\/\/core.telegram.org\/api\/paid-messages).", + "object_userFull_param_disallowed_gifts_type_flags2.15?DisallowedGiftsSettings": "Disallows the reception of specific gift types.", + "object_userFull_param_stars_rating_type_flags2.17?StarsRating": "The user's [star rating](https:\/\/core.telegram.org\/api\/stars#star-rating).", + "object_userFull_param_stars_my_pending_rating_type_flags2.18?StarsRating": "Our pending [star rating](https:\/\/core.telegram.org\/api\/stars#star-rating), only visible for ourselves.", + "object_userFull_param_stars_my_pending_rating_date_type_flags2.18?int": "When the pending [star rating](https:\/\/core.telegram.org\/api\/stars#star-rating) will be applied, only visible for ourselves.", + "object_userFull_param_main_tab_type_flags2.20?ProfileTab": "The main tab for the user's profile, see [here \u00bb](https:\/\/core.telegram.org\/api\/profile#tabs) for more info.", + "object_userFull_param_saved_music_type_flags2.21?Document": "The first song on the music tab of the profile, see [here \u00bb](https:\/\/core.telegram.org\/api\/profile#music) for more info on the music profile tab.", + "object_contact": "A contact of the current user that is registered in the system.", + "object_contact_param_user_id_type_long": "User identifier", + "object_contact_param_mutual_type_Bool": "Current user is in the user's contact list", + "object_importedContact": "Successfully imported contact.", + "object_importedContact_param_user_id_type_long": "User identifier", + "object_importedContact_param_client_id_type_long": "The contact's client identifier (passed to one of the [InputContact](..\/types\/InputContact.md) constructors)", + "object_contactStatus": "Contact status: online \/ offline.", + "object_contactStatus_param_user_id_type_long": "User identifier", + "object_contactStatus_param_status_type_UserStatus": "Online status", + "object_contacts.contactsNotModified": "Contact list on the server is the same as the list on the client.", + "object_contacts.contacts": "The current user's contact list and info on users.", + "object_contacts.contacts_param_contacts_type_Vector<Contact>": "Contact list", + "object_contacts.contacts_param_saved_count_type_int": "Number of contacts that were saved successfully", + "object_contacts.contacts_param_users_type_Vector<User>": "User list", + "object_contacts.importedContacts": "Info on successfully imported contacts.", + "object_contacts.importedContacts_param_imported_type_Vector<ImportedContact>": "List of successfully imported contacts", + "object_contacts.importedContacts_param_popular_invites_type_Vector<PopularContact>": "Popular contacts", + "object_contacts.importedContacts_param_retry_contacts_type_Vector<long>": "List of contact ids that could not be imported due to system limitation and will need to be imported at a later date.", + "object_contacts.importedContacts_param_users_type_Vector<User>": "List of users", + "object_contacts.blocked": "Full list of blocked users.", + "object_contacts.blocked_param_blocked_type_Vector<PeerBlocked>": "List of blocked users", + "object_contacts.blocked_param_chats_type_Vector<Chat>": "Blocked chats", + "object_contacts.blocked_param_users_type_Vector<User>": "List of users", + "object_contacts.blockedSlice": "Incomplete list of blocked users.", + "object_contacts.blockedSlice_param_count_type_int": "Total number of elements in the list", + "object_contacts.blockedSlice_param_blocked_type_Vector<PeerBlocked>": "List of blocked users", + "object_contacts.blockedSlice_param_chats_type_Vector<Chat>": "Blocked chats", + "object_contacts.blockedSlice_param_users_type_Vector<User>": "List of users", + "object_messages.dialogs": "Full list of chats with messages and auxiliary data.", + "object_messages.dialogs_param_dialogs_type_Vector<Dialog>": "List of chats", + "object_messages.dialogs_param_messages_type_Vector<Message>": "List of last messages from each chat", + "object_messages.dialogs_param_chats_type_Vector<Chat>": "List of groups mentioned in the chats", + "object_messages.dialogs_param_users_type_Vector<User>": "List of users mentioned in messages and groups", + "object_messages.dialogsSlice": "Incomplete list of dialogs with messages and auxiliary data.", + "object_messages.dialogsSlice_param_count_type_int": "Total number of dialogs", + "object_messages.dialogsSlice_param_dialogs_type_Vector<Dialog>": "List of dialogs", + "object_messages.dialogsSlice_param_messages_type_Vector<Message>": "List of last messages from dialogs", + "object_messages.dialogsSlice_param_chats_type_Vector<Chat>": "List of chats mentioned in dialogs", + "object_messages.dialogsSlice_param_users_type_Vector<User>": "List of users mentioned in messages and chats", + "object_messages.dialogsNotModified": "Dialogs haven't changed", + "object_messages.dialogsNotModified_param_count_type_int": "Number of dialogs found server-side by the query", + "object_messages.messages": "Full list of messages with auxiliary data.", + "object_messages.messages_param_messages_type_Vector<Message>": "List of messages", + "object_messages.messages_param_chats_type_Vector<Chat>": "List of chats mentioned in dialogs", + "object_messages.messages_param_users_type_Vector<User>": "List of users mentioned in messages and chats", + "object_messages.messagesSlice": "Incomplete list of messages and auxiliary data.", + "object_messages.messagesSlice_param_inexact_type_flags.1?true": "If set, indicates that the results may be inexact", + "object_messages.messagesSlice_param_count_type_int": "Total number of messages in the list", + "object_messages.messagesSlice_param_next_rate_type_flags.0?int": "Rate to use in the `offset_rate` parameter in the next call to [messages.searchGlobal](..\/methods\/messages.searchGlobal.md)", + "object_messages.messagesSlice_param_offset_id_offset_type_flags.2?int": "Indicates the absolute position of `messages[0]` within the total result set with count `count`.
This is useful, for example, if the result was fetched using `offset_id`, and we need to display a `progress\/total` counter (like `photo 134 of 200`, for all media in a chat, we could simply use `photo ${offset_id_offset} of ${count}`).", + "object_messages.messagesSlice_param_search_flood_type_flags.3?SearchPostsFlood": "[For global post searches \u00bb](https:\/\/core.telegram.org\/api\/search#posts-tab), the remaining amount of free searches, here `query_is_free` is related to the current call only, not to the next paginated call, and all subsequent pagination calls will always be free.", + "object_messages.messagesSlice_param_messages_type_Vector<Message>": "List of messages", + "object_messages.messagesSlice_param_chats_type_Vector<Chat>": "List of chats mentioned in messages", + "object_messages.messagesSlice_param_users_type_Vector<User>": "List of users mentioned in messages and chats", + "object_messages.channelMessages": "Channel messages", + "object_messages.channelMessages_param_inexact_type_flags.1?true": "If set, returned results may be inexact", + "object_messages.channelMessages_param_pts_type_int": "[Event count after generation](https:\/\/core.telegram.org\/api\/updates)", + "object_messages.channelMessages_param_count_type_int": "Total number of results were found server-side (may not be all included here)", + "object_messages.channelMessages_param_offset_id_offset_type_flags.2?int": "Indicates the absolute position of `messages[0]` within the total result set with count `count`.
This is useful, for example, if the result was fetched using `offset_id`, and we need to display a `progress\/total` counter (like `photo 134 of 200`, for all media in a chat, we could simply use `photo ${offset_id_offset} of ${count}`.", + "object_messages.channelMessages_param_messages_type_Vector<Message>": "Found messages", + "object_messages.channelMessages_param_topics_type_Vector<ForumTopic>": "[Forum topic](https:\/\/core.telegram.org\/api\/forum#forum-topics) information", + "object_messages.channelMessages_param_chats_type_Vector<Chat>": "Chats", + "object_messages.channelMessages_param_users_type_Vector<User>": "Users", + "object_messages.messagesNotModified": "No new messages matching the query were found", + "object_messages.messagesNotModified_param_count_type_int": "Number of results found server-side by the given query", + "object_messages.chats": "List of chats with auxiliary data.", + "object_messages.chats_param_chats_type_Vector<Chat>": "List of chats", + "object_messages.chatsSlice": "Partial list of chats, more would have to be fetched with [pagination](https:\/\/core.telegram.org\/api\/offsets)", + "object_messages.chatsSlice_param_count_type_int": "Total number of results that were found server-side (not all are included in `chats`)", + "object_messages.chatsSlice_param_chats_type_Vector<Chat>": "Chats", + "object_messages.chatFull": "Full info about a [channel](https:\/\/core.telegram.org\/api\/channel#channels), [supergroup](https:\/\/core.telegram.org\/api\/channel#supergroups), [gigagroup](https:\/\/core.telegram.org\/api\/channel#gigagroups) or [basic group](https:\/\/core.telegram.org\/api\/channel#basic-groups).", + "object_messages.chatFull_param_full_chat_type_ChatFull": "Full info", + "object_messages.chatFull_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_messages.chatFull_param_users_type_Vector<User>": "Mentioned users", + "object_messages.affectedHistory": "Affected part of communication history with the user or in a chat.", + "object_messages.affectedHistory_param_pts_type_int": "Number of events occurred in a text box", + "object_messages.affectedHistory_param_pts_count_type_int": "Number of affected events", + "object_messages.affectedHistory_param_offset_type_int": "If a parameter contains positive value, it is necessary to repeat the method call using the given value; during the proceeding of all the history the value itself shall gradually decrease", + "object_inputMessagesFilterEmpty": "Filter is absent.", + "object_inputMessagesFilterPhotos": "Filter for messages containing photos.", + "object_inputMessagesFilterVideo": "Filter for messages containing videos.", + "object_inputMessagesFilterPhotoVideo": "Filter for messages containing photos or videos.", + "object_inputMessagesFilterDocument": "Filter for messages containing documents.", + "object_inputMessagesFilterUrl": "Return only messages containing URLs", + "object_inputMessagesFilterGif": "Return only messages containing gifs", + "object_inputMessagesFilterVoice": "Return only messages containing voice notes", + "object_inputMessagesFilterMusic": "Return only messages containing audio files", + "object_inputMessagesFilterChatPhotos": "Return only chat photo changes", + "object_inputMessagesFilterPhoneCalls": "Return only phone calls", + "object_inputMessagesFilterPhoneCalls_param_missed_type_flags.0?true": "Return only missed phone calls", + "object_inputMessagesFilterRoundVoice": "Return only round videos and voice notes", + "object_inputMessagesFilterRoundVideo": "Return only round videos", + "object_inputMessagesFilterMyMentions": "Return only messages where the current user was [mentioned](https:\/\/core.telegram.org\/api\/mentions).", + "object_inputMessagesFilterGeo": "Return only messages containing geolocations", + "object_inputMessagesFilterContacts": "Return only messages containing contacts", + "object_inputMessagesFilterPinned": "Fetch only pinned messages", + "object_updateNewMessage": "New message in a private chat or in a [basic group](https:\/\/core.telegram.org\/api\/channel#basic-groups).", + "object_updateNewMessage_param_message_type_Message": "Message", + "object_updateNewMessage_param_pts_type_int": "New quantity of actions in a message box", + "object_updateNewMessage_param_pts_count_type_int": "Number of generated events", + "object_updateMessageID": "Sent message with **random\\_id** client identifier was assigned an identifier.", + "object_updateMessageID_param_id_type_int": "**id** identifier of a respective [Message](..\/types\/Message.md)", + "object_updateMessageID_param_random_id_type_long": "Previously transferred client **random\\_id** identifier", + "object_updateDeleteMessages": "Messages were deleted.", + "object_updateDeleteMessages_param_messages_type_Vector<int>": "List of identifiers of deleted messages", + "object_updateDeleteMessages_param_pts_type_int": "New quality of actions in a message box", + "object_updateDeleteMessages_param_pts_count_type_int": "Number of generated [events](https:\/\/core.telegram.org\/api\/updates)", + "object_updateUserTyping": "The user is preparing a message; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing", + "object_updateUserTyping_param_user_id_type_long": "User id", + "object_updateUserTyping_param_action_type_SendMessageAction": "Action type", + "object_updateChatUserTyping": "The user is preparing a message in a group; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing", + "object_updateChatUserTyping_param_chat_id_type_long": "Group id", + "object_updateChatUserTyping_param_from_id_type_Peer": "Peer that started typing (can be the chat itself, in case of anonymous admins).", + "object_updateChatUserTyping_param_action_type_SendMessageAction": "Type of action", + "object_updateChatParticipants": "Composition of chat participants changed.", + "object_updateChatParticipants_param_participants_type_ChatParticipants": "Updated chat participants", + "object_updateUserStatus": "Contact status update.", + "object_updateUserStatus_param_user_id_type_long": "User identifier", + "object_updateUserStatus_param_status_type_UserStatus": "New status", + "object_updateUserName": "Changes the user's first name, last name and username.", + "object_updateUserName_param_user_id_type_long": "User identifier", + "object_updateUserName_param_first_name_type_string": "New first name. Corresponds to the new value of **real\\_first\\_name** field of the [userFull](..\/constructors\/userFull.md) constructor.", + "object_updateUserName_param_last_name_type_string": "New last name. Corresponds to the new value of **real\\_last\\_name** field of the [userFull](..\/constructors\/userFull.md) constructor.", + "object_updateUserName_param_usernames_type_Vector<Username>": "Usernames.", + "object_updateNewAuthorization": "A new session logged into the current user's account through an unknown device.", + "object_updateNewAuthorization_param_unconfirmed_type_flags.0?true": "Whether the session is [unconfirmed, see here \u00bb](https:\/\/core.telegram.org\/api\/auth#confirming-login) for more info.", + "object_updateNewAuthorization_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_updateNewAuthorization_param_date_type_flags.0?int": "Authorization date", + "object_updateNewAuthorization_param_device_type_flags.0?string": "Name of device, for example *Android*", + "object_updateNewAuthorization_param_location_type_flags.0?string": "Location, for example *USA, NY (IP=1.2.3.4)*", + "object_updateNewEncryptedMessage": "New encrypted message.", + "object_updateNewEncryptedMessage_param_message_type_EncryptedMessage": "Message", + "object_updateNewEncryptedMessage_param_qts_type_int": "New **qts** value, see [updates \u00bb](https:\/\/core.telegram.org\/api\/updates) for more info.", + "object_updateEncryptedChatTyping": "Interlocutor is typing a message in an encrypted chat. Update period is 6 second. If upon this time there is no repeated update, it shall be considered that the interlocutor stopped typing.", + "object_updateEncryptedChatTyping_param_chat_id_type_int": "Chat ID", + "object_updateEncryption": "Change of state in an encrypted chat.", + "object_updateEncryption_param_chat_type_EncryptedChat": "Encrypted chat", + "object_updateEncryption_param_date_type_int": "Date of change", + "object_updateEncryptedMessagesRead": "Communication history in an encrypted chat was marked as read.", + "object_updateEncryptedMessagesRead_param_chat_id_type_int": "Chat ID", + "object_updateEncryptedMessagesRead_param_max_date_type_int": "Maximum value of data for read messages", + "object_updateEncryptedMessagesRead_param_date_type_int": "Time when messages were read", + "object_updateChatParticipantAdd": "New group member.", + "object_updateChatParticipantAdd_param_chat_id_type_long": "Group ID", + "object_updateChatParticipantAdd_param_user_id_type_long": "ID of the new member", + "object_updateChatParticipantAdd_param_inviter_id_type_long": "ID of the user, who added member to the group", + "object_updateChatParticipantAdd_param_date_type_int": "When was the participant added", + "object_updateChatParticipantAdd_param_version_type_int": "Chat version number", + "object_updateChatParticipantDelete": "A member has left the group.", + "object_updateChatParticipantDelete_param_chat_id_type_long": "Group ID", + "object_updateChatParticipantDelete_param_user_id_type_long": "ID of the user", + "object_updateChatParticipantDelete_param_version_type_int": "Used in basic groups to reorder updates and make sure that all of them was received.", + "object_updateDcOptions": "Changes in the data center configuration options.", + "object_updateDcOptions_param_dc_options_type_Vector<DcOption>": "New connection options", + "object_updateNotifySettings": "Changes in notification settings.", + "object_updateNotifySettings_param_peer_type_NotifyPeer": "Notification source", + "object_updateNotifySettings_param_notify_settings_type_PeerNotifySettings": "New notification settings", + "object_updateServiceNotification": "A service message for the user.\n\nThe app must show the message to the user upon receiving this update. In case the **popup** parameter was passed, the text message must be displayed in a popup alert immediately upon receipt. It is recommended to handle the text as you would an ordinary message in terms of highlighting links, etc. The message must also be stored locally as part of the message history with the user id `777000` (Telegram Notifications).", + "object_updateServiceNotification_param_popup_type_flags.0?true": "If set, the message must be displayed in a popup.", + "object_updateServiceNotification_param_invert_media_type_flags.2?true": "If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.", + "object_updateServiceNotification_param_inbox_date_type_flags.1?int": "When was the notification received
The message must also be stored locally as part of the message history with the user id `777000` (Telegram Notifications).", + "object_updateServiceNotification_param_type_type_string": "String, identical in format and contents to the [**type**](https:\/\/core.telegram.org\/api\/errors#error-type) field in API errors. Describes type of service message. It is acceptable to ignore repeated messages of the same **type** within a short period of time (15 minutes).", + "object_updateServiceNotification_param_message_type_string": "Message text", + "object_updateServiceNotification_param_media_type_MessageMedia": "Media content (optional)", + "object_updateServiceNotification_param_entities_type_Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "object_updatePrivacy": "Privacy rules were changed", + "object_updatePrivacy_param_key_type_PrivacyKey": "Peers to which the privacy rules apply", + "object_updatePrivacy_param_rules_type_Vector<PrivacyRule>": "New privacy rules", + "object_updateUserPhone": "A user's phone number was changed", + "object_updateUserPhone_param_user_id_type_long": "User ID", + "object_updateUserPhone_param_phone_type_string": "New phone number", + "object_updateReadHistoryInbox": "Incoming messages were read", + "object_updateReadHistoryInbox_param_folder_id_type_flags.0?int": "[Peer folder ID, for more info click here](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "object_updateReadHistoryInbox_param_peer_type_Peer": "Peer", + "object_updateReadHistoryInbox_param_max_id_type_int": "Maximum ID of messages read", + "object_updateReadHistoryInbox_param_still_unread_count_type_int": "Number of messages that are still unread", + "object_updateReadHistoryInbox_param_pts_type_int": "[Event count after generation](https:\/\/core.telegram.org\/api\/updates)", + "object_updateReadHistoryInbox_param_pts_count_type_int": "[Number of events that were generated](https:\/\/core.telegram.org\/api\/updates)", + "object_updateReadHistoryOutbox": "Outgoing messages were read", + "object_updateReadHistoryOutbox_param_peer_type_Peer": "Peer", + "object_updateReadHistoryOutbox_param_max_id_type_int": "Maximum ID of read outgoing messages", + "object_updateReadHistoryOutbox_param_pts_type_int": "[Event count after generation](https:\/\/core.telegram.org\/api\/updates)", + "object_updateReadHistoryOutbox_param_pts_count_type_int": "[Number of events that were generated](https:\/\/core.telegram.org\/api\/updates)", + "object_updateWebPage": "An [instant view](https:\/\/instantview.telegram.org) webpage preview was generated", + "object_updateWebPage_param_webpage_type_WebPage": "Webpage preview", + "object_updateWebPage_param_pts_type_int": "[Event count after generation](https:\/\/core.telegram.org\/api\/updates)", + "object_updateWebPage_param_pts_count_type_int": "[Number of events that were generated](https:\/\/core.telegram.org\/api\/updates)", + "object_updateReadMessagesContents": "Contents of messages in the common [message box](https:\/\/core.telegram.org\/api\/updates) were read (emitted specifically for messages like voice messages or video, only once the media is watched and marked as read using [messages.readMessageContents](..\/methods\/messages.readMessageContents.md)).", + "object_updateReadMessagesContents_param_messages_type_Vector<int>": "IDs of read messages", + "object_updateReadMessagesContents_param_pts_type_int": "[Event count after generation](https:\/\/core.telegram.org\/api\/updates)", + "object_updateReadMessagesContents_param_pts_count_type_int": "[Number of events that were generated](https:\/\/core.telegram.org\/api\/updates)", + "object_updateReadMessagesContents_param_date_type_flags.0?int": "When was the last message in `messages` marked as read.", + "object_updateChannelTooLong": "There are new updates in the specified channel, the client must fetch them. \nIf the difference is too long or if the channel isn't currently in the states, start fetching from the specified pts.", + "object_updateChannelTooLong_param_channel_id_type_long": "The channel", + "object_updateChannelTooLong_param_pts_type_flags.0?int": "The [PTS](https:\/\/core.telegram.org\/api\/updates).", + "object_updateChannel": "Channel\/supergroup ([channel](..\/constructors\/channel.md) and\/or [channelFull](..\/constructors\/channelFull.md)) information was updated.\n\nThis update can only be received through getDifference or in [updates](..\/constructors\/updates.md)\/[updatesCombined](..\/constructors\/updatesCombined.md) constructors, so it will **always** come bundled with the updated [channel](..\/constructors\/channel.md), that should be applied [as usual \u00bb](https:\/\/core.telegram.org\/api\/peers), **without** re-fetching the info manually.\n\nHowever, full peer information will not come bundled in updates, so the full peer cache ([channelFull](..\/constructors\/channelFull.md)) must be invalidated for `channel_id` when receiving this update.", + "object_updateChannel_param_channel_id_type_long": "Channel ID", + "object_updateNewChannelMessage": "A new message was sent in a [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "object_updateNewChannelMessage_param_message_type_Message": "New message", + "object_updateNewChannelMessage_param_pts_type_int": "[Event count after generation](https:\/\/core.telegram.org\/api\/updates)", + "object_updateNewChannelMessage_param_pts_count_type_int": "[Number of events that were generated](https:\/\/core.telegram.org\/api\/updates)", + "object_updateReadChannelInbox": "Incoming messages in a [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel) were read", + "object_updateReadChannelInbox_param_folder_id_type_flags.0?int": "[Peer folder ID, for more info click here](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "object_updateReadChannelInbox_param_channel_id_type_long": "Channel\/supergroup ID", + "object_updateReadChannelInbox_param_max_id_type_int": "Position up to which all incoming messages are read.", + "object_updateReadChannelInbox_param_still_unread_count_type_int": "Count of messages weren't read yet", + "object_updateReadChannelInbox_param_pts_type_int": "[Event count after generation](https:\/\/core.telegram.org\/api\/updates)", + "object_updateDeleteChannelMessages": "Some messages in a [supergroup\/channel](https:\/\/core.telegram.org\/api\/channel) were deleted", + "object_updateDeleteChannelMessages_param_channel_id_type_long": "Channel ID", + "object_updateDeleteChannelMessages_param_messages_type_Vector<int>": "IDs of messages that were deleted", + "object_updateDeleteChannelMessages_param_pts_type_int": "[Event count after generation](https:\/\/core.telegram.org\/api\/updates)", + "object_updateDeleteChannelMessages_param_pts_count_type_int": "[Number of events that were generated](https:\/\/core.telegram.org\/api\/updates)", + "object_updateChannelMessageViews": "The view counter of a message in a channel has changed", + "object_updateChannelMessageViews_param_channel_id_type_long": "Channel ID", + "object_updateChannelMessageViews_param_id_type_int": "ID of the message", + "object_updateChannelMessageViews_param_views_type_int": "New view counter", + "object_updateChatParticipantAdmin": "Admin permissions of a user in a [basic group](https:\/\/core.telegram.org\/api\/channel#basic-groups) were changed", + "object_updateChatParticipantAdmin_param_chat_id_type_long": "Chat ID", + "object_updateChatParticipantAdmin_param_user_id_type_long": "ID of the (de)admined user", + "object_updateChatParticipantAdmin_param_is_admin_type_Bool": "Whether the user was rendered admin", + "object_updateChatParticipantAdmin_param_version_type_int": "Used in basic groups to reorder updates and make sure that all of them was received.", + "object_updateNewStickerSet": "A new stickerset was installed", + "object_updateNewStickerSet_param_stickerset_type_messages.StickerSet": "The installed stickerset", + "object_updateStickerSetsOrder": "The order of stickersets was changed", + "object_updateStickerSetsOrder_param_masks_type_flags.0?true": "Whether the updated stickers are mask stickers", + "object_updateStickerSetsOrder_param_emojis_type_flags.1?true": "Whether the updated stickers are custom emoji stickers", + "object_updateStickerSetsOrder_param_order_type_Vector<long>": "New sticker order by sticker ID", + "object_updateStickerSets": "Installed stickersets have changed, the client should refetch them as [described in the docs](https:\/\/core.telegram.org\/api\/stickers#installing-stickersets).", + "object_updateStickerSets_param_masks_type_flags.0?true": "Whether mask stickersets have changed", + "object_updateStickerSets_param_emojis_type_flags.1?true": "Whether the list of installed [custom emoji stickersets](https:\/\/core.telegram.org\/api\/custom-emoji) has changed", + "object_updateSavedGifs": "The saved gif list has changed, the client should refetch it using [messages.getSavedGifs](https:\/\/core.telegram.org\/method\/messages.getSavedGifs)", + "object_updateBotInlineQuery": "An incoming inline query", + "object_updateBotInlineQuery_param_query_id_type_long": "Query ID", + "object_updateBotInlineQuery_param_user_id_type_long": "User that sent the query", + "object_updateBotInlineQuery_param_query_type_string": "Text of query", + "object_updateBotInlineQuery_param_geo_type_flags.0?GeoPoint": "Attached geolocation", + "object_updateBotInlineQuery_param_peer_type_type_flags.1?InlineQueryPeerType": "Type of the chat from which the inline query was sent.", + "object_updateBotInlineQuery_param_offset_type_string": "Offset to navigate through results", + "object_updateBotInlineSend": "The result of an inline query that was chosen by a user and sent to their chat partner. Please see our documentation on the [feedback collecting](https:\/\/core.telegram.org\/bots\/inline#collecting-feedback) for details on how to enable these updates for your bot.", + "object_updateBotInlineSend_param_user_id_type_long": "The user that chose the result", + "object_updateBotInlineSend_param_query_type_string": "The query that was used to obtain the result", + "object_updateBotInlineSend_param_geo_type_flags.0?GeoPoint": "Optional. Sender location, only for bots that require user location", + "object_updateBotInlineSend_param_id_type_string": "The unique identifier for the result that was chosen", + "object_updateBotInlineSend_param_msg_id_type_flags.1?InputBotInlineMessageID": "Identifier of the sent inline message. Available only if there is an inline keyboard attached to the message. Will be also received in callback queries and can be used to edit the message.", + "object_updateEditChannelMessage": "A message was edited in a [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "object_updateEditChannelMessage_param_message_type_Message": "The new message", + "object_updateEditChannelMessage_param_pts_type_int": "[Event count after generation](https:\/\/core.telegram.org\/api\/updates)", + "object_updateEditChannelMessage_param_pts_count_type_int": "[Number of events that were generated](https:\/\/core.telegram.org\/api\/updates)", + "object_updateBotCallbackQuery": "A callback button was pressed, and the button data was sent to the bot that created the button", + "object_updateBotCallbackQuery_param_query_id_type_long": "Query ID", + "object_updateBotCallbackQuery_param_user_id_type_long": "ID of the user that pressed the button", + "object_updateBotCallbackQuery_param_peer_type_Peer": "Chat where the inline keyboard was sent", + "object_updateBotCallbackQuery_param_msg_id_type_int": "Message ID", + "object_updateBotCallbackQuery_param_chat_instance_type_long": "Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games.", + "object_updateBotCallbackQuery_param_data_type_flags.0?bytes": "Callback data", + "object_updateBotCallbackQuery_param_game_short_name_type_flags.1?string": "Short name of a Game to be returned, serves as the unique identifier for the game", + "object_updateEditMessage": "A message was edited", + "object_updateEditMessage_param_message_type_Message": "The new edited message", + "object_updateEditMessage_param_pts_type_int": "[PTS](https:\/\/core.telegram.org\/api\/updates)", + "object_updateEditMessage_param_pts_count_type_int": "[PTS count](https:\/\/core.telegram.org\/api\/updates)", + "object_updateInlineBotCallbackQuery": "This notification is received by bots when a button is pressed", + "object_updateInlineBotCallbackQuery_param_query_id_type_long": "Query ID", + "object_updateInlineBotCallbackQuery_param_user_id_type_long": "ID of the user that pressed the button", + "object_updateInlineBotCallbackQuery_param_msg_id_type_InputBotInlineMessageID": "ID of the inline message with the button", + "object_updateInlineBotCallbackQuery_param_chat_instance_type_long": "Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games.", + "object_updateInlineBotCallbackQuery_param_data_type_flags.0?bytes": "Data associated with the callback button. Be aware that a bad client can send arbitrary data in this field.", + "object_updateInlineBotCallbackQuery_param_game_short_name_type_flags.1?string": "Short name of a Game to be returned, serves as the unique identifier for the game", + "object_updateReadChannelOutbox": "Outgoing messages in a [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel) were read", + "object_updateReadChannelOutbox_param_channel_id_type_long": "Channel\/supergroup ID", + "object_updateReadChannelOutbox_param_max_id_type_int": "Position up to which all outgoing messages are read.", + "object_updateDraftMessage": "Notifies a change of a message [draft](https:\/\/core.telegram.org\/api\/drafts).", + "object_updateDraftMessage_param_peer_type_Peer": "The peer to which the draft is associated", + "object_updateDraftMessage_param_top_msg_id_type_flags.0?int": "ID of the [forum topic](https:\/\/core.telegram.org\/api\/forum#forum-topics) to which the draft is associated", + "object_updateDraftMessage_param_saved_peer_id_type_flags.1?Peer": "If set, the draft is related to the specified [monoforum topic ID \u00bb](https:\/\/core.telegram.org\/api\/monoforum).", + "object_updateDraftMessage_param_draft_type_DraftMessage": "The draft", + "object_updateReadFeaturedStickers": "Some featured stickers were marked as read", + "object_updateRecentStickers": "The recent sticker list was updated", + "object_updateConfig": "The server-side configuration has changed; the client should re-fetch the config using [help.getConfig](..\/methods\/help.getConfig.md) and [help.getAppConfig](..\/methods\/help.getAppConfig.md).", + "object_updatePtsChanged": "[Common message box sequence PTS](https:\/\/core.telegram.org\/api\/updates) has changed, [state has to be refetched using updates.getState](https:\/\/core.telegram.org\/api\/updates#fetching-state)", + "object_updateChannelWebPage": "A webpage preview of a link in a [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel) message was generated", + "object_updateChannelWebPage_param_channel_id_type_long": "[Channel\/supergroup](https:\/\/core.telegram.org\/api\/channel) ID", + "object_updateChannelWebPage_param_webpage_type_WebPage": "Generated webpage preview", + "object_updateChannelWebPage_param_pts_type_int": "[Event count after generation](https:\/\/core.telegram.org\/api\/updates)", + "object_updateChannelWebPage_param_pts_count_type_int": "[Number of events that were generated](https:\/\/core.telegram.org\/api\/updates)", + "object_updateDialogPinned": "A dialog was pinned\/unpinned", + "object_updateDialogPinned_param_pinned_type_flags.0?true": "Whether the dialog was pinned", + "object_updateDialogPinned_param_folder_id_type_flags.1?int": "[Peer folder ID, for more info click here](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "object_updateDialogPinned_param_peer_type_DialogPeer": "The dialog", + "object_updatePinnedDialogs": "Pinned dialogs were updated", + "object_updatePinnedDialogs_param_folder_id_type_flags.1?int": "[Peer folder ID, for more info click here](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "object_updatePinnedDialogs_param_order_type_flags.0?Vector<DialogPeer>": "New order of pinned dialogs", + "object_updateBotWebhookJSON": "A new incoming event; for bots only", + "object_updateBotWebhookJSON_param_data_type_DataJSON": "The event", + "object_updateBotWebhookJSONQuery": "A new incoming query; for bots only", + "object_updateBotWebhookJSONQuery_param_query_id_type_long": "Query identifier", + "object_updateBotWebhookJSONQuery_param_data_type_DataJSON": "Query data", + "object_updateBotWebhookJSONQuery_param_timeout_type_int": "Query timeout", + "object_updateBotShippingQuery": "This object contains information about an incoming shipping query.", + "object_updateBotShippingQuery_param_query_id_type_long": "Unique query identifier", + "object_updateBotShippingQuery_param_user_id_type_long": "User who sent the query", + "object_updateBotShippingQuery_param_payload_type_bytes": "Bot specified invoice payload", + "object_updateBotShippingQuery_param_shipping_address_type_PostAddress": "User specified shipping address", + "object_updateBotPrecheckoutQuery": "This object contains information about an incoming pre-checkout query.", + "object_updateBotPrecheckoutQuery_param_query_id_type_long": "Unique query identifier", + "object_updateBotPrecheckoutQuery_param_user_id_type_long": "User who sent the query", + "object_updateBotPrecheckoutQuery_param_payload_type_bytes": "Bot specified invoice payload", + "object_updateBotPrecheckoutQuery_param_info_type_flags.0?PaymentRequestedInfo": "Order info provided by the user", + "object_updateBotPrecheckoutQuery_param_shipping_option_id_type_flags.1?string": "Identifier of the shipping option chosen by the user", + "object_updateBotPrecheckoutQuery_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code, or `XTR` for [Telegram Stars](https:\/\/core.telegram.org\/api\/stars).", + "object_updateBotPrecheckoutQuery_param_total_amount_type_long": "Total amount in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_updatePhoneCall": "An incoming phone call", + "object_updatePhoneCall_param_phone_call_type_PhoneCall": "Phone call", + "object_updateLangPackTooLong": "A language pack has changed, the client should manually fetch the changed strings using [langpack.getDifference](..\/methods\/langpack.getDifference.md)", + "object_updateLangPackTooLong_param_lang_code_type_string": "Language code", + "object_updateLangPack": "Language pack updated", + "object_updateLangPack_param_difference_type_LangPackDifference": "Changed strings", + "object_updateFavedStickers": "The list of favorited stickers was changed, the client should call [messages.getFavedStickers](..\/methods\/messages.getFavedStickers.md) to refetch the new list", + "object_updateChannelReadMessagesContents": "The specified [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel) messages were read (emitted specifically for messages like voice messages or video, only once the media is watched and marked as read using [channels.readMessageContents](..\/methods\/channels.readMessageContents.md))", + "object_updateChannelReadMessagesContents_param_channel_id_type_long": "[Channel\/supergroup](https:\/\/core.telegram.org\/api\/channel) ID", + "object_updateChannelReadMessagesContents_param_top_msg_id_type_flags.0?int": "[Forum topic ID](https:\/\/core.telegram.org\/api\/forum#forum-topics).", + "object_updateChannelReadMessagesContents_param_saved_peer_id_type_flags.1?Peer": "If set, the messages were read within the specified [monoforum topic \u00bb](https:\/\/core.telegram.org\/api\/monoforum).", + "object_updateChannelReadMessagesContents_param_messages_type_Vector<int>": "IDs of messages that were read", + "object_updateContactsReset": "All contacts were deleted", + "object_updateChannelAvailableMessages": "The history of a [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel) was hidden.", + "object_updateChannelAvailableMessages_param_channel_id_type_long": "Channel\/supergroup ID", + "object_updateChannelAvailableMessages_param_available_min_id_type_int": "Identifier of a maximum unavailable message in a channel due to hidden history.", + "object_updateDialogUnreadMark": "The manual unread mark of a chat was changed", + "object_updateDialogUnreadMark_param_unread_type_flags.0?true": "Was the chat marked or unmarked as read", + "object_updateDialogUnreadMark_param_peer_type_DialogPeer": "The dialog", + "object_updateDialogUnreadMark_param_saved_peer_id_type_flags.1?Peer": "If set, the mark is related to the specified [monoforum topic ID \u00bb](https:\/\/core.telegram.org\/api\/monoforum).", + "object_updateMessagePoll": "The results of a poll have changed", + "object_updateMessagePoll_param_poll_id_type_long": "Poll ID", + "object_updateMessagePoll_param_poll_type_flags.0?Poll": "If the server knows the client hasn't cached this poll yet, the poll itself", + "object_updateMessagePoll_param_results_type_PollResults": "New poll results", + "object_updateChatDefaultBannedRights": "Default banned rights in a [normal chat](https:\/\/core.telegram.org\/api\/channel) were updated", + "object_updateChatDefaultBannedRights_param_peer_type_Peer": "The chat", + "object_updateChatDefaultBannedRights_param_default_banned_rights_type_ChatBannedRights": "New default banned rights", + "object_updateChatDefaultBannedRights_param_version_type_int": "Version", + "object_updateFolderPeers": "The peer list of a [peer folder](https:\/\/core.telegram.org\/api\/folders#peer-folders) was updated", + "object_updateFolderPeers_param_folder_peers_type_Vector<FolderPeer>": "New peer list", + "object_updateFolderPeers_param_pts_type_int": "[Event count after generation](https:\/\/core.telegram.org\/api\/updates)", + "object_updateFolderPeers_param_pts_count_type_int": "[Number of events that were generated](https:\/\/core.telegram.org\/api\/updates)", + "object_updatePeerSettings": "Settings of a certain peer have changed", + "object_updatePeerSettings_param_peer_type_Peer": "The peer", + "object_updatePeerSettings_param_settings_type_PeerSettings": "Associated peer settings", + "object_updatePeerLocated": "List of peers near you was updated", + "object_updatePeerLocated_param_peers_type_Vector<PeerLocated>": "Geolocated peer list update", + "object_updateNewScheduledMessage": "A message was added to the [schedule queue of a chat](https:\/\/core.telegram.org\/api\/scheduled-messages)", + "object_updateNewScheduledMessage_param_message_type_Message": "Message", + "object_updateDeleteScheduledMessages": "Some [scheduled messages](https:\/\/core.telegram.org\/api\/scheduled-messages) were deleted (or sent) from the schedule queue of a chat", + "object_updateDeleteScheduledMessages_param_peer_type_Peer": "Peer", + "object_updateDeleteScheduledMessages_param_messages_type_Vector<int>": "Deleted scheduled messages", + "object_updateDeleteScheduledMessages_param_sent_messages_type_flags.0?Vector<int>": "If set, this update indicates that some scheduled messages were sent (not simply deleted from the schedule queue).
In this case, the `messages` field will contain the scheduled message IDs for the sent messages (initially returned in [updateNewScheduledMessage](..\/constructors\/updateNewScheduledMessage.md)), and `sent_messages` will contain the real message IDs for the sent messages.", + "object_updateTheme": "A cloud theme was updated", + "object_updateTheme_param_theme_type_Theme": "Theme", + "object_updateGeoLiveViewed": "Live geoposition message was viewed", + "object_updateGeoLiveViewed_param_peer_type_Peer": "The user that viewed the live geoposition", + "object_updateGeoLiveViewed_param_msg_id_type_int": "Message ID of geoposition message", + "object_updateLoginToken": "A login token (for login via QR code) was accepted.", + "object_updateMessagePollVote": "A specific peer has voted in a poll", + "object_updateMessagePollVote_param_poll_id_type_long": "Poll ID", + "object_updateMessagePollVote_param_peer_type_Peer": "The peer that voted in the poll", + "object_updateMessagePollVote_param_options_type_Vector<bytes>": "Chosen option(s)", + "object_updateMessagePollVote_param_qts_type_int": "New **qts** value, see [updates \u00bb](https:\/\/core.telegram.org\/api\/updates) for more info.", + "object_updateDialogFilter": "A new [folder](https:\/\/core.telegram.org\/api\/folders) was added", + "object_updateDialogFilter_param_id_type_int": "[Folder](https:\/\/core.telegram.org\/api\/folders) ID", + "object_updateDialogFilter_param_filter_type_flags.0?DialogFilter": "[Folder](https:\/\/core.telegram.org\/api\/folders) info", + "object_updateDialogFilterOrder": "New [folder](https:\/\/core.telegram.org\/api\/folders) order", + "object_updateDialogFilterOrder_param_order_type_Vector<int>": "Ordered [folder IDs](https:\/\/core.telegram.org\/api\/folders)", + "object_updateDialogFilters": "Clients should update [folder](https:\/\/core.telegram.org\/api\/folders) info", + "object_updatePhoneCallSignalingData": "Incoming phone call signaling payload", + "object_updatePhoneCallSignalingData_param_phone_call_id_type_long": "Phone call ID", + "object_updatePhoneCallSignalingData_param_data_type_bytes": "Signaling payload", + "object_updateChannelMessageForwards": "The forward counter of a message in a channel has changed", + "object_updateChannelMessageForwards_param_channel_id_type_long": "Channel ID", + "object_updateChannelMessageForwards_param_id_type_int": "ID of the message", + "object_updateChannelMessageForwards_param_forwards_type_int": "New forward counter", + "object_updateReadChannelDiscussionInbox": "Incoming comments in a [discussion thread](https:\/\/core.telegram.org\/api\/threads) were marked as read", + "object_updateReadChannelDiscussionInbox_param_channel_id_type_long": "[Discussion group ID](https:\/\/core.telegram.org\/api\/channel)", + "object_updateReadChannelDiscussionInbox_param_top_msg_id_type_int": "ID of the group message that started the [thread](https:\/\/core.telegram.org\/api\/threads) (message in linked discussion group)", + "object_updateReadChannelDiscussionInbox_param_read_max_id_type_int": "Message ID of latest read incoming message for this [thread](https:\/\/core.telegram.org\/api\/threads)", + "object_updateReadChannelDiscussionInbox_param_broadcast_id_type_flags.0?long": "If set, contains the ID of the [channel](https:\/\/core.telegram.org\/api\/channel) that contains the post that started the [comment thread](https:\/\/core.telegram.org\/api\/threads) in the discussion group (`channel_id`)", + "object_updateReadChannelDiscussionInbox_param_broadcast_post_type_flags.0?int": "If set, contains the ID of the channel post that started the [comment thread](https:\/\/core.telegram.org\/api\/threads)", + "object_updateReadChannelDiscussionOutbox": "Outgoing comments in a [discussion thread](https:\/\/core.telegram.org\/api\/threads) were marked as read", + "object_updateReadChannelDiscussionOutbox_param_channel_id_type_long": "[Supergroup ID](https:\/\/core.telegram.org\/api\/channel)", + "object_updateReadChannelDiscussionOutbox_param_top_msg_id_type_int": "ID of the group message that started the [thread](https:\/\/core.telegram.org\/api\/threads)", + "object_updateReadChannelDiscussionOutbox_param_read_max_id_type_int": "Message ID of latest read outgoing message for this [thread](https:\/\/core.telegram.org\/api\/threads)", + "object_updatePeerBlocked": "We blocked a peer, see [here \u00bb](https:\/\/core.telegram.org\/api\/block) for more info on blocklists.", + "object_updatePeerBlocked_param_blocked_type_flags.0?true": "Whether the peer was blocked or unblocked", + "object_updatePeerBlocked_param_blocked_my_stories_from_type_flags.1?true": "Whether the peer was added\/removed to\/from the story blocklist; if not set, this update affects the main blocklist, see [here \u00bb](https:\/\/core.telegram.org\/api\/block) for more info.", + "object_updatePeerBlocked_param_peer_id_type_Peer": "The (un)blocked peer", + "object_updateChannelUserTyping": "A user is typing in a [supergroup, channel](https:\/\/core.telegram.org\/api\/channel) or [message thread](https:\/\/core.telegram.org\/api\/threads)", + "object_updateChannelUserTyping_param_channel_id_type_long": "Channel ID", + "object_updateChannelUserTyping_param_top_msg_id_type_flags.0?int": "[Thread ID](https:\/\/core.telegram.org\/api\/threads)", + "object_updateChannelUserTyping_param_from_id_type_Peer": "The peer that is typing", + "object_updateChannelUserTyping_param_action_type_SendMessageAction": "Whether the user is typing, sending a media or doing something else", + "object_updatePinnedMessages": "Some messages were pinned in a chat", + "object_updatePinnedMessages_param_pinned_type_flags.0?true": "Whether the messages were pinned or unpinned", + "object_updatePinnedMessages_param_peer_type_Peer": "Peer", + "object_updatePinnedMessages_param_messages_type_Vector<int>": "Message IDs", + "object_updatePinnedMessages_param_pts_type_int": "[Event count after generation](https:\/\/core.telegram.org\/api\/updates)", + "object_updatePinnedMessages_param_pts_count_type_int": "[Number of events that were generated](https:\/\/core.telegram.org\/api\/updates)", + "object_updatePinnedChannelMessages": "Messages were pinned\/unpinned in a [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "object_updatePinnedChannelMessages_param_pinned_type_flags.0?true": "Whether the messages were pinned or unpinned", + "object_updatePinnedChannelMessages_param_channel_id_type_long": "Channel ID", + "object_updatePinnedChannelMessages_param_messages_type_Vector<int>": "Messages", + "object_updatePinnedChannelMessages_param_pts_type_int": "[Event count after generation](https:\/\/core.telegram.org\/api\/updates)", + "object_updatePinnedChannelMessages_param_pts_count_type_int": "[Number of events that were generated](https:\/\/core.telegram.org\/api\/updates)", + "object_updateChat": "Chat ([chat](..\/constructors\/chat.md) and\/or [chatFull](..\/constructors\/chatFull.md)) information was updated.\n\nThis update can only be received through getDifference or in [updates](..\/constructors\/updates.md)\/[updatesCombined](..\/constructors\/updatesCombined.md) constructors, so it will **always** come bundled with the updated [chat](..\/constructors\/chat.md), that should be applied [as usual \u00bb](https:\/\/core.telegram.org\/api\/peers), **without** re-fetching the info manually.\n\nHowever, full peer information will not come bundled in updates, so the full peer cache ([chatFull](..\/constructors\/chatFull.md)) must be invalidated for `chat_id` when receiving this update.", + "object_updateChat_param_chat_id_type_long": "Chat ID", + "object_updateGroupCallParticipants": "The participant list of a certain group call has changed", + "object_updateGroupCallParticipants_param_call_type_InputGroupCall": "Group call", + "object_updateGroupCallParticipants_param_participants_type_Vector<GroupCallParticipant>": "New participant list", + "object_updateGroupCallParticipants_param_version_type_int": "Version", + "object_updateGroupCall": "A new groupcall was started", + "object_updateGroupCall_param_chat_id_type_flags.0?long": "The [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel) where this group call or livestream takes place", + "object_updateGroupCall_param_call_type_GroupCall": "Info about the group call or livestream", + "object_updatePeerHistoryTTL": "The Time-To-Live for messages sent by the current user in a specific chat has changed", + "object_updatePeerHistoryTTL_param_peer_type_Peer": "The chat", + "object_updatePeerHistoryTTL_param_ttl_period_type_flags.0?int": "The new Time-To-Live", + "object_updateChatParticipant": "A user has joined or left a specific chat", + "object_updateChatParticipant_param_chat_id_type_long": "[Chat](https:\/\/core.telegram.org\/api\/channel) ID", + "object_updateChatParticipant_param_date_type_int": "When did this event occur", + "object_updateChatParticipant_param_actor_id_type_long": "User that triggered the change (inviter, admin that kicked the user, or the even the **user\\_id** itself)", + "object_updateChatParticipant_param_user_id_type_long": "User that was affected by the change", + "object_updateChatParticipant_param_prev_participant_type_flags.0?ChatParticipant": "Previous participant info (empty if this participant just joined)", + "object_updateChatParticipant_param_new_participant_type_flags.1?ChatParticipant": "New participant info (empty if this participant just left)", + "object_updateChatParticipant_param_invite_type_flags.2?ExportedChatInvite": "The invite that was used to join the group", + "object_updateChatParticipant_param_qts_type_int": "New **qts** value, see [updates \u00bb](https:\/\/core.telegram.org\/api\/updates) for more info.", + "object_updateChannelParticipant": "A participant has left, joined, was banned or admined in a [channel or supergroup](https:\/\/core.telegram.org\/api\/channel).", + "object_updateChannelParticipant_param_via_chatlist_type_flags.3?true": "Whether the participant joined using a [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "object_updateChannelParticipant_param_channel_id_type_long": "Channel ID", + "object_updateChannelParticipant_param_date_type_int": "Date of the event", + "object_updateChannelParticipant_param_actor_id_type_long": "User that triggered the change (inviter, admin that kicked the user, or the even the **user\\_id** itself)", + "object_updateChannelParticipant_param_user_id_type_long": "User that was affected by the change", + "object_updateChannelParticipant_param_prev_participant_type_flags.0?ChannelParticipant": "Previous participant status", + "object_updateChannelParticipant_param_new_participant_type_flags.1?ChannelParticipant": "New participant status", + "object_updateChannelParticipant_param_invite_type_flags.2?ExportedChatInvite": "Chat invite used to join the [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "object_updateChannelParticipant_param_qts_type_int": "New **qts** value, see [updates \u00bb](https:\/\/core.telegram.org\/api\/updates) for more info.", + "object_updateBotStopped": "A bot was stopped or re-started.", + "object_updateBotStopped_param_user_id_type_long": "The user ID", + "object_updateBotStopped_param_date_type_int": "When did this action occur", + "object_updateBotStopped_param_stopped_type_Bool": "Whether the bot was stopped or started", + "object_updateBotStopped_param_qts_type_int": "New **qts** value, see [updates \u00bb](https:\/\/core.telegram.org\/api\/updates) for more info.", + "object_updateGroupCallConnection": "New WebRTC parameters", + "object_updateGroupCallConnection_param_presentation_type_flags.0?true": "Are these parameters related to the screen capture session currently in progress?", + "object_updateGroupCallConnection_param_params_type_DataJSON": "WebRTC parameters", + "object_updateBotCommands": "The [command set](https:\/\/core.telegram.org\/api\/bots\/commands) of a certain bot in a certain chat has changed.", + "object_updateBotCommands_param_peer_type_Peer": "The affected chat", + "object_updateBotCommands_param_bot_id_type_long": "ID of the bot that changed its command set", + "object_updateBotCommands_param_commands_type_Vector<BotCommand>": "New bot commands", + "object_updatePendingJoinRequests": "Someone has requested to join a chat or channel", + "object_updatePendingJoinRequests_param_peer_type_Peer": "Chat or channel", + "object_updatePendingJoinRequests_param_requests_pending_type_int": "Number of pending [join requests \u00bb](https:\/\/core.telegram.org\/api\/invites#join-requests) for the chat or channel", + "object_updatePendingJoinRequests_param_recent_requesters_type_Vector<long>": "IDs of users that have recently requested to join", + "object_updateBotChatInviteRequester": "Someone has requested to join a chat or channel (bots only, users will receive an [updatePendingJoinRequests](..\/constructors\/updatePendingJoinRequests.md), instead)", + "object_updateBotChatInviteRequester_param_peer_type_Peer": "The chat or channel in question", + "object_updateBotChatInviteRequester_param_date_type_int": "When was the [join request \u00bb](https:\/\/core.telegram.org\/api\/invites#join-requests) made", + "object_updateBotChatInviteRequester_param_user_id_type_long": "The user ID that is asking to join the chat or channel", + "object_updateBotChatInviteRequester_param_about_type_string": "Bio of the user", + "object_updateBotChatInviteRequester_param_invite_type_ExportedChatInvite": "Chat invite link that was used by the user to send the [join request \u00bb](https:\/\/core.telegram.org\/api\/invites#join-requests)", + "object_updateBotChatInviteRequester_param_qts_type_int": "[QTS](https:\/\/core.telegram.org\/api\/updates) event sequence identifier", + "object_updateMessageReactions": "New [message reactions \u00bb](https:\/\/core.telegram.org\/api\/reactions) are available", + "object_updateMessageReactions_param_peer_type_Peer": "Peer", + "object_updateMessageReactions_param_msg_id_type_int": "Message ID", + "object_updateMessageReactions_param_top_msg_id_type_flags.0?int": "[Forum topic ID](https:\/\/core.telegram.org\/api\/forum#forum-topics)", + "object_updateMessageReactions_param_saved_peer_id_type_flags.1?Peer": "If set, the reactions are in the specified [monoforum topic \u00bb](https:\/\/core.telegram.org\/api\/monoforum).", + "object_updateMessageReactions_param_reactions_type_MessageReactions": "Reactions", + "object_updateAttachMenuBots": "The list of installed [attachment menu entries \u00bb](https:\/\/core.telegram.org\/api\/bots\/attach) has changed, use [messages.getAttachMenuBots](..\/methods\/messages.getAttachMenuBots.md) to fetch the updated list.", + "object_updateWebViewResultSent": "Indicates to a bot that a webview was closed and an inline message was sent on behalf of the user using [messages.sendWebViewResultMessage](..\/methods\/messages.sendWebViewResultMessage.md)", + "object_updateWebViewResultSent_param_query_id_type_long": "Web app interaction ID", + "object_updateBotMenuButton": "The menu button behavior for the specified bot has changed", + "object_updateBotMenuButton_param_bot_id_type_long": "Bot ID", + "object_updateBotMenuButton_param_button_type_BotMenuButton": "New menu button", + "object_updateSavedRingtones": "The list of saved notification sounds has changed, use [account.getSavedRingtones](..\/methods\/account.getSavedRingtones.md) to fetch the new list.", + "object_updateTranscribedAudio": "A pending [voice message transcription \u00bb](https:\/\/core.telegram.org\/api\/transcribe) initiated with [messages.transcribeAudio](..\/methods\/messages.transcribeAudio.md) was updated.", + "object_updateTranscribedAudio_param_pending_type_flags.0?true": "Whether this transcription is still pending and further [updateTranscribedAudio](..\/constructors\/updateTranscribedAudio.md) about it will be sent in the future.", + "object_updateTranscribedAudio_param_peer_type_Peer": "Peer of the transcribed message", + "object_updateTranscribedAudio_param_msg_id_type_int": "Transcribed message ID", + "object_updateTranscribedAudio_param_transcription_id_type_long": "Transcription ID", + "object_updateTranscribedAudio_param_text_type_string": "Transcribed text", + "object_updateReadFeaturedEmojiStickers": "Some featured [custom emoji stickers](https:\/\/core.telegram.org\/api\/custom-emoji) were marked as read", + "object_updateUserEmojiStatus": "The [emoji status](https:\/\/core.telegram.org\/api\/emoji-status) of a certain user has changed", + "object_updateUserEmojiStatus_param_user_id_type_long": "User ID", + "object_updateUserEmojiStatus_param_emoji_status_type_EmojiStatus": "New [emoji status](https:\/\/core.telegram.org\/api\/emoji-status)", + "object_updateRecentEmojiStatuses": "The list of recent [emoji statuses](https:\/\/core.telegram.org\/api\/emoji-status) has changed", + "object_updateRecentReactions": "The list of recent [message reactions](https:\/\/core.telegram.org\/api\/reactions) has changed", + "object_updateMoveStickerSetToTop": "A stickerset was just moved to top, [see here for more info \u00bb](https:\/\/core.telegram.org\/api\/stickers#recent-stickersets)", + "object_updateMoveStickerSetToTop_param_masks_type_flags.0?true": "This update is referring to a [mask stickerset](https:\/\/core.telegram.org\/api\/stickers#mask-stickers)", + "object_updateMoveStickerSetToTop_param_emojis_type_flags.1?true": "This update is referring to a [custom emoji stickerset](https:\/\/core.telegram.org\/api\/custom-emoji)", + "object_updateMoveStickerSetToTop_param_stickerset_type_long": "[Stickerset](https:\/\/core.telegram.org\/api\/stickers) ID", + "object_updateMessageExtendedMedia": "You [bought a paid media \u00bb](https:\/\/core.telegram.org\/api\/paid-media): this update contains the revealed media.", + "object_updateMessageExtendedMedia_param_peer_type_Peer": "Peer where the paid media was posted", + "object_updateMessageExtendedMedia_param_msg_id_type_int": "ID of the message containing the paid media", + "object_updateMessageExtendedMedia_param_extended_media_type_Vector<MessageExtendedMedia>": "Revealed media, contains only [messageExtendedMedia](..\/constructors\/messageExtendedMedia.md) constructors.", + "object_updateChannelPinnedTopic": "A [forum topic \u00bb](https:\/\/core.telegram.org\/api\/forum#forum-topics) was pinned or unpinned.", + "object_updateChannelPinnedTopic_param_pinned_type_flags.0?true": "Whether the topic was pinned or unpinned", + "object_updateChannelPinnedTopic_param_channel_id_type_long": "The forum ID", + "object_updateChannelPinnedTopic_param_topic_id_type_int": "The topic ID", + "object_updateChannelPinnedTopics": "The [pinned topics](https:\/\/core.telegram.org\/api\/forum#forum-topics) of a forum have changed.", + "object_updateChannelPinnedTopics_param_channel_id_type_long": "Forum ID.", + "object_updateChannelPinnedTopics_param_order_type_flags.0?Vector<int>": "Ordered list containing the IDs of all pinned topics.", + "object_updateUser": "User ([user](..\/constructors\/user.md) and\/or [userFull](..\/constructors\/userFull.md)) information was updated.\n\nThis update can only be received through getDifference or in [updates](..\/constructors\/updates.md)\/[updatesCombined](..\/constructors\/updatesCombined.md) constructors, so it will **always** come bundled with the updated [user](..\/constructors\/user.md), that should be applied [as usual \u00bb](https:\/\/core.telegram.org\/api\/peers), **without** re-fetching the info manually.\n\nHowever, full peer information will not come bundled in updates, so the full peer cache ([userFull](..\/constructors\/userFull.md)) must be invalidated for `user_id` when receiving this update.", + "object_updateUser_param_user_id_type_long": "User ID", + "object_updateAutoSaveSettings": "Media autosave settings have changed and must be refetched using [account.getAutoSaveSettings](..\/methods\/account.getAutoSaveSettings.md).", + "object_updateStory": "A new story was posted.", + "object_updateStory_param_peer_type_Peer": "ID of the poster.", + "object_updateStory_param_story_type_StoryItem": "The story that was posted.", + "object_updateReadStories": "Stories of a specific peer were marked as read.", + "object_updateReadStories_param_peer_type_Peer": "The peer", + "object_updateReadStories_param_max_id_type_int": "ID of the last story that was marked as read", + "object_updateStoryID": "A story was successfully uploaded.\n\nOnce a story is successfully uploaded, an [updateStoryID](..\/constructors\/updateStoryID.md) will be returned, indicating the story ID (`id`) that was attributed to the story (like for messages, `random_id` indicates the `random_id` that was passed to [stories.sendStory](..\/methods\/stories.sendStory.md): this way, you can tell which story was assigned a specific `id` by checking which [stories.sendStory](..\/methods\/stories.sendStory.md) call has the returned `random_id`).", + "object_updateStoryID_param_id_type_int": "The `id` that was attributed to the story.", + "object_updateStoryID_param_random_id_type_long": "The `random_id` that was passed to [stories.sendStory](..\/methods\/stories.sendStory.md).", + "object_updateStoriesStealthMode": "Indicates that [stories stealth mode](https:\/\/core.telegram.org\/api\/stories#stealth-mode) was activated.", + "object_updateStoriesStealthMode_param_stealth_mode_type_StoriesStealthMode": "Information about the current [stealth mode](https:\/\/core.telegram.org\/api\/stories#stealth-mode) session.", + "object_updateSentStoryReaction": "Indicates we [reacted to a story \u00bb](https:\/\/core.telegram.org\/api\/stories#reactions).", + "object_updateSentStoryReaction_param_peer_type_Peer": "The peer that sent the story", + "object_updateSentStoryReaction_param_story_id_type_int": "ID of the story we reacted to", + "object_updateSentStoryReaction_param_reaction_type_Reaction": "The reaction that was sent", + "object_updateBotChatBoost": "A [channel\/supergroup boost](https:\/\/core.telegram.org\/api\/boost) has changed (bots only)", + "object_updateBotChatBoost_param_peer_type_Peer": "Channel", + "object_updateBotChatBoost_param_boost_type_Boost": "New boost information", + "object_updateBotChatBoost_param_qts_type_int": "[QTS](https:\/\/core.telegram.org\/api\/updates) event sequence identifier", + "object_updateChannelViewForumAsMessages": "Users may also choose to display messages from all topics as if they were sent to a normal group, using a \"View as messages\" setting in the local client. \nThis setting only affects the current account, and is synced to other logged in sessions using the [channels.toggleViewForumAsMessages](..\/methods\/channels.toggleViewForumAsMessages.md) method; invoking this method will update the value of the `view_forum_as_messages` flag of [channelFull](..\/constructors\/channelFull.md) or [dialog](..\/constructors\/dialog.md) and emit an [updateChannelViewForumAsMessages](..\/constructors\/updateChannelViewForumAsMessages.md).", + "object_updateChannelViewForumAsMessages_param_channel_id_type_long": "The forum ID", + "object_updateChannelViewForumAsMessages_param_enabled_type_Bool": "The new value of the toggle.", + "object_updatePeerWallpaper": "The [wallpaper \u00bb](https:\/\/core.telegram.org\/api\/wallpapers) of a given peer has changed.", + "object_updatePeerWallpaper_param_wallpaper_overridden_type_flags.1?true": "Whether the other user has chosen a custom wallpaper for us using [messages.setChatWallPaper](..\/methods\/messages.setChatWallPaper.md) and the `for_both` flag, see [here \u00bb](https:\/\/core.telegram.org\/api\/wallpapers#installing-wallpapers-in-a-specific-chat-or-channel) for more info.", + "object_updatePeerWallpaper_param_peer_type_Peer": "The peer where the wallpaper has changed.", + "object_updatePeerWallpaper_param_wallpaper_type_flags.0?WallPaper": "The new wallpaper, if none the wallpaper was removed and the default wallpaper should be used.", + "object_updateBotMessageReaction": "Bots only: a user has changed their reactions on a message with public reactions.", + "object_updateBotMessageReaction_param_peer_type_Peer": "Peer of the reacted-to message.", + "object_updateBotMessageReaction_param_msg_id_type_int": "ID of the reacted-to message.", + "object_updateBotMessageReaction_param_date_type_int": "Date of the change.", + "object_updateBotMessageReaction_param_actor_type_Peer": "The user that (un)reacted to the message.", + "object_updateBotMessageReaction_param_old_reactions_type_Vector<Reaction>": "Old reactions", + "object_updateBotMessageReaction_param_new_reactions_type_Vector<Reaction>": "New reactions", + "object_updateBotMessageReaction_param_qts_type_int": "[QTS](https:\/\/core.telegram.org\/api\/updates) event sequence identifier", + "object_updateBotMessageReactions": "Bots only: the number of reactions on a message with anonymous reactions has changed.", + "object_updateBotMessageReactions_param_peer_type_Peer": "Peer of the reacted-to message.", + "object_updateBotMessageReactions_param_msg_id_type_int": "ID of the reacted-to message.", + "object_updateBotMessageReactions_param_date_type_int": "Date of the change.", + "object_updateBotMessageReactions_param_reactions_type_Vector<ReactionCount>": "New reaction counters.", + "object_updateBotMessageReactions_param_qts_type_int": "[QTS](https:\/\/core.telegram.org\/api\/updates) event sequence identifier", + "object_updateSavedDialogPinned": "A [saved message dialog](https:\/\/core.telegram.org\/api\/saved-messages) was pinned\/unpinned", + "object_updateSavedDialogPinned_param_pinned_type_flags.0?true": "Whether the dialog was pinned", + "object_updateSavedDialogPinned_param_peer_type_DialogPeer": "The dialog", + "object_updatePinnedSavedDialogs": "[Pinned saved dialogs \u00bb](https:\/\/core.telegram.org\/api\/saved-messages) were updated", + "object_updatePinnedSavedDialogs_param_order_type_flags.0?Vector<DialogPeer>": "New order of pinned saved dialogs", + "object_updateSavedReactionTags": "The list of [reaction tag \u00bb](https:\/\/core.telegram.org\/api\/saved-messages#tags) names assigned by the user has changed and should be refetched using [messages.getSavedReactionTags \u00bb](..\/methods\/messages.getSavedReactionTags.md).", + "object_updateSmsJob": "A new SMS job was received", + "object_updateSmsJob_param_job_id_type_string": "SMS job ID", + "object_updateQuickReplies": "Info about or the order of [quick reply shortcuts \u00bb](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts) was changed.", + "object_updateQuickReplies_param_quick_replies_type_Vector<QuickReply>": "New quick reply shortcut order and information.", + "object_updateNewQuickReply": "A new [quick reply shortcut \u00bb](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts) was created.", + "object_updateNewQuickReply_param_quick_reply_type_QuickReply": "Quick reply shortcut.", + "object_updateDeleteQuickReply": "A [quick reply shortcut \u00bb](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts) was deleted. This will **not** emit [updateDeleteQuickReplyMessages](..\/constructors\/updateDeleteQuickReplyMessages.md) updates, even if all the messages in the shortcut are also deleted by this update.", + "object_updateDeleteQuickReply_param_shortcut_id_type_int": "ID of the quick reply shortcut that was deleted.", + "object_updateQuickReplyMessage": "A new message was added to a [quick reply shortcut \u00bb](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts).", + "object_updateQuickReplyMessage_param_message_type_Message": "The message that was added (the [message](..\/constructors\/message.md).`quick_reply_shortcut_id` field will contain the shortcut ID).", + "object_updateDeleteQuickReplyMessages": "One or more messages in a [quick reply shortcut \u00bb](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts) were deleted.", + "object_updateDeleteQuickReplyMessages_param_shortcut_id_type_int": "Quick reply shortcut ID.", + "object_updateDeleteQuickReplyMessages_param_messages_type_Vector<int>": "IDs of the deleted messages.", + "object_updateBotBusinessConnect": "Connecting or disconnecting a [business bot](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots) or changing the connection settings will emit an [updateBotBusinessConnect](..\/constructors\/updateBotBusinessConnect.md) update to the bot, with the new settings and a `connection_id` that will be used by the bot to handle updates from and send messages as the user.", + "object_updateBotBusinessConnect_param_connection_type_BotBusinessConnection": "Business connection settings", + "object_updateBotBusinessConnect_param_qts_type_int": "New **qts** value, see [updates \u00bb](https:\/\/core.telegram.org\/api\/updates) for more info.", + "object_updateBotNewBusinessMessage": "A message was received via a [connected business chat \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots).", + "object_updateBotNewBusinessMessage_param_connection_id_type_string": "Connection ID.", + "object_updateBotNewBusinessMessage_param_message_type_Message": "New message.", + "object_updateBotNewBusinessMessage_param_reply_to_message_type_flags.0?Message": "The message that `message` is replying to.", + "object_updateBotNewBusinessMessage_param_qts_type_int": "New **qts** value, see [updates \u00bb](https:\/\/core.telegram.org\/api\/updates) for more info.", + "object_updateBotEditBusinessMessage": "A message was edited in a [connected business chat \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots).", + "object_updateBotEditBusinessMessage_param_connection_id_type_string": "Business connection ID", + "object_updateBotEditBusinessMessage_param_message_type_Message": "New message.", + "object_updateBotEditBusinessMessage_param_reply_to_message_type_flags.0?Message": "The message that `message` is replying to.", + "object_updateBotEditBusinessMessage_param_qts_type_int": "New **qts** value, see [updates \u00bb](https:\/\/core.telegram.org\/api\/updates) for more info.", + "object_updateBotDeleteBusinessMessage": "A message was deleted in a [connected business chat \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots).", + "object_updateBotDeleteBusinessMessage_param_connection_id_type_string": "Business connection ID.", + "object_updateBotDeleteBusinessMessage_param_peer_type_Peer": "[Peer](https:\/\/core.telegram.org\/api\/peers) where the messages were deleted.", + "object_updateBotDeleteBusinessMessage_param_messages_type_Vector<int>": "IDs of the messages that were deleted.", + "object_updateBotDeleteBusinessMessage_param_qts_type_int": "New **qts** value, see [updates \u00bb](https:\/\/core.telegram.org\/api\/updates) for more info.", + "object_updateNewStoryReaction": "Represents a new [reaction to a story](https:\/\/core.telegram.org\/api\/reactions#notifications-about-reactions).", + "object_updateNewStoryReaction_param_story_id_type_int": "[Story ID](https:\/\/core.telegram.org\/api\/stories).", + "object_updateNewStoryReaction_param_peer_type_Peer": "The peer where the story was posted.", + "object_updateNewStoryReaction_param_reaction_type_Reaction": "The [reaction](https:\/\/core.telegram.org\/api\/reactions).", + "object_updateStarsBalance": "The current account's [Telegram Stars balance \u00bb](https:\/\/core.telegram.org\/api\/stars) has changed.", + "object_updateStarsBalance_param_balance_type_StarsAmount": "New balance.", + "object_updateBusinessBotCallbackQuery": "A callback button sent via a [business connection](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots) was pressed, and the button data was sent to the bot that created the button.", + "object_updateBusinessBotCallbackQuery_param_query_id_type_long": "Query ID", + "object_updateBusinessBotCallbackQuery_param_user_id_type_long": "ID of the user that pressed the button", + "object_updateBusinessBotCallbackQuery_param_connection_id_type_string": "[Business connection ID](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots)", + "object_updateBusinessBotCallbackQuery_param_message_type_Message": "Message that contains the keyboard (also contains info about the chat where the message was sent).", + "object_updateBusinessBotCallbackQuery_param_reply_to_message_type_flags.2?Message": "The message that `message` is replying to.", + "object_updateBusinessBotCallbackQuery_param_chat_instance_type_long": "Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games.", + "object_updateBusinessBotCallbackQuery_param_data_type_flags.0?bytes": "Callback data", + "object_updateStarsRevenueStatus": "The [Telegram Star balance of a channel\/bot we own has changed \u00bb](https:\/\/core.telegram.org\/api\/stars#revenue-statistics).", + "object_updateStarsRevenueStatus_param_peer_type_Peer": "Channel\/bot", + "object_updateStarsRevenueStatus_param_status_type_StarsRevenueStatus": "New Telegram Star balance.", + "object_updateBotPurchasedPaidMedia": "Bots only: a user has purchased a [paid media](https:\/\/core.telegram.org\/api\/paid-media).", + "object_updateBotPurchasedPaidMedia_param_user_id_type_long": "The user that bought the media", + "object_updateBotPurchasedPaidMedia_param_payload_type_string": "Payload passed by the bot in [inputMediaPaidMedia](..\/constructors\/inputMediaPaidMedia.md).`payload`", + "object_updateBotPurchasedPaidMedia_param_qts_type_int": "New **qts** value, see [updates \u00bb](https:\/\/core.telegram.org\/api\/updates) for more info.", + "object_updatePaidReactionPrivacy": "Contains the current [default paid reaction privacy, see here \u00bb](https:\/\/core.telegram.org\/api\/reactions#paid-reactions) for more info.\n\nClients should invoke [messages.getPaidReactionPrivacy](..\/methods\/messages.getPaidReactionPrivacy.md) on startup to fetch the current default reaction privacy because this update is only sent to currently online sessions and cannot be fetched using getDifference on client startup.", + "object_updatePaidReactionPrivacy_param_private_type_PaidReactionPrivacy": "Paid reaction privacy settings.", + "object_updateSentPhoneCode": "A paid login SMS code was successfully sent.", + "object_updateSentPhoneCode_param_sent_code_type_auth.SentCode": "Info about the sent code.", + "object_updateGroupCallChainBlocks": "Contains updates to the blockchain of a conference call, see [here \u00bb](https:\/\/core.telegram.org\/api\/end-to-end\/group-calls) for more info.", + "object_updateGroupCallChainBlocks_param_call_type_InputGroupCall": "The conference call.", + "object_updateGroupCallChainBlocks_param_sub_chain_id_type_int": "Subchain ID.", + "object_updateGroupCallChainBlocks_param_blocks_type_Vector<bytes>": "Blocks.", + "object_updateGroupCallChainBlocks_param_next_offset_type_int": "Offset of the next block.", + "object_updateReadMonoForumInbox": "Incoming messages in a [monoforum topic](https:\/\/core.telegram.org\/api\/monoforum) were read", + "object_updateReadMonoForumInbox_param_channel_id_type_long": "ID of the monoforum.", + "object_updateReadMonoForumInbox_param_saved_peer_id_type_Peer": "Topic ID.", + "object_updateReadMonoForumInbox_param_read_max_id_type_int": "Position up to which all incoming messages are read.", + "object_updateReadMonoForumOutbox": "Outgoing messages in a [monoforum](https:\/\/core.telegram.org\/api\/monoforum) were read.", + "object_updateReadMonoForumOutbox_param_channel_id_type_long": "ID of the monoforum.", + "object_updateReadMonoForumOutbox_param_saved_peer_id_type_Peer": "Topic ID.", + "object_updateReadMonoForumOutbox_param_read_max_id_type_int": "Position up to which all outgoing messages are read.", + "object_updateMonoForumNoPaidException": "An admin has (un)exempted this [monoforum topic \u00bb](https:\/\/core.telegram.org\/api\/monoforum) from payment to send messages using [account.toggleNoPaidMessagesException](..\/methods\/account.toggleNoPaidMessagesException.md).", + "object_updateMonoForumNoPaidException_param_exception_type_flags.0?true": "If set, an admin has exempted this peer, otherwise the peer was unexempted.", + "object_updateMonoForumNoPaidException_param_channel_id_type_long": "The monoforum ID.", + "object_updateMonoForumNoPaidException_param_saved_peer_id_type_Peer": "The peer\/topic ID.", + "object_updates.state": "Updates state.", + "object_updates.state_param_pts_type_int": "Number of events occurred in a text box", + "object_updates.state_param_qts_type_int": "Position in a sequence of updates in secret chats. For further details refer to article [secret chats](https:\/\/core.telegram.org\/api\/end-to-end)", + "object_updates.state_param_date_type_int": "Date of condition", + "object_updates.state_param_seq_type_int": "Number of sent updates", + "object_updates.state_param_unread_count_type_int": "Number of unread messages", + "object_updates.differenceEmpty": "No events.", + "object_updates.differenceEmpty_param_date_type_int": "Current date", + "object_updates.differenceEmpty_param_seq_type_int": "Number of sent updates", + "object_updates.difference": "Full list of occurred events.", + "object_updates.difference_param_new_messages_type_Vector<Message>": "List of new messages", + "object_updates.difference_param_new_encrypted_messages_type_Vector<EncryptedMessage>": "List of new encrypted secret chat messages", + "object_updates.difference_param_other_updates_type_Vector<Update>": "List of updates", + "object_updates.difference_param_chats_type_Vector<Chat>": "List of chats mentioned in events", + "object_updates.difference_param_users_type_Vector<User>": "List of users mentioned in events", + "object_updates.difference_param_state_type_updates.State": "Current state", + "object_updates.differenceSlice": "Incomplete list of occurred events.", + "object_updates.differenceSlice_param_new_messages_type_Vector<Message>": "List of new messages", + "object_updates.differenceSlice_param_new_encrypted_messages_type_Vector<EncryptedMessage>": "New messages from the [encrypted event sequence](https:\/\/core.telegram.org\/api\/updates)", + "object_updates.differenceSlice_param_other_updates_type_Vector<Update>": "List of updates", + "object_updates.differenceSlice_param_chats_type_Vector<Chat>": "List of chats mentioned in events", + "object_updates.differenceSlice_param_users_type_Vector<User>": "List of users mentioned in events", + "object_updates.differenceSlice_param_intermediate_state_type_updates.State": "Intermediary state", + "object_updates.differenceTooLong": "The difference is [too long](https:\/\/core.telegram.org\/api\/updates#recovering-gaps), and the specified state must be used to refetch updates.", + "object_updates.differenceTooLong_param_pts_type_int": "The new state to use.", + "object_updatesTooLong": "Too many updates, it is necessary to execute [updates.getDifference](..\/methods\/updates.getDifference.md).", + "object_updateShortMessage": "Info about a message sent to (received from) another user", + "object_updateShortMessage_param_out_type_flags.1?true": "Whether the message is outgoing", + "object_updateShortMessage_param_mentioned_type_flags.4?true": "Whether we were mentioned in the message", + "object_updateShortMessage_param_media_unread_type_flags.5?true": "Whether there are some **unread** mentions in this message", + "object_updateShortMessage_param_silent_type_flags.13?true": "If true, the message is a silent message, no notifications should be triggered", + "object_updateShortMessage_param_id_type_int": "The message ID", + "object_updateShortMessage_param_user_id_type_long": "The ID of the sender (if `outgoing` will be the ID of the destination) of the message", + "object_updateShortMessage_param_message_type_string": "The message", + "object_updateShortMessage_param_pts_type_int": "[PTS](https:\/\/core.telegram.org\/api\/updates)", + "object_updateShortMessage_param_pts_count_type_int": "[PTS count](https:\/\/core.telegram.org\/api\/updates)", + "object_updateShortMessage_param_date_type_int": "[date](https:\/\/core.telegram.org\/api\/updates)", + "object_updateShortMessage_param_fwd_from_type_flags.2?MessageFwdHeader": "Info about a forwarded message", + "object_updateShortMessage_param_via_bot_id_type_flags.11?long": "Info about the inline bot used to generate this message", + "object_updateShortMessage_param_reply_to_type_flags.3?MessageReplyHeader": "Reply and [thread](https:\/\/core.telegram.org\/api\/threads) information", + "object_updateShortMessage_param_entities_type_flags.7?Vector<MessageEntity>": "[Entities](https:\/\/core.telegram.org\/api\/entities) for styled text", + "object_updateShortMessage_param_ttl_period_type_flags.25?int": "Time To Live of the message, once message.date+message.ttl\\_period === time(), the message will be deleted on the server, and must be deleted locally as well.", + "object_updateShortChatMessage": "Shortened constructor containing info on one new incoming text message from a chat", + "object_updateShortChatMessage_param_out_type_flags.1?true": "Whether the message is outgoing", + "object_updateShortChatMessage_param_mentioned_type_flags.4?true": "Whether we were mentioned in this message", + "object_updateShortChatMessage_param_media_unread_type_flags.5?true": "Whether the message contains some **unread** mentions", + "object_updateShortChatMessage_param_silent_type_flags.13?true": "If true, the message is a silent message, no notifications should be triggered", + "object_updateShortChatMessage_param_id_type_int": "ID of the message", + "object_updateShortChatMessage_param_from_id_type_long": "ID of the sender of the message", + "object_updateShortChatMessage_param_chat_id_type_long": "ID of the chat where the message was sent", + "object_updateShortChatMessage_param_message_type_string": "Message", + "object_updateShortChatMessage_param_pts_type_int": "[PTS](https:\/\/core.telegram.org\/api\/updates)", + "object_updateShortChatMessage_param_pts_count_type_int": "[PTS count](https:\/\/core.telegram.org\/api\/updates)", + "object_updateShortChatMessage_param_date_type_int": "[date](https:\/\/core.telegram.org\/api\/updates)", + "object_updateShortChatMessage_param_fwd_from_type_flags.2?MessageFwdHeader": "Info about a forwarded message", + "object_updateShortChatMessage_param_via_bot_id_type_flags.11?long": "Info about the inline bot used to generate this message", + "object_updateShortChatMessage_param_reply_to_type_flags.3?MessageReplyHeader": "Reply (thread) information", + "object_updateShortChatMessage_param_entities_type_flags.7?Vector<MessageEntity>": "[Entities](https:\/\/core.telegram.org\/api\/entities) for styled text", + "object_updateShortChatMessage_param_ttl_period_type_flags.25?int": "Time To Live of the message, once updateShortChatMessage.date+updateShortChatMessage.ttl\\_period === time(), the message will be deleted on the server, and must be deleted locally as well.", + "object_updateShort": "Shortened constructor containing info on one update not requiring auxiliary data", + "object_updateShort_param_update_type_Update": "Update", + "object_updateShort_param_date_type_int": "Date of event", + "object_updatesCombined": "Constructor for a group of updates.", + "object_updatesCombined_param_updates_type_Vector<Update>": "List of updates", + "object_updatesCombined_param_users_type_Vector<User>": "List of users mentioned in updates", + "object_updatesCombined_param_chats_type_Vector<Chat>": "List of chats mentioned in updates", + "object_updatesCombined_param_date_type_int": "Current date", + "object_updatesCombined_param_seq_start_type_int": "Value **seq** for the earliest update in a group", + "object_updatesCombined_param_seq_type_int": "Value **seq** for the latest update in a group", + "object_updates": "Full constructor of updates", + "object_updates_param_updates_type_Vector<Update>": "List of updates", + "object_updates_param_users_type_Vector<User>": "List of users mentioned in updates", + "object_updates_param_chats_type_Vector<Chat>": "List of chats mentioned in updates", + "object_updates_param_date_type_int": "Current date", + "object_updates_param_seq_type_int": "Total number of sent updates", + "object_updateShortSentMessage": "Shortened constructor containing info on one outgoing message to a contact (the destination chat has to be extracted from the method call that returned this object).", + "object_updateShortSentMessage_param_out_type_flags.1?true": "Whether the message is outgoing", + "object_updateShortSentMessage_param_id_type_int": "ID of the sent message", + "object_updateShortSentMessage_param_pts_type_int": "[PTS](https:\/\/core.telegram.org\/api\/updates)", + "object_updateShortSentMessage_param_pts_count_type_int": "[PTS count](https:\/\/core.telegram.org\/api\/updates)", + "object_updateShortSentMessage_param_date_type_int": "[date](https:\/\/core.telegram.org\/api\/updates)", + "object_updateShortSentMessage_param_media_type_flags.9?MessageMedia": "Attached media", + "object_updateShortSentMessage_param_entities_type_flags.7?Vector<MessageEntity>": "[Entities](https:\/\/core.telegram.org\/api\/entities) for styled text", + "object_updateShortSentMessage_param_ttl_period_type_flags.25?int": "Time To Live of the message, once message.date+message.ttl\\_period === time(), the message will be deleted on the server, and must be deleted locally as well.", + "object_photos.photos": "Full list of photos with auxiliary data.", + "object_photos.photos_param_photos_type_Vector<Photo>": "List of photos", + "object_photos.photos_param_users_type_Vector<User>": "List of mentioned users", + "object_photos.photosSlice": "Incomplete list of photos with auxiliary data.", + "object_photos.photosSlice_param_count_type_int": "Total number of photos", + "object_photos.photosSlice_param_photos_type_Vector<Photo>": "List of photos", + "object_photos.photosSlice_param_users_type_Vector<User>": "List of mentioned users", + "object_photos.photo": "Photo with auxiliary data.", + "object_photos.photo_param_photo_type_Photo": "Photo", + "object_photos.photo_param_users_type_Vector<User>": "Users", + "object_upload.file": "File content.", + "object_upload.file_param_type_type_storage.FileType": "File type", + "object_upload.file_param_mtime_type_int": "Modification time", + "object_upload.file_param_bytes_type_bytes": "Binary data, file content", + "object_upload.fileCdnRedirect": "The file must be downloaded from a [CDN DC](https:\/\/core.telegram.org\/cdn).", + "object_upload.fileCdnRedirect_param_dc_id_type_int": "[CDN DC](https:\/\/core.telegram.org\/cdn) ID", + "object_upload.fileCdnRedirect_param_file_token_type_bytes": "File token (see [CDN files](https:\/\/core.telegram.org\/cdn))", + "object_upload.fileCdnRedirect_param_encryption_key_type_bytes": "Encryption key (see [CDN files](https:\/\/core.telegram.org\/cdn))", + "object_upload.fileCdnRedirect_param_encryption_iv_type_bytes": "Encryption IV (see [CDN files](https:\/\/core.telegram.org\/cdn))", + "object_upload.fileCdnRedirect_param_file_hashes_type_Vector<FileHash>": "File hashes (see [CDN files](https:\/\/core.telegram.org\/cdn))", + "object_dcOption": "Data center", + "object_dcOption_param_ipv6_type_flags.0?true": "Whether the specified IP is an IPv6 address", + "object_dcOption_param_media_only_type_flags.1?true": "Whether this DC should only be used to [download or upload files](https:\/\/core.telegram.org\/api\/files)", + "object_dcOption_param_tcpo_only_type_flags.2?true": "Whether this DC only supports connection with [transport obfuscation](https:\/\/core.telegram.org\/mtproto\/mtproto-transports#transport-obfuscation)", + "object_dcOption_param_cdn_type_flags.3?true": "Whether this is a [CDN DC](https:\/\/core.telegram.org\/cdn).", + "object_dcOption_param_static_type_flags.4?true": "If set, this IP should be used when connecting through a proxy", + "object_dcOption_param_this_port_only_type_flags.5?true": "If set, clients must connect using only the specified port, without trying any other port.", + "object_dcOption_param_id_type_int": "DC ID", + "object_dcOption_param_ip_address_type_string": "IP address of DC", + "object_dcOption_param_port_type_int": "Port", + "object_dcOption_param_secret_type_flags.10?bytes": "If the `tcpo_only` flag is set, specifies the secret to use when connecting using [transport obfuscation](https:\/\/core.telegram.org\/mtproto\/mtproto-transports#transport-obfuscation)", + "object_config": "Current configuration", + "object_config_param_default_p2p_contacts_type_flags.3?true": "Whether the client should use P2P by default for phone calls with contacts", + "object_config_param_preload_featured_stickers_type_flags.4?true": "Whether the client should preload featured stickers", + "object_config_param_revoke_pm_inbox_type_flags.6?true": "Whether incoming private messages can be deleted for both participants", + "object_config_param_blocked_mode_type_flags.8?true": "Indicates that telegram is *probably* censored by governments\/ISPs in the current region", + "object_config_param_force_try_ipv6_type_flags.14?true": "Whether to forcefully connect using IPv6 [dcOptions](..\/types\/DcOption.md), even if the client knows that IPv4 is available.", + "object_config_param_date_type_int": "Current date at the server", + "object_config_param_expires_type_int": "Expiration date of this config: when it expires it'll have to be refetched using [help.getConfig](..\/methods\/help.getConfig.md)", + "object_config_param_test_mode_type_Bool": "Whether we're connected to the test DCs", + "object_config_param_this_dc_type_int": "ID of the DC that returned the reply", + "object_config_param_dc_options_type_Vector<DcOption>": "DC IP list", + "object_config_param_dc_txt_domain_name_type_string": "Domain name for fetching encrypted DC list from DNS TXT record", + "object_config_param_chat_size_max_type_int": "Maximum member count for normal [groups](https:\/\/core.telegram.org\/api\/channel)", + "object_config_param_megagroup_size_max_type_int": "Maximum member count for [supergroups](https:\/\/core.telegram.org\/api\/channel)", + "object_config_param_forwarded_count_max_type_int": "Maximum number of messages that can be forwarded at once using [messages.forwardMessages](..\/methods\/messages.forwardMessages.md).", + "object_config_param_online_update_period_ms_type_int": "The client should [update its online status](..\/methods\/account.updateStatus.md) every N milliseconds", + "object_config_param_offline_blur_timeout_ms_type_int": "Delay before offline status needs to be sent to the server", + "object_config_param_offline_idle_timeout_ms_type_int": "Time without any user activity after which it should be treated offline", + "object_config_param_online_cloud_timeout_ms_type_int": "If we are offline, but were online from some other client in last `online_cloud_timeout_ms` milliseconds after we had gone offline, then delay offline notification for `notify_cloud_delay_ms` milliseconds.", + "object_config_param_notify_cloud_delay_ms_type_int": "If we are offline, but online from some other client then delay sending the offline notification for `notify_cloud_delay_ms` milliseconds.", + "object_config_param_notify_default_delay_ms_type_int": "If some other client is online, then delay notification for `notification_default_delay_ms` milliseconds", + "object_config_param_push_chat_period_ms_type_int": "Not for client use", + "object_config_param_push_chat_limit_type_int": "Not for client use", + "object_config_param_edit_time_limit_type_int": "Only messages with age smaller than the one specified can be edited", + "object_config_param_revoke_time_limit_type_int": "Only channel\/supergroup messages with age smaller than the specified can be deleted", + "object_config_param_revoke_pm_time_limit_type_int": "Only private messages with age smaller than the specified can be deleted", + "object_config_param_rating_e_decay_type_int": "Exponential decay rate for computing [top peer rating](https:\/\/core.telegram.org\/api\/top-rating)", + "object_config_param_stickers_recent_limit_type_int": "Maximum number of recent stickers", + "object_config_param_channels_read_media_period_type_int": "Indicates that round videos (video notes) and voice messages sent in channels and older than the specified period must be marked as read", + "object_config_param_tmp_sessions_type_flags.0?int": "Temporary [passport](https:\/\/core.telegram.org\/passport) sessions", + "object_config_param_call_receive_timeout_ms_type_int": "Maximum allowed outgoing ring time in VoIP calls: if the user we're calling doesn't reply within the specified time (in milliseconds), we should hang up the call", + "object_config_param_call_ring_timeout_ms_type_int": "Maximum allowed incoming ring time in VoIP calls: if the current user doesn't reply within the specified time (in milliseconds), the call will be automatically refused", + "object_config_param_call_connect_timeout_ms_type_int": "VoIP connection timeout: if the instance of libtgvoip on the other side of the call doesn't connect to our instance of libtgvoip within the specified time (in milliseconds), the call must be aborted", + "object_config_param_call_packet_timeout_ms_type_int": "If during a VoIP call a packet isn't received for the specified period of time, the call must be aborted", + "object_config_param_me_url_prefix_type_string": "The domain to use to parse [deep links \u00bb](https:\/\/core.telegram.org\/api\/links).", + "object_config_param_autoupdate_url_prefix_type_flags.7?string": "URL to use to auto-update the current app", + "object_config_param_gif_search_username_type_flags.9?string": "Username of the bot to use to search for GIFs", + "object_config_param_venue_search_username_type_flags.10?string": "Username of the bot to use to search for venues", + "object_config_param_img_search_username_type_flags.11?string": "Username of the bot to use for image search", + "object_config_param_static_maps_provider_type_flags.12?string": "ID of the map provider to use for venues", + "object_config_param_caption_length_max_type_int": "Maximum length of caption (length in utf8 codepoints)", + "object_config_param_message_length_max_type_int": "Maximum length of messages (length in utf8 codepoints)", + "object_config_param_webfile_dc_id_type_int": "DC ID to use to download [webfiles](https:\/\/core.telegram.org\/api\/files#downloading-webfiles)", + "object_config_param_suggested_lang_code_type_flags.2?string": "Suggested language code", + "object_config_param_lang_pack_version_type_flags.2?int": "Language pack version", + "object_config_param_base_lang_pack_version_type_flags.2?int": "Basic language pack version", + "object_config_param_reactions_default_type_flags.15?Reaction": "Default [message reaction](https:\/\/core.telegram.org\/api\/reactions)", + "object_config_param_autologin_token_type_flags.16?string": "Autologin token, [click here for more info on URL authorization \u00bb](https:\/\/core.telegram.org\/api\/url-authorization#link-url-authorization).", + "object_nearestDc": "Nearest data center, according to geo-ip.", + "object_nearestDc_param_country_type_string": "Country code determined by geo-ip", + "object_nearestDc_param_this_dc_type_int": "Number of current data center", + "object_nearestDc_param_nearest_dc_type_int": "Number of nearest data center", + "object_help.appUpdate": "An update is available for the application.", + "object_help.appUpdate_param_can_not_skip_type_flags.0?true": "Unskippable, the new info must be shown to the user (with a popup or something else)", + "object_help.appUpdate_param_id_type_int": "Update ID", + "object_help.appUpdate_param_version_type_string": "New version name", + "object_help.appUpdate_param_text_type_string": "Text description of the update", + "object_help.appUpdate_param_entities_type_Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "object_help.appUpdate_param_document_type_flags.1?Document": "Application binary", + "object_help.appUpdate_param_url_type_flags.2?string": "Application download URL", + "object_help.appUpdate_param_sticker_type_flags.3?Document": "Associated sticker", + "object_help.noAppUpdate": "No updates are available for the application.", + "object_help.inviteText": "Text of a text message with an invitation to install Telegram.", + "object_help.inviteText_param_message_type_string": "Text of the message", + "object_encryptedChatEmpty": "Empty constructor.", + "object_encryptedChatEmpty_param_id_type_int": "Chat ID", + "object_encryptedChatWaiting": "Chat waiting for approval of second participant.", + "object_encryptedChatWaiting_param_id_type_int": "Chat ID", + "object_encryptedChatWaiting_param_access_hash_type_long": "Checking sum depending on user ID", + "object_encryptedChatWaiting_param_date_type_int": "Date of chat creation", + "object_encryptedChatWaiting_param_admin_id_type_long": "Chat creator ID", + "object_encryptedChatWaiting_param_participant_id_type_long": "ID of second chat participant", + "object_encryptedChatRequested": "Request to create an encrypted chat.", + "object_encryptedChatRequested_param_folder_id_type_flags.0?int": "[Peer folder ID, for more info click here](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "object_encryptedChatRequested_param_id_type_int": "Chat ID", + "object_encryptedChatRequested_param_access_hash_type_long": "Check sum depending on user ID", + "object_encryptedChatRequested_param_date_type_int": "Chat creation date", + "object_encryptedChatRequested_param_admin_id_type_long": "Chat creator ID", + "object_encryptedChatRequested_param_participant_id_type_long": "ID of second chat participant", + "object_encryptedChatRequested_param_g_a_type_bytes": "`A = g ^ a mod p`, see [Wikipedia](https:\/\/en.wikipedia.org\/wiki\/Diffie%E2%80%93Hellman_key_exchange)", + "object_encryptedChat": "Encrypted chat", + "object_encryptedChat_param_id_type_int": "Chat ID", + "object_encryptedChat_param_access_hash_type_long": "Check sum dependent on the user ID", + "object_encryptedChat_param_date_type_int": "Date chat was created", + "object_encryptedChat_param_admin_id_type_long": "Chat creator ID", + "object_encryptedChat_param_participant_id_type_long": "ID of the second chat participant", + "object_encryptedChat_param_g_a_or_b_type_bytes": "`B = g ^ b mod p`, if the currently authorized user is the chat's creator,
or `A = g ^ a mod p` otherwise
See [Wikipedia](https:\/\/en.wikipedia.org\/wiki\/Diffie%E2%80%93Hellman_key_exchange) for more info", + "object_encryptedChat_param_key_fingerprint_type_long": "64-bit fingerprint of received key", + "object_encryptedChatDiscarded": "Discarded or deleted chat.", + "object_encryptedChatDiscarded_param_history_deleted_type_flags.0?true": "Whether both users of this secret chat should also remove all of its messages", + "object_encryptedChatDiscarded_param_id_type_int": "Chat ID", + "object_inputEncryptedChat": "Creates an encrypted chat.", + "object_inputEncryptedChat_param_chat_id_type_int": "Chat ID", + "object_inputEncryptedChat_param_access_hash_type_long": "Checking sum from constructor [encryptedChat](..\/constructors\/encryptedChat.md), [encryptedChatWaiting](..\/constructors\/encryptedChatWaiting.md) or [encryptedChatRequested](..\/constructors\/encryptedChatRequested.md)", + "object_encryptedFileEmpty": "Empty constructor, non-existing file.", + "object_encryptedFile": "Encrypted file.", + "object_encryptedFile_param_id_type_long": "File ID", + "object_encryptedFile_param_access_hash_type_long": "Checking sum depending on user ID", + "object_encryptedFile_param_size_type_long": "File size in bytes", + "object_encryptedFile_param_dc_id_type_int": "Number of data center", + "object_encryptedFile_param_key_fingerprint_type_int": "32-bit fingerprint of key used for file encryption", + "object_inputEncryptedFileEmpty": "Empty constructor.", + "object_inputEncryptedFileUploaded": "Sets new encrypted file saved by parts using upload.saveFilePart method.", + "object_inputEncryptedFileUploaded_param_id_type_long": "Random file ID created by client", + "object_inputEncryptedFileUploaded_param_parts_type_int": "Number of saved parts", + "object_inputEncryptedFileUploaded_param_md5_checksum_type_string": "In case [md5-HASH](https:\/\/en.wikipedia.org\/wiki\/MD5) of the (already encrypted) file was transmitted, file content will be checked prior to use", + "object_inputEncryptedFileUploaded_param_key_fingerprint_type_int": "32-bit fingerprint of the key used to encrypt a file", + "object_inputEncryptedFile": "Sets forwarded encrypted file for attachment.", + "object_inputEncryptedFile_param_id_type_long": "File ID, value of **id** parameter from [encryptedFile](..\/constructors\/encryptedFile.md)", + "object_inputEncryptedFile_param_access_hash_type_long": "Checking sum, value of **access\\_hash** parameter from [encryptedFile](..\/constructors\/encryptedFile.md)", + "object_inputEncryptedFileBigUploaded": "Assigns a new big encrypted file (over 10 MB in size), saved in parts using the method [upload.saveBigFilePart](..\/methods\/upload.saveBigFilePart.md).", + "object_inputEncryptedFileBigUploaded_param_id_type_long": "Random file id, created by the client", + "object_inputEncryptedFileBigUploaded_param_parts_type_int": "Number of saved parts", + "object_inputEncryptedFileBigUploaded_param_key_fingerprint_type_int": "32-bit imprint of the key used to encrypt the file", + "object_encryptedMessage": "Encrypted message.", + "object_encryptedMessage_param_random_id_type_long": "Random message ID, assigned by the author of message", + "object_encryptedMessage_param_chat_id_type_int": "ID of encrypted chat", + "object_encryptedMessage_param_date_type_int": "Date of sending", + "object_encryptedMessage_param_bytes_type_bytes": "TL-serialization of [DecryptedMessage](..\/types\/DecryptedMessage.md) type, encrypted with the key created at chat initialization", + "object_encryptedMessage_param_file_type_EncryptedFile": "Attached encrypted file", + "object_encryptedMessageService": "Encrypted service message", + "object_encryptedMessageService_param_random_id_type_long": "Random message ID, assigned by the author of message", + "object_encryptedMessageService_param_chat_id_type_int": "ID of encrypted chat", + "object_encryptedMessageService_param_date_type_int": "Date of sending", + "object_encryptedMessageService_param_bytes_type_bytes": "TL-serialization of the [DecryptedMessage](..\/types\/DecryptedMessage.md) type, encrypted with the key created at chat initialization", + "object_messages.dhConfigNotModified": "Configuring parameters did not change.", + "object_messages.dhConfigNotModified_param_random_type_bytes": "Random sequence of bytes of assigned length", + "object_messages.dhConfig": "New set of configuring parameters.", + "object_messages.dhConfig_param_g_type_int": "New value **prime**, see [Wikipedia](https:\/\/en.wikipedia.org\/wiki\/Diffie%E2%80%93Hellman_key_exchange)", + "object_messages.dhConfig_param_p_type_bytes": "New value **primitive root**, see [Wikipedia](https:\/\/en.wikipedia.org\/wiki\/Diffie%E2%80%93Hellman_key_exchange)", + "object_messages.dhConfig_param_version_type_int": "Version of set of parameters", + "object_messages.dhConfig_param_random_type_bytes": "Random sequence of bytes of assigned length", + "object_messages.sentEncryptedMessage": "Message without file attachments sent to an encrypted file.", + "object_messages.sentEncryptedMessage_param_date_type_int": "Date of sending", + "object_messages.sentEncryptedFile": "Message with a file enclosure sent to a protected chat", + "object_messages.sentEncryptedFile_param_date_type_int": "Sending date", + "object_messages.sentEncryptedFile_param_file_type_EncryptedFile": "Attached file", + "object_inputDocumentEmpty": "Empty constructor.", + "object_inputDocument": "Defines a document for subsequent interaction.", + "object_inputDocument_param_id_type_long": "Document ID", + "object_inputDocument_param_access_hash_type_long": "**access\\_hash** parameter from the [document](..\/constructors\/document.md) constructor", + "object_inputDocument_param_file_reference_type_bytes": "[File reference](https:\/\/core.telegram.org\/api\/file-references)", + "object_documentEmpty": "Empty constructor, document doesn't exist.", + "object_documentEmpty_param_id_type_long": "Document ID or `0`", + "object_document": "Document", + "object_document_param_id_type_long": "Document ID", + "object_document_param_access_hash_type_long": "Check sum, dependent on document ID", + "object_document_param_file_reference_type_bytes": "[File reference](https:\/\/core.telegram.org\/api\/file-references)", + "object_document_param_date_type_int": "Creation date", + "object_document_param_mime_type_type_string": "MIME type", + "object_document_param_size_type_long": "Size", + "object_document_param_thumbs_type_flags.0?Vector<PhotoSize>": "Thumbnails", + "object_document_param_video_thumbs_type_flags.1?Vector<VideoSize>": "Video thumbnails", + "object_document_param_dc_id_type_int": "DC ID", + "object_document_param_attributes_type_Vector<DocumentAttribute>": "Attributes", + "object_help.support": "Info on support user.", + "object_help.support_param_phone_number_type_string": "Phone number", + "object_help.support_param_user_type_User": "User", + "object_notifyPeer": "Notifications generated by a certain user or group.", + "object_notifyPeer_param_peer_type_Peer": "user or group", + "object_notifyUsers": "Notifications generated by all users.", + "object_notifyChats": "Notifications generated by all groups.", + "object_notifyBroadcasts": "Channel notification settings", + "object_notifyForumTopic": "Notifications generated by a [topic](https:\/\/core.telegram.org\/api\/forum#forum-topics) in a [forum](https:\/\/core.telegram.org\/api\/forum).", + "object_notifyForumTopic_param_peer_type_Peer": "Forum ID", + "object_notifyForumTopic_param_top_msg_id_type_int": "[Topic ID](https:\/\/core.telegram.org\/api\/forum#forum-topics)", + "object_sendMessageGamePlayAction": "User is playing a game", + "object_speakingInGroupCallAction": "User is currently speaking in the group call", + "object_sendMessageHistoryImportAction": "Chat history is being imported", + "object_sendMessageHistoryImportAction_param_progress_type_int": "Progress percentage", + "object_sendMessageChooseStickerAction": "User is choosing a sticker", + "object_sendMessageEmojiInteraction": "User has clicked on an animated emoji triggering a [reaction, click here for more info \u00bb](https:\/\/core.telegram.org\/api\/animated-emojis#emoji-reactions).", + "object_sendMessageEmojiInteraction_param_emoticon_type_string": "Emoji", + "object_sendMessageEmojiInteraction_param_msg_id_type_int": "Message ID of the animated emoji that was clicked", + "object_sendMessageEmojiInteraction_param_interaction_type_DataJSON": "A JSON object with interaction info, [click here for more info \u00bb](https:\/\/core.telegram.org\/api\/animated-emojis#emoji-reactions)", + "object_sendMessageEmojiInteractionSeen": "User is watching an animated emoji reaction triggered by another user, [click here for more info \u00bb](https:\/\/core.telegram.org\/api\/animated-emojis#emoji-reactions).", + "object_sendMessageEmojiInteractionSeen_param_emoticon_type_string": "Emoji", + "object_contacts.found": "Users found by name substring and auxiliary data.", + "object_contacts.found_param_my_results_type_Vector<Peer>": "Personalized results", + "object_contacts.found_param_results_type_Vector<Peer>": "List of found user identifiers", + "object_contacts.found_param_chats_type_Vector<Chat>": "Found chats", + "object_contacts.found_param_users_type_Vector<User>": "List of users", + "object_inputPrivacyKeyStatusTimestamp": "Whether people will be able to see our exact last online timestamp.\n\nNote that if *we* decide to hide our exact last online timestamp to someone (i.e., users A, B, C, or all users) **and** we do not have a [Premium](https:\/\/core.telegram.org\/api\/premium) subscription, we won't be able to see the exact last online timestamp of those users (A, B, C, or all users), even if those users *do* share it with us.\n\nIf those users *do* share their exact online status with us, but we can't see it due to the reason mentioned above, the `by_me` flag of [userStatusRecently](..\/constructors\/userStatusRecently.md), [userStatusLastWeek](..\/constructors\/userStatusLastWeek.md), [userStatusLastMonth](..\/constructors\/userStatusLastMonth.md) will be set.", + "object_inputPrivacyKeyChatInvite": "Whether people will be able to invite you to chats", + "object_inputPrivacyKeyPhoneCall": "Whether you will accept phone calls", + "object_inputPrivacyKeyPhoneP2P": "Whether to allow P2P communication during VoIP calls", + "object_inputPrivacyKeyForwards": "Whether messages forwarded from you will be [anonymous](https:\/\/telegram.org\/blog\/unsend-privacy-emoji#anonymous-forwarding)", + "object_inputPrivacyKeyProfilePhoto": "Whether people will be able to see your profile picture", + "object_inputPrivacyKeyPhoneNumber": "Whether people will be able to see your phone number", + "object_inputPrivacyKeyAddedByPhone": "Whether people can add you to their contact list by your phone number", + "object_inputPrivacyKeyVoiceMessages": "Whether people can send you voice messages or round videos ([Premium](https:\/\/core.telegram.org\/api\/premium) users only).", + "object_inputPrivacyKeyAbout": "Whether people can see your bio", + "object_inputPrivacyKeyBirthday": "Whether the user can see our birthday.", + "object_inputPrivacyKeyStarGiftsAutoSave": "Whether received [gifts](https:\/\/core.telegram.org\/api\/gifts) will be automatically displayed on our profile", + "object_inputPrivacyKeyNoPaidMessages": "Who can send you messages without paying, if [paid messages \u00bb](https:\/\/core.telegram.org\/api\/paid-messages) are enabled.", + "object_privacyKeyStatusTimestamp": "Whether we can see the last online timestamp of this user.\n\nNote that if *we* decide to hide our exact last online timestamp to someone (i.e., users A, B, C, or all users) **and** we do not have a [Premium](https:\/\/core.telegram.org\/api\/premium) subscription, we won't be able to see the exact last online timestamp of those users (A, B, C, or all users), even if those users *do* share it with us.\n\nIf those users *do* share their exact online status with us, but we can't see it due to the reason mentioned above, the `by_me` flag of [userStatusRecently](..\/constructors\/userStatusRecently.md), [userStatusLastWeek](..\/constructors\/userStatusLastWeek.md), [userStatusLastMonth](..\/constructors\/userStatusLastMonth.md) will be set.", + "object_privacyKeyChatInvite": "Whether the user can be invited to chats", + "object_privacyKeyPhoneCall": "Whether the user accepts phone calls", + "object_privacyKeyPhoneP2P": "Whether P2P connections in phone calls with this user are allowed", + "object_privacyKeyForwards": "Whether messages forwarded from the user will be [anonymously forwarded](https:\/\/telegram.org\/blog\/unsend-privacy-emoji#anonymous-forwarding)", + "object_privacyKeyProfilePhoto": "Whether the profile picture of the user is visible", + "object_privacyKeyPhoneNumber": "Whether the user allows us to see his phone number", + "object_privacyKeyAddedByPhone": "Whether this user can be added to our contact list by their phone number", + "object_privacyKeyVoiceMessages": "Whether the user accepts voice messages", + "object_privacyKeyAbout": "Whether people can see your bio", + "object_privacyKeyBirthday": "Whether the user can see our birthday.", + "object_privacyKeyStarGiftsAutoSave": "Whether received [gifts](https:\/\/core.telegram.org\/api\/gifts) will be automatically displayed on our profile", + "object_privacyKeyNoPaidMessages": "Who can send you messages without paying, if [paid messages \u00bb](https:\/\/core.telegram.org\/api\/paid-messages) are enabled.", + "object_inputPrivacyValueAllowContacts": "Allow only contacts", + "object_inputPrivacyValueAllowAll": "Allow all users", + "object_inputPrivacyValueAllowUsers": "Allow only certain users", + "object_inputPrivacyValueAllowUsers_param_users_type_Vector<InputUser>": "Allowed users", + "object_inputPrivacyValueDisallowContacts": "Disallow only contacts", + "object_inputPrivacyValueDisallowAll": "Disallow all", + "object_inputPrivacyValueDisallowUsers": "Disallow only certain users", + "object_inputPrivacyValueDisallowUsers_param_users_type_Vector<InputUser>": "Users to disallow", + "object_inputPrivacyValueAllowChatParticipants": "Allow only participants of certain chats", + "object_inputPrivacyValueAllowChatParticipants_param_chats_type_Vector<long>": "Allowed chat IDs (either a [chat](..\/constructors\/chat.md) or a [supergroup](..\/constructors\/channel.md) ID, verbatim the way it is received in the constructor (i.e. unlike with bot API IDs, here group and supergroup IDs should be treated in the same way)).", + "object_inputPrivacyValueDisallowChatParticipants": "Disallow only participants of certain chats", + "object_inputPrivacyValueDisallowChatParticipants_param_chats_type_Vector<long>": "Disallowed chat IDs (either a [chat](..\/constructors\/chat.md) or a [supergroup](..\/constructors\/channel.md) ID, verbatim the way it is received in the constructor (i.e. unlike with bot API IDs, here group and supergroup IDs should be treated in the same way)).", + "object_inputPrivacyValueAllowCloseFriends": "Allow only [close friends \u00bb](https:\/\/core.telegram.org\/api\/privacy)", + "object_inputPrivacyValueAllowPremium": "Allow only users with a [Premium subscription \u00bb](https:\/\/core.telegram.org\/api\/premium), currently only usable for [inputPrivacyKeyChatInvite](..\/constructors\/inputPrivacyKeyChatInvite.md).", + "object_inputPrivacyValueAllowBots": "Allow bots and mini apps", + "object_inputPrivacyValueDisallowBots": "Disallow bots and mini apps", + "object_privacyValueAllowContacts": "Allow all contacts", + "object_privacyValueAllowAll": "Allow all users", + "object_privacyValueAllowUsers": "Allow only certain users", + "object_privacyValueAllowUsers_param_users_type_Vector<long>": "Allowed users", + "object_privacyValueDisallowContacts": "Disallow only contacts", + "object_privacyValueDisallowAll": "Disallow all users", + "object_privacyValueDisallowUsers": "Disallow only certain users", + "object_privacyValueDisallowUsers_param_users_type_Vector<long>": "Disallowed users", + "object_privacyValueAllowChatParticipants": "Allow all participants of certain chats", + "object_privacyValueAllowChatParticipants_param_chats_type_Vector<long>": "Allowed chat IDs (either a [chat](..\/constructors\/chat.md) or a [supergroup](..\/constructors\/channel.md) ID, verbatim the way it is received in the constructor (i.e. unlike with bot API IDs, here group and supergroup IDs should be treated in the same way)).", + "object_privacyValueDisallowChatParticipants": "Disallow only participants of certain chats", + "object_privacyValueDisallowChatParticipants_param_chats_type_Vector<long>": "Disallowed chats IDs (either a [chat](..\/constructors\/chat.md) or a [supergroup](..\/constructors\/channel.md) ID, verbatim the way it is received in the constructor (i.e. unlike with bot API IDs, here group and supergroup IDs should be treated in the same way)).", + "object_privacyValueAllowCloseFriends": "Allow only [close friends \u00bb](https:\/\/core.telegram.org\/api\/privacy)", + "object_privacyValueAllowPremium": "Allow only users with a [Premium subscription \u00bb](https:\/\/core.telegram.org\/api\/premium), currently only usable for [inputPrivacyKeyChatInvite](..\/constructors\/inputPrivacyKeyChatInvite.md).", + "object_privacyValueAllowBots": "Allow bots and mini apps", + "object_privacyValueDisallowBots": "Disallow bots and mini apps", + "object_account.privacyRules": "Privacy rules", + "object_account.privacyRules_param_rules_type_Vector<PrivacyRule>": "Privacy rules", + "object_account.privacyRules_param_chats_type_Vector<Chat>": "Chats to which the rules apply", + "object_account.privacyRules_param_users_type_Vector<User>": "Users to which the rules apply", + "object_accountDaysTTL": "Time to live in days of the current account", + "object_accountDaysTTL_param_days_type_int": "This account will self-destruct in the specified number of days", + "object_documentAttributeHasStickers": "Whether the current document has stickers attached", + "object_documentAttributeCustomEmoji": "Info about a custom emoji", + "object_documentAttributeCustomEmoji_param_free_type_flags.0?true": "Whether this custom emoji can be sent by non-Premium users", + "object_documentAttributeCustomEmoji_param_text_color_type_flags.1?true": "Whether the color of this TGS custom emoji should be changed to the text color when used in messages, the accent color if used as emoji status, white on chat photos, or another appropriate color based on context.", + "object_documentAttributeCustomEmoji_param_alt_type_string": "The actual emoji", + "object_documentAttributeCustomEmoji_param_stickerset_type_InputStickerSet": "The emoji stickerset to which this emoji belongs.", + "object_messages.stickersNotModified": "No new stickers were found for the given query", + "object_messages.stickers": "Found stickers", + "object_messages.stickers_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_messages.stickers_param_stickers_type_Vector<Document>": "Stickers", + "object_stickerPack": "A stickerpack is a group of stickers associated to the same emoji. \nIt is **not** a sticker pack the way it is usually intended, you may be looking for a [StickerSet](..\/types\/StickerSet.md).", + "object_stickerPack_param_emoticon_type_string": "Emoji", + "object_stickerPack_param_documents_type_Vector<long>": "Stickers", + "object_messages.allStickersNotModified": "Info about all installed stickers hasn't changed", + "object_messages.allStickers": "Info about all installed stickers", + "object_messages.allStickers_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_messages.allStickers_param_sets_type_Vector<StickerSet>": "All stickersets", + "object_messages.affectedMessages": "Events affected by operation", + "object_messages.affectedMessages_param_pts_type_int": "[Event count after generation](https:\/\/core.telegram.org\/api\/updates)", + "object_messages.affectedMessages_param_pts_count_type_int": "[Number of events that were generated](https:\/\/core.telegram.org\/api\/updates)", + "object_webPageEmpty": "No preview is available for the webpage", + "object_webPageEmpty_param_id_type_long": "Preview ID", + "object_webPageEmpty_param_url_type_flags.0?string": "URL of the webpage.", + "object_webPagePending": "A preview of the webpage is currently being generated", + "object_webPagePending_param_id_type_long": "ID of preview", + "object_webPagePending_param_url_type_flags.0?string": "URL of the webpage", + "object_webPagePending_param_date_type_int": "When was the processing started", + "object_webPage": "Webpage preview", + "object_webPage_param_has_large_media_type_flags.13?true": "Whether the size of the media in the preview can be changed.", + "object_webPage_param_video_cover_photo_type_flags.14?true": "Represents a custom [video cover](https:\/\/core.telegram.org\/api\/files#video-covers).", + "object_webPage_param_id_type_long": "Preview ID", + "object_webPage_param_url_type_string": "URL of previewed webpage", + "object_webPage_param_display_url_type_string": "Webpage URL to be displayed to the user", + "object_webPage_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_webPage_param_type_type_flags.0?string": "Type of the web page. One of the following:

- `app`
- `article`
- `document`
- `gif`
- `photo`
- `profile`
- `telegram_album`
- `telegram_background`
- `telegram_bot`
- `telegram_botapp`
- `telegram_call`
- `telegram_channel`
- `telegram_channel_boost`
- `telegram_channel_direct`
- `telegram_channel_request`
- `telegram_chat`
- `telegram_chat_request`
- `telegram_chatlist`
- `telegram_collection`
- `telegram_community`
- `telegram_giftcode`
- `telegram_group_boost`
- `telegram_livestream`
- `telegram_megagroup`
- `telegram_megagroup_request`
- `telegram_message`
- `telegram_nft`
- `telegram_stickerset`
- `telegram_story`
- `telegram_story_album`
- `telegram_theme`
- `telegram_user`
- `telegram_videochat`
- `telegram_voicechat`
- `video`

", + "object_webPage_param_site_name_type_flags.1?string": "Short name of the site (e.g., Google Docs, App Store)", + "object_webPage_param_title_type_flags.2?string": "Title of the content", + "object_webPage_param_description_type_flags.3?string": "Content description", + "object_webPage_param_photo_type_flags.4?Photo": "Image representing the content", + "object_webPage_param_embed_url_type_flags.5?string": "URL to show in the embedded preview", + "object_webPage_param_embed_type_type_flags.5?string": "MIME type of the embedded preview, (e.g., text\/html or video\/mp4)", + "object_webPage_param_embed_width_type_flags.6?int": "Width of the embedded preview", + "object_webPage_param_embed_height_type_flags.6?int": "Height of the embedded preview", + "object_webPage_param_duration_type_flags.7?int": "Duration of the content, in seconds", + "object_webPage_param_author_type_flags.8?string": "Author of the content", + "object_webPage_param_document_type_flags.9?Document": "Preview of the content as a media file", + "object_webPage_param_cached_page_type_flags.10?Page": "Page contents in [instant view](https:\/\/instantview.telegram.org) format", + "object_webPage_param_attributes_type_flags.12?Vector<WebPageAttribute>": "Webpage attributes", + "object_webPageNotModified": "The preview of the webpage hasn't changed", + "object_webPageNotModified_param_cached_page_views_type_flags.0?int": "Page view count", + "object_authorization": "Logged-in session", + "object_authorization_param_current_type_flags.0?true": "Whether this is the current session", + "object_authorization_param_official_app_type_flags.1?true": "Whether the session is from an official app", + "object_authorization_param_password_pending_type_flags.2?true": "Whether the session is still waiting for a 2FA password", + "object_authorization_param_encrypted_requests_disabled_type_flags.3?true": "Whether this session will accept encrypted chats", + "object_authorization_param_call_requests_disabled_type_flags.4?true": "Whether this session will accept phone calls", + "object_authorization_param_unconfirmed_type_flags.5?true": "Whether the session is [unconfirmed, see here \u00bb](https:\/\/core.telegram.org\/api\/auth#confirming-login) for more info.", + "object_authorization_param_hash_type_long": "Identifier", + "object_authorization_param_device_model_type_string": "Device model", + "object_authorization_param_platform_type_string": "Platform", + "object_authorization_param_system_version_type_string": "System version", + "object_authorization_param_api_id_type_int": "[API ID](https:\/\/core.telegram.org\/api\/obtaining_api_id)", + "object_authorization_param_app_name_type_string": "App name", + "object_authorization_param_app_version_type_string": "App version", + "object_authorization_param_date_created_type_int": "When was the session created", + "object_authorization_param_date_active_type_int": "When was the session last active", + "object_authorization_param_ip_type_string": "Last known IP", + "object_authorization_param_country_type_string": "Country determined from IP", + "object_authorization_param_region_type_string": "Region determined from IP", + "object_account.authorizations": "Logged-in sessions", + "object_account.authorizations_param_authorization_ttl_days_type_int": "Time-to-live of session", + "object_account.authorizations_param_authorizations_type_Vector<Authorization>": "Logged-in sessions", + "object_account.password": "Configuration for two-factor authorization", + "object_account.password_param_has_recovery_type_flags.0?true": "Whether the user has a recovery method configured", + "object_account.password_param_has_secure_values_type_flags.1?true": "Whether telegram [passport](https:\/\/core.telegram.org\/passport) is enabled", + "object_account.password_param_has_password_type_flags.2?true": "Whether the user has a password", + "object_account.password_param_current_algo_type_flags.2?PasswordKdfAlgo": "The [KDF algorithm for SRP two-factor authentication](https:\/\/core.telegram.org\/api\/srp) of the current password", + "object_account.password_param_srp_B_type_flags.2?bytes": "Srp B param for [SRP authorization](https:\/\/core.telegram.org\/api\/srp)", + "object_account.password_param_srp_id_type_flags.2?long": "Srp ID param for [SRP authorization](https:\/\/core.telegram.org\/api\/srp)", + "object_account.password_param_hint_type_flags.3?string": "Text hint for the password", + "object_account.password_param_email_unconfirmed_pattern_type_flags.4?string": "A [password recovery email](https:\/\/core.telegram.org\/api\/srp#email-verification) with the specified [pattern](https:\/\/core.telegram.org\/api\/pattern) is still awaiting verification", + "object_account.password_param_new_algo_type_PasswordKdfAlgo": "The [KDF algorithm for SRP two-factor authentication](https:\/\/core.telegram.org\/api\/srp) to use when creating new passwords", + "object_account.password_param_new_secure_algo_type_SecurePasswordKdfAlgo": "The KDF algorithm for telegram [passport](https:\/\/core.telegram.org\/passport)", + "object_account.password_param_secure_random_type_bytes": "Secure random string", + "object_account.password_param_pending_reset_date_type_flags.5?int": "The 2FA password will be automatically removed at this date, unless the user cancels the operation", + "object_account.password_param_login_email_pattern_type_flags.6?string": "A verified login email with the specified [pattern](https:\/\/core.telegram.org\/api\/pattern) is configured", + "object_account.passwordSettings": "Private info associated to the password info (recovery email, telegram [passport](https:\/\/core.telegram.org\/passport) info & so on)", + "object_account.passwordSettings_param_email_type_flags.0?string": "[2FA Recovery email](https:\/\/core.telegram.org\/api\/srp#email-verification)", + "object_account.passwordSettings_param_secure_settings_type_flags.1?SecureSecretSettings": "Telegram [passport](https:\/\/core.telegram.org\/passport) settings", + "object_account.passwordInputSettings": "Settings for setting up a new password", + "object_account.passwordInputSettings_param_new_algo_type_flags.0?PasswordKdfAlgo": "The [SRP algorithm](https:\/\/core.telegram.org\/api\/srp) to use", + "object_account.passwordInputSettings_param_new_password_hash_type_flags.0?bytes": "The [computed password hash](https:\/\/core.telegram.org\/api\/srp)", + "object_account.passwordInputSettings_param_hint_type_flags.0?string": "Text hint for the password", + "object_account.passwordInputSettings_param_email_type_flags.1?string": "Password recovery email", + "object_account.passwordInputSettings_param_new_secure_settings_type_flags.2?SecureSecretSettings": "Telegram [passport](https:\/\/core.telegram.org\/passport) settings", + "object_auth.passwordRecovery": "Recovery info of a [2FA password](https:\/\/core.telegram.org\/api\/srp), only for accounts with a [recovery email configured](https:\/\/core.telegram.org\/api\/srp#email-verification).", + "object_auth.passwordRecovery_param_email_pattern_type_string": "The email to which the recovery code was sent must match this [pattern](https:\/\/core.telegram.org\/api\/pattern).", + "object_receivedNotifyMessage": "Message ID, for which PUSH-notifications were cancelled.", + "object_receivedNotifyMessage_param_id_type_int": "Message ID, for which PUSH-notifications were canceled", + "object_chatInviteExported": "Exported chat invite", + "object_chatInviteExported_param_revoked_type_flags.0?true": "Whether this chat invite was revoked", + "object_chatInviteExported_param_permanent_type_flags.5?true": "Whether this chat invite has no expiration", + "object_chatInviteExported_param_request_needed_type_flags.6?true": "Whether users importing this invite link will have to be approved to join the channel or group", + "object_chatInviteExported_param_link_type_string": "Chat invitation link", + "object_chatInviteExported_param_admin_id_type_long": "ID of the admin that created this chat invite", + "object_chatInviteExported_param_date_type_int": "When was this chat invite created", + "object_chatInviteExported_param_start_date_type_flags.4?int": "When was this chat invite last modified", + "object_chatInviteExported_param_expire_date_type_flags.1?int": "When does this chat invite expire", + "object_chatInviteExported_param_usage_limit_type_flags.2?int": "Maximum number of users that can join using this link", + "object_chatInviteExported_param_usage_type_flags.3?int": "How many users joined using this link", + "object_chatInviteExported_param_requested_type_flags.7?int": "Number of users that have already used this link to join", + "object_chatInviteExported_param_subscription_expired_type_flags.10?int": "For [Telegram Star subscriptions \u00bb](https:\/\/core.telegram.org\/api\/stars#star-subscriptions), contains the number of chat members which have already joined the chat using the link, but have already left due to expiration of their subscription.", + "object_chatInviteExported_param_title_type_flags.8?string": "Custom description for the invite link, visible only to admins", + "object_chatInviteExported_param_subscription_pricing_type_flags.9?StarsSubscriptionPricing": "For [Telegram Star subscriptions \u00bb](https:\/\/core.telegram.org\/api\/stars#star-subscriptions), contains the pricing of the subscription the user must activate to join the private channel.", + "object_chatInvitePublicJoinRequests": "Used in updates and in the channel log to indicate when a user is requesting to join or has joined a [discussion group](https:\/\/core.telegram.org\/api\/discussion#requiring-users-to-join-the-group)", + "object_chatInviteAlready": "The user has already joined this chat", + "object_chatInviteAlready_param_chat_type_Chat": "The chat connected to the invite", + "object_chatInvite": "Chat invite info", + "object_chatInvite_param_channel_type_flags.0?true": "Whether this is a [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel) or a [normal group](https:\/\/core.telegram.org\/api\/channel)", + "object_chatInvite_param_broadcast_type_flags.1?true": "Whether this is a [channel](https:\/\/core.telegram.org\/api\/channel)", + "object_chatInvite_param_public_type_flags.2?true": "Whether this is a public [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "object_chatInvite_param_megagroup_type_flags.3?true": "Whether this is a [supergroup](https:\/\/core.telegram.org\/api\/channel)", + "object_chatInvite_param_request_needed_type_flags.6?true": "Whether the [join request \u00bb](https:\/\/core.telegram.org\/api\/invites#join-requests) must be first approved by an administrator", + "object_chatInvite_param_verified_type_flags.7?true": "Is this chat or channel verified by Telegram?", + "object_chatInvite_param_scam_type_flags.8?true": "This chat is probably a scam", + "object_chatInvite_param_fake_type_flags.9?true": "If set, this chat was reported by many users as a fake or scam: be careful when interacting with it.", + "object_chatInvite_param_can_refulfill_subscription_type_flags.11?true": "If set, indicates that the user has already paid for the associated [Telegram Star subscriptions \u00bb](https:\/\/core.telegram.org\/api\/stars#star-subscriptions) and it hasn't expired yet, so they may re-join the channel using [messages.importChatInvite](..\/methods\/messages.importChatInvite.md) without repeating the payment.", + "object_chatInvite_param_title_type_string": "Chat\/supergroup\/channel title", + "object_chatInvite_param_about_type_flags.5?string": "Description of the group of channel", + "object_chatInvite_param_photo_type_Photo": "Chat\/supergroup\/channel photo", + "object_chatInvite_param_participants_count_type_int": "Participant count", + "object_chatInvite_param_participants_type_flags.4?Vector<User>": "A few of the participants that are in the group", + "object_chatInvite_param_color_type_int": "[Profile color palette ID](https:\/\/core.telegram.org\/api\/colors)", + "object_chatInvite_param_subscription_pricing_type_flags.10?StarsSubscriptionPricing": "For [Telegram Star subscriptions \u00bb](https:\/\/core.telegram.org\/api\/stars#star-subscriptions), contains the pricing of the subscription the user must activate to join the private channel.", + "object_chatInvite_param_subscription_form_id_type_flags.12?long": "For [Telegram Star subscriptions \u00bb](https:\/\/core.telegram.org\/api\/stars#star-subscriptions), the ID of the payment form for the subscription.", + "object_chatInvite_param_bot_verification_type_flags.13?BotVerification": "Describes a [bot verification icon \u00bb](https:\/\/core.telegram.org\/api\/bots\/verification).", + "object_chatInvitePeek": "A chat invitation that also allows peeking into the group to read messages without joining it.", + "object_chatInvitePeek_param_chat_type_Chat": "Chat information", + "object_chatInvitePeek_param_expires_type_int": "Read-only anonymous access to this group will be revoked at this date", + "object_inputStickerSetID": "Stickerset by ID", + "object_inputStickerSetID_param_id_type_long": "ID", + "object_inputStickerSetID_param_access_hash_type_long": "Access hash", + "object_inputStickerSetAnimatedEmoji": "Animated emojis stickerset", + "object_inputStickerSetDice": "Used for fetching [animated dice stickers](https:\/\/core.telegram.org\/api\/dice)", + "object_inputStickerSetDice_param_emoticon_type_string": "The emoji, for now \ud83c\udfc0, \ud83c\udfb2 and \ud83c\udfaf are supported", + "object_inputStickerSetAnimatedEmojiAnimations": "Animated emoji reaction stickerset (contains animations to play when a user clicks on a given animated emoji)", + "object_inputStickerSetPremiumGifts": "Stickers to show when receiving a gifted Telegram Premium subscription", + "object_inputStickerSetEmojiGenericAnimations": "Generic animation stickerset containing animations to play when [reacting to messages using a normal emoji without a custom animation](https:\/\/core.telegram.org\/api\/reactions)", + "object_inputStickerSetEmojiDefaultStatuses": "Default [custom emoji status](https:\/\/core.telegram.org\/api\/emoji-status) stickerset", + "object_inputStickerSetEmojiDefaultTopicIcons": "Default [custom emoji](https:\/\/core.telegram.org\/api\/custom-emoji) stickerset for [forum topic icons](https:\/\/core.telegram.org\/api\/forum#forum-topics)", + "object_inputStickerSetEmojiChannelDefaultStatuses": "Default [custom emoji status](https:\/\/core.telegram.org\/api\/emoji-status) stickerset for channel statuses", + "object_inputStickerSetTonGifts": "TON gifts stickerset.", + "object_stickerSet": "Represents a stickerset (stickerpack)", + "object_stickerSet_param_archived_type_flags.1?true": "Whether this stickerset was archived (due to too many saved stickers in the current account)", + "object_stickerSet_param_official_type_flags.2?true": "Is this stickerset official", + "object_stickerSet_param_masks_type_flags.3?true": "Is this a mask stickerset", + "object_stickerSet_param_emojis_type_flags.7?true": "This is a custom emoji stickerset", + "object_stickerSet_param_text_color_type_flags.9?true": "Whether the color of this TGS custom emoji stickerset should be changed to the text color when used in messages, the accent color if used as emoji status, white on chat photos, or another appropriate color based on context.", + "object_stickerSet_param_channel_emoji_status_type_flags.10?true": "If set, this custom emoji stickerset can be used in [channel\/supergroup emoji statuses](https:\/\/core.telegram.org\/api\/emoji-status).", + "object_stickerSet_param_creator_type_flags.11?true": "Whether we created this stickerset", + "object_stickerSet_param_installed_date_type_flags.0?int": "When was this stickerset installed", + "object_stickerSet_param_id_type_long": "ID of the stickerset", + "object_stickerSet_param_access_hash_type_long": "Access hash of stickerset", + "object_stickerSet_param_title_type_string": "Title of stickerset", + "object_stickerSet_param_short_name_type_string": "Short name of stickerset, used when sharing stickerset using [stickerset deep links](https:\/\/core.telegram.org\/api\/links#stickerset-links).", + "object_stickerSet_param_thumbs_type_flags.4?Vector<PhotoSize>": "Stickerset thumbnail", + "object_stickerSet_param_thumb_dc_id_type_flags.4?int": "DC ID of thumbnail", + "object_stickerSet_param_thumb_version_type_flags.4?int": "Thumbnail version", + "object_stickerSet_param_thumb_document_id_type_flags.8?long": "Document ID of custom emoji thumbnail, fetch the document using [messages.getCustomEmojiDocuments](..\/methods\/messages.getCustomEmojiDocuments.md)", + "object_stickerSet_param_count_type_int": "Number of stickers in pack", + "object_stickerSet_param_hash_type_int": "Hash", + "object_messages.stickerSet": "Stickerset and stickers inside it", + "object_messages.stickerSet_param_set_type_StickerSet": "The stickerset", + "object_messages.stickerSet_param_packs_type_Vector<StickerPack>": "Emoji info for stickers", + "object_messages.stickerSet_param_keywords_type_Vector<StickerKeyword>": "Keywords for some or every sticker in the stickerset.", + "object_messages.stickerSet_param_documents_type_Vector<Document>": "Stickers in stickerset", + "object_messages.stickerSetNotModified": "The stickerset hasn't changed", + "object_botCommand": "Describes a bot command that can be used in a chat", + "object_botCommand_param_command_type_string": "`\/command` name", + "object_botCommand_param_description_type_string": "Description of the command", + "object_botInfo": "Info about bots (available bot commands, etc)", + "object_botInfo_param_has_preview_medias_type_flags.6?true": "If set, the bot has some [preview medias for the configured Main Mini App, see here \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-app-previews) for more info on Main Mini App preview medias.", + "object_botInfo_param_user_id_type_flags.0?long": "ID of the bot", + "object_botInfo_param_description_type_flags.1?string": "Description of the bot", + "object_botInfo_param_description_photo_type_flags.4?Photo": "Description photo", + "object_botInfo_param_description_document_type_flags.5?Document": "Description animation in MPEG4 format", + "object_botInfo_param_commands_type_flags.2?Vector<BotCommand>": "Bot commands that can be used in the chat", + "object_botInfo_param_menu_button_type_flags.3?BotMenuButton": "Indicates the action to execute when pressing the in-UI menu button for bots", + "object_botInfo_param_privacy_policy_url_type_flags.7?string": "The HTTP link to the privacy policy of the bot. If not set, then the `\/privacy` command must be used, if supported by the bot (i.e. if it's present in the `commands` vector). If it isn't supported, then must be opened, instead.", + "object_botInfo_param_app_settings_type_flags.8?BotAppSettings": "[Mini app \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps) settings
", + "object_botInfo_param_verifier_settings_type_flags.9?BotVerifierSettings": "This bot can [verify peers](https:\/\/core.telegram.org\/api\/bots\/verification): this field contains more info about the verification the bot can assign to peers.", + "object_keyboardButton": "Bot keyboard button", + "object_keyboardButton_param_text_type_string": "Button text", + "object_keyboardButtonUrl": "URL button", + "object_keyboardButtonUrl_param_text_type_string": "Button label", + "object_keyboardButtonUrl_param_url_type_string": "URL", + "object_keyboardButtonCallback": "Callback button", + "object_keyboardButtonCallback_param_requires_password_type_flags.0?true": "Whether the user should verify his identity by entering his [2FA SRP parameters](https:\/\/core.telegram.org\/api\/srp) to the [messages.getBotCallbackAnswer](..\/methods\/messages.getBotCallbackAnswer.md) method. NOTE: telegram and the bot WILL NOT have access to the plaintext password, thanks to [SRP](https:\/\/core.telegram.org\/api\/srp). This button is mainly used by the official [@botfather](https:\/\/t.me\/botfather) bot, for verifying the user's identity before transferring ownership of a bot to another user.", + "object_keyboardButtonCallback_param_text_type_string": "Button text", + "object_keyboardButtonCallback_param_data_type_bytes": "Callback data", + "object_keyboardButtonRequestPhone": "Button to request a user's phone number", + "object_keyboardButtonRequestPhone_param_text_type_string": "Button text", + "object_keyboardButtonRequestGeoLocation": "Button to request a user's geolocation", + "object_keyboardButtonRequestGeoLocation_param_text_type_string": "Button text", + "object_keyboardButtonSwitchInline": "Button to force a user to switch to inline mode: pressing the button will prompt the user to select one of their chats, open that chat and insert the bot's username and the specified inline query in the input field.", + "object_keyboardButtonSwitchInline_param_same_peer_type_flags.0?true": "If set, pressing the button will insert the bot's username and the specified inline `query` in the current chat's input field.", + "object_keyboardButtonSwitchInline_param_text_type_string": "Button label", + "object_keyboardButtonSwitchInline_param_query_type_string": "The inline query to use", + "object_keyboardButtonSwitchInline_param_peer_types_type_flags.1?Vector<InlineQueryPeerType>": "Filter to use when selecting chats.", + "object_keyboardButtonGame": "Button to start a game", + "object_keyboardButtonGame_param_text_type_string": "Button text", + "object_keyboardButtonBuy": "Button to buy a product", + "object_keyboardButtonBuy_param_text_type_string": "Button text", + "object_keyboardButtonUrlAuth": "Button to request a user to authorize via URL using [Seamless Telegram Login](https:\/\/telegram.org\/blog\/privacy-discussions-web-bots#meet-seamless-web-bots). When the user clicks on such a button, [messages.requestUrlAuth](..\/methods\/messages.requestUrlAuth.md) should be called, providing the `button_id` and the ID of the container message. The returned [urlAuthResultRequest](..\/constructors\/urlAuthResultRequest.md) object will contain more details about the authorization request (`request_write_access` if the bot would like to send messages to the user along with the username of the bot which will be used for user authorization). Finally, the user can choose to call [messages.acceptUrlAuth](..\/methods\/messages.acceptUrlAuth.md) to get a [urlAuthResultAccepted](..\/constructors\/urlAuthResultAccepted.md) with the URL to open instead of the `url` of this constructor, or a [urlAuthResultDefault](..\/constructors\/urlAuthResultDefault.md), in which case the `url` of this constructor must be opened, instead. If the user refuses the authorization request but still wants to open the link, the `url` of this constructor must be used.", + "object_keyboardButtonUrlAuth_param_text_type_string": "Button label", + "object_keyboardButtonUrlAuth_param_fwd_text_type_flags.0?string": "New text of the button in forwarded messages.", + "object_keyboardButtonUrlAuth_param_url_type_string": "An HTTP URL to be opened with user authorization data added to the query string when the button is pressed. If the user refuses to provide authorization data, the original URL without information about the user will be opened. The data added is the same as described in [Receiving authorization data](https:\/\/core.telegram.org\/widgets\/login#receiving-authorization-data).

**NOTE**: Services must **always** check the hash of the received data to verify the authentication and the integrity of the data as described in [Checking authorization](https:\/\/core.telegram.org\/widgets\/login#checking-authorization).", + "object_keyboardButtonUrlAuth_param_button_id_type_int": "ID of the button to pass to [messages.requestUrlAuth](..\/methods\/messages.requestUrlAuth.md)", + "object_inputKeyboardButtonUrlAuth": "Button to request a user to [authorize](..\/methods\/messages.acceptUrlAuth.md) via URL using [Seamless Telegram Login](https:\/\/telegram.org\/blog\/privacy-discussions-web-bots#meet-seamless-web-bots).", + "object_inputKeyboardButtonUrlAuth_param_request_write_access_type_flags.0?true": "Set this flag to request the permission for your bot to send messages to the user.", + "object_inputKeyboardButtonUrlAuth_param_text_type_string": "Button text", + "object_inputKeyboardButtonUrlAuth_param_fwd_text_type_flags.1?string": "New text of the button in forwarded messages.", + "object_inputKeyboardButtonUrlAuth_param_url_type_string": "An HTTP URL to be opened with user authorization data added to the query string when the button is pressed. If the user refuses to provide authorization data, the original URL without information about the user will be opened. The data added is the same as described in [Receiving authorization data](https:\/\/core.telegram.org\/widgets\/login#receiving-authorization-data).
NOTE: You must always check the hash of the received data to verify the authentication and the integrity of the data as described in [Checking authorization](https:\/\/core.telegram.org\/widgets\/login#checking-authorization).", + "object_inputKeyboardButtonUrlAuth_param_bot_type_InputUser": "Username of a bot, which will be used for user authorization. See [Setting up a bot](https:\/\/core.telegram.org\/widgets\/login#setting-up-a-bot) for more details. If not specified, the current bot's username will be assumed. The url's domain must be the same as the domain linked with the bot. See [Linking your domain to the bot](https:\/\/core.telegram.org\/widgets\/login#linking-your-domain-to-the-bot) for more details.", + "object_keyboardButtonRequestPoll": "A button that allows the user to create and send a poll when pressed; available only in private", + "object_keyboardButtonRequestPoll_param_quiz_type_flags.0?Bool": "If set, only quiz polls can be sent", + "object_keyboardButtonRequestPoll_param_text_type_string": "Button text", + "object_inputKeyboardButtonUserProfile": "Button that links directly to a user profile", + "object_inputKeyboardButtonUserProfile_param_text_type_string": "Button text", + "object_inputKeyboardButtonUserProfile_param_user_id_type_InputUser": "User ID", + "object_keyboardButtonUserProfile": "Button that links directly to a user profile", + "object_keyboardButtonUserProfile_param_text_type_string": "Button text", + "object_keyboardButtonUserProfile_param_user_id_type_long": "User ID", + "object_keyboardButtonWebView": "Button to open a [bot mini app](https:\/\/core.telegram.org\/api\/bots\/webapps) using [messages.requestWebView](..\/methods\/messages.requestWebView.md), sending over user information after user confirmation.\n\nCan only be sent or received as part of an inline keyboard, use [keyboardButtonSimpleWebView](..\/constructors\/keyboardButtonSimpleWebView.md) for reply keyboards.", + "object_keyboardButtonWebView_param_text_type_string": "Button text", + "object_keyboardButtonWebView_param_url_type_string": "[Web app url](https:\/\/core.telegram.org\/api\/bots\/webapps)", + "object_keyboardButtonSimpleWebView": "Button to open a [bot mini app](https:\/\/core.telegram.org\/api\/bots\/webapps) using [messages.requestSimpleWebView](..\/methods\/messages.requestSimpleWebView.md), without sending user information to the web app.\n\nCan only be sent or received as part of a reply keyboard, use [keyboardButtonWebView](..\/constructors\/keyboardButtonWebView.md) for inline keyboards.", + "object_keyboardButtonSimpleWebView_param_text_type_string": "Button text", + "object_keyboardButtonSimpleWebView_param_url_type_string": "[Web app URL](https:\/\/core.telegram.org\/api\/bots\/webapps)", + "object_keyboardButtonRequestPeer": "Prompts the user to select and share one or more peers with the bot using [messages.sendBotRequestedPeer](..\/methods\/messages.sendBotRequestedPeer.md)", + "object_keyboardButtonRequestPeer_param_text_type_string": "Button text", + "object_keyboardButtonRequestPeer_param_button_id_type_int": "Button ID, to be passed to [messages.sendBotRequestedPeer](..\/methods\/messages.sendBotRequestedPeer.md).", + "object_keyboardButtonRequestPeer_param_peer_type_type_RequestPeerType": "Filtering criteria to use for the peer selection list shown to the user.
The list should display all existing peers of the specified type, and should also offer an option for the user to create and immediately use one or more (up to `max_quantity`) peers of the specified type, if needed.", + "object_keyboardButtonRequestPeer_param_max_quantity_type_int": "Maximum number of peers that can be chosen.", + "object_inputKeyboardButtonRequestPeer": "Prompts the user to select and share one or more peers with the bot using [messages.sendBotRequestedPeer](..\/methods\/messages.sendBotRequestedPeer.md).", + "object_inputKeyboardButtonRequestPeer_param_name_requested_type_flags.0?true": "Set this flag to request the peer's name.", + "object_inputKeyboardButtonRequestPeer_param_username_requested_type_flags.1?true": "Set this flag to request the peer's `@username` (if any).", + "object_inputKeyboardButtonRequestPeer_param_photo_requested_type_flags.2?true": "Set this flag to request the peer's photo (if any).", + "object_inputKeyboardButtonRequestPeer_param_text_type_string": "Button text", + "object_inputKeyboardButtonRequestPeer_param_button_id_type_int": "Button ID, to be passed to [messages.sendBotRequestedPeer](..\/methods\/messages.sendBotRequestedPeer.md).", + "object_inputKeyboardButtonRequestPeer_param_peer_type_type_RequestPeerType": "Filtering criteria to use for the peer selection list shown to the user.
The list should display all existing peers of the specified type, and should also offer an option for the user to create and immediately use one or more (up to `max_quantity`) peers of the specified type, if needed.", + "object_inputKeyboardButtonRequestPeer_param_max_quantity_type_int": "Maximum number of peers that can be chosen.", + "object_keyboardButtonCopy": "Clipboard button: when clicked, the attached text must be copied to the clipboard.", + "object_keyboardButtonCopy_param_text_type_string": "Title of the button", + "object_keyboardButtonCopy_param_copy_text_type_string": "The text that will be copied to the clipboard", + "object_keyboardButtonRow": "Inline keyboard row", + "object_keyboardButtonRow_param_buttons_type_Vector<KeyboardButton>": "Bot or inline keyboard buttons", + "object_replyKeyboardHide": "Hide sent bot keyboard", + "object_replyKeyboardHide_param_selective_type_flags.2?true": "Use this flag if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply\\_to\\_message\\_id), sender of the original message.

Example: A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet", + "object_replyKeyboardForceReply": "Force the user to send a reply", + "object_replyKeyboardForceReply_param_single_use_type_flags.1?true": "Requests clients to hide the keyboard as soon as it's been used. The keyboard will still be available, but clients will automatically display the usual letter-keyboard in the chat \u2013 the user can press a special button in the input field to see the custom keyboard again.", + "object_replyKeyboardForceReply_param_selective_type_flags.2?true": "Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply\\_to\\_message\\_id), sender of the original message.
Example: A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.", + "object_replyKeyboardForceReply_param_placeholder_type_flags.3?string": "The placeholder to be shown in the input field when the keyboard is active; 1-64 characters.", + "object_replyKeyboardMarkup": "Bot keyboard", + "object_replyKeyboardMarkup_param_resize_type_flags.0?true": "Requests clients to resize the keyboard vertically for optimal fit (e.g., make the keyboard smaller if there are just two rows of buttons). If not set, the custom keyboard is always of the same height as the app's standard keyboard.", + "object_replyKeyboardMarkup_param_single_use_type_flags.1?true": "Requests clients to hide the keyboard as soon as it's been used. The keyboard will still be available, but clients will automatically display the usual letter-keyboard in the chat \u2013 the user can press a special button in the input field to see the custom keyboard again.", + "object_replyKeyboardMarkup_param_selective_type_flags.2?true": "Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply\\_to\\_message\\_id), sender of the original message.

Example: A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.", + "object_replyKeyboardMarkup_param_persistent_type_flags.4?true": "Requests clients to always show the keyboard when the regular keyboard is hidden.", + "object_replyKeyboardMarkup_param_rows_type_Vector<KeyboardButtonRow>": "Button row", + "object_replyKeyboardMarkup_param_placeholder_type_flags.3?string": "The placeholder to be shown in the input field when the keyboard is active; 1-64 characters.", + "object_replyInlineMarkup": "Bot or inline keyboard", + "object_replyInlineMarkup_param_rows_type_Vector<KeyboardButtonRow>": "Bot or inline keyboard rows", + "object_messageEntityMentionName": "Message entity representing a [user mention](https:\/\/core.telegram.org\/api\/mentions): for *creating* a mention use [inputMessageEntityMentionName](..\/constructors\/inputMessageEntityMentionName.md).", + "object_messageEntityMentionName_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityMentionName_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityMentionName_param_user_id_type_long": "Identifier of the user that was mentioned", + "object_inputMessageEntityMentionName": "Message entity that can be used to create a user [user mention](https:\/\/core.telegram.org\/api\/mentions): received mentions use the [messageEntityMentionName](..\/constructors\/messageEntityMentionName.md) constructor, instead.", + "object_inputMessageEntityMentionName_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_inputMessageEntityMentionName_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_inputMessageEntityMentionName_param_user_id_type_InputUser": "Identifier of the user that was mentioned", + "object_messageEntityPhone": "Message entity representing a phone number.", + "object_messageEntityPhone_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityPhone_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityCashtag": "Message entity representing a **$cashtag**.", + "object_messageEntityCashtag_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityCashtag_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityBankCard": "Indicates a credit card number", + "object_messageEntityBankCard_param_offset_type_int": "Offset of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_messageEntityBankCard_param_length_type_int": "Length of message entity within message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length))", + "object_inputChannelEmpty": "Represents the absence of a channel", + "object_inputChannel": "Represents a channel", + "object_inputChannel_param_channel_id_type_long": "Channel ID", + "object_inputChannel_param_access_hash_type_long": "Access hash taken from the [channel](..\/constructors\/channel.md) constructor", + "object_inputChannelFromMessage": "Defines a [min](https:\/\/core.telegram.org\/api\/min) channel that was seen in a certain message of a certain chat.", + "object_inputChannelFromMessage_param_peer_type_InputPeer": "The chat where the channel was seen", + "object_inputChannelFromMessage_param_msg_id_type_int": "The message ID in the chat where the channel was seen", + "object_inputChannelFromMessage_param_channel_id_type_long": "The channel ID", + "object_contacts.resolvedPeer": "Resolved peer", + "object_contacts.resolvedPeer_param_peer_type_Peer": "The peer", + "object_contacts.resolvedPeer_param_chats_type_Vector<Chat>": "Chats", + "object_contacts.resolvedPeer_param_users_type_Vector<User>": "Users", + "object_messageRange": "Indicates a range of chat messages", + "object_messageRange_param_min_id_type_int": "Start of range (message ID)", + "object_messageRange_param_max_id_type_int": "End of range (message ID)", + "object_updates.channelDifferenceEmpty": "There are no new updates", + "object_updates.channelDifferenceEmpty_param_final_type_flags.0?true": "Whether there are more updates that must be fetched (always false)", + "object_updates.channelDifferenceEmpty_param_pts_type_int": "The latest [PTS](https:\/\/core.telegram.org\/api\/updates)", + "object_updates.channelDifferenceEmpty_param_timeout_type_flags.1?int": "Clients are supposed to refetch the channel difference after timeout seconds have elapsed, if the user is [currently viewing the chat, see here \u00bb](https:\/\/core.telegram.org\/api\/updates#subscribing-to-updates-of-channels-supergroups) for more info.", + "object_updates.channelDifferenceTooLong": "The provided `pts + limit < remote pts`. Simply, there are too many updates to be fetched (more than `limit`), the client has to resolve the update gap in one of the following ways (assuming the existence of a persistent database to locally store messages):\n\n1. Delete all known messages in the chat, begin from scratch by refetching all messages manually with [messages.getHistory](..\/methods\/messages.getHistory.md). It is easy to implement, but suddenly disappearing messages look awful to the user.\n2. Save all messages loaded in the memory until application restart, but delete all messages from the database. Messages left in the memory must be lazily updated using calls to [messages.getHistory](..\/methods\/messages.getHistory.md). \n It will look much smoother to the user, they will need to redownload messages only after client restart. \n Unsynchronized messages left in memory shouldn't be saved to the database, results of [messages.getHistory](..\/methods\/messages.getHistory.md) and [messages.getMessages](..\/methods\/messages.getMessages.md) must be used to update the state of deleted and edited messages left in the memory.\n3. Save all messages loaded in the memory and stored in the database without saving that some messages form continuous ranges. \n Messages in the database will be excluded when paginating through or searching the local message history after application restart and will be available only through individual message queries. \n Every message should still be checked using [messages.getHistory](..\/methods\/messages.getHistory.md). \n It has more disadvantages over 2) than advantages.\n4. Save all messages with saving all data about continuous message ranges. \n Messages from the database may be used when paginating through or searching the local message history. \n The messages should still be lazily checked using [messages.getHistory](..\/methods\/messages.getHistory.md), but they are still available offline. \n It is the best way for gaps support, but it is pretty hard to implement correctly.\n\nIt should be also noted that some messages like live location messages shouldn't be deleted.", + "object_updates.channelDifferenceTooLong_param_final_type_flags.0?true": "Whether there are more updates that must be fetched (always false)", + "object_updates.channelDifferenceTooLong_param_timeout_type_flags.1?int": "Clients are supposed to refetch the channel difference after timeout seconds have elapsed", + "object_updates.channelDifferenceTooLong_param_dialog_type_Dialog": "Dialog containing the latest [PTS](https:\/\/core.telegram.org\/api\/updates) that can be used to reset the channel state", + "object_updates.channelDifferenceTooLong_param_messages_type_Vector<Message>": "The latest messages", + "object_updates.channelDifferenceTooLong_param_chats_type_Vector<Chat>": "Chats from messages", + "object_updates.channelDifferenceTooLong_param_users_type_Vector<User>": "Users from messages", + "object_updates.channelDifference": "The new updates", + "object_updates.channelDifference_param_final_type_flags.0?true": "Whether there are more updates to be fetched using getDifference, starting from the provided `pts`", + "object_updates.channelDifference_param_pts_type_int": "The [PTS](https:\/\/core.telegram.org\/api\/updates) from which to start getting updates the next time", + "object_updates.channelDifference_param_timeout_type_flags.1?int": "Clients are supposed to refetch the channel difference after timeout seconds have elapsed, if the user is [currently viewing the chat, see here \u00bb](https:\/\/core.telegram.org\/api\/updates#subscribing-to-updates-of-channels-supergroups) for more info.", + "object_updates.channelDifference_param_new_messages_type_Vector<Message>": "New messages", + "object_updates.channelDifference_param_other_updates_type_Vector<Update>": "Other updates", + "object_updates.channelDifference_param_chats_type_Vector<Chat>": "Chats", + "object_updates.channelDifference_param_users_type_Vector<User>": "Users", + "object_channelMessagesFilterEmpty": "No filter", + "object_channelMessagesFilter": "Filter for getting only certain types of channel messages", + "object_channelMessagesFilter_param_exclude_new_messages_type_flags.1?true": "Whether to exclude new messages from the search", + "object_channelMessagesFilter_param_ranges_type_Vector<MessageRange>": "A range of messages to fetch", + "object_channelParticipant": "Channel\/supergroup participant", + "object_channelParticipant_param_user_id_type_long": "Participant user ID", + "object_channelParticipant_param_date_type_int": "Date joined", + "object_channelParticipant_param_subscription_until_date_type_flags.0?int": "If set, contains the expiration date of the current [Telegram Star subscription period \u00bb](https:\/\/core.telegram.org\/api\/stars#star-subscriptions) for the specified participant.", + "object_channelParticipantSelf": "Myself", + "object_channelParticipantSelf_param_via_request_type_flags.0?true": "Whether I joined upon specific approval of an admin", + "object_channelParticipantSelf_param_user_id_type_long": "User ID", + "object_channelParticipantSelf_param_inviter_id_type_long": "User that invited me to the channel\/supergroup", + "object_channelParticipantSelf_param_date_type_int": "When did I join the channel\/supergroup", + "object_channelParticipantSelf_param_subscription_until_date_type_flags.1?int": "If set, contains the expiration date of the current [Telegram Star subscription period \u00bb](https:\/\/core.telegram.org\/api\/stars#star-subscriptions) for the specified participant.", + "object_channelParticipantCreator": "Channel\/supergroup creator", + "object_channelParticipantCreator_param_user_id_type_long": "User ID", + "object_channelParticipantCreator_param_admin_rights_type_ChatAdminRights": "Creator admin rights", + "object_channelParticipantCreator_param_rank_type_flags.0?string": "The role (rank) of the group creator in the group: just an arbitrary string, `admin` by default", + "object_channelParticipantAdmin": "Admin", + "object_channelParticipantAdmin_param_can_edit_type_flags.0?true": "Can this admin promote other admins with the same permissions?", + "object_channelParticipantAdmin_param_self_type_flags.1?true": "Is this the current user", + "object_channelParticipantAdmin_param_user_id_type_long": "Admin user ID", + "object_channelParticipantAdmin_param_inviter_id_type_flags.1?long": "User that invited the admin to the channel\/group", + "object_channelParticipantAdmin_param_promoted_by_type_long": "User that promoted the user to admin", + "object_channelParticipantAdmin_param_date_type_int": "When did the user join", + "object_channelParticipantAdmin_param_admin_rights_type_ChatAdminRights": "Admin [rights](https:\/\/core.telegram.org\/api\/rights)", + "object_channelParticipantAdmin_param_rank_type_flags.2?string": "The role (rank) of the admin in the group: just an arbitrary string, `admin` by default", + "object_channelParticipantBanned": "Banned\/kicked user", + "object_channelParticipantBanned_param_left_type_flags.0?true": "Whether the user has left the group", + "object_channelParticipantBanned_param_peer_type_Peer": "The banned peer", + "object_channelParticipantBanned_param_kicked_by_type_long": "User was kicked by the specified admin", + "object_channelParticipantBanned_param_date_type_int": "When did the user join the group", + "object_channelParticipantBanned_param_banned_rights_type_ChatBannedRights": "Banned [rights](https:\/\/core.telegram.org\/api\/rights)", + "object_channelParticipantLeft": "A participant that left the channel\/supergroup", + "object_channelParticipantLeft_param_peer_type_Peer": "The peer that left", + "object_channelParticipantsRecent": "Fetch only recent participants", + "object_channelParticipantsAdmins": "Fetch only admin participants", + "object_channelParticipantsKicked": "Fetch only kicked participants", + "object_channelParticipantsKicked_param_q_type_string": "Optional filter for searching kicked participants by name (otherwise empty)", + "object_channelParticipantsBots": "Fetch only bot participants", + "object_channelParticipantsBanned": "Fetch only banned participants", + "object_channelParticipantsBanned_param_q_type_string": "Optional filter for searching banned participants by name (otherwise empty)", + "object_channelParticipantsSearch": "Query participants by name", + "object_channelParticipantsSearch_param_q_type_string": "Search query", + "object_channelParticipantsContacts": "Fetch only participants that are also contacts", + "object_channelParticipantsContacts_param_q_type_string": "Optional search query for searching contact participants by name", + "object_channelParticipantsMentions": "This filter is used when looking for supergroup members to mention. \nThis filter will automatically remove anonymous admins, and return even non-participant users that replied to a specific [thread](https:\/\/core.telegram.org\/api\/threads) through the [comment section](https:\/\/core.telegram.org\/api\/threads#channel-comments) of a channel.", + "object_channelParticipantsMentions_param_q_type_flags.0?string": "Filter by user name or username", + "object_channelParticipantsMentions_param_top_msg_id_type_flags.1?int": "Look only for users that posted in this [thread](https:\/\/core.telegram.org\/api\/threads)", + "object_channels.channelParticipants": "Represents multiple channel participants", + "object_channels.channelParticipants_param_count_type_int": "Total number of participants that correspond to the given query", + "object_channels.channelParticipants_param_participants_type_Vector<ChannelParticipant>": "Participants", + "object_channels.channelParticipants_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_channels.channelParticipants_param_users_type_Vector<User>": "Users mentioned in participant info", + "object_channels.channelParticipantsNotModified": "No new participant info could be found", + "object_channels.channelParticipant": "Represents a channel participant", + "object_channels.channelParticipant_param_participant_type_ChannelParticipant": "The channel participant", + "object_channels.channelParticipant_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_channels.channelParticipant_param_users_type_Vector<User>": "Users", + "object_help.termsOfService": "Info about the latest telegram Terms Of Service", + "object_help.termsOfService_param_popup_type_flags.0?true": "Whether a prompt must be showed to the user, in order to accept the new terms.", + "object_help.termsOfService_param_id_type_DataJSON": "ID of the new terms", + "object_help.termsOfService_param_text_type_string": "Text of the new terms", + "object_help.termsOfService_param_entities_type_Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "object_help.termsOfService_param_min_age_confirm_type_flags.1?int": "Minimum age required to sign up to telegram, the user must confirm that they is older than the minimum age.", + "object_messages.savedGifsNotModified": "No new saved gifs were found", + "object_messages.savedGifs": "Saved gifs", + "object_messages.savedGifs_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_messages.savedGifs_param_gifs_type_Vector<Document>": "List of saved gifs", + "object_inputBotInlineMessageMediaAuto": "A media", + "object_inputBotInlineMessageMediaAuto_param_invert_media_type_flags.3?true": "If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.", + "object_inputBotInlineMessageMediaAuto_param_message_type_string": "Caption", + "object_inputBotInlineMessageMediaAuto_param_entities_type_flags.1?Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "object_inputBotInlineMessageMediaAuto_param_reply_markup_type_flags.2?ReplyMarkup": "Inline keyboard", + "object_inputBotInlineMessageText": "Simple text message", + "object_inputBotInlineMessageText_param_no_webpage_type_flags.0?true": "Disable webpage preview", + "object_inputBotInlineMessageText_param_invert_media_type_flags.3?true": "If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.", + "object_inputBotInlineMessageText_param_message_type_string": "Message", + "object_inputBotInlineMessageText_param_entities_type_flags.1?Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "object_inputBotInlineMessageText_param_reply_markup_type_flags.2?ReplyMarkup": "Inline keyboard", + "object_inputBotInlineMessageMediaGeo": "Geolocation", + "object_inputBotInlineMessageMediaGeo_param_geo_point_type_InputGeoPoint": "Geolocation", + "object_inputBotInlineMessageMediaGeo_param_heading_type_flags.0?int": "For [live locations](https:\/\/core.telegram.org\/api\/live-location), a direction in which the location moves, in degrees; 1-360", + "object_inputBotInlineMessageMediaGeo_param_period_type_flags.1?int": "Validity period", + "object_inputBotInlineMessageMediaGeo_param_proximity_notification_radius_type_flags.3?int": "For [live locations](https:\/\/core.telegram.org\/api\/live-location), a maximum distance to another chat member for proximity alerts, in meters (0-100000)", + "object_inputBotInlineMessageMediaGeo_param_reply_markup_type_flags.2?ReplyMarkup": "Reply markup for bot\/inline keyboards", + "object_inputBotInlineMessageMediaVenue": "Venue", + "object_inputBotInlineMessageMediaVenue_param_geo_point_type_InputGeoPoint": "Geolocation", + "object_inputBotInlineMessageMediaVenue_param_title_type_string": "Venue name", + "object_inputBotInlineMessageMediaVenue_param_address_type_string": "Address", + "object_inputBotInlineMessageMediaVenue_param_provider_type_string": "Venue provider: currently only \"foursquare\" and \"gplaces\" (Google Places) need to be supported", + "object_inputBotInlineMessageMediaVenue_param_venue_id_type_string": "Venue ID in the provider's database", + "object_inputBotInlineMessageMediaVenue_param_venue_type_type_string": "Venue type in the provider's database", + "object_inputBotInlineMessageMediaVenue_param_reply_markup_type_flags.2?ReplyMarkup": "Inline keyboard", + "object_inputBotInlineMessageMediaContact": "A contact", + "object_inputBotInlineMessageMediaContact_param_phone_number_type_string": "Phone number", + "object_inputBotInlineMessageMediaContact_param_first_name_type_string": "First name", + "object_inputBotInlineMessageMediaContact_param_last_name_type_string": "Last name", + "object_inputBotInlineMessageMediaContact_param_vcard_type_string": "VCard info", + "object_inputBotInlineMessageMediaContact_param_reply_markup_type_flags.2?ReplyMarkup": "Inline keyboard", + "object_inputBotInlineMessageGame": "A game", + "object_inputBotInlineMessageGame_param_reply_markup_type_flags.2?ReplyMarkup": "Inline keyboard", + "object_inputBotInlineMessageMediaInvoice": "An invoice", + "object_inputBotInlineMessageMediaInvoice_param_title_type_string": "Product name, 1-32 characters", + "object_inputBotInlineMessageMediaInvoice_param_description_type_string": "Product description, 1-255 characters", + "object_inputBotInlineMessageMediaInvoice_param_photo_type_flags.0?InputWebDocument": "Invoice photo", + "object_inputBotInlineMessageMediaInvoice_param_invoice_type_Invoice": "The invoice", + "object_inputBotInlineMessageMediaInvoice_param_payload_type_bytes": "Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes.", + "object_inputBotInlineMessageMediaInvoice_param_provider_type_string": "Payments provider token, obtained via [Botfather](https:\/\/t.me\/botfather)", + "object_inputBotInlineMessageMediaInvoice_param_provider_data_type_DataJSON": "A JSON-serialized object for data about the invoice, which will be shared with the payment provider. A detailed description of the required fields should be provided by the payment provider.", + "object_inputBotInlineMessageMediaInvoice_param_reply_markup_type_flags.2?ReplyMarkup": "Inline keyboard", + "object_inputBotInlineMessageMediaWebPage": "Specifies options that will be used to generate the link preview for the message, or even a standalone link preview without an attached message.", + "object_inputBotInlineMessageMediaWebPage_param_invert_media_type_flags.3?true": "If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.", + "object_inputBotInlineMessageMediaWebPage_param_force_large_media_type_flags.4?true": "If set, specifies that a large media preview should be used.", + "object_inputBotInlineMessageMediaWebPage_param_force_small_media_type_flags.5?true": "If set, specifies that a small media preview should be used.", + "object_inputBotInlineMessageMediaWebPage_param_optional_type_flags.6?true": "If **not** set, a `WEBPAGE_NOT_FOUND` RPC error will be emitted if a webpage preview cannot be generated for the specified `url`; otherwise, no error will be emitted (unless the provided message is also empty, in which case a `MESSAGE_EMPTY` will be emitted, instead).", + "object_inputBotInlineMessageMediaWebPage_param_message_type_string": "The message, can be empty.", + "object_inputBotInlineMessageMediaWebPage_param_entities_type_flags.1?Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "object_inputBotInlineMessageMediaWebPage_param_url_type_string": "The URL to use for the link preview.", + "object_inputBotInlineMessageMediaWebPage_param_reply_markup_type_flags.2?ReplyMarkup": "Inline keyboard", + "object_inputBotInlineResult": "An inline bot result", + "object_inputBotInlineResult_param_id_type_string": "ID of result", + "object_inputBotInlineResult_param_type_type_string": "Result type (see [bot API docs](https:\/\/core.telegram.org\/bots\/api#inlinequeryresult))", + "object_inputBotInlineResult_param_title_type_flags.1?string": "Result title", + "object_inputBotInlineResult_param_description_type_flags.2?string": "Result description", + "object_inputBotInlineResult_param_url_type_flags.3?string": "URL of result", + "object_inputBotInlineResult_param_thumb_type_flags.4?InputWebDocument": "Thumbnail for result", + "object_inputBotInlineResult_param_content_type_flags.5?InputWebDocument": "Result contents", + "object_inputBotInlineResult_param_send_message_type_InputBotInlineMessage": "Message to send when the result is selected", + "object_inputBotInlineResultPhoto": "Photo", + "object_inputBotInlineResultPhoto_param_id_type_string": "Result ID", + "object_inputBotInlineResultPhoto_param_type_type_string": "Result type (see [bot API docs](https:\/\/core.telegram.org\/bots\/api#inlinequeryresult))", + "object_inputBotInlineResultPhoto_param_photo_type_InputPhoto": "Photo to send", + "object_inputBotInlineResultPhoto_param_send_message_type_InputBotInlineMessage": "Message to send when the result is selected", + "object_inputBotInlineResultDocument": "Document (media of any type except for photos)", + "object_inputBotInlineResultDocument_param_id_type_string": "Result ID", + "object_inputBotInlineResultDocument_param_type_type_string": "Result type (see [bot API docs](https:\/\/core.telegram.org\/bots\/api#inlinequeryresult))", + "object_inputBotInlineResultDocument_param_title_type_flags.1?string": "Result title", + "object_inputBotInlineResultDocument_param_description_type_flags.2?string": "Result description", + "object_inputBotInlineResultDocument_param_document_type_InputDocument": "Document to send", + "object_inputBotInlineResultDocument_param_send_message_type_InputBotInlineMessage": "Message to send when the result is selected", + "object_inputBotInlineResultGame": "Game", + "object_inputBotInlineResultGame_param_id_type_string": "Result ID", + "object_inputBotInlineResultGame_param_short_name_type_string": "Game short name", + "object_inputBotInlineResultGame_param_send_message_type_InputBotInlineMessage": "Message to send when the result is selected", + "object_botInlineMessageMediaAuto": "Send whatever media is attached to the [botInlineMediaResult](..\/constructors\/botInlineMediaResult.md)", + "object_botInlineMessageMediaAuto_param_invert_media_type_flags.3?true": "If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.", + "object_botInlineMessageMediaAuto_param_message_type_string": "Caption", + "object_botInlineMessageMediaAuto_param_entities_type_flags.1?Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "object_botInlineMessageMediaAuto_param_reply_markup_type_flags.2?ReplyMarkup": "Inline keyboard", + "object_botInlineMessageText": "Send a simple text message", + "object_botInlineMessageText_param_no_webpage_type_flags.0?true": "Disable webpage preview", + "object_botInlineMessageText_param_invert_media_type_flags.3?true": "If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.", + "object_botInlineMessageText_param_message_type_string": "The message", + "object_botInlineMessageText_param_entities_type_flags.1?Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "object_botInlineMessageText_param_reply_markup_type_flags.2?ReplyMarkup": "Inline keyboard", + "object_botInlineMessageMediaGeo": "Send a geolocation", + "object_botInlineMessageMediaGeo_param_geo_type_GeoPoint": "Geolocation", + "object_botInlineMessageMediaGeo_param_heading_type_flags.0?int": "For [live locations](https:\/\/core.telegram.org\/api\/live-location), a direction in which the location moves, in degrees; 1-360.", + "object_botInlineMessageMediaGeo_param_period_type_flags.1?int": "Validity period", + "object_botInlineMessageMediaGeo_param_proximity_notification_radius_type_flags.3?int": "For [live locations](https:\/\/core.telegram.org\/api\/live-location), a maximum distance to another chat member for proximity alerts, in meters (0-100000).", + "object_botInlineMessageMediaGeo_param_reply_markup_type_flags.2?ReplyMarkup": "Inline keyboard", + "object_botInlineMessageMediaVenue": "Send a venue", + "object_botInlineMessageMediaVenue_param_geo_type_GeoPoint": "Geolocation of venue", + "object_botInlineMessageMediaVenue_param_title_type_string": "Venue name", + "object_botInlineMessageMediaVenue_param_address_type_string": "Address", + "object_botInlineMessageMediaVenue_param_provider_type_string": "Venue provider: currently only \"foursquare\" and \"gplaces\" (Google Places) need to be supported", + "object_botInlineMessageMediaVenue_param_venue_id_type_string": "Venue ID in the provider's database", + "object_botInlineMessageMediaVenue_param_venue_type_type_string": "Venue type in the provider's database", + "object_botInlineMessageMediaVenue_param_reply_markup_type_flags.2?ReplyMarkup": "Inline keyboard", + "object_botInlineMessageMediaContact": "Send a contact", + "object_botInlineMessageMediaContact_param_phone_number_type_string": "Phone number", + "object_botInlineMessageMediaContact_param_first_name_type_string": "First name", + "object_botInlineMessageMediaContact_param_last_name_type_string": "Last name", + "object_botInlineMessageMediaContact_param_vcard_type_string": "VCard info", + "object_botInlineMessageMediaContact_param_reply_markup_type_flags.2?ReplyMarkup": "Inline keyboard", + "object_botInlineMessageMediaInvoice": "Send an invoice", + "object_botInlineMessageMediaInvoice_param_shipping_address_requested_type_flags.1?true": "Set this flag if you require the user's shipping address to complete the order", + "object_botInlineMessageMediaInvoice_param_test_type_flags.3?true": "Test invoice", + "object_botInlineMessageMediaInvoice_param_title_type_string": "Product name, 1-32 characters", + "object_botInlineMessageMediaInvoice_param_description_type_string": "Product description, 1-255 characters", + "object_botInlineMessageMediaInvoice_param_photo_type_flags.0?WebDocument": "Product photo", + "object_botInlineMessageMediaInvoice_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code, or `XTR` for [Telegram Stars](https:\/\/core.telegram.org\/api\/stars).", + "object_botInlineMessageMediaInvoice_param_total_amount_type_long": "Total price in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_botInlineMessageMediaInvoice_param_reply_markup_type_flags.2?ReplyMarkup": "Inline keyboard", + "object_botInlineMessageMediaWebPage": "Specifies options that must be used to generate the link preview for the message, or even a standalone link preview without an attached message.", + "object_botInlineMessageMediaWebPage_param_invert_media_type_flags.3?true": "If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.", + "object_botInlineMessageMediaWebPage_param_force_large_media_type_flags.4?true": "If set, specifies that a large media preview should be used.", + "object_botInlineMessageMediaWebPage_param_force_small_media_type_flags.5?true": "If set, specifies that a small media preview should be used.", + "object_botInlineMessageMediaWebPage_param_manual_type_flags.7?true": "If set, indicates that the URL used for the webpage preview was specified manually using [inputMediaWebPage](..\/constructors\/inputMediaWebPage.md), and may not be related to any of the URLs specified in the message.", + "object_botInlineMessageMediaWebPage_param_safe_type_flags.8?true": "If set, the link can be opened directly without user confirmation.", + "object_botInlineMessageMediaWebPage_param_message_type_string": "The message, can be empty.", + "object_botInlineMessageMediaWebPage_param_entities_type_flags.1?Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "object_botInlineMessageMediaWebPage_param_url_type_string": "The URL to use for the link preview.", + "object_botInlineMessageMediaWebPage_param_reply_markup_type_flags.2?ReplyMarkup": "Reply markup for sending bot buttons", + "object_botInlineResult": "Generic result", + "object_botInlineResult_param_id_type_string": "Result ID", + "object_botInlineResult_param_type_type_string": "Result type (see [bot API docs](https:\/\/core.telegram.org\/bots\/api#inlinequeryresult))", + "object_botInlineResult_param_title_type_flags.1?string": "Result title", + "object_botInlineResult_param_description_type_flags.2?string": "Result description", + "object_botInlineResult_param_url_type_flags.3?string": "URL of article or webpage", + "object_botInlineResult_param_thumb_type_flags.4?WebDocument": "Thumbnail for the result", + "object_botInlineResult_param_content_type_flags.5?WebDocument": "Content of the result", + "object_botInlineResult_param_send_message_type_BotInlineMessage": "Message to send", + "object_botInlineMediaResult": "Media result", + "object_botInlineMediaResult_param_id_type_string": "Result ID", + "object_botInlineMediaResult_param_type_type_string": "Result type (see [bot API docs](https:\/\/core.telegram.org\/bots\/api#inlinequeryresult))", + "object_botInlineMediaResult_param_photo_type_flags.0?Photo": "If type is `photo`, the photo to send", + "object_botInlineMediaResult_param_document_type_flags.1?Document": "If type is `document`, the document to send", + "object_botInlineMediaResult_param_title_type_flags.2?string": "Result title", + "object_botInlineMediaResult_param_description_type_flags.3?string": "Description", + "object_botInlineMediaResult_param_send_message_type_BotInlineMessage": "Depending on the `type` and on the [constructor](..\/types\/BotInlineMessage.md), contains the caption of the media or the content of the message to be sent **instead** of the media", + "object_messages.botResults": "Result of a query to an inline bot", + "object_messages.botResults_param_gallery_type_flags.0?true": "Whether the result is a picture gallery", + "object_messages.botResults_param_query_id_type_long": "Query ID", + "object_messages.botResults_param_next_offset_type_flags.1?string": "The next offset to use when navigating through results", + "object_messages.botResults_param_switch_pm_type_flags.2?InlineBotSwitchPM": "Shown as a button on top of the remaining inline result list; if clicked, redirects the user to a private chat with the bot with the specified start parameter.", + "object_messages.botResults_param_switch_webview_type_flags.3?InlineBotWebView": "Shown as a button on top of the remaining inline result list; if clicked, opens the specified [inline mode mini app](https:\/\/core.telegram.org\/api\/bots\/webapps#inline-mode-mini-apps).", + "object_messages.botResults_param_results_type_Vector<BotInlineResult>": "The results", + "object_messages.botResults_param_cache_time_type_int": "Caching validity of the results", + "object_messages.botResults_param_users_type_Vector<User>": "Users mentioned in the results", + "object_exportedMessageLink": "Link to a message in a supergroup\/channel", + "object_exportedMessageLink_param_link_type_string": "URL", + "object_exportedMessageLink_param_html_type_string": "Embed code", + "object_messageFwdHeader": "Info about a forwarded message", + "object_messageFwdHeader_param_imported_type_flags.7?true": "Whether this message was [imported from a foreign chat service, click here for more info \u00bb](https:\/\/core.telegram.org\/api\/import)", + "object_messageFwdHeader_param_saved_out_type_flags.11?true": "Only for messages forwarded to [saved messages \u00bb](https:\/\/core.telegram.org\/api\/saved-messages), set if the original message was outgoing (though the message may have been originally outgoing even if this flag is not set, if `from_id` points to the current user).", + "object_messageFwdHeader_param_from_id_type_flags.0?Peer": "The ID of the user that originally sent the message", + "object_messageFwdHeader_param_from_name_type_flags.5?string": "The name of the user that originally sent the message", + "object_messageFwdHeader_param_date_type_int": "When was the message originally sent", + "object_messageFwdHeader_param_channel_post_type_flags.2?int": "ID of the channel message that was forwarded", + "object_messageFwdHeader_param_post_author_type_flags.3?string": "For channels and if signatures are enabled, author of the channel message", + "object_messageFwdHeader_param_saved_from_peer_type_flags.4?Peer": "Only for messages forwarded to [saved messages \u00bb](https:\/\/core.telegram.org\/api\/saved-messages), contains the dialog where the message was originally sent.", + "object_messageFwdHeader_param_saved_from_msg_id_type_flags.4?int": "Only for messages forwarded to [saved messages \u00bb](https:\/\/core.telegram.org\/api\/saved-messages), contains the original ID of the message in `saved_from_peer`.", + "object_messageFwdHeader_param_saved_from_id_type_flags.8?Peer": "Only for forwarded messages reforwarded to [saved messages \u00bb](https:\/\/core.telegram.org\/api\/saved-messages), contains the sender of the original message (i.e. if user A sends a message, then user B forwards it somewhere, then user C saves it to saved messages, this field will contain the ID of user B and `from_id` will contain the ID of user A).", + "object_messageFwdHeader_param_saved_from_name_type_flags.9?string": "Only for forwarded messages from users with forward privacy enabled, sent by users with forward privacy enabled, reforwarded to [saved messages \u00bb](https:\/\/core.telegram.org\/api\/saved-messages), contains the sender of the original message (i.e. if user A (fwd privacy enabled) sends a message, then user B (fwd privacy enabled) forwards it somewhere, then user C saves it to saved messages, this field will contain the name of user B and `from_name` will contain the name of user A).", + "object_messageFwdHeader_param_saved_date_type_flags.10?int": "Only for forwarded messages reforwarded to [saved messages \u00bb](https:\/\/core.telegram.org\/api\/saved-messages), indicates when was the original message sent (i.e. if user A sends a message @ unixtime 1, then user B forwards it somewhere @ unixtime 2, then user C saves it to saved messages @ unixtime 3, this field will contain 2, `date` will contain 1 and the `date` of the containing [message](..\/constructors\/message.md) will contain 3).", + "object_messageFwdHeader_param_psa_type_type_flags.6?string": "PSA type", + "object_auth.codeTypeSms": "The next time, the authentication code will be delivered via an immediately canceled incoming call.", + "object_auth.codeTypeCall": "The next time, the authentication code is to be delivered via an outgoing phone call.", + "object_auth.codeTypeFlashCall": "The next time, the authentication code will be delivered via an immediately canceled incoming call.", + "object_auth.codeTypeMissedCall": "The next time, the authentication code will be delivered via an immediately canceled incoming call, handled manually by the user.", + "object_auth.codeTypeFragmentSms": "The next time, the authentication code will be delivered via [fragment.com](https:\/\/fragment.com)", + "object_auth.sentCodeTypeApp": "The code was sent through the telegram app", + "object_auth.sentCodeTypeApp_param_length_type_int": "Length of the code in bytes", + "object_auth.sentCodeTypeSms": "The code was sent via SMS", + "object_auth.sentCodeTypeSms_param_length_type_int": "Length of the code in bytes", + "object_auth.sentCodeTypeCall": "The code will be sent via a phone call: a synthesized voice will tell the user which verification code to input.", + "object_auth.sentCodeTypeCall_param_length_type_int": "Length of the verification code", + "object_auth.sentCodeTypeFlashCall": "The code will be sent via a flash phone call, that will be closed immediately. The phone code will then be the phone number itself, just make sure that the phone number matches the specified pattern.", + "object_auth.sentCodeTypeFlashCall_param_pattern_type_string": "[pattern](https:\/\/core.telegram.org\/api\/pattern) to match", + "object_auth.sentCodeTypeMissedCall": "The code will be sent via a flash phone call, that will be closed immediately. The last digits of the phone number that calls are the code that must be entered manually by the user.", + "object_auth.sentCodeTypeMissedCall_param_prefix_type_string": "Prefix of the phone number from which the call will be made", + "object_auth.sentCodeTypeMissedCall_param_length_type_int": "Length of the verification code", + "object_auth.sentCodeTypeEmailCode": "The code was sent via the [previously configured login email \u00bb](https:\/\/core.telegram.org\/api\/auth#email-verification)", + "object_auth.sentCodeTypeEmailCode_param_apple_signin_allowed_type_flags.0?true": "Whether authorization through Apple ID is allowed", + "object_auth.sentCodeTypeEmailCode_param_google_signin_allowed_type_flags.1?true": "Whether authorization through Google ID is allowed", + "object_auth.sentCodeTypeEmailCode_param_email_pattern_type_string": "[Pattern](https:\/\/core.telegram.org\/api\/pattern) of the email", + "object_auth.sentCodeTypeEmailCode_param_length_type_int": "Length of the sent verification code", + "object_auth.sentCodeTypeEmailCode_param_reset_available_period_type_flags.3?int": "Clients should wait for the specified amount of seconds before allowing the user to invoke [auth.resetLoginEmail](..\/methods\/auth.resetLoginEmail.md) (will be 0 for [Premium](https:\/\/core.telegram.org\/api\/premium) users).", + "object_auth.sentCodeTypeEmailCode_param_reset_pending_date_type_flags.4?int": "An email reset was already requested, and will occur at the specified date.", + "object_auth.sentCodeTypeSetUpEmailRequired": "The user should add and verify an email address in order to login as described [here \u00bb](https:\/\/core.telegram.org\/api\/auth#email-verification).", + "object_auth.sentCodeTypeSetUpEmailRequired_param_apple_signin_allowed_type_flags.0?true": "Whether authorization through Apple ID is allowed", + "object_auth.sentCodeTypeSetUpEmailRequired_param_google_signin_allowed_type_flags.1?true": "Whether authorization through Google ID is allowed", + "object_auth.sentCodeTypeFragmentSms": "The code was delivered via [fragment.com](https:\/\/fragment.com).", + "object_auth.sentCodeTypeFragmentSms_param_url_type_string": "Open the specified URL to log into [fragment.com](https:\/\/fragment.com) with the wallet that owns the specified phone number and view the code.", + "object_auth.sentCodeTypeFragmentSms_param_length_type_int": "Length of the delivered code.", + "object_auth.sentCodeTypeFirebaseSms": "An authentication code should be delivered via SMS after Firebase attestation, as described in the [auth documentation \u00bb](https:\/\/core.telegram.org\/api\/auth).", + "object_auth.sentCodeTypeFirebaseSms_param_nonce_type_flags.0?bytes": "On Android, the nonce to be used as described in the [auth documentation \u00bb](https:\/\/core.telegram.org\/api\/auth)", + "object_auth.sentCodeTypeFirebaseSms_param_play_integrity_project_id_type_flags.2?long": "Google Play Integrity project ID", + "object_auth.sentCodeTypeFirebaseSms_param_play_integrity_nonce_type_flags.2?bytes": "Play Integrity API nonce", + "object_auth.sentCodeTypeFirebaseSms_param_receipt_type_flags.1?string": "On iOS, must be compared with the `receipt` extracted from the received push notification.", + "object_auth.sentCodeTypeFirebaseSms_param_push_timeout_type_flags.1?int": "On iOS: if a push notification with the `ios_push_secret` isn't received within `push_timeout` seconds, the `next_type` authentication method must be used, with [auth.resendCode](..\/methods\/auth.resendCode.md).", + "object_auth.sentCodeTypeFirebaseSms_param_length_type_int": "Length of the code that will be delivered.", + "object_auth.sentCodeTypeSmsWord": "The code was sent via SMS as a secret word, starting with the letter specified in `beginning`", + "object_auth.sentCodeTypeSmsWord_param_beginning_type_flags.0?string": "If set, the secret word in the sent SMS (which may contain multiple words) starts with this letter.", + "object_auth.sentCodeTypeSmsPhrase": "The code was sent via SMS as a secret phrase starting with the word specified in `beginning`", + "object_auth.sentCodeTypeSmsPhrase_param_beginning_type_flags.0?string": "If set, the secret phrase (and the SMS) starts with this word.", + "object_messages.botCallbackAnswer": "Callback answer sent by the bot in response to a button press", + "object_messages.botCallbackAnswer_param_alert_type_flags.1?true": "Whether an alert should be shown to the user instead of a toast notification", + "object_messages.botCallbackAnswer_param_has_url_type_flags.3?true": "Whether an URL is present", + "object_messages.botCallbackAnswer_param_native_ui_type_flags.4?true": "Whether to show games in WebView or in native UI.", + "object_messages.botCallbackAnswer_param_message_type_flags.0?string": "Alert to show", + "object_messages.botCallbackAnswer_param_url_type_flags.2?string": "URL to open", + "object_messages.botCallbackAnswer_param_cache_time_type_int": "For how long should this answer be cached", + "object_messages.messageEditData": "Message edit data for media", + "object_messages.messageEditData_param_caption_type_flags.0?true": "Media caption, if the specified media's caption can be edited", + "object_inputBotInlineMessageID": "Represents a sent inline message from the perspective of a bot (legacy constructor)", + "object_inputBotInlineMessageID_param_dc_id_type_int": "DC ID to use when working with this inline message", + "object_inputBotInlineMessageID_param_id_type_long": "ID of message, contains both the (32-bit, legacy) owner ID and the message ID, used only for Bot API backwards compatibility with 32-bit user ID.", + "object_inputBotInlineMessageID_param_access_hash_type_long": "Access hash of message", + "object_inputBotInlineMessageID64": "Represents a sent inline message from the perspective of a bot", + "object_inputBotInlineMessageID64_param_dc_id_type_int": "DC ID to use when working with this inline message", + "object_inputBotInlineMessageID64_param_owner_id_type_long": "ID of the owner of this message", + "object_inputBotInlineMessageID64_param_id_type_int": "ID of message", + "object_inputBotInlineMessageID64_param_access_hash_type_long": "Access hash of message", + "object_inlineBotSwitchPM": "The bot requested the user to message them in private", + "object_inlineBotSwitchPM_param_text_type_string": "Text for the button that switches the user to a private chat with the bot and sends the bot a start message with the parameter `start_parameter` (can be empty)", + "object_inlineBotSwitchPM_param_start_param_type_string": "The parameter for the `\/start parameter`", + "object_messages.peerDialogs": "Dialog info of multiple peers", + "object_messages.peerDialogs_param_dialogs_type_Vector<Dialog>": "Dialog info", + "object_messages.peerDialogs_param_messages_type_Vector<Message>": "Messages mentioned in dialog info", + "object_messages.peerDialogs_param_chats_type_Vector<Chat>": "Chats", + "object_messages.peerDialogs_param_users_type_Vector<User>": "Users", + "object_messages.peerDialogs_param_state_type_updates.State": "Current [update state of dialog](https:\/\/core.telegram.org\/api\/updates)", + "object_topPeer": "Top peer", + "object_topPeer_param_peer_type_Peer": "Peer", + "object_topPeer_param_rating_type_double": "Rating as computed in [top peer rating \u00bb](https:\/\/core.telegram.org\/api\/top-rating)", + "object_topPeerCategoryBotsPM": "Most used bots", + "object_topPeerCategoryBotsInline": "Most used inline bots", + "object_topPeerCategoryCorrespondents": "Users we've chatted most frequently with", + "object_topPeerCategoryGroups": "Often-opened groups and supergroups", + "object_topPeerCategoryChannels": "Most frequently visited channels", + "object_topPeerCategoryPhoneCalls": "Most frequently called users", + "object_topPeerCategoryForwardUsers": "Users to which the users often forwards messages to", + "object_topPeerCategoryForwardChats": "Chats to which the users often forwards messages to", + "object_topPeerCategoryBotsApp": "Most frequently used [Main Mini Bot Apps](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-apps).", + "object_topPeerCategoryPeers": "Top peer category", + "object_topPeerCategoryPeers_param_category_type_TopPeerCategory": "Top peer category of peers", + "object_topPeerCategoryPeers_param_count_type_int": "Count of peers", + "object_topPeerCategoryPeers_param_peers_type_Vector<TopPeer>": "Peers", + "object_contacts.topPeersNotModified": "Top peer info hasn't changed", + "object_contacts.topPeers": "Top peers", + "object_contacts.topPeers_param_categories_type_Vector<TopPeerCategoryPeers>": "Top peers by top peer category", + "object_contacts.topPeers_param_chats_type_Vector<Chat>": "Chats", + "object_contacts.topPeers_param_users_type_Vector<User>": "Users", + "object_contacts.topPeersDisabled": "Top peers disabled", + "object_draftMessageEmpty": "Empty draft", + "object_draftMessageEmpty_param_date_type_flags.0?int": "When was the draft last updated", + "object_draftMessage": "Represents a message [draft](https:\/\/core.telegram.org\/api\/drafts).", + "object_draftMessage_param_no_webpage_type_flags.1?true": "Whether no webpage preview will be generated", + "object_draftMessage_param_invert_media_type_flags.6?true": "If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.", + "object_draftMessage_param_reply_to_type_flags.4?InputReplyTo": "If set, indicates that the message should be sent in reply to the specified message or story.", + "object_draftMessage_param_message_type_string": "The draft", + "object_draftMessage_param_entities_type_flags.3?Vector<MessageEntity>": "Message [entities](https:\/\/core.telegram.org\/api\/entities) for styled text.", + "object_draftMessage_param_media_type_flags.5?InputMedia": "Media.", + "object_draftMessage_param_date_type_int": "Date of last update of the draft.", + "object_draftMessage_param_effect_type_flags.7?long": "A [message effect that should be played as specified here \u00bb](https:\/\/core.telegram.org\/api\/effects).", + "object_draftMessage_param_suggested_post_type_flags.8?SuggestedPost": "Used to [suggest a post to a channel, see here \u00bb](https:\/\/core.telegram.org\/api\/suggested-posts) for more info on the full flow.", + "object_messages.featuredStickersNotModified": "Featured stickers haven't changed", + "object_messages.featuredStickersNotModified_param_count_type_int": "Total number of featured stickers", + "object_messages.featuredStickers": "Featured stickersets", + "object_messages.featuredStickers_param_premium_type_flags.0?true": "Whether this is a premium stickerset", + "object_messages.featuredStickers_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_messages.featuredStickers_param_count_type_int": "Total number of featured stickers", + "object_messages.featuredStickers_param_sets_type_Vector<StickerSetCovered>": "Featured stickersets", + "object_messages.featuredStickers_param_unread_type_Vector<long>": "IDs of new featured stickersets", + "object_messages.recentStickersNotModified": "No new recent sticker was found", + "object_messages.recentStickers": "Recently used stickers", + "object_messages.recentStickers_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_messages.recentStickers_param_packs_type_Vector<StickerPack>": "Emojis associated to stickers", + "object_messages.recentStickers_param_stickers_type_Vector<Document>": "Recent stickers", + "object_messages.recentStickers_param_dates_type_Vector<int>": "When was each sticker last used", + "object_messages.archivedStickers": "Archived stickersets", + "object_messages.archivedStickers_param_count_type_int": "Number of archived stickers", + "object_messages.archivedStickers_param_sets_type_Vector<StickerSetCovered>": "Archived stickersets", + "object_messages.stickerSetInstallResultSuccess": "The stickerset was installed successfully", + "object_messages.stickerSetInstallResultArchive": "The stickerset was installed, but since there are too many stickersets some were archived", + "object_messages.stickerSetInstallResultArchive_param_sets_type_Vector<StickerSetCovered>": "Archived stickersets", + "object_stickerSetCovered": "Stickerset with a single sticker as preview", + "object_stickerSetCovered_param_set_type_StickerSet": "Stickerset", + "object_stickerSetCovered_param_cover_type_Document": "Preview", + "object_stickerSetMultiCovered": "Stickerset, with multiple stickers as preview", + "object_stickerSetMultiCovered_param_set_type_StickerSet": "Stickerset", + "object_stickerSetMultiCovered_param_covers_type_Vector<Document>": "Preview stickers", + "object_stickerSetFullCovered": "Stickerset preview with all stickers of the stickerset included. \nCurrently used only for [custom emoji stickersets](https:\/\/core.telegram.org\/api\/custom-emoji), to avoid a further call to [messages.getStickerSet](..\/methods\/messages.getStickerSet.md).", + "object_stickerSetFullCovered_param_set_type_StickerSet": "Stickerset", + "object_stickerSetFullCovered_param_packs_type_Vector<StickerPack>": "Emoji information about every sticker in the stickerset", + "object_stickerSetFullCovered_param_keywords_type_Vector<StickerKeyword>": "Keywords for some or every sticker in the stickerset.", + "object_stickerSetFullCovered_param_documents_type_Vector<Document>": "Stickers", + "object_stickerSetNoCovered": "Just the stickerset information, with no previews.", + "object_stickerSetNoCovered_param_set_type_StickerSet": "Stickerset information.", + "object_maskCoords": "Position on a photo where a mask should be placed when [attaching stickers to media \u00bb](https:\/\/core.telegram.org\/api\/stickers#attached-stickers)\n\nThe `n` position indicates where the mask should be placed:\n\n- 0 => Relative to the forehead\n- 1 => Relative to the eyes\n- 2 => Relative to the mouth\n- 3 => Relative to the chin", + "object_maskCoords_param_n_type_int": "Part of the face, relative to which the mask should be placed", + "object_maskCoords_param_x_type_double": "Shift by X-axis measured in widths of the mask scaled to the face size, from left to right. (For example, -1.0 will place the mask just to the left of the default mask position)", + "object_maskCoords_param_y_type_double": "Shift by Y-axis measured in widths of the mask scaled to the face size, from left to right. (For example, -1.0 will place the mask just below the default mask position)", + "object_maskCoords_param_zoom_type_double": "Mask scaling coefficient. (For example, 2.0 means a doubled size)", + "object_inputStickeredMediaPhoto": "A photo with stickers attached", + "object_inputStickeredMediaPhoto_param_id_type_InputPhoto": "The photo", + "object_inputStickeredMediaDocument": "A document with stickers attached", + "object_inputStickeredMediaDocument_param_id_type_InputDocument": "The document", + "object_game": "Indicates an already sent game", + "object_game_param_id_type_long": "ID of the game", + "object_game_param_access_hash_type_long": "Access hash of the game", + "object_game_param_short_name_type_string": "Short name for the game", + "object_game_param_title_type_string": "Title of the game", + "object_game_param_description_type_string": "Game description", + "object_game_param_photo_type_Photo": "Game preview", + "object_game_param_document_type_flags.0?Document": "Optional attached document", + "object_inputGameID": "Indicates an already sent game", + "object_inputGameID_param_id_type_long": "game ID from [Game](..\/types\/Game.md) constructor", + "object_inputGameID_param_access_hash_type_long": "access hash from [Game](..\/types\/Game.md) constructor", + "object_inputGameShortName": "Game by short name", + "object_inputGameShortName_param_bot_id_type_InputUser": "The bot that provides the game", + "object_inputGameShortName_param_short_name_type_string": "The game's short name, usually obtained from a [game link \u00bb](https:\/\/core.telegram.org\/api\/links#game-links)", + "object_highScore": "Game highscore", + "object_highScore_param_pos_type_int": "Position in highscore list", + "object_highScore_param_user_id_type_long": "User ID", + "object_highScore_param_score_type_int": "Score", + "object_messages.highScores": "Highscores in a game", + "object_messages.highScores_param_scores_type_Vector<HighScore>": "Highscores", + "object_messages.highScores_param_users_type_Vector<User>": "Users, associated to the highscores", + "object_textEmpty": "Empty rich text element", + "object_textPlain": "Plain text", + "object_textPlain_param_text_type_string": "Text", + "object_textBold": "**Bold** text", + "object_textBold_param_text_type_RichText": "Text", + "object_textItalic": "*Italic* text", + "object_textItalic_param_text_type_RichText": "Text", + "object_textUnderline": "Underlined text", + "object_textUnderline_param_text_type_RichText": "Text", + "object_textStrike": "Strikethrough<\/del> text", + "object_textStrike_param_text_type_RichText": "Text", + "object_textFixed": "`fixed-width` rich text", + "object_textFixed_param_text_type_RichText": "Text", + "object_textUrl": "Link", + "object_textUrl_param_text_type_RichText": "Text of link", + "object_textUrl_param_url_type_string": "Webpage HTTP URL", + "object_textUrl_param_webpage_id_type_long": "If a preview was already generated for the page, the page ID", + "object_textEmail": "Rich text email link", + "object_textEmail_param_text_type_RichText": "Link text", + "object_textEmail_param_email_type_string": "Email address", + "object_textConcat": "Concatenation of rich texts", + "object_textConcat_param_texts_type_Vector<RichText>": "Concatenated rich texts", + "object_textSubscript": "Subscript text", + "object_textSubscript_param_text_type_RichText": "Text", + "object_textSuperscript": "Superscript text", + "object_textSuperscript_param_text_type_RichText": "Text", + "object_textMarked": "Highlighted text", + "object_textMarked_param_text_type_RichText": "Text", + "object_textPhone": "Rich text linked to a phone number", + "object_textPhone_param_text_type_RichText": "Text", + "object_textPhone_param_phone_type_string": "Phone number", + "object_textImage": "Inline image", + "object_textImage_param_document_id_type_long": "Document ID", + "object_textImage_param_w_type_int": "Width", + "object_textImage_param_h_type_int": "Height", + "object_textAnchor": "Text linking to another section of the page", + "object_textAnchor_param_text_type_RichText": "Text", + "object_textAnchor_param_name_type_string": "Section name", + "object_pageBlockUnsupported": "Unsupported IV element", + "object_pageBlockTitle": "Title", + "object_pageBlockTitle_param_text_type_RichText": "Title", + "object_pageBlockSubtitle": "Subtitle", + "object_pageBlockSubtitle_param_text_type_RichText": "Text", + "object_pageBlockAuthorDate": "Author and date of creation of article", + "object_pageBlockAuthorDate_param_author_type_RichText": "Author name", + "object_pageBlockAuthorDate_param_published_date_type_int": "Date of publication", + "object_pageBlockHeader": "Page header", + "object_pageBlockHeader_param_text_type_RichText": "Contents", + "object_pageBlockSubheader": "Subheader", + "object_pageBlockSubheader_param_text_type_RichText": "Subheader", + "object_pageBlockParagraph": "A paragraph", + "object_pageBlockParagraph_param_text_type_RichText": "Text", + "object_pageBlockPreformatted": "Preformatted (`
` text)",
+    "object_pageBlockPreformatted_param_text_type_RichText": "Text",
+    "object_pageBlockPreformatted_param_language_type_string": "Programming language of preformatted text",
+    "object_pageBlockFooter": "Page footer",
+    "object_pageBlockFooter_param_text_type_RichText": "Contents",
+    "object_pageBlockDivider": "An empty block separating a page",
+    "object_pageBlockAnchor": "Link to section within the page itself (like `anchor<\/a>`)",
+    "object_pageBlockAnchor_param_name_type_string": "Name of target section",
+    "object_pageBlockList": "Unordered list of IV blocks",
+    "object_pageBlockList_param_items_type_Vector<PageListItem>": "List of blocks in an IV page",
+    "object_pageBlockBlockquote": "Quote (equivalent to the HTML `
`)", + "object_pageBlockBlockquote_param_text_type_RichText": "Quote contents", + "object_pageBlockBlockquote_param_caption_type_RichText": "Caption", + "object_pageBlockPullquote": "Pullquote", + "object_pageBlockPullquote_param_text_type_RichText": "Text", + "object_pageBlockPullquote_param_caption_type_RichText": "Caption", + "object_pageBlockPhoto": "A photo", + "object_pageBlockPhoto_param_photo_id_type_long": "Photo ID", + "object_pageBlockPhoto_param_caption_type_PageCaption": "Caption", + "object_pageBlockPhoto_param_url_type_flags.0?string": "HTTP URL of page the photo leads to when clicked", + "object_pageBlockPhoto_param_webpage_id_type_flags.0?long": "ID of preview of the page the photo leads to when clicked", + "object_pageBlockVideo": "Video", + "object_pageBlockVideo_param_autoplay_type_flags.0?true": "Whether the video is set to autoplay", + "object_pageBlockVideo_param_loop_type_flags.1?true": "Whether the video is set to loop", + "object_pageBlockVideo_param_video_id_type_long": "Video ID", + "object_pageBlockVideo_param_caption_type_PageCaption": "Caption", + "object_pageBlockCover": "A page cover", + "object_pageBlockCover_param_cover_type_PageBlock": "Cover", + "object_pageBlockEmbed": "An embedded webpage", + "object_pageBlockEmbed_param_full_width_type_flags.0?true": "Whether the block should be full width", + "object_pageBlockEmbed_param_allow_scrolling_type_flags.3?true": "Whether scrolling should be allowed", + "object_pageBlockEmbed_param_url_type_flags.1?string": "Web page URL, if available", + "object_pageBlockEmbed_param_html_type_flags.2?string": "HTML-markup of the embedded page", + "object_pageBlockEmbed_param_poster_photo_id_type_flags.4?long": "Poster photo, if available", + "object_pageBlockEmbed_param_w_type_flags.5?int": "Block width, if known", + "object_pageBlockEmbed_param_h_type_flags.5?int": "Block height, if known", + "object_pageBlockEmbed_param_caption_type_PageCaption": "Caption", + "object_pageBlockEmbedPost": "An embedded post", + "object_pageBlockEmbedPost_param_url_type_string": "Web page URL", + "object_pageBlockEmbedPost_param_webpage_id_type_long": "ID of generated webpage preview", + "object_pageBlockEmbedPost_param_author_photo_id_type_long": "ID of the author's photo", + "object_pageBlockEmbedPost_param_author_type_string": "Author name", + "object_pageBlockEmbedPost_param_date_type_int": "Creation date", + "object_pageBlockEmbedPost_param_blocks_type_Vector<PageBlock>": "Post contents", + "object_pageBlockEmbedPost_param_caption_type_PageCaption": "Caption", + "object_pageBlockCollage": "Collage of media", + "object_pageBlockCollage_param_items_type_Vector<PageBlock>": "Media elements", + "object_pageBlockCollage_param_caption_type_PageCaption": "Caption", + "object_pageBlockSlideshow": "Slideshow", + "object_pageBlockSlideshow_param_items_type_Vector<PageBlock>": "Slideshow items", + "object_pageBlockSlideshow_param_caption_type_PageCaption": "Caption", + "object_pageBlockChannel": "Reference to a telegram channel", + "object_pageBlockChannel_param_channel_type_Chat": "The channel\/supergroup\/chat", + "object_pageBlockAudio": "Audio", + "object_pageBlockAudio_param_audio_id_type_long": "Audio ID (to be fetched from the container [page](..\/constructors\/page.md) constructor", + "object_pageBlockAudio_param_caption_type_PageCaption": "Audio caption", + "object_pageBlockKicker": "Kicker", + "object_pageBlockKicker_param_text_type_RichText": "Contents", + "object_pageBlockTable": "Table", + "object_pageBlockTable_param_bordered_type_flags.0?true": "Does the table have a visible border?", + "object_pageBlockTable_param_striped_type_flags.1?true": "Is the table striped?", + "object_pageBlockTable_param_title_type_RichText": "Title", + "object_pageBlockTable_param_rows_type_Vector<PageTableRow>": "Table rows", + "object_pageBlockOrderedList": "Ordered list of IV blocks", + "object_pageBlockOrderedList_param_items_type_Vector<PageListOrderedItem>": "List items", + "object_pageBlockDetails": "A collapsible details block", + "object_pageBlockDetails_param_open_type_flags.0?true": "Whether the block is open by default", + "object_pageBlockDetails_param_blocks_type_Vector<PageBlock>": "Block contents", + "object_pageBlockDetails_param_title_type_RichText": "Always visible heading for the block", + "object_pageBlockRelatedArticles": "Related articles", + "object_pageBlockRelatedArticles_param_title_type_RichText": "Title", + "object_pageBlockRelatedArticles_param_articles_type_Vector<PageRelatedArticle>": "Related articles", + "object_pageBlockMap": "A map", + "object_pageBlockMap_param_geo_type_GeoPoint": "Location of the map center", + "object_pageBlockMap_param_zoom_type_int": "Map zoom level; 13-20", + "object_pageBlockMap_param_w_type_int": "Map width in pixels before applying scale; 16-102", + "object_pageBlockMap_param_h_type_int": "Map height in pixels before applying scale; 16-1024", + "object_pageBlockMap_param_caption_type_PageCaption": "Caption", + "object_phoneCallDiscardReasonMissed": "The phone call was missed", + "object_phoneCallDiscardReasonDisconnect": "The phone call was disconnected", + "object_phoneCallDiscardReasonHangup": "The phone call was ended normally", + "object_phoneCallDiscardReasonBusy": "The phone call was discarded because the user is busy in another call", + "object_phoneCallDiscardReasonMigrateConferenceCall": "This phone call was migrated to a [conference call](https:\/\/core.telegram.org\/api\/end-to-end\/group-calls).", + "object_phoneCallDiscardReasonMigrateConferenceCall_param_slug_type_string": "[Conference link \u00bb](https:\/\/core.telegram.org\/api\/links#conference-links) slug.", + "object_dataJSON": "Represents a json-encoded object", + "object_dataJSON_param_data_type_string": "JSON-encoded object", + "object_labeledPrice": "This object represents a portion of the price for goods or services.", + "object_labeledPrice_param_label_type_string": "Portion label", + "object_labeledPrice_param_amount_type_long": "Price of the product in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_invoice": "Invoice", + "object_invoice_param_test_type_flags.0?true": "Test invoice", + "object_invoice_param_name_requested_type_flags.1?true": "Set this flag if you require the user's full name to complete the order", + "object_invoice_param_phone_requested_type_flags.2?true": "Set this flag if you require the user's phone number to complete the order", + "object_invoice_param_email_requested_type_flags.3?true": "Set this flag if you require the user's email address to complete the order", + "object_invoice_param_shipping_address_requested_type_flags.4?true": "Set this flag if you require the user's shipping address to complete the order", + "object_invoice_param_flexible_type_flags.5?true": "Set this flag if the final price depends on the shipping method", + "object_invoice_param_phone_to_provider_type_flags.6?true": "Set this flag if user's phone number should be sent to provider", + "object_invoice_param_email_to_provider_type_flags.7?true": "Set this flag if user's email address should be sent to provider", + "object_invoice_param_recurring_type_flags.9?true": "Whether this is a recurring payment", + "object_invoice_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code, or `XTR` for [Telegram Stars](https:\/\/core.telegram.org\/api\/stars).", + "object_invoice_param_prices_type_Vector<LabeledPrice>": "Price breakdown, a list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.)", + "object_invoice_param_max_tip_amount_type_flags.8?long": "The maximum accepted amount for tips in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_invoice_param_suggested_tip_amounts_type_flags.8?Vector<long>": "A vector of suggested amounts of tips in the *smallest units* of the currency (integer, not float\/double). At most 4 suggested tip amounts can be specified. The suggested tip amounts must be positive, passed in a strictly increased order and must not exceed `max_tip_amount`.", + "object_invoice_param_terms_url_type_flags.10?string": "Terms of service URL", + "object_invoice_param_subscription_period_type_flags.11?int": "The number of seconds between consecutive Telegram Star debiting for [bot subscription](https:\/\/core.telegram.org\/api\/subscriptions#bot-subscriptions) invoices", + "object_paymentCharge": "Payment identifier", + "object_paymentCharge_param_id_type_string": "Telegram payment identifier", + "object_paymentCharge_param_provider_charge_id_type_string": "Provider payment identifier", + "object_postAddress": "Shipping address", + "object_postAddress_param_street_line1_type_string": "First line for the address", + "object_postAddress_param_street_line2_type_string": "Second line for the address", + "object_postAddress_param_city_type_string": "City", + "object_postAddress_param_state_type_string": "State, if applicable (empty otherwise)", + "object_postAddress_param_country_iso2_type_string": "ISO 3166-1 alpha-2 country code", + "object_postAddress_param_post_code_type_string": "Address post code", + "object_paymentRequestedInfo": "Order info provided by the user", + "object_paymentRequestedInfo_param_name_type_flags.0?string": "User's full name", + "object_paymentRequestedInfo_param_phone_type_flags.1?string": "User's phone number", + "object_paymentRequestedInfo_param_email_type_flags.2?string": "User's email address", + "object_paymentRequestedInfo_param_shipping_address_type_flags.3?PostAddress": "User's shipping address", + "object_paymentSavedCredentialsCard": "Saved credit card", + "object_paymentSavedCredentialsCard_param_id_type_string": "Card ID", + "object_paymentSavedCredentialsCard_param_title_type_string": "Title", + "object_webDocument": "Remote document", + "object_webDocument_param_url_type_string": "Document URL", + "object_webDocument_param_access_hash_type_long": "Access hash", + "object_webDocument_param_size_type_int": "File size", + "object_webDocument_param_mime_type_type_string": "MIME type", + "object_webDocument_param_attributes_type_Vector<DocumentAttribute>": "Attributes for media types", + "object_webDocumentNoProxy": "Remote document that can be downloaded without [proxying through telegram](https:\/\/core.telegram.org\/api\/files)", + "object_webDocumentNoProxy_param_url_type_string": "Document URL", + "object_webDocumentNoProxy_param_size_type_int": "File size", + "object_webDocumentNoProxy_param_mime_type_type_string": "MIME type", + "object_webDocumentNoProxy_param_attributes_type_Vector<DocumentAttribute>": "Attributes for media types", + "object_inputWebDocument": "The document", + "object_inputWebDocument_param_url_type_string": "Remote document URL to be downloaded using the appropriate [method](https:\/\/core.telegram.org\/api\/files)", + "object_inputWebDocument_param_size_type_int": "Remote file size", + "object_inputWebDocument_param_mime_type_type_string": "Mime type", + "object_inputWebDocument_param_attributes_type_Vector<DocumentAttribute>": "Attributes for media types", + "object_inputWebFileLocation": "Location of a remote HTTP(s) file", + "object_inputWebFileLocation_param_url_type_string": "HTTP URL of file", + "object_inputWebFileLocation_param_access_hash_type_long": "Access hash", + "object_inputWebFileGeoPointLocation": "Used to download a server-generated image with the map preview from a [geoPoint](..\/constructors\/geoPoint.md), see the [webfile docs for more info \u00bb](https:\/\/core.telegram.org\/api\/files#downloading-webfiles).", + "object_inputWebFileGeoPointLocation_param_geo_point_type_InputGeoPoint": "Generated from the `lat`, `long` and `accuracy_radius` parameters of the [geoPoint](..\/constructors\/geoPoint.md)", + "object_inputWebFileGeoPointLocation_param_access_hash_type_long": "Access hash of the [geoPoint](..\/constructors\/geoPoint.md)", + "object_inputWebFileGeoPointLocation_param_w_type_int": "Map width in pixels before applying scale; 16-1024", + "object_inputWebFileGeoPointLocation_param_h_type_int": "Map height in pixels before applying scale; 16-1024", + "object_inputWebFileGeoPointLocation_param_zoom_type_int": "Map zoom level; 13-20", + "object_inputWebFileGeoPointLocation_param_scale_type_int": "Map scale; 1-3", + "object_inputWebFileAudioAlbumThumbLocation": "Used to download an album cover for any music file using [upload.getWebFile](..\/methods\/upload.getWebFile.md), see the [webfile docs for more info \u00bb](https:\/\/core.telegram.org\/api\/files#downloading-webfiles).", + "object_inputWebFileAudioAlbumThumbLocation_param_small_type_flags.2?true": "Used to return a thumbnail with `100x100` resolution (instead of the default `600x600`)", + "object_inputWebFileAudioAlbumThumbLocation_param_document_type_flags.0?InputDocument": "The audio file in question: must NOT be provided in secret chats, provide the `title` and `performer` fields instead.", + "object_inputWebFileAudioAlbumThumbLocation_param_title_type_flags.1?string": "Song title: should only be used in secret chats, in normal chats provide `document` instead, as it has more lax rate limits.", + "object_inputWebFileAudioAlbumThumbLocation_param_performer_type_flags.1?string": "Song performer: should only be used in secret chats, in normal chats provide `document` instead, as it has more lax rate limits.", + "object_upload.webFile": "Represents a chunk of an [HTTP webfile](https:\/\/core.telegram.org\/api\/files) downloaded through telegram's secure MTProto servers", + "object_upload.webFile_param_size_type_int": "File size", + "object_upload.webFile_param_mime_type_type_string": "Mime type", + "object_upload.webFile_param_file_type_type_storage.FileType": "File type", + "object_upload.webFile_param_mtime_type_int": "Modified time", + "object_upload.webFile_param_bytes_type_bytes": "Data", + "object_payments.paymentForm": "Payment form", + "object_payments.paymentForm_param_can_save_credentials_type_flags.2?true": "Whether the user can choose to save credentials.", + "object_payments.paymentForm_param_password_missing_type_flags.3?true": "Indicates that the user can save payment credentials, but only after setting up a [2FA password](https:\/\/core.telegram.org\/api\/srp) (currently the account doesn't have a [2FA password](https:\/\/core.telegram.org\/api\/srp))", + "object_payments.paymentForm_param_form_id_type_long": "Form ID", + "object_payments.paymentForm_param_bot_id_type_long": "Bot ID", + "object_payments.paymentForm_param_title_type_string": "Form title", + "object_payments.paymentForm_param_description_type_string": "Description", + "object_payments.paymentForm_param_photo_type_flags.5?WebDocument": "Product photo", + "object_payments.paymentForm_param_invoice_type_Invoice": "Invoice", + "object_payments.paymentForm_param_provider_id_type_long": "Payment provider ID.", + "object_payments.paymentForm_param_url_type_string": "Payment form URL", + "object_payments.paymentForm_param_native_provider_type_flags.4?string": "Payment provider name.
One of the following:
- `stripe`", + "object_payments.paymentForm_param_native_params_type_flags.4?DataJSON": "Contains information about the payment provider, if available, to support it natively without the need for opening the URL.
A JSON object that can contain the following fields:

- `apple_pay_merchant_id`: Apple Pay merchant ID
- `google_pay_public_key`: Google Pay public key
- `need_country`: True, if the user country must be provided,
- `need_zip`: True, if the user ZIP\/postal code must be provided,
- `need_cardholder_name`: True, if the cardholder name must be provided
", + "object_payments.paymentForm_param_additional_methods_type_flags.6?Vector<PaymentFormMethod>": "Additional payment methods", + "object_payments.paymentForm_param_saved_info_type_flags.0?PaymentRequestedInfo": "Saved server-side order information", + "object_payments.paymentForm_param_saved_credentials_type_flags.1?Vector<PaymentSavedCredentials>": "Contains information about saved card credentials", + "object_payments.paymentForm_param_users_type_Vector<User>": "Users", + "object_payments.paymentFormStars": "Represents a payment form, for payments to be using [Telegram Stars, see here \u00bb](https:\/\/core.telegram.org\/api\/stars) for more info.", + "object_payments.paymentFormStars_param_form_id_type_long": "Form ID.", + "object_payments.paymentFormStars_param_bot_id_type_long": "Bot ID.", + "object_payments.paymentFormStars_param_title_type_string": "Form title", + "object_payments.paymentFormStars_param_description_type_string": "Description", + "object_payments.paymentFormStars_param_photo_type_flags.5?WebDocument": "Product photo", + "object_payments.paymentFormStars_param_invoice_type_Invoice": "Invoice", + "object_payments.paymentFormStars_param_users_type_Vector<User>": "Info about users mentioned in the other fields.", + "object_payments.paymentFormStarGift": "Represents a payment form for a [gift, see here \u00bb](https:\/\/core.telegram.org\/api\/gifts) for more info.", + "object_payments.paymentFormStarGift_param_form_id_type_long": "Form ID.", + "object_payments.paymentFormStarGift_param_invoice_type_Invoice": "Invoice", + "object_payments.validatedRequestedInfo": "Validated user-provided info", + "object_payments.validatedRequestedInfo_param_id_type_flags.0?string": "ID", + "object_payments.validatedRequestedInfo_param_shipping_options_type_flags.1?Vector<ShippingOption>": "Shipping options", + "object_payments.paymentResult": "Payment result", + "object_payments.paymentResult_param_updates_type_Updates": "Info about the payment", + "object_payments.paymentVerificationNeeded": "Payment was not successful, additional verification is needed", + "object_payments.paymentVerificationNeeded_param_url_type_string": "URL for additional payment credentials verification", + "object_payments.paymentReceipt": "Receipt", + "object_payments.paymentReceipt_param_date_type_int": "Date of generation", + "object_payments.paymentReceipt_param_bot_id_type_long": "Bot ID", + "object_payments.paymentReceipt_param_provider_id_type_long": "Provider ID", + "object_payments.paymentReceipt_param_title_type_string": "Title", + "object_payments.paymentReceipt_param_description_type_string": "Description", + "object_payments.paymentReceipt_param_photo_type_flags.2?WebDocument": "Photo", + "object_payments.paymentReceipt_param_invoice_type_Invoice": "Invoice", + "object_payments.paymentReceipt_param_info_type_flags.0?PaymentRequestedInfo": "Info", + "object_payments.paymentReceipt_param_shipping_type_flags.1?ShippingOption": "Selected shipping option", + "object_payments.paymentReceipt_param_tip_amount_type_flags.3?long": "Tipped amount", + "object_payments.paymentReceipt_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code", + "object_payments.paymentReceipt_param_total_amount_type_long": "Total amount in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_payments.paymentReceipt_param_credentials_title_type_string": "Payment credential name", + "object_payments.paymentReceipt_param_users_type_Vector<User>": "Users", + "object_payments.paymentReceiptStars": "Receipt for [payment made using Telegram Stars](https:\/\/core.telegram.org\/api\/stars).", + "object_payments.paymentReceiptStars_param_date_type_int": "Date of generation", + "object_payments.paymentReceiptStars_param_bot_id_type_long": "Bot ID", + "object_payments.paymentReceiptStars_param_title_type_string": "Title", + "object_payments.paymentReceiptStars_param_description_type_string": "Description", + "object_payments.paymentReceiptStars_param_photo_type_flags.2?WebDocument": "Product photo", + "object_payments.paymentReceiptStars_param_invoice_type_Invoice": "Invoice", + "object_payments.paymentReceiptStars_param_currency_type_string": "Currency, always `XTR`.", + "object_payments.paymentReceiptStars_param_total_amount_type_long": "Amount of [Telegram Stars](https:\/\/core.telegram.org\/api\/stars).", + "object_payments.paymentReceiptStars_param_transaction_id_type_string": "Transaction ID", + "object_payments.paymentReceiptStars_param_users_type_Vector<User>": "Info about users mentioned in the other fields.", + "object_payments.savedInfo": "Saved server-side order information", + "object_payments.savedInfo_param_has_saved_credentials_type_flags.1?true": "Whether the user has some saved payment credentials", + "object_payments.savedInfo_param_saved_info_type_flags.0?PaymentRequestedInfo": "Saved server-side order information", + "object_inputPaymentCredentialsSaved": "Saved payment credentials", + "object_inputPaymentCredentialsSaved_param_id_type_string": "Credential ID", + "object_inputPaymentCredentialsSaved_param_tmp_password_type_bytes": "Temporary password", + "object_inputPaymentCredentials": "Payment credentials", + "object_inputPaymentCredentials_param_save_type_flags.0?true": "Save payment credential for future use", + "object_inputPaymentCredentials_param_data_type_DataJSON": "Payment credentials", + "object_inputPaymentCredentialsApplePay": "Apple pay payment credentials", + "object_inputPaymentCredentialsApplePay_param_payment_data_type_DataJSON": "Payment data", + "object_inputPaymentCredentialsGooglePay": "Google Pay payment credentials", + "object_inputPaymentCredentialsGooglePay_param_payment_token_type_DataJSON": "Payment token", + "object_account.tmpPassword": "Temporary payment password", + "object_account.tmpPassword_param_tmp_password_type_bytes": "Temporary password", + "object_account.tmpPassword_param_valid_until_type_int": "Validity period", + "object_shippingOption": "Shipping option", + "object_shippingOption_param_id_type_string": "Option ID", + "object_shippingOption_param_title_type_string": "Title", + "object_shippingOption_param_prices_type_Vector<LabeledPrice>": "List of price portions", + "object_inputStickerSetItem": "Sticker in a stickerset", + "object_inputStickerSetItem_param_document_type_InputDocument": "The sticker", + "object_inputStickerSetItem_param_emoji_type_string": "Associated emoji", + "object_inputStickerSetItem_param_mask_coords_type_flags.0?MaskCoords": "Coordinates for mask sticker", + "object_inputStickerSetItem_param_keywords_type_flags.1?string": "Set of keywords, separated by commas (can't be provided for mask stickers)", + "object_inputPhoneCall": "Phone call", + "object_inputPhoneCall_param_id_type_long": "Call ID", + "object_inputPhoneCall_param_access_hash_type_long": "Access hash", + "object_phoneCallEmpty": "Empty constructor", + "object_phoneCallEmpty_param_id_type_long": "Call ID", + "object_phoneCallWaiting": "Incoming phone call", + "object_phoneCallWaiting_param_video_type_flags.6?true": "Is this a video call", + "object_phoneCallWaiting_param_id_type_long": "Call ID", + "object_phoneCallWaiting_param_access_hash_type_long": "Access hash", + "object_phoneCallWaiting_param_date_type_int": "Date", + "object_phoneCallWaiting_param_admin_id_type_long": "Admin ID", + "object_phoneCallWaiting_param_participant_id_type_long": "Participant ID", + "object_phoneCallWaiting_param_protocol_type_PhoneCallProtocol": "Phone call protocol info", + "object_phoneCallWaiting_param_receive_date_type_flags.0?int": "When was the phone call received", + "object_phoneCallRequested": "Requested phone call", + "object_phoneCallRequested_param_video_type_flags.6?true": "Whether this is a video call", + "object_phoneCallRequested_param_id_type_long": "Phone call ID", + "object_phoneCallRequested_param_access_hash_type_long": "Access hash", + "object_phoneCallRequested_param_date_type_int": "When was the phone call created", + "object_phoneCallRequested_param_admin_id_type_long": "ID of the creator of the phone call", + "object_phoneCallRequested_param_participant_id_type_long": "ID of the other participant of the phone call", + "object_phoneCallRequested_param_g_a_hash_type_bytes": "[Parameter for key exchange](https:\/\/core.telegram.org\/api\/end-to-end\/voice-calls)", + "object_phoneCallRequested_param_protocol_type_PhoneCallProtocol": "Call protocol info to be passed to libtgvoip", + "object_phoneCallAccepted": "An accepted phone call", + "object_phoneCallAccepted_param_video_type_flags.6?true": "Whether this is a video call", + "object_phoneCallAccepted_param_id_type_long": "ID of accepted phone call", + "object_phoneCallAccepted_param_access_hash_type_long": "Access hash of phone call", + "object_phoneCallAccepted_param_date_type_int": "When was the call accepted", + "object_phoneCallAccepted_param_admin_id_type_long": "ID of the call creator", + "object_phoneCallAccepted_param_participant_id_type_long": "ID of the other user in the call", + "object_phoneCallAccepted_param_g_b_type_bytes": "B parameter for [secure E2E phone call key exchange](https:\/\/core.telegram.org\/api\/end-to-end\/voice-calls)", + "object_phoneCallAccepted_param_protocol_type_PhoneCallProtocol": "Protocol to use for phone call", + "object_phoneCall": "Phone call", + "object_phoneCall_param_p2p_allowed_type_flags.5?true": "Whether P2P connection to the other peer is allowed", + "object_phoneCall_param_video_type_flags.6?true": "Whether this is a video call", + "object_phoneCall_param_conference_supported_type_flags.8?true": "If set, the other party supports upgrading of the call to a [conference call](https:\/\/core.telegram.org\/api\/end-to-end\/group-calls).", + "object_phoneCall_param_id_type_long": "Call ID", + "object_phoneCall_param_access_hash_type_long": "Access hash", + "object_phoneCall_param_date_type_int": "Date of creation of the call", + "object_phoneCall_param_admin_id_type_long": "User ID of the creator of the call", + "object_phoneCall_param_participant_id_type_long": "User ID of the other participant in the call", + "object_phoneCall_param_g_a_or_b_type_bytes": "[Parameter for key exchange](https:\/\/core.telegram.org\/api\/end-to-end\/voice-calls)", + "object_phoneCall_param_key_fingerprint_type_long": "[Key fingerprint](https:\/\/core.telegram.org\/api\/end-to-end\/voice-calls)", + "object_phoneCall_param_protocol_type_PhoneCallProtocol": "Call protocol info to be passed to libtgvoip", + "object_phoneCall_param_connections_type_Vector<PhoneConnection>": "List of endpoints the user can connect to exchange call data", + "object_phoneCall_param_start_date_type_int": "When was the call actually started", + "object_phoneCall_param_custom_parameters_type_flags.7?DataJSON": "Custom JSON-encoded call parameters to be passed to tgcalls.", + "object_phoneCallDiscarded": "Indicates a discarded phone call", + "object_phoneCallDiscarded_param_need_rating_type_flags.2?true": "Whether the server required the user to [rate](..\/methods\/phone.setCallRating.md) the call", + "object_phoneCallDiscarded_param_need_debug_type_flags.3?true": "Whether the server required the client to [send](..\/methods\/phone.saveCallDebug.md) the libtgvoip call debug data", + "object_phoneCallDiscarded_param_video_type_flags.6?true": "Whether the call was a video call", + "object_phoneCallDiscarded_param_id_type_long": "Call ID", + "object_phoneCallDiscarded_param_reason_type_flags.0?PhoneCallDiscardReason": "Why was the phone call discarded", + "object_phoneCallDiscarded_param_duration_type_flags.1?int": "Duration of the phone call in seconds", + "object_phoneConnection": "Identifies an endpoint that can be used to connect to the other user in a phone call", + "object_phoneConnection_param_tcp_type_flags.0?true": "Whether TCP should be used", + "object_phoneConnection_param_id_type_long": "Endpoint ID", + "object_phoneConnection_param_ip_type_string": "IP address of endpoint", + "object_phoneConnection_param_ipv6_type_string": "IPv6 address of endpoint", + "object_phoneConnection_param_port_type_int": "Port ID", + "object_phoneConnection_param_peer_tag_type_bytes": "Our peer tag", + "object_phoneConnectionWebrtc": "WebRTC connection parameters", + "object_phoneConnectionWebrtc_param_turn_type_flags.0?true": "Whether this is a TURN endpoint", + "object_phoneConnectionWebrtc_param_stun_type_flags.1?true": "Whether this is a STUN endpoint", + "object_phoneConnectionWebrtc_param_id_type_long": "Endpoint ID", + "object_phoneConnectionWebrtc_param_ip_type_string": "IP address", + "object_phoneConnectionWebrtc_param_ipv6_type_string": "IPv6 address", + "object_phoneConnectionWebrtc_param_port_type_int": "Port", + "object_phoneConnectionWebrtc_param_username_type_string": "Username", + "object_phoneConnectionWebrtc_param_password_type_string": "Password", + "object_phoneCallProtocol": "Protocol info for libtgvoip", + "object_phoneCallProtocol_param_udp_p2p_type_flags.0?true": "Whether to allow P2P connection to the other participant", + "object_phoneCallProtocol_param_udp_reflector_type_flags.1?true": "Whether to allow connection to the other participants through the reflector servers", + "object_phoneCallProtocol_param_min_layer_type_int": "Minimum layer for remote libtgvoip", + "object_phoneCallProtocol_param_max_layer_type_int": "Maximum layer for remote libtgvoip", + "object_phoneCallProtocol_param_library_versions_type_Vector<string>": "When using [phone.requestCall](..\/methods\/phone.requestCall.md) and [phone.acceptCall](..\/methods\/phone.acceptCall.md), specify all library versions supported by the client.
The server will merge and choose the best library version supported by both peers, returning only the best value in the result of the callee's [phone.acceptCall](..\/methods\/phone.acceptCall.md) and in the [phoneCallAccepted](..\/constructors\/phoneCallAccepted.md) update received by the caller.", + "object_phone.phoneCall": "A VoIP phone call", + "object_phone.phoneCall_param_phone_call_type_PhoneCall": "The VoIP phone call", + "object_phone.phoneCall_param_users_type_Vector<User>": "VoIP phone call participants", + "object_upload.cdnFileReuploadNeeded": "The file was cleared from the temporary RAM cache of the [CDN](https:\/\/core.telegram.org\/cdn) and has to be re-uploaded.", + "object_upload.cdnFileReuploadNeeded_param_request_token_type_bytes": "Request token (see [CDN](https:\/\/core.telegram.org\/cdn))", + "object_upload.cdnFile": "Represent a chunk of a [CDN](https:\/\/core.telegram.org\/cdn) file.", + "object_upload.cdnFile_param_bytes_type_bytes": "The data", + "object_cdnPublicKey": "Public key to use **only** during handshakes to [CDN](https:\/\/core.telegram.org\/cdn) DCs.", + "object_cdnPublicKey_param_dc_id_type_int": "[CDN DC](https:\/\/core.telegram.org\/cdn) ID", + "object_cdnPublicKey_param_public_key_type_string": "RSA public key", + "object_cdnConfig": "Configuration for [CDN](https:\/\/core.telegram.org\/cdn) file downloads.", + "object_cdnConfig_param_public_keys_type_Vector<CdnPublicKey>": "Vector of public keys to use **only** during handshakes to [CDN](https:\/\/core.telegram.org\/cdn) DCs.", + "object_langPackString": "Translated localization string", + "object_langPackString_param_key_type_string": "Language key", + "object_langPackString_param_value_type_string": "Value", + "object_langPackStringPluralized": "A language pack string which has different forms based on the number of some object it mentions. See [https:\/\/www.unicode.org\/cldr\/charts\/latest\/supplemental\/language\\_plural\\_rules.html](https:\/\/www.unicode.org\/cldr\/charts\/latest\/supplemental\/language_plural_rules.html) for more info", + "object_langPackStringPluralized_param_key_type_string": "Localization key", + "object_langPackStringPluralized_param_zero_value_type_flags.0?string": "Value for zero objects", + "object_langPackStringPluralized_param_one_value_type_flags.1?string": "Value for one object", + "object_langPackStringPluralized_param_two_value_type_flags.2?string": "Value for two objects", + "object_langPackStringPluralized_param_few_value_type_flags.3?string": "Value for a few objects", + "object_langPackStringPluralized_param_many_value_type_flags.4?string": "Value for many objects", + "object_langPackStringPluralized_param_other_value_type_string": "Default value", + "object_langPackStringDeleted": "Deleted localization string", + "object_langPackStringDeleted_param_key_type_string": "Localization key", + "object_langPackDifference": "Changes to the app's localization pack", + "object_langPackDifference_param_lang_code_type_string": "Language code", + "object_langPackDifference_param_from_version_type_int": "Previous version number", + "object_langPackDifference_param_version_type_int": "New version number", + "object_langPackDifference_param_strings_type_Vector<LangPackString>": "Localized strings", + "object_langPackLanguage": "Identifies a localization pack", + "object_langPackLanguage_param_official_type_flags.0?true": "Whether the language pack is official", + "object_langPackLanguage_param_rtl_type_flags.2?true": "Is this a localization pack for an RTL language", + "object_langPackLanguage_param_beta_type_flags.3?true": "Is this a beta localization pack?", + "object_langPackLanguage_param_name_type_string": "Language name", + "object_langPackLanguage_param_native_name_type_string": "Language name in the language itself", + "object_langPackLanguage_param_lang_code_type_string": "Language code (pack identifier)", + "object_langPackLanguage_param_base_lang_code_type_flags.1?string": "Identifier of a base language pack; may be empty. If a string is missed in the language pack, then it should be fetched from base language pack. Unsupported in custom language packs", + "object_langPackLanguage_param_plural_code_type_string": "A language code to be used to apply plural forms. See [https:\/\/www.unicode.org\/cldr\/charts\/latest\/supplemental\/language\\_plural\\_rules.html](https:\/\/www.unicode.org\/cldr\/charts\/latest\/supplemental\/language_plural_rules.html) for more info", + "object_langPackLanguage_param_strings_count_type_int": "Total number of non-deleted strings from the language pack", + "object_langPackLanguage_param_translated_count_type_int": "Total number of translated strings from the language pack", + "object_langPackLanguage_param_translations_url_type_string": "Link to language translation interface; empty for custom local language packs", + "object_channelAdminLogEventActionChangeTitle": "Channel\/supergroup title was changed", + "object_channelAdminLogEventActionChangeTitle_param_prev_value_type_string": "Previous title", + "object_channelAdminLogEventActionChangeTitle_param_new_value_type_string": "New title", + "object_channelAdminLogEventActionChangeAbout": "The description was changed", + "object_channelAdminLogEventActionChangeAbout_param_prev_value_type_string": "Previous description", + "object_channelAdminLogEventActionChangeAbout_param_new_value_type_string": "New description", + "object_channelAdminLogEventActionChangeUsername": "Channel\/supergroup username was changed", + "object_channelAdminLogEventActionChangeUsername_param_prev_value_type_string": "Old username", + "object_channelAdminLogEventActionChangeUsername_param_new_value_type_string": "New username", + "object_channelAdminLogEventActionChangePhoto": "The channel\/supergroup's picture was changed", + "object_channelAdminLogEventActionChangePhoto_param_prev_photo_type_Photo": "Previous picture", + "object_channelAdminLogEventActionChangePhoto_param_new_photo_type_Photo": "New picture", + "object_channelAdminLogEventActionToggleInvites": "Invites were enabled\/disabled", + "object_channelAdminLogEventActionToggleInvites_param_new_value_type_Bool": "New value", + "object_channelAdminLogEventActionToggleSignatures": "Channel signatures were enabled\/disabled", + "object_channelAdminLogEventActionToggleSignatures_param_new_value_type_Bool": "New value", + "object_channelAdminLogEventActionUpdatePinned": "A message was pinned", + "object_channelAdminLogEventActionUpdatePinned_param_message_type_Message": "The message that was pinned", + "object_channelAdminLogEventActionEditMessage": "A message was edited", + "object_channelAdminLogEventActionEditMessage_param_prev_message_type_Message": "Old message", + "object_channelAdminLogEventActionEditMessage_param_new_message_type_Message": "New message", + "object_channelAdminLogEventActionDeleteMessage": "A message was deleted", + "object_channelAdminLogEventActionDeleteMessage_param_message_type_Message": "The message that was deleted", + "object_channelAdminLogEventActionParticipantJoin": "A user has joined the group (in the case of big groups, info of the user that has joined isn't shown)", + "object_channelAdminLogEventActionParticipantLeave": "A user left the channel\/supergroup (in the case of big groups, info of the user that has joined isn't shown)", + "object_channelAdminLogEventActionParticipantInvite": "A user was invited to the group", + "object_channelAdminLogEventActionParticipantInvite_param_participant_type_ChannelParticipant": "The user that was invited", + "object_channelAdminLogEventActionParticipantToggleBan": "The banned [rights](https:\/\/core.telegram.org\/api\/rights) of a user were changed", + "object_channelAdminLogEventActionParticipantToggleBan_param_prev_participant_type_ChannelParticipant": "Old banned rights of user", + "object_channelAdminLogEventActionParticipantToggleBan_param_new_participant_type_ChannelParticipant": "New banned rights of user", + "object_channelAdminLogEventActionParticipantToggleAdmin": "The admin [rights](https:\/\/core.telegram.org\/api\/rights) of a user were changed", + "object_channelAdminLogEventActionParticipantToggleAdmin_param_prev_participant_type_ChannelParticipant": "Previous admin rights", + "object_channelAdminLogEventActionParticipantToggleAdmin_param_new_participant_type_ChannelParticipant": "New admin rights", + "object_channelAdminLogEventActionChangeStickerSet": "The supergroup's stickerset was changed", + "object_channelAdminLogEventActionChangeStickerSet_param_prev_stickerset_type_InputStickerSet": "Previous stickerset", + "object_channelAdminLogEventActionChangeStickerSet_param_new_stickerset_type_InputStickerSet": "New stickerset", + "object_channelAdminLogEventActionTogglePreHistoryHidden": "The hidden prehistory setting was [changed](..\/methods\/channels.togglePreHistoryHidden.md)", + "object_channelAdminLogEventActionTogglePreHistoryHidden_param_new_value_type_Bool": "New value", + "object_channelAdminLogEventActionDefaultBannedRights": "The default banned rights were modified", + "object_channelAdminLogEventActionDefaultBannedRights_param_prev_banned_rights_type_ChatBannedRights": "Previous global [banned rights](https:\/\/core.telegram.org\/api\/rights)", + "object_channelAdminLogEventActionDefaultBannedRights_param_new_banned_rights_type_ChatBannedRights": "New global [banned rights](https:\/\/core.telegram.org\/api\/rights).", + "object_channelAdminLogEventActionStopPoll": "A poll was stopped", + "object_channelAdminLogEventActionStopPoll_param_message_type_Message": "The poll that was stopped", + "object_channelAdminLogEventActionChangeLinkedChat": "The linked chat was changed", + "object_channelAdminLogEventActionChangeLinkedChat_param_prev_value_type_long": "Previous linked chat", + "object_channelAdminLogEventActionChangeLinkedChat_param_new_value_type_long": "New linked chat", + "object_channelAdminLogEventActionChangeLocation": "The geogroup location was changed", + "object_channelAdminLogEventActionChangeLocation_param_prev_value_type_ChannelLocation": "Previous location", + "object_channelAdminLogEventActionChangeLocation_param_new_value_type_ChannelLocation": "New location", + "object_channelAdminLogEventActionToggleSlowMode": "[Slow mode setting for supergroups was changed](..\/methods\/channels.toggleSlowMode.md)", + "object_channelAdminLogEventActionToggleSlowMode_param_prev_value_type_int": "Previous slow mode value", + "object_channelAdminLogEventActionToggleSlowMode_param_new_value_type_int": "New slow mode value", + "object_channelAdminLogEventActionStartGroupCall": "A group call was started", + "object_channelAdminLogEventActionStartGroupCall_param_call_type_InputGroupCall": "Group call", + "object_channelAdminLogEventActionDiscardGroupCall": "A group call was terminated", + "object_channelAdminLogEventActionDiscardGroupCall_param_call_type_InputGroupCall": "The group call that was terminated", + "object_channelAdminLogEventActionParticipantMute": "A group call participant was muted", + "object_channelAdminLogEventActionParticipantMute_param_participant_type_GroupCallParticipant": "The participant that was muted", + "object_channelAdminLogEventActionParticipantUnmute": "A group call participant was unmuted", + "object_channelAdminLogEventActionParticipantUnmute_param_participant_type_GroupCallParticipant": "The participant that was unmuted", + "object_channelAdminLogEventActionToggleGroupCallSetting": "Group call settings were changed", + "object_channelAdminLogEventActionToggleGroupCallSetting_param_join_muted_type_Bool": "Whether all users are muted by default upon joining", + "object_channelAdminLogEventActionParticipantJoinByInvite": "A user joined the [supergroup\/channel](https:\/\/core.telegram.org\/api\/channel) using a specific invite link", + "object_channelAdminLogEventActionParticipantJoinByInvite_param_via_chatlist_type_flags.0?true": "The participant joined by importing a [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "object_channelAdminLogEventActionParticipantJoinByInvite_param_invite_type_ExportedChatInvite": "The invite link used to join the [supergroup\/channel](https:\/\/core.telegram.org\/api\/channel)", + "object_channelAdminLogEventActionExportedInviteDelete": "A chat invite was deleted", + "object_channelAdminLogEventActionExportedInviteDelete_param_invite_type_ExportedChatInvite": "The deleted chat invite", + "object_channelAdminLogEventActionExportedInviteRevoke": "A specific invite link was revoked", + "object_channelAdminLogEventActionExportedInviteRevoke_param_invite_type_ExportedChatInvite": "The invite link that was revoked", + "object_channelAdminLogEventActionExportedInviteEdit": "A chat invite was edited", + "object_channelAdminLogEventActionExportedInviteEdit_param_prev_invite_type_ExportedChatInvite": "Previous chat invite information", + "object_channelAdminLogEventActionExportedInviteEdit_param_new_invite_type_ExportedChatInvite": "New chat invite information", + "object_channelAdminLogEventActionParticipantVolume": "channelAdminLogEvent.user\\_id has set the volume of participant.peer to participant.volume", + "object_channelAdminLogEventActionParticipantVolume_param_participant_type_GroupCallParticipant": "The participant whose volume was changed", + "object_channelAdminLogEventActionChangeHistoryTTL": "The Time-To-Live of messages in this chat was changed", + "object_channelAdminLogEventActionChangeHistoryTTL_param_prev_value_type_int": "Previous value", + "object_channelAdminLogEventActionChangeHistoryTTL_param_new_value_type_int": "New value", + "object_channelAdminLogEventActionParticipantJoinByRequest": "A new member was accepted to the chat by an admin", + "object_channelAdminLogEventActionParticipantJoinByRequest_param_invite_type_ExportedChatInvite": "The invite link that was used to join the chat", + "object_channelAdminLogEventActionParticipantJoinByRequest_param_approved_by_type_long": "ID of the admin that approved the invite", + "object_channelAdminLogEventActionToggleNoForwards": "Forwards were enabled or disabled", + "object_channelAdminLogEventActionToggleNoForwards_param_new_value_type_Bool": "Old value", + "object_channelAdminLogEventActionSendMessage": "A message was posted in a channel", + "object_channelAdminLogEventActionSendMessage_param_message_type_Message": "The message that was sent", + "object_channelAdminLogEventActionChangeAvailableReactions": "The set of allowed [message reactions \u00bb](https:\/\/core.telegram.org\/api\/reactions) for this channel has changed", + "object_channelAdminLogEventActionChangeAvailableReactions_param_prev_value_type_ChatReactions": "Previously allowed reaction emojis", + "object_channelAdminLogEventActionChangeAvailableReactions_param_new_value_type_ChatReactions": "New allowed reaction emojis", + "object_channelAdminLogEventActionChangeUsernames": "The list of usernames associated with the channel was changed", + "object_channelAdminLogEventActionChangeUsernames_param_prev_value_type_Vector<string>": "Previous set of usernames", + "object_channelAdminLogEventActionChangeUsernames_param_new_value_type_Vector<string>": "New set of usernames", + "object_channelAdminLogEventActionToggleForum": "[Forum](https:\/\/core.telegram.org\/api\/forum) functionality was enabled or disabled.", + "object_channelAdminLogEventActionToggleForum_param_new_value_type_Bool": "Whether [forum](https:\/\/core.telegram.org\/api\/forum) functionality was enabled or disabled.", + "object_channelAdminLogEventActionCreateTopic": "A [forum topic](https:\/\/core.telegram.org\/api\/forum#forum-topics) was created", + "object_channelAdminLogEventActionCreateTopic_param_topic_type_ForumTopic": "The [forum topic](https:\/\/core.telegram.org\/api\/forum#forum-topics) that was created", + "object_channelAdminLogEventActionEditTopic": "A [forum topic](https:\/\/core.telegram.org\/api\/forum#forum-topics) was edited", + "object_channelAdminLogEventActionEditTopic_param_prev_topic_type_ForumTopic": "Previous topic information", + "object_channelAdminLogEventActionEditTopic_param_new_topic_type_ForumTopic": "New topic information", + "object_channelAdminLogEventActionDeleteTopic": "A [forum topic](https:\/\/core.telegram.org\/api\/forum#forum-topics) was deleted", + "object_channelAdminLogEventActionDeleteTopic_param_topic_type_ForumTopic": "The [forum topic](https:\/\/core.telegram.org\/api\/forum#forum-topics) that was deleted", + "object_channelAdminLogEventActionPinTopic": "A [forum topic](https:\/\/core.telegram.org\/api\/forum#forum-topics) was pinned or unpinned", + "object_channelAdminLogEventActionPinTopic_param_prev_topic_type_flags.0?ForumTopic": "Previous topic information", + "object_channelAdminLogEventActionPinTopic_param_new_topic_type_flags.1?ForumTopic": "New topic information", + "object_channelAdminLogEventActionToggleAntiSpam": "[Native antispam](https:\/\/core.telegram.org\/api\/antispam) functionality was enabled or disabled.", + "object_channelAdminLogEventActionToggleAntiSpam_param_new_value_type_Bool": "Whether antispam functionality was enabled or disabled.", + "object_channelAdminLogEventActionChangePeerColor": "The [message accent color](https:\/\/core.telegram.org\/api\/colors) was changed", + "object_channelAdminLogEventActionChangePeerColor_param_prev_value_type_PeerColor": "Previous accent palette", + "object_channelAdminLogEventActionChangePeerColor_param_new_value_type_PeerColor": "New accent palette", + "object_channelAdminLogEventActionChangeProfilePeerColor": "The [profile accent color](https:\/\/core.telegram.org\/api\/colors) was changed", + "object_channelAdminLogEventActionChangeProfilePeerColor_param_prev_value_type_PeerColor": "Previous accent palette", + "object_channelAdminLogEventActionChangeProfilePeerColor_param_new_value_type_PeerColor": "New accent palette", + "object_channelAdminLogEventActionChangeWallpaper": "The [wallpaper](https:\/\/core.telegram.org\/api\/wallpapers) was changed", + "object_channelAdminLogEventActionChangeWallpaper_param_prev_value_type_WallPaper": "Previous wallpaper", + "object_channelAdminLogEventActionChangeWallpaper_param_new_value_type_WallPaper": "New wallpaper", + "object_channelAdminLogEventActionChangeEmojiStatus": "The [emoji status](https:\/\/core.telegram.org\/api\/emoji-status) was changed", + "object_channelAdminLogEventActionChangeEmojiStatus_param_prev_value_type_EmojiStatus": "Previous emoji status", + "object_channelAdminLogEventActionChangeEmojiStatus_param_new_value_type_EmojiStatus": "New emoji status", + "object_channelAdminLogEventActionChangeEmojiStickerSet": "The supergroup's [custom emoji stickerset](https:\/\/core.telegram.org\/api\/boost#setting-a-custom-emoji-stickerset-for-supergroups) was changed.", + "object_channelAdminLogEventActionChangeEmojiStickerSet_param_prev_stickerset_type_InputStickerSet": "Old value", + "object_channelAdminLogEventActionChangeEmojiStickerSet_param_new_stickerset_type_InputStickerSet": "New value", + "object_channelAdminLogEventActionToggleSignatureProfiles": "Channel signature profiles were enabled\/disabled.", + "object_channelAdminLogEventActionToggleSignatureProfiles_param_new_value_type_Bool": "New value", + "object_channelAdminLogEventActionParticipantSubExtend": "A paid subscriber has extended their [Telegram Star subscription \u00bb](https:\/\/core.telegram.org\/api\/stars#star-subscriptions).", + "object_channelAdminLogEventActionParticipantSubExtend_param_prev_participant_type_ChannelParticipant": "Same as `new_participant`.", + "object_channelAdminLogEventActionParticipantSubExtend_param_new_participant_type_ChannelParticipant": "The subscriber that extended the subscription.", + "object_channelAdminLogEventActionToggleAutotranslation": "[Channel autotranslation was toggled \u00bb](https:\/\/core.telegram.org\/api\/translation#autotranslation-for-channels).", + "object_channelAdminLogEventActionToggleAutotranslation_param_new_value_type_Bool": "New value of the toggle", + "object_channelAdminLogEvent": "Admin log event", + "object_channelAdminLogEvent_param_id_type_long": "Event ID", + "object_channelAdminLogEvent_param_date_type_int": "Date", + "object_channelAdminLogEvent_param_user_id_type_long": "User ID", + "object_channelAdminLogEvent_param_action_type_ChannelAdminLogEventAction": "Action", + "object_channels.adminLogResults": "Admin log events", + "object_channels.adminLogResults_param_events_type_Vector<ChannelAdminLogEvent>": "Admin log events", + "object_channels.adminLogResults_param_chats_type_Vector<Chat>": "Chats mentioned in events", + "object_channels.adminLogResults_param_users_type_Vector<User>": "Users mentioned in events", + "object_channelAdminLogEventsFilter": "Filter only certain admin log events", + "object_channelAdminLogEventsFilter_param_join_type_flags.0?true": "[Join events](..\/constructors\/channelAdminLogEventActionParticipantJoin.md), including [joins using invite links](..\/constructors\/channelAdminLogEventActionParticipantJoinByInvite.md) and [join requests](..\/constructors\/channelAdminLogEventActionParticipantJoinByRequest.md).", + "object_channelAdminLogEventsFilter_param_leave_type_flags.1?true": "[Leave events](..\/constructors\/channelAdminLogEventActionParticipantLeave.md)", + "object_channelAdminLogEventsFilter_param_invite_type_flags.2?true": "[Invite events](..\/constructors\/channelAdminLogEventActionParticipantInvite.md)", + "object_channelAdminLogEventsFilter_param_ban_type_flags.3?true": "[Ban events](..\/constructors\/channelAdminLogEventActionParticipantToggleBan.md)", + "object_channelAdminLogEventsFilter_param_unban_type_flags.4?true": "[Unban events](..\/constructors\/channelAdminLogEventActionParticipantToggleBan.md)", + "object_channelAdminLogEventsFilter_param_kick_type_flags.5?true": "[Kick events](..\/constructors\/channelAdminLogEventActionParticipantToggleBan.md)", + "object_channelAdminLogEventsFilter_param_unkick_type_flags.6?true": "[Unkick events](..\/constructors\/channelAdminLogEventActionParticipantToggleBan.md)", + "object_channelAdminLogEventsFilter_param_promote_type_flags.7?true": "[Admin promotion events](..\/constructors\/channelAdminLogEventActionParticipantToggleAdmin.md)", + "object_channelAdminLogEventsFilter_param_demote_type_flags.8?true": "[Admin demotion events](..\/constructors\/channelAdminLogEventActionParticipantToggleAdmin.md)", + "object_channelAdminLogEventsFilter_param_info_type_flags.9?true": "Info change events (when [about](..\/constructors\/channelAdminLogEventActionChangeAbout.md), [linked chat](..\/constructors\/channelAdminLogEventActionChangeLinkedChat.md), [location](..\/constructors\/channelAdminLogEventActionChangeLocation.md), [photo](..\/constructors\/channelAdminLogEventActionChangePhoto.md), [stickerset](..\/constructors\/channelAdminLogEventActionChangeStickerSet.md), [title](..\/constructors\/channelAdminLogEventActionChangeTitle.md) or [username](..\/constructors\/channelAdminLogEventActionChangeUsername.md), [slowmode](..\/constructors\/channelAdminLogEventActionToggleSlowMode.md), [history TTL](..\/constructors\/channelAdminLogEventActionChangeHistoryTTL.md) settings of a channel gets modified)", + "object_channelAdminLogEventsFilter_param_settings_type_flags.10?true": "Settings change events ([invites](..\/constructors\/channelAdminLogEventActionToggleInvites.md), [hidden prehistory](..\/constructors\/channelAdminLogEventActionTogglePreHistoryHidden.md), [signatures](..\/constructors\/channelAdminLogEventActionToggleSignatures.md), [default banned rights](..\/constructors\/channelAdminLogEventActionDefaultBannedRights.md), [forum toggle events](..\/constructors\/channelAdminLogEventActionToggleForum.md))", + "object_channelAdminLogEventsFilter_param_pinned_type_flags.11?true": "[Message pin events](..\/constructors\/channelAdminLogEventActionUpdatePinned.md)", + "object_channelAdminLogEventsFilter_param_edit_type_flags.12?true": "[Message edit events](..\/constructors\/channelAdminLogEventActionEditMessage.md)", + "object_channelAdminLogEventsFilter_param_delete_type_flags.13?true": "[Message deletion events](..\/constructors\/channelAdminLogEventActionDeleteMessage.md)", + "object_channelAdminLogEventsFilter_param_group_call_type_flags.14?true": "Group call events", + "object_channelAdminLogEventsFilter_param_invites_type_flags.15?true": "Invite events", + "object_channelAdminLogEventsFilter_param_send_type_flags.16?true": "A message was posted in a channel", + "object_channelAdminLogEventsFilter_param_forums_type_flags.17?true": "[Forum](https:\/\/core.telegram.org\/api\/forum)-related events", + "object_channelAdminLogEventsFilter_param_sub_extend_type_flags.18?true": "[Telegram Star subscription extension events \u00bb](..\/constructors\/channelAdminLogEventActionParticipantSubExtend.md)", + "object_popularContact": "Popular contact", + "object_popularContact_param_client_id_type_long": "Contact identifier", + "object_popularContact_param_importers_type_int": "How many people imported this contact", + "object_messages.favedStickersNotModified": "No new favorited stickers were found", + "object_messages.favedStickers": "Favorited stickers", + "object_messages.favedStickers_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_messages.favedStickers_param_packs_type_Vector<StickerPack>": "Emojis associated to stickers", + "object_messages.favedStickers_param_stickers_type_Vector<Document>": "Favorited stickers", + "object_recentMeUrlUnknown": "Unknown t.me url", + "object_recentMeUrlUnknown_param_url_type_string": "URL", + "object_recentMeUrlUser": "Recent t.me link to a user", + "object_recentMeUrlUser_param_url_type_string": "URL", + "object_recentMeUrlUser_param_user_id_type_long": "User ID", + "object_recentMeUrlChat": "Recent t.me link to a chat", + "object_recentMeUrlChat_param_url_type_string": "t.me URL", + "object_recentMeUrlChat_param_chat_id_type_long": "Chat ID", + "object_recentMeUrlChatInvite": "Recent t.me invite link to a chat", + "object_recentMeUrlChatInvite_param_url_type_string": "t.me URL", + "object_recentMeUrlChatInvite_param_chat_invite_type_ChatInvite": "Chat invitation", + "object_recentMeUrlStickerSet": "Recent t.me stickerset installation URL", + "object_recentMeUrlStickerSet_param_url_type_string": "t.me URL", + "object_recentMeUrlStickerSet_param_set_type_StickerSetCovered": "Stickerset", + "object_help.recentMeUrls": "Recent t.me URLs", + "object_help.recentMeUrls_param_urls_type_Vector<RecentMeUrl>": "URLs", + "object_help.recentMeUrls_param_chats_type_Vector<Chat>": "Chats", + "object_help.recentMeUrls_param_users_type_Vector<User>": "Users", + "object_inputSingleMedia": "A single media in an [album or grouped media](https:\/\/core.telegram.org\/api\/files#albums-grouped-media) sent with [messages.sendMultiMedia](..\/methods\/messages.sendMultiMedia.md).", + "object_inputSingleMedia_param_media_type_InputMedia": "The media", + "object_inputSingleMedia_param_random_id_type_long": "Unique client media ID required to prevent message resending", + "object_inputSingleMedia_param_message_type_string": "A caption for the media", + "object_inputSingleMedia_param_entities_type_flags.0?Vector<MessageEntity>": "Message [entities](https:\/\/core.telegram.org\/api\/entities) for styled text", + "object_webAuthorization": "Represents a bot logged in using the [Telegram login widget](https:\/\/core.telegram.org\/widgets\/login)", + "object_webAuthorization_param_hash_type_long": "Authorization hash", + "object_webAuthorization_param_bot_id_type_long": "Bot ID", + "object_webAuthorization_param_domain_type_string": "The domain name of the website on which the user has logged in.", + "object_webAuthorization_param_browser_type_string": "Browser user-agent", + "object_webAuthorization_param_platform_type_string": "Platform", + "object_webAuthorization_param_date_created_type_int": "When was the web session created", + "object_webAuthorization_param_date_active_type_int": "When was the web session last active", + "object_webAuthorization_param_ip_type_string": "IP address", + "object_webAuthorization_param_region_type_string": "Region, determined from IP address", + "object_account.webAuthorizations": "Web authorizations", + "object_account.webAuthorizations_param_authorizations_type_Vector<WebAuthorization>": "Web authorization list", + "object_account.webAuthorizations_param_users_type_Vector<User>": "Users", + "object_inputMessageID": "Message by ID", + "object_inputMessageID_param_id_type_int": "Message ID", + "object_inputMessageReplyTo": "Message to which the specified message replies to", + "object_inputMessageReplyTo_param_id_type_int": "ID of the message that replies to the message we need", + "object_inputMessagePinned": "Pinned message", + "object_inputMessageCallbackQuery": "Used by bots for fetching information about the message that originated a callback query", + "object_inputMessageCallbackQuery_param_id_type_int": "Message ID", + "object_inputMessageCallbackQuery_param_query_id_type_long": "Callback query ID", + "object_inputDialogPeer": "A peer", + "object_inputDialogPeer_param_peer_type_InputPeer": "Peer", + "object_inputDialogPeerFolder": "All peers in a [peer folder](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "object_inputDialogPeerFolder_param_folder_id_type_int": "[Peer folder ID, for more info click here](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "object_dialogPeer": "Peer", + "object_dialogPeer_param_peer_type_Peer": "Peer", + "object_dialogPeerFolder": "[Peer folder](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "object_dialogPeerFolder_param_folder_id_type_int": "[Peer folder ID, for more info click here](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "object_messages.foundStickerSetsNotModified": "No further results were found", + "object_messages.foundStickerSets": "Found stickersets", + "object_messages.foundStickerSets_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_messages.foundStickerSets_param_sets_type_Vector<StickerSetCovered>": "Found stickersets", + "object_fileHash": "SHA256 Hash of an uploaded file, to be checked for validity after download", + "object_fileHash_param_offset_type_long": "Offset from where to start computing SHA-256 hash", + "object_fileHash_param_limit_type_int": "Length", + "object_fileHash_param_hash_type_bytes": "SHA-256 Hash of file chunk, to be checked for validity after download", + "object_inputClientProxy": "Info about an [MTProxy](https:\/\/core.telegram.org\/mtproto\/mtproto-transports#transport-obfuscation) used to connect.", + "object_inputClientProxy_param_address_type_string": "Proxy address", + "object_inputClientProxy_param_port_type_int": "Proxy port", + "object_help.termsOfServiceUpdateEmpty": "No changes were made to telegram's terms of service", + "object_help.termsOfServiceUpdateEmpty_param_expires_type_int": "New TOS updates will have to be queried using [help.getTermsOfServiceUpdate](..\/methods\/help.getTermsOfServiceUpdate.md) in `expires` seconds", + "object_help.termsOfServiceUpdate": "Info about an update of telegram's terms of service. If the terms of service are declined, then the [account.deleteAccount](..\/methods\/account.deleteAccount.md) method should be called with the reason \"Decline ToS update\"", + "object_help.termsOfServiceUpdate_param_expires_type_int": "New TOS updates will have to be queried using [help.getTermsOfServiceUpdate](..\/methods\/help.getTermsOfServiceUpdate.md) in `expires` seconds", + "object_help.termsOfServiceUpdate_param_terms_of_service_type_help.TermsOfService": "New terms of service", + "object_inputSecureFileUploaded": "Uploaded secure file, for more info [see the passport docs \u00bb](https:\/\/core.telegram.org\/passport\/encryption#inputsecurefile)", + "object_inputSecureFileUploaded_param_id_type_long": "Secure file ID", + "object_inputSecureFileUploaded_param_parts_type_int": "Secure file part count", + "object_inputSecureFileUploaded_param_md5_checksum_type_string": "MD5 hash of encrypted uploaded file, to be checked server-side", + "object_inputSecureFileUploaded_param_file_hash_type_bytes": "File hash", + "object_inputSecureFileUploaded_param_secret_type_bytes": "Secret", + "object_inputSecureFile": "Pre-uploaded [passport](https:\/\/core.telegram.org\/passport) file, for more info [see the passport docs \u00bb](https:\/\/core.telegram.org\/passport\/encryption#inputsecurefile)", + "object_inputSecureFile_param_id_type_long": "Secure file ID", + "object_inputSecureFile_param_access_hash_type_long": "Secure file access hash", + "object_secureFileEmpty": "Empty constructor", + "object_secureFile": "Secure [passport](https:\/\/core.telegram.org\/passport) file, for more info [see the passport docs \u00bb](https:\/\/core.telegram.org\/passport\/encryption#inputsecurefile)", + "object_secureFile_param_id_type_long": "ID", + "object_secureFile_param_access_hash_type_long": "Access hash", + "object_secureFile_param_size_type_long": "File size", + "object_secureFile_param_dc_id_type_int": "DC ID", + "object_secureFile_param_date_type_int": "Date of upload", + "object_secureFile_param_file_hash_type_bytes": "File hash", + "object_secureFile_param_secret_type_bytes": "Secret", + "object_secureData": "Secure [passport](https:\/\/core.telegram.org\/passport) data, for more info [see the passport docs \u00bb](https:\/\/core.telegram.org\/passport\/encryption#securedata)", + "object_secureData_param_data_type_bytes": "Data", + "object_secureData_param_data_hash_type_bytes": "Data hash", + "object_secureData_param_secret_type_bytes": "Secret", + "object_securePlainPhone": "Phone number to use in [telegram passport](https:\/\/core.telegram.org\/passport): [it must be verified, first \u00bb](https:\/\/core.telegram.org\/passport\/encryption#secureplaindata).", + "object_securePlainPhone_param_phone_type_string": "Phone number", + "object_securePlainEmail": "Email address to use in [telegram passport](https:\/\/core.telegram.org\/passport): [it must be verified, first \u00bb](https:\/\/core.telegram.org\/passport\/encryption#secureplaindata).", + "object_securePlainEmail_param_email_type_string": "Email address", + "object_secureValueTypePersonalDetails": "Personal details", + "object_secureValueTypePassport": "Passport", + "object_secureValueTypeDriverLicense": "Driver's license", + "object_secureValueTypeIdentityCard": "Identity card", + "object_secureValueTypeInternalPassport": "Internal [passport](https:\/\/core.telegram.org\/passport)", + "object_secureValueTypeAddress": "Address", + "object_secureValueTypeUtilityBill": "Utility bill", + "object_secureValueTypeBankStatement": "Bank statement", + "object_secureValueTypeRentalAgreement": "Rental agreement", + "object_secureValueTypePassportRegistration": "Internal registration [passport](https:\/\/core.telegram.org\/passport)", + "object_secureValueTypeTemporaryRegistration": "Temporary registration", + "object_secureValueTypePhone": "Phone", + "object_secureValueTypeEmail": "Email", + "object_secureValue": "Secure value", + "object_secureValue_param_type_type_SecureValueType": "Secure [passport](https:\/\/core.telegram.org\/passport) value type", + "object_secureValue_param_data_type_flags.0?SecureData": "Encrypted [Telegram Passport](https:\/\/core.telegram.org\/passport) element data", + "object_secureValue_param_front_side_type_flags.1?SecureFile": "Encrypted [passport](https:\/\/core.telegram.org\/passport) file with the front side of the document", + "object_secureValue_param_reverse_side_type_flags.2?SecureFile": "Encrypted [passport](https:\/\/core.telegram.org\/passport) file with the reverse side of the document", + "object_secureValue_param_selfie_type_flags.3?SecureFile": "Encrypted [passport](https:\/\/core.telegram.org\/passport) file with a selfie of the user holding the document", + "object_secureValue_param_translation_type_flags.6?Vector<SecureFile>": "Array of encrypted [passport](https:\/\/core.telegram.org\/passport) files with translated versions of the provided documents", + "object_secureValue_param_files_type_flags.4?Vector<SecureFile>": "Array of encrypted [passport](https:\/\/core.telegram.org\/passport) files with photos the of the documents", + "object_secureValue_param_plain_data_type_flags.5?SecurePlainData": "Plaintext verified [passport](https:\/\/core.telegram.org\/passport) data", + "object_secureValue_param_hash_type_bytes": "Data hash", + "object_inputSecureValue": "Secure value, [for more info see the passport docs \u00bb](https:\/\/core.telegram.org\/passport\/encryption#encryption)", + "object_inputSecureValue_param_type_type_SecureValueType": "Secure [passport](https:\/\/core.telegram.org\/passport) value type", + "object_inputSecureValue_param_data_type_flags.0?SecureData": "Encrypted [Telegram Passport](https:\/\/core.telegram.org\/passport) element data", + "object_inputSecureValue_param_front_side_type_flags.1?InputSecureFile": "Encrypted [passport](https:\/\/core.telegram.org\/passport) file with the front side of the document", + "object_inputSecureValue_param_reverse_side_type_flags.2?InputSecureFile": "Encrypted [passport](https:\/\/core.telegram.org\/passport) file with the reverse side of the document", + "object_inputSecureValue_param_selfie_type_flags.3?InputSecureFile": "Encrypted [passport](https:\/\/core.telegram.org\/passport) file with a selfie of the user holding the document", + "object_inputSecureValue_param_translation_type_flags.6?Vector<InputSecureFile>": "Array of encrypted [passport](https:\/\/core.telegram.org\/passport) files with translated versions of the provided documents", + "object_inputSecureValue_param_files_type_flags.4?Vector<InputSecureFile>": "Array of encrypted [passport](https:\/\/core.telegram.org\/passport) files with photos the of the documents", + "object_inputSecureValue_param_plain_data_type_flags.5?SecurePlainData": "Plaintext verified [passport](https:\/\/core.telegram.org\/passport) data", + "object_secureValueHash": "Secure value hash", + "object_secureValueHash_param_type_type_SecureValueType": "Secure value type", + "object_secureValueHash_param_hash_type_bytes": "Hash", + "object_secureValueErrorData": "Represents an issue in one of the data fields that was provided by the user. The error is considered resolved when the field's value changes.", + "object_secureValueErrorData_param_type_type_SecureValueType": "The section of the user's Telegram Passport which has the error, one of [secureValueTypePersonalDetails](..\/constructors\/secureValueTypePersonalDetails.md), [secureValueTypePassport](..\/constructors\/secureValueTypePassport.md), [secureValueTypeDriverLicense](..\/constructors\/secureValueTypeDriverLicense.md), [secureValueTypeIdentityCard](..\/constructors\/secureValueTypeIdentityCard.md), [secureValueTypeInternalPassport](..\/constructors\/secureValueTypeInternalPassport.md), [secureValueTypeAddress](..\/constructors\/secureValueTypeAddress.md)", + "object_secureValueErrorData_param_data_hash_type_bytes": "Data hash", + "object_secureValueErrorData_param_field_type_string": "Name of the data field which has the error", + "object_secureValueErrorData_param_text_type_string": "Error message", + "object_secureValueErrorFrontSide": "Represents an issue with the front side of a document. The error is considered resolved when the file with the front side of the document changes.", + "object_secureValueErrorFrontSide_param_type_type_SecureValueType": "One of [secureValueTypePassport](..\/constructors\/secureValueTypePassport.md), [secureValueTypeDriverLicense](..\/constructors\/secureValueTypeDriverLicense.md), [secureValueTypeIdentityCard](..\/constructors\/secureValueTypeIdentityCard.md), [secureValueTypeInternalPassport](..\/constructors\/secureValueTypeInternalPassport.md)", + "object_secureValueErrorFrontSide_param_file_hash_type_bytes": "File hash", + "object_secureValueErrorFrontSide_param_text_type_string": "Error message", + "object_secureValueErrorReverseSide": "Represents an issue with the reverse side of a document. The error is considered resolved when the file with reverse side of the document changes.", + "object_secureValueErrorReverseSide_param_type_type_SecureValueType": "One of [secureValueTypeDriverLicense](..\/constructors\/secureValueTypeDriverLicense.md), [secureValueTypeIdentityCard](..\/constructors\/secureValueTypeIdentityCard.md)", + "object_secureValueErrorReverseSide_param_file_hash_type_bytes": "File hash", + "object_secureValueErrorReverseSide_param_text_type_string": "Error message", + "object_secureValueErrorSelfie": "Represents an issue with the selfie with a document. The error is considered resolved when the file with the selfie changes.", + "object_secureValueErrorSelfie_param_type_type_SecureValueType": "One of [secureValueTypePassport](..\/constructors\/secureValueTypePassport.md), [secureValueTypeDriverLicense](..\/constructors\/secureValueTypeDriverLicense.md), [secureValueTypeIdentityCard](..\/constructors\/secureValueTypeIdentityCard.md), [secureValueTypeInternalPassport](..\/constructors\/secureValueTypeInternalPassport.md)", + "object_secureValueErrorSelfie_param_file_hash_type_bytes": "File hash", + "object_secureValueErrorSelfie_param_text_type_string": "Error message", + "object_secureValueErrorFile": "Represents an issue with a document scan. The error is considered resolved when the file with the document scan changes.", + "object_secureValueErrorFile_param_type_type_SecureValueType": "One of [secureValueTypeUtilityBill](..\/constructors\/secureValueTypeUtilityBill.md), [secureValueTypeBankStatement](..\/constructors\/secureValueTypeBankStatement.md), [secureValueTypeRentalAgreement](..\/constructors\/secureValueTypeRentalAgreement.md), [secureValueTypePassportRegistration](..\/constructors\/secureValueTypePassportRegistration.md), [secureValueTypeTemporaryRegistration](..\/constructors\/secureValueTypeTemporaryRegistration.md)", + "object_secureValueErrorFile_param_file_hash_type_bytes": "File hash", + "object_secureValueErrorFile_param_text_type_string": "Error message", + "object_secureValueErrorFiles": "Represents an issue with a list of scans. The error is considered resolved when the list of files containing the scans changes.", + "object_secureValueErrorFiles_param_type_type_SecureValueType": "One of [secureValueTypeUtilityBill](..\/constructors\/secureValueTypeUtilityBill.md), [secureValueTypeBankStatement](..\/constructors\/secureValueTypeBankStatement.md), [secureValueTypeRentalAgreement](..\/constructors\/secureValueTypeRentalAgreement.md), [secureValueTypePassportRegistration](..\/constructors\/secureValueTypePassportRegistration.md), [secureValueTypeTemporaryRegistration](..\/constructors\/secureValueTypeTemporaryRegistration.md)", + "object_secureValueErrorFiles_param_file_hash_type_Vector<bytes>": "File hash", + "object_secureValueErrorFiles_param_text_type_string": "Error message", + "object_secureValueError": "Secure value error", + "object_secureValueError_param_type_type_SecureValueType": "Type of element which has the issue", + "object_secureValueError_param_hash_type_bytes": "Hash", + "object_secureValueError_param_text_type_string": "Error message", + "object_secureValueErrorTranslationFile": "Represents an issue with one of the files that constitute the translation of a document. The error is considered resolved when the file changes.", + "object_secureValueErrorTranslationFile_param_type_type_SecureValueType": "One of [secureValueTypePersonalDetails](..\/constructors\/secureValueTypePersonalDetails.md), [secureValueTypePassport](..\/constructors\/secureValueTypePassport.md), [secureValueTypeDriverLicense](..\/constructors\/secureValueTypeDriverLicense.md), [secureValueTypeIdentityCard](..\/constructors\/secureValueTypeIdentityCard.md), [secureValueTypeInternalPassport](..\/constructors\/secureValueTypeInternalPassport.md), [secureValueTypeUtilityBill](..\/constructors\/secureValueTypeUtilityBill.md), [secureValueTypeBankStatement](..\/constructors\/secureValueTypeBankStatement.md), [secureValueTypeRentalAgreement](..\/constructors\/secureValueTypeRentalAgreement.md), [secureValueTypePassportRegistration](..\/constructors\/secureValueTypePassportRegistration.md), [secureValueTypeTemporaryRegistration](..\/constructors\/secureValueTypeTemporaryRegistration.md)", + "object_secureValueErrorTranslationFile_param_file_hash_type_bytes": "File hash", + "object_secureValueErrorTranslationFile_param_text_type_string": "Error message", + "object_secureValueErrorTranslationFiles": "Represents an issue with the translated version of a document. The error is considered resolved when a file with the document translation changes.", + "object_secureValueErrorTranslationFiles_param_type_type_SecureValueType": "One of [secureValueTypePersonalDetails](..\/constructors\/secureValueTypePersonalDetails.md), [secureValueTypePassport](..\/constructors\/secureValueTypePassport.md), [secureValueTypeDriverLicense](..\/constructors\/secureValueTypeDriverLicense.md), [secureValueTypeIdentityCard](..\/constructors\/secureValueTypeIdentityCard.md), [secureValueTypeInternalPassport](..\/constructors\/secureValueTypeInternalPassport.md), [secureValueTypeUtilityBill](..\/constructors\/secureValueTypeUtilityBill.md), [secureValueTypeBankStatement](..\/constructors\/secureValueTypeBankStatement.md), [secureValueTypeRentalAgreement](..\/constructors\/secureValueTypeRentalAgreement.md), [secureValueTypePassportRegistration](..\/constructors\/secureValueTypePassportRegistration.md), [secureValueTypeTemporaryRegistration](..\/constructors\/secureValueTypeTemporaryRegistration.md)", + "object_secureValueErrorTranslationFiles_param_file_hash_type_Vector<bytes>": "Hash", + "object_secureValueErrorTranslationFiles_param_text_type_string": "Error message", + "object_secureCredentialsEncrypted": "Encrypted credentials required to decrypt [telegram passport](https:\/\/core.telegram.org\/passport) data.", + "object_secureCredentialsEncrypted_param_data_type_bytes": "Encrypted JSON-serialized data with unique user's payload, data hashes and secrets required for EncryptedPassportElement decryption and authentication, as described in [decrypting data \u00bb](https:\/\/core.telegram.org\/passport#decrypting-data)", + "object_secureCredentialsEncrypted_param_hash_type_bytes": "Data hash for data authentication as described in [decrypting data \u00bb](https:\/\/core.telegram.org\/passport#decrypting-data)", + "object_secureCredentialsEncrypted_param_secret_type_bytes": "Secret, encrypted with the bot's public RSA key, required for data decryption as described in [decrypting data \u00bb](https:\/\/core.telegram.org\/passport#decrypting-data)", + "object_account.authorizationForm": "[Telegram Passport](https:\/\/core.telegram.org\/passport) authorization form", + "object_account.authorizationForm_param_required_types_type_Vector<SecureRequiredType>": "Required [Telegram Passport](https:\/\/core.telegram.org\/passport) documents", + "object_account.authorizationForm_param_values_type_Vector<SecureValue>": "Already submitted [Telegram Passport](https:\/\/core.telegram.org\/passport) documents", + "object_account.authorizationForm_param_errors_type_Vector<SecureValueError>": "[Telegram Passport](https:\/\/core.telegram.org\/passport) errors", + "object_account.authorizationForm_param_users_type_Vector<User>": "Info about the bot to which the form will be submitted", + "object_account.authorizationForm_param_privacy_policy_url_type_flags.0?string": "URL of the service's privacy policy", + "object_account.sentEmailCode": "The sent email code", + "object_account.sentEmailCode_param_email_pattern_type_string": "The email (to which the code was sent) must match this [pattern](https:\/\/core.telegram.org\/api\/pattern)", + "object_account.sentEmailCode_param_length_type_int": "The length of the verification code", + "object_help.deepLinkInfoEmpty": "Deep link info empty", + "object_help.deepLinkInfo": "Deep link info, see [the here for more details](https:\/\/core.telegram.org\/api\/links#unsupported-links)", + "object_help.deepLinkInfo_param_update_app_type_flags.0?true": "An update of the app is required to parse this link", + "object_help.deepLinkInfo_param_message_type_string": "Message to show to the user", + "object_help.deepLinkInfo_param_entities_type_flags.1?Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "object_savedPhoneContact": "Saved contact", + "object_savedPhoneContact_param_phone_type_string": "Phone number", + "object_savedPhoneContact_param_first_name_type_string": "First name", + "object_savedPhoneContact_param_last_name_type_string": "Last name", + "object_savedPhoneContact_param_date_type_int": "Date added", + "object_account.takeout": "Takeout info", + "object_account.takeout_param_id_type_long": "Takeout ID", + "object_passwordKdfAlgoUnknown": "Unknown KDF (most likely, the client is outdated and does not support the specified KDF algorithm)", + "object_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow": "This key derivation algorithm defines that [SRP 2FA login](https:\/\/core.telegram.org\/api\/srp) must be used", + "object_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow_param_salt1_type_bytes": "One of two salts used by the derivation function (see [SRP 2FA login](https:\/\/core.telegram.org\/api\/srp))", + "object_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow_param_salt2_type_bytes": "One of two salts used by the derivation function (see [SRP 2FA login](https:\/\/core.telegram.org\/api\/srp))", + "object_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow_param_g_type_int": "Base (see [SRP 2FA login](https:\/\/core.telegram.org\/api\/srp))", + "object_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow_param_p_type_bytes": "2048-bit modulus (see [SRP 2FA login](https:\/\/core.telegram.org\/api\/srp))", + "object_securePasswordKdfAlgoUnknown": "Unknown KDF algo (most likely the client has to be updated)", + "object_securePasswordKdfAlgoPBKDF2HMACSHA512iter100000": "PBKDF2 with SHA512 and 100000 iterations KDF algo", + "object_securePasswordKdfAlgoPBKDF2HMACSHA512iter100000_param_salt_type_bytes": "Salt", + "object_securePasswordKdfAlgoSHA512": "SHA512 KDF algo", + "object_securePasswordKdfAlgoSHA512_param_salt_type_bytes": "Salt", + "object_secureSecretSettings": "Secure settings", + "object_secureSecretSettings_param_secure_algo_type_SecurePasswordKdfAlgo": "Secure KDF algo", + "object_secureSecretSettings_param_secure_secret_type_bytes": "Secure secret", + "object_secureSecretSettings_param_secure_secret_id_type_long": "Secret ID", + "object_inputCheckPasswordEmpty": "There is no password", + "object_inputCheckPasswordSRP": "Constructor for checking the validity of a 2FA SRP password (see [SRP](https:\/\/core.telegram.org\/api\/srp))", + "object_inputCheckPasswordSRP_param_srp_id_type_long": "[SRP ID](https:\/\/core.telegram.org\/api\/srp)", + "object_inputCheckPasswordSRP_param_A_type_bytes": "`A` parameter (see [SRP](https:\/\/core.telegram.org\/api\/srp))", + "object_inputCheckPasswordSRP_param_M1_type_bytes": "`M1` parameter (see [SRP](https:\/\/core.telegram.org\/api\/srp))", + "object_secureRequiredType": "Required type", + "object_secureRequiredType_param_native_names_type_flags.0?true": "Native names", + "object_secureRequiredType_param_selfie_required_type_flags.1?true": "Is a selfie required", + "object_secureRequiredType_param_translation_required_type_flags.2?true": "Is a translation required", + "object_secureRequiredType_param_type_type_SecureValueType": "Secure value type", + "object_secureRequiredTypeOneOf": "One of", + "object_secureRequiredTypeOneOf_param_types_type_Vector<SecureRequiredType>": "Secure required value types", + "object_help.passportConfigNotModified": "Password configuration not modified", + "object_help.passportConfig": "Telegram [passport](https:\/\/core.telegram.org\/passport) configuration", + "object_help.passportConfig_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_help.passportConfig_param_countries_langs_type_DataJSON": "Localization", + "object_inputAppEvent": "Event that occurred in the application.", + "object_inputAppEvent_param_time_type_double": "Client's exact timestamp for the event", + "object_inputAppEvent_param_type_type_string": "Type of event", + "object_inputAppEvent_param_peer_type_long": "Arbitrary numeric value for more convenient selection of certain event types, or events referring to a certain object", + "object_inputAppEvent_param_data_type_JSONValue": "Details of the event", + "object_jsonObjectValue": "JSON key: value pair", + "object_jsonObjectValue_param_key_type_string": "Key", + "object_jsonObjectValue_param_value_type_JSONValue": "Value", + "object_jsonNull": "null JSON value", + "object_jsonBool": "JSON boolean value", + "object_jsonBool_param_value_type_Bool": "Value", + "object_jsonNumber": "JSON numeric value", + "object_jsonNumber_param_value_type_double": "Value", + "object_jsonString": "JSON string", + "object_jsonString_param_value_type_string": "Value", + "object_jsonArray": "JSON array", + "object_jsonArray_param_value_type_Vector<JSONValue>": "JSON values", + "object_jsonObject": "JSON object value", + "object_jsonObject_param_value_type_Vector<JSONObjectValue>": "Values", + "object_pageTableCell": "Table cell", + "object_pageTableCell_param_header_type_flags.0?true": "Is this element part of the column header", + "object_pageTableCell_param_align_center_type_flags.3?true": "Horizontally centered block", + "object_pageTableCell_param_align_right_type_flags.4?true": "Right-aligned block", + "object_pageTableCell_param_valign_middle_type_flags.5?true": "Vertically centered block", + "object_pageTableCell_param_valign_bottom_type_flags.6?true": "Block vertically-aligned to the bottom", + "object_pageTableCell_param_text_type_flags.7?RichText": "Content", + "object_pageTableCell_param_colspan_type_flags.1?int": "For how many columns should this cell extend", + "object_pageTableCell_param_rowspan_type_flags.2?int": "For how many rows should this cell extend", + "object_pageTableRow": "Table row", + "object_pageTableRow_param_cells_type_Vector<PageTableCell>": "Table cells", + "object_pageCaption": "Page caption", + "object_pageCaption_param_text_type_RichText": "Caption", + "object_pageCaption_param_credit_type_RichText": "Credits", + "object_pageListItemText": "List item", + "object_pageListItemText_param_text_type_RichText": "Text", + "object_pageListItemBlocks": "List item", + "object_pageListItemBlocks_param_blocks_type_Vector<PageBlock>": "Blocks", + "object_pageListOrderedItemText": "Ordered list of text items", + "object_pageListOrderedItemText_param_num_type_string": "Number of element within ordered list", + "object_pageListOrderedItemText_param_text_type_RichText": "Text", + "object_pageListOrderedItemBlocks": "Ordered list of [IV](https:\/\/instantview.telegram.org) blocks", + "object_pageListOrderedItemBlocks_param_num_type_string": "Number of element within ordered list", + "object_pageListOrderedItemBlocks_param_blocks_type_Vector<PageBlock>": "Item contents", + "object_pageRelatedArticle": "Related article", + "object_pageRelatedArticle_param_url_type_string": "URL of article", + "object_pageRelatedArticle_param_webpage_id_type_long": "Webpage ID of generated IV preview", + "object_pageRelatedArticle_param_title_type_flags.0?string": "Title", + "object_pageRelatedArticle_param_description_type_flags.1?string": "Description", + "object_pageRelatedArticle_param_photo_id_type_flags.2?long": "ID of preview photo", + "object_pageRelatedArticle_param_author_type_flags.3?string": "Author name", + "object_pageRelatedArticle_param_published_date_type_flags.4?int": "Date of publication", + "object_page": "[Instant view](https:\/\/instantview.telegram.org) page", + "object_page_param_part_type_flags.0?true": "Indicates that not full page preview is available to the client and it will need to fetch full Instant View from the server using [messages.getWebPagePreview](..\/methods\/messages.getWebPagePreview.md).", + "object_page_param_rtl_type_flags.1?true": "Whether the page contains RTL text", + "object_page_param_v2_type_flags.2?true": "Whether this is an [IV v2](https:\/\/instantview.telegram.org\/docs#what-39s-new-in-2-0) page", + "object_page_param_url_type_string": "Original page HTTP URL", + "object_page_param_blocks_type_Vector<PageBlock>": "Page elements (like with HTML elements, only as TL constructors)", + "object_page_param_photos_type_Vector<Photo>": "Photos in page", + "object_page_param_documents_type_Vector<Document>": "Media in page", + "object_page_param_views_type_flags.3?int": "View count", + "object_help.supportName": "Localized name for telegram support", + "object_help.supportName_param_name_type_string": "Localized name", + "object_help.userInfoEmpty": "Internal use", + "object_help.userInfo": "Internal use", + "object_help.userInfo_param_message_type_string": "Info", + "object_help.userInfo_param_entities_type_Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "object_help.userInfo_param_author_type_string": "Author", + "object_help.userInfo_param_date_type_int": "Date", + "object_pollAnswer": "A possible answer of a poll", + "object_pollAnswer_param_text_type_TextWithEntities": "Textual representation of the answer (only [Premium](https:\/\/core.telegram.org\/api\/premium) users can use [custom emoji entities](https:\/\/core.telegram.org\/api\/custom-emoji) here).", + "object_pollAnswer_param_option_type_bytes": "The param that has to be passed to [messages.sendVote](..\/methods\/messages.sendVote.md).", + "object_poll": "Poll", + "object_poll_param_id_type_long": "ID of the poll", + "object_poll_param_closed_type_flags.0?true": "Whether the poll is closed and doesn't accept any more answers", + "object_poll_param_public_voters_type_flags.1?true": "Whether cast votes are publicly visible to all users (non-anonymous poll)", + "object_poll_param_multiple_choice_type_flags.2?true": "Whether multiple options can be chosen as answer", + "object_poll_param_quiz_type_flags.3?true": "Whether this is a quiz (with wrong and correct answers, results shown in the return type)", + "object_poll_param_question_type_TextWithEntities": "The question of the poll (only [Premium](https:\/\/core.telegram.org\/api\/premium) users can use [custom emoji entities](https:\/\/core.telegram.org\/api\/custom-emoji) here).", + "object_poll_param_answers_type_Vector<PollAnswer>": "The possible answers (2-[poll\\_answers\\_max](https:\/\/core.telegram.org\/api\/config#poll-answers-max)), vote using [messages.sendVote](..\/methods\/messages.sendVote.md).", + "object_poll_param_close_period_type_flags.4?int": "Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with close\\_date.", + "object_poll_param_close_date_type_flags.5?int": "Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future; can't be used together with close\\_period.", + "object_pollAnswerVoters": "A poll answer, and how users voted on it", + "object_pollAnswerVoters_param_chosen_type_flags.0?true": "Whether we have chosen this answer", + "object_pollAnswerVoters_param_correct_type_flags.1?true": "For quizzes, whether the option we have chosen is correct", + "object_pollAnswerVoters_param_option_type_bytes": "The param that has to be passed to [messages.sendVote](..\/methods\/messages.sendVote.md).", + "object_pollAnswerVoters_param_voters_type_int": "How many users voted for this option", + "object_pollResults": "Results of poll", + "object_pollResults_param_min_type_flags.0?true": "Similar to [min](https:\/\/core.telegram.org\/api\/min) objects, used for poll constructors that are the same for all users so they don't have the option chosen by the current user (you can use [messages.getPollResults](..\/methods\/messages.getPollResults.md) to get the full poll results).", + "object_pollResults_param_results_type_flags.1?Vector<PollAnswerVoters>": "Poll results", + "object_pollResults_param_total_voters_type_flags.2?int": "Total number of people that voted in the poll", + "object_pollResults_param_recent_voters_type_flags.3?Vector<Peer>": "IDs of the last users that recently voted in the poll", + "object_pollResults_param_solution_type_flags.4?string": "Explanation of quiz solution", + "object_pollResults_param_solution_entities_type_flags.4?Vector<MessageEntity>": "[Message entities for styled text in quiz solution](https:\/\/core.telegram.org\/api\/entities)", + "object_chatOnlines": "Number of online users in a chat", + "object_chatOnlines_param_onlines_type_int": "Number of online users", + "object_statsURL": "URL with chat statistics", + "object_statsURL_param_url_type_string": "Chat statistics", + "object_chatAdminRights": "Represents the rights of an admin in a [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel).", + "object_chatAdminRights_param_change_info_type_flags.0?true": "If set, allows the admin to modify the description of the [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "object_chatAdminRights_param_post_messages_type_flags.1?true": "If set, allows the admin to post messages in the [channel](https:\/\/core.telegram.org\/api\/channel)", + "object_chatAdminRights_param_edit_messages_type_flags.2?true": "If set, allows the admin to also edit messages from other admins in the [channel](https:\/\/core.telegram.org\/api\/channel)", + "object_chatAdminRights_param_delete_messages_type_flags.3?true": "If set, allows the admin to also delete messages from other admins in the [channel](https:\/\/core.telegram.org\/api\/channel)", + "object_chatAdminRights_param_ban_users_type_flags.4?true": "If set, allows the admin to ban users from the [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "object_chatAdminRights_param_invite_users_type_flags.5?true": "If set, allows the admin to invite users in the [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "object_chatAdminRights_param_pin_messages_type_flags.7?true": "If set, allows the admin to pin messages in the [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "object_chatAdminRights_param_add_admins_type_flags.9?true": "If set, allows the admin to add other admins with the same (or more limited) permissions in the [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "object_chatAdminRights_param_anonymous_type_flags.10?true": "Whether this admin is anonymous", + "object_chatAdminRights_param_manage_call_type_flags.11?true": "If set, allows the admin to change group call\/livestream settings", + "object_chatAdminRights_param_other_type_flags.12?true": "Set this flag if none of the other flags are set, but you still want the user to be an admin: if this or any of the other flags are set, the admin can get the chat [admin log](https:\/\/core.telegram.org\/api\/recent-actions), get [chat statistics](https:\/\/core.telegram.org\/api\/stats), get [message statistics in channels](https:\/\/core.telegram.org\/api\/stats), get channel members, see anonymous administrators in supergroups and ignore slow mode.", + "object_chatAdminRights_param_manage_topics_type_flags.13?true": "If set, allows the admin to create, delete or modify [forum topics \u00bb](https:\/\/core.telegram.org\/api\/forum#forum-topics).", + "object_chatAdminRights_param_post_stories_type_flags.14?true": "If set, allows the admin to post [stories](https:\/\/core.telegram.org\/api\/stories) as the [channel](https:\/\/core.telegram.org\/api\/channel).", + "object_chatAdminRights_param_edit_stories_type_flags.15?true": "If set, allows the admin to edit [stories](https:\/\/core.telegram.org\/api\/stories) posted by the other admins of the [channel](https:\/\/core.telegram.org\/api\/channel).", + "object_chatAdminRights_param_delete_stories_type_flags.16?true": "If set, allows the admin to delete [stories](https:\/\/core.telegram.org\/api\/stories) posted by the other admins of the [channel](https:\/\/core.telegram.org\/api\/channel).", + "object_chatAdminRights_param_manage_direct_messages_type_flags.17?true": "If set, allows the admin to manage the [direct messages monoforum \u00bb](https:\/\/core.telegram.org\/api\/monoforum) and [decline suggested posts \u00bb](https:\/\/core.telegram.org\/api\/suggested-posts).", + "object_chatBannedRights": "Represents the rights of a normal user in a [supergroup\/channel\/chat](https:\/\/core.telegram.org\/api\/channel). In this case, the flags are inverted: if set, a flag **does not allow** a user to do X.", + "object_chatBannedRights_param_view_messages_type_flags.0?true": "If set, does not allow a user to view messages in a [supergroup\/channel\/chat](https:\/\/core.telegram.org\/api\/channel)", + "object_chatBannedRights_param_send_messages_type_flags.1?true": "If set, does not allow a user to send messages in a [supergroup\/chat](https:\/\/core.telegram.org\/api\/channel)", + "object_chatBannedRights_param_send_media_type_flags.2?true": "If set, does not allow a user to send any media in a [supergroup\/chat](https:\/\/core.telegram.org\/api\/channel)", + "object_chatBannedRights_param_send_stickers_type_flags.3?true": "If set, does not allow a user to send stickers in a [supergroup\/chat](https:\/\/core.telegram.org\/api\/channel)", + "object_chatBannedRights_param_send_gifs_type_flags.4?true": "If set, does not allow a user to send gifs in a [supergroup\/chat](https:\/\/core.telegram.org\/api\/channel)", + "object_chatBannedRights_param_send_games_type_flags.5?true": "If set, does not allow a user to send games in a [supergroup\/chat](https:\/\/core.telegram.org\/api\/channel)", + "object_chatBannedRights_param_send_inline_type_flags.6?true": "If set, does not allow a user to use inline bots in a [supergroup\/chat](https:\/\/core.telegram.org\/api\/channel).", + "object_chatBannedRights_param_embed_links_type_flags.7?true": "If set, does not allow a user to embed links in the messages of a [supergroup\/chat](https:\/\/core.telegram.org\/api\/channel)", + "object_chatBannedRights_param_send_polls_type_flags.8?true": "If set, does not allow a user to send polls in a [supergroup\/chat](https:\/\/core.telegram.org\/api\/channel)", + "object_chatBannedRights_param_change_info_type_flags.10?true": "If set, does not allow any user to change the description of a [supergroup\/chat](https:\/\/core.telegram.org\/api\/channel)", + "object_chatBannedRights_param_invite_users_type_flags.15?true": "If set, does not allow any user to invite users in a [supergroup\/chat](https:\/\/core.telegram.org\/api\/channel)", + "object_chatBannedRights_param_pin_messages_type_flags.17?true": "If set, does not allow any user to pin messages in a [supergroup\/chat](https:\/\/core.telegram.org\/api\/channel)", + "object_chatBannedRights_param_manage_topics_type_flags.18?true": "If set, does not allow any user to create, delete or modify [forum topics \u00bb](https:\/\/core.telegram.org\/api\/forum#forum-topics).", + "object_chatBannedRights_param_send_photos_type_flags.19?true": "If set, does not allow a user to send photos in a [supergroup\/chat](https:\/\/core.telegram.org\/api\/channel).", + "object_chatBannedRights_param_send_videos_type_flags.20?true": "If set, does not allow a user to send videos in a [supergroup\/chat](https:\/\/core.telegram.org\/api\/channel).", + "object_chatBannedRights_param_send_roundvideos_type_flags.21?true": "If set, does not allow a user to send round videos in a [supergroup\/chat](https:\/\/core.telegram.org\/api\/channel).", + "object_chatBannedRights_param_send_audios_type_flags.22?true": "If set, does not allow a user to send audio files in a [supergroup\/chat](https:\/\/core.telegram.org\/api\/channel).", + "object_chatBannedRights_param_send_voices_type_flags.23?true": "If set, does not allow a user to send voice messages in a [supergroup\/chat](https:\/\/core.telegram.org\/api\/channel).", + "object_chatBannedRights_param_send_docs_type_flags.24?true": "If set, does not allow a user to send documents in a [supergroup\/chat](https:\/\/core.telegram.org\/api\/channel).", + "object_chatBannedRights_param_send_plain_type_flags.25?true": "If set, does not allow a user to send text messages in a [supergroup\/chat](https:\/\/core.telegram.org\/api\/channel).", + "object_chatBannedRights_param_until_date_type_int": "Validity of said permissions (it is considered forever any value less then 30 seconds or more then 366 days).", + "object_inputWallPaper": "[Wallpaper](https:\/\/core.telegram.org\/api\/wallpapers)", + "object_inputWallPaper_param_id_type_long": "[Wallpaper](https:\/\/core.telegram.org\/api\/wallpapers) ID", + "object_inputWallPaper_param_access_hash_type_long": "Access hash", + "object_inputWallPaperSlug": "[Wallpaper](https:\/\/core.telegram.org\/api\/wallpapers) by slug (a unique ID, obtained from a [wallpaper link \u00bb](https:\/\/core.telegram.org\/api\/links#wallpaper-links))", + "object_inputWallPaperSlug_param_slug_type_string": "Unique wallpaper ID", + "object_inputWallPaperNoFile": "[Wallpaper](https:\/\/core.telegram.org\/api\/wallpapers) with no file access hash, used for example when deleting (`unsave=true`) wallpapers using [account.saveWallPaper](..\/methods\/account.saveWallPaper.md), specifying just the wallpaper ID.", + "object_inputWallPaperNoFile_param_id_type_long": "Wallpaper ID", + "object_account.wallPapersNotModified": "No new [wallpapers](https:\/\/core.telegram.org\/api\/wallpapers) were found", + "object_account.wallPapers": "Installed [wallpapers](https:\/\/core.telegram.org\/api\/wallpapers)", + "object_account.wallPapers_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_account.wallPapers_param_wallpapers_type_Vector<WallPaper>": "[Wallpapers](https:\/\/core.telegram.org\/api\/wallpapers)", + "object_codeSettings": "Settings used by telegram servers for sending the confirm code.\n\nExample implementations: [telegram for android](https:\/\/github.com\/DrKLO\/Telegram\/blob\/master\/TMessagesProj\/src\/main\/java\/org\/telegram\/ui\/LoginActivity.java), [tdlib](https:\/\/github.com\/tdlib\/td\/tree\/master\/td\/telegram\/SendCodeHelper.cpp).", + "object_codeSettings_param_allow_flashcall_type_flags.0?true": "Whether to allow phone verification via [phone calls](https:\/\/core.telegram.org\/api\/auth).", + "object_codeSettings_param_current_number_type_flags.1?true": "Pass true if the phone number is used on the current device. Ignored if allow\\_flashcall is not set.", + "object_codeSettings_param_allow_app_hash_type_flags.4?true": "If a token that will be included in eventually sent SMSs is required: required in newer versions of android, to use the [android SMS receiver APIs](https:\/\/developers.google.com\/identity\/sms-retriever\/overview)", + "object_codeSettings_param_allow_missed_call_type_flags.5?true": "Whether this device supports receiving the code using the [auth.codeTypeMissedCall](..\/constructors\/auth.codeTypeMissedCall.md) method", + "object_codeSettings_param_allow_firebase_type_flags.7?true": "Whether Firebase auth is supported", + "object_codeSettings_param_unknown_number_type_flags.9?true": "Set this flag if there is a SIM card in the current device, but it is not possible to check whether the specified phone number matches the SIM's phone number.", + "object_codeSettings_param_logout_tokens_type_flags.6?Vector<bytes>": "Previously stored future auth tokens, see [the documentation for more info \u00bb](https:\/\/core.telegram.org\/api\/auth#future-auth-tokens)", + "object_codeSettings_param_token_type_flags.8?string": "Used only by official iOS apps for Firebase auth: device token for apple push.", + "object_codeSettings_param_app_sandbox_type_flags.8?Bool": "Used only by official iOS apps for firebase auth: whether a sandbox-certificate will be used during transmission of the push notification.", + "object_wallPaperSettings": "[Wallpaper](https:\/\/core.telegram.org\/api\/wallpapers) rendering information.", + "object_wallPaperSettings_param_blur_type_flags.1?true": "For [image wallpapers \u00bb](https:\/\/core.telegram.org\/api\/wallpapers#image-wallpapers): if set, the JPEG must be downscaled to fit in 450x450 square and then box-blurred with radius 12.", + "object_wallPaperSettings_param_motion_type_flags.2?true": "If set, the background needs to be slightly moved when the device is rotated.", + "object_wallPaperSettings_param_background_color_type_flags.0?int": "Used for [solid \u00bb](https:\/\/core.telegram.org\/api\/wallpapers#solid-fill), [gradient \u00bb](https:\/\/core.telegram.org\/api\/wallpapers#gradient-fill) and [freeform gradient \u00bb](https:\/\/core.telegram.org\/api\/wallpapers#freeform-gradient-fill) fills.", + "object_wallPaperSettings_param_second_background_color_type_flags.4?int": "Used for [gradient \u00bb](https:\/\/core.telegram.org\/api\/wallpapers#gradient-fill) and [freeform gradient \u00bb](https:\/\/core.telegram.org\/api\/wallpapers#freeform-gradient-fill) fills.", + "object_wallPaperSettings_param_third_background_color_type_flags.5?int": "Used for [freeform gradient \u00bb](https:\/\/core.telegram.org\/api\/wallpapers#freeform-gradient-fill) fills.", + "object_wallPaperSettings_param_fourth_background_color_type_flags.6?int": "Used for [freeform gradient \u00bb](https:\/\/core.telegram.org\/api\/wallpapers#freeform-gradient-fill) fills.", + "object_wallPaperSettings_param_intensity_type_flags.3?int": "Used for [pattern wallpapers \u00bb](https:\/\/core.telegram.org\/api\/wallpapers#pattern-wallpapers).", + "object_wallPaperSettings_param_rotation_type_flags.4?int": "Clockwise rotation angle of the gradient, in degrees; 0-359. Should be always divisible by 45.", + "object_wallPaperSettings_param_emoticon_type_flags.7?string": "If set, this wallpaper can be used as a channel wallpaper and is represented by the specified UTF-8 emoji.", + "object_autoDownloadSettings": "Autodownload settings", + "object_autoDownloadSettings_param_disabled_type_flags.0?true": "Disable automatic media downloads?", + "object_autoDownloadSettings_param_video_preload_large_type_flags.1?true": "Whether to preload the first seconds of videos larger than the specified limit", + "object_autoDownloadSettings_param_audio_preload_next_type_flags.2?true": "Whether to preload the next audio track when you're listening to music", + "object_autoDownloadSettings_param_phonecalls_less_data_type_flags.3?true": "Whether to enable data saving mode in phone calls", + "object_autoDownloadSettings_param_stories_preload_type_flags.4?true": "Whether to preload [stories](https:\/\/core.telegram.org\/api\/stories); in particular, the first [documentAttributeVideo](..\/constructors\/documentAttributeVideo.md).`preload_prefix_size` bytes of story videos should be preloaded.", + "object_autoDownloadSettings_param_photo_size_max_type_int": "Maximum size of photos to preload", + "object_autoDownloadSettings_param_video_size_max_type_long": "Maximum size of videos to preload", + "object_autoDownloadSettings_param_file_size_max_type_long": "Maximum size of other files to preload", + "object_autoDownloadSettings_param_video_upload_maxbitrate_type_int": "Maximum suggested bitrate for **uploading** videos", + "object_autoDownloadSettings_param_small_queue_active_operations_max_type_int": "A limit, specifying the maximum number of files that should be downloaded in parallel from the same DC, for files smaller than 20MB.", + "object_autoDownloadSettings_param_large_queue_active_operations_max_type_int": "A limit, specifying the maximum number of files that should be downloaded in parallel from the same DC, for files bigger than 20MB.", + "object_account.autoDownloadSettings": "Media autodownload settings", + "object_account.autoDownloadSettings_param_low_type_AutoDownloadSettings": "Low data usage preset", + "object_account.autoDownloadSettings_param_medium_type_AutoDownloadSettings": "Medium data usage preset", + "object_account.autoDownloadSettings_param_high_type_AutoDownloadSettings": "High data usage preset", + "object_emojiKeyword": "Emoji keyword", + "object_emojiKeyword_param_keyword_type_string": "Keyword", + "object_emojiKeyword_param_emoticons_type_Vector<string>": "Emojis associated to keyword", + "object_emojiKeywordDeleted": "Deleted emoji keyword", + "object_emojiKeywordDeleted_param_keyword_type_string": "Keyword", + "object_emojiKeywordDeleted_param_emoticons_type_Vector<string>": "Emojis that were associated to keyword", + "object_emojiKeywordsDifference": "Changes to emoji keywords", + "object_emojiKeywordsDifference_param_lang_code_type_string": "Language code for keywords", + "object_emojiKeywordsDifference_param_from_version_type_int": "Previous emoji keyword list version", + "object_emojiKeywordsDifference_param_version_type_int": "Current version of emoji keyword list", + "object_emojiKeywordsDifference_param_keywords_type_Vector<EmojiKeyword>": "Emojis associated to keywords", + "object_emojiURL": "An HTTP URL which can be used to automatically log in into translation platform and suggest new emoji replacements. The URL will be valid for 30 seconds after generation", + "object_emojiURL_param_url_type_string": "An HTTP URL which can be used to automatically log in into translation platform and suggest new emoji replacements. The URL will be valid for 30 seconds after generation", + "object_emojiLanguage": "Emoji language", + "object_emojiLanguage_param_lang_code_type_string": "Language code", + "object_folder": "Folder", + "object_folder_param_autofill_new_broadcasts_type_flags.0?true": "Automatically add new channels to this folder", + "object_folder_param_autofill_public_groups_type_flags.1?true": "Automatically add joined new public supergroups to this folder", + "object_folder_param_autofill_new_correspondents_type_flags.2?true": "Automatically add new private chats to this folder", + "object_folder_param_id_type_int": "Folder ID", + "object_folder_param_title_type_string": "Folder title", + "object_folder_param_photo_type_flags.3?ChatPhoto": "Folder picture", + "object_inputFolderPeer": "Peer in a folder", + "object_inputFolderPeer_param_peer_type_InputPeer": "Peer", + "object_inputFolderPeer_param_folder_id_type_int": "[Peer folder ID, for more info click here](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "object_folderPeer": "Peer in a folder", + "object_folderPeer_param_peer_type_Peer": "Folder peer info", + "object_folderPeer_param_folder_id_type_int": "[Peer folder ID, for more info click here](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "object_messages.searchCounter": "Indicates how many results would be found by a [messages.search](..\/methods\/messages.search.md) call with the same parameters", + "object_messages.searchCounter_param_inexact_type_flags.1?true": "If set, the results may be inexact", + "object_messages.searchCounter_param_filter_type_MessagesFilter": "Provided message filter", + "object_messages.searchCounter_param_count_type_int": "Number of results that were found server-side", + "object_urlAuthResultRequest": "Details about the authorization request, for more info [click here \u00bb](https:\/\/core.telegram.org\/api\/url-authorization)", + "object_urlAuthResultRequest_param_request_write_access_type_flags.0?true": "Whether the bot would like to send messages to the user", + "object_urlAuthResultRequest_param_bot_type_User": "Username of a bot, which will be used for user authorization. If not specified, the current bot's username will be assumed. The url's domain must be the same as the domain linked with the bot. See [Linking your domain to the bot](https:\/\/core.telegram.org\/widgets\/login#linking-your-domain-to-the-bot) for more details.", + "object_urlAuthResultRequest_param_domain_type_string": "The domain name of the website on which the user will log in.", + "object_urlAuthResultAccepted": "Details about an accepted authorization request, for more info [click here \u00bb](https:\/\/core.telegram.org\/api\/url-authorization)", + "object_urlAuthResultAccepted_param_url_type_string": "The URL name of the website on which the user has logged in.", + "object_urlAuthResultDefault": "Details about an accepted authorization request, for more info [click here \u00bb](https:\/\/core.telegram.org\/api\/url-authorization)", + "object_channelLocationEmpty": "No location (normal supergroup)", + "object_channelLocation": "Geographical location of supergroup (geogroups)", + "object_channelLocation_param_geo_point_type_GeoPoint": "Geographical location of supergroup", + "object_channelLocation_param_address_type_string": "Textual description of the address", + "object_peerLocated": "Peer geolocated nearby", + "object_peerLocated_param_peer_type_Peer": "Peer", + "object_peerLocated_param_expires_type_int": "Validity period of current data", + "object_peerLocated_param_distance_type_int": "Distance from the peer in meters", + "object_peerSelfLocated": "Current peer", + "object_peerSelfLocated_param_expires_type_int": "Expiry of geolocation info for current peer", + "object_restrictionReason": "Restriction reason.\n\nSee [here \u00bb](https:\/\/core.telegram.org\/api\/age-verification) for the full flow to use for restricted or age-gated content.", + "object_restrictionReason_param_platform_type_string": "Platform identifier (ios, android, wp, all, etc.), can be concatenated with a dash as separator (`android-ios`, `ios-wp`, etc)", + "object_restrictionReason_param_reason_type_string": "Restriction reason (`porno`, `terms`, etc.). Ignore this restriction reason if it is contained in the [ignore\\_restriction\\_reasons \u00bb](https:\/\/core.telegram.org\/api\/config#ignore-restriction-reasons) client configuration parameter.", + "object_restrictionReason_param_text_type_string": "Error message to be shown to the user", + "object_inputTheme": "Theme", + "object_inputTheme_param_id_type_long": "ID", + "object_inputTheme_param_access_hash_type_long": "Access hash", + "object_inputThemeSlug": "Theme by theme ID", + "object_inputThemeSlug_param_slug_type_string": "Unique theme ID obtained from a [theme deep link \u00bb](https:\/\/core.telegram.org\/api\/links#theme-links)", + "object_theme": "Theme", + "object_theme_param_creator_type_flags.0?true": "Whether the current user is the creator of this theme", + "object_theme_param_default_type_flags.1?true": "Whether this is the default theme", + "object_theme_param_for_chat_type_flags.5?true": "Whether this theme is meant to be used as a [chat theme](https:\/\/telegram.org\/blog\/chat-themes-interactive-emoji-read-receipts)", + "object_theme_param_id_type_long": "Theme ID", + "object_theme_param_access_hash_type_long": "Theme access hash", + "object_theme_param_slug_type_string": "Unique theme ID", + "object_theme_param_title_type_string": "Theme name", + "object_theme_param_document_type_flags.2?Document": "Theme", + "object_theme_param_settings_type_flags.3?Vector<ThemeSettings>": "Theme settings", + "object_theme_param_emoticon_type_flags.6?string": "Theme emoji", + "object_theme_param_installs_count_type_flags.4?int": "Installation count", + "object_account.themesNotModified": "No new themes were installed", + "object_account.themes": "Installed themes", + "object_account.themes_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_account.themes_param_themes_type_Vector<Theme>": "Themes", + "object_auth.loginToken": "Login token (for [QR code login](https:\/\/core.telegram.org\/api\/qr-login))", + "object_auth.loginToken_param_expires_type_int": "Expiration date of QR code", + "object_auth.loginToken_param_token_type_bytes": "Token to render in QR code", + "object_auth.loginTokenMigrateTo": "Repeat the query to the specified DC", + "object_auth.loginTokenMigrateTo_param_dc_id_type_int": "DC ID", + "object_auth.loginTokenMigrateTo_param_token_type_bytes": "Token to use for login", + "object_auth.loginTokenSuccess": "Login via token (QR code) succeeded!", + "object_auth.loginTokenSuccess_param_authorization_type_auth.Authorization": "Authorization info", + "object_account.contentSettings": "Sensitive content settings", + "object_account.contentSettings_param_sensitive_enabled_type_flags.0?true": "Whether viewing of sensitive (NSFW) content is enabled", + "object_account.contentSettings_param_sensitive_can_change_type_flags.1?true": "Whether the current client can change the sensitive content settings to view NSFW content", + "object_messages.inactiveChats": "Inactive chat list", + "object_messages.inactiveChats_param_dates_type_Vector<int>": "When was the chat last active", + "object_messages.inactiveChats_param_chats_type_Vector<Chat>": "Chat list", + "object_messages.inactiveChats_param_users_type_Vector<User>": "Users mentioned in the chat list", + "object_baseThemeClassic": "Classic theme", + "object_baseThemeDay": "Day theme", + "object_baseThemeNight": "Night theme", + "object_baseThemeTinted": "Tinted theme", + "object_baseThemeArctic": "Arctic theme", + "object_inputThemeSettings": "Theme settings", + "object_inputThemeSettings_param_message_colors_animated_type_flags.2?true": "If set, the freeform gradient fill needs to be animated on every sent message", + "object_inputThemeSettings_param_base_theme_type_BaseTheme": "Default theme on which this theme is based", + "object_inputThemeSettings_param_accent_color_type_int": "Accent color, ARGB format", + "object_inputThemeSettings_param_outbox_accent_color_type_flags.3?int": "Accent color of outgoing messages in ARGB format", + "object_inputThemeSettings_param_message_colors_type_flags.0?Vector<int>": "The fill to be used as a background for outgoing messages, in RGB24 format.
If just one or two equal colors are provided, describes a solid fill of a background.
If two different colors are provided, describes the top and bottom colors of a 0-degree gradient.
If three or four colors are provided, describes a freeform gradient fill of a background.", + "object_inputThemeSettings_param_wallpaper_type_flags.1?InputWallPaper": "[inputWallPaper](..\/constructors\/inputWallPaper.md) or [inputWallPaperSlug](..\/constructors\/inputWallPaper.md) when passing wallpaper files for [image](https:\/\/core.telegram.org\/api\/wallpapers#image-wallpapers) or [pattern](https:\/\/core.telegram.org\/api\/wallpapers#pattern-wallpapers) wallpapers, [inputWallPaperNoFile](..\/constructors\/inputWallPaperNoFile.md) with `id=0` otherwise.", + "object_inputThemeSettings_param_wallpaper_settings_type_flags.1?WallPaperSettings": "[Wallpaper](https:\/\/core.telegram.org\/api\/wallpapers) settings.", + "object_themeSettings": "Theme settings", + "object_themeSettings_param_message_colors_animated_type_flags.2?true": "If set, the freeform gradient fill needs to be animated on every sent message.", + "object_themeSettings_param_base_theme_type_BaseTheme": "Base theme", + "object_themeSettings_param_accent_color_type_int": "Accent color, ARGB format", + "object_themeSettings_param_outbox_accent_color_type_flags.3?int": "Accent color of outgoing messages in ARGB format", + "object_themeSettings_param_message_colors_type_flags.0?Vector<int>": "The fill to be used as a background for outgoing messages, in RGB24 format.
If just one or two equal colors are provided, describes a solid fill of a background.
If two different colors are provided, describes the top and bottom colors of a 0-degree gradient.
If three or four colors are provided, describes a freeform gradient fill of a background.", + "object_themeSettings_param_wallpaper_type_flags.1?WallPaper": "[Wallpaper](https:\/\/core.telegram.org\/api\/wallpapers)", + "object_webPageAttributeTheme": "Page theme", + "object_webPageAttributeTheme_param_documents_type_flags.0?Vector<Document>": "Theme files", + "object_webPageAttributeTheme_param_settings_type_flags.1?ThemeSettings": "Theme settings", + "object_webPageAttributeStory": "Webpage preview of a Telegram story", + "object_webPageAttributeStory_param_peer_type_Peer": "Peer that posted the story", + "object_webPageAttributeStory_param_id_type_int": "[Story ID](https:\/\/core.telegram.org\/api\/stories#watching-stories)", + "object_webPageAttributeStory_param_story_type_flags.0?StoryItem": "May contain the story, if not the story should be fetched when and if needed using [stories.getStoriesByID](..\/methods\/stories.getStoriesByID.md) with the above `id` and `peer`.", + "object_webPageAttributeStickerSet": "Contains info about a [stickerset \u00bb](https:\/\/core.telegram.org\/api\/stickers), for a [webPage](..\/constructors\/webPage.md) preview of a [stickerset deep link \u00bb](https:\/\/core.telegram.org\/api\/links#stickerset-links) (the [webPage](..\/constructors\/webPage.md) will have a `type` of `telegram_stickerset`).", + "object_webPageAttributeStickerSet_param_emojis_type_flags.0?true": "Whether this i s a [custom emoji stickerset](https:\/\/core.telegram.org\/api\/custom-emoji).", + "object_webPageAttributeStickerSet_param_text_color_type_flags.1?true": "Whether the color of this TGS custom emoji stickerset should be changed to the text color when used in messages, the accent color if used as emoji status, white on chat photos, or another appropriate color based on context.", + "object_webPageAttributeStickerSet_param_stickers_type_Vector<Document>": "A subset of the stickerset in the stickerset.", + "object_webPageAttributeUniqueStarGift": "Contains info about [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts) for a [webPage](..\/constructors\/webPage.md) preview of a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts) (the [webPage](..\/constructors\/webPage.md) will have a `type` of `telegram_nft`).", + "object_webPageAttributeUniqueStarGift_param_gift_type_StarGift": "The [starGiftUnique](..\/constructors\/starGiftUnique.md) constructor.", + "object_webPageAttributeStarGiftCollection": "Contains info about a [gift collection \u00bb](https:\/\/core.telegram.org\/api\/gifts#gift-collections) for a [webPage](..\/constructors\/webPage.md) preview of a [gift collection \u00bb](https:\/\/core.telegram.org\/api\/gifts#gift-collections) (the [webPage](..\/constructors\/webPage.md) will have a `type` of `telegram_collection`).", + "object_webPageAttributeStarGiftCollection_param_icons_type_Vector<Document>": "Gifts in the collection.", + "object_messages.votesList": "How users voted in a poll", + "object_messages.votesList_param_count_type_int": "Total number of votes for all options (or only for the chosen `option`, if provided to [messages.getPollVotes](..\/methods\/messages.getPollVotes.md))", + "object_messages.votesList_param_votes_type_Vector<MessagePeerVote>": "Vote info for each user", + "object_messages.votesList_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_messages.votesList_param_users_type_Vector<User>": "Info about users that voted in the poll", + "object_messages.votesList_param_next_offset_type_flags.0?string": "Offset to use with the next [messages.getPollVotes](..\/methods\/messages.getPollVotes.md) request, empty string if no more results are available.", + "object_bankCardOpenUrl": "Credit card info URL provided by the bank", + "object_bankCardOpenUrl_param_url_type_string": "Info URL", + "object_bankCardOpenUrl_param_name_type_string": "Bank name", + "object_payments.bankCardData": "Credit card info, provided by the card's bank(s)", + "object_payments.bankCardData_param_title_type_string": "Credit card title", + "object_payments.bankCardData_param_open_urls_type_Vector<BankCardOpenUrl>": "Info URL(s) provided by the card's bank(s)", + "object_dialogFilter": "Dialog filter AKA [folder](https:\/\/core.telegram.org\/api\/folders)", + "object_dialogFilter_param_contacts_type_flags.0?true": "Whether to include all contacts in this [folder](https:\/\/core.telegram.org\/api\/folders)", + "object_dialogFilter_param_non_contacts_type_flags.1?true": "Whether to include all non-contacts in this [folder](https:\/\/core.telegram.org\/api\/folders)", + "object_dialogFilter_param_groups_type_flags.2?true": "Whether to include all groups in this [folder](https:\/\/core.telegram.org\/api\/folders)", + "object_dialogFilter_param_broadcasts_type_flags.3?true": "Whether to include all channels in this [folder](https:\/\/core.telegram.org\/api\/folders)", + "object_dialogFilter_param_bots_type_flags.4?true": "Whether to include all bots in this [folder](https:\/\/core.telegram.org\/api\/folders)", + "object_dialogFilter_param_exclude_muted_type_flags.11?true": "Whether to exclude muted chats from this [folder](https:\/\/core.telegram.org\/api\/folders)", + "object_dialogFilter_param_exclude_read_type_flags.12?true": "Whether to exclude read chats from this [folder](https:\/\/core.telegram.org\/api\/folders)", + "object_dialogFilter_param_exclude_archived_type_flags.13?true": "Whether to exclude archived chats from this [folder](https:\/\/core.telegram.org\/api\/folders)", + "object_dialogFilter_param_title_noanimate_type_flags.28?true": "If set, any animated emojis present in `title` should not be animated and should be instead frozen on the first frame.", + "object_dialogFilter_param_id_type_int": "[Folder](https:\/\/core.telegram.org\/api\/folders) ID", + "object_dialogFilter_param_title_type_TextWithEntities": "[Folder](https:\/\/core.telegram.org\/api\/folders) name (max 12 UTF-8 chars)", + "object_dialogFilter_param_emoticon_type_flags.25?string": "Emoji to use as icon for the folder.", + "object_dialogFilter_param_color_type_flags.27?int": "A color ID for the [folder tag associated to this folder, see here \u00bb](https:\/\/core.telegram.org\/api\/folders#folder-tags) for more info.", + "object_dialogFilter_param_pinned_peers_type_Vector<InputPeer>": "Pinned chats, [folders](https:\/\/core.telegram.org\/api\/folders) can have unlimited pinned chats", + "object_dialogFilter_param_include_peers_type_Vector<InputPeer>": "Include the following chats in this [folder](https:\/\/core.telegram.org\/api\/folders)", + "object_dialogFilter_param_exclude_peers_type_Vector<InputPeer>": "Exclude the following chats from this [folder](https:\/\/core.telegram.org\/api\/folders)", + "object_dialogFilterDefault": "Used only when reordering folders to indicate the default (all chats) folder.", + "object_dialogFilterChatlist": "A folder imported using a [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "object_dialogFilterChatlist_param_has_my_invites_type_flags.26?true": "Whether the current user has created some [chat folder deep links \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links) to share the folder as well.", + "object_dialogFilterChatlist_param_title_noanimate_type_flags.28?true": "If set, any animated emojis present in `title` should not be animated and should be instead frozen on the first frame.", + "object_dialogFilterChatlist_param_id_type_int": "ID of the folder", + "object_dialogFilterChatlist_param_title_type_TextWithEntities": "Name of the folder (max 12 UTF-8 chars)", + "object_dialogFilterChatlist_param_emoticon_type_flags.25?string": "Emoji to use as icon for the folder.", + "object_dialogFilterChatlist_param_color_type_flags.27?int": "A color ID for the [folder tag associated to this folder, see here \u00bb](https:\/\/core.telegram.org\/api\/folders#folder-tags) for more info.", + "object_dialogFilterChatlist_param_pinned_peers_type_Vector<InputPeer>": "Pinned chats, [folders](https:\/\/core.telegram.org\/api\/folders) can have unlimited pinned chats", + "object_dialogFilterChatlist_param_include_peers_type_Vector<InputPeer>": "Chats to include in the folder", + "object_dialogFilterSuggested": "Suggested [folders](https:\/\/core.telegram.org\/api\/folders)", + "object_dialogFilterSuggested_param_filter_type_DialogFilter": "[Folder info](https:\/\/core.telegram.org\/api\/folders)", + "object_dialogFilterSuggested_param_description_type_string": "[Folder](https:\/\/core.telegram.org\/api\/folders) description", + "object_statsDateRangeDays": "[Channel statistics](https:\/\/core.telegram.org\/api\/stats) date range", + "object_statsDateRangeDays_param_min_date_type_int": "Initial date", + "object_statsDateRangeDays_param_max_date_type_int": "Final date", + "object_statsAbsValueAndPrev": "Statistics value couple; initial and final value for period of time currently in consideration", + "object_statsAbsValueAndPrev_param_current_type_double": "Current value", + "object_statsAbsValueAndPrev_param_previous_type_double": "Previous value", + "object_statsPercentValue": "[Channel statistics percentage](https:\/\/core.telegram.org\/api\/stats). \nCompute the percentage simply by doing `part * total \/ 100`", + "object_statsPercentValue_param_part_type_double": "Partial value", + "object_statsPercentValue_param_total_type_double": "Total value", + "object_statsGraphAsync": "This [channel statistics graph](https:\/\/core.telegram.org\/api\/stats) must be generated asynchronously using [stats.loadAsyncGraph](..\/methods\/stats.loadAsyncGraph.md) to reduce server load", + "object_statsGraphAsync_param_token_type_string": "Token to use for fetching the async graph", + "object_statsGraphError": "An error occurred while generating the [statistics graph](https:\/\/core.telegram.org\/api\/stats)", + "object_statsGraphError_param_error_type_string": "The error", + "object_statsGraph": "[Channel statistics graph](https:\/\/core.telegram.org\/api\/stats)", + "object_statsGraph_param_json_type_DataJSON": "Statistics data", + "object_statsGraph_param_zoom_token_type_flags.0?string": "Zoom token", + "object_stats.broadcastStats": "[Channel statistics](https:\/\/core.telegram.org\/api\/stats).", + "object_stats.broadcastStats_param_period_type_StatsDateRangeDays": "Period in consideration", + "object_stats.broadcastStats_param_followers_type_StatsAbsValueAndPrev": "Follower count change for period in consideration", + "object_stats.broadcastStats_param_views_per_post_type_StatsAbsValueAndPrev": "`total_viewcount\/postcount`, for posts posted during the period in consideration.
Note that in this case, `current` refers to the `period` in consideration (`min_date` till `max_date`), and `prev` refers to the previous period (`(min_date - (max_date - min_date))` till `min_date`).", + "object_stats.broadcastStats_param_shares_per_post_type_StatsAbsValueAndPrev": "`total_sharecount\/postcount`, for posts posted during the period in consideration.
Note that in this case, `current` refers to the `period` in consideration (`min_date` till `max_date`), and `prev` refers to the previous period (`(min_date - (max_date - min_date))` till `min_date`)", + "object_stats.broadcastStats_param_reactions_per_post_type_StatsAbsValueAndPrev": "`total_reactions\/postcount`, for posts posted during the period in consideration.
Note that in this case, `current` refers to the `period` in consideration (`min_date` till `max_date`), and `prev` refers to the previous period (`(min_date - (max_date - min_date))` till `min_date`)", + "object_stats.broadcastStats_param_views_per_story_type_StatsAbsValueAndPrev": "`total_views\/storycount`, for posts posted during the period in consideration.
Note that in this case, `current` refers to the `period` in consideration (`min_date` till `max_date`), and `prev` refers to the previous period (`(min_date - (max_date - min_date))` till `min_date`)", + "object_stats.broadcastStats_param_shares_per_story_type_StatsAbsValueAndPrev": "`total_shares\/storycount`, for posts posted during the period in consideration.
Note that in this case, `current` refers to the `period` in consideration (`min_date` till `max_date`), and `prev` refers to the previous period (`(min_date - (max_date - min_date))` till `min_date`)", + "object_stats.broadcastStats_param_reactions_per_story_type_StatsAbsValueAndPrev": "`total_reactions\/storycount`, for posts posted during the period in consideration.
Note that in this case, `current` refers to the `period` in consideration (`min_date` till `max_date`), and `prev` refers to the previous period (`(min_date - (max_date - min_date))` till `min_date`)", + "object_stats.broadcastStats_param_enabled_notifications_type_StatsPercentValue": "Percentage of subscribers with enabled notifications", + "object_stats.broadcastStats_param_growth_graph_type_StatsGraph": "Channel growth graph (absolute subscriber count)", + "object_stats.broadcastStats_param_followers_graph_type_StatsGraph": "Followers growth graph (relative subscriber count)", + "object_stats.broadcastStats_param_mute_graph_type_StatsGraph": "Muted users graph (relative)", + "object_stats.broadcastStats_param_top_hours_graph_type_StatsGraph": "Views per hour graph (absolute)", + "object_stats.broadcastStats_param_interactions_graph_type_StatsGraph": "Interactions graph (absolute)", + "object_stats.broadcastStats_param_iv_interactions_graph_type_StatsGraph": "IV interactions graph (absolute)", + "object_stats.broadcastStats_param_views_by_source_graph_type_StatsGraph": "Views by source graph (absolute)", + "object_stats.broadcastStats_param_new_followers_by_source_graph_type_StatsGraph": "New followers by source graph (absolute)", + "object_stats.broadcastStats_param_languages_graph_type_StatsGraph": "Subscriber language graph (pie chart)", + "object_stats.broadcastStats_param_reactions_by_emotion_graph_type_StatsGraph": "A graph containing the number of reactions on posts categorized by emotion", + "object_stats.broadcastStats_param_story_interactions_graph_type_StatsGraph": "A graph containing the number of story views and shares", + "object_stats.broadcastStats_param_story_reactions_by_emotion_graph_type_StatsGraph": "A graph containing the number of reactions on stories categorized by emotion", + "object_stats.broadcastStats_param_recent_posts_interactions_type_Vector<PostInteractionCounters>": "Detailed statistics about number of views and shares of recently sent messages and stories", + "object_help.promoDataEmpty": "No PSA\/MTProxy info is available", + "object_help.promoDataEmpty_param_expires_type_int": "Re-fetch PSA\/MTProxy info after the specified number of seconds", + "object_help.promoData": "A set of useful suggestions and a PSA\/MTProxy sponsored peer, see [here \u00bb](https:\/\/core.telegram.org\/api\/config#suggestions) for more info.", + "object_help.promoData_param_proxy_type_flags.0?true": "Set when connecting using an MTProxy that has configured an associated peer (that will be passed in `peer`, i.e. the channel that sponsored the MTProxy) that should be pinned on top of the chat list.", + "object_help.promoData_param_expires_type_int": "Unixtime when to re-invoke [help.getPromoData](..\/methods\/help.getPromoData.md).", + "object_help.promoData_param_peer_type_flags.3?Peer": "MTProxy\/PSA peer", + "object_help.promoData_param_psa_type_type_flags.1?string": "For Public Service Announcement `peer`s, indicates the type of the PSA.", + "object_help.promoData_param_psa_message_type_flags.2?string": "For Public Service Announcement `peer`s, contains the PSA itself.", + "object_help.promoData_param_pending_suggestions_type_Vector<string>": "Contains a list of [pending suggestions \u00bb](https:\/\/core.telegram.org\/api\/config#basic-suggestions).", + "object_help.promoData_param_dismissed_suggestions_type_Vector<string>": "Contains a list of [inverted suggestions \u00bb](https:\/\/core.telegram.org\/api\/config#inverted-suggestions).", + "object_help.promoData_param_custom_pending_suggestion_type_flags.4?PendingSuggestion": "Contains a list of [custom pending suggestions \u00bb](https:\/\/core.telegram.org\/api\/config#custom-suggestions).", + "object_help.promoData_param_chats_type_Vector<Chat>": "Chat info", + "object_help.promoData_param_users_type_Vector<User>": "User info", + "object_videoSize": "An [animated profile picture](https:\/\/core.telegram.org\/api\/files#animated-profile-pictures) in MPEG4 format", + "object_videoSize_param_type_type_string": "`u` for animated profile pictures, and `v` for trimmed and downscaled video previews", + "object_videoSize_param_w_type_int": "Video width", + "object_videoSize_param_h_type_int": "Video height", + "object_videoSize_param_size_type_int": "File size", + "object_videoSize_param_video_start_ts_type_flags.0?double": "Timestamp that should be shown as static preview to the user (seconds)", + "object_videoSizeEmojiMarkup": "An [animated profile picture](https:\/\/core.telegram.org\/api\/files#animated-profile-pictures) based on a [custom emoji sticker](https:\/\/core.telegram.org\/api\/custom-emoji).", + "object_videoSizeEmojiMarkup_param_emoji_id_type_long": "[Custom emoji ID](https:\/\/core.telegram.org\/api\/custom-emoji): the custom emoji sticker is shown at the center of the profile picture and occupies at most 67% of it.", + "object_videoSizeEmojiMarkup_param_background_colors_type_Vector<int>": "1, 2, 3 or 4 RBG-24 colors used to generate a solid (1), gradient (2) or freeform gradient (3, 4) background, similar to how [fill wallpapers](https:\/\/core.telegram.org\/api\/wallpapers#fill-types) are generated. The rotation angle for gradient backgrounds is 0.", + "object_videoSizeStickerMarkup": "An [animated profile picture](https:\/\/core.telegram.org\/api\/files#animated-profile-pictures) based on a [sticker](https:\/\/core.telegram.org\/api\/stickers).", + "object_videoSizeStickerMarkup_param_stickerset_type_InputStickerSet": "Stickerset", + "object_videoSizeStickerMarkup_param_sticker_id_type_long": "Sticker ID", + "object_videoSizeStickerMarkup_param_background_colors_type_Vector<int>": "1, 2, 3 or 4 RBG-24 colors used to generate a solid (1), gradient (2) or freeform gradient (3, 4) background, similar to how [fill wallpapers](https:\/\/core.telegram.org\/api\/wallpapers#fill-types) are generated. The rotation angle for gradient backgrounds is 0.", + "object_statsGroupTopPoster": "Information about an active user in a supergroup", + "object_statsGroupTopPoster_param_user_id_type_long": "User ID", + "object_statsGroupTopPoster_param_messages_type_int": "Number of messages for [statistics](https:\/\/core.telegram.org\/api\/stats) period in consideration", + "object_statsGroupTopPoster_param_avg_chars_type_int": "Average number of characters per message", + "object_statsGroupTopAdmin": "Information about an active admin in a supergroup", + "object_statsGroupTopAdmin_param_user_id_type_long": "User ID", + "object_statsGroupTopAdmin_param_deleted_type_int": "Number of deleted messages for [statistics](https:\/\/core.telegram.org\/api\/stats) period in consideration", + "object_statsGroupTopAdmin_param_kicked_type_int": "Number of kicked users for [statistics](https:\/\/core.telegram.org\/api\/stats) period in consideration", + "object_statsGroupTopAdmin_param_banned_type_int": "Number of banned users for [statistics](https:\/\/core.telegram.org\/api\/stats) period in consideration", + "object_statsGroupTopInviter": "Information about an active supergroup inviter", + "object_statsGroupTopInviter_param_user_id_type_long": "User ID", + "object_statsGroupTopInviter_param_invitations_type_int": "Number of invitations for [statistics](https:\/\/core.telegram.org\/api\/stats) period in consideration", + "object_stats.megagroupStats": "Supergroup [statistics](https:\/\/core.telegram.org\/api\/stats)", + "object_stats.megagroupStats_param_period_type_StatsDateRangeDays": "Period in consideration", + "object_stats.megagroupStats_param_members_type_StatsAbsValueAndPrev": "Member count change for period in consideration", + "object_stats.megagroupStats_param_messages_type_StatsAbsValueAndPrev": "Message number change for period in consideration", + "object_stats.megagroupStats_param_viewers_type_StatsAbsValueAndPrev": "Number of users that viewed messages, for range in consideration", + "object_stats.megagroupStats_param_posters_type_StatsAbsValueAndPrev": "Number of users that posted messages, for range in consideration", + "object_stats.megagroupStats_param_growth_graph_type_StatsGraph": "Supergroup growth graph (absolute subscriber count)", + "object_stats.megagroupStats_param_members_graph_type_StatsGraph": "Members growth (relative subscriber count)", + "object_stats.megagroupStats_param_new_members_by_source_graph_type_StatsGraph": "New members by source graph", + "object_stats.megagroupStats_param_languages_graph_type_StatsGraph": "Subscriber language graph (pie chart)", + "object_stats.megagroupStats_param_messages_graph_type_StatsGraph": "Message activity graph (stacked bar graph, message type)", + "object_stats.megagroupStats_param_actions_graph_type_StatsGraph": "Group activity graph (deleted, modified messages, blocked users)", + "object_stats.megagroupStats_param_top_hours_graph_type_StatsGraph": "Activity per hour graph (absolute)", + "object_stats.megagroupStats_param_weekdays_graph_type_StatsGraph": "Activity per day of week graph (absolute)", + "object_stats.megagroupStats_param_top_posters_type_Vector<StatsGroupTopPoster>": "Info about most active group members", + "object_stats.megagroupStats_param_top_admins_type_Vector<StatsGroupTopAdmin>": "Info about most active group admins", + "object_stats.megagroupStats_param_top_inviters_type_Vector<StatsGroupTopInviter>": "Info about most active group inviters", + "object_stats.megagroupStats_param_users_type_Vector<User>": "Info about users mentioned in statistics", + "object_globalPrivacySettings": "Global privacy settings", + "object_globalPrivacySettings_param_archive_and_mute_new_noncontact_peers_type_flags.0?true": "Whether to archive and mute new chats from non-contacts", + "object_globalPrivacySettings_param_keep_archived_unmuted_type_flags.1?true": "Whether unmuted chats will be kept in the Archive chat list when they get a new message.", + "object_globalPrivacySettings_param_keep_archived_folders_type_flags.2?true": "Whether unmuted chats that are always included or pinned in a [folder](https:\/\/core.telegram.org\/api\/folders), will be kept in the Archive chat list when they get a new message. Ignored if `keep_archived_unmuted` is set.", + "object_globalPrivacySettings_param_hide_read_marks_type_flags.3?true": "If this flag is set, the [inputPrivacyKeyStatusTimestamp](..\/constructors\/inputPrivacyKeyStatusTimestamp.md) key will also apply to the ability to use [messages.getOutboxReadDate](..\/methods\/messages.getOutboxReadDate.md) on messages sent to us.
Meaning, users that cannot see *our* exact last online date due to the current value of the [inputPrivacyKeyStatusTimestamp](..\/constructors\/inputPrivacyKeyStatusTimestamp.md) key will receive a `403 USER_PRIVACY_RESTRICTED` error when invoking [messages.getOutboxReadDate](..\/methods\/messages.getOutboxReadDate.md) to fetch the exact read date of a message they sent to us.
The [userFull](..\/constructors\/userFull.md).`read_dates_private` flag will be set for users that have this flag enabled.", + "object_globalPrivacySettings_param_new_noncontact_peers_require_premium_type_flags.4?true": "See [here for more info on this flag \u00bb](https:\/\/core.telegram.org\/api\/privacy#require-premium-for-new-non-contact-users).", + "object_globalPrivacySettings_param_display_gifts_button_type_flags.7?true": "Enables or disables our [userFull](..\/constructors\/userFull.md).`display_gifts_button` flag: if the [userFull](..\/constructors\/userFull.md).`display_gifts_button` flag of both us and another user is set, a gift button should always be displayed in the text field in private chats with the other user: once clicked, the gift UI should be displayed, offering the user options to gift [Telegram Premium \u00bb](https:\/\/core.telegram.org\/api\/premium#gifting-telegram-premium) subscriptions or [Telegram Gifts \u00bb](https:\/\/core.telegram.org\/api\/gifts).", + "object_globalPrivacySettings_param_noncontact_peers_paid_stars_type_flags.5?long": "If configured, specifies the number of [stars](https:\/\/core.telegram.org\/api\/stars) users must pay us to send us a message, see [here \u00bb](https:\/\/core.telegram.org\/api\/paid-messages) for more info on paid messages.", + "object_globalPrivacySettings_param_disallowed_gifts_type_flags.6?DisallowedGiftsSettings": "Disallows the reception of specific gift types.", + "object_help.countryCode": "Country code and phone number pattern of a specific country", + "object_help.countryCode_param_country_code_type_string": "ISO country code", + "object_help.countryCode_param_prefixes_type_flags.0?Vector<string>": "Possible phone prefixes", + "object_help.countryCode_param_patterns_type_flags.1?Vector<string>": "Phone patterns: for example, `XXX XXX XXX`", + "object_help.country": "Name, ISO code, localized name and phone codes\/patterns of a specific country", + "object_help.country_param_hidden_type_flags.0?true": "Whether this country should not be shown in the list", + "object_help.country_param_iso2_type_string": "ISO code of country", + "object_help.country_param_default_name_type_string": "Name of the country in the country's language", + "object_help.country_param_name_type_flags.1?string": "Name of the country in the user's language, if different from the original name", + "object_help.country_param_country_codes_type_Vector<help.CountryCode>": "Phone codes\/patterns", + "object_help.countriesListNotModified": "The country list has not changed", + "object_help.countriesList": "Name, ISO code, localized name and phone codes\/patterns of all available countries", + "object_help.countriesList_param_countries_type_Vector<help.Country>": "Name, ISO code, localized name and phone codes\/patterns of all available countries", + "object_help.countriesList_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_messageViews": "View, forward counter + info about replies of a specific message", + "object_messageViews_param_views_type_flags.0?int": "View count of message", + "object_messageViews_param_forwards_type_flags.1?int": "Forward count of message", + "object_messageViews_param_replies_type_flags.2?MessageReplies": "Reply and [thread](https:\/\/core.telegram.org\/api\/threads) information of message", + "object_messages.messageViews": "View, forward counter + info about replies", + "object_messages.messageViews_param_views_type_Vector<MessageViews>": "View, forward counter + info about replies", + "object_messages.messageViews_param_chats_type_Vector<Chat>": "Chats mentioned in constructor", + "object_messages.messageViews_param_users_type_Vector<User>": "Users mentioned in constructor", + "object_messages.discussionMessage": "Information about a [message thread](https:\/\/core.telegram.org\/api\/threads)", + "object_messages.discussionMessage_param_messages_type_Vector<Message>": "The messages from which the thread starts. The messages are returned in reverse chronological order (i.e., in order of decreasing message ID).", + "object_messages.discussionMessage_param_max_id_type_flags.0?int": "Message ID of latest reply in this [thread](https:\/\/core.telegram.org\/api\/threads)", + "object_messages.discussionMessage_param_read_inbox_max_id_type_flags.1?int": "Message ID of latest read incoming message in this [thread](https:\/\/core.telegram.org\/api\/threads)", + "object_messages.discussionMessage_param_read_outbox_max_id_type_flags.2?int": "Message ID of latest read outgoing message in this [thread](https:\/\/core.telegram.org\/api\/threads)", + "object_messages.discussionMessage_param_unread_count_type_int": "Number of unread messages", + "object_messages.discussionMessage_param_chats_type_Vector<Chat>": "Chats mentioned in constructor", + "object_messages.discussionMessage_param_users_type_Vector<User>": "Users mentioned in constructor", + "object_messageReplyHeader": "Message replies and [thread](https:\/\/core.telegram.org\/api\/threads) information", + "object_messageReplyHeader_param_reply_to_scheduled_type_flags.2?true": "This is a reply to a scheduled message.", + "object_messageReplyHeader_param_forum_topic_type_flags.3?true": "Whether this message was sent in a [forum topic](https:\/\/core.telegram.org\/api\/forum#forum-topics) (except for the General topic).", + "object_messageReplyHeader_param_quote_type_flags.9?true": "Whether this message is quoting a part of another message.", + "object_messageReplyHeader_param_reply_to_msg_id_type_flags.4?int": "ID of message to which this message is replying", + "object_messageReplyHeader_param_reply_to_peer_id_type_flags.0?Peer": "For replies sent in [channel discussion threads](https:\/\/core.telegram.org\/api\/threads) of which the current user is not a member, the discussion group ID", + "object_messageReplyHeader_param_reply_from_type_flags.5?MessageFwdHeader": "When replying to a message sent by a certain peer to another chat, contains info about the peer that originally sent the message to that other chat.", + "object_messageReplyHeader_param_reply_media_type_flags.8?MessageMedia": "When replying to a media sent by a certain peer to another chat, contains the media of the replied-to message.", + "object_messageReplyHeader_param_reply_to_top_id_type_flags.1?int": "ID of the message that started this [message thread](https:\/\/core.telegram.org\/api\/threads)", + "object_messageReplyHeader_param_quote_text_type_flags.6?string": "Used to quote-reply to only a certain section (specified here) of the original message.", + "object_messageReplyHeader_param_quote_entities_type_flags.7?Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities) from the `quote_text` field.", + "object_messageReplyHeader_param_quote_offset_type_flags.10?int": "Offset of the message `quote_text` within the original message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length)).", + "object_messageReplyHeader_param_todo_item_id_type_flags.11?int": "Can be set to reply to the specified item of a [todo list \u00bb](https:\/\/core.telegram.org\/api\/todo).", + "object_messageReplyStoryHeader": "Represents a reply to a [story](https:\/\/core.telegram.org\/api\/stories)", + "object_messageReplyStoryHeader_param_peer_type_Peer": "Sender of the story.", + "object_messageReplyStoryHeader_param_story_id_type_int": "Story ID", + "object_messageReplies": "Info about [the comment section of a channel post, a simple message thread, a forum topic, or a direct messages topic](https:\/\/core.telegram.org\/api\/threads) (all features ultimately based on message threads).", + "object_messageReplies_param_comments_type_flags.0?true": "Whether this constructor contains information about the [comment section of a channel post, or a simple message thread](https:\/\/core.telegram.org\/api\/threads)", + "object_messageReplies_param_replies_type_int": "Contains the total number of replies in this thread or comment section.", + "object_messageReplies_param_replies_pts_type_int": "[PTS](https:\/\/core.telegram.org\/api\/updates) of the message that started this thread.", + "object_messageReplies_param_recent_repliers_type_flags.1?Vector<Peer>": "For channel post comments, contains information about the last few comment posters for a specific thread, to show a small list of commenter profile pictures in client previews.", + "object_messageReplies_param_channel_id_type_flags.0?long": "For channel post comments, contains the ID of the associated [discussion supergroup](https:\/\/core.telegram.org\/api\/discussion)", + "object_messageReplies_param_max_id_type_flags.2?int": "ID of the latest message in this thread or comment section.", + "object_messageReplies_param_read_max_id_type_flags.3?int": "Contains the ID of the latest read message in this thread or comment section.", + "object_peerBlocked": "Information about a blocked peer", + "object_peerBlocked_param_peer_id_type_Peer": "Peer ID", + "object_peerBlocked_param_date_type_int": "When was the peer blocked", + "object_stats.messageStats": "Message statistics", + "object_stats.messageStats_param_views_graph_type_StatsGraph": "Message view graph", + "object_stats.messageStats_param_reactions_by_emotion_graph_type_StatsGraph": "A graph containing the number of reactions on stories categorized by emotion", + "object_groupCallDiscarded": "An ended group call", + "object_groupCallDiscarded_param_id_type_long": "Group call ID", + "object_groupCallDiscarded_param_access_hash_type_long": "Group call access hash", + "object_groupCallDiscarded_param_duration_type_int": "Group call duration", + "object_groupCall": "Info about a group call or livestream", + "object_groupCall_param_join_muted_type_flags.1?true": "Whether the user should be muted upon joining the call", + "object_groupCall_param_can_change_join_muted_type_flags.2?true": "Whether the current user can change the value of the `join_muted` flag using [phone.toggleGroupCallSettings](..\/methods\/phone.toggleGroupCallSettings.md)", + "object_groupCall_param_join_date_asc_type_flags.6?true": "Specifies the ordering to use when locally sorting by date and displaying in the UI group call participants.", + "object_groupCall_param_schedule_start_subscribed_type_flags.8?true": "Whether we subscribed to the scheduled call", + "object_groupCall_param_can_start_video_type_flags.9?true": "Whether you can start streaming video into the call", + "object_groupCall_param_record_video_active_type_flags.11?true": "Whether the group call is currently being recorded", + "object_groupCall_param_rtmp_stream_type_flags.12?true": "Whether RTMP streams are allowed", + "object_groupCall_param_listeners_hidden_type_flags.13?true": "Whether the listeners list is hidden and cannot be fetched using [phone.getGroupParticipants](..\/methods\/phone.getGroupParticipants.md). The `phone.groupParticipants.count` and `groupCall.participants_count` counters will still include listeners.", + "object_groupCall_param_conference_type_flags.14?true": "Whether this is an E2E conference call.", + "object_groupCall_param_creator_type_flags.15?true": "Whether we're created this group call.", + "object_groupCall_param_id_type_long": "Group call ID", + "object_groupCall_param_access_hash_type_long": "Group call access hash", + "object_groupCall_param_participants_count_type_int": "Participant count", + "object_groupCall_param_title_type_flags.3?string": "Group call title", + "object_groupCall_param_stream_dc_id_type_flags.4?int": "DC ID to be used for livestream chunks", + "object_groupCall_param_record_start_date_type_flags.5?int": "When was the recording started", + "object_groupCall_param_schedule_date_type_flags.7?int": "When is the call scheduled to start", + "object_groupCall_param_unmuted_video_count_type_flags.10?int": "Number of people currently streaming video into the call", + "object_groupCall_param_unmuted_video_limit_type_int": "Maximum number of people allowed to stream video into the call", + "object_groupCall_param_version_type_int": "Version", + "object_groupCall_param_invite_link_type_flags.16?string": "Invitation link for the conference.", + "object_inputGroupCall": "Points to a specific group call", + "object_inputGroupCall_param_id_type_long": "Group call ID", + "object_inputGroupCall_param_access_hash_type_long": "Group call access hash", + "object_inputGroupCallSlug": "Join a conference call through an [invitation link \u00bb](https:\/\/core.telegram.org\/api\/links#conference-links).", + "object_inputGroupCallSlug_param_slug_type_string": "Slug from the [conference link \u00bb](https:\/\/core.telegram.org\/api\/links#conference-links).", + "object_inputGroupCallInviteMessage": "Join a group call through a [messageActionConferenceCall](..\/constructors\/messageActionConferenceCall.md) invitation message.", + "object_inputGroupCallInviteMessage_param_msg_id_type_int": "ID of the [messageActionConferenceCall](..\/constructors\/messageActionConferenceCall.md).", + "object_groupCallParticipant": "Info about a group call participant", + "object_groupCallParticipant_param_muted_type_flags.0?true": "Whether the participant is muted", + "object_groupCallParticipant_param_left_type_flags.1?true": "Whether the participant has left", + "object_groupCallParticipant_param_can_self_unmute_type_flags.2?true": "Whether the participant can unmute themselves", + "object_groupCallParticipant_param_just_joined_type_flags.4?true": "Whether the participant has just joined", + "object_groupCallParticipant_param_versioned_type_flags.5?true": "If set, and [updateGroupCallParticipants](..\/constructors\/updateGroupCallParticipants.md).version < locally stored call.version, info about this participant should be ignored. If (...), and [updateGroupCallParticipants](..\/constructors\/updateGroupCallParticipants.md).version > call.version+1, the participant list should be refetched using [phone.getGroupParticipants](..\/methods\/phone.getGroupParticipants.md).", + "object_groupCallParticipant_param_min_type_flags.8?true": "If not set, the `volume` and `muted_by_you` fields can be safely used to overwrite locally cached information; otherwise, `volume` will contain valid information only if `volume_by_admin` is set both in the cache and in the received constructor.", + "object_groupCallParticipant_param_muted_by_you_type_flags.9?true": "Whether this participant was muted by the current user", + "object_groupCallParticipant_param_volume_by_admin_type_flags.10?true": "Whether our volume can only changed by an admin", + "object_groupCallParticipant_param_self_type_flags.12?true": "Whether this participant is the current user", + "object_groupCallParticipant_param_video_joined_type_flags.15?true": "Whether this participant is currently broadcasting video", + "object_groupCallParticipant_param_peer_type_Peer": "Peer information", + "object_groupCallParticipant_param_date_type_int": "When did this participant join the group call", + "object_groupCallParticipant_param_active_date_type_flags.3?int": "When was this participant last active in the group call", + "object_groupCallParticipant_param_source_type_int": "Source ID", + "object_groupCallParticipant_param_volume_type_flags.7?int": "Volume, if not set the volume is set to 100%.", + "object_groupCallParticipant_param_about_type_flags.11?string": "Info about this participant", + "object_groupCallParticipant_param_raise_hand_rating_type_flags.13?long": "Specifies the UI visualization order of peers with raised hands: peers with a higher rating should be showed first in the list.", + "object_groupCallParticipant_param_video_type_flags.6?GroupCallParticipantVideo": "Info about the video stream the participant is currently broadcasting", + "object_groupCallParticipant_param_presentation_type_flags.14?GroupCallParticipantVideo": "Info about the screen sharing stream the participant is currently broadcasting", + "object_phone.groupCall": "Contains info about a group call, and partial info about its participants.", + "object_phone.groupCall_param_call_type_GroupCall": "Info about the group call", + "object_phone.groupCall_param_participants_type_Vector<GroupCallParticipant>": "A partial list of participants.", + "object_phone.groupCall_param_participants_next_offset_type_string": "Next offset to use when fetching the remaining participants using [phone.getGroupParticipants](..\/methods\/phone.getGroupParticipants.md)", + "object_phone.groupCall_param_chats_type_Vector<Chat>": "Chats mentioned in the participants vector", + "object_phone.groupCall_param_users_type_Vector<User>": "Users mentioned in the participants vector", + "object_phone.groupParticipants": "Info about the participants of a group call or livestream", + "object_phone.groupParticipants_param_count_type_int": "Number of participants", + "object_phone.groupParticipants_param_participants_type_Vector<GroupCallParticipant>": "List of participants", + "object_phone.groupParticipants_param_next_offset_type_string": "If not empty, the specified list of participants is partial, and more participants can be fetched specifying this parameter as `offset` in [phone.getGroupParticipants](..\/methods\/phone.getGroupParticipants.md).", + "object_phone.groupParticipants_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_phone.groupParticipants_param_users_type_Vector<User>": "Mentioned users", + "object_phone.groupParticipants_param_version_type_int": "Version info", + "object_inlineQueryPeerTypeSameBotPM": "Peer type: private chat with the bot itself", + "object_inlineQueryPeerTypePM": "Peer type: private chat", + "object_inlineQueryPeerTypeChat": "Peer type: [chat](https:\/\/core.telegram.org\/api\/channel)", + "object_inlineQueryPeerTypeMegagroup": "Peer type: [supergroup](https:\/\/core.telegram.org\/api\/channel)", + "object_inlineQueryPeerTypeBroadcast": "Peer type: [channel](https:\/\/core.telegram.org\/api\/channel)", + "object_inlineQueryPeerTypeBotPM": "Peer type: private chat with a bot.", + "object_messages.historyImport": "ID of a specific [chat import session, click here for more info \u00bb](https:\/\/core.telegram.org\/api\/import).", + "object_messages.historyImport_param_id_type_long": "[History import ID](https:\/\/core.telegram.org\/api\/import)", + "object_messages.historyImportParsed": "Contains information about a chat export file [generated by a foreign chat app, click here for more info](https:\/\/core.telegram.org\/api\/import). \nIf neither the `pm` or `group` flags are set, the specified chat export was generated from a chat of unknown type.", + "object_messages.historyImportParsed_param_pm_type_flags.0?true": "The chat export file was generated from a private chat.", + "object_messages.historyImportParsed_param_group_type_flags.1?true": "The chat export file was generated from a group chat.", + "object_messages.historyImportParsed_param_title_type_flags.2?string": "Title of the chat.", + "object_messages.affectedFoundMessages": "Messages found and affected by changes", + "object_messages.affectedFoundMessages_param_pts_type_int": "[Event count after generation](https:\/\/core.telegram.org\/api\/updates)", + "object_messages.affectedFoundMessages_param_pts_count_type_int": "[Number of events that were generated](https:\/\/core.telegram.org\/api\/updates)", + "object_messages.affectedFoundMessages_param_offset_type_int": "If bigger than zero, the request must be repeated to remove more messages", + "object_messages.affectedFoundMessages_param_messages_type_Vector<int>": "Affected message IDs", + "object_chatInviteImporter": "When and which user joined the chat using a chat invite", + "object_chatInviteImporter_param_requested_type_flags.0?true": "Whether this user currently has a pending [join request \u00bb](https:\/\/core.telegram.org\/api\/invites#join-requests)", + "object_chatInviteImporter_param_via_chatlist_type_flags.3?true": "The participant joined by importing a [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "object_chatInviteImporter_param_user_id_type_long": "The user", + "object_chatInviteImporter_param_date_type_int": "When did the user join", + "object_chatInviteImporter_param_about_type_flags.2?string": "For users with pending requests, contains bio of the user that requested to join", + "object_chatInviteImporter_param_approved_by_type_flags.1?long": "The administrator that approved the [join request \u00bb](https:\/\/core.telegram.org\/api\/invites#join-requests) of the user", + "object_messages.exportedChatInvites": "Info about chat invites exported by a certain admin.", + "object_messages.exportedChatInvites_param_count_type_int": "Number of invites exported by the admin", + "object_messages.exportedChatInvites_param_invites_type_Vector<ExportedChatInvite>": "Exported invites", + "object_messages.exportedChatInvites_param_users_type_Vector<User>": "Info about the admin", + "object_messages.exportedChatInvite": "Info about a chat invite", + "object_messages.exportedChatInvite_param_invite_type_ExportedChatInvite": "Info about the chat invite", + "object_messages.exportedChatInvite_param_users_type_Vector<User>": "Mentioned users", + "object_messages.exportedChatInviteReplaced": "The specified chat invite was replaced with another one", + "object_messages.exportedChatInviteReplaced_param_invite_type_ExportedChatInvite": "The replaced chat invite", + "object_messages.exportedChatInviteReplaced_param_new_invite_type_ExportedChatInvite": "The invite that replaces the previous invite", + "object_messages.exportedChatInviteReplaced_param_users_type_Vector<User>": "Mentioned users", + "object_messages.chatInviteImporters": "Info about the users that joined the chat using a specific chat invite", + "object_messages.chatInviteImporters_param_count_type_int": "Number of users that joined", + "object_messages.chatInviteImporters_param_importers_type_Vector<ChatInviteImporter>": "The users that joined", + "object_messages.chatInviteImporters_param_users_type_Vector<User>": "The users that joined", + "object_chatAdminWithInvites": "Info about chat invites generated by admins.", + "object_chatAdminWithInvites_param_admin_id_type_long": "The admin", + "object_chatAdminWithInvites_param_invites_count_type_int": "Number of invites generated by the admin", + "object_chatAdminWithInvites_param_revoked_invites_count_type_int": "Number of revoked invites", + "object_messages.chatAdminsWithInvites": "Info about chat invites generated by admins.", + "object_messages.chatAdminsWithInvites_param_admins_type_Vector<ChatAdminWithInvites>": "Info about chat invites generated by admins.", + "object_messages.chatAdminsWithInvites_param_users_type_Vector<User>": "Mentioned users", + "object_messages.checkedHistoryImportPeer": "Contains a confirmation text to be shown to the user, upon [importing chat history, click here for more info \u00bb](https:\/\/core.telegram.org\/api\/import).", + "object_messages.checkedHistoryImportPeer_param_confirm_text_type_string": "A confirmation text to be shown to the user, upon [importing chat history \u00bb](https:\/\/core.telegram.org\/api\/import).", + "object_phone.joinAsPeers": "A list of peers that can be used to join a group call, presenting yourself as a specific user\/channel.", + "object_phone.joinAsPeers_param_peers_type_Vector<Peer>": "Peers", + "object_phone.joinAsPeers_param_chats_type_Vector<Chat>": "Chats mentioned in the peers vector", + "object_phone.joinAsPeers_param_users_type_Vector<User>": "Users mentioned in the peers vector", + "object_phone.exportedGroupCallInvite": "An invite to a group call or livestream", + "object_phone.exportedGroupCallInvite_param_link_type_string": "Invite link", + "object_groupCallParticipantVideoSourceGroup": "Describes a group of video synchronization source identifiers", + "object_groupCallParticipantVideoSourceGroup_param_semantics_type_string": "SDP semantics", + "object_groupCallParticipantVideoSourceGroup_param_sources_type_Vector<int>": "Source IDs", + "object_groupCallParticipantVideo": "Info about a video stream", + "object_groupCallParticipantVideo_param_paused_type_flags.0?true": "Whether the stream is currently paused", + "object_groupCallParticipantVideo_param_endpoint_type_string": "Endpoint", + "object_groupCallParticipantVideo_param_source_groups_type_Vector<GroupCallParticipantVideoSourceGroup>": "Source groups", + "object_groupCallParticipantVideo_param_audio_source_type_flags.1?int": "Audio source ID", + "object_stickers.suggestedShortName": "A suggested short name for a stickerpack", + "object_stickers.suggestedShortName_param_short_name_type_string": "Suggested short name", + "object_botCommandScopeDefault": "The commands will be valid in all dialogs", + "object_botCommandScopeUsers": "The specified bot commands will only be valid in all private chats with users.", + "object_botCommandScopeChats": "The specified bot commands will be valid in all [groups and supergroups](https:\/\/core.telegram.org\/api\/channel).", + "object_botCommandScopeChatAdmins": "The specified bot commands will be valid only for chat administrators, in all [groups and supergroups](https:\/\/core.telegram.org\/api\/channel).", + "object_botCommandScopePeer": "The specified bot commands will be valid only in a specific dialog.", + "object_botCommandScopePeer_param_peer_type_InputPeer": "The dialog", + "object_botCommandScopePeerAdmins": "The specified bot commands will be valid for all admins of the specified [group or supergroup](https:\/\/core.telegram.org\/api\/channel).", + "object_botCommandScopePeerAdmins_param_peer_type_InputPeer": "The chat", + "object_botCommandScopePeerUser": "The specified bot commands will be valid only for a specific user in the specified [group or supergroup](https:\/\/core.telegram.org\/api\/channel).", + "object_botCommandScopePeerUser_param_peer_type_InputPeer": "The chat", + "object_botCommandScopePeerUser_param_user_id_type_InputUser": "The user", + "object_account.resetPasswordFailedWait": "You recently requested a password reset that was canceled, please wait until the specified date before requesting another reset.", + "object_account.resetPasswordFailedWait_param_retry_date_type_int": "Wait until this date before requesting another reset.", + "object_account.resetPasswordRequestedWait": "You successfully requested a password reset, please wait until the specified date before finalizing the reset.", + "object_account.resetPasswordRequestedWait_param_until_date_type_int": "Wait until this date before finalizing the reset.", + "object_account.resetPasswordOk": "The 2FA password was reset successfully.", + "object_chatTheme": "A chat theme", + "object_chatTheme_param_emoticon_type_string": "The emoji identifying the chat theme.", + "object_chatThemeUniqueGift": "A chat theme based on a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "object_chatThemeUniqueGift_param_gift_type_StarGift": "The owned collectible gift on which this theme is based, as a [starGiftUnique](..\/constructors\/starGiftUnique.md) constructor.", + "object_chatThemeUniqueGift_param_theme_settings_type_Vector<ThemeSettings>": "Theme settings.", + "object_account.chatThemesNotModified": "The available chat themes were not modified", + "object_account.chatThemes": "Available [chat themes](https:\/\/core.telegram.org\/api\/themes#chat-themes)", + "object_account.chatThemes_param_hash_type_long": "Hash to pass to the method that returned this constructor, to avoid refetching the result if it hasn't changed.", + "object_account.chatThemes_param_themes_type_Vector<ChatTheme>": "Themes.", + "object_account.chatThemes_param_chats_type_Vector<Chat>": "Chats mentioned in the `themes` field.", + "object_account.chatThemes_param_users_type_Vector<User>": "Users mentioned in the `themes` field.", + "object_account.chatThemes_param_next_offset_type_flags.0?int": "Next offset for pagination.", + "object_sponsoredMessage": "A [sponsored message](https:\/\/core.telegram.org\/api\/sponsored-messages).", + "object_sponsoredMessage_param_recommended_type_flags.5?true": "Whether the message needs to be labeled as \"recommended\" instead of \"sponsored\"", + "object_sponsoredMessage_param_can_report_type_flags.12?true": "Whether this message can be [reported as specified here \u00bb](https:\/\/core.telegram.org\/api\/sponsored-messages#reporting-sponsored-messages).", + "object_sponsoredMessage_param_random_id_type_bytes": "Message ID", + "object_sponsoredMessage_param_url_type_string": "Contains the URL to open when the user clicks on the sponsored message.", + "object_sponsoredMessage_param_title_type_string": "Contains the title of the sponsored message.", + "object_sponsoredMessage_param_message_type_string": "Sponsored message", + "object_sponsoredMessage_param_entities_type_flags.1?Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities) in `message`.", + "object_sponsoredMessage_param_photo_type_flags.6?Photo": "If set, contains a custom profile photo bubble that should be displayed for the sponsored message, like for messages sent in groups.", + "object_sponsoredMessage_param_media_type_flags.14?MessageMedia": "If set, contains some media.", + "object_sponsoredMessage_param_color_type_flags.13?PeerColor": "If set, the sponsored message should use the [message accent color \u00bb](https:\/\/core.telegram.org\/api\/colors) specified in `color`.", + "object_sponsoredMessage_param_button_text_type_string": "Label of the sponsored message button.", + "object_sponsoredMessage_param_sponsor_info_type_flags.7?string": "If set, contains additional information about the sponsor to be shown along with the message.", + "object_sponsoredMessage_param_additional_info_type_flags.8?string": "If set, contains additional information about the sponsored message to be shown along with the message.", + "object_sponsoredMessage_param_min_display_duration_type_flags.15?int": "For [sponsored messages to show on channel videos \u00bb](https:\/\/core.telegram.org\/api\/sponsored-messages#getting-sponsored-video-advertisements), allow the user to hide the ad only after the specified amount of seconds.", + "object_sponsoredMessage_param_max_display_duration_type_flags.15?int": "For [sponsored messages to show on channel videos \u00bb](https:\/\/core.telegram.org\/api\/sponsored-messages#getting-sponsored-video-advertisements), autohide the ad after after the specified amount of seconds.", + "object_messages.sponsoredMessages": "A set of sponsored messages associated to a channel", + "object_messages.sponsoredMessages_param_posts_between_type_flags.0?int": "If set, specifies the minimum number of messages between shown sponsored messages; otherwise, only one sponsored message must be shown after all ordinary messages.", + "object_messages.sponsoredMessages_param_start_delay_type_flags.1?int": "For [sponsored messages to show on channel videos \u00bb](https:\/\/core.telegram.org\/api\/sponsored-messages#getting-sponsored-video-advertisements), the number of seconds to wait before showing the first ad.", + "object_messages.sponsoredMessages_param_between_delay_type_flags.2?int": "For [sponsored messages to show on channel videos \u00bb](https:\/\/core.telegram.org\/api\/sponsored-messages#getting-sponsored-video-advertisements), the number of seconds to wait after the previous ad is hidden, before showing the next ad.", + "object_messages.sponsoredMessages_param_messages_type_Vector<SponsoredMessage>": "Sponsored messages", + "object_messages.sponsoredMessages_param_chats_type_Vector<Chat>": "Chats mentioned in the sponsored messages", + "object_messages.sponsoredMessages_param_users_type_Vector<User>": "Users mentioned in the sponsored messages", + "object_messages.sponsoredMessagesEmpty": "No sponsored messages are available.", + "object_searchResultsCalendarPeriod": "Information about found messages sent on a specific day, used to split the `messages` in [messages.searchResultsCalendar](..\/constructors\/messages.searchResultsCalendar.md) constructors by days.\n\nMultiple searchResultsCalendarPeriod constructors are returned in [messages.searchResultsCalendar](..\/constructors\/messages.searchResultsCalendar.md), each containing information about the first, last and total number of messages matching the filter that were sent on a specific day.", + "object_searchResultsCalendarPeriod_param_date_type_int": "The day this object is referring to.", + "object_searchResultsCalendarPeriod_param_min_msg_id_type_int": "First message ID that was sent on this day.", + "object_searchResultsCalendarPeriod_param_max_msg_id_type_int": "Last message ID that was sent on this day.", + "object_searchResultsCalendarPeriod_param_count_type_int": "All messages that were sent on this day.", + "object_messages.searchResultsCalendar": "Information about found messages sent on a specific day", + "object_messages.searchResultsCalendar_param_inexact_type_flags.0?true": "If set, indicates that the results may be inexact", + "object_messages.searchResultsCalendar_param_count_type_int": "Total number of results matching query", + "object_messages.searchResultsCalendar_param_min_date_type_int": "Starting timestamp of attached messages", + "object_messages.searchResultsCalendar_param_min_msg_id_type_int": "Ending timestamp of attached messages", + "object_messages.searchResultsCalendar_param_offset_id_offset_type_flags.1?int": "Indicates the absolute position of `messages[0]` within the total result set with count `count`.
This is useful, for example, if we need to display a `progress\/total` counter (like `photo 134 of 200`, for all media in a chat, we could simply use `photo ${offset_id_offset} of ${count}`.", + "object_messages.searchResultsCalendar_param_periods_type_Vector<SearchResultsCalendarPeriod>": "Used to split the `messages` by days: multiple [SearchResultsCalendarPeriod](..\/types\/SearchResultsCalendarPeriod.md) constructors are returned, each containing information about the first, last and total number of messages matching the filter that were sent on a specific day.
This information can be easily used to split the returned `messages` by day.", + "object_messages.searchResultsCalendar_param_messages_type_Vector<Message>": "Messages", + "object_messages.searchResultsCalendar_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_messages.searchResultsCalendar_param_users_type_Vector<User>": "Mentioned users", + "object_searchResultPosition": "Information about a message in a specific position", + "object_searchResultPosition_param_msg_id_type_int": "Message ID", + "object_searchResultPosition_param_date_type_int": "When was the message sent", + "object_searchResultPosition_param_offset_type_int": "0-based message position in the full list of suitable messages", + "object_messages.searchResultsPositions": "Information about sparse positions of messages", + "object_messages.searchResultsPositions_param_count_type_int": "Total number of found messages", + "object_messages.searchResultsPositions_param_positions_type_Vector<SearchResultsPosition>": "List of message positions", + "object_channels.sendAsPeers": "A list of peers that can be used to send messages in a specific group", + "object_channels.sendAsPeers_param_peers_type_Vector<SendAsPeer>": "Peers that can be used to send messages to the group", + "object_channels.sendAsPeers_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_channels.sendAsPeers_param_users_type_Vector<User>": "Mentioned users", + "object_users.userFull": "Full user information", + "object_users.userFull_param_full_user_type_UserFull": "Full user information", + "object_users.userFull_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_users.userFull_param_users_type_Vector<User>": "Mentioned users", + "object_messages.peerSettings": "Peer settings", + "object_messages.peerSettings_param_settings_type_PeerSettings": "Peer settings", + "object_messages.peerSettings_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_messages.peerSettings_param_users_type_Vector<User>": "Mentioned users", + "object_auth.loggedOut": "[Future auth token \u00bb](https:\/\/core.telegram.org\/api\/auth#future-auth-tokens) to be used on subsequent authorizations", + "object_auth.loggedOut_param_future_auth_token_type_flags.0?bytes": "[Future auth token \u00bb](https:\/\/core.telegram.org\/api\/auth#future-auth-tokens) to be used on subsequent authorizations", + "object_reactionCount": "Reactions", + "object_reactionCount_param_chosen_order_type_flags.0?int": "If set, indicates that the current user also sent this reaction.
The integer value indicates when was the reaction added: the bigger the value, the newer the reaction.", + "object_reactionCount_param_reaction_type_Reaction": "The reaction.", + "object_reactionCount_param_count_type_int": "Number of users that reacted with this emoji.", + "object_messageReactions": "[Message reactions \u00bb](https:\/\/core.telegram.org\/api\/reactions)", + "object_messageReactions_param_min_type_flags.0?true": "Similar to [min](https:\/\/core.telegram.org\/api\/min) objects, used for [message reaction \u00bb](https:\/\/core.telegram.org\/api\/reactions) constructors that are the same for all users so they don't have the reactions sent by the current user (you can use [messages.getMessagesReactions](..\/methods\/messages.getMessagesReactions.md) to get the full reaction info).", + "object_messageReactions_param_can_see_list_type_flags.2?true": "Whether [messages.getMessageReactionsList](..\/methods\/messages.getMessageReactionsList.md) can be used to see how each specific peer reacted to the message", + "object_messageReactions_param_reactions_as_tags_type_flags.3?true": "If set or if there are no reactions, all present and future reactions should be treated as [message tags, see here \u00bb for more info](https:\/\/core.telegram.org\/api\/saved-messages#tags).", + "object_messageReactions_param_results_type_Vector<ReactionCount>": "Reactions", + "object_messageReactions_param_recent_reactions_type_flags.1?Vector<MessagePeerReaction>": "List of recent peers and their reactions", + "object_messageReactions_param_top_reactors_type_flags.4?Vector<MessageReactor>": "[Paid Telegram Star reactions leaderboard \u00bb](https:\/\/core.telegram.org\/api\/reactions#paid-reactions) for this message.", + "object_messages.messageReactionsList": "List of peers that reacted to a specific message", + "object_messages.messageReactionsList_param_count_type_int": "Total number of reactions matching query", + "object_messages.messageReactionsList_param_reactions_type_Vector<MessagePeerReaction>": "List of peers that reacted to a specific message", + "object_messages.messageReactionsList_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_messages.messageReactionsList_param_users_type_Vector<User>": "Mentioned users", + "object_messages.messageReactionsList_param_next_offset_type_flags.0?string": "If set, indicates the next offset to use to load more results by invoking [messages.getMessageReactionsList](..\/methods\/messages.getMessageReactionsList.md).", + "object_availableReaction": "Animations associated with a message reaction", + "object_availableReaction_param_inactive_type_flags.0?true": "If not set, the reaction can be added to new messages and enabled in chats.", + "object_availableReaction_param_premium_type_flags.2?true": "Whether this reaction can only be used by Telegram Premium users", + "object_availableReaction_param_reaction_type_string": "Reaction emoji", + "object_availableReaction_param_title_type_string": "Reaction description", + "object_availableReaction_param_static_icon_type_Document": "Static icon for the reaction", + "object_availableReaction_param_appear_animation_type_Document": "The animated sticker to show when the user opens the reaction dropdown", + "object_availableReaction_param_select_animation_type_Document": "The animated sticker to show when the user hovers over the reaction", + "object_availableReaction_param_activate_animation_type_Document": "The animated sticker to show when the reaction is chosen and activated", + "object_availableReaction_param_effect_animation_type_Document": "The background effect (still an animated sticker) to play under the `activate_animation`, when the reaction is chosen and activated", + "object_availableReaction_param_around_animation_type_flags.1?Document": "The animation that plays around the button when you press an existing reaction (played together with `center_icon`).", + "object_availableReaction_param_center_icon_type_flags.1?Document": "The animation of the emoji inside the button when you press an existing reaction (played together with `around_animation`).", + "object_messages.availableReactionsNotModified": "No new reactions are available", + "object_messages.availableReactions": "Animations and metadata associated with [message reactions \u00bb](https:\/\/core.telegram.org\/api\/reactions)", + "object_messages.availableReactions_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_messages.availableReactions_param_reactions_type_Vector<AvailableReaction>": "Animations and metadata associated with [message reactions \u00bb](https:\/\/core.telegram.org\/api\/reactions)", + "object_messagePeerReaction": "How a certain peer reacted to the message", + "object_messagePeerReaction_param_big_type_flags.0?true": "Whether the specified [message reaction \u00bb](https:\/\/core.telegram.org\/api\/reactions) should elicit a bigger and longer reaction", + "object_messagePeerReaction_param_unread_type_flags.1?true": "Whether the reaction wasn't yet marked as read by the current user", + "object_messagePeerReaction_param_my_type_flags.2?true": "Starting from layer 159, [messages.sendReaction](..\/methods\/messages.sendReaction.md) will send reactions from the peer (user or channel) specified using [messages.saveDefaultSendAs](..\/methods\/messages.saveDefaultSendAs.md).
If set, this flag indicates that this reaction was sent by us, even if the `peer` doesn't point to the current account.", + "object_messagePeerReaction_param_peer_id_type_Peer": "Peer that reacted to the message", + "object_messagePeerReaction_param_date_type_int": "When was this reaction added", + "object_messagePeerReaction_param_reaction_type_Reaction": "Reaction emoji", + "object_groupCallStreamChannel": "Info about an RTMP stream in a group call or livestream", + "object_groupCallStreamChannel_param_channel_type_int": "Channel ID", + "object_groupCallStreamChannel_param_scale_type_int": "Specifies the duration of the video segment to fetch in milliseconds, by bitshifting `1000` to the right `scale` times: `duration_ms := 1000 >> scale`.", + "object_groupCallStreamChannel_param_last_timestamp_ms_type_long": "Last seen timestamp to easily start fetching livestream chunks using [inputGroupCallStream](..\/constructors\/inputGroupCallStream.md)", + "object_phone.groupCallStreamChannels": "Info about RTMP streams in a group call or livestream", + "object_phone.groupCallStreamChannels_param_channels_type_Vector<GroupCallStreamChannel>": "RTMP streams", + "object_phone.groupCallStreamRtmpUrl": "RTMP URL and stream key to be used in streaming software", + "object_phone.groupCallStreamRtmpUrl_param_url_type_string": "RTMP URL", + "object_phone.groupCallStreamRtmpUrl_param_key_type_string": "Stream key", + "object_attachMenuBotIconColor": "Represents an attachment menu icon color for [bot mini apps \u00bb](https:\/\/core.telegram.org\/api\/bots\/attach)", + "object_attachMenuBotIconColor_param_name_type_string": "One of the following values:
`light_icon` - Color of the attachment menu icon (light mode)
`light_text` - Color of the attachment menu label, once selected (light mode)
`dark_icon` - Color of the attachment menu icon (dark mode)
`dark_text` - Color of the attachment menu label, once selected (dark mode)", + "object_attachMenuBotIconColor_param_color_type_int": "Color in RGB24 format", + "object_attachMenuBotIcon": "Represents an attachment menu icon for [bot mini apps \u00bb](https:\/\/core.telegram.org\/api\/bots\/attach)", + "object_attachMenuBotIcon_param_name_type_string": "One of the following values: note that animated icons must be played when the user clicks on the button, activating the bot mini app.

`default_static` - Default attachment menu icon in SVG format
`placeholder_static` - Default placeholder for opened Web Apps in SVG format
`ios_static` - Attachment menu icon in SVG format for the official iOS app
`ios_animated` - Animated attachment menu icon in TGS format for the official iOS app
`android_animated` - Animated attachment menu icon in TGS format for the official Android app
`macos_animated` - Animated attachment menu icon in TGS format for the official native Mac OS app
`ios_side_menu_static` - Side menu icon in PNG format for the official iOS app
`android_side_menu_static` - Side menu icon in SVG format for the official android app
`macos_side_menu_static` - Side menu icon in PNG format for the official native Mac OS app", + "object_attachMenuBotIcon_param_icon_type_Document": "The actual icon file.", + "object_attachMenuBotIcon_param_colors_type_flags.0?Vector<AttachMenuBotIconColor>": "Attachment menu icon colors.", + "object_attachMenuBot": "Represents a [bot mini app that can be launched from the attachment\/side menu \u00bb](https:\/\/core.telegram.org\/api\/bots\/attach)\n\nAt least one of the `show_in_attach_menu` or the `show_in_side_menu` flags will always be set.", + "object_attachMenuBot_param_inactive_type_flags.0?true": "If set, before launching the mini app the client should ask the user to add the mini app to the attachment\/side menu, and only if the user accepts, after invoking [messages.toggleBotInAttachMenu](..\/methods\/messages.toggleBotInAttachMenu.md) the app should be opened.", + "object_attachMenuBot_param_has_settings_type_flags.1?true": "Deprecated flag, can be ignored.", + "object_attachMenuBot_param_request_write_access_type_flags.2?true": "Whether the bot would like to send messages to the user.", + "object_attachMenuBot_param_show_in_attach_menu_type_flags.3?true": "Whether, when installed, an attachment menu entry should be shown for the Mini App.", + "object_attachMenuBot_param_show_in_side_menu_type_flags.4?true": "Whether, when installed, an entry in the main view side menu should be shown for the Mini App.", + "object_attachMenuBot_param_side_menu_disclaimer_needed_type_flags.5?true": "If `inactive` if set and the user hasn't previously accepted the third-party mini apps [Terms of Service](https:\/\/telegram.org\/tos\/mini-apps) for this bot, when showing the mini app installation prompt, an additional mandatory checkbox to accept the [mini apps TOS](https:\/\/telegram.org\/tos\/mini-apps) and a disclaimer indicating that this Mini App is not affiliated to Telegram should be shown.", + "object_attachMenuBot_param_bot_id_type_long": "Bot ID", + "object_attachMenuBot_param_short_name_type_string": "Attachment menu item name", + "object_attachMenuBot_param_peer_types_type_flags.3?Vector<AttachMenuPeerType>": "List of dialog types where this attachment menu entry should be shown", + "object_attachMenuBot_param_icons_type_Vector<AttachMenuBotIcon>": "List of platform-specific static icons and animations to use for the attachment menu button", + "object_attachMenuBotsNotModified": "The list of bot mini apps hasn't changed", + "object_attachMenuBots": "Represents a list of [bot mini apps that can be launched from the attachment menu \u00bb](https:\/\/core.telegram.org\/api\/bots\/attach)", + "object_attachMenuBots_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_attachMenuBots_param_bots_type_Vector<AttachMenuBot>": "List of [bot mini apps that can be launched from the attachment menu \u00bb](https:\/\/core.telegram.org\/api\/bots\/attach)", + "object_attachMenuBots_param_users_type_Vector<User>": "Info about related users\/bots", + "object_attachMenuBotsBot": "Represents a [bot mini app that can be launched from the attachment menu \u00bb](https:\/\/core.telegram.org\/api\/bots\/attach)", + "object_attachMenuBotsBot_param_bot_type_AttachMenuBot": "Represents a [bot mini app that can be launched from the attachment menu \u00bb](https:\/\/core.telegram.org\/api\/bots\/attach)
", + "object_attachMenuBotsBot_param_users_type_Vector<User>": "Info about related users and bots", + "object_webViewResultUrl": "Contains the webview URL with appropriate theme and user info parameters added", + "object_webViewResultUrl_param_fullsize_type_flags.1?true": "If set, the app must be opened in fullsize mode instead of compact mode.", + "object_webViewResultUrl_param_fullscreen_type_flags.2?true": "If set, the app must be opened in fullscreen", + "object_webViewResultUrl_param_query_id_type_flags.0?long": "Webview session ID (only returned by [inline button mini apps](https:\/\/core.telegram.org\/api\/bots\/webapps#inline-button-mini-apps), [menu button mini apps](https:\/\/core.telegram.org\/api\/bots\/webapps#menu-button-mini-apps), [attachment menu mini apps](https:\/\/core.telegram.org\/api\/bots\/webapps#attachment-menu-mini-apps)).", + "object_webViewResultUrl_param_url_type_string": "Webview URL to open", + "object_webViewMessageSent": "Info about a sent inline webview message", + "object_webViewMessageSent_param_msg_id_type_flags.0?InputBotInlineMessageID": "Message ID", + "object_botMenuButtonDefault": "Placeholder [bot menu button](https:\/\/core.telegram.org\/api\/bots\/menu) never returned to users: see [the docs for more info](https:\/\/core.telegram.org\/api\/bots\/menu).", + "object_botMenuButtonCommands": "[Bot menu button](https:\/\/core.telegram.org\/api\/bots\/menu) that opens the bot command list when clicked.", + "object_botMenuButton": "[Bot menu button](https:\/\/core.telegram.org\/api\/bots\/menu) that opens a [web app](https:\/\/core.telegram.org\/api\/bots\/webapps) when clicked.", + "object_botMenuButton_param_text_type_string": "Title to be displayed on the menu button instead of 'Menu'", + "object_botMenuButton_param_url_type_string": "URL of a [web app](https:\/\/core.telegram.org\/api\/bots\/webapps) to open when the user clicks on the button", + "object_account.savedRingtonesNotModified": "The notification sound list hasn't changed.", + "object_account.savedRingtones": "A list of saved notification sounds", + "object_account.savedRingtones_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_account.savedRingtones_param_ringtones_type_Vector<Document>": "Saved notification sounds", + "object_notificationSoundDefault": "Indicates the default notification sound should be used", + "object_notificationSoundNone": "No notification sound should be used", + "object_notificationSoundLocal": "Indicates a specific local notification sound should be used", + "object_notificationSoundLocal_param_title_type_string": "Notification sound title", + "object_notificationSoundLocal_param_data_type_string": "Notification sound identifier (arbitrary data used by the client to identify a specific local notification sound)", + "object_notificationSoundRingtone": "A specific previously uploaded notification sound should be used", + "object_notificationSoundRingtone_param_id_type_long": "Document ID of notification sound uploaded using [account.uploadRingtone](..\/methods\/account.uploadRingtone.md)", + "object_account.savedRingtone": "The notification sound was already in MP3 format and was saved without any modification", + "object_account.savedRingtoneConverted": "The notification sound was not in MP3 format and was successfully converted and saved, use the returned [Document](..\/types\/Document.md) to refer to the notification sound from now on", + "object_account.savedRingtoneConverted_param_document_type_Document": "The converted notification sound", + "object_attachMenuPeerTypeSameBotPM": "The bot attachment menu entry is available in the chat with the bot that offers it", + "object_attachMenuPeerTypeBotPM": "The bot attachment menu entry is available in private chats with other bots (excluding the bot that offers the current attachment menu)", + "object_attachMenuPeerTypePM": "The bot attachment menu entry is available in private chats with other users (not bots)", + "object_attachMenuPeerTypeChat": "The bot attachment menu entry is available in [groups and supergroups](https:\/\/core.telegram.org\/api\/channel)", + "object_attachMenuPeerTypeBroadcast": "The bot attachment menu entry is available in channels", + "object_inputInvoiceMessage": "An invoice contained in a [messageMediaInvoice](..\/constructors\/messageMediaInvoice.md) message or [paid media \u00bb](https:\/\/core.telegram.org\/api\/paid-media).", + "object_inputInvoiceMessage_param_peer_type_InputPeer": "Chat where the invoice\/paid media was sent", + "object_inputInvoiceMessage_param_msg_id_type_int": "Message ID", + "object_inputInvoiceSlug": "An invoice slug taken from an [invoice deep link](https:\/\/core.telegram.org\/api\/links#invoice-links) or from the [`premium_invoice_slug` app config parameter \u00bb](https:\/\/core.telegram.org\/api\/config#premium-invoice-slug)", + "object_inputInvoiceSlug_param_slug_type_string": "The invoice slug", + "object_inputInvoicePremiumGiftCode": "Used if the user wishes to start a channel\/supergroup [giveaway](https:\/\/core.telegram.org\/api\/giveaways) or send some [giftcodes](https:\/\/core.telegram.org\/api\/giveaways) to members of a channel\/supergroup, in exchange for [boosts](https:\/\/core.telegram.org\/api\/boost).", + "object_inputInvoicePremiumGiftCode_param_purpose_type_InputStorePaymentPurpose": "Should be populated with [inputStorePaymentPremiumGiveaway](..\/constructors\/inputStorePaymentPremiumGiveaway.md) for [giveaways](https:\/\/core.telegram.org\/api\/giveaways) and [inputStorePaymentPremiumGiftCode](..\/constructors\/inputStorePaymentPremiumGiftCode.md) for [gifts](https:\/\/core.telegram.org\/api\/giveaways).", + "object_inputInvoicePremiumGiftCode_param_option_type_PremiumGiftCodeOption": "Should be populated with one of the giveaway options returned by [payments.getPremiumGiftCodeOptions](..\/methods\/payments.getPremiumGiftCodeOptions.md), see the [giveaways \u00bb](https:\/\/core.telegram.org\/api\/giveaways) documentation for more info.", + "object_inputInvoiceStars": "Used to top up the [Telegram Stars](https:\/\/core.telegram.org\/api\/stars) balance of the current account or someone else's account, or to start a [Telegram Star giveaway \u00bb](https:\/\/core.telegram.org\/api\/giveaways#star-giveaways).", + "object_inputInvoiceStars_param_purpose_type_InputStorePaymentPurpose": "An [inputStorePaymentStarsGiveaway](..\/constructors\/inputStorePaymentStarsGiveaway.md), [inputStorePaymentStarsTopup](..\/constructors\/inputStorePaymentStarsTopup.md) or [inputStorePaymentStarsGift](..\/constructors\/inputStorePaymentStarsGift.md).", + "object_inputInvoiceChatInviteSubscription": "Used to pay for a [Telegram Star subscription \u00bb](https:\/\/core.telegram.org\/api\/stars#star-subscriptions).", + "object_inputInvoiceChatInviteSubscription_param_hash_type_string": "The [invitation link of the Telegram Star subscription \u00bb](https:\/\/core.telegram.org\/api\/stars#star-subscriptions)", + "object_inputInvoiceStarGift": "Used to buy a [Telegram Star Gift, see here \u00bb](https:\/\/core.telegram.org\/api\/gifts) for more info.", + "object_inputInvoiceStarGift_param_hide_name_type_flags.0?true": "If set, your name will be hidden if the destination user decides to display the gift on their profile (they will still see that you sent the gift)", + "object_inputInvoiceStarGift_param_include_upgrade_type_flags.2?true": "Also pay for an eventual upgrade of the gift to a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "object_inputInvoiceStarGift_param_peer_type_InputPeer": "Receiver of the gift.", + "object_inputInvoiceStarGift_param_gift_id_type_long": "Identifier of the gift, from [starGift](..\/constructors\/starGift.md).`id`", + "object_inputInvoiceStarGift_param_message_type_flags.1?TextWithEntities": "Optional message, attached with the gift.
The maximum length for this field is specified in the [stargifts\\_message\\_length\\_max client configuration value \u00bb](https:\/\/core.telegram.org\/api\/config#stargifts-message-length-max).", + "object_inputInvoiceStarGiftUpgrade": "Used to [pay to upgrade a Gift to a collectible gift](https:\/\/core.telegram.org\/api\/gifts#upgrade-a-gift-to-a-collectible-gift), see the [collectible gifts \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts) documentation for more info on the full flow.", + "object_inputInvoiceStarGiftUpgrade_param_keep_original_details_type_flags.0?true": "Set this flag to keep the original gift text, sender and receiver in the upgraded gift as a [starGiftAttributeOriginalDetails](..\/constructors\/starGiftAttributeOriginalDetails.md) attribute.", + "object_inputInvoiceStarGiftUpgrade_param_stargift_type_InputSavedStarGift": "The identifier of the received gift to upgrade.", + "object_inputInvoiceStarGiftTransfer": "Used to [pay to transfer a collectible gift to another peer](https:\/\/core.telegram.org\/api\/gifts#transferring-collectible-gifts), see the [gifts \u00bb](https:\/\/core.telegram.org\/api\/gifts#transferring-collectible-gifts) documentation for more info.", + "object_inputInvoiceStarGiftTransfer_param_stargift_type_InputSavedStarGift": "The identifier of the received gift", + "object_inputInvoiceStarGiftTransfer_param_to_id_type_InputPeer": "The destination peer", + "object_inputInvoicePremiumGiftStars": "Used to gift a [Telegram Premium](https:\/\/core.telegram.org\/api\/premium) subscription to another user, paying with [Telegram Stars](https:\/\/core.telegram.org\/api\/stars).", + "object_inputInvoicePremiumGiftStars_param_user_id_type_InputUser": "Who will receive the gifted subscription.", + "object_inputInvoicePremiumGiftStars_param_months_type_int": "Duration of the subscription in months, must be one of the options with `currency == \"XTR\"` returned by [payments.getPremiumGiftCodeOptions](..\/methods\/payments.getPremiumGiftCodeOptions.md).", + "object_inputInvoicePremiumGiftStars_param_message_type_flags.0?TextWithEntities": "Message attached with the gift.", + "object_inputInvoiceBusinessBotTransferStars": "Transfer stars from the balance of a user account [connected to a business bot](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots), to the balance of the [business bot](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots), see [here \u00bb](https:\/\/core.telegram.org\/api\/stars#transferring-stars-from-a-business-account-to-the-business-bot) for more info on the full flow.", + "object_inputInvoiceBusinessBotTransferStars_param_bot_type_InputUser": "Always [inputUserSelf](..\/constructors\/inputUserSelf.md).", + "object_inputInvoiceBusinessBotTransferStars_param_stars_type_long": "The number of stars to transfer.", + "object_inputInvoiceStarGiftResale": "Used to buy a [collectible gift](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts) currently up on resale, see [here](https:\/\/core.telegram.org\/api\/gifts#reselling-collectible-gifts) for more info on the full flow.", + "object_inputInvoiceStarGiftResale_param_ton_type_flags.0?true": "Buy the gift using TON.", + "object_inputInvoiceStarGiftResale_param_slug_type_string": "Slug of the gift to buy.", + "object_inputInvoiceStarGiftResale_param_to_id_type_InputPeer": "The receiver of the gift.", + "object_inputInvoiceStarGiftPrepaidUpgrade": "[Separately prepay for the upgrade of a gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#prepaying-for-someone-elses-upgrade).", + "object_inputInvoiceStarGiftPrepaidUpgrade_param_peer_type_InputPeer": "The peer that owns the gift.", + "object_inputInvoiceStarGiftPrepaidUpgrade_param_hash_type_string": "The upgrade hash from [messageActionStarGift](..\/constructors\/messageActionStarGift.md).`prepaid_upgrade_hash` or [savedStarGift](..\/constructors\/savedStarGift.md).`prepaid_upgrade_hash`.", + "object_payments.exportedInvoice": "Exported [invoice deep link](https:\/\/core.telegram.org\/api\/links#invoice-links)", + "object_payments.exportedInvoice_param_url_type_string": "Exported [invoice deep link](https:\/\/core.telegram.org\/api\/links#invoice-links)", + "object_messages.transcribedAudio": "[Transcribed text from a voice message \u00bb](https:\/\/core.telegram.org\/api\/transcribe)", + "object_messages.transcribedAudio_param_pending_type_flags.0?true": "Whether the transcription is partial because audio transcription is still in progress, if set the user may receive further [updateTranscribedAudio](..\/constructors\/updateTranscribedAudio.md) updates with the updated transcription.", + "object_messages.transcribedAudio_param_transcription_id_type_long": "Transcription ID", + "object_messages.transcribedAudio_param_text_type_string": "Transcripted text", + "object_messages.transcribedAudio_param_trial_remains_num_type_flags.1?int": "For non-[Premium](https:\/\/core.telegram.org\/api\/premium) users, this flag will be set, indicating the remaining transcriptions in the free trial period.", + "object_messages.transcribedAudio_param_trial_remains_until_date_type_flags.1?int": "For non-[Premium](https:\/\/core.telegram.org\/api\/premium) users, this flag will be set, indicating the date when the `trial_remains_num` counter will be reset to the maximum value of [transcribe\\_audio\\_trial\\_weekly\\_number](https:\/\/core.telegram.org\/api\/config#transcribe-audio-trial-weekly-number).", + "object_help.premiumPromo": "Telegram Premium promotion information\n\nNote that the `video_sections`+`videos` fields are a list of videos, and the corresponding premium feature identifiers. \nThey're equivalent to a section => video dictionary, with keys from `video_section` and values from `videos`. \nThe keys in `video_sections` correspond to a specific feature identifier, and the associated promotional video should be shown when the associated feature row is clicked.", + "object_help.premiumPromo_param_status_text_type_string": "Description of the current state of the user's Telegram Premium subscription", + "object_help.premiumPromo_param_status_entities_type_Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "object_help.premiumPromo_param_video_sections_type_Vector<string>": "A list of [premium feature identifiers \u00bb](https:\/\/core.telegram.org\/api\/premium), associated to each video", + "object_help.premiumPromo_param_videos_type_Vector<Document>": "A list of videos", + "object_help.premiumPromo_param_period_options_type_Vector<PremiumSubscriptionOption>": "Telegram Premium subscription options", + "object_help.premiumPromo_param_users_type_Vector<User>": "Related user information", + "object_inputStorePaymentPremiumSubscription": "Info about a Telegram Premium purchase", + "object_inputStorePaymentPremiumSubscription_param_restore_type_flags.0?true": "Pass true if this is a restore of a Telegram Premium purchase; only for the App Store", + "object_inputStorePaymentPremiumSubscription_param_upgrade_type_flags.1?true": "Pass true if this is an upgrade from a monthly subscription to a yearly subscription; only for App Store", + "object_inputStorePaymentGiftPremium": "Info about a gifted Telegram Premium purchase", + "object_inputStorePaymentGiftPremium_param_user_id_type_InputUser": "The user to which the Telegram Premium subscription was gifted", + "object_inputStorePaymentGiftPremium_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code", + "object_inputStorePaymentGiftPremium_param_amount_type_long": "Price of the product in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_inputStorePaymentPremiumGiftCode": "Used to gift [Telegram Premium](https:\/\/core.telegram.org\/api\/premium) subscriptions only to some specific subscribers of a channel\/supergroup or to some of our contacts, see [here \u00bb](https:\/\/core.telegram.org\/api\/giveaways) for more info on giveaways and gifts.", + "object_inputStorePaymentPremiumGiftCode_param_users_type_Vector<InputUser>": "The users that will receive the [Telegram Premium](https:\/\/core.telegram.org\/api\/premium) subscriptions.", + "object_inputStorePaymentPremiumGiftCode_param_boost_peer_type_flags.0?InputPeer": "If set, the gifts will be sent on behalf of a channel\/supergroup we are an admin of, which will also assign some [boosts](https:\/\/core.telegram.org\/api\/boost) to it. Otherwise, the gift will be sent directly from the currently logged in user, and we will gain some extra [boost slots](https:\/\/core.telegram.org\/api\/boost). See [here \u00bb](https:\/\/core.telegram.org\/api\/giveaways) for more info on giveaways and gifts.", + "object_inputStorePaymentPremiumGiftCode_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code", + "object_inputStorePaymentPremiumGiftCode_param_amount_type_long": "Total price in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_inputStorePaymentPremiumGiftCode_param_message_type_flags.1?TextWithEntities": "Message attached with the gift", + "object_inputStorePaymentPremiumGiveaway": "Used to pay for a [giveaway, see here \u00bb](https:\/\/core.telegram.org\/api\/giveaways) for more info.", + "object_inputStorePaymentPremiumGiveaway_param_only_new_subscribers_type_flags.0?true": "If set, only new subscribers starting from the giveaway creation date will be able to participate to the giveaway.", + "object_inputStorePaymentPremiumGiveaway_param_winners_are_visible_type_flags.3?true": "If set, giveaway winners are public and will be listed in a [messageMediaGiveawayResults](..\/constructors\/messageMediaGiveawayResults.md) message that will be automatically sent to the channel once the giveaway ends.", + "object_inputStorePaymentPremiumGiveaway_param_boost_peer_type_InputPeer": "The channel\/supergroup starting the giveaway, that the user must join to participate, that will receive the giveaway [boosts](https:\/\/core.telegram.org\/api\/boost); see [here \u00bb](https:\/\/core.telegram.org\/api\/giveaways) for more info on giveaways.", + "object_inputStorePaymentPremiumGiveaway_param_additional_peers_type_flags.1?Vector<InputPeer>": "Additional channels that the user must join to participate to the giveaway can be specified here.", + "object_inputStorePaymentPremiumGiveaway_param_countries_iso2_type_flags.2?Vector<string>": "The set of users that can participate to the giveaway can be restricted by passing here an explicit whitelist of up to [giveaway\\_countries\\_max](https:\/\/core.telegram.org\/api\/config#giveaway-countries-max) countries, specified as two-letter ISO 3166-1 alpha-2 country codes.", + "object_inputStorePaymentPremiumGiveaway_param_prize_description_type_flags.4?string": "Can contain a textual description of additional giveaway prizes.", + "object_inputStorePaymentPremiumGiveaway_param_random_id_type_long": "Random ID to avoid resending the giveaway", + "object_inputStorePaymentPremiumGiveaway_param_until_date_type_int": "The end date of the giveaway, must be at most [giveaway\\_period\\_max](https:\/\/core.telegram.org\/api\/config#giveaway-period-max) seconds in the future; see [here \u00bb](https:\/\/core.telegram.org\/api\/giveaways) for more info on giveaways.", + "object_inputStorePaymentPremiumGiveaway_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code", + "object_inputStorePaymentPremiumGiveaway_param_amount_type_long": "Total price in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_inputStorePaymentStarsTopup": "Used to top up the [Telegram Stars balance](https:\/\/core.telegram.org\/api\/stars) of the current account.", + "object_inputStorePaymentStarsTopup_param_stars_type_long": "Amount of stars to topup", + "object_inputStorePaymentStarsTopup_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code", + "object_inputStorePaymentStarsTopup_param_amount_type_long": "Total price in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_inputStorePaymentStarsTopup_param_spend_purpose_peer_type_flags.0?InputPeer": "Should be populated with the peer where the topup process was initiated due to low funds (i.e. a bot for bot payments, a channel for paid media\/reactions, etc); leave this flag unpopulated if the topup flow was not initated when attempting to spend more Stars than currently available on the account's balance.", + "object_inputStorePaymentStarsGift": "Used to gift [Telegram Stars](https:\/\/core.telegram.org\/api\/stars) to a friend.", + "object_inputStorePaymentStarsGift_param_user_id_type_InputUser": "The user to which the stars should be gifted.", + "object_inputStorePaymentStarsGift_param_stars_type_long": "Amount of stars to gift", + "object_inputStorePaymentStarsGift_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code", + "object_inputStorePaymentStarsGift_param_amount_type_long": "Total price in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_inputStorePaymentStarsGiveaway": "Used to pay for a [star giveaway, see here \u00bb](https:\/\/core.telegram.org\/api\/giveaways#star-giveaways) for more info.", + "object_inputStorePaymentStarsGiveaway_param_only_new_subscribers_type_flags.0?true": "If set, only new subscribers starting from the giveaway creation date will be able to participate to the giveaway.", + "object_inputStorePaymentStarsGiveaway_param_winners_are_visible_type_flags.3?true": "If set, giveaway winners are public and will be listed in a [messageMediaGiveawayResults](..\/constructors\/messageMediaGiveawayResults.md) message that will be automatically sent to the channel once the giveaway ends.", + "object_inputStorePaymentStarsGiveaway_param_stars_type_long": "Total number of Telegram Stars being given away (each user will receive `stars\/users` stars).", + "object_inputStorePaymentStarsGiveaway_param_boost_peer_type_InputPeer": "The channel\/supergroup starting the giveaway, that the user must join to participate, that will receive the giveaway [boosts](https:\/\/core.telegram.org\/api\/boost); see [here \u00bb](https:\/\/core.telegram.org\/api\/giveaways) for more info on giveaways.", + "object_inputStorePaymentStarsGiveaway_param_additional_peers_type_flags.1?Vector<InputPeer>": "Additional channels that the user must join to participate to the giveaway can be specified here.", + "object_inputStorePaymentStarsGiveaway_param_countries_iso2_type_flags.2?Vector<string>": "The set of users that can participate to the giveaway can be restricted by passing here an explicit whitelist of up to [giveaway\\_countries\\_max](https:\/\/core.telegram.org\/api\/config#giveaway-countries-max) countries, specified as two-letter ISO 3166-1 alpha-2 country codes.", + "object_inputStorePaymentStarsGiveaway_param_prize_description_type_flags.4?string": "Can contain a textual description of additional giveaway prizes.", + "object_inputStorePaymentStarsGiveaway_param_random_id_type_long": "Random ID to avoid resending the giveaway", + "object_inputStorePaymentStarsGiveaway_param_until_date_type_int": "The end date of the giveaway, must be at most [giveaway\\_period\\_max](https:\/\/core.telegram.org\/api\/config#giveaway-period-max) seconds in the future; see [here \u00bb](https:\/\/core.telegram.org\/api\/giveaways) for more info on giveaways.", + "object_inputStorePaymentStarsGiveaway_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code", + "object_inputStorePaymentStarsGiveaway_param_amount_type_long": "Total price in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_inputStorePaymentStarsGiveaway_param_users_type_int": "Number of winners.", + "object_inputStorePaymentAuthCode": "Indicates payment for a login code.", + "object_inputStorePaymentAuthCode_param_restore_type_flags.0?true": "Set this flag to restore a previously made purchase.", + "object_inputStorePaymentAuthCode_param_phone_number_type_string": "Phone number.", + "object_inputStorePaymentAuthCode_param_phone_code_hash_type_string": "`phone_code_hash` returned by [auth.sendCode](..\/methods\/auth.sendCode.md).", + "object_inputStorePaymentAuthCode_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code", + "object_inputStorePaymentAuthCode_param_amount_type_long": "Price of the product in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_paymentFormMethod": "Represents an additional payment method", + "object_paymentFormMethod_param_url_type_string": "URL to open in a webview to process the payment", + "object_paymentFormMethod_param_title_type_string": "Payment method description", + "object_emojiStatusEmpty": "No emoji status is set", + "object_emojiStatus": "An [emoji status](https:\/\/core.telegram.org\/api\/emoji-status)", + "object_emojiStatus_param_document_id_type_long": "[Custom emoji document ID](https:\/\/core.telegram.org\/api\/custom-emoji)", + "object_emojiStatus_param_until_type_flags.0?int": "If set, the emoji status will be active until the specified unixtime.", + "object_emojiStatusCollectible": "An [owned collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts) as emoji status.\n\n**Cannot** be passed to [account.updateEmojiStatus](..\/methods\/account.updateEmojiStatus.md), must be converted to an [inputEmojiStatusCollectible](..\/constructors\/inputEmojiStatusCollectible.md) first before passing it to that method.", + "object_emojiStatusCollectible_param_collectible_id_type_long": "ID of the collectible (from [starGiftUnique](..\/constructors\/starGiftUnique.md).`id`).", + "object_emojiStatusCollectible_param_document_id_type_long": "ID of the [custom emoji](https:\/\/core.telegram.org\/api\/custom-emoji) representing the status.", + "object_emojiStatusCollectible_param_title_type_string": "Name of the collectible.", + "object_emojiStatusCollectible_param_slug_type_string": "Unique identifier of the collectible that may be used to create a [collectible gift link \u00bb](https:\/\/core.telegram.org\/api\/links#collectible-gift-link) for the current collectible, or to fetch further info about the collectible using [payments.getUniqueStarGift](..\/methods\/payments.getUniqueStarGift.md).", + "object_emojiStatusCollectible_param_pattern_document_id_type_long": "The ID of a pattern to apply on the profile's backdrop, correlated to the [starGiftAttributePattern](..\/constructors\/starGiftAttributePattern.md) from the gift in `slug`.", + "object_emojiStatusCollectible_param_center_color_type_int": "Color of the center of the profile backdrop in RGB24 format, from the gift's [starGiftAttributeBackdrop](..\/constructors\/starGiftAttributeBackdrop.md).", + "object_emojiStatusCollectible_param_edge_color_type_int": "Color of the edges of the profile backdrop in RGB24 format, from the gift's [starGiftAttributeBackdrop](..\/constructors\/starGiftAttributeBackdrop.md).", + "object_emojiStatusCollectible_param_pattern_color_type_int": "Color of the `pattern_document_id` applied on the profile backdrop in RGB24 format, from the gift's [starGiftAttributeBackdrop](..\/constructors\/starGiftAttributeBackdrop.md).", + "object_emojiStatusCollectible_param_text_color_type_int": "Color of text on the profile backdrop in RGB24 format, from the gift's [starGiftAttributeBackdrop](..\/constructors\/starGiftAttributeBackdrop.md).", + "object_emojiStatusCollectible_param_until_type_flags.0?int": "If set, the emoji status will be active until the specified unixtime.", + "object_inputEmojiStatusCollectible": "An [owned collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts) as emoji status: can only be used in [account.updateEmojiStatus](..\/methods\/account.updateEmojiStatus.md), is never returned by the API.\n\nNote that once set, the status will be returned to users as a [emojiStatusCollectible](..\/constructors\/emojiStatusCollectible.md) constructor, instead (which **cannot** be passed to [account.updateEmojiStatus](..\/methods\/account.updateEmojiStatus.md), and must be converted to an [inputEmojiStatusCollectible](..\/constructors\/inputEmojiStatusCollectible.md) first).", + "object_inputEmojiStatusCollectible_param_collectible_id_type_long": "ID of the collectible (from [starGiftUnique](..\/constructors\/starGiftUnique.md).`id`).", + "object_inputEmojiStatusCollectible_param_until_type_flags.0?int": "If set, the emoji status will be active until the specified unixtime.", + "object_account.emojiStatusesNotModified": "The server-side list of [emoji statuses](https:\/\/core.telegram.org\/api\/emoji-status) hasn't changed", + "object_account.emojiStatuses": "A list of [emoji statuses](https:\/\/core.telegram.org\/api\/emoji-status)", + "object_account.emojiStatuses_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_account.emojiStatuses_param_statuses_type_Vector<EmojiStatus>": "[Emoji statuses](https:\/\/core.telegram.org\/api\/emoji-status)", + "object_reactionEmpty": "No reaction", + "object_reactionEmoji": "Normal emoji message reaction", + "object_reactionEmoji_param_emoticon_type_string": "Emoji", + "object_reactionCustomEmoji": "[Custom emoji](https:\/\/core.telegram.org\/api\/custom-emoji) message reaction", + "object_reactionCustomEmoji_param_document_id_type_long": "[Custom emoji document ID](https:\/\/core.telegram.org\/api\/custom-emoji)", + "object_reactionPaid": "Represents a [paid Telegram Star reaction \u00bb](https:\/\/core.telegram.org\/api\/reactions#paid-reactions).", + "object_chatReactionsNone": "No reactions are allowed", + "object_chatReactionsAll": "All reactions or all non-custom reactions are allowed", + "object_chatReactionsAll_param_allow_custom_type_flags.0?true": "Whether to allow custom reactions", + "object_chatReactionsSome": "Some reactions are allowed", + "object_chatReactionsSome_param_reactions_type_Vector<Reaction>": "Allowed set of reactions: the [reactions\\_in\\_chat\\_max](https:\/\/core.telegram.org\/api\/config#reactions-in-chat-max) configuration field indicates the maximum number of reactions that can be specified in this field.", + "object_messages.reactionsNotModified": "The server-side list of [message reactions](https:\/\/core.telegram.org\/api\/reactions) hasn't changed", + "object_messages.reactions": "List of [message reactions](https:\/\/core.telegram.org\/api\/reactions)", + "object_messages.reactions_param_hash_type_long": "Hash used for caching, can also be locally regenerated using the algorithm specified [here \u00bb](https:\/\/core.telegram.org\/api\/reactions#recent-reactions).", + "object_messages.reactions_param_reactions_type_Vector<Reaction>": "Reactions", + "object_emailVerifyPurposeLoginSetup": "Email verification purpose: setup login email", + "object_emailVerifyPurposeLoginSetup_param_phone_number_type_string": "Phone number", + "object_emailVerifyPurposeLoginSetup_param_phone_code_hash_type_string": "Phone code hash as specified by the [documentation](https:\/\/core.telegram.org\/api\/auth#email-verification)", + "object_emailVerifyPurposeLoginChange": "Email verification purpose: change login email", + "object_emailVerifyPurposePassport": "Verify an email for use in [telegram passport](https:\/\/core.telegram.org\/api\/passport)", + "object_emailVerificationCode": "Email verification code", + "object_emailVerificationCode_param_code_type_string": "Received verification code", + "object_emailVerificationGoogle": "Google ID email verification token", + "object_emailVerificationGoogle_param_token_type_string": "Token", + "object_emailVerificationApple": "Apple ID email verification token", + "object_emailVerificationApple_param_token_type_string": "Token", + "object_account.emailVerified": "The email was verified correctly.", + "object_account.emailVerified_param_email_type_string": "The verified email address.", + "object_account.emailVerifiedLogin": "The email was verified correctly, and a login code was just sent to it.", + "object_account.emailVerifiedLogin_param_email_type_string": "The verified email address.", + "object_account.emailVerifiedLogin_param_sent_code_type_auth.SentCode": "Info about the sent [login code](https:\/\/core.telegram.org\/api\/auth)", + "object_premiumSubscriptionOption": "Describes a Telegram Premium subscription option", + "object_premiumSubscriptionOption_param_current_type_flags.1?true": "Whether this subscription option is currently in use.", + "object_premiumSubscriptionOption_param_can_purchase_upgrade_type_flags.2?true": "Whether this subscription option can be used to upgrade the existing Telegram Premium subscription. When upgrading Telegram Premium subscriptions bought through stores, make sure that the store transaction ID is equal to `transaction`, to avoid upgrading someone else's account, if the client is currently logged into multiple accounts.", + "object_premiumSubscriptionOption_param_transaction_type_flags.3?string": "Identifier of the last in-store transaction for the currently used subscription on the current account.", + "object_premiumSubscriptionOption_param_months_type_int": "Duration of subscription in months", + "object_premiumSubscriptionOption_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code", + "object_premiumSubscriptionOption_param_amount_type_long": "Total price in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_premiumSubscriptionOption_param_bot_url_type_string": "[Deep link](https:\/\/core.telegram.org\/api\/links) used to initiate payment", + "object_premiumSubscriptionOption_param_store_product_type_flags.0?string": "Store product ID, only for official apps", + "object_sendAsPeer": "Indicates a peer that can be used to send messages", + "object_sendAsPeer_param_premium_required_type_flags.0?true": "Whether a Telegram Premium account is required to send messages as this peer", + "object_sendAsPeer_param_peer_type_Peer": "Peer", + "object_messageExtendedMediaPreview": "Paid media preview for not yet purchased paid media, [see here \u00bb](https:\/\/core.telegram.org\/api\/paid-media) for more info.", + "object_messageExtendedMediaPreview_param_w_type_flags.0?int": "Width", + "object_messageExtendedMediaPreview_param_h_type_flags.0?int": "Height", + "object_messageExtendedMediaPreview_param_thumb_type_flags.1?PhotoSize": "[Extremely low resolution thumbnail](https:\/\/core.telegram.org\/api\/files#stripped-thumbnails).", + "object_messageExtendedMediaPreview_param_video_duration_type_flags.2?int": "Video duration for videos.", + "object_messageExtendedMedia": "Already purchased paid media, [see here \u00bb](https:\/\/core.telegram.org\/api\/paid-media) for more info.", + "object_messageExtendedMedia_param_media_type_MessageMedia": "The media we purchased.", + "object_stickerKeyword": "Keywords for a certain sticker", + "object_stickerKeyword_param_document_id_type_long": "Sticker ID", + "object_stickerKeyword_param_keyword_type_Vector<string>": "Keywords", + "object_username": "Contains information about a username.", + "object_username_param_editable_type_flags.0?true": "Whether the username is editable, meaning it wasn't bought on [fragment](https:\/\/fragment.com).", + "object_username_param_active_type_flags.1?true": "Whether the username is active.", + "object_username_param_username_type_string": "The username.", + "object_forumTopicDeleted": "Represents a deleted forum topic.", + "object_forumTopicDeleted_param_id_type_int": "The ID of the deleted forum topic.", + "object_forumTopic": "Represents a [forum topic](https:\/\/core.telegram.org\/api\/forum#forum-topics).", + "object_forumTopic_param_my_type_flags.1?true": "Whether the topic was created by the current user", + "object_forumTopic_param_closed_type_flags.2?true": "Whether the topic is closed (no messages can be sent to it)", + "object_forumTopic_param_pinned_type_flags.3?true": "Whether the topic is pinned", + "object_forumTopic_param_short_type_flags.5?true": "Whether this constructor is a reduced version of the full topic information.
If set, only the `my`, `closed`, `id`, `date`, `title`, `icon_color`, `icon_emoji_id` and `from_id` parameters will contain valid information.
Reduced info is usually only returned in topic-related [admin log events \u00bb](https:\/\/core.telegram.org\/api\/recent-actions) and in the [messages.channelMessages](..\/constructors\/messages.channelMessages.md) constructor: if needed, full information can be fetched using [channels.getForumTopicsByID](..\/methods\/channels.getForumTopicsByID.md).", + "object_forumTopic_param_hidden_type_flags.6?true": "Whether the topic is hidden (only valid for the \"General\" topic, `id=1`)", + "object_forumTopic_param_id_type_int": "[Topic ID](https:\/\/core.telegram.org\/api\/forum#forum-topics)", + "object_forumTopic_param_date_type_int": "Topic creation date", + "object_forumTopic_param_title_type_string": "Topic title", + "object_forumTopic_param_icon_color_type_int": "If no custom emoji icon is specified, specifies the color of the fallback topic icon (RGB), one of `0x6FB9F0`, `0xFFD67E`, `0xCB86DB`, `0x8EEE98`, `0xFF93B2`, or `0xFB6F5F`.", + "object_forumTopic_param_icon_emoji_id_type_flags.0?long": "ID of the [custom emoji](https:\/\/core.telegram.org\/api\/custom-emoji) used as topic icon.", + "object_forumTopic_param_top_message_type_int": "ID of the last message that was sent to this topic", + "object_forumTopic_param_read_inbox_max_id_type_int": "Position up to which all incoming messages are read.", + "object_forumTopic_param_read_outbox_max_id_type_int": "Position up to which all outgoing messages are read.", + "object_forumTopic_param_unread_count_type_int": "Number of unread messages", + "object_forumTopic_param_unread_mentions_count_type_int": "Number of [unread mentions](https:\/\/core.telegram.org\/api\/mentions)", + "object_forumTopic_param_unread_reactions_count_type_int": "Number of unread reactions to messages you sent", + "object_forumTopic_param_from_id_type_Peer": "ID of the peer that created the topic", + "object_forumTopic_param_notify_settings_type_PeerNotifySettings": "Notification settings", + "object_forumTopic_param_draft_type_flags.4?DraftMessage": "Message [draft](https:\/\/core.telegram.org\/api\/drafts)", + "object_messages.forumTopics": "Contains information about multiple [forum topics](https:\/\/core.telegram.org\/api\/forum#forum-topics)", + "object_messages.forumTopics_param_order_by_create_date_type_flags.0?true": "Whether the returned topics are ordered by creation date; if set, pagination by `offset_date` should use [forumTopic](..\/constructors\/forumTopic.md).`date`; otherwise topics are ordered by the last message date, so paginate by the `date` of the [message](..\/types\/Message.md) referenced by [forumTopic](..\/constructors\/forumTopic.md).`top_message`.", + "object_messages.forumTopics_param_count_type_int": "Total number of topics matching query; may be more than the topics contained in `topics`, in which case [pagination](https:\/\/core.telegram.org\/api\/offsets) is required.", + "object_messages.forumTopics_param_topics_type_Vector<ForumTopic>": "Forum topics", + "object_messages.forumTopics_param_messages_type_Vector<Message>": "Related messages (contains the messages mentioned by [forumTopic](..\/constructors\/forumTopic.md).`top_message`).", + "object_messages.forumTopics_param_chats_type_Vector<Chat>": "Related chats", + "object_messages.forumTopics_param_users_type_Vector<User>": "Related users", + "object_messages.forumTopics_param_pts_type_int": "[Event count after generation](https:\/\/core.telegram.org\/api\/updates)", + "object_defaultHistoryTTL": "Contains info about the default value of the Time-To-Live setting, applied to all new chats.", + "object_defaultHistoryTTL_param_period_type_int": "Time-To-Live setting applied to all new chats.", + "object_exportedContactToken": "Describes a [temporary profile link](https:\/\/core.telegram.org\/api\/links#temporary-profile-links).", + "object_exportedContactToken_param_url_type_string": "The [temporary profile link](https:\/\/core.telegram.org\/api\/links#temporary-profile-links).", + "object_exportedContactToken_param_expires_type_int": "Its expiration date", + "object_requestPeerTypeUser": "Choose a user.", + "object_requestPeerTypeUser_param_bot_type_flags.0?Bool": "Whether to allow choosing only bots.", + "object_requestPeerTypeUser_param_premium_type_flags.1?Bool": "Whether to allow choosing only [Premium](https:\/\/core.telegram.org\/api\/premium) users.", + "object_requestPeerTypeChat": "Choose a chat or supergroup", + "object_requestPeerTypeChat_param_creator_type_flags.0?true": "Whether to allow only choosing chats or supergroups that were created by the current user.", + "object_requestPeerTypeChat_param_bot_participant_type_flags.5?true": "Whether to allow only choosing chats or supergroups where the bot is a participant.", + "object_requestPeerTypeChat_param_has_username_type_flags.3?Bool": "If specified, allows only choosing channels with or without a username, according to the value of [Bool](..\/types\/Bool.md).", + "object_requestPeerTypeChat_param_forum_type_flags.4?Bool": "If specified, allows only choosing chats or supergroups that are or aren't [forums](https:\/\/core.telegram.org\/api\/forum), according to the value of [Bool](..\/types\/Bool.md).", + "object_requestPeerTypeChat_param_user_admin_rights_type_flags.1?ChatAdminRights": "If specified, allows only choosing chats or supergroups where the current user is an admin with at least the specified admin rights.", + "object_requestPeerTypeChat_param_bot_admin_rights_type_flags.2?ChatAdminRights": "If specified, allows only choosing chats or supergroups where the bot is an admin with at least the specified admin rights.", + "object_requestPeerTypeBroadcast": "Choose a channel", + "object_requestPeerTypeBroadcast_param_creator_type_flags.0?true": "Whether to allow only choosing channels that were created by the current user.", + "object_requestPeerTypeBroadcast_param_has_username_type_flags.3?Bool": "If specified, allows only choosing channels with or without a username, according to the value of [Bool](..\/types\/Bool.md).", + "object_requestPeerTypeBroadcast_param_user_admin_rights_type_flags.1?ChatAdminRights": "If specified, allows only choosing channels where the current user is an admin with at least the specified admin rights.", + "object_requestPeerTypeBroadcast_param_bot_admin_rights_type_flags.2?ChatAdminRights": "If specified, allows only choosing channels where the bot is an admin with at least the specified admin rights.", + "object_emojiListNotModified": "The list of [custom emojis](https:\/\/core.telegram.org\/api\/custom-emoji) hasn't changed.", + "object_emojiList": "Represents a list of [custom emojis](https:\/\/core.telegram.org\/api\/custom-emoji).", + "object_emojiList_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_emojiList_param_document_id_type_Vector<long>": "Custom emoji IDs", + "object_emojiGroup": "Represents an [emoji category](https:\/\/core.telegram.org\/api\/emoji-categories).", + "object_emojiGroup_param_title_type_string": "Category name, i.e. \"Animals\", \"Flags\", \"Faces\" and so on...", + "object_emojiGroup_param_icon_emoji_id_type_long": "A single custom emoji used as preview for the category.", + "object_emojiGroup_param_emoticons_type_Vector<string>": "A list of UTF-8 emojis, matching the category.", + "object_emojiGroupGreeting": "Represents an [emoji category](https:\/\/core.telegram.org\/api\/emoji-categories), that should be moved to the top of the list when choosing a sticker for a [business introduction](https:\/\/core.telegram.org\/api\/business#business-introduction)", + "object_emojiGroupGreeting_param_title_type_string": "Category name, i.e. \"Animals\", \"Flags\", \"Faces\" and so on...", + "object_emojiGroupGreeting_param_icon_emoji_id_type_long": "A single custom emoji used as preview for the category.", + "object_emojiGroupGreeting_param_emoticons_type_Vector<string>": "A list of UTF-8 emojis, matching the category.", + "object_emojiGroupPremium": "An [emoji category](https:\/\/core.telegram.org\/api\/emoji-categories), used to select all [Premium](https:\/\/core.telegram.org\/api\/premium)-only stickers (i.e. those with a [Premium effect \u00bb](https:\/\/core.telegram.org\/api\/stickers#premium-animated-sticker-effects))\/[Premium](https:\/\/core.telegram.org\/api\/premium)-only [custom emojis](https:\/\/core.telegram.org\/api\/custom-emoji) (i.e. those where the [documentAttributeCustomEmoji](..\/constructors\/documentAttributeCustomEmoji.md).`free` flag is **not** set)", + "object_emojiGroupPremium_param_title_type_string": "Category name, i.e. \"Animals\", \"Flags\", \"Faces\" and so on...", + "object_emojiGroupPremium_param_icon_emoji_id_type_long": "A single custom emoji used as preview for the category.", + "object_messages.emojiGroupsNotModified": "The list of [emoji categories](https:\/\/core.telegram.org\/api\/emoji-categories) hasn't changed.", + "object_messages.emojiGroups": "Represents a list of [emoji categories](https:\/\/core.telegram.org\/api\/emoji-categories).", + "object_messages.emojiGroups_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_messages.emojiGroups_param_groups_type_Vector<EmojiGroup>": "A list of [emoji categories](https:\/\/core.telegram.org\/api\/emoji-categories).", + "object_textWithEntities": "Styled text with [message entities](https:\/\/core.telegram.org\/api\/entities)", + "object_textWithEntities_param_text_type_string": "Text", + "object_textWithEntities_param_entities_type_Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "object_messages.translateResult": "Translated text with [entities](https:\/\/core.telegram.org\/api\/entities)", + "object_messages.translateResult_param_result_type_Vector<TextWithEntities>": "Text+[entities](https:\/\/core.telegram.org\/api\/entities), for each input message.", + "object_autoSaveSettings": "Media autosave settings", + "object_autoSaveSettings_param_photos_type_flags.0?true": "Whether photos should be autosaved to the gallery.", + "object_autoSaveSettings_param_videos_type_flags.1?true": "Whether videos should be autosaved to the gallery.", + "object_autoSaveSettings_param_video_max_size_type_flags.2?long": "If set, specifies a size limit for autosavable videos", + "object_autoSaveException": "Peer-specific media autosave settings", + "object_autoSaveException_param_peer_type_Peer": "The peer", + "object_autoSaveException_param_settings_type_AutoSaveSettings": "Media autosave settings", + "object_account.autoSaveSettings": "Contains media autosave settings", + "object_account.autoSaveSettings_param_users_settings_type_AutoSaveSettings": "Default media autosave settings for private chats", + "object_account.autoSaveSettings_param_chats_settings_type_AutoSaveSettings": "Default media autosave settings for [groups and supergroups](https:\/\/core.telegram.org\/api\/channel)", + "object_account.autoSaveSettings_param_broadcasts_settings_type_AutoSaveSettings": "Default media autosave settings for [channels](https:\/\/core.telegram.org\/api\/channel)", + "object_account.autoSaveSettings_param_exceptions_type_Vector<AutoSaveException>": "Peer-specific granular autosave settings", + "object_account.autoSaveSettings_param_chats_type_Vector<Chat>": "Chats mentioned in the peer-specific granular autosave settings", + "object_account.autoSaveSettings_param_users_type_Vector<User>": "Users mentioned in the peer-specific granular autosave settings", + "object_help.appConfigNotModified": "The client configuration parameters haven't changed", + "object_help.appConfig": "Contains various [client configuration parameters](https:\/\/core.telegram.org\/api\/config#client-configuration)", + "object_help.appConfig_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_help.appConfig_param_config_type_JSONValue": "[Client configuration parameters](https:\/\/core.telegram.org\/api\/config#client-configuration)", + "object_inputBotAppID": "Used to fetch information about a [direct link Mini App](https:\/\/core.telegram.org\/api\/bots\/webapps#direct-link-mini-apps) by its ID", + "object_inputBotAppID_param_id_type_long": "[direct link Mini App](https:\/\/core.telegram.org\/api\/bots\/webapps#direct-link-mini-apps) ID.", + "object_inputBotAppID_param_access_hash_type_long": "Access hash, obtained from the [botApp](..\/constructors\/botApp.md) constructor.", + "object_inputBotAppShortName": "Used to fetch information about a [direct link Mini App](https:\/\/core.telegram.org\/api\/bots\/webapps#direct-link-mini-apps) by its short name", + "object_inputBotAppShortName_param_bot_id_type_InputUser": "ID of the bot that owns the bot mini app", + "object_inputBotAppShortName_param_short_name_type_string": "Short name, obtained from a [Direct Mini App deep link](https:\/\/core.telegram.org\/api\/links#direct-mini-app-links)", + "object_botAppNotModified": "Bot app info hasn't changed.", + "object_botApp": "Contains information about a [direct link Mini App](https:\/\/core.telegram.org\/api\/bots\/webapps#direct-link-mini-apps).", + "object_botApp_param_id_type_long": "bot mini app ID", + "object_botApp_param_access_hash_type_long": "bot mini app access hash", + "object_botApp_param_short_name_type_string": "bot mini app short name, used to generate [Direct Mini App deep links](https:\/\/core.telegram.org\/api\/links#direct-mini-app-links).", + "object_botApp_param_title_type_string": "bot mini app title.", + "object_botApp_param_description_type_string": "bot mini app description.", + "object_botApp_param_photo_type_Photo": "bot mini app photo.", + "object_botApp_param_document_type_flags.0?Document": "bot mini app animation.", + "object_botApp_param_hash_type_long": "Hash to pass to [messages.getBotApp](..\/methods\/messages.getBotApp.md), to avoid refetching bot app info if it hasn't changed.", + "object_messages.botApp": "Contains information about a [direct link Mini App](https:\/\/core.telegram.org\/api\/bots\/webapps#direct-link-mini-apps)", + "object_messages.botApp_param_inactive_type_flags.0?true": "Whether the web app was never used by the user, and confirmation must be asked from the user before opening it.", + "object_messages.botApp_param_request_write_access_type_flags.1?true": "The bot is asking permission to send messages to the user: if the user agrees, set the `write_allowed` flag when invoking [messages.requestAppWebView](..\/methods\/messages.requestAppWebView.md).", + "object_messages.botApp_param_has_settings_type_flags.2?true": "Deprecated flag, can be ignored.", + "object_messages.botApp_param_app_type_BotApp": "Bot app information", + "object_inlineBotWebView": "Specifies an [inline mode mini app](https:\/\/core.telegram.org\/api\/bots\/webapps#inline-mode-mini-apps) button, shown on top of the inline query results list.", + "object_inlineBotWebView_param_text_type_string": "Text of the button", + "object_inlineBotWebView_param_url_type_string": "Webapp URL", + "object_readParticipantDate": "Contains info about when a certain participant has read a message", + "object_readParticipantDate_param_user_id_type_long": "User ID", + "object_readParticipantDate_param_date_type_int": "When the user read the message", + "object_inputChatlistDialogFilter": "Folder ID", + "object_inputChatlistDialogFilter_param_filter_id_type_int": "[Folder](https:\/\/core.telegram.org\/api\/folders) ID", + "object_exportedChatlistInvite": "Exported [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "object_exportedChatlistInvite_param_title_type_string": "Name of the link", + "object_exportedChatlistInvite_param_url_type_string": "The [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "object_exportedChatlistInvite_param_peers_type_Vector<Peer>": "Peers to import", + "object_chatlists.exportedChatlistInvite": "Info about an exported [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "object_chatlists.exportedChatlistInvite_param_filter_type_DialogFilter": "Folder ID", + "object_chatlists.exportedChatlistInvite_param_invite_type_ExportedChatlistInvite": "The exported [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "object_chatlists.exportedInvites": "Info about multiple [chat folder deep links \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "object_chatlists.exportedInvites_param_invites_type_Vector<ExportedChatlistInvite>": "The [chat folder deep links \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "object_chatlists.exportedInvites_param_chats_type_Vector<Chat>": "Related chat information", + "object_chatlists.exportedInvites_param_users_type_Vector<User>": "Related user information", + "object_chatlists.chatlistInviteAlready": "Updated info about a [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links) we already imported.", + "object_chatlists.chatlistInviteAlready_param_filter_id_type_int": "ID of the imported folder", + "object_chatlists.chatlistInviteAlready_param_missing_peers_type_Vector<Peer>": "New peers to be imported", + "object_chatlists.chatlistInviteAlready_param_already_peers_type_Vector<Peer>": "Peers that were already imported", + "object_chatlists.chatlistInviteAlready_param_chats_type_Vector<Chat>": "Related chat information", + "object_chatlists.chatlistInviteAlready_param_users_type_Vector<User>": "Related user information", + "object_chatlists.chatlistInvite": "Info about a [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "object_chatlists.chatlistInvite_param_title_noanimate_type_flags.1?true": "If set, any animated emojis present in `title` should not be animated and should be instead frozen on the first frame.", + "object_chatlists.chatlistInvite_param_title_type_TextWithEntities": "Name of the link", + "object_chatlists.chatlistInvite_param_emoticon_type_flags.0?string": "Emoji to use as icon for the folder.", + "object_chatlists.chatlistInvite_param_peers_type_Vector<Peer>": "Supergroups and channels to join", + "object_chatlists.chatlistInvite_param_chats_type_Vector<Chat>": "Related chat information", + "object_chatlists.chatlistInvite_param_users_type_Vector<User>": "Related user information", + "object_chatlists.chatlistUpdates": "Updated information about a [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "object_chatlists.chatlistUpdates_param_missing_peers_type_Vector<Peer>": "New peers to join", + "object_chatlists.chatlistUpdates_param_chats_type_Vector<Chat>": "Related chat information", + "object_chatlists.chatlistUpdates_param_users_type_Vector<User>": "Related user information", + "object_bots.botInfo": "Localized information about a bot.", + "object_bots.botInfo_param_name_type_string": "Bot name", + "object_bots.botInfo_param_about_type_string": "Bot about text", + "object_bots.botInfo_param_description_type_string": "Bot description", + "object_messagePeerVote": "How a peer voted in a poll", + "object_messagePeerVote_param_peer_type_Peer": "Peer ID", + "object_messagePeerVote_param_option_type_bytes": "The option chosen by the peer", + "object_messagePeerVote_param_date_type_int": "When did the peer cast the vote", + "object_messagePeerVoteInputOption": "How a peer voted in a poll (reduced constructor, returned if an `option` was provided to [messages.getPollVotes](..\/methods\/messages.getPollVotes.md))", + "object_messagePeerVoteInputOption_param_peer_type_Peer": "The peer that voted for the queried `option`", + "object_messagePeerVoteInputOption_param_date_type_int": "When did the peer cast the vote", + "object_messagePeerVoteMultiple": "How a peer voted in a multiple-choice poll", + "object_messagePeerVoteMultiple_param_peer_type_Peer": "Peer ID", + "object_messagePeerVoteMultiple_param_options_type_Vector<bytes>": "Options chosen by the peer", + "object_messagePeerVoteMultiple_param_date_type_int": "When did the peer cast their votes", + "object_storyViews": "Aggregated view and reaction information of a [story](https:\/\/core.telegram.org\/api\/stories).", + "object_storyViews_param_has_viewers_type_flags.1?true": "If set, indicates that the viewers list is currently viewable, and was not yet deleted because the story has expired while the user didn't have a [Premium](https:\/\/core.telegram.org\/api\/premium) account.", + "object_storyViews_param_views_count_type_int": "View counter of the story", + "object_storyViews_param_forwards_count_type_flags.2?int": "Forward counter of the story", + "object_storyViews_param_reactions_type_flags.3?Vector<ReactionCount>": "All reactions sent to this story", + "object_storyViews_param_reactions_count_type_flags.4?int": "Number of reactions added to the story", + "object_storyViews_param_recent_viewers_type_flags.0?Vector<long>": "User IDs of some recent viewers of the story", + "object_storyItemDeleted": "Represents a previously active story, that was deleted", + "object_storyItemDeleted_param_id_type_int": "Story ID", + "object_storyItemSkipped": "Represents an active story, whose full information was omitted for space and performance reasons; use [stories.getStoriesByID](..\/methods\/stories.getStoriesByID.md) to fetch full info about the skipped story when and if needed.", + "object_storyItemSkipped_param_close_friends_type_flags.8?true": "Whether this story can only be viewed by [our close friends, see here \u00bb](https:\/\/core.telegram.org\/api\/privacy) for more info", + "object_storyItemSkipped_param_id_type_int": "Story ID", + "object_storyItemSkipped_param_date_type_int": "When was the story posted.", + "object_storyItemSkipped_param_expire_date_type_int": "When does the story expire.", + "object_storyItem": "Represents a [story](https:\/\/core.telegram.org\/api\/stories).", + "object_storyItem_param_pinned_type_flags.5?true": "Whether this story is pinned on the user's profile", + "object_storyItem_param_public_type_flags.7?true": "Whether this story is public and can be viewed by everyone", + "object_storyItem_param_close_friends_type_flags.8?true": "Whether this story can only be viewed by [our close friends, see here \u00bb](https:\/\/core.telegram.org\/api\/privacy) for more info", + "object_storyItem_param_min_type_flags.9?true": "Full information about this story was omitted for space and performance reasons; use [stories.getStoriesByID](..\/methods\/stories.getStoriesByID.md) to fetch full info about this story when and if needed.", + "object_storyItem_param_noforwards_type_flags.10?true": "Whether this story is [protected](https:\/\/telegram.org\/blog\/protected-content-delete-by-date-and-more) and thus cannot be forwarded; clients should also prevent users from saving attached media (i.e. videos should only be streamed, photos should be kept in RAM, et cetera).", + "object_storyItem_param_edited_type_flags.11?true": "Indicates whether the story was edited.", + "object_storyItem_param_contacts_type_flags.12?true": "Whether this story can only be viewed by our contacts", + "object_storyItem_param_selected_contacts_type_flags.13?true": "Whether this story can only be viewed by a select list of our contacts", + "object_storyItem_param_out_type_flags.16?true": "indicates whether we sent this story.", + "object_storyItem_param_id_type_int": "ID of the story.", + "object_storyItem_param_date_type_int": "When was the story posted.", + "object_storyItem_param_from_id_type_flags.18?Peer": "Sender of the story.", + "object_storyItem_param_fwd_from_type_flags.17?StoryFwdHeader": "For [reposted stories \u00bb](https:\/\/core.telegram.org\/api\/stories#reposting-stories), contains info about the original story.", + "object_storyItem_param_expire_date_type_int": "When does the story expire.", + "object_storyItem_param_caption_type_flags.0?string": "Story caption.", + "object_storyItem_param_entities_type_flags.1?Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "object_storyItem_param_media_type_MessageMedia": "Story media.", + "object_storyItem_param_media_areas_type_flags.14?Vector<MediaArea>": "List of media areas, see [here \u00bb](https:\/\/core.telegram.org\/api\/stories#media-areas) for more info on media areas.", + "object_storyItem_param_privacy_type_flags.2?Vector<PrivacyRule>": "[Privacy rules](https:\/\/core.telegram.org\/api\/privacy) indicating who can and can't view this story", + "object_storyItem_param_views_type_flags.3?StoryViews": "View date and reaction information", + "object_storyItem_param_sent_reaction_type_flags.15?Reaction": "The reaction we sent.", + "object_storyItem_param_albums_type_flags.19?Vector<int>": "[Albums](https:\/\/core.telegram.org\/api\/stories#story-albums) this story is part of.", + "object_stories.allStoriesNotModified": "The list of active (or active and hidden) [stories](https:\/\/core.telegram.org\/api\/stories#watching-stories) has not changed.", + "object_stories.allStoriesNotModified_param_state_type_string": "State to use to ask for updates", + "object_stories.allStoriesNotModified_param_stealth_mode_type_StoriesStealthMode": "Current [stealth mode](https:\/\/core.telegram.org\/api\/stories#stealth-mode) information", + "object_stories.allStories": "Full list of active (or active and hidden) [stories](https:\/\/core.telegram.org\/api\/stories#watching-stories).", + "object_stories.allStories_param_has_more_type_flags.0?true": "Whether more results can be fetched as [described here \u00bb](https:\/\/core.telegram.org\/api\/stories#watching-stories).", + "object_stories.allStories_param_count_type_int": "Total number of active (or active and hidden) stories", + "object_stories.allStories_param_state_type_string": "State to use for pagination", + "object_stories.allStories_param_peer_stories_type_Vector<PeerStories>": "Stories", + "object_stories.allStories_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_stories.allStories_param_users_type_Vector<User>": "Mentioned users", + "object_stories.allStories_param_stealth_mode_type_StoriesStealthMode": "Current [stealth mode](https:\/\/core.telegram.org\/api\/stories#stealth-mode) information", + "object_stories.stories": "List of [stories](https:\/\/core.telegram.org\/api\/stories#pinned-or-archived-stories)", + "object_stories.stories_param_count_type_int": "Total number of stories that can be fetched", + "object_stories.stories_param_stories_type_Vector<StoryItem>": "Stories", + "object_stories.stories_param_pinned_to_top_type_flags.0?Vector<int>": "IDs of pinned stories.", + "object_stories.stories_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_stories.stories_param_users_type_Vector<User>": "Mentioned users", + "object_storyView": "[Story](https:\/\/core.telegram.org\/api\/stories) view date and reaction information", + "object_storyView_param_blocked_type_flags.0?true": "Whether we have [completely blocked](https:\/\/core.telegram.org\/api\/block) this user, including from viewing more of our stories.", + "object_storyView_param_blocked_my_stories_from_type_flags.1?true": "Whether we have [blocked](https:\/\/core.telegram.org\/api\/block) this user from viewing more of our stories.", + "object_storyView_param_user_id_type_long": "The user that viewed the story", + "object_storyView_param_date_type_int": "When did the user view the story", + "object_storyView_param_reaction_type_flags.2?Reaction": "If present, contains the reaction that the user left on the story", + "object_storyViewPublicForward": "A certain peer has forwarded the story as a message to a public chat or channel.", + "object_storyViewPublicForward_param_blocked_type_flags.0?true": "Whether we have [completely blocked](https:\/\/core.telegram.org\/api\/block) this user, including from viewing more of our stories.", + "object_storyViewPublicForward_param_blocked_my_stories_from_type_flags.1?true": "Whether we have [blocked](https:\/\/core.telegram.org\/api\/block) this user from viewing more of our stories.", + "object_storyViewPublicForward_param_message_type_Message": "The message with the forwarded story.", + "object_storyViewPublicRepost": "A certain peer has reposted the story.", + "object_storyViewPublicRepost_param_blocked_type_flags.0?true": "Whether we have [completely blocked](https:\/\/core.telegram.org\/api\/block) this user, including from viewing more of our stories.", + "object_storyViewPublicRepost_param_blocked_my_stories_from_type_flags.1?true": "Whether we have [blocked](https:\/\/core.telegram.org\/api\/block) this user from viewing more of our stories.", + "object_storyViewPublicRepost_param_peer_id_type_Peer": "The peer that reposted the story.", + "object_storyViewPublicRepost_param_story_type_StoryItem": "The reposted story.", + "object_stories.storyViewsList": "Reaction and view counters for a [story](https:\/\/core.telegram.org\/api\/stories)", + "object_stories.storyViewsList_param_count_type_int": "Total number of results that can be fetched", + "object_stories.storyViewsList_param_views_count_type_int": "Total number of story views", + "object_stories.storyViewsList_param_forwards_count_type_int": "Total number of story forwards\/reposts", + "object_stories.storyViewsList_param_reactions_count_type_int": "Number of reactions that were added to the story", + "object_stories.storyViewsList_param_views_type_Vector<StoryView>": "Story view date and reaction information", + "object_stories.storyViewsList_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_stories.storyViewsList_param_users_type_Vector<User>": "Mentioned users", + "object_stories.storyViewsList_param_next_offset_type_flags.0?string": "Offset for pagination", + "object_stories.storyViews": "Reaction and view counters for a list of [stories](https:\/\/core.telegram.org\/api\/stories)", + "object_stories.storyViews_param_views_type_Vector<StoryViews>": "View date and reaction information of multiple stories", + "object_stories.storyViews_param_users_type_Vector<User>": "Mentioned users", + "object_inputReplyToMessage": "Reply to a message.", + "object_inputReplyToMessage_param_reply_to_msg_id_type_int": "The message ID to reply to.", + "object_inputReplyToMessage_param_top_msg_id_type_flags.0?int": "This field must contain the topic ID **only** when replying to messages in forum topics different from the \"General\" topic (i.e. `reply_to_msg_id` is set and `reply_to_msg_id != topicID` and `topicID != 1`).
If the replied-to message is deleted before the method finishes execution, the value in this field will be used to send the message to the correct topic, instead of the \"General\" topic.", + "object_inputReplyToMessage_param_reply_to_peer_id_type_flags.1?InputPeer": "Used to reply to messages sent to another chat (specified here), can only be used for non-`protected` chats and messages.", + "object_inputReplyToMessage_param_quote_text_type_flags.2?string": "Used to quote-reply to only a certain section (specified here) of the original message. The maximum UTF-8 length for quotes is specified in the [quote\\_length\\_max](https:\/\/core.telegram.org\/api\/config#quote-length-max) config key.", + "object_inputReplyToMessage_param_quote_entities_type_flags.3?Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities) from the `quote_text` field.", + "object_inputReplyToMessage_param_quote_offset_type_flags.4?int": "Offset of the message `quote_text` within the original message (in [UTF-16 code units](https:\/\/core.telegram.org\/api\/entities#entity-length)).", + "object_inputReplyToMessage_param_monoforum_peer_id_type_flags.5?InputPeer": "Must be set to the ID of the topic when replying to a message within a [monoforum topic](https:\/\/core.telegram.org\/api\/monoforum).", + "object_inputReplyToMessage_param_todo_item_id_type_flags.6?int": "Can be set to reply to the specified item of a [todo list \u00bb](https:\/\/core.telegram.org\/api\/todo).", + "object_inputReplyToStory": "Reply to a story.", + "object_inputReplyToStory_param_peer_type_InputPeer": "Sender of the story", + "object_inputReplyToStory_param_story_id_type_int": "ID of the story to reply to.", + "object_inputReplyToMonoForum": "Used to send messages to a [monoforum topic](https:\/\/core.telegram.org\/api\/monoforum).", + "object_inputReplyToMonoForum_param_monoforum_peer_id_type_InputPeer": "The topic ID.", + "object_exportedStoryLink": "Represents a [story deep link](https:\/\/core.telegram.org\/api\/stories#story-links).", + "object_exportedStoryLink_param_link_type_string": "The [story deep link](https:\/\/core.telegram.org\/api\/stories#story-links).", + "object_storiesStealthMode": "Information about the current [stealth mode](https:\/\/core.telegram.org\/api\/stories#stealth-mode) session.", + "object_storiesStealthMode_param_active_until_date_type_flags.0?int": "The date up to which stealth mode will be active.", + "object_storiesStealthMode_param_cooldown_until_date_type_flags.1?int": "The date starting from which the user will be allowed to re-enable stealth mode again.", + "object_mediaAreaCoordinates": "Coordinates and size of a clickable rectangular area on top of a story.", + "object_mediaAreaCoordinates_param_x_type_double": "The abscissa of the rectangle's center, as a percentage of the media width (0-100).", + "object_mediaAreaCoordinates_param_y_type_double": "The ordinate of the rectangle's center, as a percentage of the media height (0-100).", + "object_mediaAreaCoordinates_param_w_type_double": "The width of the rectangle, as a percentage of the media width (0-100).", + "object_mediaAreaCoordinates_param_h_type_double": "The height of the rectangle, as a percentage of the media height (0-100).", + "object_mediaAreaCoordinates_param_rotation_type_double": "Clockwise rotation angle of the rectangle, in degrees (0-360).", + "object_mediaAreaCoordinates_param_radius_type_flags.0?double": "The radius of the rectangle corner rounding, as a percentage of the media width.", + "object_mediaAreaVenue": "Represents a location tag attached to a [story](https:\/\/core.telegram.org\/api\/stories), with additional venue information.", + "object_mediaAreaVenue_param_coordinates_type_MediaAreaCoordinates": "The size and location of the media area corresponding to the location sticker on top of the story media.", + "object_mediaAreaVenue_param_geo_type_GeoPoint": "Coordinates of the venue", + "object_mediaAreaVenue_param_title_type_string": "Venue name", + "object_mediaAreaVenue_param_address_type_string": "Address", + "object_mediaAreaVenue_param_provider_type_string": "Venue provider: currently only \"foursquare\" needs to be supported.", + "object_mediaAreaVenue_param_venue_id_type_string": "Venue ID in the provider's database", + "object_mediaAreaVenue_param_venue_type_type_string": "Venue type in the provider's database", + "object_inputMediaAreaVenue": "Represents a [location tag](https:\/\/core.telegram.org\/api\/stories#media-areas) attached to a [story](https:\/\/core.telegram.org\/api\/stories), with additional venue information.", + "object_inputMediaAreaVenue_param_coordinates_type_MediaAreaCoordinates": "The size and location of the media area corresponding to the location sticker on top of the story media.", + "object_inputMediaAreaVenue_param_query_id_type_long": "The `query_id` from [messages.botResults](..\/constructors\/messages.botResults.md), see [here \u00bb](https:\/\/core.telegram.org\/api\/stories#media-areas) for more info.", + "object_inputMediaAreaVenue_param_result_id_type_string": "The `id` of the chosen result, see [here \u00bb](https:\/\/core.telegram.org\/api\/stories#media-areas) for more info.", + "object_mediaAreaGeoPoint": "Represents a geolocation tag attached to a [story](https:\/\/core.telegram.org\/api\/stories).", + "object_mediaAreaGeoPoint_param_coordinates_type_MediaAreaCoordinates": "The size and position of the media area corresponding to the location sticker on top of the story media.", + "object_mediaAreaGeoPoint_param_geo_type_GeoPoint": "Coordinates of the geolocation tag.", + "object_mediaAreaGeoPoint_param_address_type_flags.0?GeoPointAddress": "Optional textual representation of the address.", + "object_mediaAreaSuggestedReaction": "Represents a reaction bubble.", + "object_mediaAreaSuggestedReaction_param_dark_type_flags.0?true": "Whether the reaction bubble has a dark background.", + "object_mediaAreaSuggestedReaction_param_flipped_type_flags.1?true": "Whether the reaction bubble is mirrored (see [here \u00bb](https:\/\/core.telegram.org\/api\/stories#reactions) for more info).", + "object_mediaAreaSuggestedReaction_param_coordinates_type_MediaAreaCoordinates": "The coordinates of the media area corresponding to the reaction button.", + "object_mediaAreaSuggestedReaction_param_reaction_type_Reaction": "The reaction that should be sent when this area is clicked.", + "object_mediaAreaChannelPost": "Represents a channel post.", + "object_mediaAreaChannelPost_param_coordinates_type_MediaAreaCoordinates": "The size and location of the media area corresponding to the location sticker on top of the story media.", + "object_mediaAreaChannelPost_param_channel_id_type_long": "The channel that posted the message", + "object_mediaAreaChannelPost_param_msg_id_type_int": "ID of the channel message", + "object_inputMediaAreaChannelPost": "Represents a channel post", + "object_inputMediaAreaChannelPost_param_coordinates_type_MediaAreaCoordinates": "The size and location of the media area corresponding to the location sticker on top of the story media.", + "object_inputMediaAreaChannelPost_param_channel_type_InputChannel": "The channel that posted the message", + "object_inputMediaAreaChannelPost_param_msg_id_type_int": "ID of the channel message", + "object_mediaAreaUrl": "Represents a [URL media area](https:\/\/core.telegram.org\/api\/stories#urls).", + "object_mediaAreaUrl_param_coordinates_type_MediaAreaCoordinates": "The size and location of the media area corresponding to the URL button on top of the story media.", + "object_mediaAreaUrl_param_url_type_string": "URL to open when clicked.", + "object_mediaAreaWeather": "Represents a [weather widget \u00bb](https:\/\/core.telegram.org\/api\/stories#weather).", + "object_mediaAreaWeather_param_coordinates_type_MediaAreaCoordinates": "The size and location of the media area corresponding to the widget on top of the story media.", + "object_mediaAreaWeather_param_emoji_type_string": "Weather emoji, should be rendered as an [animated emoji](https:\/\/core.telegram.org\/api\/animated-emojis).", + "object_mediaAreaWeather_param_temperature_c_type_double": "Temperature in degrees Celsius.", + "object_mediaAreaWeather_param_color_type_int": "ARGB background color.", + "object_mediaAreaStarGift": "Represents a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "object_mediaAreaStarGift_param_coordinates_type_MediaAreaCoordinates": "Coordinates of the media area.", + "object_mediaAreaStarGift_param_slug_type_string": "`slug` from [starGiftUnique](..\/constructors\/starGiftUnique.md).`slug`, that can be resolved as [specified here \u00bb](https:\/\/core.telegram.org\/api\/gifts#sharing-and-getting-info-about-a-collectible-gift).", + "object_peerStories": "[Stories](https:\/\/core.telegram.org\/api\/stories) associated to a peer", + "object_peerStories_param_peer_type_Peer": "The peer", + "object_peerStories_param_max_read_id_type_flags.0?int": "If set, contains the ID of the maximum read story", + "object_peerStories_param_stories_type_Vector<StoryItem>": "Stories", + "object_stories.peerStories": "[Active story list](https:\/\/core.telegram.org\/api\/stories#watching-stories) of a specific peer.", + "object_stories.peerStories_param_stories_type_PeerStories": "Stories", + "object_stories.peerStories_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_stories.peerStories_param_users_type_Vector<User>": "Mentioned users", + "object_messages.webPage": "Represents an Instant View webpage.", + "object_messages.webPage_param_webpage_type_WebPage": "The instant view webpage.", + "object_messages.webPage_param_chats_type_Vector<Chat>": "Chats mentioned in the webpage.", + "object_messages.webPage_param_users_type_Vector<User>": "Users mentioned in the webpage.", + "object_premiumGiftCodeOption": "Contains info about a [giveaway\/gift](https:\/\/core.telegram.org\/api\/giveaways) option.", + "object_premiumGiftCodeOption_param_users_type_int": "Number of users which will be able to activate the gift codes.", + "object_premiumGiftCodeOption_param_months_type_int": "Duration in months of each gifted [Telegram Premium](https:\/\/core.telegram.org\/api\/premium) subscription.", + "object_premiumGiftCodeOption_param_store_product_type_flags.0?string": "Identifier of the store product associated with the option, official apps only.", + "object_premiumGiftCodeOption_param_store_quantity_type_flags.1?int": "Number of times the store product must be paid", + "object_premiumGiftCodeOption_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code", + "object_premiumGiftCodeOption_param_amount_type_long": "Total price in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_payments.checkedGiftCode": "Contains info about a [Telegram Premium giftcode link](https:\/\/core.telegram.org\/api\/links#premium-giftcode-links).", + "object_payments.checkedGiftCode_param_via_giveaway_type_flags.2?true": "Whether this giftcode was created by a [giveaway](https:\/\/core.telegram.org\/api\/giveaways).", + "object_payments.checkedGiftCode_param_from_id_type_flags.4?Peer": "The peer that created the gift code.", + "object_payments.checkedGiftCode_param_giveaway_msg_id_type_flags.3?int": "Message ID of the giveaway in the channel specified in `from_id`.", + "object_payments.checkedGiftCode_param_to_id_type_flags.0?long": "The destination user of the gift.", + "object_payments.checkedGiftCode_param_date_type_int": "Creation date of the gift code.", + "object_payments.checkedGiftCode_param_months_type_int": "Duration in months of the gifted [Telegram Premium](https:\/\/core.telegram.org\/api\/premium) subscription.", + "object_payments.checkedGiftCode_param_used_date_type_flags.1?int": "When was the giftcode imported, if it was imported.", + "object_payments.checkedGiftCode_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_payments.checkedGiftCode_param_users_type_Vector<User>": "Mentioned users", + "object_payments.giveawayInfo": "Contains info about an ongoing [giveaway](https:\/\/core.telegram.org\/api\/giveaways).\n\nIf neither the `participating`, `joined_too_early_date`, `admin_disallowed_chat_id` or `disallowed_country` flags are set, the user is not currently participating in the giveaway but could participate by joining all the channels specified in the [messageMediaGiveaway](..\/constructors\/messageMediaGiveaway.md).`channels` field.", + "object_payments.giveawayInfo_param_participating_type_flags.0?true": "The current user is participating in the giveaway.", + "object_payments.giveawayInfo_param_preparing_results_type_flags.3?true": "If set, the giveaway has ended and the results are being prepared.", + "object_payments.giveawayInfo_param_start_date_type_int": "When was the giveaway started", + "object_payments.giveawayInfo_param_joined_too_early_date_type_flags.1?int": "The current user can't participate in the giveaway, because they were already a member of the channel when the giveaway started, and the `only_new_subscribers` was set when starting the giveaway.", + "object_payments.giveawayInfo_param_admin_disallowed_chat_id_type_flags.2?long": "If set, the current user can't participate in the giveaway, because they are an administrator in one of the channels (ID specified in this flag) that created the giveaway.", + "object_payments.giveawayInfo_param_disallowed_country_type_flags.4?string": "If set, the current user can't participate in this giveaway, because their phone number is from the specified disallowed country (specified as a two-letter ISO 3166-1 alpha-2 country code).", + "object_payments.giveawayInfoResults": "A [giveaway](https:\/\/core.telegram.org\/api\/giveaways) has ended.", + "object_payments.giveawayInfoResults_param_winner_type_flags.0?true": "Whether we're one of the winners of this giveaway.", + "object_payments.giveawayInfoResults_param_refunded_type_flags.1?true": "Whether the giveaway was canceled and was fully refunded.", + "object_payments.giveawayInfoResults_param_start_date_type_int": "Start date of the giveaway", + "object_payments.giveawayInfoResults_param_gift_code_slug_type_flags.3?string": "If we're one of the winners of this giveaway, contains the [Premium gift code](https:\/\/core.telegram.org\/api\/links#premium-giftcode-links), see [here \u00bb](https:\/\/core.telegram.org\/api\/giveaways) for more info on the full giveaway flow.", + "object_payments.giveawayInfoResults_param_stars_prize_type_flags.4?long": "If we're one of the winners of this [Telegram Star giveaway](https:\/\/core.telegram.org\/api\/giveaways#star-giveaways), the number [Telegram Stars](https:\/\/core.telegram.org\/api\/stars) we won.", + "object_payments.giveawayInfoResults_param_finish_date_type_int": "End date of the giveaway. May be bigger than the end date specified in parameters of the giveaway.", + "object_payments.giveawayInfoResults_param_winners_count_type_int": "Number of winners in the giveaway", + "object_payments.giveawayInfoResults_param_activated_count_type_flags.2?int": "Number of winners, which activated their [gift codes](https:\/\/core.telegram.org\/api\/links#premium-giftcode-links).", + "object_prepaidGiveaway": "Contains info about a [prepaid giveaway \u00bb](https:\/\/core.telegram.org\/api\/giveaways).", + "object_prepaidGiveaway_param_id_type_long": "Prepaid giveaway ID.", + "object_prepaidGiveaway_param_months_type_int": "Duration in months of each gifted [Telegram Premium](https:\/\/core.telegram.org\/api\/premium) subscription.", + "object_prepaidGiveaway_param_quantity_type_int": "Number of given away [Telegram Premium](https:\/\/core.telegram.org\/api\/premium) subscriptions.", + "object_prepaidGiveaway_param_date_type_int": "Payment date.", + "object_prepaidStarsGiveaway": "Contains info about a [prepaid Telegram Star giveaway \u00bb](https:\/\/core.telegram.org\/api\/giveaways#star-giveaways).", + "object_prepaidStarsGiveaway_param_id_type_long": "Prepaid giveaway ID.", + "object_prepaidStarsGiveaway_param_stars_type_long": "Number of given away [Telegram Stars \u00bb](https:\/\/core.telegram.org\/api\/stars)", + "object_prepaidStarsGiveaway_param_quantity_type_int": "Number of giveaway winners", + "object_prepaidStarsGiveaway_param_boosts_type_int": "Number of boosts the channel will gain by launching the giveaway.", + "object_prepaidStarsGiveaway_param_date_type_int": "When was the giveaway paid for", + "object_boost": "Info about one or more [boosts](https:\/\/core.telegram.org\/api\/boost) applied by a specific user.", + "object_boost_param_gift_type_flags.1?true": "Whether this boost was applied because the channel\/supergroup [directly gifted a subscription to the user](https:\/\/core.telegram.org\/api\/giveaways).", + "object_boost_param_giveaway_type_flags.2?true": "Whether this boost was applied because the user was chosen in a [giveaway started by the channel\/supergroup](https:\/\/core.telegram.org\/api\/giveaways).", + "object_boost_param_unclaimed_type_flags.3?true": "If set, the user hasn't yet invoked [payments.applyGiftCode](..\/methods\/payments.applyGiftCode.md) to claim a subscription gifted [directly or in a giveaway by the channel](https:\/\/core.telegram.org\/api\/giveaways).", + "object_boost_param_id_type_string": "Unique ID for this set of boosts.", + "object_boost_param_user_id_type_flags.0?long": "ID of the user that applied the boost.", + "object_boost_param_giveaway_msg_id_type_flags.2?int": "The message ID of the [giveaway](https:\/\/core.telegram.org\/api\/giveaways)", + "object_boost_param_date_type_int": "When was the boost applied", + "object_boost_param_expires_type_int": "When does the boost expire", + "object_boost_param_used_gift_slug_type_flags.4?string": "The created Telegram Premium gift code, only set if either `gift` or `giveaway` are set AND it is either a gift code for the currently logged in user or if it was already claimed.", + "object_boost_param_multiplier_type_flags.5?int": "If set, this boost counts as `multiplier` boosts, otherwise it counts as a single boost.", + "object_boost_param_stars_type_flags.6?long": "Number of Telegram Stars distributed among the winners of the giveaway.", + "object_premium.boostsList": "List of [boosts](https:\/\/core.telegram.org\/api\/boost) that were applied to a peer by multiple users.", + "object_premium.boostsList_param_count_type_int": "Total number of results", + "object_premium.boostsList_param_boosts_type_Vector<Boost>": "[Boosts](https:\/\/core.telegram.org\/api\/boost)", + "object_premium.boostsList_param_next_offset_type_flags.0?string": "Offset that can be used for [pagination](https:\/\/core.telegram.org\/api\/offsets).", + "object_premium.boostsList_param_users_type_Vector<User>": "Mentioned users", + "object_myBoost": "Contains information about a single [boost slot \u00bb](https:\/\/core.telegram.org\/api\/boost).", + "object_myBoost_param_slot_type_int": "[Boost slot ID \u00bb](https:\/\/core.telegram.org\/api\/boost)", + "object_myBoost_param_peer_type_flags.0?Peer": "If set, indicates this slot is currently occupied, i.e. we are [boosting](https:\/\/core.telegram.org\/api\/boost) this peer.
Note that we can assign multiple boost slots to the same peer.", + "object_myBoost_param_date_type_int": "When (unixtime) we started boosting the `peer`, `0` otherwise.", + "object_myBoost_param_expires_type_int": "Indicates the (unixtime) expiration date of the boost in `peer` (`0` if `peer` is not set).", + "object_myBoost_param_cooldown_until_date_type_flags.1?int": "If `peer` is set, indicates the (unixtime) date after which this boost can be reassigned to another channel.", + "object_premium.myBoosts": "A list of peers we are currently [boosting](https:\/\/core.telegram.org\/api\/boost), and how many [boost slots](https:\/\/core.telegram.org\/api\/boost) we have left.", + "object_premium.myBoosts_param_my_boosts_type_Vector<MyBoost>": "Info about boosted peers and remaining boost slots.", + "object_premium.myBoosts_param_chats_type_Vector<Chat>": "Referenced chats", + "object_premium.myBoosts_param_users_type_Vector<User>": "Referenced users", + "object_premium.boostsStatus": "Contains info about the current [boost status](https:\/\/core.telegram.org\/api\/boost) of a peer.", + "object_premium.boostsStatus_param_my_boost_type_flags.2?true": "Whether we're currently boosting this channel\/supergroup, `my_boost_slots` will also be set.", + "object_premium.boostsStatus_param_level_type_int": "The current boost level of the channel\/supergroup.", + "object_premium.boostsStatus_param_current_level_boosts_type_int": "The number of boosts acquired so far in the current level.", + "object_premium.boostsStatus_param_boosts_type_int": "Total number of boosts acquired so far.", + "object_premium.boostsStatus_param_gift_boosts_type_flags.4?int": "The number of boosts acquired from created Telegram Premium [gift codes](https:\/\/core.telegram.org\/api\/giveaways) and [giveaways](https:\/\/core.telegram.org\/api\/giveaways); only returned to channel\/supergroup admins.", + "object_premium.boostsStatus_param_next_level_boosts_type_flags.0?int": "Total number of boosts needed to reach the next level; if absent, the next level isn't available.", + "object_premium.boostsStatus_param_premium_audience_type_flags.1?StatsPercentValue": "Only returned to channel\/supergroup admins: contains the approximated number of Premium users subscribed to the channel\/supergroup, related to the total number of subscribers.", + "object_premium.boostsStatus_param_boost_url_type_string": "[Boost deep link \u00bb](https:\/\/core.telegram.org\/api\/links#boost-links) that can be used to boost the chat.", + "object_premium.boostsStatus_param_prepaid_giveaways_type_flags.3?Vector<PrepaidGiveaway>": "A list of prepaid [giveaways](https:\/\/core.telegram.org\/api\/giveaways) available for the chat; only returned to channel\/supergroup admins.", + "object_premium.boostsStatus_param_my_boost_slots_type_flags.2?Vector<int>": "Indicates which of our [boost slots](https:\/\/core.telegram.org\/api\/boost) we've assigned to this peer (populated if `my_boost` is set).", + "object_storyFwdHeader": "Contains info about the original poster of a reposted story.", + "object_storyFwdHeader_param_modified_type_flags.3?true": "Whether the story media was modified before reposting it (for example by overlaying a round video with a reaction).", + "object_storyFwdHeader_param_from_type_flags.0?Peer": "Peer that originally posted the story; will be empty for stories forwarded from a user with forwards privacy enabled, in which case `from_name` will be set, instead.", + "object_storyFwdHeader_param_from_name_type_flags.1?string": "Will be set for stories forwarded from a user with forwards privacy enabled, in which case `from` will also be empty.", + "object_storyFwdHeader_param_story_id_type_flags.2?int": ", contains the story ID", + "object_postInteractionCountersMessage": "Interaction counters for a message.", + "object_postInteractionCountersMessage_param_msg_id_type_int": "Message ID", + "object_postInteractionCountersMessage_param_views_type_int": "Number of views", + "object_postInteractionCountersMessage_param_forwards_type_int": "Number of forwards to public channels", + "object_postInteractionCountersMessage_param_reactions_type_int": "Number of reactions", + "object_postInteractionCountersStory": "Interaction counters for a story.", + "object_postInteractionCountersStory_param_story_id_type_int": "Story ID", + "object_postInteractionCountersStory_param_views_type_int": "Number of views", + "object_postInteractionCountersStory_param_forwards_type_int": "Number of forwards and reposts to public chats and channels", + "object_postInteractionCountersStory_param_reactions_type_int": "Number of reactions", + "object_stats.storyStats": "Contains [statistics](https:\/\/core.telegram.org\/api\/stats) about a [story](https:\/\/core.telegram.org\/api\/stories).", + "object_stats.storyStats_param_views_graph_type_StatsGraph": "A graph containing the number of story views and shares", + "object_stats.storyStats_param_reactions_by_emotion_graph_type_StatsGraph": "A bar graph containing the number of story reactions categorized by \"emotion\" (i.e. Positive, Negative, Other, etc...)", + "object_publicForwardMessage": "Contains info about a forward of a [story](https:\/\/core.telegram.org\/api\/stories) as a message.", + "object_publicForwardMessage_param_message_type_Message": "Info about the message with the reposted story.", + "object_publicForwardStory": "Contains info about a forward of a [story](https:\/\/core.telegram.org\/api\/stories) as a repost by a public channel.", + "object_publicForwardStory_param_peer_type_Peer": "The channel that reposted the story.", + "object_publicForwardStory_param_story_type_StoryItem": "The reposted story (may be different from the original story).", + "object_stats.publicForwards": "Contains info about the forwards of a [story](https:\/\/core.telegram.org\/api\/stories) as a message to public chats and reposts by public channels.", + "object_stats.publicForwards_param_count_type_int": "Total number of results", + "object_stats.publicForwards_param_forwards_type_Vector<PublicForward>": "Info about the forwards of a story.", + "object_stats.publicForwards_param_next_offset_type_flags.0?string": "Offset used for [pagination](https:\/\/core.telegram.org\/api\/offsets).", + "object_stats.publicForwards_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_stats.publicForwards_param_users_type_Vector<User>": "Mentioned users", + "object_peerColor": "Represents a [color palette \u00bb](https:\/\/core.telegram.org\/api\/colors).", + "object_peerColor_param_color_type_flags.0?int": "[Color palette ID, see here \u00bb](https:\/\/core.telegram.org\/api\/colors) for more info; if not set, the default palette should be used.", + "object_peerColor_param_background_emoji_id_type_flags.1?long": "Optional [custom emoji ID](https:\/\/core.telegram.org\/api\/custom-emoji) used to generate the pattern.", + "object_help.peerColorSet": "Represents a [color palette that can be used in message accents \u00bb](https:\/\/core.telegram.org\/api\/colors).", + "object_help.peerColorSet_param_colors_type_Vector<int>": "A list of 1-3 colors in RGB format, describing the accent color.", + "object_help.peerColorProfileSet": "Represents a [color palette that can be used in profile pages \u00bb](https:\/\/core.telegram.org\/api\/colors).", + "object_help.peerColorProfileSet_param_palette_colors_type_Vector<int>": "A list of 1-2 colors in RGB format, shown in the color palette settings to describe the current palette.", + "object_help.peerColorProfileSet_param_bg_colors_type_Vector<int>": "A list of 1-2 colors in RGB format describing the colors used to generate the actual background used in the profile page.", + "object_help.peerColorProfileSet_param_story_colors_type_Vector<int>": "A list of 2 colors in RGB format describing the colors of the gradient used for the unread active story indicator around the profile photo.", + "object_help.peerColorOption": "Contains info about a [color palette \u00bb](https:\/\/core.telegram.org\/api\/colors).", + "object_help.peerColorOption_param_hidden_type_flags.0?true": "Whether this palette should not be displayed as an option to the user when choosing a palette to apply to profile pages or message accents.", + "object_help.peerColorOption_param_color_id_type_int": "Palette ID.", + "object_help.peerColorOption_param_colors_type_flags.1?help.PeerColorSet": "Light mode palette.
Will be empty for IDs `0` to `6` inclusive, in which case a palette containing a single color from the following colors should be used: red, orange, violet, green, cyan, blue, pink for indexes 0 to 6 (i.e. the same colors used for randomized fallback [message accent colors](https:\/\/core.telegram.org\/api\/colors)).", + "object_help.peerColorOption_param_dark_colors_type_flags.2?help.PeerColorSet": "Dark mode palette. Optional, defaults to the palette in `colors` (or the autogenerated palette for IDs `0` to `6`) if absent.", + "object_help.peerColorOption_param_channel_min_level_type_flags.3?int": "Channels can use this palette only after reaching at least the [boost level](https:\/\/core.telegram.org\/api\/boost) specified in this field.", + "object_help.peerColorOption_param_group_min_level_type_flags.4?int": "Supergroups can use this palette only after reaching at least the [boost level](https:\/\/core.telegram.org\/api\/boost) specified in this field.", + "object_help.peerColorsNotModified": "The list of color palettes has not changed.", + "object_help.peerColors": "Contains info about multiple [color palettes \u00bb](https:\/\/core.telegram.org\/api\/colors).", + "object_help.peerColors_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_help.peerColors_param_colors_type_Vector<help.PeerColorOption>": "Usable [color palettes](https:\/\/core.telegram.org\/api\/colors).", + "object_storyReaction": "How a certain peer reacted to a story", + "object_storyReaction_param_peer_id_type_Peer": "The peer", + "object_storyReaction_param_date_type_int": "Reaction date", + "object_storyReaction_param_reaction_type_Reaction": "The reaction", + "object_storyReactionPublicForward": "A certain peer has forwarded the story as a message to a public chat or channel.", + "object_storyReactionPublicForward_param_message_type_Message": "The message with the forwarded story.", + "object_storyReactionPublicRepost": "A certain peer has reposted the story.", + "object_storyReactionPublicRepost_param_peer_id_type_Peer": "The peer that reposted the story.", + "object_storyReactionPublicRepost_param_story_type_StoryItem": "The reposted story.", + "object_stories.storyReactionsList": "List of peers that reacted to or intercated with a specific [story](https:\/\/core.telegram.org\/api\/stories)", + "object_stories.storyReactionsList_param_count_type_int": "Total number of reactions matching query", + "object_stories.storyReactionsList_param_reactions_type_Vector<StoryReaction>": "List of peers that reacted to or interacted with a specific story", + "object_stories.storyReactionsList_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_stories.storyReactionsList_param_users_type_Vector<User>": "Mentioned users", + "object_stories.storyReactionsList_param_next_offset_type_flags.0?string": "If set, indicates the next offset to use to load more results by invoking [stories.getStoryReactionsList](..\/methods\/stories.getStoryReactionsList.md).", + "object_savedDialog": "Represents a [saved dialog \u00bb](https:\/\/core.telegram.org\/api\/saved-messages).", + "object_savedDialog_param_pinned_type_flags.2?true": "Is the dialog pinned", + "object_savedDialog_param_peer_type_Peer": "The dialog", + "object_savedDialog_param_top_message_type_int": "The latest message ID", + "object_monoForumDialog": "Represents a [monoforum topic \u00bb](https:\/\/core.telegram.org\/api\/monoforum).", + "object_monoForumDialog_param_unread_mark_type_flags.3?true": "Whether this topic has a manually set (with [messages.markDialogUnread](..\/methods\/messages.markDialogUnread.md)) unread mark.", + "object_monoForumDialog_param_nopaid_messages_exception_type_flags.4?true": "If set, an admin has exempted this peer from payment to send messages using [account.toggleNoPaidMessagesException](..\/methods\/account.toggleNoPaidMessagesException.md).", + "object_monoForumDialog_param_peer_type_Peer": "The peer associated to the topic, AKA the topic ID.", + "object_monoForumDialog_param_top_message_type_int": "The latest message ID", + "object_monoForumDialog_param_read_inbox_max_id_type_int": "Position up to which all incoming messages are read.", + "object_monoForumDialog_param_read_outbox_max_id_type_int": "Position up to which all outgoing messages are read.", + "object_monoForumDialog_param_unread_count_type_int": "Number of unread messages.", + "object_monoForumDialog_param_unread_reactions_count_type_int": "Number of unread reactions.", + "object_monoForumDialog_param_draft_type_flags.1?DraftMessage": "A pending message [draft](https:\/\/core.telegram.org\/api\/drafts).", + "object_messages.savedDialogs": "Represents some [saved message dialogs \u00bb](https:\/\/core.telegram.org\/api\/saved-messages).", + "object_messages.savedDialogs_param_dialogs_type_Vector<SavedDialog>": "[Saved message dialogs \u00bb](https:\/\/core.telegram.org\/api\/saved-messages).", + "object_messages.savedDialogs_param_messages_type_Vector<Message>": "List of last messages from each saved dialog", + "object_messages.savedDialogs_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_messages.savedDialogs_param_users_type_Vector<User>": "Mentioned users", + "object_messages.savedDialogsSlice": "Incomplete list of [saved message dialogs \u00bb](https:\/\/core.telegram.org\/api\/saved-messages) with messages and auxiliary data.", + "object_messages.savedDialogsSlice_param_count_type_int": "Total number of saved message dialogs", + "object_messages.savedDialogsSlice_param_dialogs_type_Vector<SavedDialog>": "List of saved message dialogs", + "object_messages.savedDialogsSlice_param_messages_type_Vector<Message>": "List of last messages from dialogs", + "object_messages.savedDialogsSlice_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_messages.savedDialogsSlice_param_users_type_Vector<User>": "Mentioned users", + "object_messages.savedDialogsNotModified": "The saved dialogs haven't changed", + "object_messages.savedDialogsNotModified_param_count_type_int": "Number of [saved dialogs](https:\/\/core.telegram.org\/api\/saved-messages) found server-side by the query", + "object_savedReactionTag": "Info about a [saved message reaction tag \u00bb](https:\/\/core.telegram.org\/api\/saved-messages#tags).", + "object_savedReactionTag_param_reaction_type_Reaction": "[Reaction](https:\/\/core.telegram.org\/api\/reactions) associated to the tag.", + "object_savedReactionTag_param_title_type_flags.0?string": "Custom tag name assigned by the user (max 12 UTF-8 chars).", + "object_savedReactionTag_param_count_type_int": "Number of messages tagged with this tag.", + "object_messages.savedReactionTagsNotModified": "The list of [reaction tag \u00bb](https:\/\/core.telegram.org\/api\/saved-messages#tags) names assigned by the user hasn't changed.", + "object_messages.savedReactionTags": "List of [reaction tag \u00bb](https:\/\/core.telegram.org\/api\/saved-messages#tags) names assigned by the user.", + "object_messages.savedReactionTags_param_tags_type_Vector<SavedReactionTag>": "Saved reaction tags.", + "object_messages.savedReactionTags_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation). Can also be manually regenerated, if needed, using the [custom algorithm specified here \u00bb](https:\/\/core.telegram.org\/api\/saved-messages#tags).", + "object_outboxReadDate": "Exact read date of a private message we sent to another user.", + "object_outboxReadDate_param_date_type_int": "UNIX timestamp with the read date.", + "object_smsjobs.eligibleToJoin": "SMS jobs eligibility", + "object_smsjobs.eligibleToJoin_param_terms_url_type_string": "Terms of service URL", + "object_smsjobs.eligibleToJoin_param_monthly_sent_sms_type_int": "Monthly sent SMSes", + "object_smsjobs.status": "Status", + "object_smsjobs.status_param_allow_international_type_flags.0?true": "Allow international numbers", + "object_smsjobs.status_param_recent_sent_type_int": "Recently sent", + "object_smsjobs.status_param_recent_since_type_int": "Since", + "object_smsjobs.status_param_recent_remains_type_int": "Remaining", + "object_smsjobs.status_param_total_sent_type_int": "Total sent", + "object_smsjobs.status_param_total_since_type_int": "Total since", + "object_smsjobs.status_param_last_gift_slug_type_flags.1?string": "Last gift deep link", + "object_smsjobs.status_param_terms_url_type_string": "Terms of service URL", + "object_smsJob": "Info about an SMS job.", + "object_smsJob_param_job_id_type_string": "Job ID", + "object_smsJob_param_phone_number_type_string": "Destination phone number", + "object_smsJob_param_text_type_string": "Text", + "object_businessWeeklyOpen": "A time interval, indicating the opening hours of a business.\n\nNote that opening hours specified by the user must be appropriately validated and transformed before uploading them to the server, as specified [here \u00bb](https:\/\/core.telegram.org\/api\/business#opening-hours).", + "object_businessWeeklyOpen_param_start_minute_type_int": "Start minute in minutes of the week, `0` to `7*24*60` inclusively.", + "object_businessWeeklyOpen_param_end_minute_type_int": "End minute in minutes of the week, `1` to `8*24*60` inclusively (`8` and not `7` because this allows to specify intervals that, for example, start on `Sunday 21:00` and end on `Monday 04:00` (`6*24*60+21*60` to `7*24*60+4*60`) without passing an invalid `end_minute < start_minute`). See [here \u00bb](https:\/\/core.telegram.org\/api\/business#opening-hours) for more info.", + "object_businessWorkHours": "Specifies a set of [Telegram Business opening hours](https:\/\/core.telegram.org\/api\/business#opening-hours).", + "object_businessWorkHours_param_open_now_type_flags.0?true": "Ignored if set while invoking [account.updateBusinessWorkHours](..\/methods\/account.updateBusinessWorkHours.md), only returned by the server in [userFull](..\/constructors\/userFull.md).`business_work_hours`, indicating whether the business is currently open according to the current time and the values in `weekly_open` and `timezone`.", + "object_businessWorkHours_param_timezone_id_type_string": "An ID of one of the timezones returned by [help.getTimezonesList](..\/methods\/help.getTimezonesList.md).
The timezone ID is contained [timezone](..\/constructors\/timezone.md).`id`, a human-readable, localized name of the timezone is available in [timezone](..\/constructors\/timezone.md).`name` and the [timezone](..\/constructors\/timezone.md).`utc_offset` field contains the UTC offset in seconds, which may be displayed in hh:mm format by the client together with the human-readable name (i.e. `$name UTC -01:00`).", + "object_businessWorkHours_param_weekly_open_type_Vector<BusinessWeeklyOpen>": "A list of time intervals (max 28) represented by [businessWeeklyOpen \u00bb](..\/constructors\/businessWeeklyOpen.md), indicating the opening hours of their business.", + "object_businessLocation": "Represents the location of a [Telegram Business \u00bb](https:\/\/core.telegram.org\/api\/business#location).", + "object_businessLocation_param_geo_point_type_flags.0?GeoPoint": "Geographical coordinates (optional).", + "object_businessLocation_param_address_type_string": "Textual description of the address (mandatory).", + "object_inputBusinessRecipients": "Specifies the chats that **can** receive Telegram Business [away \u00bb](https:\/\/core.telegram.org\/api\/business#away-messages) and [greeting \u00bb](https:\/\/core.telegram.org\/api\/business#greeting-messages) messages.\n\nIf `exclude_selected` is set, specifies all chats that **cannot** receive Telegram Business [away \u00bb](https:\/\/core.telegram.org\/api\/business#away-messages) and [greeting \u00bb](https:\/\/core.telegram.org\/api\/business#greeting-messages) messages.", + "object_inputBusinessRecipients_param_existing_chats_type_flags.0?true": "All existing private chats.", + "object_inputBusinessRecipients_param_new_chats_type_flags.1?true": "All new private chats.", + "object_inputBusinessRecipients_param_contacts_type_flags.2?true": "All private chats with contacts.", + "object_inputBusinessRecipients_param_non_contacts_type_flags.3?true": "All private chats with non-contacts.", + "object_inputBusinessRecipients_param_exclude_selected_type_flags.5?true": "If set, inverts the selection.", + "object_inputBusinessRecipients_param_users_type_flags.4?Vector<InputUser>": "Only private chats with the specified users.", + "object_businessRecipients": "Specifies the chats that **can** receive Telegram Business [away \u00bb](https:\/\/core.telegram.org\/api\/business#away-messages) and [greeting \u00bb](https:\/\/core.telegram.org\/api\/business#greeting-messages) messages.\n\nIf `exclude_selected` is set, specifies all chats that **cannot** receive Telegram Business [away \u00bb](https:\/\/core.telegram.org\/api\/business#away-messages) and [greeting \u00bb](https:\/\/core.telegram.org\/api\/business#greeting-messages) messages.", + "object_businessRecipients_param_existing_chats_type_flags.0?true": "All existing private chats.", + "object_businessRecipients_param_new_chats_type_flags.1?true": "All new private chats.", + "object_businessRecipients_param_contacts_type_flags.2?true": "All private chats with contacts.", + "object_businessRecipients_param_non_contacts_type_flags.3?true": "All private chats with non-contacts.", + "object_businessRecipients_param_exclude_selected_type_flags.5?true": "If set, inverts the selection.", + "object_businessRecipients_param_users_type_flags.4?Vector<long>": "Only private chats with the specified users.", + "object_businessAwayMessageScheduleAlways": "Always send [Telegram Business away messages](https:\/\/core.telegram.org\/api\/business#away-messages) to users writing to us in private.", + "object_businessAwayMessageScheduleOutsideWorkHours": "Send [Telegram Business away messages](https:\/\/core.telegram.org\/api\/business#away-messages) to users writing to us in private outside of the configured [Telegram Business working hours](https:\/\/core.telegram.org\/api\/business#opening-hours).", + "object_businessAwayMessageScheduleCustom": "Send [Telegram Business away messages](https:\/\/core.telegram.org\/api\/business#away-messages) to users writing to us in private in the specified time span.", + "object_businessAwayMessageScheduleCustom_param_start_date_type_int": "Start date (UNIX timestamp).", + "object_businessAwayMessageScheduleCustom_param_end_date_type_int": "End date (UNIX timestamp).", + "object_inputBusinessGreetingMessage": "Describes a [Telegram Business greeting](https:\/\/core.telegram.org\/api\/business#greeting-messages), automatically sent to new users writing to us in private for the first time, or after a certain inactivity period.", + "object_inputBusinessGreetingMessage_param_shortcut_id_type_int": "ID of a [quick reply shorcut, containing the greeting messages to send, see here \u00bb for more info](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts).", + "object_inputBusinessGreetingMessage_param_recipients_type_InputBusinessRecipients": "Allowed recipients for the greeting messages.", + "object_inputBusinessGreetingMessage_param_no_activity_days_type_int": "The number of days after which a private chat will be considered as inactive; currently, must be one of 7, 14, 21, or 28.", + "object_businessGreetingMessage": "Describes a [Telegram Business greeting](https:\/\/core.telegram.org\/api\/business#greeting-messages), automatically sent to new users writing to us in private for the first time, or after a certain inactivity period.", + "object_businessGreetingMessage_param_shortcut_id_type_int": "ID of a [quick reply shorcut, containing the greeting messages to send, see here \u00bb for more info](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts).", + "object_businessGreetingMessage_param_recipients_type_BusinessRecipients": "Allowed recipients for the greeting messages.", + "object_businessGreetingMessage_param_no_activity_days_type_int": "The number of days after which a private chat will be considered as inactive; currently, must be one of 7, 14, 21, or 28.", + "object_inputBusinessAwayMessage": "Describes a [Telegram Business away message](https:\/\/core.telegram.org\/api\/business#away-messages), automatically sent to users writing to us when we're offline, during closing hours, while we're on vacation, or in some other custom time period when we cannot immediately answer to the user.", + "object_inputBusinessAwayMessage_param_offline_only_type_flags.0?true": "If set, the messages will not be sent if the account was online in the last 10 minutes.", + "object_inputBusinessAwayMessage_param_shortcut_id_type_int": "ID of a [quick reply shorcut, containing the away messages to send, see here \u00bb for more info](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts).", + "object_inputBusinessAwayMessage_param_schedule_type_BusinessAwayMessageSchedule": "Specifies when should the away messages be sent.", + "object_inputBusinessAwayMessage_param_recipients_type_InputBusinessRecipients": "Allowed recipients for the away messages.", + "object_businessAwayMessage": "Describes a [Telegram Business away message](https:\/\/core.telegram.org\/api\/business#away-messages), automatically sent to users writing to us when we're offline, during closing hours, while we're on vacation, or in some other custom time period when we cannot immediately answer to the user.", + "object_businessAwayMessage_param_offline_only_type_flags.0?true": "If set, the messages will not be sent if the account was online in the last 10 minutes.", + "object_businessAwayMessage_param_shortcut_id_type_int": "ID of a [quick reply shorcut, containing the away messages to send, see here \u00bb for more info](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts).", + "object_businessAwayMessage_param_schedule_type_BusinessAwayMessageSchedule": "Specifies when should the away messages be sent.", + "object_businessAwayMessage_param_recipients_type_BusinessRecipients": "Allowed recipients for the away messages.", + "object_timezone": "Timezone information.", + "object_timezone_param_id_type_string": "Unique timezone ID.", + "object_timezone_param_name_type_string": "Human-readable and localized timezone name.", + "object_timezone_param_utc_offset_type_int": "UTC offset in seconds, which may be displayed in hh:mm format by the client together with the human-readable name (i.e. `$name UTC -01:00`).", + "object_help.timezonesListNotModified": "The timezone list has not changed.", + "object_help.timezonesList": "Timezone information that may be used elsewhere in the API, such as to set [Telegram Business opening hours \u00bb](https:\/\/core.telegram.org\/api\/business#opening-hours).", + "object_help.timezonesList_param_timezones_type_Vector<Timezone>": "Timezones", + "object_help.timezonesList_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_quickReply": "A [quick reply shortcut](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts).", + "object_quickReply_param_shortcut_id_type_int": "Unique shortcut ID.", + "object_quickReply_param_shortcut_type_string": "Shortcut name.", + "object_quickReply_param_top_message_type_int": "ID of the last message in the shortcut.", + "object_quickReply_param_count_type_int": "Total number of messages in the shortcut.", + "object_inputQuickReplyShortcut": "Selects a [quick reply shortcut](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts) by name.", + "object_inputQuickReplyShortcut_param_shortcut_type_string": "Shortcut name.", + "object_inputQuickReplyShortcutId": "Selects a [quick reply shortcut](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts) by its numeric ID.", + "object_inputQuickReplyShortcutId_param_shortcut_id_type_int": "Shortcut ID.", + "object_messages.quickReplies": "Info about [quick reply shortcuts \u00bb](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts).", + "object_messages.quickReplies_param_quick_replies_type_Vector<QuickReply>": "Quick reply shortcuts.", + "object_messages.quickReplies_param_messages_type_Vector<Message>": "Messages mentioned in `quick_replies`.", + "object_messages.quickReplies_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_messages.quickReplies_param_users_type_Vector<User>": "Mentioned users", + "object_messages.quickRepliesNotModified": "Info about [quick reply shortcuts \u00bb](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts) hasn't changed.", + "object_connectedBot": "Contains info about a [connected business bot \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots).", + "object_connectedBot_param_bot_id_type_long": "ID of the connected bot", + "object_connectedBot_param_recipients_type_BusinessBotRecipients": "Specifies the private chats that a [connected business bot \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots) may receive messages and interact with.
", + "object_connectedBot_param_rights_type_BusinessBotRights": "Business bot rights.", + "object_account.connectedBots": "Info about currently connected [business bots](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots).", + "object_account.connectedBots_param_connected_bots_type_Vector<ConnectedBot>": "Info about the connected bots", + "object_account.connectedBots_param_users_type_Vector<User>": "Bot information", + "object_messages.dialogFilters": "[Folder and folder tags](https:\/\/core.telegram.org\/api\/folders) information", + "object_messages.dialogFilters_param_tags_enabled_type_flags.0?true": "Whether [folder tags](https:\/\/core.telegram.org\/api\/folders#folder-tags) are enabled.", + "object_messages.dialogFilters_param_filters_type_Vector<DialogFilter>": "Folders.", + "object_birthday": "[Birthday](https:\/\/core.telegram.org\/api\/profile#birthday) information for a user.\n\nAlso used to invite users to gift [Telegram Premium subscriptions \u00bb](https:\/\/core.telegram.org\/api\/premium#gifting-telegram-premium) to other users with birthdays within a +1\/-1 day time range, related to the current day.", + "object_birthday_param_day_type_int": "Birth day", + "object_birthday_param_month_type_int": "Birth month", + "object_birthday_param_year_type_flags.0?int": "(Optional) birth year.", + "object_botBusinessConnection": "Contains info about a [bot business connection](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots).", + "object_botBusinessConnection_param_disabled_type_flags.1?true": "Whether this business connection is currently disabled", + "object_botBusinessConnection_param_connection_id_type_string": "Business connection ID, used to identify messages coming from the connection and to reply to them as specified [here \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots).", + "object_botBusinessConnection_param_user_id_type_long": "ID of the user that the bot is connected to via this connection.", + "object_botBusinessConnection_param_dc_id_type_int": "ID of the datacenter where to send queries wrapped in a [invokeWithBusinessConnection](..\/methods\/invokeWithBusinessConnection.md) as specified [here \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots).", + "object_botBusinessConnection_param_date_type_int": "When was the connection created.", + "object_botBusinessConnection_param_rights_type_flags.2?BusinessBotRights": "Business bot rights.", + "object_inputBusinessIntro": "[Telegram Business introduction \u00bb](https:\/\/core.telegram.org\/api\/business#business-introduction).", + "object_inputBusinessIntro_param_title_type_string": "Title of the introduction message", + "object_inputBusinessIntro_param_description_type_string": "Profile introduction", + "object_inputBusinessIntro_param_sticker_type_flags.0?InputDocument": "Optional introduction [sticker](https:\/\/core.telegram.org\/api\/stickers).", + "object_businessIntro": "[Telegram Business introduction \u00bb](https:\/\/core.telegram.org\/api\/business#business-introduction).", + "object_businessIntro_param_title_type_string": "Title of the introduction message (max [intro\\_title\\_length\\_limit \u00bb](https:\/\/core.telegram.org\/api\/config#intro-title-length-limit) UTF-8 characters).", + "object_businessIntro_param_description_type_string": "Profile introduction (max [intro\\_description\\_length\\_limit \u00bb](https:\/\/core.telegram.org\/api\/config#intro-description-length-limit) UTF-8 characters).", + "object_businessIntro_param_sticker_type_flags.0?Document": "Optional introduction [sticker](https:\/\/core.telegram.org\/api\/stickers).", + "object_messages.myStickers": "The list of [stickersets owned by the current account \u00bb](https:\/\/core.telegram.org\/api\/stickers).", + "object_messages.myStickers_param_count_type_int": "Total number of owned stickersets.", + "object_messages.myStickers_param_sets_type_Vector<StickerSetCovered>": "Stickersets", + "object_inputCollectibleUsername": "Represents a [username fragment collectible](https:\/\/core.telegram.org\/api\/fragment)", + "object_inputCollectibleUsername_param_username_type_string": "Username", + "object_inputCollectiblePhone": "Represents a [phone number fragment collectible](https:\/\/core.telegram.org\/api\/fragment)", + "object_inputCollectiblePhone_param_phone_type_string": "Phone number", + "object_fragment.collectibleInfo": "Info about a [fragment collectible](https:\/\/core.telegram.org\/api\/fragment).", + "object_fragment.collectibleInfo_param_purchase_date_type_int": "Purchase date (unixtime)", + "object_fragment.collectibleInfo_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code for `amount`", + "object_fragment.collectibleInfo_param_amount_type_long": "Total price in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_fragment.collectibleInfo_param_crypto_currency_type_string": "Cryptocurrency name.", + "object_fragment.collectibleInfo_param_crypto_amount_type_long": "Price, in the smallest units of the cryptocurrency.", + "object_fragment.collectibleInfo_param_url_type_string": "[Fragment](https:\/\/fragment.com) URL with more info about the collectible", + "object_inputBusinessBotRecipients": "Specifies the private chats that a [connected business bot \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots) may interact with.", + "object_inputBusinessBotRecipients_param_existing_chats_type_flags.0?true": "Selects all existing private chats.", + "object_inputBusinessBotRecipients_param_new_chats_type_flags.1?true": "Selects all new private chats.", + "object_inputBusinessBotRecipients_param_contacts_type_flags.2?true": "Selects all private chats with contacts.", + "object_inputBusinessBotRecipients_param_non_contacts_type_flags.3?true": "Selects all private chats with non-contacts.", + "object_inputBusinessBotRecipients_param_exclude_selected_type_flags.5?true": "If set, then all private chats *except* the ones selected by `existing_chats`, `new_chats`, `contacts`, `non_contacts` and `users` are chosen.
Note that if this flag is set, any values passed in `exclude_users` will be merged and moved into `users` by the server.", + "object_inputBusinessBotRecipients_param_users_type_flags.4?Vector<InputUser>": "Explicitly selected private chats.", + "object_inputBusinessBotRecipients_param_exclude_users_type_flags.6?Vector<InputUser>": "Identifiers of private chats that are always excluded.", + "object_businessBotRecipients": "Specifies the private chats that a [connected business bot \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots) may receive messages and interact with.", + "object_businessBotRecipients_param_existing_chats_type_flags.0?true": "Selects all existing private chats.", + "object_businessBotRecipients_param_new_chats_type_flags.1?true": "Selects all new private chats.", + "object_businessBotRecipients_param_contacts_type_flags.2?true": "Selects all private chats with contacts.", + "object_businessBotRecipients_param_non_contacts_type_flags.3?true": "Selects all private chats with non-contacts.", + "object_businessBotRecipients_param_exclude_selected_type_flags.5?true": "If set, then all private chats *except* the ones selected by `existing_chats`, `new_chats`, `contacts`, `non_contacts` and `users` are chosen.
Note that if this flag is set, any values passed in `exclude_users` will be merged and moved into `users` by the server, thus `exclude_users` will always be empty.", + "object_businessBotRecipients_param_users_type_flags.4?Vector<long>": "Explicitly selected private chats.", + "object_businessBotRecipients_param_exclude_users_type_flags.6?Vector<long>": "Identifiers of private chats that are always excluded.", + "object_contactBirthday": "Birthday information of a contact.", + "object_contactBirthday_param_contact_id_type_long": "User ID.", + "object_contactBirthday_param_birthday_type_Birthday": "Birthday information.", + "object_contacts.contactBirthdays": "Birthday information of our contacts.", + "object_contacts.contactBirthdays_param_contacts_type_Vector<ContactBirthday>": "Birthday info", + "object_contacts.contactBirthdays_param_users_type_Vector<User>": "User information", + "object_missingInvitee": "Info about why a specific user could not be [invited \u00bb](https:\/\/core.telegram.org\/api\/invites#direct-invites).", + "object_missingInvitee_param_premium_would_allow_invite_type_flags.0?true": "If set, we could not add the user *only because* the current account needs to purchase a [Telegram Premium](https:\/\/core.telegram.org\/api\/premium) subscription to complete the operation.", + "object_missingInvitee_param_premium_required_for_pm_type_flags.1?true": "If set, we could not add the user because of their privacy settings, and additionally, the current account needs to purchase a [Telegram Premium](https:\/\/core.telegram.org\/api\/premium) subscription to directly share an invite link with the user via a private message.", + "object_missingInvitee_param_user_id_type_long": "ID of the user. If neither of the flags below are set, we could not add the user because of their privacy settings, and we can create and directly share an [invite link](https:\/\/core.telegram.org\/api\/invites#invite-links) with them using a normal message, instead.", + "object_messages.invitedUsers": "Contains info about successfully or unsuccessfully [invited \u00bb](https:\/\/core.telegram.org\/api\/invites#direct-invites) users.", + "object_messages.invitedUsers_param_updates_type_Updates": "List of updates about successfully invited users (and eventually info about the created group)", + "object_messages.invitedUsers_param_missing_invitees_type_Vector<MissingInvitee>": "A list of users that could not be invited, along with the reason why they couldn't be invited.", + "object_inputBusinessChatLink": "Contains info about a [business chat deep link \u00bb](https:\/\/core.telegram.org\/api\/business#business-chat-links) to be created by the current account.", + "object_inputBusinessChatLink_param_message_type_string": "Message to pre-fill in the message input field.", + "object_inputBusinessChatLink_param_entities_type_flags.0?Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "object_inputBusinessChatLink_param_title_type_flags.1?string": "Human-readable name of the link, to simplify management in the UI (only visible to the creator of the link).", + "object_businessChatLink": "Contains info about a [business chat deep link \u00bb](https:\/\/core.telegram.org\/api\/business#business-chat-links) created by the current account.", + "object_businessChatLink_param_link_type_string": "[Business chat deep link](https:\/\/core.telegram.org\/api\/links#business-chat-links).", + "object_businessChatLink_param_message_type_string": "Message to pre-fill in the message input field.", + "object_businessChatLink_param_entities_type_flags.0?Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "object_businessChatLink_param_title_type_flags.1?string": "Human-readable name of the link, to simplify management in the UI (only visible to the creator of the link).", + "object_businessChatLink_param_views_type_int": "Number of times the link was resolved (clicked\/scanned\/etc...).", + "object_account.businessChatLinks": "Contains info about [business chat deep links \u00bb](https:\/\/core.telegram.org\/api\/business#business-chat-links) created by the current account.", + "object_account.businessChatLinks_param_links_type_Vector<BusinessChatLink>": "Links", + "object_account.businessChatLinks_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_account.businessChatLinks_param_users_type_Vector<User>": "Mentioned users", + "object_account.resolvedBusinessChatLinks": "Contains info about a single resolved [business chat deep link \u00bb](https:\/\/core.telegram.org\/api\/business#business-chat-links).", + "object_account.resolvedBusinessChatLinks_param_peer_type_Peer": "Destination peer", + "object_account.resolvedBusinessChatLinks_param_message_type_string": "Message to pre-fill in the message input field.", + "object_account.resolvedBusinessChatLinks_param_entities_type_flags.0?Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "object_account.resolvedBusinessChatLinks_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_account.resolvedBusinessChatLinks_param_users_type_Vector<User>": "Mentioned users", + "object_requestedPeerUser": "Info about a user, shared by a user with the currently logged in bot using [messages.sendBotRequestedPeer](..\/methods\/messages.sendBotRequestedPeer.md).\n\nAll fields except the ID are optional, and will be populated if present on the chosen user, according to the parameters of the requesting [inputKeyboardButtonRequestPeer](..\/constructors\/inputKeyboardButtonRequestPeer.md).", + "object_requestedPeerUser_param_user_id_type_long": "User ID.", + "object_requestedPeerUser_param_first_name_type_flags.0?string": "First name.", + "object_requestedPeerUser_param_last_name_type_flags.0?string": "Last name.", + "object_requestedPeerUser_param_username_type_flags.1?string": "Username.", + "object_requestedPeerUser_param_photo_type_flags.2?Photo": "Profile photo.", + "object_requestedPeerChat": "Info about a [chat](https:\/\/core.telegram.org\/api\/channel), shared by a user with the currently logged in bot using [messages.sendBotRequestedPeer](..\/methods\/messages.sendBotRequestedPeer.md).\n\nAll fields except the ID are optional, and will be populated if present on the chosen chat, according to the parameters of the requesting [inputKeyboardButtonRequestPeer](..\/constructors\/inputKeyboardButtonRequestPeer.md).", + "object_requestedPeerChat_param_chat_id_type_long": "Chat ID.", + "object_requestedPeerChat_param_title_type_flags.0?string": "Chat title.", + "object_requestedPeerChat_param_photo_type_flags.2?Photo": "Chat photo.", + "object_requestedPeerChannel": "Info about a [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel), shared by a user with the currently logged in bot using [messages.sendBotRequestedPeer](..\/methods\/messages.sendBotRequestedPeer.md).\n\nAll fields except the ID are optional, and will be populated if present on the chosen channel\/supergroup, according to the parameters of the requesting [inputKeyboardButtonRequestPeer](..\/constructors\/inputKeyboardButtonRequestPeer.md).", + "object_requestedPeerChannel_param_channel_id_type_long": "Channel\/supergroup ID.", + "object_requestedPeerChannel_param_title_type_flags.0?string": "Channel\/supergroup title.", + "object_requestedPeerChannel_param_username_type_flags.1?string": "Channel\/supergroup username.", + "object_requestedPeerChannel_param_photo_type_flags.2?Photo": "Channel\/supergroup photo.", + "object_sponsoredMessageReportOption": "A [report option for a sponsored message \u00bb](https:\/\/core.telegram.org\/api\/sponsored-messages#reporting-sponsored-messages).", + "object_sponsoredMessageReportOption_param_text_type_string": "Localized description of the option.", + "object_sponsoredMessageReportOption_param_option_type_bytes": "Option identifier to pass to [channels.reportSponsoredMessage](..\/methods\/channels.reportSponsoredMessage.md).", + "object_channels.sponsoredMessageReportResultChooseOption": "The user must choose a report option from the localized options available in `options`, and after selection, [channels.reportSponsoredMessage](..\/methods\/channels.reportSponsoredMessage.md) must be invoked again, passing the option's `option` field to the `option` param of the method.", + "object_channels.sponsoredMessageReportResultChooseOption_param_title_type_string": "Title of the option selection popup.", + "object_channels.sponsoredMessageReportResultChooseOption_param_options_type_Vector<SponsoredMessageReportOption>": "Localized list of options.", + "object_channels.sponsoredMessageReportResultAdsHidden": "Sponsored messages were hidden for the user in all chats.", + "object_channels.sponsoredMessageReportResultReported": "The sponsored message was reported successfully.", + "object_reactionNotificationsFromContacts": "Receive notifications about reactions made only by our contacts.", + "object_reactionNotificationsFromAll": "Receive notifications about reactions made by any user.", + "object_reactionsNotifySettings": "Reaction notification settings, see [here \u00bb](https:\/\/core.telegram.org\/api\/reactions#notifications-about-reactions) for more info.", + "object_reactionsNotifySettings_param_messages_notify_from_type_flags.0?ReactionNotificationsFrom": "Message reaction notification settings, if not set completely disables notifications\/updates about message reactions.", + "object_reactionsNotifySettings_param_stories_notify_from_type_flags.1?ReactionNotificationsFrom": "Story reaction notification settings, if not set completely disables notifications\/updates about reactions to stories.", + "object_reactionsNotifySettings_param_sound_type_NotificationSound": "[Notification sound for reactions \u00bb](https:\/\/core.telegram.org\/api\/ringtones)", + "object_reactionsNotifySettings_param_show_previews_type_Bool": "If false, [push notifications \u00bb](https:\/\/core.telegram.org\/api\/push-updates) about message\/story reactions will only be of type `REACT_HIDDEN`\/`REACT_STORY_HIDDEN`, without any information about the reacted-to story or the reaction itself.", + "object_availableEffect": "Represents a [message effect \u00bb](https:\/\/core.telegram.org\/api\/effects).\n\nAll `long` IDs except for `id` are [document](..\/constructors\/document.md).`id`s from the containing [messages.availableEffects](..\/constructors\/messages.availableEffects.md) constructor.\n\nSee [here \u00bb](https:\/\/core.telegram.org\/api\/effects) for more info on how to use following fields.", + "object_availableEffect_param_premium_required_type_flags.2?true": "Whether a [Premium](https:\/\/core.telegram.org\/api\/premium) subscription is required to use this effect.", + "object_availableEffect_param_id_type_long": "Unique effect ID.", + "object_availableEffect_param_emoticon_type_string": "Emoji corresponding to the effect, to be used as icon for the effect if `static_icon_id` is not set.", + "object_availableEffect_param_static_icon_id_type_flags.0?long": "ID of the document containing the static icon (WEBP) of the effect.", + "object_availableEffect_param_effect_sticker_id_type_long": "Contains the preview [animation (TGS format \u00bb)](https:\/\/core.telegram.org\/api\/stickers#animated-stickers), used for the effect selection menu.", + "object_availableEffect_param_effect_animation_id_type_flags.1?long": "If set, contains the actual animated effect [(TGS format \u00bb)](https:\/\/core.telegram.org\/api\/stickers#animated-stickers). If not set, the animated effect must be set equal to the [premium animated sticker effect](https:\/\/core.telegram.org\/api\/stickers#premium-animated-sticker-effects) associated to the animated sticker specified in `effect_sticker_id` (always different from the preview animation, fetched thanks to the [videoSize](..\/constructors\/videoSize.md) of type `f` as specified [here \u00bb](https:\/\/core.telegram.org\/api\/stickers#premium-animated-sticker-effects)).", + "object_messages.availableEffectsNotModified": "The full list of usable [animated message effects \u00bb](https:\/\/core.telegram.org\/api\/effects) hasn't changed.", + "object_messages.availableEffects": "The full list of usable [animated message effects \u00bb](https:\/\/core.telegram.org\/api\/effects).", + "object_messages.availableEffects_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_messages.availableEffects_param_effects_type_Vector<AvailableEffect>": "Message effects", + "object_messages.availableEffects_param_documents_type_Vector<Document>": "Documents specified in the `effects` constructors.", + "object_factCheck": "Represents a [fact-check \u00bb](https:\/\/core.telegram.org\/api\/factcheck) created by an independent fact-checker.", + "object_factCheck_param_need_check_type_flags.0?true": "If set, the `country`\/`text` fields will **not** be set, and the fact check must be fetched manually by the client (if it isn't already cached with the key specified in `hash`) using bundled [messages.getFactCheck](..\/methods\/messages.getFactCheck.md) requests, when the message with the factcheck scrolls into view.", + "object_factCheck_param_country_type_flags.1?string": "A two-letter ISO 3166-1 alpha-2 country code of the country for which the fact-check should be shown.", + "object_factCheck_param_text_type_flags.1?TextWithEntities": "The fact-check.", + "object_factCheck_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_starsTransactionPeerUnsupported": "Describes a [Telegram Star](https:\/\/core.telegram.org\/api\/stars) transaction that cannot be described using the current layer.", + "object_starsTransactionPeerAppStore": "Describes a [Telegram Star](https:\/\/core.telegram.org\/api\/stars) transaction with the App Store, used when purchasing Telegram Stars through the App Store.", + "object_starsTransactionPeerPlayMarket": "Describes a [Telegram Star](https:\/\/core.telegram.org\/api\/stars) transaction with the Play Store, used when purchasing Telegram Stars through the Play Store.", + "object_starsTransactionPeerPremiumBot": "Describes a [Telegram Star](https:\/\/core.telegram.org\/api\/stars) transaction made using [@PremiumBot](https:\/\/t.me\/premiumbot) (i.e. using the [inputInvoiceStars](..\/constructors\/inputInvoiceStars.md) flow described [here \u00bb](https:\/\/core.telegram.org\/api\/stars#buying-or-gifting-stars)).", + "object_starsTransactionPeerFragment": "Describes a [Telegram Star](https:\/\/core.telegram.org\/api\/stars) transaction with [Fragment](https:\/\/fragment.com), used when purchasing Telegram Stars through [Fragment](https:\/\/fragment.com).", + "object_starsTransactionPeer": "Describes a [Telegram Star](https:\/\/core.telegram.org\/api\/stars) transaction with another peer.", + "object_starsTransactionPeer_param_peer_type_Peer": "The peer.", + "object_starsTransactionPeerAds": "Describes a [Telegram Star](https:\/\/core.telegram.org\/api\/stars) transaction used to pay for [Telegram ads as specified here \u00bb](https:\/\/core.telegram.org\/api\/stars#paying-for-ads).", + "object_starsTransactionPeerAPI": "Describes a [Telegram Star](https:\/\/core.telegram.org\/api\/stars) transaction used to pay for paid API usage, such as [paid bot broadcasts](https:\/\/core.telegram.org\/bots\/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once).", + "object_starsTopupOption": "[Telegram Stars topup option](https:\/\/core.telegram.org\/api\/stars).", + "object_starsTopupOption_param_extended_type_flags.1?true": "If set, the option must only be shown in the full list of topup options.", + "object_starsTopupOption_param_stars_type_long": "Amount of Telegram stars.", + "object_starsTopupOption_param_store_product_type_flags.0?string": "Identifier of the store product associated with the option, official apps only.", + "object_starsTopupOption_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code", + "object_starsTopupOption_param_amount_type_long": "Price of the product in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_starsTransaction": "Represents a [Telegram Stars or TON transaction \u00bb](https:\/\/core.telegram.org\/api\/stars).", + "object_starsTransaction_param_refund_type_flags.3?true": "Whether this transaction is a refund.", + "object_starsTransaction_param_pending_type_flags.4?true": "The transaction is currently pending.", + "object_starsTransaction_param_failed_type_flags.6?true": "This transaction has failed.", + "object_starsTransaction_param_gift_type_flags.10?true": "This transaction was a gift from the user in `peer.peer`.", + "object_starsTransaction_param_reaction_type_flags.11?true": "This transaction is a [paid reaction \u00bb](https:\/\/core.telegram.org\/api\/reactions#paid-reactions).", + "object_starsTransaction_param_stargift_upgrade_type_flags.18?true": "This transaction pays for the upgrade of a gift to a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "object_starsTransaction_param_business_transfer_type_flags.21?true": "This transaction transfers stars from the balance of a user account [connected to a business bot](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots), to the balance of the business bot, see [here \u00bb](https:\/\/core.telegram.org\/api\/stars#transferring-stars-from-a-business-account-to-the-business-bot) for more info.", + "object_starsTransaction_param_stargift_resale_type_flags.22?true": "This transaction is related to the [resale of a collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#reselling-collectible-gifts).", + "object_starsTransaction_param_posts_search_type_flags.24?true": "Represents payment for a [paid global post search \u00bb](https:\/\/core.telegram.org\/api\/search#posts-tab).", + "object_starsTransaction_param_stargift_prepaid_upgrade_type_flags.25?true": "Represents payment for a [separate prepaid upgrade of a gift](https:\/\/core.telegram.org\/api\/gifts#prepaying-for-someone-elses-upgrade).", + "object_starsTransaction_param_id_type_string": "Transaction ID.", + "object_starsTransaction_param_amount_type_StarsAmount": "Amount of Telegram Stars or TON.", + "object_starsTransaction_param_date_type_int": "Date of the transaction (unixtime).", + "object_starsTransaction_param_peer_type_StarsTransactionPeer": "Source of the incoming transaction, or its recipient for outgoing transactions.", + "object_starsTransaction_param_title_type_flags.0?string": "For transactions with bots, title of the bought product.", + "object_starsTransaction_param_description_type_flags.1?string": "For transactions with bots, description of the bought product.", + "object_starsTransaction_param_photo_type_flags.2?WebDocument": "For transactions with bots, photo of the bought product.", + "object_starsTransaction_param_transaction_date_type_flags.5?int": "If neither `pending` nor `failed` are set, the transaction was completed successfully, and this field will contain the point in time (Unix timestamp) when the withdrawal was completed successfully.", + "object_starsTransaction_param_transaction_url_type_flags.5?string": "If neither `pending` nor `failed` are set, the transaction was completed successfully, and this field will contain a URL where the withdrawal transaction can be viewed.", + "object_starsTransaction_param_bot_payload_type_flags.7?bytes": "Bot specified invoice payload (i.e. the `payload` passed to [inputMediaInvoice](..\/constructors\/inputMediaInvoice.md) when [creating the invoice](https:\/\/core.telegram.org\/api\/payments)).", + "object_starsTransaction_param_msg_id_type_flags.8?int": "For [paid media transactions \u00bb](https:\/\/core.telegram.org\/api\/paid-media), message ID of the paid media posted to `peer.peer` (can point to a deleted message; either way, `extended_media` will always contain the bought media).", + "object_starsTransaction_param_extended_media_type_flags.9?Vector<MessageMedia>": "The purchased [paid media \u00bb](https:\/\/core.telegram.org\/api\/paid-media).", + "object_starsTransaction_param_subscription_period_type_flags.12?int": "The number of seconds between consecutive Telegram Star debiting for [Telegram Star subscriptions \u00bb](https:\/\/core.telegram.org\/api\/stars#star-subscriptions).", + "object_starsTransaction_param_giveaway_post_id_type_flags.13?int": "ID of the message containing the [messageMediaGiveaway](..\/constructors\/messageMediaGiveaway.md), for incoming [star giveaway prizes](https:\/\/core.telegram.org\/api\/giveaways#star-giveaways).", + "object_starsTransaction_param_stargift_type_flags.14?StarGift": "This transaction indicates a purchase or a sale (conversion back to Stars) of a [gift \u00bb](https:\/\/core.telegram.org\/api\/stars).", + "object_starsTransaction_param_floodskip_number_type_flags.15?int": "This transaction is payment for [paid bot broadcasts](https:\/\/core.telegram.org\/bots\/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once).
Paid broadcasts are only allowed if the `allow_paid_floodskip` parameter of [messages.sendMessage](..\/methods\/messages.sendMessage.md) and other message sending methods is set while trying to broadcast more than 30 messages per second to bot users.
The integer value returned by this flag indicates the number of billed API calls.", + "object_starsTransaction_param_starref_commission_permille_type_flags.16?int": "This transaction is the receival (or refund) of an [affiliate commission](https:\/\/core.telegram.org\/api\/bots\/referrals) (i.e. this is the transaction received by the peer that created the [referral link](https:\/\/core.telegram.org\/api\/links#referral-links), flag 17 is for transactions made by users that imported the referral link).", + "object_starsTransaction_param_starref_peer_type_flags.17?Peer": "For transactions made by [referred users](https:\/\/core.telegram.org\/api\/bots\/referrals), the peer that received the affiliate commission.", + "object_starsTransaction_param_starref_amount_type_flags.17?StarsAmount": "For transactions made by [referred users](https:\/\/core.telegram.org\/api\/bots\/referrals), the amount of Telegram Stars received by the affiliate, can be negative for refunds.", + "object_starsTransaction_param_paid_messages_type_flags.19?int": "This transaction is related to the reception or transmission of a [paid message \u00bb](https:\/\/core.telegram.org\/api\/paid-messages).", + "object_starsTransaction_param_premium_gift_months_type_flags.20?int": "This transaction indicates the payment for a [gifted Telegram Premium subscription \u00bb](https:\/\/core.telegram.org\/api\/premium#gifting-telegram-premium).", + "object_starsTransaction_param_ads_proceeds_from_date_type_flags.23?int": "Indicates that this is payment for ad revenue from the specified unixtime (always set together with **ads\\_proceeds\\_to\\_date**).", + "object_starsTransaction_param_ads_proceeds_to_date_type_flags.23?int": "Indicates that this is payment for ad revenue to the specified unixtime.", + "object_payments.starsStatus": "Info about the current [Telegram Star subscriptions, balance and transaction history \u00bb](https:\/\/core.telegram.org\/api\/stars#balance-and-transaction-history).", + "object_payments.starsStatus_param_balance_type_StarsAmount": "Current Telegram Star balance.", + "object_payments.starsStatus_param_subscriptions_type_flags.1?Vector<StarsSubscription>": "Info about current Telegram Star subscriptions, only returned when invoking [payments.getStarsTransactions](..\/methods\/payments.getStarsTransactions.md) and [payments.getStarsSubscriptions](..\/methods\/payments.getStarsSubscriptions.md).", + "object_payments.starsStatus_param_subscriptions_next_offset_type_flags.2?string": "Offset for pagination of subscriptions: only usable and returned when invoking [payments.getStarsSubscriptions](..\/methods\/payments.getStarsSubscriptions.md).", + "object_payments.starsStatus_param_subscriptions_missing_balance_type_flags.4?long": "The number of Telegram Stars the user should buy to be able to extend expired subscriptions soon (i.e. the current balance is not enough to extend all expired subscriptions).", + "object_payments.starsStatus_param_history_type_flags.3?Vector<StarsTransaction>": "List of Telegram Star transactions (partial if `next_offset` is set).", + "object_payments.starsStatus_param_next_offset_type_flags.0?string": "Offset to use to fetch more transactions from the transaction history using [payments.getStarsTransactions](..\/methods\/payments.getStarsTransactions.md).", + "object_payments.starsStatus_param_chats_type_Vector<Chat>": "Chats mentioned in `history`.", + "object_payments.starsStatus_param_users_type_Vector<User>": "Users mentioned in `history`.", + "object_foundStory": "A story found using [global story search \u00bb](https:\/\/core.telegram.org\/api\/stories#searching-stories).", + "object_foundStory_param_peer_type_Peer": "The peer that posted the story.", + "object_foundStory_param_story_type_StoryItem": "The story.", + "object_stories.foundStories": "Stories found using [global story search \u00bb](https:\/\/core.telegram.org\/api\/stories#searching-stories).", + "object_stories.foundStories_param_count_type_int": "Total number of results found for the query.", + "object_stories.foundStories_param_stories_type_Vector<FoundStory>": "Matching stories.", + "object_stories.foundStories_param_next_offset_type_flags.0?string": "Offset used to fetch the next page, if not set this is the final page.", + "object_stories.foundStories_param_chats_type_Vector<Chat>": "Mentioned chats", + "object_stories.foundStories_param_users_type_Vector<User>": "Mentioned users", + "object_geoPointAddress": "Address optionally associated to a [geoPoint](..\/constructors\/geoPoint.md).", + "object_geoPointAddress_param_country_iso2_type_string": "Two-letter ISO 3166-1 alpha-2 country code", + "object_geoPointAddress_param_state_type_flags.0?string": "State", + "object_geoPointAddress_param_city_type_flags.1?string": "City", + "object_geoPointAddress_param_street_type_flags.2?string": "Street", + "object_starsRevenueStatus": "Describes [Telegram Star revenue balances \u00bb](https:\/\/core.telegram.org\/api\/stars).", + "object_starsRevenueStatus_param_withdrawal_enabled_type_flags.0?true": "If set, the user may [withdraw](https:\/\/core.telegram.org\/api\/stars#withdrawing-revenue) up to `available_balance` stars.", + "object_starsRevenueStatus_param_current_balance_type_StarsAmount": "Amount of not-yet-withdrawn Telegram Stars.", + "object_starsRevenueStatus_param_available_balance_type_StarsAmount": "Amount of withdrawable Telegram Stars.", + "object_starsRevenueStatus_param_overall_revenue_type_StarsAmount": "Total amount of earned Telegram Stars.", + "object_starsRevenueStatus_param_next_withdrawal_at_type_flags.1?int": "Unixtime indicating when will withdrawal be available to the user. If not set, withdrawal can be started now.", + "object_payments.starsRevenueStats": "[Star revenue statistics, see here \u00bb](https:\/\/core.telegram.org\/api\/stars) for more info.\n\nNote that all balances and currency amounts and graph values are in Stars.", + "object_payments.starsRevenueStats_param_top_hours_graph_type_flags.0?StatsGraph": "For ad revenue statistics, ad impressions graph", + "object_payments.starsRevenueStats_param_revenue_graph_type_StatsGraph": "Star revenue graph (number of earned stars)", + "object_payments.starsRevenueStats_param_status_type_StarsRevenueStatus": "Current balance, current withdrawable balance and overall earned Telegram Stars", + "object_payments.starsRevenueStats_param_usd_rate_type_double": "Current conversion rate of Telegram Stars to USD", + "object_payments.starsRevenueWithdrawalUrl": "Contains the URL to use to [withdraw Telegram Star revenue](https:\/\/core.telegram.org\/api\/stars#withdrawing-revenue).", + "object_payments.starsRevenueWithdrawalUrl_param_url_type_string": "Contains the URL to use to [withdraw Telegram Star revenue](https:\/\/core.telegram.org\/api\/stars#withdrawing-revenue).", + "object_payments.starsRevenueAdsAccountUrl": "Contains a URL leading to a page where the user will be able to place ads for the channel\/bot, paying using [Telegram Stars](https:\/\/core.telegram.org\/api\/stars#paying-for-ads).", + "object_payments.starsRevenueAdsAccountUrl_param_url_type_string": "URL to open.", + "object_inputStarsTransaction": "Used to fetch info about a [Telegram Star transaction \u00bb](https:\/\/core.telegram.org\/api\/stars#balance-and-transaction-history).", + "object_inputStarsTransaction_param_refund_type_flags.0?true": "If set, fetches info about the refund transaction for this transaction.", + "object_inputStarsTransaction_param_id_type_string": "Transaction ID.", + "object_starsGiftOption": "[Telegram Stars gift option](https:\/\/core.telegram.org\/api\/stars#buying-or-gifting-stars).", + "object_starsGiftOption_param_extended_type_flags.1?true": "If set, the option must only be shown in the full list of topup options.", + "object_starsGiftOption_param_stars_type_long": "Amount of Telegram stars.", + "object_starsGiftOption_param_store_product_type_flags.0?string": "Identifier of the store product associated with the option, official apps only.", + "object_starsGiftOption_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code", + "object_starsGiftOption_param_amount_type_long": "Price of the product in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_bots.popularAppBots": "Popular [Main Mini Apps](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-apps), to be used in the [apps tab of global search \u00bb](https:\/\/core.telegram.org\/api\/search#apps-tab).", + "object_bots.popularAppBots_param_next_offset_type_flags.0?string": "Offset for [pagination](https:\/\/core.telegram.org\/api\/offsets).", + "object_bots.popularAppBots_param_users_type_Vector<User>": "The bots associated to each [Main Mini App, see here \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-apps) for more info.", + "object_botPreviewMedia": "Represents a [Main Mini App preview media, see here \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-app-previews) for more info.", + "object_botPreviewMedia_param_date_type_int": "When was this media last updated.", + "object_botPreviewMedia_param_media_type_MessageMedia": "The actual photo\/video.", + "object_bots.previewInfo": "Contains info about [Main Mini App previews, see here \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-app-previews) for more info.", + "object_bots.previewInfo_param_media_type_Vector<BotPreviewMedia>": "All preview medias for the language code passed to [bots.getPreviewInfo](..\/methods\/bots.getPreviewInfo.md).", + "object_bots.previewInfo_param_lang_codes_type_Vector<string>": "All available language codes for which preview medias were uploaded (regardless of the language code passed to [bots.getPreviewInfo](..\/methods\/bots.getPreviewInfo.md)).", + "object_starsSubscriptionPricing": "Pricing of a [Telegram Star subscription \u00bb](https:\/\/core.telegram.org\/api\/invites#paid-invite-links).", + "object_starsSubscriptionPricing_param_period_type_int": "The user should pay `amount` stars every `period` seconds to gain and maintain access to the channel.
Currently the only allowed subscription period is `30*24*60*60`, i.e. the user will be debited amount stars every month.", + "object_starsSubscriptionPricing_param_amount_type_long": "Price of the subscription in Telegram Stars.", + "object_starsSubscription": "Represents a [Telegram Star subscription \u00bb](https:\/\/core.telegram.org\/api\/invites#paid-invite-links).", + "object_starsSubscription_param_canceled_type_flags.0?true": "Whether this subscription was cancelled.", + "object_starsSubscription_param_can_refulfill_type_flags.1?true": "Whether we left the associated private channel, but we can still rejoin it using [payments.fulfillStarsSubscription](..\/methods\/payments.fulfillStarsSubscription.md) because the current subscription period hasn't expired yet.", + "object_starsSubscription_param_missing_balance_type_flags.2?true": "Whether this subscription has expired because there are not enough stars on the user's balance to extend it.", + "object_starsSubscription_param_bot_canceled_type_flags.7?true": "Set if this [bot subscription](https:\/\/core.telegram.org\/api\/subscriptions#bot-subscriptions) was cancelled by the bot", + "object_starsSubscription_param_id_type_string": "Subscription ID.", + "object_starsSubscription_param_peer_type_Peer": "Identifier of the associated private chat.", + "object_starsSubscription_param_until_date_type_int": "Expiration date of the current subscription period.", + "object_starsSubscription_param_pricing_type_StarsSubscriptionPricing": "Pricing of the subscription in Telegram Stars.", + "object_starsSubscription_param_chat_invite_hash_type_flags.3?string": "Invitation link, used to renew the subscription after cancellation or expiration.", + "object_starsSubscription_param_title_type_flags.4?string": "For bot subscriptions, the title of the subscription invoice", + "object_starsSubscription_param_photo_type_flags.5?WebDocument": "For bot subscriptions, the photo from the subscription invoice", + "object_starsSubscription_param_invoice_slug_type_flags.6?string": "For bot subscriptions, the [identifier](https:\/\/core.telegram.org\/api\/links#invoice-links) of the subscription invoice", + "object_messageReactor": "Info about a user in the [paid Star reactions leaderboard](https:\/\/core.telegram.org\/api\/reactions#paid-reactions) for a message.", + "object_messageReactor_param_top_type_flags.0?true": "If set, the reactor is one of the most active reactors; may be unset if the reactor is the current user.", + "object_messageReactor_param_my_type_flags.1?true": "If set, this reactor is the current user.", + "object_messageReactor_param_anonymous_type_flags.2?true": "If set, the reactor is anonymous.", + "object_messageReactor_param_peer_id_type_flags.3?Peer": "Identifier of the peer that reacted: may be unset for anonymous reactors different from the current user (i.e. if the current user sent an anonymous reaction `anonymous` will be set but this field will also be set).", + "object_messageReactor_param_count_type_int": "The number of sent Telegram Stars.", + "object_starsGiveawayOption": "Contains info about a [Telegram Star giveaway](https:\/\/core.telegram.org\/api\/giveaways#star-giveaways) option.", + "object_starsGiveawayOption_param_extended_type_flags.0?true": "If set, this option must only be shown in the full list of giveaway options (i.e. they must be added to the list only when the user clicks on the expand button).", + "object_starsGiveawayOption_param_default_type_flags.1?true": "If set, this option must be pre-selected by default in the option list.", + "object_starsGiveawayOption_param_stars_type_long": "The number of Telegram Stars that will be distributed among winners", + "object_starsGiveawayOption_param_yearly_boosts_type_int": "Number of times the chat will be boosted for one year if the [inputStorePaymentStarsGiveaway](..\/constructors\/inputStorePaymentStarsGiveaway.md).`boost_peer` flag is populated", + "object_starsGiveawayOption_param_store_product_type_flags.2?string": "Identifier of the store product associated with the option, official apps only.", + "object_starsGiveawayOption_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code", + "object_starsGiveawayOption_param_amount_type_long": "Total price in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "object_starsGiveawayOption_param_winners_type_Vector<StarsGiveawayWinnersOption>": "Allowed options for the number of giveaway winners.", + "object_starsGiveawayWinnersOption": "Allowed options for the number of giveaway winners.", + "object_starsGiveawayWinnersOption_param_default_type_flags.0?true": "If set, this option must be pre-selected by default in the option list.", + "object_starsGiveawayWinnersOption_param_users_type_int": "The number of users that will be randomly chosen as winners.", + "object_starsGiveawayWinnersOption_param_per_user_stars_type_long": "The number of [Telegram Stars](https:\/\/core.telegram.org\/api\/stars) each winner will receive.", + "object_starGift": "Represents a [star gift, see here \u00bb](https:\/\/core.telegram.org\/api\/gifts) for more info.", + "object_starGift_param_limited_type_flags.0?true": "Whether this is a limited-supply gift.", + "object_starGift_param_sold_out_type_flags.1?true": "Whether this gift sold out and cannot be bought anymore.", + "object_starGift_param_birthday_type_flags.2?true": "Whether this is a birthday-themed gift", + "object_starGift_param_require_premium_type_flags.7?true": "This gift can only be bought by users with a [Premium](https:\/\/core.telegram.org\/api\/premium) subscription.", + "object_starGift_param_limited_per_user_type_flags.8?true": "If set, the maximum number of gifts of this type that can be owned by a single user is limited and specified in `per_user_total`, and the remaining slots for the current user in `per_user_remains`.", + "object_starGift_param_id_type_long": "Identifier of the gift", + "object_starGift_param_sticker_type_Document": "[Sticker](https:\/\/core.telegram.org\/api\/stickers) that represents the gift.", + "object_starGift_param_stars_type_long": "Price of the gift in [Telegram Stars](https:\/\/core.telegram.org\/api\/stars).", + "object_starGift_param_availability_remains_type_flags.0?int": "For limited-supply gifts: the remaining number of gifts that may be bought.", + "object_starGift_param_availability_total_type_flags.0?int": "For limited-supply gifts: the total number of gifts that was available in the initial supply.", + "object_starGift_param_availability_resale_type_flags.4?long": "The total number of (upgraded to [collectibles](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts)) gifts of this type currently on [resale](https:\/\/core.telegram.org\/api\/gifts#reselling-collectible-gifts)", + "object_starGift_param_convert_stars_type_long": "The receiver of this gift may convert it to this many Telegram Stars, instead of displaying it on their profile page.
`convert_stars` will be equal to `stars` only if the gift was bought using recently bought Telegram Stars, otherwise it will be less than `stars`.", + "object_starGift_param_first_sale_date_type_flags.1?int": "For sold out gifts only: when was the gift first bought.", + "object_starGift_param_last_sale_date_type_flags.1?int": "For sold out gifts only: when was the gift last bought.", + "object_starGift_param_upgrade_stars_type_flags.3?long": "The number of Telegram Stars the user can pay to [convert the gift into a collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "object_starGift_param_resell_min_stars_type_flags.4?long": "The minimum price in [Stars](https:\/\/core.telegram.org\/api\/stars) for gifts of this type currently on [resale](https:\/\/core.telegram.org\/api\/gifts#reselling-collectible-gifts).", + "object_starGift_param_title_type_flags.5?string": "Title of the gift", + "object_starGift_param_released_by_type_flags.6?Peer": "This gift was released by the specified peer.", + "object_starGift_param_per_user_total_type_flags.8?int": "Maximum number of gifts of this type that can be owned by any user.", + "object_starGift_param_per_user_remains_type_flags.8?int": "Remaining number of gifts of this type that can be owned by the current user.", + "object_starGift_param_locked_until_date_type_flags.9?int": "If set, the specified gift *possibly* cannot be sent until the specified date, see [here \u00bb](https:\/\/core.telegram.org\/api\/gifts) for the full flow.", + "object_starGiftUnique": "Represents a [collectible star gift, see here \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts) for more info.\n\nThe sticker that represents the gift is contained in a [starGiftAttributeModel](..\/constructors\/starGiftAttributeModel.md) object in `attributes`.", + "object_starGiftUnique_param_require_premium_type_flags.6?true": "This gift can only be bought by users with a [Premium](https:\/\/core.telegram.org\/api\/premium) subscription.", + "object_starGiftUnique_param_resale_ton_only_type_flags.7?true": "Whether the gift can be bought only using Toncoins.", + "object_starGiftUnique_param_theme_available_type_flags.9?true": "A chat theme associated to this gift is available, [see here \u00bb](https:\/\/core.telegram.org\/api\/themes#chat-themes) for more info on how to use it.", + "object_starGiftUnique_param_id_type_long": "Identifier of the collectible gift.", + "object_starGiftUnique_param_gift_id_type_long": "Unique ID of the gift.", + "object_starGiftUnique_param_title_type_string": "Collectible title.", + "object_starGiftUnique_param_slug_type_string": "Slug that can be used to create a [collectible gift deep link \u00bb](https:\/\/core.telegram.org\/api\/links#collectible-gift-link), or [elsewhere in the API where a collectible slug is accepted](https:\/\/core.telegram.org\/api\/gifts).", + "object_starGiftUnique_param_num_type_int": "Unique identifier of this collectible gift among all (already upgraded) collectible gifts of the same type.", + "object_starGiftUnique_param_owner_id_type_flags.0?Peer": "The owner of the gift.", + "object_starGiftUnique_param_owner_name_type_flags.1?string": "The name of the owner if neither `owner_id` nor `owner_address` are set.", + "object_starGiftUnique_param_owner_address_type_flags.2?string": "For [NFTs on the TON blockchain](https:\/\/core.telegram.org\/api\/gifts#withdraw-a-collectible-gift-to-the-ton-blockchain), contains the address of the owner (append it to the [ton\\_blockchain\\_explorer\\_url client configuration value \u00bb](https:\/\/core.telegram.org\/api\/config#ton-blockchain-explorer-url) to obtain a link with information about the address).", + "object_starGiftUnique_param_attributes_type_Vector<StarGiftAttribute>": "Collectible attributes", + "object_starGiftUnique_param_availability_issued_type_int": "Total number of gifts of the same type that were upgraded to a collectible gift.", + "object_starGiftUnique_param_availability_total_type_int": "Total number of gifts of the same type that can be upgraded or were already upgraded to a collectible gift.", + "object_starGiftUnique_param_gift_address_type_flags.3?string": "For [NFTs on the TON blockchain](https:\/\/core.telegram.org\/api\/gifts#withdraw-a-collectible-gift-to-the-ton-blockchain), contains the address of the NFT (append it to the [ton\\_blockchain\\_explorer\\_url client configuration value \u00bb](https:\/\/core.telegram.org\/api\/config#ton-blockchain-explorer-url) to obtain a link with information about the address).", + "object_starGiftUnique_param_resell_amount_type_flags.4?Vector<StarsAmount>": "Resale price of the gift.", + "object_starGiftUnique_param_released_by_type_flags.5?Peer": "This gift was released by the specified peer.", + "object_starGiftUnique_param_value_amount_type_flags.8?long": "Price of the gift.", + "object_starGiftUnique_param_value_currency_type_flags.8?string": "Currency for the gift's price.", + "object_starGiftUnique_param_theme_peer_type_flags.10?Peer": "The current chat where the associated [chat theme](https:\/\/core.telegram.org\/api\/themes#chat-themes) is installed, if any (gift-based themes can only be installed in one chat at a time).", + "object_payments.starGiftsNotModified": "The list of available [gifts \u00bb](https:\/\/core.telegram.org\/api\/gifts) hasn't changed.", + "object_payments.starGifts": "Available [gifts \u00bb](https:\/\/core.telegram.org\/api\/gifts).", + "object_payments.starGifts_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_payments.starGifts_param_gifts_type_Vector<StarGift>": "List of available gifts.", + "object_payments.starGifts_param_chats_type_Vector<Chat>": "Chats mentioned in the `gifts` field.", + "object_payments.starGifts_param_users_type_Vector<User>": "Users mentioned in the `gifts` field.", + "object_messageReportOption": "Report menu option", + "object_messageReportOption_param_text_type_string": "Option title", + "object_messageReportOption_param_option_type_bytes": "Option identifier: if the user selects this option, re-invoke [messages.report](..\/methods\/messages.report.md), passing this option to `option`", + "object_reportResultChooseOption": "The user must choose one of the following options, and then [messages.report](..\/methods\/messages.report.md) must be re-invoked, passing the option's `option` identifier to [messages.report](..\/methods\/messages.report.md).`option`.", + "object_reportResultChooseOption_param_title_type_string": "Title of the option popup", + "object_reportResultChooseOption_param_options_type_Vector<MessageReportOption>": "Available options, rendered as menu entries.", + "object_reportResultAddComment": "The user should enter an additional comment for the moderators, and then [messages.report](..\/methods\/messages.report.md) must be re-invoked, passing the comment to [messages.report](..\/methods\/messages.report.md).`message`.", + "object_reportResultAddComment_param_optional_type_flags.0?true": "Whether this step can be skipped by the user, passing an empty `message` to [messages.report](..\/methods\/messages.report.md), or if a non-empty `message` is mandatory.", + "object_reportResultAddComment_param_option_type_bytes": "The [messages.report](..\/methods\/messages.report.md) method must be re-invoked, passing this option to `option`", + "object_reportResultReported": "The report was sent successfully, no further actions are required.", + "object_messages.botPreparedInlineMessage": "Represents a [prepared inline message saved by a bot, to be sent to the user via a web app \u00bb](https:\/\/core.telegram.org\/api\/bots\/inline#21-using-a-prepared-inline-message)", + "object_messages.botPreparedInlineMessage_param_id_type_string": "The ID of the saved message, to be passed to the `id` field of the [web\\_app\\_send\\_prepared\\_message event \u00bb](https:\/\/core.telegram.org\/api\/web-events#web-app-send-prepared-message)", + "object_messages.botPreparedInlineMessage_param_expire_date_type_int": "Expiration date of the message", + "object_messages.preparedInlineMessage": "Represents a [prepared inline message received via a bot's mini app, that can be sent to some chats \u00bb](https:\/\/core.telegram.org\/api\/bots\/inline#21-using-a-prepared-inline-message)", + "object_messages.preparedInlineMessage_param_query_id_type_long": "The `query_id` to pass to [messages.sendInlineBotResult](..\/methods\/messages.sendInlineBotResult.md)", + "object_messages.preparedInlineMessage_param_result_type_BotInlineResult": "The contents of the message, to be shown in a preview", + "object_messages.preparedInlineMessage_param_peer_types_type_Vector<InlineQueryPeerType>": "Types of chats where this message can be sent", + "object_messages.preparedInlineMessage_param_cache_time_type_int": "Caching validity of the results", + "object_messages.preparedInlineMessage_param_users_type_Vector<User>": "Users mentioned in the results", + "object_botAppSettings": "[Mini app \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps) settings", + "object_botAppSettings_param_placeholder_path_type_flags.0?bytes": "SVG placeholder logo, compressed using the same format used for [vector thumbnails \u00bb](https:\/\/core.telegram.org\/api\/files#vector-thumbnails).", + "object_botAppSettings_param_background_color_type_flags.1?int": "Default light mode background color", + "object_botAppSettings_param_background_dark_color_type_flags.2?int": "Default dark mode background color", + "object_botAppSettings_param_header_color_type_flags.3?int": "Default light mode header color", + "object_botAppSettings_param_header_dark_color_type_flags.4?int": "Default dark mode header color", + "object_starRefProgram": "Indo about an [affiliate program offered by a bot](https:\/\/core.telegram.org\/api\/bots\/referrals)", + "object_starRefProgram_param_bot_id_type_long": "ID of the bot that offers the program", + "object_starRefProgram_param_commission_permille_type_int": "An affiliate gets a commission of [starRefProgram](..\/constructors\/starRefProgram.md).`commission_permille`\u2030 [Telegram Stars](https:\/\/core.telegram.org\/api\/stars) for every mini app transaction made by users they refer", + "object_starRefProgram_param_duration_months_type_flags.0?int": "An affiliate gets a commission for every mini app transaction made by users they refer, for `duration_months` months after a referral link is imported, starting the bot for the first time", + "object_starRefProgram_param_end_date_type_flags.1?int": "Point in time (Unix timestamp) when the affiliate program will be closed (optional, if not set the affiliate program isn't scheduled to be closed)", + "object_starRefProgram_param_daily_revenue_per_user_type_flags.2?StarsAmount": "The amount of daily revenue per user in Telegram Stars of the bot that created the affiliate program.
To obtain the approximated revenue per referred user, multiply this value by `commission_permille` and divide by `1000`.", + "object_connectedBotStarRef": "Info about an [active affiliate program we have with a Mini App](https:\/\/core.telegram.org\/api\/bots\/referrals#becoming-an-affiliate)", + "object_connectedBotStarRef_param_revoked_type_flags.1?true": "If set, this affiliation was revoked by the affiliate using [payments.editConnectedStarRefBot](..\/methods\/payments.editConnectedStarRefBot.md), or by the affiliation program owner using [bots.updateStarRefProgram](..\/methods\/bots.updateStarRefProgram.md)", + "object_connectedBotStarRef_param_url_type_string": "[Referral link](https:\/\/core.telegram.org\/api\/links#referral-links) to be shared", + "object_connectedBotStarRef_param_date_type_int": "When did we affiliate with `bot_id`", + "object_connectedBotStarRef_param_bot_id_type_long": "ID of the mini app that created the affiliate program", + "object_connectedBotStarRef_param_commission_permille_type_int": "The number of Telegram Stars received by the affiliate for each 1000 Telegram Stars received by `bot_id`", + "object_connectedBotStarRef_param_duration_months_type_flags.0?int": "Number of months the program will be active; if not set, there is no expiration date.", + "object_connectedBotStarRef_param_participants_type_long": "The number of users that used the affiliate program", + "object_connectedBotStarRef_param_revenue_type_long": "The number of Telegram Stars that were earned by the affiliate program", + "object_payments.connectedStarRefBots": "Active [affiliations](https:\/\/core.telegram.org\/api\/bots\/referrals#becoming-an-affiliate)", + "object_payments.connectedStarRefBots_param_count_type_int": "Total number of active affiliations", + "object_payments.connectedStarRefBots_param_connected_bots_type_Vector<ConnectedBotStarRef>": "The affiliations", + "object_payments.connectedStarRefBots_param_users_type_Vector<User>": "Peers mentioned in `connected_bots`", + "object_payments.suggestedStarRefBots": "A list of suggested [mini apps](https:\/\/core.telegram.org\/api\/bots\/webapps) with available [affiliate programs](https:\/\/core.telegram.org\/api\/bots\/referrals)", + "object_payments.suggestedStarRefBots_param_count_type_int": "Total number of results (for pagination)", + "object_payments.suggestedStarRefBots_param_suggested_bots_type_Vector<StarRefProgram>": "Suggested affiliate programs (full or partial list to be fetched using pagination)", + "object_payments.suggestedStarRefBots_param_users_type_Vector<User>": "Peers mentioned in `suggested_bots`", + "object_payments.suggestedStarRefBots_param_next_offset_type_flags.0?string": "Next offset for [pagination](https:\/\/core.telegram.org\/api\/offsets)", + "object_starsAmount": "Describes a real (i.e. possibly decimal) amount of [Telegram Stars](https:\/\/core.telegram.org\/api\/stars).", + "object_starsAmount_param_amount_type_long": "The integer amount of Telegram Stars.", + "object_starsAmount_param_nanos_type_int": "The decimal amount of Telegram Stars, expressed as nanostars (i.e. 1 nanostar is equal to `1\/1'000'000'000`th (one billionth) of a Telegram Star).
This field may also be negative (the allowed range is -999999999 to 999999999).", + "object_starsTonAmount": "Describes an amount of toncoin in nanotons (i.e. `1\/1_000_000_000` of a toncoin).", + "object_starsTonAmount_param_amount_type_long": "The amount in nanotons.", + "object_messages.foundStickersNotModified": "No new stickers were found for the specified query", + "object_messages.foundStickersNotModified_param_next_offset_type_flags.0?int": "Offset for [pagination](https:\/\/core.telegram.org\/api\/offsets)", + "object_messages.foundStickers": "Found stickers", + "object_messages.foundStickers_param_next_offset_type_flags.0?int": "Offset for [pagination](https:\/\/core.telegram.org\/api\/offsets)", + "object_messages.foundStickers_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "object_messages.foundStickers_param_stickers_type_Vector<Document>": "Found stickers", + "object_botVerifierSettings": "Info about the current [verifier bot \u00bb](https:\/\/core.telegram.org\/api\/bots\/verification).", + "object_botVerifierSettings_param_can_modify_custom_description_type_flags.1?true": "Indicates whether the bot is allowed to set a custom description field for individual verified peers, different from the `custom_description` provided here.", + "object_botVerifierSettings_param_icon_type_long": "Verification icon", + "object_botVerifierSettings_param_company_type_string": "The name of the organization that provides the verification", + "object_botVerifierSettings_param_custom_description_type_flags.0?string": "An optional default description for the verification", + "object_botVerification": "Describes a [bot verification icon \u00bb](https:\/\/core.telegram.org\/api\/bots\/verification).", + "object_botVerification_param_bot_id_type_long": "ID of the bot that verified this peer", + "object_botVerification_param_icon_type_long": "Verification icon", + "object_botVerification_param_description_type_string": "Verification description", + "object_starGiftAttributeModel": "The model of a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "object_starGiftAttributeModel_param_name_type_string": "Name of the model", + "object_starGiftAttributeModel_param_document_type_Document": "The [sticker](https:\/\/core.telegram.org\/api\/stickers) representing the upgraded gift", + "object_starGiftAttributeModel_param_rarity_permille_type_int": "The number of upgraded gifts that receive this backdrop for each 1000 gifts upgraded.", + "object_starGiftAttributePattern": "A [sticker](https:\/\/core.telegram.org\/api\/stickers) applied on the backdrop of a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts) using a repeating pattern.", + "object_starGiftAttributePattern_param_name_type_string": "Name of the symbol", + "object_starGiftAttributePattern_param_document_type_Document": "The symbol", + "object_starGiftAttributePattern_param_rarity_permille_type_int": "The number of upgraded gifts that receive this backdrop for each 1000 gifts upgraded.", + "object_starGiftAttributeBackdrop": "The backdrop of a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "object_starGiftAttributeBackdrop_param_name_type_string": "Name of the backdrop", + "object_starGiftAttributeBackdrop_param_backdrop_id_type_int": "Unique ID of the backdrop", + "object_starGiftAttributeBackdrop_param_center_color_type_int": "Color of the center of the backdrop in RGB24 format.", + "object_starGiftAttributeBackdrop_param_edge_color_type_int": "Color of the edges of the backdrop in RGB24 format.", + "object_starGiftAttributeBackdrop_param_pattern_color_type_int": "Color of the [starGiftAttributePattern](..\/constructors\/starGiftAttributePattern.md) applied on the backdrop in RGB24 format.", + "object_starGiftAttributeBackdrop_param_text_color_type_int": "Color of the text on the backdrop in RGB24 format.", + "object_starGiftAttributeBackdrop_param_rarity_permille_type_int": "The number of upgraded gifts that receive this backdrop for each 1000 gifts upgraded.", + "object_starGiftAttributeOriginalDetails": "Info about the sender, receiver and message attached to the original [gift \u00bb](https:\/\/core.telegram.org\/api\/gifts), before it was upgraded to a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "object_starGiftAttributeOriginalDetails_param_sender_id_type_flags.0?Peer": "Original sender of the gift, absent if the gift was private.", + "object_starGiftAttributeOriginalDetails_param_recipient_id_type_Peer": "Original receiver of the gift.", + "object_starGiftAttributeOriginalDetails_param_date_type_int": "When was the gift sent.", + "object_starGiftAttributeOriginalDetails_param_message_type_flags.1?TextWithEntities": "Original message attached to the gift, if present.", + "object_payments.starGiftUpgradePreview": "A preview of the possible attributes (chosen randomly) a [gift \u00bb](https:\/\/core.telegram.org\/api\/gifts) can receive after upgrading it to a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts), see [here \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts) for more info.", + "object_payments.starGiftUpgradePreview_param_sample_attributes_type_Vector<StarGiftAttribute>": "Possible gift attributes", + "object_users.users": "Describes a list of users (or bots).", + "object_users.users_param_users_type_Vector<User>": "Users", + "object_users.usersSlice": "Describes a partial list of users.", + "object_users.usersSlice_param_count_type_int": "Total number of users (bigger than the users specified in `users`)", + "object_users.usersSlice_param_users_type_Vector<User>": "Subset of users.", + "object_payments.uniqueStarGift": "Represents a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "object_payments.uniqueStarGift_param_gift_type_StarGift": "The [starGiftUnique](..\/constructors\/starGiftUnique.md) constructor.", + "object_payments.uniqueStarGift_param_chats_type_Vector<Chat>": "Chats mentioned in the `gift` field.", + "object_payments.uniqueStarGift_param_users_type_Vector<User>": "Users mentioned in the `gift` field.", + "object_messages.webPagePreview": "Represents a webpage preview.", + "object_messages.webPagePreview_param_media_type_MessageMedia": "The [messageMediaWebPage](..\/constructors\/messageMediaWebPage.md) or a [messageMediaEmpty](..\/constructors\/messageMediaEmpty.md) if there is no preview.", + "object_messages.webPagePreview_param_chats_type_Vector<Chat>": "Chats mentioned in the `gift` field.", + "object_messages.webPagePreview_param_users_type_Vector<User>": "Users mentioned within the `media` object.", + "object_savedStarGift": "Represents a [gift](https:\/\/core.telegram.org\/api\/gifts) owned by a peer.", + "object_savedStarGift_param_name_hidden_type_flags.0?true": "If set, the gift sender in `from_id` and the `message` are set only for the receiver of the gift.", + "object_savedStarGift_param_unsaved_type_flags.5?true": "If set, the gift is **not** pinned on the user's profile.", + "object_savedStarGift_param_refunded_type_flags.9?true": "This gift was upgraded to a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts) and then re-downgraded to a regular gift because a request to refund the payment related to the upgrade was made, and the money was returned.", + "object_savedStarGift_param_can_upgrade_type_flags.10?true": "Only set for non-collectible gifts, if they can be upgraded to a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "object_savedStarGift_param_pinned_to_top_type_flags.12?true": "Whether this gift is pinned on top of the user's profile page.", + "object_savedStarGift_param_upgrade_separate_type_flags.17?true": "If set, someone already [separately pre-paid](https:\/\/core.telegram.org\/api\/gifts#prepaying-for-someone-elses-upgrade) for the upgrade of this gift.", + "object_savedStarGift_param_from_id_type_flags.1?Peer": "Sender of the gift (unset for anonymous gifts).", + "object_savedStarGift_param_date_type_int": "Reception date of the gift.", + "object_savedStarGift_param_gift_type_StarGift": "The collectible gift.", + "object_savedStarGift_param_message_type_flags.2?TextWithEntities": "Message attached to the gift.", + "object_savedStarGift_param_msg_id_type_flags.3?int": "For gifts received by users, ID to use in [inputSavedStarGiftUser](..\/constructors\/inputSavedStarGiftUser.md) constructors.", + "object_savedStarGift_param_saved_id_type_flags.11?long": "For gifts received by channels, ID to use in [inputSavedStarGiftChat](..\/constructors\/inputSavedStarGiftChat.md) constructors.", + "object_savedStarGift_param_convert_stars_type_flags.4?long": "For non-collectible gifts, the receiver of this gift may convert it to this many Telegram Stars, instead of displaying it on their profile page.", + "object_savedStarGift_param_upgrade_stars_type_flags.6?long": "**Only** for **pre-paid** non-collectible gifts, the number of Telegram Stars the sender has **already paid** to [convert the gift into a collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts) (this is different from the meaning of the flag in [messageActionStarGift](..\/constructors\/messageActionStarGift.md), where it signals the upgrade price for not yet upgraded gifts).", + "object_savedStarGift_param_can_export_at_type_flags.7?int": "If set, indicates that the current gift can't be [exported to the TON blockchain \u00bb](https:\/\/core.telegram.org\/api\/gifts#withdraw-a-collectible-gift-to-the-ton-blockchain) yet: the owner will be able to export it at the specified unixtime.", + "object_savedStarGift_param_transfer_stars_type_flags.8?long": "If set, indicates that the gift can be [transferred \u00bb](https:\/\/core.telegram.org\/api\/gifts#transferring-collectible-gifts) to another user by paying the specified amount of stars.", + "object_savedStarGift_param_can_transfer_at_type_flags.13?int": "If set, indicates that the current gift can't be [transferred \u00bb](https:\/\/core.telegram.org\/api\/gifts#transferring-collectible-gifts) yet: the owner will be able to transfer it at the specified unixtime.", + "object_savedStarGift_param_can_resell_at_type_flags.14?int": "If set, indicates that the current gift can't be [resold \u00bb](https:\/\/core.telegram.org\/api\/gifts#reselling-collectible-gifts) yet: the owner will be able to put it up for sale at the specified unixtime.", + "object_savedStarGift_param_collection_id_type_flags.15?Vector<int>": "IDs of the [collections \u00bb](https:\/\/core.telegram.org\/api\/gifts#gift-collections) that this gift is a part of.", + "object_savedStarGift_param_prepaid_upgrade_hash_type_flags.16?string": "[Hash to prepay for a gift upgrade separately \u00bb](https:\/\/core.telegram.org\/api\/gifts#prepaying-for-someone-elses-upgrade).", + "object_payments.savedStarGifts": "Represents a list of [gifts](https:\/\/core.telegram.org\/api\/gifts).", + "object_payments.savedStarGifts_param_count_type_int": "Total number of results (can be less than the returned `gifts`, in which case `next_offset` will be set).", + "object_payments.savedStarGifts_param_chat_notifications_enabled_type_flags.1?Bool": "Ternary value: can be not set, set&true, set&false.
Can only be set for channels we own: the value indicates whether we [enabled gift notifications](https:\/\/core.telegram.org\/api\/gifts#notifications-for-received-channel-gifts) for this channel.", + "object_payments.savedStarGifts_param_gifts_type_Vector<SavedStarGift>": "Gifts", + "object_payments.savedStarGifts_param_next_offset_type_flags.0?string": "Offset to pass to [payments.getSavedStarGifts](..\/methods\/payments.getSavedStarGifts.md) to fetch the next page of results.", + "object_payments.savedStarGifts_param_chats_type_Vector<Chat>": "Channels mentioned in `gifts`", + "object_payments.savedStarGifts_param_users_type_Vector<User>": "Users mentioned in `gifts`", + "object_inputSavedStarGiftUser": "A gift received in a private chat with another user.", + "object_inputSavedStarGiftUser_param_msg_id_type_int": "ID of the [messageService](..\/constructors\/messageService.md) with the [messageActionStarGift](..\/constructors\/messageActionStarGift.md) with the gift.", + "object_inputSavedStarGiftChat": "A gift received by a channel we own.", + "object_inputSavedStarGiftChat_param_peer_type_InputPeer": "The channel.", + "object_inputSavedStarGiftChat_param_saved_id_type_long": "ID of the gift, must be the `saved_id` of a [messageActionStarGift](..\/constructors\/messageActionStarGift.md)\/[messageActionStarGiftUnique](..\/constructors\/messageActionStarGiftUnique.md) constructor.", + "object_inputSavedStarGiftSlug": "Points to a [collectible gift obtained from a collectible gift link \u00bb](https:\/\/core.telegram.org\/api\/links#collectible-gift-link).", + "object_inputSavedStarGiftSlug_param_slug_type_string": "Slug from the link.", + "object_payments.starGiftWithdrawalUrl": "A URL that can be used to import the exported NFT on Fragment.", + "object_payments.starGiftWithdrawalUrl_param_url_type_string": "The URL to open.", + "object_paidReactionPrivacyDefault": "Uses the default reaction privacy, set using [messages.togglePaidReactionPrivacy](..\/methods\/messages.togglePaidReactionPrivacy.md).", + "object_paidReactionPrivacyAnonymous": "Send paid reactions anonymously.", + "object_paidReactionPrivacyPeer": "Send paid reactions as the specified peer, fetched using [channels.getSendAs](..\/methods\/channels.getSendAs.md).", + "object_paidReactionPrivacyPeer_param_peer_type_InputPeer": "The peer to send reactions as.", + "object_account.paidMessagesRevenue": "Total number of non-refunded [Telegram Stars](https:\/\/core.telegram.org\/api\/stars) a user has spent on sending us messages either directly or through a channel, see [here \u00bb](https:\/\/core.telegram.org\/api\/paid-messages) for more info on paid messages.", + "object_account.paidMessagesRevenue_param_stars_amount_type_long": "Amount in [Stars](https:\/\/core.telegram.org\/api\/stars).", + "object_requirementToContactEmpty": "This user can be freely contacted.", + "object_requirementToContactPremium": "This user requires us to buy a [Premium](https:\/\/core.telegram.org\/api\/premium) subscription in order to contact them.", + "object_requirementToContactPaidMessages": "This user requires us to pay the specified amount of [Telegram Stars](https:\/\/core.telegram.org\/api\/stars) to send them a message, see [here \u00bb](https:\/\/core.telegram.org\/api\/paid-messages) for the full flow.", + "object_requirementToContactPaidMessages_param_stars_amount_type_long": "The required amount of [Telegram Stars](https:\/\/core.telegram.org\/api\/stars).", + "object_businessBotRights": "[Business bot rights](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots).", + "object_businessBotRights_param_reply_type_flags.0?true": "Whether the bot can send and edit messages in private chats that had incoming messages in the last 24 hours.", + "object_businessBotRights_param_read_messages_type_flags.1?true": "Whether the bot can mark incoming private messages as read.", + "object_businessBotRights_param_delete_sent_messages_type_flags.2?true": "Whether the bot can delete messages sent by the bot.", + "object_businessBotRights_param_delete_received_messages_type_flags.3?true": "Whether the bot can delete received private messages in managed chats.", + "object_businessBotRights_param_edit_name_type_flags.4?true": "Whether the bot can edit the first and last name of the business account.", + "object_businessBotRights_param_edit_bio_type_flags.5?true": "Whether the bot can edit the bio of the business account.", + "object_businessBotRights_param_edit_profile_photo_type_flags.6?true": "Whether the bot can edit the profile photo of the business account.", + "object_businessBotRights_param_edit_username_type_flags.7?true": "Whether the bot can edit the username of the business account.", + "object_businessBotRights_param_view_gifts_type_flags.8?true": "Whether the bot can view gifts and the amount of Telegram Stars owned by the business account.", + "object_businessBotRights_param_sell_gifts_type_flags.9?true": "Whether the bot can convert regular gifts owned by the business account to Telegram Stars.", + "object_businessBotRights_param_change_gift_settings_type_flags.10?true": "Whether the bot can change the privacy settings pertaining to gifts for the business account.", + "object_businessBotRights_param_transfer_and_upgrade_gifts_type_flags.11?true": "Whether the bot can transfer and upgrade gifts owned by the business account.", + "object_businessBotRights_param_transfer_stars_type_flags.12?true": "Whether the bot can transfer Telegram Stars received by the business account to its own account, or use them to upgrade and transfer gifts.", + "object_businessBotRights_param_manage_stories_type_flags.13?true": "Whether the bot can post, edit and delete stories on behalf of the business account.", + "object_disallowedGiftsSettings": "Disallow the reception of specific [gift](https:\/\/core.telegram.org\/api\/gifts) types.", + "object_disallowedGiftsSettings_param_disallow_unlimited_stargifts_type_flags.0?true": "Disallow the reception of gifts with an unlimited supply (those with the [starGift](..\/constructors\/starGift.md).`limited` flag **not** set).", + "object_disallowedGiftsSettings_param_disallow_limited_stargifts_type_flags.1?true": "Disallow the reception of limited-supply gifts (those with the [starGift](..\/constructors\/starGift.md).`limited` flag set).", + "object_disallowedGiftsSettings_param_disallow_unique_stargifts_type_flags.2?true": "Disallow the reception of [collectible gifts \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "object_disallowedGiftsSettings_param_disallow_premium_gifts_type_flags.3?true": "Disallow the reception of [gifted Telegram Premium subscriptions \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "object_sponsoredPeer": "A sponsored peer.", + "object_sponsoredPeer_param_random_id_type_bytes": "ID of the sponsored peer, to be passed to [messages.viewSponsoredMessage](..\/methods\/messages.viewSponsoredMessage.md), [messages.clickSponsoredMessage](..\/methods\/messages.clickSponsoredMessage.md) or [messages.reportSponsoredMessage](..\/methods\/messages.reportSponsoredMessage.md) (the same methods used for [sponsored messages &raquo](https:\/\/core.telegram.org\/api\/sponsored-messages)).", + "object_sponsoredPeer_param_peer_type_Peer": "The sponsored peer.", + "object_sponsoredPeer_param_sponsor_info_type_flags.0?string": "If set, contains additional information about the sponsor to be shown along with the peer.", + "object_sponsoredPeer_param_additional_info_type_flags.1?string": "If set, contains additional information about the sponsored message to be shown along with the peer.", + "object_contacts.sponsoredPeersEmpty": "There are no sponsored peers for this query.", + "object_contacts.sponsoredPeers": "Sponsored peers.", + "object_contacts.sponsoredPeers_param_peers_type_Vector<SponsoredPeer>": "Sponsored peers.", + "object_contacts.sponsoredPeers_param_chats_type_Vector<Chat>": "Info about sponsored chats and channels", + "object_contacts.sponsoredPeers_param_users_type_Vector<User>": "Info about sponsored users", + "object_starGiftAttributeIdModel": "The ID of a model of a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "object_starGiftAttributeIdModel_param_document_id_type_long": "The [sticker](https:\/\/core.telegram.org\/api\/stickers) representing the upgraded gift", + "object_starGiftAttributeIdPattern": "The ID of a pattern of a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "object_starGiftAttributeIdPattern_param_document_id_type_long": "The [sticker](https:\/\/core.telegram.org\/api\/stickers) representing the symbol", + "object_starGiftAttributeIdBackdrop": "The ID of a backdrop of a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "object_starGiftAttributeIdBackdrop_param_backdrop_id_type_int": "Unique ID of the backdrop.", + "object_starGiftAttributeCounter": "Indicates the total number of gifts that have the specified attribute.", + "object_starGiftAttributeCounter_param_attribute_type_StarGiftAttributeId": "The attribute (just the ID, without the attribute itself).", + "object_starGiftAttributeCounter_param_count_type_int": "Total number of gifts with this attribute.", + "object_payments.resaleStarGifts": "List of gifts currently on [resale \u00bb](https:\/\/core.telegram.org\/api\/gifts#reselling-collectible-gifts).", + "object_payments.resaleStarGifts_param_count_type_int": "Total number of results.", + "object_payments.resaleStarGifts_param_gifts_type_Vector<StarGift>": "Collectible gifts on resale (may be less than `count`, in which case `next_offset` will be set).", + "object_payments.resaleStarGifts_param_next_offset_type_flags.0?string": "Offset for pagination, pass this to [payments.getResaleStarGifts](..\/methods\/payments.getResaleStarGifts.md).`offset` to fetch the next results.", + "object_payments.resaleStarGifts_param_attributes_type_flags.1?Vector<StarGiftAttribute>": "Possible gift attributes, only set if [payments.getResaleStarGifts](..\/methods\/payments.getResaleStarGifts.md).`attributes_hash` is set (on the first call, it must be equal to `0`).", + "object_payments.resaleStarGifts_param_attributes_hash_type_flags.1?long": "Hash of the `attributes` field, pass this to [payments.getResaleStarGifts](..\/methods\/payments.getResaleStarGifts.md).`attributes_hash` to avoid returning any attributes (flag not set) if they haven't changed.", + "object_payments.resaleStarGifts_param_chats_type_Vector<Chat>": "Chats mentioned in the attributes.", + "object_payments.resaleStarGifts_param_counters_type_flags.2?Vector<StarGiftAttributeCounter>": "Indicates the total number of gifts that have a specific attribute, only set if [payments.getResaleStarGifts](..\/methods\/payments.getResaleStarGifts.md).`offset` is empty (since this field is not related to the current result page but to all of them, it's only returned on the first page).", + "object_payments.resaleStarGifts_param_users_type_Vector<User>": "Users mentioned in the attributes.", + "object_stories.canSendStoryCount": "Contains the number of available active story slots (equal to the value of the [`story_expiring_limit_*` client configuration parameter](https:\/\/core.telegram.org\/api\/config#story-expiring-limit-default) minus the number of currently active stories).", + "object_stories.canSendStoryCount_param_count_remains_type_int": "Remaining active story slots.", + "object_pendingSuggestion": "Represents a [custom pending suggestion \u00bb](https:\/\/core.telegram.org\/api\/config#custom-suggestions).", + "object_pendingSuggestion_param_suggestion_type_string": "The suggestion ID, can be passed to [help.dismissSuggestion](..\/methods\/help.dismissSuggestion.md).", + "object_pendingSuggestion_param_title_type_TextWithEntities": "Title of the suggestion.", + "object_pendingSuggestion_param_description_type_TextWithEntities": "Body of the suggestion.", + "object_pendingSuggestion_param_url_type_string": "URL to open when the user clicks on the suggestion.", + "object_todoItem": "An item of a [todo list \u00bb](https:\/\/core.telegram.org\/api\/todo).", + "object_todoItem_param_id_type_int": "ID of the item, a positive (non-zero) integer unique within the current list.", + "object_todoItem_param_title_type_TextWithEntities": "Text of the item, maximum length equal to [todo\\_item\\_length\\_max \u00bb](https:\/\/core.telegram.org\/api\/config#todo-item-length-max).", + "object_todoList": "Represents a [todo list \u00bb](https:\/\/core.telegram.org\/api\/todo).", + "object_todoList_param_others_can_append_type_flags.0?true": "If set, users different from the creator of the list can append items to the list.", + "object_todoList_param_others_can_complete_type_flags.1?true": "If set, users different from the creator of the list can complete items in the list.", + "object_todoList_param_title_type_TextWithEntities": "Title of the todo list, maximum length equal to [todo\\_title\\_length\\_max \u00bb](https:\/\/core.telegram.org\/api\/config#todo-title-length-max).", + "object_todoList_param_list_type_Vector<TodoItem>": "Items of the list.", + "object_todoCompletion": "A completed [todo list \u00bb](https:\/\/core.telegram.org\/api\/todo) item.", + "object_todoCompletion_param_id_type_int": "The ID of the completed item.", + "object_todoCompletion_param_completed_by_type_long": "ID of the user that completed the item.", + "object_todoCompletion_param_date_type_int": "When was the item completed.", + "object_suggestedPost": "Contains info about a [suggested post \u00bb](https:\/\/core.telegram.org\/api\/suggested-posts).", + "object_suggestedPost_param_accepted_type_flags.1?true": "Whether the suggested post was accepted.", + "object_suggestedPost_param_rejected_type_flags.2?true": "Whether the suggested post was rejected.", + "object_suggestedPost_param_price_type_flags.3?StarsAmount": "Price of the suggested post.", + "object_suggestedPost_param_schedule_date_type_flags.0?int": "Scheduling date.", + "object_starsRating": "Represents the profile's [star rating, see here \u00bb](https:\/\/core.telegram.org\/api\/stars#star-rating) for more info.", + "object_starsRating_param_level_type_int": "The current level, may be negative.", + "object_starsRating_param_current_level_stars_type_long": "The numerical value of the rating required for the current level.", + "object_starsRating_param_stars_type_long": "Numerical value of the current rating.", + "object_starsRating_param_next_level_stars_type_flags.0?long": "The numerical value of the rating required for the next level.", + "object_starGiftCollection": "Represents a [star gift collection \u00bb](https:\/\/core.telegram.org\/api\/gifts#gift-collections).", + "object_starGiftCollection_param_collection_id_type_int": "The ID of the collection.", + "object_starGiftCollection_param_title_type_string": "Title of the collection.", + "object_starGiftCollection_param_icon_type_flags.0?Document": "Optional icon for the collection, taken from the first gift in the collection.", + "object_starGiftCollection_param_gifts_count_type_int": "Number of gifts in the collection.", + "object_starGiftCollection_param_hash_type_long": "Field to use **instead of `collection_id`** when generating the hash to pass to [payments.getStarGiftCollections](..\/methods\/payments.getStarGiftCollections.md).", + "object_payments.starGiftCollectionsNotModified": "The list of [star gift collections \u00bb](https:\/\/core.telegram.org\/api\/gifts#gift-collections) hasn't changed.", + "object_payments.starGiftCollections": "Represents a list of [star gift collections \u00bb](https:\/\/core.telegram.org\/api\/gifts#gift-collections).", + "object_payments.starGiftCollections_param_collections_type_Vector<StarGiftCollection>": "Star gift collections.", + "object_storyAlbum": "Represents a [story album \u00bb](https:\/\/core.telegram.org\/api\/stories#story-albums).", + "object_storyAlbum_param_album_id_type_int": "ID of the album.", + "object_storyAlbum_param_title_type_string": "Name of the album.", + "object_storyAlbum_param_icon_photo_type_flags.0?Photo": "Photo from the first story of the album, if it's a photo.", + "object_storyAlbum_param_icon_video_type_flags.1?Document": "Video from the first story of the album, if it's a video.", + "object_stories.albumsNotModified": "The [story album list \u00bb](https:\/\/core.telegram.org\/api\/stories#story-albums) hasn't changed.", + "object_stories.albums": "[Story albums \u00bb](https:\/\/core.telegram.org\/api\/stories#story-albums).", + "object_stories.albums_param_hash_type_long": "Hash to pass to [stories.getAlbums](..\/methods\/stories.getAlbums.md) to avoid returning any results if they haven't changed.", + "object_stories.albums_param_albums_type_Vector<StoryAlbum>": "The albums.", + "object_searchPostsFlood": "Indicates if the specified [global post search \u00bb](https:\/\/core.telegram.org\/api\/search#posts-tab) requires payment.", + "object_searchPostsFlood_param_query_is_free_type_flags.0?true": "The specified query is free (and it **will not use up free search slots**).", + "object_searchPostsFlood_param_total_daily_type_int": "Total number of daily free search slots.", + "object_searchPostsFlood_param_remains_type_int": "Remaining number of free search slots.", + "object_searchPostsFlood_param_wait_till_type_flags.1?int": "If there are no more search slots, specifies the unixtime when more search slots will be available.", + "object_searchPostsFlood_param_stars_amount_type_long": "The number of [Telegram Stars](https:\/\/core.telegram.org\/api\/stars) to pay for each non-free search.", + "object_payments.uniqueStarGiftValueInfo": "Information about the value of a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "object_payments.uniqueStarGiftValueInfo_param_last_sale_on_fragment_type_flags.1?true": "If set, the last sale was completed on Fragment.", + "object_payments.uniqueStarGiftValueInfo_param_value_is_average_type_flags.6?true": "If set, the `value` is calculated from the average value of sold gifts of the same type. Otherwise, it is based on the sale price of the gift.", + "object_payments.uniqueStarGiftValueInfo_param_currency_type_string": "Three-letter ISO 4217 [currency](https:\/\/core.telegram.org\/bots\/payments#supported-currencies) code (a localized fiat currency used to represent prices and price estimations in this constructor).", + "object_payments.uniqueStarGiftValueInfo_param_value_type_long": "Estimated value of the gift, in the smallest unit of the currency specified in `currency`.", + "object_payments.uniqueStarGiftValueInfo_param_initial_sale_date_type_int": "Initial purchase date of the gift.", + "object_payments.uniqueStarGiftValueInfo_param_initial_sale_stars_type_long": "Initial purchase price in Stars.", + "object_payments.uniqueStarGiftValueInfo_param_initial_sale_price_type_long": "Initial purchase price in the smallest unit of the currency specified in `currency` (automatically converted from `initial_sale_stars`).", + "object_payments.uniqueStarGiftValueInfo_param_last_sale_date_type_flags.0?int": "Last resale date of the gift.", + "object_payments.uniqueStarGiftValueInfo_param_last_sale_price_type_flags.0?long": "Last resale price, in the smallest unit of the currency specified in `currency`.", + "object_payments.uniqueStarGiftValueInfo_param_floor_price_type_flags.2?long": "The current minimum price of collectible gifts of the same type, in the smallest unit of the currency specified in `currency`.", + "object_payments.uniqueStarGiftValueInfo_param_average_price_type_flags.3?long": "The current average sale price of collectible gifts of the same type, in the smallest unit of the currency specified in `currency`.", + "object_payments.uniqueStarGiftValueInfo_param_listed_count_type_flags.4?int": "Number of gifts of the same type currently being resold on Telegram.", + "object_payments.uniqueStarGiftValueInfo_param_fragment_listed_count_type_flags.5?int": "Number of gifts of the same type currently being resold on fragment.", + "object_payments.uniqueStarGiftValueInfo_param_fragment_listed_url_type_flags.5?string": "Fragment link to the listing of gifts of the same type currently being resold on fragment.", + "object_profileTabPosts": "Represents the [stories](https:\/\/core.telegram.org\/api\/stories) tab of a profile page.", + "object_profileTabGifts": "Represents the [gifts](https:\/\/core.telegram.org\/api\/gifts) tab of a profile page.", + "object_profileTabMedia": "Represents the media tab of a profile page.", + "object_profileTabFiles": "Represents the shared files tab of a profile.", + "object_profileTabMusic": "Represents the [music](https:\/\/core.telegram.org\/api\/profile#music) tab of a profile page.", + "object_profileTabVoice": "Represents the voice messages tab of a profile page.", + "object_profileTabLinks": "Represents the shared links tab of a profile page.", + "object_profileTabGifs": "Represents the gifs tab of a profile page.", + "object_users.savedMusicNotModified": "This subset of the songs currently pinned on a user's profile hasn't changed, see [here \u00bb](https:\/\/core.telegram.org\/api\/profile#music) for more info.", + "object_users.savedMusicNotModified_param_count_type_int": "Total number of songs on the user's profile.", + "object_users.savedMusic": "List of songs currently pinned on a user's profile, see [here \u00bb](https:\/\/core.telegram.org\/api\/profile#music) for more info.", + "object_users.savedMusic_param_count_type_int": "Total number of songs (can be bigger than `documents` depending on the passed `limit`, and the default maximum `limit` in which case pagination is required).", + "object_users.savedMusic_param_documents_type_Vector<Document>": "Songs.", + "object_account.savedMusicIdsNotModified": "The list of IDs of songs ([document](..\/constructors\/document.md).`id`s) currently pinned on our profile hasn't changed.", + "object_account.savedMusicIds": "List of IDs of songs ([document](..\/constructors\/document.md).`id`s) currently pinned on our profile, see [here \u00bb](https:\/\/core.telegram.org\/api\/profile#music) for more info.", + "object_account.savedMusicIds_param_ids_type_Vector<long>": "Full list of [document](..\/constructors\/document.md).`id`s", + "object_payments.checkCanSendGiftResultOk": "The specified gift can be sent.", + "object_payments.checkCanSendGiftResultFail": "The specified gift cannot be sent yet for the specified reason.", + "object_payments.checkCanSendGiftResultFail_param_reason_type_TextWithEntities": "The reason why it can't be sent yet.", + "object_inputChatThemeEmpty": "Remove any currently configured theme.", + "object_inputChatTheme": "Set an emoji-based chat theme, returned by [account.getChatThemes](..\/methods\/account.getChatThemes.md).", + "object_inputChatTheme_param_emoticon_type_string": "The emoji.", + "object_inputChatThemeUniqueGift": "Set a theme based on an owned [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts), returned by [account.getUniqueGiftChatThemes](..\/methods\/account.getUniqueGiftChatThemes.md).", + "object_inputChatThemeUniqueGift_param_slug_type_string": "The slug from [starGiftUnique](..\/constructors\/starGiftUnique.md).`slug`.", + "method_invokeAfterMsg": "Invokes a query after successful completion of one of the previous queries.", + "method_invokeAfterMsg_param_msg_id_type_long": "Message identifier on which a current query depends", + "method_invokeAfterMsg_param_query_type_!X": "The query itself", + "method_invokeAfterMsgs": "Invokes a query after a successful completion of previous queries", + "method_invokeAfterMsgs_param_msg_ids_type_Vector<long>": "List of messages on which a current query depends", + "method_invokeAfterMsgs_param_query_type_!X": "The query itself", + "method_initConnection": "Initialize connection", + "method_initConnection_param_api_id_type_int": "Application identifier (see. [App configuration](https:\/\/core.telegram.org\/myapp))", + "method_initConnection_param_device_model_type_string": "Device model", + "method_initConnection_param_system_version_type_string": "Operation system version", + "method_initConnection_param_app_version_type_string": "Application version", + "method_initConnection_param_system_lang_code_type_string": "Code for the language used on the device's OS, ISO 639-1 standard", + "method_initConnection_param_lang_pack_type_string": "Platform identifier (i.e. `android`, `tdesktop`, etc).", + "method_initConnection_param_lang_code_type_string": "Either an ISO 639-1 language code or a language pack name obtained from a [language pack link](https:\/\/core.telegram.org\/api\/links#language-pack-links).", + "method_initConnection_param_proxy_type_flags.0?InputClientProxy": "Info about an MTProto proxy", + "method_initConnection_param_params_type_flags.1?JSONValue": "Additional initConnection parameters.
For now, only the `tz_offset` field is supported, for specifying the timezone offset in seconds.", + "method_initConnection_param_query_type_!X": "The query itself", + "method_invokeWithLayer": "Invoke the specified query using the specified API [layer](https:\/\/core.telegram.org\/api\/invoking#layers)", + "method_invokeWithLayer_param_layer_type_int": "The layer to use", + "method_invokeWithLayer_param_query_type_!X": "The query", + "method_invokeWithoutUpdates": "Invoke a request without subscribing the used connection for [updates](https:\/\/core.telegram.org\/api\/updates) (this is enabled by default for [file queries](https:\/\/core.telegram.org\/api\/files)).", + "method_invokeWithoutUpdates_param_query_type_!X": "The query", + "method_invokeWithMessagesRange": "Invoke with the given message range", + "method_invokeWithMessagesRange_param_range_type_MessageRange": "Message range", + "method_invokeWithMessagesRange_param_query_type_!X": "Query", + "method_invokeWithTakeout": "Invoke a method within a [takeout session, see here \u00bb for more info](https:\/\/core.telegram.org\/api\/takeout).", + "method_invokeWithTakeout_param_takeout_id_type_long": "[Takeout session ID \u00bb](https:\/\/core.telegram.org\/api\/takeout)", + "method_invokeWithTakeout_param_query_type_!X": "Query", + "method_invokeWithBusinessConnection": "Invoke a method using a [Telegram Business Bot connection, see here \u00bb for more info, including a list of the methods that can be wrapped in this constructor](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots).\n\nMake sure to always send queries wrapped in a `invokeWithBusinessConnection` to the datacenter ID, specified in the `dc_id` field of the [botBusinessConnection](..\/constructors\/botBusinessConnection.md) that is being used.", + "method_invokeWithBusinessConnection_param_connection_id_type_string": "Business connection ID.", + "method_invokeWithBusinessConnection_param_query_type_!X": "The actual query.", + "method_invokeWithGooglePlayIntegrity": "Official clients only, invoke with Google Play Integrity token.", + "method_invokeWithGooglePlayIntegrity_param_nonce_type_string": "Nonce.", + "method_invokeWithGooglePlayIntegrity_param_token_type_string": "Token.", + "method_invokeWithGooglePlayIntegrity_param_query_type_!X": "Query.", + "method_invokeWithApnsSecret": "Official clients only, invoke with Apple push verification.", + "method_invokeWithApnsSecret_param_nonce_type_string": "Nonce.", + "method_invokeWithApnsSecret_param_secret_type_string": "Secret.", + "method_invokeWithApnsSecret_param_query_type_!X": "Query.", + "method_invokeWithReCaptcha": "Official clients only: re-execute a method call that required reCAPTCHA verification via a `RECAPTCHA_CHECK_%s__%s`, where the first placeholder is the `action`, and the second one is the reCAPTCHA key ID.", + "method_invokeWithReCaptcha_param_token_type_string": "reCAPTCHA token received after verification.", + "method_invokeWithReCaptcha_param_query_type_!X": "The original method call.", + "method_auth.sendCode": "Send the verification code for login", + "method_auth.sendCode_param_phone_number_type_string": "Phone number in international format", + "method_auth.sendCode_param_api_id_type_int": "Application identifier (see [App configuration](https:\/\/core.telegram.org\/myapp))", + "method_auth.sendCode_param_api_hash_type_string": "Application secret hash (see [App configuration](https:\/\/core.telegram.org\/myapp))", + "method_auth.sendCode_param_settings_type_CodeSettings": "Settings for the code type to send", + "method_auth.signUp": "Registers a validated phone number in the system.", + "method_auth.signUp_param_no_joined_notifications_type_flags.0?true": "If set, users on Telegram that have already added `phone_number` to their contacts will *not* receive signup notifications about this user.", + "method_auth.signUp_param_phone_number_type_string": "Phone number in the international format", + "method_auth.signUp_param_phone_code_hash_type_string": "SMS-message ID", + "method_auth.signUp_param_first_name_type_string": "New user first name", + "method_auth.signUp_param_last_name_type_string": "New user last name", + "method_auth.signIn": "Signs in a user with a validated phone number.", + "method_auth.signIn_param_phone_number_type_string": "Phone number in the international format", + "method_auth.signIn_param_phone_code_hash_type_string": "SMS-message ID, obtained from [auth.sendCode](..\/methods\/auth.sendCode.md)", + "method_auth.signIn_param_phone_code_type_flags.0?string": "Valid numerical code from the SMS-message", + "method_auth.signIn_param_email_verification_type_flags.1?EmailVerification": "Email verification code or token", + "method_auth.logOut": "Logs out the user.", + "method_auth.resetAuthorizations": "Terminates all user's authorized sessions except for the current one.\n\nAfter calling this method it is necessary to reregister the current device using the method [account.registerDevice](..\/methods\/account.registerDevice.md)", + "method_auth.exportAuthorization": "Returns data for copying authorization to another data-center.", + "method_auth.exportAuthorization_param_dc_id_type_int": "Number of a target data-center", + "method_auth.importAuthorization": "Logs in a user using a key transmitted from his native data-center.", + "method_auth.importAuthorization_param_id_type_long": "User ID", + "method_auth.importAuthorization_param_bytes_type_bytes": "Authorization key", + "method_auth.bindTempAuthKey": "Binds a temporary authorization key `temp_auth_key_id` to the permanent authorization key `perm_auth_key_id`. Each permanent key may only be bound to one temporary key at a time, binding a new temporary key overwrites the previous one.\n\nFor more information, see [Perfect Forward Secrecy](https:\/\/core.telegram.org\/api\/pfs).", + "method_auth.bindTempAuthKey_param_perm_auth_key_id_type_long": "Permanent auth\\_key\\_id to bind to", + "method_auth.bindTempAuthKey_param_nonce_type_long": "Random long from [Binding message contents](#binding-message-contents)", + "method_auth.bindTempAuthKey_param_expires_at_type_int": "Unix timestamp to invalidate temporary key, see [Binding message contents](#binding-message-contents)", + "method_auth.bindTempAuthKey_param_encrypted_message_type_bytes": "See [Generating encrypted\\_message](#generating-encrypted-message)", + "method_auth.importBotAuthorization": "Login as a bot", + "method_auth.importBotAuthorization_param_api_id_type_int": "Application identifier (see. [App configuration](https:\/\/core.telegram.org\/myapp))", + "method_auth.importBotAuthorization_param_api_hash_type_string": "Application identifier hash (see. [App configuration](https:\/\/core.telegram.org\/myapp))", + "method_auth.importBotAuthorization_param_bot_auth_token_type_string": "Bot token (see [bots](https:\/\/core.telegram.org\/bots))", + "method_auth.checkPassword": "Try logging to an account protected by a [2FA password](https:\/\/core.telegram.org\/api\/srp).", + "method_auth.checkPassword_param_password_type_InputCheckPasswordSRP": "The account's password (see [SRP](https:\/\/core.telegram.org\/api\/srp))", + "method_auth.requestPasswordRecovery": "Request recovery code of a [2FA password](https:\/\/core.telegram.org\/api\/srp), only for accounts with a [recovery email configured](https:\/\/core.telegram.org\/api\/srp#email-verification).", + "method_auth.recoverPassword": "Reset the [2FA password](https:\/\/core.telegram.org\/api\/srp) using the recovery code sent using [auth.requestPasswordRecovery](..\/methods\/auth.requestPasswordRecovery.md).", + "method_auth.recoverPassword_param_code_type_string": "Code received via email", + "method_auth.recoverPassword_param_new_settings_type_flags.0?account.PasswordInputSettings": "New password", + "method_auth.resendCode": "Resend the login code via another medium, the phone code type is determined by the return value of the previous auth.sendCode\/auth.resendCode: see [login](https:\/\/core.telegram.org\/api\/auth) for more info.", + "method_auth.resendCode_param_phone_number_type_string": "The phone number", + "method_auth.resendCode_param_phone_code_hash_type_string": "The phone code hash obtained from [auth.sendCode](..\/methods\/auth.sendCode.md)", + "method_auth.resendCode_param_reason_type_flags.0?string": "Official clients only, used if the device integrity verification failed, and no secret could be obtained to invoke [auth.requestFirebaseSms](..\/methods\/auth.requestFirebaseSms.md): in this case, the device integrity verification failure reason must be passed here.", + "method_auth.cancelCode": "Cancel the login verification code", + "method_auth.cancelCode_param_phone_number_type_string": "Phone number", + "method_auth.cancelCode_param_phone_code_hash_type_string": "Phone code hash from [auth.sendCode](..\/methods\/auth.sendCode.md)", + "method_auth.dropTempAuthKeys": "Delete all temporary authorization keys **except for** the ones specified", + "method_auth.dropTempAuthKeys_param_except_auth_keys_type_Vector<long>": "The auth keys that **shouldn't** be dropped.", + "method_auth.exportLoginToken": "Generate a login token, for [login via QR code](https:\/\/core.telegram.org\/api\/qr-login). \nThe generated login token should be encoded using base64url, then shown as a `tg:\/\/login?token=base64encodedtoken` [deep link \u00bb](https:\/\/core.telegram.org\/api\/links#qr-code-login-links) in the QR code.\n\nFor more info, see [login via QR code](https:\/\/core.telegram.org\/api\/qr-login).", + "method_auth.exportLoginToken_param_api_id_type_int": "Application identifier (see. [App configuration](https:\/\/core.telegram.org\/myapp))", + "method_auth.exportLoginToken_param_api_hash_type_string": "Application identifier hash (see. [App configuration](https:\/\/core.telegram.org\/myapp))", + "method_auth.exportLoginToken_param_except_ids_type_Vector<long>": "List of already logged-in user IDs, to prevent logging in twice with the same user", + "method_auth.importLoginToken": "Login using a redirected login token, generated in case of DC mismatch during [QR code login](https:\/\/core.telegram.org\/api\/qr-login).\n\nFor more info, see [login via QR code](https:\/\/core.telegram.org\/api\/qr-login).", + "method_auth.importLoginToken_param_token_type_bytes": "Login token", + "method_auth.acceptLoginToken": "Accept QR code login token, logging in the app that generated it.\n\nReturns info about the new session.\n\nFor more info, see [login via QR code](https:\/\/core.telegram.org\/api\/qr-login).", + "method_auth.acceptLoginToken_param_token_type_bytes": "Login token embedded in QR code, for more info, see [login via QR code](https:\/\/core.telegram.org\/api\/qr-login).", + "method_auth.checkRecoveryPassword": "Check if the [2FA recovery code](https:\/\/core.telegram.org\/api\/srp) sent using [auth.requestPasswordRecovery](..\/methods\/auth.requestPasswordRecovery.md) is valid, before passing it to [auth.recoverPassword](..\/methods\/auth.recoverPassword.md).", + "method_auth.checkRecoveryPassword_param_code_type_string": "Code received via email", + "method_auth.importWebTokenAuthorization": "Login by importing an authorization token", + "method_auth.importWebTokenAuthorization_param_api_id_type_int": "[API ID](https:\/\/core.telegram.org\/api\/obtaining_api_id)", + "method_auth.importWebTokenAuthorization_param_api_hash_type_string": "[API hash](https:\/\/core.telegram.org\/api\/obtaining_api_id)", + "method_auth.importWebTokenAuthorization_param_web_auth_token_type_string": "The authorization token", + "method_auth.requestFirebaseSms": "Request an SMS code via Firebase.", + "method_auth.requestFirebaseSms_param_phone_number_type_string": "Phone number", + "method_auth.requestFirebaseSms_param_phone_code_hash_type_string": "Phone code hash returned by [auth.sendCode](..\/methods\/auth.sendCode.md)", + "method_auth.requestFirebaseSms_param_safety_net_token_type_flags.0?string": "On Android, a JWS object obtained as described in the [auth documentation \u00bb](https:\/\/core.telegram.org\/api\/auth)", + "method_auth.requestFirebaseSms_param_play_integrity_token_type_flags.2?string": "On Android, an object obtained as described in the [auth documentation \u00bb](https:\/\/core.telegram.org\/api\/auth)", + "method_auth.requestFirebaseSms_param_ios_push_secret_type_flags.1?string": "Secret token received via an apple push notification", + "method_auth.resetLoginEmail": "Reset the [login email \u00bb](https:\/\/core.telegram.org\/api\/auth#email-verification).", + "method_auth.resetLoginEmail_param_phone_number_type_string": "Phone number of the account", + "method_auth.resetLoginEmail_param_phone_code_hash_type_string": "Phone code hash, obtained as described in the [documentation \u00bb](https:\/\/core.telegram.org\/api\/auth)", + "method_auth.reportMissingCode": "Official apps only, reports that the SMS authentication code wasn't delivered.", + "method_auth.reportMissingCode_param_phone_number_type_string": "Phone number where we were supposed to receive the code", + "method_auth.reportMissingCode_param_phone_code_hash_type_string": "The phone code hash obtained from [auth.sendCode](..\/methods\/auth.sendCode.md)", + "method_auth.reportMissingCode_param_mnc_type_string": "[MNC](https:\/\/en.wikipedia.org\/wiki\/Mobile_country_code) of the current network operator.", + "method_account.registerDevice": "Register device to receive [PUSH notifications](https:\/\/core.telegram.org\/api\/push-updates)", + "method_account.registerDevice_param_no_muted_type_flags.0?true": "Avoid receiving (silent and invisible background) notifications. Useful to save battery.", + "method_account.registerDevice_param_token_type_type_int": "Device token type, see [PUSH updates](https:\/\/core.telegram.org\/api\/push-updates#subscribing-to-notifications) for the possible values.", + "method_account.registerDevice_param_token_type_string": "Device token, see [PUSH updates](https:\/\/core.telegram.org\/api\/push-updates#subscribing-to-notifications) for the possible values.", + "method_account.registerDevice_param_app_sandbox_type_Bool": "If [(boolTrue)](..\/constructors\/boolTrue.md) is transmitted, a sandbox-certificate will be used during transmission.", + "method_account.registerDevice_param_secret_type_bytes": "For FCM and APNS VoIP, optional encryption key used to encrypt push notifications", + "method_account.registerDevice_param_other_uids_type_Vector<long>": "List of user identifiers of other users currently using the client", + "method_account.unregisterDevice": "Deletes a device by its token, stops sending PUSH-notifications to it.", + "method_account.unregisterDevice_param_token_type_type_int": "Device token type, see [PUSH updates](https:\/\/core.telegram.org\/api\/push-updates#subscribing-to-notifications) for the possible values.", + "method_account.unregisterDevice_param_token_type_string": "Device token, see [PUSH updates](https:\/\/core.telegram.org\/api\/push-updates#subscribing-to-notifications) for the possible values.", + "method_account.unregisterDevice_param_other_uids_type_Vector<long>": "List of user identifiers of other users currently using the client", + "method_account.updateNotifySettings": "Edits notification settings from a given user\/group, from all users\/all groups.", + "method_account.updateNotifySettings_param_peer_type_InputNotifyPeer": "Notification source", + "method_account.updateNotifySettings_param_settings_type_InputPeerNotifySettings": "Notification settings", + "method_account.getNotifySettings": "Gets current notification settings for a given user\/group, from all users\/all groups.", + "method_account.getNotifySettings_param_peer_type_InputNotifyPeer": "Notification source", + "method_account.resetNotifySettings": "Resets all notification settings from users and groups.", + "method_account.updateProfile": "Updates user profile.", + "method_account.updateProfile_param_first_name_type_flags.0?string": "New user first name", + "method_account.updateProfile_param_last_name_type_flags.1?string": "New user last name", + "method_account.updateProfile_param_about_type_flags.2?string": "New bio", + "method_account.updateStatus": "Updates online user status.", + "method_account.updateStatus_param_offline_type_Bool": "If [(boolTrue)](..\/constructors\/boolTrue.md) is transmitted, user status will change to [(userStatusOffline)](..\/constructors\/userStatusOffline.md).", + "method_account.getWallPapers": "Returns a list of available [wallpapers](https:\/\/core.telegram.org\/api\/wallpapers).", + "method_account.getWallPapers_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_account.reportPeer": "Report a peer for violation of telegram's Terms of Service", + "method_account.reportPeer_param_peer_type_InputPeer": "The peer to report", + "method_account.reportPeer_param_reason_type_ReportReason": "The reason why this peer is being reported", + "method_account.reportPeer_param_message_type_string": "Comment for report moderation", + "method_account.checkUsername": "Validates a username and checks availability.", + "method_account.checkUsername_param_username_type_string": "username
Accepted characters: A-z (case-insensitive), 0-9 and underscores.
Length: 5-32 characters.", + "method_account.updateUsername": "Changes username for the current user.", + "method_account.updateUsername_param_username_type_string": "username or empty string if username is to be removed
Accepted characters: a-z (case-insensitive), 0-9 and underscores.
Length: 5-32 characters.", + "method_account.getPrivacy": "Get privacy settings of current account", + "method_account.getPrivacy_param_key_type_InputPrivacyKey": "Peer category whose privacy settings should be fetched", + "method_account.setPrivacy": "Change privacy settings of current account", + "method_account.setPrivacy_param_key_type_InputPrivacyKey": "New privacy rule", + "method_account.setPrivacy_param_rules_type_Vector<InputPrivacyRule>": "Peers to which the privacy rule will apply.", + "method_account.deleteAccount": "Delete the user's account from the telegram servers.\n\nCan also be used to delete the account of a user that provided the login code, but forgot the 2FA password and no recovery method is configured, see [here \u00bb](https:\/\/core.telegram.org\/api\/srp#password-recovery) for more info on password recovery, and [here \u00bb](https:\/\/core.telegram.org\/api\/account-deletion) for more info on account deletion.", + "method_account.deleteAccount_param_reason_type_string": "Why is the account being deleted, can be empty", + "method_account.deleteAccount_param_password_type_flags.0?InputCheckPasswordSRP": "[2FA password](https:\/\/core.telegram.org\/api\/srp): this field can be omitted even for accounts with 2FA enabled: in this case account account deletion will be delayed by 7 days [as specified in the docs \u00bb](https:\/\/core.telegram.org\/api\/account-deletion)", + "method_account.getAccountTTL": "Get days to live of account", + "method_account.setAccountTTL": "Set account self-destruction period", + "method_account.setAccountTTL_param_ttl_type_AccountDaysTTL": "Time to live in days", + "method_account.sendChangePhoneCode": "Verify a new phone number to associate to the current account", + "method_account.sendChangePhoneCode_param_phone_number_type_string": "New phone number", + "method_account.sendChangePhoneCode_param_settings_type_CodeSettings": "Phone code settings", + "method_account.changePhone": "Change the phone number of the current account", + "method_account.changePhone_param_phone_number_type_string": "New phone number", + "method_account.changePhone_param_phone_code_hash_type_string": "Phone code hash received when calling [account.sendChangePhoneCode](..\/methods\/account.sendChangePhoneCode.md)", + "method_account.changePhone_param_phone_code_type_string": "Phone code received when calling [account.sendChangePhoneCode](..\/methods\/account.sendChangePhoneCode.md)", + "method_account.updateDeviceLocked": "When client-side passcode lock feature is enabled, will not show message texts in incoming [PUSH notifications](https:\/\/core.telegram.org\/api\/push-updates).", + "method_account.updateDeviceLocked_param_period_type_int": "Inactivity period after which to start hiding message texts in [PUSH notifications](https:\/\/core.telegram.org\/api\/push-updates).", + "method_account.getAuthorizations": "Get logged-in sessions", + "method_account.resetAuthorization": "Log out an active [authorized session](https:\/\/core.telegram.org\/api\/auth) by its hash", + "method_account.resetAuthorization_param_hash_type_long": "Session hash", + "method_account.getPassword": "Obtain configuration for two-factor authorization with password", + "method_account.getPasswordSettings": "Get private info associated to the password info (recovery email, telegram [passport](https:\/\/core.telegram.org\/passport) info & so on)", + "method_account.getPasswordSettings_param_password_type_InputCheckPasswordSRP": "The password (see [SRP](https:\/\/core.telegram.org\/api\/srp))", + "method_account.updatePasswordSettings": "Set a new 2FA password", + "method_account.updatePasswordSettings_param_password_type_InputCheckPasswordSRP": "The old password (see [SRP](https:\/\/core.telegram.org\/api\/srp))", + "method_account.updatePasswordSettings_param_new_settings_type_account.PasswordInputSettings": "The new password (see [SRP](https:\/\/core.telegram.org\/api\/srp))", + "method_account.sendConfirmPhoneCode": "Send confirmation code to cancel account deletion, for more info [click here \u00bb](https:\/\/core.telegram.org\/api\/account-deletion)", + "method_account.sendConfirmPhoneCode_param_hash_type_string": "The hash from the service notification, for more info [click here \u00bb](https:\/\/core.telegram.org\/api\/account-deletion)", + "method_account.sendConfirmPhoneCode_param_settings_type_CodeSettings": "Phone code settings", + "method_account.confirmPhone": "Confirm a phone number to cancel account deletion, for more info [click here \u00bb](https:\/\/core.telegram.org\/api\/account-deletion)", + "method_account.confirmPhone_param_phone_code_hash_type_string": "Phone code hash, for more info [click here \u00bb](https:\/\/core.telegram.org\/api\/account-deletion)", + "method_account.confirmPhone_param_phone_code_type_string": "SMS code, for more info [click here \u00bb](https:\/\/core.telegram.org\/api\/account-deletion)", + "method_account.getTmpPassword": "Get temporary payment password", + "method_account.getTmpPassword_param_password_type_InputCheckPasswordSRP": "SRP password parameters", + "method_account.getTmpPassword_param_period_type_int": "Time during which the temporary password will be valid, in seconds; should be between 60 and 86400", + "method_account.getWebAuthorizations": "Get web [login widget](https:\/\/core.telegram.org\/widgets\/login) authorizations", + "method_account.resetWebAuthorization": "Log out an active web [telegram login](https:\/\/core.telegram.org\/widgets\/login) session", + "method_account.resetWebAuthorization_param_hash_type_long": "[Session](..\/constructors\/webAuthorization.md) hash", + "method_account.resetWebAuthorizations": "Reset all active web [telegram login](https:\/\/core.telegram.org\/widgets\/login) sessions", + "method_account.getAllSecureValues": "Get all saved [Telegram Passport](https:\/\/core.telegram.org\/passport) documents, [for more info see the passport docs \u00bb](https:\/\/core.telegram.org\/passport\/encryption#encryption)", + "method_account.getSecureValue": "Get saved [Telegram Passport](https:\/\/core.telegram.org\/passport) document, [for more info see the passport docs \u00bb](https:\/\/core.telegram.org\/passport\/encryption#encryption)", + "method_account.getSecureValue_param_types_type_Vector<SecureValueType>": "Requested value types", + "method_account.saveSecureValue": "Securely save [Telegram Passport](https:\/\/core.telegram.org\/passport) document, [for more info see the passport docs \u00bb](https:\/\/core.telegram.org\/passport\/encryption#encryption)", + "method_account.saveSecureValue_param_value_type_InputSecureValue": "Secure value, [for more info see the passport docs \u00bb](https:\/\/core.telegram.org\/passport\/encryption#encryption)", + "method_account.saveSecureValue_param_secure_secret_id_type_long": "Passport secret hash, [for more info see the passport docs \u00bb](https:\/\/core.telegram.org\/passport\/encryption#encryption)", + "method_account.deleteSecureValue": "Delete stored [Telegram Passport](https:\/\/core.telegram.org\/passport) documents, [for more info see the passport docs \u00bb](https:\/\/core.telegram.org\/passport\/encryption#encryption)", + "method_account.deleteSecureValue_param_types_type_Vector<SecureValueType>": "Document types to delete", + "method_account.getAuthorizationForm": "Returns a Telegram Passport authorization form for sharing data with a service", + "method_account.getAuthorizationForm_param_bot_id_type_long": "User identifier of the service's bot", + "method_account.getAuthorizationForm_param_scope_type_string": "Telegram Passport element types requested by the service", + "method_account.getAuthorizationForm_param_public_key_type_string": "Service's public key", + "method_account.acceptAuthorization": "Sends a Telegram Passport authorization form, effectively sharing data with the service", + "method_account.acceptAuthorization_param_bot_id_type_long": "Bot ID", + "method_account.acceptAuthorization_param_scope_type_string": "Telegram Passport element types requested by the service", + "method_account.acceptAuthorization_param_public_key_type_string": "Service's public key", + "method_account.acceptAuthorization_param_value_hashes_type_Vector<SecureValueHash>": "Types of values sent and their hashes", + "method_account.acceptAuthorization_param_credentials_type_SecureCredentialsEncrypted": "Encrypted values", + "method_account.sendVerifyPhoneCode": "Send the verification phone code for telegram [passport](https:\/\/core.telegram.org\/passport).", + "method_account.sendVerifyPhoneCode_param_phone_number_type_string": "The phone number to verify", + "method_account.sendVerifyPhoneCode_param_settings_type_CodeSettings": "Phone code settings", + "method_account.verifyPhone": "Verify a phone number for telegram [passport](https:\/\/core.telegram.org\/passport).", + "method_account.verifyPhone_param_phone_number_type_string": "Phone number", + "method_account.verifyPhone_param_phone_code_hash_type_string": "Phone code hash received from the call to [account.sendVerifyPhoneCode](..\/methods\/account.sendVerifyPhoneCode.md)", + "method_account.verifyPhone_param_phone_code_type_string": "Code received after the call to [account.sendVerifyPhoneCode](..\/methods\/account.sendVerifyPhoneCode.md)", + "method_account.sendVerifyEmailCode": "Send an email verification code.", + "method_account.sendVerifyEmailCode_param_purpose_type_EmailVerifyPurpose": "Verification purpose.", + "method_account.sendVerifyEmailCode_param_email_type_string": "The email where to send the code.", + "method_account.verifyEmail": "Verify an email address.", + "method_account.verifyEmail_param_purpose_type_EmailVerifyPurpose": "Verification purpose", + "method_account.verifyEmail_param_verification_type_EmailVerification": "Email verification code or token", + "method_account.initTakeoutSession": "Initialize a [takeout session, see here \u00bb for more info](https:\/\/core.telegram.org\/api\/takeout).", + "method_account.initTakeoutSession_param_contacts_type_flags.0?true": "Whether to export contacts", + "method_account.initTakeoutSession_param_message_users_type_flags.1?true": "Whether to export messages in private chats", + "method_account.initTakeoutSession_param_message_chats_type_flags.2?true": "Whether to export messages in [basic groups](https:\/\/core.telegram.org\/api\/channel#basic-groups)", + "method_account.initTakeoutSession_param_message_megagroups_type_flags.3?true": "Whether to export messages in [supergroups](https:\/\/core.telegram.org\/api\/channel#supergroups)", + "method_account.initTakeoutSession_param_message_channels_type_flags.4?true": "Whether to export messages in [channels](https:\/\/core.telegram.org\/api\/channel#channels)", + "method_account.initTakeoutSession_param_files_type_flags.5?true": "Whether to export files", + "method_account.initTakeoutSession_param_file_max_size_type_flags.5?long": "Maximum size of files to export", + "method_account.finishTakeoutSession": "Terminate a [takeout session, see here \u00bb for more info](https:\/\/core.telegram.org\/api\/takeout).", + "method_account.finishTakeoutSession_param_success_type_flags.0?true": "Data exported successfully", + "method_account.confirmPasswordEmail": "Verify an email to use as [2FA recovery method](https:\/\/core.telegram.org\/api\/srp).", + "method_account.confirmPasswordEmail_param_code_type_string": "The phone code that was received after [setting a recovery email](https:\/\/core.telegram.org\/api\/srp#email-verification)", + "method_account.resendPasswordEmail": "Resend the code to verify an email to use as [2FA recovery method](https:\/\/core.telegram.org\/api\/srp).", + "method_account.cancelPasswordEmail": "Cancel the code that was sent to verify an email to use as [2FA recovery method](https:\/\/core.telegram.org\/api\/srp).", + "method_account.getContactSignUpNotification": "Whether the user will receive notifications when contacts sign up", + "method_account.setContactSignUpNotification": "Toggle contact sign up notifications", + "method_account.setContactSignUpNotification_param_silent_type_Bool": "Whether to disable contact sign up notifications", + "method_account.getNotifyExceptions": "Returns list of chats with non-default notification settings", + "method_account.getNotifyExceptions_param_compare_sound_type_flags.1?true": "If set, chats with non-default sound will be returned", + "method_account.getNotifyExceptions_param_compare_stories_type_flags.2?true": "If set, chats with non-default notification settings for stories will be returned", + "method_account.getNotifyExceptions_param_peer_type_flags.0?InputNotifyPeer": "If specified, only chats of the specified category will be returned", + "method_account.getWallPaper": "Get info about a certain [wallpaper](https:\/\/core.telegram.org\/api\/wallpapers)", + "method_account.getWallPaper_param_wallpaper_type_InputWallPaper": "The [wallpaper](https:\/\/core.telegram.org\/api\/wallpapers) to get info about", + "method_account.uploadWallPaper": "Create and upload a new [wallpaper](https:\/\/core.telegram.org\/api\/wallpapers)", + "method_account.uploadWallPaper_param_for_chat_type_flags.0?true": "Set this flag when uploading wallpapers to be passed to [messages.setChatWallPaper](..\/methods\/messages.setChatWallPaper.md).", + "method_account.uploadWallPaper_param_file_type_InputFile": "The JPG\/PNG wallpaper", + "method_account.uploadWallPaper_param_mime_type_type_string": "MIME type of uploaded wallpaper", + "method_account.uploadWallPaper_param_settings_type_WallPaperSettings": "Wallpaper settings", + "method_account.saveWallPaper": "Install\/uninstall [wallpaper](https:\/\/core.telegram.org\/api\/wallpapers)", + "method_account.saveWallPaper_param_wallpaper_type_InputWallPaper": "[Wallpaper](https:\/\/core.telegram.org\/api\/wallpapers) to install or uninstall", + "method_account.saveWallPaper_param_unsave_type_Bool": "Uninstall wallpaper?", + "method_account.saveWallPaper_param_settings_type_WallPaperSettings": "Wallpaper settings", + "method_account.installWallPaper": "Install [wallpaper](https:\/\/core.telegram.org\/api\/wallpapers)", + "method_account.installWallPaper_param_wallpaper_type_InputWallPaper": "[Wallpaper](https:\/\/core.telegram.org\/api\/wallpapers) to install", + "method_account.installWallPaper_param_settings_type_WallPaperSettings": "[Wallpaper](https:\/\/core.telegram.org\/api\/wallpapers) settings", + "method_account.resetWallPapers": "Delete all installed [wallpapers](https:\/\/core.telegram.org\/api\/wallpapers), reverting to the default wallpaper set.", + "method_account.getAutoDownloadSettings": "Get media autodownload settings", + "method_account.saveAutoDownloadSettings": "Change media autodownload settings", + "method_account.saveAutoDownloadSettings_param_low_type_flags.0?true": "Whether to save media in the low data usage preset", + "method_account.saveAutoDownloadSettings_param_high_type_flags.1?true": "Whether to save media in the high data usage preset", + "method_account.saveAutoDownloadSettings_param_settings_type_AutoDownloadSettings": "Media autodownload settings", + "method_account.uploadTheme": "Upload theme", + "method_account.uploadTheme_param_file_type_InputFile": "[Previously uploaded](https:\/\/core.telegram.org\/api\/themes#uploading-theme-files) theme file with platform-specific colors for UI components, can be left unset when creating themes that only modify the wallpaper or accent colors.", + "method_account.uploadTheme_param_thumb_type_flags.0?InputFile": "Thumbnail", + "method_account.uploadTheme_param_file_name_type_string": "File name", + "method_account.uploadTheme_param_mime_type_type_string": "MIME type, must be `application\/x-tgtheme-{format}`, where `format` depends on the client", + "method_account.createTheme": "Create a theme", + "method_account.createTheme_param_slug_type_string": "Unique theme ID used to generate [theme deep links](https:\/\/core.telegram.org\/api\/links#theme-links), can be empty to autogenerate a random ID.", + "method_account.createTheme_param_title_type_string": "Theme name", + "method_account.createTheme_param_document_type_flags.2?InputDocument": "Theme file", + "method_account.createTheme_param_settings_type_flags.3?Vector<InputThemeSettings>": "Theme settings, multiple values can be provided for the different base themes (day\/night mode, etc).", + "method_account.updateTheme": "Update theme", + "method_account.updateTheme_param_format_type_string": "Theme format, a string that identifies the theming engines supported by the client", + "method_account.updateTheme_param_theme_type_InputTheme": "Theme to update", + "method_account.updateTheme_param_slug_type_flags.0?string": "Unique theme ID", + "method_account.updateTheme_param_title_type_flags.1?string": "Theme name", + "method_account.updateTheme_param_document_type_flags.2?InputDocument": "Theme file", + "method_account.updateTheme_param_settings_type_flags.3?Vector<InputThemeSettings>": "Theme settings", + "method_account.saveTheme": "Save a theme", + "method_account.saveTheme_param_theme_type_InputTheme": "Theme to save", + "method_account.saveTheme_param_unsave_type_Bool": "Unsave", + "method_account.installTheme": "Install a theme", + "method_account.installTheme_param_dark_type_flags.0?true": "Whether to install the dark version", + "method_account.installTheme_param_theme_type_flags.1?InputTheme": "Theme to install", + "method_account.installTheme_param_format_type_flags.2?string": "Theme format, a string that identifies the theming engines supported by the client", + "method_account.installTheme_param_base_theme_type_flags.3?BaseTheme": "Indicates a basic theme provided by all clients", + "method_account.getTheme": "Get theme information", + "method_account.getTheme_param_format_type_string": "Theme format, a string that identifies the theming engines supported by the client", + "method_account.getTheme_param_theme_type_InputTheme": "Theme", + "method_account.getThemes": "Get installed themes", + "method_account.getThemes_param_format_type_string": "Theme format, a string that identifies the theming engines supported by the client", + "method_account.getThemes_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_account.setContentSettings": "Set sensitive content settings (for viewing or hiding NSFW content)", + "method_account.setContentSettings_param_sensitive_enabled_type_flags.0?true": "Enable NSFW content", + "method_account.getContentSettings": "Get sensitive content settings", + "method_account.getMultiWallPapers": "Get info about multiple [wallpapers](https:\/\/core.telegram.org\/api\/wallpapers)", + "method_account.getMultiWallPapers_param_wallpapers_type_Vector<InputWallPaper>": "[Wallpapers](https:\/\/core.telegram.org\/api\/wallpapers) to fetch info about", + "method_account.getGlobalPrivacySettings": "Get global privacy settings", + "method_account.setGlobalPrivacySettings": "Set global privacy settings", + "method_account.setGlobalPrivacySettings_param_settings_type_GlobalPrivacySettings": "Global privacy settings", + "method_account.reportProfilePhoto": "Report a profile photo of a dialog", + "method_account.reportProfilePhoto_param_peer_type_InputPeer": "The dialog", + "method_account.reportProfilePhoto_param_photo_id_type_InputPhoto": "Dialog photo ID", + "method_account.reportProfilePhoto_param_reason_type_ReportReason": "Report reason", + "method_account.reportProfilePhoto_param_message_type_string": "Comment for report moderation", + "method_account.resetPassword": "Initiate a 2FA password reset: can only be used if the user is already logged-in, [see here for more info \u00bb](https:\/\/core.telegram.org\/api\/srp#password-reset)", + "method_account.declinePasswordReset": "Abort a pending 2FA password reset, [see here for more info \u00bb](https:\/\/core.telegram.org\/api\/srp#password-reset)", + "method_account.getChatThemes": "Get all available chat [themes \u00bb](https:\/\/core.telegram.org\/api\/themes).", + "method_account.getChatThemes_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_account.setAuthorizationTTL": "Set time-to-live of current session", + "method_account.setAuthorizationTTL_param_authorization_ttl_days_type_int": "Time-to-live of current session in days", + "method_account.changeAuthorizationSettings": "Change settings related to a session.", + "method_account.changeAuthorizationSettings_param_confirmed_type_flags.3?true": "If set, [confirms a newly logged in session \u00bb](https:\/\/core.telegram.org\/api\/auth#confirming-login).", + "method_account.changeAuthorizationSettings_param_hash_type_long": "Session ID from the [authorization](..\/constructors\/authorization.md) constructor, fetchable using [account.getAuthorizations](..\/methods\/account.getAuthorizations.md)", + "method_account.changeAuthorizationSettings_param_encrypted_requests_disabled_type_flags.0?Bool": "Whether to enable or disable receiving encrypted chats: if the flag is not set, the previous setting is not changed", + "method_account.changeAuthorizationSettings_param_call_requests_disabled_type_flags.1?Bool": "Whether to enable or disable receiving calls: if the flag is not set, the previous setting is not changed", + "method_account.getSavedRingtones": "Fetch saved notification sounds", + "method_account.getSavedRingtones_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_account.saveRingtone": "Save or remove saved notification sound.\n\nIf the notification sound is already in MP3 format, [account.savedRingtone](..\/constructors\/account.savedRingtone.md) will be returned. \nOtherwise, it will be automatically converted and a [account.savedRingtoneConverted](..\/constructors\/account.savedRingtoneConverted.md) will be returned, containing a new [document](..\/constructors\/document.md) object that should be used to refer to the ringtone from now on (ie when deleting it using the `unsave` parameter, or when downloading it).", + "method_account.saveRingtone_param_id_type_InputDocument": "Notification sound uploaded using [account.uploadRingtone](..\/methods\/account.uploadRingtone.md)", + "method_account.saveRingtone_param_unsave_type_Bool": "Whether to add or delete the notification sound", + "method_account.uploadRingtone": "Upload notification sound, use [account.saveRingtone](..\/methods\/account.saveRingtone.md) to convert it and add it to the list of saved notification sounds.", + "method_account.uploadRingtone_param_file_type_InputFile": "Notification sound", + "method_account.uploadRingtone_param_file_name_type_string": "File name", + "method_account.uploadRingtone_param_mime_type_type_string": "MIME type of file", + "method_account.updateEmojiStatus": "Set an [emoji status](https:\/\/core.telegram.org\/api\/emoji-status)", + "method_account.updateEmojiStatus_param_emoji_status_type_EmojiStatus": "[Emoji status](https:\/\/core.telegram.org\/api\/emoji-status) to set", + "method_account.getDefaultEmojiStatuses": "Get a list of default suggested [emoji statuses](https:\/\/core.telegram.org\/api\/emoji-status)", + "method_account.getDefaultEmojiStatuses_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_account.getRecentEmojiStatuses": "Get recently used [emoji statuses](https:\/\/core.telegram.org\/api\/emoji-status)", + "method_account.getRecentEmojiStatuses_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_account.clearRecentEmojiStatuses": "Clears list of recently used [emoji statuses](https:\/\/core.telegram.org\/api\/emoji-status)", + "method_account.reorderUsernames": "Reorder usernames associated with the currently logged-in user.", + "method_account.reorderUsernames_param_order_type_Vector<string>": "The new order for active usernames. All active usernames must be specified.", + "method_account.toggleUsername": "Activate or deactivate a purchased [fragment.com](https:\/\/fragment.com) username associated to the currently logged-in user.", + "method_account.toggleUsername_param_username_type_string": "Username", + "method_account.toggleUsername_param_active_type_Bool": "Whether to activate or deactivate it", + "method_account.getDefaultProfilePhotoEmojis": "Get a set of suggested [custom emoji stickers](https:\/\/core.telegram.org\/api\/custom-emoji) that can be [used as profile picture](https:\/\/core.telegram.org\/api\/files#sticker-profile-pictures)", + "method_account.getDefaultProfilePhotoEmojis_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_account.getDefaultGroupPhotoEmojis": "Get a set of suggested [custom emoji stickers](https:\/\/core.telegram.org\/api\/custom-emoji) that can be [used as group picture](https:\/\/core.telegram.org\/api\/files#sticker-profile-pictures)", + "method_account.getDefaultGroupPhotoEmojis_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_account.getAutoSaveSettings": "Get autosave settings", + "method_account.saveAutoSaveSettings": "Modify autosave settings", + "method_account.saveAutoSaveSettings_param_users_type_flags.0?true": "Whether the new settings should affect all private chats", + "method_account.saveAutoSaveSettings_param_chats_type_flags.1?true": "Whether the new settings should affect all groups", + "method_account.saveAutoSaveSettings_param_broadcasts_type_flags.2?true": "Whether the new settings should affect all [channels](https:\/\/core.telegram.org\/api\/channel)", + "method_account.saveAutoSaveSettings_param_peer_type_flags.3?InputPeer": "Whether the new settings should affect a specific peer", + "method_account.saveAutoSaveSettings_param_settings_type_AutoSaveSettings": "The new autosave settings", + "method_account.deleteAutoSaveExceptions": "Clear all peer-specific autosave settings.", + "method_account.invalidateSignInCodes": "Invalidate the specified login codes, see [here \u00bb](https:\/\/core.telegram.org\/api\/auth#invalidating-login-codes) for more info.", + "method_account.invalidateSignInCodes_param_codes_type_Vector<string>": "The login codes to invalidate.", + "method_account.updateColor": "Update the [accent color and background custom emoji \u00bb](https:\/\/core.telegram.org\/api\/colors) of the current account.", + "method_account.updateColor_param_for_profile_type_flags.1?true": "Whether to change the accent color emoji pattern of the profile page; otherwise, the accent color and emoji pattern of messages will be changed.", + "method_account.updateColor_param_color_type_flags.2?int": "[ID of the accent color palette \u00bb](https:\/\/core.telegram.org\/api\/colors) to use (not RGB24, see [here \u00bb](https:\/\/core.telegram.org\/api\/colors) for more info).", + "method_account.updateColor_param_background_emoji_id_type_flags.0?long": "Custom emoji ID used in the accent color pattern.", + "method_account.getDefaultBackgroundEmojis": "Get a set of suggested [custom emoji stickers](https:\/\/core.telegram.org\/api\/custom-emoji) that can be used in an [accent color pattern](https:\/\/core.telegram.org\/api\/colors).", + "method_account.getDefaultBackgroundEmojis_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_account.getChannelDefaultEmojiStatuses": "Get a list of default suggested [channel emoji statuses](https:\/\/core.telegram.org\/api\/emoji-status).", + "method_account.getChannelDefaultEmojiStatuses_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_account.getChannelRestrictedStatusEmojis": "Returns fetch the full list of [custom emoji IDs \u00bb](https:\/\/core.telegram.org\/api\/custom-emoji) that cannot be used in [channel emoji statuses \u00bb](https:\/\/core.telegram.org\/api\/emoji-status).", + "method_account.getChannelRestrictedStatusEmojis_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_account.updateBusinessWorkHours": "Specify a set of [Telegram Business opening hours](https:\/\/core.telegram.org\/api\/business#opening-hours). \nThis info will be contained in [userFull](..\/constructors\/userFull.md).`business_work_hours`.\n\nTo remove all opening hours, invoke the method without setting the `business_work_hours` field.\n\nNote that the opening hours specified by the user must be appropriately validated and transformed before invoking the method, as specified [here \u00bb](https:\/\/core.telegram.org\/api\/business#opening-hours).", + "method_account.updateBusinessWorkHours_param_business_work_hours_type_flags.0?BusinessWorkHours": "Opening hours (optional, if not set removes all opening hours).", + "method_account.updateBusinessLocation": "[Businesses \u00bb](https:\/\/core.telegram.org\/api\/business#location) may advertise their location using this method, see [here \u00bb](https:\/\/core.telegram.org\/api\/business#location) for more info.\n\nTo remove business location information invoke the method without setting any of the parameters.", + "method_account.updateBusinessLocation_param_geo_point_type_flags.1?InputGeoPoint": "Optional, contains a set of geographical coordinates.", + "method_account.updateBusinessLocation_param_address_type_flags.0?string": "Mandatory when setting\/updating the location, contains a textual description of the address (max 96 UTF-8 chars).", + "method_account.updateBusinessGreetingMessage": "Set a list of [Telegram Business greeting messages](https:\/\/core.telegram.org\/api\/business#greeting-messages).", + "method_account.updateBusinessGreetingMessage_param_message_type_flags.0?InputBusinessGreetingMessage": "Greeting message configuration and contents.", + "method_account.updateBusinessAwayMessage": "Set a list of [Telegram Business away messages](https:\/\/core.telegram.org\/api\/business#away-messages).", + "method_account.updateBusinessAwayMessage_param_message_type_flags.0?InputBusinessAwayMessage": "Away message configuration and contents.", + "method_account.updateConnectedBot": "Connect a [business bot \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots) to the current account, or to change the current connection settings.", + "method_account.updateConnectedBot_param_deleted_type_flags.1?true": "Whether to fully disconnect the bot from the current account.", + "method_account.updateConnectedBot_param_rights_type_flags.0?BusinessBotRights": "Business bot rights.", + "method_account.updateConnectedBot_param_bot_type_InputUser": "The bot to connect or disconnect", + "method_account.updateConnectedBot_param_recipients_type_InputBusinessBotRecipients": "Configuration for the business connection", + "method_account.getConnectedBots": "List all currently connected [business bots \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots)", + "method_account.getBotBusinessConnection": "Bots may invoke this method to re-fetch the [updateBotBusinessConnect](..\/constructors\/updateBotBusinessConnect.md) constructor associated with a specific [business `connection_id`, see here \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots) for more info on connected business bots. \nThis is needed for example for freshly logged in bots that are receiving some [updateBotNewBusinessMessage](..\/constructors\/updateBotNewBusinessMessage.md), etc. updates because some users have already connected to the bot before it could login. \nIn this case, the bot is receiving messages from the business connection, but it hasn't cached the associated [updateBotBusinessConnect](..\/constructors\/updateBotBusinessConnect.md) with info about the connection (can it reply to messages? etc.) yet, and cannot receive the old ones because they were sent when the bot wasn't logged into the session yet. \nThis method can be used to fetch info about a not-yet-cached business connection, and should not be invoked if the info is already cached or to fetch changes, as eventual changes will automatically be sent as new [updateBotBusinessConnect](..\/constructors\/updateBotBusinessConnect.md) updates to the bot using the usual [update delivery methods \u00bb](https:\/\/core.telegram.org\/api\/updates).", + "method_account.getBotBusinessConnection_param_connection_id_type_string": "[Business connection ID \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots).", + "method_account.updateBusinessIntro": "Set or remove the [Telegram Business introduction \u00bb](https:\/\/core.telegram.org\/api\/business#business-introduction).", + "method_account.updateBusinessIntro_param_intro_type_flags.0?InputBusinessIntro": "Telegram Business introduction, to remove it call the method without setting this flag.", + "method_account.toggleConnectedBotPaused": "Pause or unpause a specific chat, temporarily disconnecting it from all [business bots \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots).", + "method_account.toggleConnectedBotPaused_param_peer_type_InputPeer": "The chat to pause", + "method_account.toggleConnectedBotPaused_param_paused_type_Bool": "Whether to pause or unpause the chat", + "method_account.disablePeerConnectedBot": "Permanently disconnect a specific chat from all [business bots \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots) (equivalent to specifying it in `recipients.exclude_users` during initial configuration with [account.updateConnectedBot \u00bb](..\/methods\/account.updateConnectedBot.md)); to reconnect of a chat disconnected using this method the user must reconnect the entire bot by invoking [account.updateConnectedBot \u00bb](..\/methods\/account.updateConnectedBot.md).", + "method_account.disablePeerConnectedBot_param_peer_type_InputPeer": "The chat to disconnect", + "method_account.updateBirthday": "Update our [birthday, see here \u00bb](https:\/\/core.telegram.org\/api\/profile#birthday) for more info.", + "method_account.updateBirthday_param_birthday_type_flags.0?Birthday": "Birthday.", + "method_account.createBusinessChatLink": "Create a [business chat deep link \u00bb](https:\/\/core.telegram.org\/api\/business#business-chat-links).", + "method_account.createBusinessChatLink_param_link_type_InputBusinessChatLink": "Info about the link to create.", + "method_account.editBusinessChatLink": "Edit a created [business chat deep link \u00bb](https:\/\/core.telegram.org\/api\/business#business-chat-links).", + "method_account.editBusinessChatLink_param_slug_type_string": "Slug of the link, obtained as specified [here \u00bb](https:\/\/core.telegram.org\/api\/links#business-chat-links).", + "method_account.editBusinessChatLink_param_link_type_InputBusinessChatLink": "New link information.", + "method_account.deleteBusinessChatLink": "Delete a [business chat deep link \u00bb](https:\/\/core.telegram.org\/api\/business#business-chat-links).", + "method_account.deleteBusinessChatLink_param_slug_type_string": "Slug of the link, obtained as specified [here \u00bb](https:\/\/core.telegram.org\/api\/links#business-chat-links).", + "method_account.getBusinessChatLinks": "List all created [business chat deep links \u00bb](https:\/\/core.telegram.org\/api\/business#business-chat-links).", + "method_account.resolveBusinessChatLink": "Resolve a [business chat deep link \u00bb](https:\/\/core.telegram.org\/api\/business#business-chat-links).", + "method_account.resolveBusinessChatLink_param_slug_type_string": "Slug of the link, obtained as specified [here \u00bb](https:\/\/core.telegram.org\/api\/links#business-chat-links).", + "method_account.updatePersonalChannel": "Associate (or remove) a personal [channel \u00bb](https:\/\/core.telegram.org\/api\/channel), that will be listed on our personal [profile page \u00bb](https:\/\/core.telegram.org\/api\/profile#personal-channel).\n\nChanging it will emit an [updateUser](..\/constructors\/updateUser.md) update.", + "method_account.updatePersonalChannel_param_channel_type_InputChannel": "The channel, pass [inputChannelEmpty](..\/constructors\/inputChannelEmpty.md) to remove it.", + "method_account.toggleSponsoredMessages": "Disable or re-enable Telegram ads for the current [Premium](https:\/\/core.telegram.org\/api\/premium) account.\n\nUseful for business owners that may want to launch and view their own Telegram ads via the [Telegram ad platform \u00bb](https:\/\/ads.telegram.org).", + "method_account.toggleSponsoredMessages_param_enabled_type_Bool": "Enable or disable ads.", + "method_account.getReactionsNotifySettings": "Get the current [reaction notification settings \u00bb](https:\/\/core.telegram.org\/api\/reactions#notifications-about-reactions).", + "method_account.setReactionsNotifySettings": "Change the [reaction notification settings \u00bb](https:\/\/core.telegram.org\/api\/reactions#notifications-about-reactions).", + "method_account.setReactionsNotifySettings_param_settings_type_ReactionsNotifySettings": "New reaction notification settings.", + "method_account.getCollectibleEmojiStatuses": "Obtain a list of [emoji statuses \u00bb](https:\/\/core.telegram.org\/api\/emoji-status) for owned [collectible gifts](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "method_account.getCollectibleEmojiStatuses_param_hash_type_long": "[Hash for pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_account.getPaidMessagesRevenue": "Get the number of stars we have received from the specified user thanks to [paid messages \u00bb](https:\/\/core.telegram.org\/api\/paid-messages); the received amount will be equal to the sent amount multiplied by [stars\\_paid\\_message\\_commission\\_permille](https:\/\/core.telegram.org\/api\/config#stars-paid-message-commission-permille) divided by 1000.", + "method_account.getPaidMessagesRevenue_param_parent_peer_type_flags.0?InputPeer": "If set, can contain the ID of a [monoforum (channel direct messages)](https:\/\/core.telegram.org\/api\/monoforum) to obtain the number of stars the user has spent to send us direct messages via the channel.", + "method_account.getPaidMessagesRevenue_param_user_id_type_InputUser": "The user that paid to send us messages.", + "method_account.toggleNoPaidMessagesException": "Allow a user to send us messages without paying if [paid messages \u00bb](https:\/\/core.telegram.org\/api\/paid-messages) are enabled.", + "method_account.toggleNoPaidMessagesException_param_refund_charged_type_flags.0?true": "If set and `require_payment` is not set, refunds the amounts the user has already paid us to send us messages (directly or via a monoforum).", + "method_account.toggleNoPaidMessagesException_param_require_payment_type_flags.2?true": "If set, requires the user to pay in order to send us messages.
Can only be **set** by monoforums, not users, i.e. `parent_peer` must be set if this flag is set; users must instead use the [inputPrivacyKeyNoPaidMessages](..\/constructors\/inputPrivacyKeyNoPaidMessages.md) privacy setting to remove a previously added exemption.
If not set, allows the user to send us messages without paying (can be **unset** by both monoforums and users).", + "method_account.toggleNoPaidMessagesException_param_parent_peer_type_flags.1?InputPeer": "If set, applies the setting within the [monoforum aka direct messages \u00bb](https:\/\/core.telegram.org\/api\/monoforum) (pass the ID of the monoforum, **not** the ID of the associated channel).", + "method_account.toggleNoPaidMessagesException_param_user_id_type_InputUser": "The user to exempt or unexempt.", + "method_account.setMainProfileTab": "Changes the main profile tab of the current user, see [here \u00bb](https:\/\/core.telegram.org\/api\/profile#tabs) for more info.", + "method_account.setMainProfileTab_param_tab_type_ProfileTab": "The tab to set as main tab.", + "method_account.saveMusic": "Adds or removes a song from the current user's profile [see here \u00bb](https:\/\/core.telegram.org\/api\/profile#music) for more info on the music tab of the profile page.", + "method_account.saveMusic_param_unsave_type_flags.0?true": "If set, removes the song.", + "method_account.saveMusic_param_id_type_InputDocument": "The song to add or remove; can be an already added song when reordering songs with `after_id`. Adding an already added song will never re-add it, only move it to the top of the song list (or after the song passed in `after_id`).", + "method_account.saveMusic_param_after_id_type_flags.1?InputDocument": "If set, the song will be added after the passed song (must be already pinned on the profile).", + "method_account.getSavedMusicIds": "Fetch the full list of only the IDs of [songs currently added to the profile, see here \u00bb](https:\/\/core.telegram.org\/api\/profile#music) for more info.", + "method_account.getSavedMusicIds_param_hash_type_long": "Hash [generated \u00bb](https:\/\/core.telegram.org\/api\/offsets#hash-generation) from the previously returned list of IDs.", + "method_account.getUniqueGiftChatThemes": "Obtain all [chat themes \u00bb](https:\/\/core.telegram.org\/api\/themes#chat-themes) associated to owned [collectible gifts \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "method_account.getUniqueGiftChatThemes_param_offset_type_int": "Offset for [pagination](https:\/\/core.telegram.org\/api\/offsets).", + "method_account.getUniqueGiftChatThemes_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_account.getUniqueGiftChatThemes_param_hash_type_long": "Hash from a previously returned [account.chatThemes](..\/constructors\/account.chatThemes.md) constructor, to avoid returning any result if the theme list hasn't changed.", + "method_users.getUsers": "Returns basic user info according to their identifiers.", + "method_users.getUsers_param_id_type_Vector<InputUser>": "List of user identifiers", + "method_users.getFullUser": "Returns extended user info by ID.", + "method_users.getFullUser_param_id_type_InputUser": "User ID", + "method_users.setSecureValueErrors": "Notify the user that the sent [passport](https:\/\/core.telegram.org\/passport) data contains some errors The user will not be able to re-submit their Passport data to you until the errors are fixed (the contents of the field for which you returned the error must change).\n\nUse this if the data submitted by the user doesn't satisfy the standards your service requires for any reason. For example, if a birthday date seems invalid, a submitted document is blurry, a scan shows evidence of tampering, etc. Supply some details in the error message to make sure the user knows how to correct the issues.", + "method_users.setSecureValueErrors_param_id_type_InputUser": "The user", + "method_users.setSecureValueErrors_param_errors_type_Vector<SecureValueError>": "Errors", + "method_users.getRequirementsToContact": "Check whether we can write to the specified users, used to implement bulk checks for [Premium-only messages \u00bb](https:\/\/core.telegram.org\/api\/privacy#require-premium-for-new-non-contact-users) and [paid messages \u00bb](https:\/\/core.telegram.org\/api\/paid-messages).\n\nFor each input user, returns a [RequirementToContact](..\/types\/RequirementToContact.md) constructor (at the same offset in the vector) containing requirements to contact them.", + "method_users.getRequirementsToContact_param_id_type_Vector<InputUser>": "Users to check.", + "method_users.getSavedMusic": "Get songs [pinned to the user's profile, see here \u00bb](https:\/\/core.telegram.org\/api\/profile#music) for more info.", + "method_users.getSavedMusic_param_id_type_InputUser": "The ID of the user.", + "method_users.getSavedMusic_param_offset_type_int": "Offset for pagination.", + "method_users.getSavedMusic_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_users.getSavedMusic_param_hash_type_long": "[Hash \u00bb](https:\/\/core.telegram.org\/api\/offsets#hash-generation) of the IDs of previously added songs, to avoid returning any result if there was no change.", + "method_users.getSavedMusicByID": "Check if the passed songs are still pinned to the user's profile, or refresh the file references of songs pinned on a user's profile [see here \u00bb](https:\/\/core.telegram.org\/api\/profile#music) for more info.", + "method_users.getSavedMusicByID_param_id_type_InputUser": "The ID of the user.", + "method_users.getSavedMusicByID_param_documents_type_Vector<InputDocument>": "The songs (here, `file_reference` can be empty to refresh file references).", + "method_contacts.getContactIDs": "Get the telegram IDs of all contacts. \nReturns an array of Telegram user IDs for all contacts (0 if a contact does not have an associated Telegram account or have hidden their account using privacy settings).", + "method_contacts.getContactIDs_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "method_contacts.getStatuses": "Use this method to obtain the online statuses of all contacts with an accessible Telegram account.", + "method_contacts.getContacts": "Returns the current user's contact list.", + "method_contacts.getContacts_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).
Note that the hash is computed [using the usual algorithm](https:\/\/core.telegram.org\/api\/offsets#hash-generation), passing to the algorithm first the previously returned [contacts.contacts](..\/constructors\/contacts.contacts.md).`saved_count` field, then max `100000` sorted user IDs from the contact list, including the ID of the currently logged in user if it is saved as a contact.
Example: [tdlib implementation](https:\/\/github.com\/tdlib\/td\/blob\/63c7d0301825b78c30dc7307f1f1466be049eb79\/td\/telegram\/UserManager.cpp#L5754).", + "method_contacts.importContacts": "Imports contacts: saves a full list on the server, adds already registered contacts to the contact list, returns added contacts and their info.\n\nUse [contacts.addContact](..\/methods\/contacts.addContact.md) to add Telegram contacts without actually using their phone number.", + "method_contacts.importContacts_param_contacts_type_Vector<InputContact>": "List of contacts to import", + "method_contacts.deleteContacts": "Deletes several contacts from the list.", + "method_contacts.deleteContacts_param_id_type_Vector<InputUser>": "User ID list", + "method_contacts.deleteByPhones": "Delete contacts by phone number", + "method_contacts.deleteByPhones_param_phones_type_Vector<string>": "Phone numbers", + "method_contacts.block": "Adds a peer to a blocklist, see [here \u00bb](https:\/\/core.telegram.org\/api\/block) for more info.", + "method_contacts.block_param_my_stories_from_type_flags.0?true": "Whether the peer should be added to the story blocklist; if not set, the peer will be added to the main blocklist, see [here \u00bb](https:\/\/core.telegram.org\/api\/block) for more info.", + "method_contacts.block_param_id_type_InputPeer": "Peer", + "method_contacts.unblock": "Deletes a peer from a blocklist, see [here \u00bb](https:\/\/core.telegram.org\/api\/block) for more info.", + "method_contacts.unblock_param_my_stories_from_type_flags.0?true": "Whether the peer should be removed from the story blocklist; if not set, the peer will be removed from the main blocklist, see [here \u00bb](https:\/\/core.telegram.org\/api\/block) for more info.", + "method_contacts.unblock_param_id_type_InputPeer": "Peer", + "method_contacts.getBlocked": "Returns the list of blocked users.", + "method_contacts.getBlocked_param_my_stories_from_type_flags.0?true": "Whether to fetch the story blocklist; if not set, will fetch the main blocklist. See [here \u00bb](https:\/\/core.telegram.org\/api\/block) for differences between the two.", + "method_contacts.getBlocked_param_offset_type_int": "The number of list elements to be skipped", + "method_contacts.getBlocked_param_limit_type_int": "The number of list elements to be returned", + "method_contacts.search": "Returns users found by username substring.", + "method_contacts.search_param_q_type_string": "Target substring", + "method_contacts.search_param_limit_type_int": "Maximum number of users to be returned", + "method_contacts.resolveUsername": "Resolve a @username to get peer info", + "method_contacts.resolveUsername_param_username_type_string": "@username to resolve", + "method_contacts.resolveUsername_param_referer_type_flags.0?string": "[Referrer ID from referral links \u00bb](https:\/\/core.telegram.org\/api\/links#referral-links).", + "method_contacts.getTopPeers": "Get most used peers", + "method_contacts.getTopPeers_param_correspondents_type_flags.0?true": "Users we've chatted most frequently with", + "method_contacts.getTopPeers_param_bots_pm_type_flags.1?true": "Most used bots", + "method_contacts.getTopPeers_param_bots_inline_type_flags.2?true": "Most used inline bots", + "method_contacts.getTopPeers_param_phone_calls_type_flags.3?true": "Most frequently called users", + "method_contacts.getTopPeers_param_forward_users_type_flags.4?true": "Users to which the users often forwards messages to", + "method_contacts.getTopPeers_param_forward_chats_type_flags.5?true": "Chats to which the users often forwards messages to", + "method_contacts.getTopPeers_param_groups_type_flags.10?true": "Often-opened groups and supergroups", + "method_contacts.getTopPeers_param_channels_type_flags.15?true": "Most frequently visited channels", + "method_contacts.getTopPeers_param_bots_app_type_flags.16?true": "Most frequently used [Main Mini Bot Apps](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-apps).", + "method_contacts.getTopPeers_param_offset_type_int": "Offset for [pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_contacts.getTopPeers_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_contacts.getTopPeers_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "method_contacts.resetTopPeerRating": "Reset [rating](https:\/\/core.telegram.org\/api\/top-rating) of top peer", + "method_contacts.resetTopPeerRating_param_category_type_TopPeerCategory": "Top peer category", + "method_contacts.resetTopPeerRating_param_peer_type_InputPeer": "Peer whose rating should be reset", + "method_contacts.resetSaved": "Removes all contacts without an associated Telegram account.", + "method_contacts.getSaved": "Get all contacts, requires a [takeout session, see here \u00bb for more info](https:\/\/core.telegram.org\/api\/takeout).", + "method_contacts.toggleTopPeers": "Enable\/disable [top peers](https:\/\/core.telegram.org\/api\/top-rating)", + "method_contacts.toggleTopPeers_param_enabled_type_Bool": "Enable\/disable", + "method_contacts.addContact": "Add an existing telegram user as contact.\n\nUse [contacts.importContacts](..\/methods\/contacts.importContacts.md) to add contacts by phone number, without knowing their Telegram ID.", + "method_contacts.addContact_param_add_phone_privacy_exception_type_flags.0?true": "Allow the other user to see our phone number?", + "method_contacts.addContact_param_id_type_InputUser": "Telegram ID of the other user", + "method_contacts.addContact_param_first_name_type_string": "First name", + "method_contacts.addContact_param_last_name_type_string": "Last name", + "method_contacts.addContact_param_phone_type_string": "User's phone number, may be omitted to simply add the user to the contact list, without a phone number.", + "method_contacts.acceptContact": "If the [add contact action bar is active](https:\/\/core.telegram.org\/api\/action-bar#add-contact), add that user as contact", + "method_contacts.acceptContact_param_id_type_InputUser": "The user to add as contact", + "method_contacts.getLocated": "Get users and geochats near you, see [here \u00bb](https:\/\/core.telegram.org\/api\/nearby) for more info.", + "method_contacts.getLocated_param_background_type_flags.1?true": "While the geolocation of the current user is public, clients should update it in the background every half-an-hour or so, while setting this flag.
Do this only if the new location is more than 1 KM away from the previous one, or if the previous location is unknown.", + "method_contacts.getLocated_param_geo_point_type_InputGeoPoint": "Geolocation", + "method_contacts.getLocated_param_self_expires_type_flags.0?int": "If set, the geolocation of the current user will be public for the specified number of seconds; pass 0x7fffffff to disable expiry, 0 to make the current geolocation private; if the flag isn't set, no changes will be applied.", + "method_contacts.blockFromReplies": "Stop getting notifications about [discussion replies](https:\/\/core.telegram.org\/api\/discussion) of a certain user in `@replies`", + "method_contacts.blockFromReplies_param_delete_message_type_flags.0?true": "Whether to delete the specified message as well", + "method_contacts.blockFromReplies_param_delete_history_type_flags.1?true": "Whether to delete all `@replies` messages from this user as well", + "method_contacts.blockFromReplies_param_report_spam_type_flags.2?true": "Whether to also report this user for spam", + "method_contacts.blockFromReplies_param_msg_id_type_int": "ID of the message in the [@replies](https:\/\/core.telegram.org\/api\/discussion#replies) chat", + "method_contacts.resolvePhone": "Resolve a phone number to get user info, if their privacy settings allow it.", + "method_contacts.resolvePhone_param_phone_type_string": "Phone number in international format, possibly obtained from a [phone number deep link](https:\/\/core.telegram.org\/api\/links#phone-number-links).", + "method_contacts.exportContactToken": "Generates a [temporary profile link](https:\/\/core.telegram.org\/api\/links#temporary-profile-links) for the currently logged-in user.", + "method_contacts.importContactToken": "Obtain user info from a [temporary profile link](https:\/\/core.telegram.org\/api\/links#temporary-profile-links).", + "method_contacts.importContactToken_param_token_type_string": "The token extracted from the [temporary profile link](https:\/\/core.telegram.org\/api\/links#temporary-profile-links).", + "method_contacts.editCloseFriends": "Edit the [close friends list, see here \u00bb](https:\/\/core.telegram.org\/api\/privacy) for more info.", + "method_contacts.editCloseFriends_param_id_type_Vector<long>": "Full list of user IDs of close friends, see [here](https:\/\/core.telegram.org\/api\/privacy) for more info.", + "method_contacts.setBlocked": "Replace the contents of an entire [blocklist, see here for more info \u00bb](https:\/\/core.telegram.org\/api\/block).", + "method_contacts.setBlocked_param_my_stories_from_type_flags.0?true": "Whether to edit the story blocklist; if not set, will edit the main blocklist. See [here \u00bb](https:\/\/core.telegram.org\/api\/block) for differences between the two.", + "method_contacts.setBlocked_param_id_type_Vector<InputPeer>": "Full content of the blocklist.", + "method_contacts.setBlocked_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_contacts.getBirthdays": "Fetch all users with birthdays that fall within +1\/-1 days, relative to the current day: this method should be invoked by clients every 6-8 hours, and if the result is non-empty, it should be used to appropriately update locally cached birthday information in [user](..\/constructors\/user.md).`birthday`.\n\n[See here \u00bb](https:\/\/core.telegram.org\/api\/profile#birthday) for more info.", + "method_contacts.getSponsoredPeers": "Obtain a list of sponsored peer search results for a given query", + "method_contacts.getSponsoredPeers_param_q_type_string": "The query", + "method_messages.getMessages": "Returns the list of messages by their IDs.", + "method_messages.getMessages_param_id_type_Vector<InputMessage>": "Message ID list", + "method_messages.getDialogs": "Returns the current user dialog list.", + "method_messages.getDialogs_param_exclude_pinned_type_flags.0?true": "Exclude pinned dialogs", + "method_messages.getDialogs_param_folder_id_type_flags.1?int": "[Peer folder ID, for more info click here](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "method_messages.getDialogs_param_offset_date_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getDialogs_param_offset_id_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets) (`top_message` ID used for pagination)", + "method_messages.getDialogs_param_offset_peer_type_InputPeer": "[Offset peer for pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getDialogs_param_limit_type_int": "Number of list elements to be returned", + "method_messages.getDialogs_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "method_messages.getHistory": "Returns the conversation history with one interlocutor \/ within a chat", + "method_messages.getHistory_param_peer_type_InputPeer": "Target peer", + "method_messages.getHistory_param_offset_id_type_int": "Only return messages starting from the specified message ID", + "method_messages.getHistory_param_offset_date_type_int": "Only return messages sent before the specified date", + "method_messages.getHistory_param_add_offset_type_int": "Number of list elements to be skipped, negative values are also accepted.", + "method_messages.getHistory_param_limit_type_int": "Number of results to return", + "method_messages.getHistory_param_max_id_type_int": "If a positive value was transferred, the method will return only messages with IDs less than **max\\_id**", + "method_messages.getHistory_param_min_id_type_int": "If a positive value was transferred, the method will return only messages with IDs more than **min\\_id**", + "method_messages.getHistory_param_hash_type_long": "[Result hash](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.search": "Search for messages.", + "method_messages.search_param_peer_type_InputPeer": "User or chat, histories with which are searched, or [(inputPeerEmpty)](..\/constructors\/inputPeerEmpty.md) constructor to search in all private chats and [normal groups (not channels) \u00bb](https:\/\/core.telegram.org\/api\/channel). Use [messages.searchGlobal](..\/methods\/messages.searchGlobal.md) to search globally in all chats, groups, supergroups and channels.", + "method_messages.search_param_q_type_string": "Text search request", + "method_messages.search_param_from_id_type_flags.0?InputPeer": "Only return messages sent by the specified user ID", + "method_messages.search_param_saved_peer_id_type_flags.2?InputPeer": "Search within the [saved message dialog \u00bb](https:\/\/core.telegram.org\/api\/saved-messages) with this ID.", + "method_messages.search_param_saved_reaction_type_flags.3?Vector<Reaction>": "You may search for [saved messages tagged \u00bb](https:\/\/core.telegram.org\/api\/saved-messages#tags) with one or more reactions using this flag.", + "method_messages.search_param_top_msg_id_type_flags.1?int": "[Thread ID](https:\/\/core.telegram.org\/api\/threads)", + "method_messages.search_param_filter_type_MessagesFilter": "Filter to return only specified message types", + "method_messages.search_param_min_date_type_int": "If a positive value was transferred, only messages with a sending date bigger than the transferred one will be returned", + "method_messages.search_param_max_date_type_int": "If a positive value was transferred, only messages with a sending date smaller than the transferred one will be returned", + "method_messages.search_param_offset_id_type_int": "Only return messages starting from the specified message ID", + "method_messages.search_param_add_offset_type_int": "[Additional offset](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.search_param_limit_type_int": "[Number of results to return](https:\/\/core.telegram.org\/api\/offsets), can be 0 to only return the message counter.", + "method_messages.search_param_max_id_type_int": "[Maximum message ID to return](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.search_param_min_id_type_int": "[Minimum message ID to return](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.search_param_hash_type_long": "[Hash](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.readHistory": "Marks message history as read.", + "method_messages.readHistory_param_peer_type_InputPeer": "Target user or group", + "method_messages.readHistory_param_max_id_type_int": "If a positive value is passed, only messages with identifiers less or equal than the given one will be read", + "method_messages.deleteHistory": "Deletes communication history.", + "method_messages.deleteHistory_param_just_clear_type_flags.0?true": "Just clear history for the current user, without actually removing messages for every chat user", + "method_messages.deleteHistory_param_revoke_type_flags.1?true": "Whether to delete the message history for all chat participants", + "method_messages.deleteHistory_param_peer_type_InputPeer": "User or chat, communication history of which will be deleted", + "method_messages.deleteHistory_param_max_id_type_int": "Maximum ID of message to delete", + "method_messages.deleteHistory_param_min_date_type_flags.2?int": "Delete all messages newer than this UNIX timestamp", + "method_messages.deleteHistory_param_max_date_type_flags.3?int": "Delete all messages older than this UNIX timestamp", + "method_messages.deleteMessages": "Deletes messages by their identifiers.", + "method_messages.deleteMessages_param_revoke_type_flags.0?true": "Whether to delete messages for all participants of the chat", + "method_messages.deleteMessages_param_id_type_Vector<int>": "Message ID list", + "method_messages.receivedMessages": "Confirms receipt of messages by a client, cancels PUSH-notification sending.", + "method_messages.receivedMessages_param_max_id_type_int": "Maximum message ID available in a client.", + "method_messages.setTyping": "Sends a current user typing event (see [SendMessageAction](..\/types\/SendMessageAction.md) for all event types) to a conversation partner or group.", + "method_messages.setTyping_param_peer_type_InputPeer": "Target user or group", + "method_messages.setTyping_param_top_msg_id_type_flags.0?int": "[Topic ID](https:\/\/core.telegram.org\/api\/threads)", + "method_messages.setTyping_param_action_type_SendMessageAction": "Type of action", + "method_messages.sendMessage": "Sends a message to a chat", + "method_messages.sendMessage_param_no_webpage_type_flags.1?true": "Set this flag to disable generation of the webpage preview", + "method_messages.sendMessage_param_silent_type_flags.5?true": "Send this message silently (no notifications for the receivers)", + "method_messages.sendMessage_param_background_type_flags.6?true": "Send this message as background message", + "method_messages.sendMessage_param_clear_draft_type_flags.7?true": "Clear the draft field", + "method_messages.sendMessage_param_noforwards_type_flags.14?true": "Only for bots, disallows forwarding and saving of the messages, even if the destination chat doesn't have [content protection](https:\/\/telegram.org\/blog\/protected-content-delete-by-date-and-more) enabled", + "method_messages.sendMessage_param_update_stickersets_order_type_flags.15?true": "Whether to move used stickersets to top, [see here for more info on this flag \u00bb](https:\/\/core.telegram.org\/api\/stickers#recent-stickersets)", + "method_messages.sendMessage_param_invert_media_type_flags.16?true": "If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.", + "method_messages.sendMessage_param_allow_paid_floodskip_type_flags.19?true": "Bots only: if set, allows sending up to 1000 messages per second, ignoring [broadcasting limits](https:\/\/core.telegram.org\/bots\/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once) for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance.", + "method_messages.sendMessage_param_peer_type_InputPeer": "The destination where the message will be sent", + "method_messages.sendMessage_param_reply_to_type_flags.0?InputReplyTo": "If set, indicates that the message should be sent in reply to the specified message or story.
Also used to quote other messages.", + "method_messages.sendMessage_param_message_type_string": "The message", + "method_messages.sendMessage_param_random_id_type_long": "Unique client message ID required to prevent message resending", + "method_messages.sendMessage_param_reply_markup_type_flags.2?ReplyMarkup": "Reply markup for sending bot buttons", + "method_messages.sendMessage_param_entities_type_flags.3?Vector<MessageEntity>": "Message [entities](https:\/\/core.telegram.org\/api\/entities) for sending styled text", + "method_messages.sendMessage_param_schedule_date_type_flags.10?int": "Scheduled message date for [scheduled messages](https:\/\/core.telegram.org\/api\/scheduled-messages)", + "method_messages.sendMessage_param_send_as_type_flags.13?InputPeer": "Send this message as the specified peer", + "method_messages.sendMessage_param_quick_reply_shortcut_type_flags.17?InputQuickReplyShortcut": "Add the message to the specified [quick reply shortcut \u00bb](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts), instead.", + "method_messages.sendMessage_param_effect_type_flags.18?long": "Specifies a [message effect \u00bb](https:\/\/core.telegram.org\/api\/effects) to use for the message.", + "method_messages.sendMessage_param_allow_paid_stars_type_flags.21?long": "For [paid messages \u00bb](https:\/\/core.telegram.org\/api\/paid-messages), specifies the amount of [Telegram Stars](https:\/\/core.telegram.org\/api\/stars) the user has agreed to pay in order to send the message.", + "method_messages.sendMessage_param_suggested_post_type_flags.22?SuggestedPost": "Used to [suggest a post to a channel, see here \u00bb](https:\/\/core.telegram.org\/api\/suggested-posts) for more info on the full flow.", + "method_messages.sendMedia": "Send a media", + "method_messages.sendMedia_param_silent_type_flags.5?true": "Send message silently (no notification should be triggered)", + "method_messages.sendMedia_param_background_type_flags.6?true": "Send message in background", + "method_messages.sendMedia_param_clear_draft_type_flags.7?true": "Clear the draft", + "method_messages.sendMedia_param_noforwards_type_flags.14?true": "Only for bots, disallows forwarding and saving of the messages, even if the destination chat doesn't have [content protection](https:\/\/telegram.org\/blog\/protected-content-delete-by-date-and-more) enabled", + "method_messages.sendMedia_param_update_stickersets_order_type_flags.15?true": "Whether to move used stickersets to top, [see here for more info on this flag \u00bb](https:\/\/core.telegram.org\/api\/stickers#recent-stickersets)", + "method_messages.sendMedia_param_invert_media_type_flags.16?true": "If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.", + "method_messages.sendMedia_param_allow_paid_floodskip_type_flags.19?true": "Bots only: if set, allows sending up to 1000 messages per second, ignoring [broadcasting limits](https:\/\/core.telegram.org\/bots\/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once) for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance.", + "method_messages.sendMedia_param_peer_type_InputPeer": "Destination", + "method_messages.sendMedia_param_reply_to_type_flags.0?InputReplyTo": "If set, indicates that the message should be sent in reply to the specified message or story.", + "method_messages.sendMedia_param_media_type_InputMedia": "Attached media", + "method_messages.sendMedia_param_message_type_string": "Caption", + "method_messages.sendMedia_param_random_id_type_long": "Random ID to avoid resending the same message", + "method_messages.sendMedia_param_reply_markup_type_flags.2?ReplyMarkup": "Reply markup for bot keyboards", + "method_messages.sendMedia_param_entities_type_flags.3?Vector<MessageEntity>": "Message [entities](https:\/\/core.telegram.org\/api\/entities) for styled text", + "method_messages.sendMedia_param_schedule_date_type_flags.10?int": "Scheduled message date for [scheduled messages](https:\/\/core.telegram.org\/api\/scheduled-messages)", + "method_messages.sendMedia_param_send_as_type_flags.13?InputPeer": "Send this message as the specified peer", + "method_messages.sendMedia_param_quick_reply_shortcut_type_flags.17?InputQuickReplyShortcut": "Add the message to the specified [quick reply shortcut \u00bb](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts), instead.", + "method_messages.sendMedia_param_effect_type_flags.18?long": "Specifies a [message effect \u00bb](https:\/\/core.telegram.org\/api\/effects) to use for the message.", + "method_messages.sendMedia_param_allow_paid_stars_type_flags.21?long": "For [paid messages \u00bb](https:\/\/core.telegram.org\/api\/paid-messages), specifies the amount of [Telegram Stars](https:\/\/core.telegram.org\/api\/stars) the user has agreed to pay in order to send the message.", + "method_messages.sendMedia_param_suggested_post_type_flags.22?SuggestedPost": "Used to [suggest a post to a channel, see here \u00bb](https:\/\/core.telegram.org\/api\/suggested-posts) for more info on the full flow.", + "method_messages.forwardMessages": "Forwards messages by their IDs.", + "method_messages.forwardMessages_param_silent_type_flags.5?true": "Whether to send messages silently (no notification will be triggered on the destination clients)", + "method_messages.forwardMessages_param_background_type_flags.6?true": "Whether to send the message in background", + "method_messages.forwardMessages_param_with_my_score_type_flags.8?true": "When forwarding games, whether to include your score in the game", + "method_messages.forwardMessages_param_drop_author_type_flags.11?true": "Whether to forward messages without quoting the original author", + "method_messages.forwardMessages_param_drop_media_captions_type_flags.12?true": "Whether to strip captions from media", + "method_messages.forwardMessages_param_noforwards_type_flags.14?true": "Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn't have [content protection](https:\/\/telegram.org\/blog\/protected-content-delete-by-date-and-more) enabled", + "method_messages.forwardMessages_param_allow_paid_floodskip_type_flags.19?true": "Bots only: if set, allows sending up to 1000 messages per second, ignoring [broadcasting limits](https:\/\/core.telegram.org\/bots\/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once) for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance.", + "method_messages.forwardMessages_param_from_peer_type_InputPeer": "Source of messages", + "method_messages.forwardMessages_param_id_type_Vector<int>": "IDs of messages", + "method_messages.forwardMessages_param_random_id_type_Vector<long>": "Random ID to prevent resending of messages", + "method_messages.forwardMessages_param_to_peer_type_InputPeer": "Destination peer", + "method_messages.forwardMessages_param_top_msg_id_type_flags.9?int": "Destination [forum topic](https:\/\/core.telegram.org\/api\/forum#forum-topics)", + "method_messages.forwardMessages_param_reply_to_type_flags.22?InputReplyTo": "Can only contain an [inputReplyToMonoForum](..\/constructors\/inputReplyToMonoForum.md), to forward messages to a [monoforum topic](https:\/\/core.telegram.org\/api\/monoforum) (mutually exclusive with `top_msg_id`).", + "method_messages.forwardMessages_param_schedule_date_type_flags.10?int": "Scheduled message date for scheduled messages", + "method_messages.forwardMessages_param_send_as_type_flags.13?InputPeer": "Forward the messages as the specified peer", + "method_messages.forwardMessages_param_quick_reply_shortcut_type_flags.17?InputQuickReplyShortcut": "Add the messages to the specified [quick reply shortcut \u00bb](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts), instead.", + "method_messages.forwardMessages_param_video_timestamp_type_flags.20?int": "Start playing the video at the specified timestamp (seconds).", + "method_messages.forwardMessages_param_allow_paid_stars_type_flags.21?long": "For [paid messages \u00bb](https:\/\/core.telegram.org\/api\/paid-messages), specifies the amount of [Telegram Stars](https:\/\/core.telegram.org\/api\/stars) the user has agreed to pay in order to send the message.", + "method_messages.forwardMessages_param_suggested_post_type_flags.23?SuggestedPost": "Used to [suggest a post to a channel, see here \u00bb](https:\/\/core.telegram.org\/api\/suggested-posts) for more info on the full flow.", + "method_messages.reportSpam": "Report a new incoming chat for spam, if the [peer settings](..\/constructors\/peerSettings.md) of the chat allow us to do that", + "method_messages.reportSpam_param_peer_type_InputPeer": "Peer to report", + "method_messages.getPeerSettings": "Get peer settings", + "method_messages.getPeerSettings_param_peer_type_InputPeer": "The peer", + "method_messages.report": "Report a message in a chat for violation of telegram's Terms of Service", + "method_messages.report_param_peer_type_InputPeer": "Peer", + "method_messages.report_param_id_type_Vector<int>": "IDs of messages to report", + "method_messages.report_param_option_type_bytes": "Menu option, intially empty", + "method_messages.report_param_message_type_string": "Comment for report moderation", + "method_messages.getChats": "Returns chat basic info on their IDs.", + "method_messages.getChats_param_id_type_Vector<long>": "List of chat IDs", + "method_messages.getFullChat": "Get full info about a [basic group](https:\/\/core.telegram.org\/api\/channel#basic-groups).", + "method_messages.getFullChat_param_chat_id_type_long": "[Basic group](https:\/\/core.telegram.org\/api\/channel#basic-groups) ID.", + "method_messages.editChatTitle": "Changes chat name and sends a service message on it.", + "method_messages.editChatTitle_param_chat_id_type_long": "Chat ID", + "method_messages.editChatTitle_param_title_type_string": "New chat name, different from the old one", + "method_messages.editChatPhoto": "Changes chat photo and sends a service message on it", + "method_messages.editChatPhoto_param_chat_id_type_long": "Chat ID", + "method_messages.editChatPhoto_param_photo_type_InputChatPhoto": "Photo to be set", + "method_messages.addChatUser": "Adds a user to a chat and sends a service message on it.", + "method_messages.addChatUser_param_chat_id_type_long": "Chat ID", + "method_messages.addChatUser_param_user_id_type_InputUser": "User ID to be added", + "method_messages.addChatUser_param_fwd_limit_type_int": "Number of last messages to be forwarded", + "method_messages.deleteChatUser": "Deletes a user from a chat and sends a service message on it.", + "method_messages.deleteChatUser_param_revoke_history_type_flags.0?true": "Remove the entire chat history of the specified user in this chat.", + "method_messages.deleteChatUser_param_chat_id_type_long": "Chat ID", + "method_messages.deleteChatUser_param_user_id_type_InputUser": "User ID to be deleted", + "method_messages.createChat": "Creates a new chat.", + "method_messages.createChat_param_users_type_Vector<InputUser>": "List of user IDs to be invited", + "method_messages.createChat_param_title_type_string": "Chat name", + "method_messages.createChat_param_ttl_period_type_flags.0?int": "Time-to-live of all messages that will be sent in the chat: once message.date+message.ttl\\_period === time(), the message will be deleted on the server, and must be deleted locally as well. You can use [messages.setDefaultHistoryTTL](..\/methods\/messages.setDefaultHistoryTTL.md) to edit this value later.", + "method_messages.getDhConfig": "Returns configuration parameters for Diffie-Hellman key generation. Can also return a random sequence of bytes of required length.", + "method_messages.getDhConfig_param_version_type_int": "Value of the **version** parameter from [messages.dhConfig](..\/constructors\/messages.dhConfig.md), available at the client", + "method_messages.getDhConfig_param_random_length_type_int": "Length of the required random sequence", + "method_messages.requestEncryption": "Sends a request to start a secret chat to the user.", + "method_messages.requestEncryption_param_user_id_type_InputUser": "User ID", + "method_messages.requestEncryption_param_random_id_type_int": "Unique client request ID required to prevent resending. This also doubles as the chat ID.", + "method_messages.requestEncryption_param_g_a_type_bytes": "`A = g ^ a mod p`, see [Wikipedia](https:\/\/en.wikipedia.org\/wiki\/Diffie%E2%80%93Hellman_key_exchange)", + "method_messages.acceptEncryption": "Confirms creation of a secret chat", + "method_messages.acceptEncryption_param_peer_type_InputEncryptedChat": "Secret chat ID", + "method_messages.acceptEncryption_param_g_b_type_bytes": "`B = g ^ b mod p`, see [Wikipedia](https:\/\/en.wikipedia.org\/wiki\/Diffie%E2%80%93Hellman_key_exchange)", + "method_messages.acceptEncryption_param_key_fingerprint_type_long": "64-bit fingerprint of the received key", + "method_messages.discardEncryption": "Cancels a request for creation and\/or delete info on secret chat.", + "method_messages.discardEncryption_param_delete_history_type_flags.0?true": "Whether to delete the entire chat history for the other user as well", + "method_messages.discardEncryption_param_chat_id_type_int": "Secret chat ID", + "method_messages.setEncryptedTyping": "Send typing event by the current user to a secret chat.", + "method_messages.setEncryptedTyping_param_peer_type_InputEncryptedChat": "Secret chat ID", + "method_messages.setEncryptedTyping_param_typing_type_Bool": "Typing.
**Possible values**:
[(boolTrue)](..\/constructors\/boolTrue.md), if the user started typing and more than **5 seconds** have passed since the last request
[(boolFalse)](..\/constructors\/boolFalse.md), if the user stopped typing", + "method_messages.readEncryptedHistory": "Marks message history within a secret chat as read.", + "method_messages.readEncryptedHistory_param_peer_type_InputEncryptedChat": "Secret chat ID", + "method_messages.readEncryptedHistory_param_max_date_type_int": "Maximum date value for received messages in history", + "method_messages.sendEncrypted": "Sends a text message to a secret chat.", + "method_messages.sendEncrypted_param_silent_type_flags.0?true": "Send encrypted message without a notification", + "method_messages.sendEncrypted_param_peer_type_InputEncryptedChat": "Secret chat ID", + "method_messages.sendEncrypted_param_random_id_type_long": "Unique client message ID, necessary to avoid message resending", + "method_messages.sendEncrypted_param_data_type_bytes": "TL-serialization of [DecryptedMessage](..\/types\/DecryptedMessage.md) type, encrypted with a key that was created during chat initialization", + "method_messages.sendEncryptedFile": "Sends a message with a file attachment to a secret chat", + "method_messages.sendEncryptedFile_param_silent_type_flags.0?true": "Whether to send the file without triggering a notification", + "method_messages.sendEncryptedFile_param_peer_type_InputEncryptedChat": "Secret chat ID", + "method_messages.sendEncryptedFile_param_random_id_type_long": "Unique client message ID necessary to prevent message resending", + "method_messages.sendEncryptedFile_param_data_type_bytes": "TL-serialization of [DecryptedMessage](..\/types\/DecryptedMessage.md) type, encrypted with a key generated during chat initialization", + "method_messages.sendEncryptedFile_param_file_type_InputEncryptedFile": "File attachment for the secret chat", + "method_messages.sendEncryptedService": "Sends a service message to a secret chat.", + "method_messages.sendEncryptedService_param_peer_type_InputEncryptedChat": "Secret chat ID", + "method_messages.sendEncryptedService_param_random_id_type_long": "Unique client message ID required to prevent message resending", + "method_messages.sendEncryptedService_param_data_type_bytes": "TL-serialization of [DecryptedMessage](..\/types\/DecryptedMessage.md) type, encrypted with a key generated during chat initialization", + "method_messages.receivedQueue": "Confirms receipt of messages in a secret chat by client, cancels push notifications. \nThe method returns a list of **random\\_id**s of messages for which push notifications were cancelled.", + "method_messages.receivedQueue_param_max_qts_type_int": "Maximum qts value available at the client", + "method_messages.reportEncryptedSpam": "Report a secret chat for spam", + "method_messages.reportEncryptedSpam_param_peer_type_InputEncryptedChat": "The secret chat to report", + "method_messages.readMessageContents": "Notifies the sender about the recipient having listened a voice message or watched a video, emitting an [updateReadMessagesContents](..\/constructors\/updateReadMessagesContents.md).", + "method_messages.readMessageContents_param_id_type_Vector<int>": "Message ID list", + "method_messages.getStickers": "Get stickers by emoji", + "method_messages.getStickers_param_emoticon_type_string": "The emoji", + "method_messages.getStickers_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.getAllStickers": "Get all installed stickers", + "method_messages.getAllStickers_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.getWebPagePreview": "Get preview of webpage", + "method_messages.getWebPagePreview_param_message_type_string": "Message from which to extract the preview", + "method_messages.getWebPagePreview_param_entities_type_flags.3?Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "method_messages.exportChatInvite": "Export an invite link for a chat", + "method_messages.exportChatInvite_param_legacy_revoke_permanent_type_flags.2?true": "Legacy flag, reproducing legacy behavior of this method: if set, revokes all previous links before creating a new one. Kept for bot API BC, should not be used by modern clients.", + "method_messages.exportChatInvite_param_request_needed_type_flags.3?true": "Whether admin confirmation is required before admitting each separate user into the chat", + "method_messages.exportChatInvite_param_peer_type_InputPeer": "Chat", + "method_messages.exportChatInvite_param_expire_date_type_flags.0?int": "Expiration date", + "method_messages.exportChatInvite_param_usage_limit_type_flags.1?int": "Maximum number of users that can join using this link", + "method_messages.exportChatInvite_param_title_type_flags.4?string": "Description of the invite link, visible only to administrators", + "method_messages.exportChatInvite_param_subscription_pricing_type_flags.5?StarsSubscriptionPricing": "For [Telegram Star subscriptions \u00bb](https:\/\/core.telegram.org\/api\/stars#star-subscriptions), contains the pricing of the subscription the user must activate to join the private channel.", + "method_messages.checkChatInvite": "Check the validity of a chat invite link and get basic info about it", + "method_messages.checkChatInvite_param_hash_type_string": "Invite hash from [chat invite deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-invite-links).", + "method_messages.importChatInvite": "Import a chat invite and join a private chat\/supergroup\/channel", + "method_messages.importChatInvite_param_hash_type_string": "`hash` from a [chat invite deep link](https:\/\/core.telegram.org\/api\/links#chat-invite-links)", + "method_messages.getStickerSet": "Get info about a stickerset", + "method_messages.getStickerSet_param_stickerset_type_InputStickerSet": "Stickerset", + "method_messages.getStickerSet_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "method_messages.installStickerSet": "Install a stickerset", + "method_messages.installStickerSet_param_stickerset_type_InputStickerSet": "Stickerset to install", + "method_messages.installStickerSet_param_archived_type_Bool": "Whether to archive stickerset", + "method_messages.uninstallStickerSet": "Uninstall a stickerset", + "method_messages.uninstallStickerSet_param_stickerset_type_InputStickerSet": "The stickerset to uninstall", + "method_messages.startBot": "Start a conversation with a bot using a [deep linking parameter](https:\/\/core.telegram.org\/api\/links#bot-links)", + "method_messages.startBot_param_bot_type_InputUser": "The bot", + "method_messages.startBot_param_peer_type_InputPeer": "The chat where to start the bot, can be the bot's private chat or a group", + "method_messages.startBot_param_random_id_type_long": "Random ID to avoid resending the same message", + "method_messages.startBot_param_start_param_type_string": "[Deep linking parameter](https:\/\/core.telegram.org\/api\/links#bot-links)", + "method_messages.getMessagesViews": "Get and increase the view counter of a message sent or forwarded from a [channel](https:\/\/core.telegram.org\/api\/channel)", + "method_messages.getMessagesViews_param_peer_type_InputPeer": "Peer where the message was found", + "method_messages.getMessagesViews_param_id_type_Vector<int>": "ID of message", + "method_messages.getMessagesViews_param_increment_type_Bool": "Whether to mark the message as viewed and increment the view counter", + "method_messages.editChatAdmin": "Make a user admin in a [basic group](https:\/\/core.telegram.org\/api\/channel#basic-groups).", + "method_messages.editChatAdmin_param_chat_id_type_long": "The ID of the group", + "method_messages.editChatAdmin_param_user_id_type_InputUser": "The user to make admin", + "method_messages.editChatAdmin_param_is_admin_type_Bool": "Whether to make them admin", + "method_messages.migrateChat": "Turn a [basic group into a supergroup](https:\/\/core.telegram.org\/api\/channel#migration)", + "method_messages.migrateChat_param_chat_id_type_long": "[Basic group](https:\/\/core.telegram.org\/api\/channel#basic-groups) to migrate", + "method_messages.searchGlobal": "Search for messages and peers globally", + "method_messages.searchGlobal_param_broadcasts_only_type_flags.1?true": "If set, only returns results from channels (used in the [global channel search tab \u00bb](https:\/\/core.telegram.org\/api\/search#global-search)).", + "method_messages.searchGlobal_param_groups_only_type_flags.2?true": "Whether to search only in groups", + "method_messages.searchGlobal_param_users_only_type_flags.3?true": "Whether to search only in private chats", + "method_messages.searchGlobal_param_folder_id_type_flags.0?int": "[Peer folder ID, for more info click here](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "method_messages.searchGlobal_param_q_type_string": "Query", + "method_messages.searchGlobal_param_filter_type_MessagesFilter": "Global search filter", + "method_messages.searchGlobal_param_min_date_type_int": "If a positive value was specified, the method will return only messages with date bigger than min\\_date", + "method_messages.searchGlobal_param_max_date_type_int": "If a positive value was transferred, the method will return only messages with date smaller than max\\_date", + "method_messages.searchGlobal_param_offset_rate_type_int": "Initially 0, then set to the [`next_rate` parameter of messages.messagesSlice](..\/constructors\/messages.messagesSlice.md), or if that is absent, the `date` of the last returned message.", + "method_messages.searchGlobal_param_offset_peer_type_InputPeer": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.searchGlobal_param_offset_id_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.searchGlobal_param_limit_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.reorderStickerSets": "Reorder installed stickersets", + "method_messages.reorderStickerSets_param_masks_type_flags.0?true": "Reorder mask stickersets", + "method_messages.reorderStickerSets_param_emojis_type_flags.1?true": "Reorder [custom emoji stickersets](https:\/\/core.telegram.org\/api\/custom-emoji)", + "method_messages.reorderStickerSets_param_order_type_Vector<long>": "New stickerset order by stickerset IDs", + "method_messages.getDocumentByHash": "Get a document by its SHA256 hash, mainly used for gifs", + "method_messages.getDocumentByHash_param_sha256_type_bytes": "SHA256 of file", + "method_messages.getDocumentByHash_param_size_type_long": "Size of the file in bytes", + "method_messages.getDocumentByHash_param_mime_type_type_string": "Mime type", + "method_messages.getSavedGifs": "Get saved GIFs.", + "method_messages.getSavedGifs_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.saveGif": "Add GIF to saved gifs list", + "method_messages.saveGif_param_id_type_InputDocument": "GIF to save", + "method_messages.saveGif_param_unsave_type_Bool": "Whether to remove GIF from saved gifs list", + "method_messages.getInlineBotResults": "Query an inline bot", + "method_messages.getInlineBotResults_param_bot_type_InputUser": "The bot to query", + "method_messages.getInlineBotResults_param_peer_type_InputPeer": "The currently opened chat", + "method_messages.getInlineBotResults_param_geo_point_type_flags.0?InputGeoPoint": "The geolocation, if requested", + "method_messages.getInlineBotResults_param_query_type_string": "The query", + "method_messages.getInlineBotResults_param_offset_type_string": "The offset within the results, will be passed directly as-is to the bot.", + "method_messages.setInlineBotResults": "Answer an inline query, for bots only", + "method_messages.setInlineBotResults_param_gallery_type_flags.0?true": "Set this flag if the results are composed of media files", + "method_messages.setInlineBotResults_param_private_type_flags.1?true": "Set this flag if results may be cached on the server side only for the user that sent the query. By default, results may be returned to any user who sends the same query", + "method_messages.setInlineBotResults_param_query_id_type_long": "Unique identifier for the answered query", + "method_messages.setInlineBotResults_param_results_type_Vector<InputBotInlineResult>": "Vector of results for the inline query", + "method_messages.setInlineBotResults_param_cache_time_type_int": "The maximum amount of time in seconds that the result of the inline query may be cached on the server. Defaults to 300.", + "method_messages.setInlineBotResults_param_next_offset_type_flags.2?string": "Pass the offset that a client should send in the next query with the same text to receive more results. Pass an empty string if there are no more results or if you don't support pagination. Offset length can't exceed 64 bytes.", + "method_messages.setInlineBotResults_param_switch_pm_type_flags.3?InlineBotSwitchPM": "If passed, clients will display a button on top of the remaining inline result list with the specified text, that switches the user to a private chat with the bot and sends the bot a start message with a certain parameter.", + "method_messages.setInlineBotResults_param_switch_webview_type_flags.4?InlineBotWebView": "If passed, clients will display a button on top of the remaining inline result list with the specified text, that switches the user to the specified [inline mode mini app](https:\/\/core.telegram.org\/api\/bots\/webapps#inline-mode-mini-apps).", + "method_messages.sendInlineBotResult": "Send a result obtained using [messages.getInlineBotResults](..\/methods\/messages.getInlineBotResults.md).", + "method_messages.sendInlineBotResult_param_silent_type_flags.5?true": "Whether to send the message silently (no notification will be triggered on the other client)", + "method_messages.sendInlineBotResult_param_background_type_flags.6?true": "Whether to send the message in background", + "method_messages.sendInlineBotResult_param_clear_draft_type_flags.7?true": "Whether to clear the [draft](https:\/\/core.telegram.org\/api\/drafts)", + "method_messages.sendInlineBotResult_param_hide_via_type_flags.11?true": "Whether to hide the `via @botname` in the resulting message (only for bot usernames encountered in the [config](..\/constructors\/config.md))", + "method_messages.sendInlineBotResult_param_peer_type_InputPeer": "Destination", + "method_messages.sendInlineBotResult_param_reply_to_type_flags.0?InputReplyTo": "If set, indicates that the message should be sent in reply to the specified message or story.", + "method_messages.sendInlineBotResult_param_random_id_type_long": "Random ID to avoid resending the same query", + "method_messages.sendInlineBotResult_param_query_id_type_long": "Query ID from [messages.getInlineBotResults](..\/methods\/messages.getInlineBotResults.md)", + "method_messages.sendInlineBotResult_param_id_type_string": "Result ID from [messages.getInlineBotResults](..\/methods\/messages.getInlineBotResults.md)", + "method_messages.sendInlineBotResult_param_schedule_date_type_flags.10?int": "Scheduled message date for scheduled messages", + "method_messages.sendInlineBotResult_param_send_as_type_flags.13?InputPeer": "Send this message as the specified peer", + "method_messages.sendInlineBotResult_param_quick_reply_shortcut_type_flags.17?InputQuickReplyShortcut": "Add the message to the specified [quick reply shortcut \u00bb](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts), instead.", + "method_messages.sendInlineBotResult_param_allow_paid_stars_type_flags.21?long": "For [paid messages \u00bb](https:\/\/core.telegram.org\/api\/paid-messages), specifies the amount of [Telegram Stars](https:\/\/core.telegram.org\/api\/stars) the user has agreed to pay in order to send the message.", + "method_messages.getMessageEditData": "Find out if a media message's caption can be edited", + "method_messages.getMessageEditData_param_peer_type_InputPeer": "Peer where the media was sent", + "method_messages.getMessageEditData_param_id_type_int": "ID of message", + "method_messages.editMessage": "Edit message", + "method_messages.editMessage_param_no_webpage_type_flags.1?true": "Disable webpage preview", + "method_messages.editMessage_param_invert_media_type_flags.16?true": "If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.", + "method_messages.editMessage_param_peer_type_InputPeer": "Where was the message sent", + "method_messages.editMessage_param_id_type_int": "ID of the message to edit", + "method_messages.editMessage_param_message_type_flags.11?string": "New message", + "method_messages.editMessage_param_media_type_flags.14?InputMedia": "New attached media", + "method_messages.editMessage_param_reply_markup_type_flags.2?ReplyMarkup": "Reply markup for inline keyboards", + "method_messages.editMessage_param_entities_type_flags.3?Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "method_messages.editMessage_param_schedule_date_type_flags.15?int": "Scheduled message date for [scheduled messages](https:\/\/core.telegram.org\/api\/scheduled-messages)", + "method_messages.editMessage_param_quick_reply_shortcut_id_type_flags.17?int": "If specified, edits a [quick reply shortcut message, instead \u00bb](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts).", + "method_messages.editInlineBotMessage": "Edit an inline bot message", + "method_messages.editInlineBotMessage_param_no_webpage_type_flags.1?true": "Disable webpage preview", + "method_messages.editInlineBotMessage_param_invert_media_type_flags.16?true": "If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.", + "method_messages.editInlineBotMessage_param_id_type_InputBotInlineMessageID": "Sent inline message ID", + "method_messages.editInlineBotMessage_param_message_type_flags.11?string": "Message", + "method_messages.editInlineBotMessage_param_media_type_flags.14?InputMedia": "Media", + "method_messages.editInlineBotMessage_param_reply_markup_type_flags.2?ReplyMarkup": "Reply markup for inline keyboards", + "method_messages.editInlineBotMessage_param_entities_type_flags.3?Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "method_messages.getBotCallbackAnswer": "Press an inline callback button and get a callback answer from the bot", + "method_messages.getBotCallbackAnswer_param_game_type_flags.1?true": "Whether this is a \"play game\" button", + "method_messages.getBotCallbackAnswer_param_peer_type_InputPeer": "Where was the inline keyboard sent", + "method_messages.getBotCallbackAnswer_param_msg_id_type_int": "ID of the Message with the inline keyboard", + "method_messages.getBotCallbackAnswer_param_data_type_flags.0?bytes": "Callback data", + "method_messages.getBotCallbackAnswer_param_password_type_flags.2?InputCheckPasswordSRP": "For buttons [requiring you to verify your identity with your 2FA password](..\/constructors\/keyboardButtonCallback.md), the SRP payload generated using [SRP](https:\/\/core.telegram.org\/api\/srp).", + "method_messages.setBotCallbackAnswer": "Set the callback answer to a user button press (bots only)", + "method_messages.setBotCallbackAnswer_param_alert_type_flags.1?true": "Whether to show the message as a popup instead of a toast notification", + "method_messages.setBotCallbackAnswer_param_query_id_type_long": "Query ID", + "method_messages.setBotCallbackAnswer_param_message_type_flags.0?string": "Popup to show", + "method_messages.setBotCallbackAnswer_param_url_type_flags.2?string": "URL to open", + "method_messages.setBotCallbackAnswer_param_cache_time_type_int": "Cache validity", + "method_messages.getPeerDialogs": "Get dialog info of specified peers", + "method_messages.getPeerDialogs_param_peers_type_Vector<InputDialogPeer>": "Peers", + "method_messages.saveDraft": "Save a message [draft](https:\/\/core.telegram.org\/api\/drafts) associated to a chat.", + "method_messages.saveDraft_param_no_webpage_type_flags.1?true": "Disable generation of the webpage preview", + "method_messages.saveDraft_param_invert_media_type_flags.6?true": "If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.", + "method_messages.saveDraft_param_reply_to_type_flags.4?InputReplyTo": "If set, indicates that the message should be sent in reply to the specified message or story.", + "method_messages.saveDraft_param_peer_type_InputPeer": "Destination of the message that should be sent", + "method_messages.saveDraft_param_message_type_string": "The draft", + "method_messages.saveDraft_param_entities_type_flags.3?Vector<MessageEntity>": "Message [entities](https:\/\/core.telegram.org\/api\/entities) for styled text", + "method_messages.saveDraft_param_media_type_flags.5?InputMedia": "Attached media", + "method_messages.saveDraft_param_effect_type_flags.7?long": "Specifies a [message effect \u00bb](https:\/\/core.telegram.org\/api\/effects) to use for the message.", + "method_messages.saveDraft_param_suggested_post_type_flags.8?SuggestedPost": "Used to [suggest a post to a channel, see here \u00bb](https:\/\/core.telegram.org\/api\/suggested-posts) for more info on the full flow.", + "method_messages.getAllDrafts": "Return all message [drafts](https:\/\/core.telegram.org\/api\/drafts). \nReturns all the latest [updateDraftMessage](..\/constructors\/updateDraftMessage.md) updates related to all chats with drafts.", + "method_messages.getFeaturedStickers": "Get featured stickers", + "method_messages.getFeaturedStickers_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.readFeaturedStickers": "Mark new featured stickers as read", + "method_messages.readFeaturedStickers_param_id_type_Vector<long>": "IDs of stickersets to mark as read", + "method_messages.getRecentStickers": "Get recent stickers", + "method_messages.getRecentStickers_param_attached_type_flags.0?true": "Get stickers recently attached to photo or video files", + "method_messages.getRecentStickers_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.saveRecentSticker": "Add\/remove sticker from recent stickers list", + "method_messages.saveRecentSticker_param_attached_type_flags.0?true": "Whether to add\/remove stickers recently attached to photo or video files", + "method_messages.saveRecentSticker_param_id_type_InputDocument": "Sticker", + "method_messages.saveRecentSticker_param_unsave_type_Bool": "Whether to save or unsave the sticker", + "method_messages.clearRecentStickers": "Clear recent stickers", + "method_messages.clearRecentStickers_param_attached_type_flags.0?true": "Set this flag to clear the list of stickers recently attached to photo or video files", + "method_messages.getArchivedStickers": "Get all archived stickers", + "method_messages.getArchivedStickers_param_masks_type_flags.0?true": "Get [mask stickers](https:\/\/core.telegram.org\/api\/stickers#mask-stickers)", + "method_messages.getArchivedStickers_param_emojis_type_flags.1?true": "Get [custom emoji stickers](https:\/\/core.telegram.org\/api\/custom-emoji)", + "method_messages.getArchivedStickers_param_offset_id_type_long": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getArchivedStickers_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getMaskStickers": "Get installed mask stickers", + "method_messages.getMaskStickers_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.getAttachedStickers": "Get stickers attached to a photo or video", + "method_messages.getAttachedStickers_param_media_type_InputStickeredMedia": "Stickered media", + "method_messages.setGameScore": "Use this method to set the score of the specified user in a game sent as a normal message (bots only).", + "method_messages.setGameScore_param_edit_message_type_flags.0?true": "Set this flag if the game message should be automatically edited to include the current scoreboard", + "method_messages.setGameScore_param_force_type_flags.1?true": "Set this flag if the high score is allowed to decrease. This can be useful when fixing mistakes or banning cheaters", + "method_messages.setGameScore_param_peer_type_InputPeer": "Unique identifier of target chat", + "method_messages.setGameScore_param_id_type_int": "Identifier of the sent message", + "method_messages.setGameScore_param_user_id_type_InputUser": "User identifier", + "method_messages.setGameScore_param_score_type_int": "New score", + "method_messages.setInlineGameScore": "Use this method to set the score of the specified user in a game sent as an inline message (bots only).", + "method_messages.setInlineGameScore_param_edit_message_type_flags.0?true": "Set this flag if the game message should be automatically edited to include the current scoreboard", + "method_messages.setInlineGameScore_param_force_type_flags.1?true": "Set this flag if the high score is allowed to decrease. This can be useful when fixing mistakes or banning cheaters", + "method_messages.setInlineGameScore_param_id_type_InputBotInlineMessageID": "ID of the inline message", + "method_messages.setInlineGameScore_param_user_id_type_InputUser": "User identifier", + "method_messages.setInlineGameScore_param_score_type_int": "New score", + "method_messages.getGameHighScores": "Get highscores of a game", + "method_messages.getGameHighScores_param_peer_type_InputPeer": "Where was the game sent", + "method_messages.getGameHighScores_param_id_type_int": "ID of message with game media attachment", + "method_messages.getGameHighScores_param_user_id_type_InputUser": "Get high scores made by a certain user", + "method_messages.getInlineGameHighScores": "Get highscores of a game sent using an inline bot", + "method_messages.getInlineGameHighScores_param_id_type_InputBotInlineMessageID": "ID of inline message", + "method_messages.getInlineGameHighScores_param_user_id_type_InputUser": "Get high scores of a certain user", + "method_messages.getCommonChats": "Get chats in common with a user", + "method_messages.getCommonChats_param_user_id_type_InputUser": "User ID", + "method_messages.getCommonChats_param_max_id_type_long": "Maximum ID of chat to return (see [pagination](https:\/\/core.telegram.org\/api\/offsets))", + "method_messages.getCommonChats_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getWebPage": "Get [instant view](https:\/\/instantview.telegram.org) page", + "method_messages.getWebPage_param_url_type_string": "URL of IV page to fetch", + "method_messages.getWebPage_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).
**Note**: the usual hash generation algorithm cannot be used in this case, please re-use the [webPage](..\/constructors\/webPage.md).`hash` field returned by a previous call to the method, or pass 0 if this is the first call or if the previous call did not return a [webPage](..\/constructors\/webPage.md).", + "method_messages.toggleDialogPin": "Pin\/unpin a dialog", + "method_messages.toggleDialogPin_param_pinned_type_flags.0?true": "Whether to pin or unpin the dialog", + "method_messages.toggleDialogPin_param_peer_type_InputDialogPeer": "The dialog to pin", + "method_messages.reorderPinnedDialogs": "Reorder pinned dialogs", + "method_messages.reorderPinnedDialogs_param_force_type_flags.0?true": "If set, dialogs pinned server-side but not present in the `order` field will be unpinned.", + "method_messages.reorderPinnedDialogs_param_folder_id_type_int": "[Peer folder ID, for more info click here](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "method_messages.reorderPinnedDialogs_param_order_type_Vector<InputDialogPeer>": "New dialog order", + "method_messages.getPinnedDialogs": "Get pinned dialogs", + "method_messages.getPinnedDialogs_param_folder_id_type_int": "[Peer folder ID, for more info click here](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "method_messages.setBotShippingResults": "If you sent an invoice requesting a shipping address and the parameter is\\_flexible was specified, the bot will receive an [updateBotShippingQuery](..\/constructors\/updateBotShippingQuery.md) update. Use this method to reply to shipping queries.", + "method_messages.setBotShippingResults_param_query_id_type_long": "Unique identifier for the query to be answered", + "method_messages.setBotShippingResults_param_error_type_flags.0?string": "Error message in human readable form that explains why it is impossible to complete the order (e.g. \"Sorry, delivery to your desired address is unavailable\"). Telegram will display this message to the user.", + "method_messages.setBotShippingResults_param_shipping_options_type_flags.1?Vector<ShippingOption>": "A vector of available shipping options.", + "method_messages.setBotPrecheckoutResults": "Once the user has confirmed their payment and shipping details, the bot receives an [updateBotPrecheckoutQuery](..\/constructors\/updateBotPrecheckoutQuery.md) update. \nUse this method to respond to such pre-checkout queries. \n**Note**: Telegram must receive an answer within 10 seconds after the pre-checkout query was sent.", + "method_messages.setBotPrecheckoutResults_param_success_type_flags.1?true": "Set this flag if everything is alright (goods are available, etc.) and the bot is ready to proceed with the order, otherwise do not set it, and set the `error` field, instead", + "method_messages.setBotPrecheckoutResults_param_query_id_type_long": "Unique identifier for the query to be answered", + "method_messages.setBotPrecheckoutResults_param_error_type_flags.0?string": "Required if the `success` isn't set. Error message in human readable form that explains the reason for failure to proceed with the checkout (e.g. \"Sorry, somebody just bought the last of our amazing black T-shirts while you were busy filling out your payment details. Please choose a different color or garment!\"). Telegram will display this message to the user.", + "method_messages.uploadMedia": "Upload a file and associate it to a chat (without actually sending it to the chat)\n\nMay also be used in a [business connection](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots), *not* by wrapping the query in [invokeWithBusinessConnection \u00bb](..\/methods\/invokeWithBusinessConnection.md), but rather by specifying the business connection ID in the `business_connection_id` parameter.", + "method_messages.uploadMedia_param_business_connection_id_type_flags.0?string": "Whether the media will be used only in the specified [business connection \u00bb](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots), and not directly by the bot.", + "method_messages.uploadMedia_param_peer_type_InputPeer": "The chat, can be [inputPeerEmpty](..\/constructors\/inputPeerEmpty.md) for bots and [inputPeerSelf](..\/constructors\/inputPeerSelf.md) for users.", + "method_messages.uploadMedia_param_media_type_InputMedia": "File uploaded in chunks as described in [files \u00bb](https:\/\/core.telegram.org\/api\/files)", + "method_messages.sendScreenshotNotification": "Notify the other user in a private chat that a screenshot of the chat was taken", + "method_messages.sendScreenshotNotification_param_peer_type_InputPeer": "Other user", + "method_messages.sendScreenshotNotification_param_reply_to_type_InputReplyTo": "Indicates the message that was screenshotted (the specified message ID can also be `0` to avoid indicating any specific message).", + "method_messages.sendScreenshotNotification_param_random_id_type_long": "Random ID to avoid message resending", + "method_messages.getFavedStickers": "Get faved stickers", + "method_messages.getFavedStickers_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.faveSticker": "Mark or unmark a sticker as favorite", + "method_messages.faveSticker_param_id_type_InputDocument": "Sticker in question", + "method_messages.faveSticker_param_unfave_type_Bool": "Whether to add or remove a sticker from favorites", + "method_messages.getUnreadMentions": "Get unread messages where we were mentioned", + "method_messages.getUnreadMentions_param_peer_type_InputPeer": "Peer where to look for mentions", + "method_messages.getUnreadMentions_param_top_msg_id_type_flags.0?int": "If set, considers only messages within the specified [forum topic](https:\/\/core.telegram.org\/api\/forum#forum-topics)", + "method_messages.getUnreadMentions_param_offset_id_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getUnreadMentions_param_add_offset_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getUnreadMentions_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getUnreadMentions_param_max_id_type_int": "Maximum message ID to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getUnreadMentions_param_min_id_type_int": "Minimum message ID to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.readMentions": "Mark mentions as read", + "method_messages.readMentions_param_peer_type_InputPeer": "Dialog", + "method_messages.readMentions_param_top_msg_id_type_flags.0?int": "Mark as read only mentions within the specified [forum topic](https:\/\/core.telegram.org\/api\/forum#forum-topics)", + "method_messages.getRecentLocations": "Get live location history of a certain user", + "method_messages.getRecentLocations_param_peer_type_InputPeer": "User", + "method_messages.getRecentLocations_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getRecentLocations_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "method_messages.sendMultiMedia": "Send an [album or grouped media](https:\/\/core.telegram.org\/api\/files#albums-grouped-media)", + "method_messages.sendMultiMedia_param_silent_type_flags.5?true": "Whether to send the album silently (no notification triggered)", + "method_messages.sendMultiMedia_param_background_type_flags.6?true": "Send in background?", + "method_messages.sendMultiMedia_param_clear_draft_type_flags.7?true": "Whether to clear [drafts](https:\/\/core.telegram.org\/api\/drafts)", + "method_messages.sendMultiMedia_param_noforwards_type_flags.14?true": "Only for bots, disallows forwarding and saving of the messages, even if the destination chat doesn't have [content protection](https:\/\/telegram.org\/blog\/protected-content-delete-by-date-and-more) enabled", + "method_messages.sendMultiMedia_param_update_stickersets_order_type_flags.15?true": "Whether to move used stickersets to top, [see here for more info on this flag \u00bb](https:\/\/core.telegram.org\/api\/stickers#recent-stickersets)", + "method_messages.sendMultiMedia_param_invert_media_type_flags.16?true": "If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.", + "method_messages.sendMultiMedia_param_allow_paid_floodskip_type_flags.19?true": "Bots only: if set, allows sending up to 1000 messages per second, ignoring [broadcasting limits](https:\/\/core.telegram.org\/bots\/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once) for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance.", + "method_messages.sendMultiMedia_param_peer_type_InputPeer": "The destination chat", + "method_messages.sendMultiMedia_param_reply_to_type_flags.0?InputReplyTo": "If set, indicates that the message should be sent in reply to the specified message or story.", + "method_messages.sendMultiMedia_param_multi_media_type_Vector<InputSingleMedia>": "The medias to send: note that they must be separately uploaded using [messages.uploadMedia](..\/methods\/messages.uploadMedia.md) first, using raw `inputMediaUploaded*` constructors is not supported.", + "method_messages.sendMultiMedia_param_schedule_date_type_flags.10?int": "Scheduled message date for scheduled messages", + "method_messages.sendMultiMedia_param_send_as_type_flags.13?InputPeer": "Send this message as the specified peer", + "method_messages.sendMultiMedia_param_quick_reply_shortcut_type_flags.17?InputQuickReplyShortcut": "Add the message to the specified [quick reply shortcut \u00bb](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts), instead.", + "method_messages.sendMultiMedia_param_effect_type_flags.18?long": "Specifies a [message effect \u00bb](https:\/\/core.telegram.org\/api\/effects) to use for the message.", + "method_messages.sendMultiMedia_param_allow_paid_stars_type_flags.21?long": "For [paid messages \u00bb](https:\/\/core.telegram.org\/api\/paid-messages), specifies the amount of [Telegram Stars](https:\/\/core.telegram.org\/api\/stars) the user has agreed to pay in order to send the message.", + "method_messages.uploadEncryptedFile": "Upload encrypted file and associate it to a secret chat (without actually sending it to the chat).", + "method_messages.uploadEncryptedFile_param_peer_type_InputEncryptedChat": "The secret chat to associate the file to", + "method_messages.uploadEncryptedFile_param_file_type_InputEncryptedFile": "The file", + "method_messages.searchStickerSets": "Search for stickersets", + "method_messages.searchStickerSets_param_exclude_featured_type_flags.0?true": "Exclude featured stickersets from results", + "method_messages.searchStickerSets_param_q_type_string": "Query string", + "method_messages.searchStickerSets_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.getSplitRanges": "Get message ranges for saving the user's chat history", + "method_messages.markDialogUnread": "Manually mark dialog as unread", + "method_messages.markDialogUnread_param_unread_type_flags.0?true": "Mark as unread\/read", + "method_messages.markDialogUnread_param_parent_peer_type_flags.1?InputPeer": "If set, must be equal to the ID of a [monoforum](https:\/\/core.telegram.org\/api\/monoforum), and will affect the monoforum topic passed in `peer`.", + "method_messages.markDialogUnread_param_peer_type_InputDialogPeer": "Dialog", + "method_messages.getDialogUnreadMarks": "Get dialogs manually marked as unread", + "method_messages.getDialogUnreadMarks_param_parent_peer_type_flags.0?InputPeer": "Can be equal to the ID of a monoforum, to fetch monoforum topics manually marked as unread.", + "method_messages.clearAllDrafts": "Clear all [drafts](https:\/\/core.telegram.org\/api\/drafts).", + "method_messages.updatePinnedMessage": "Pin a message", + "method_messages.updatePinnedMessage_param_silent_type_flags.0?true": "Pin the message silently, without triggering a notification", + "method_messages.updatePinnedMessage_param_unpin_type_flags.1?true": "Whether the message should unpinned or pinned", + "method_messages.updatePinnedMessage_param_pm_oneside_type_flags.2?true": "Whether the message should only be pinned on the local side of a one-to-one chat", + "method_messages.updatePinnedMessage_param_peer_type_InputPeer": "The peer where to pin the message", + "method_messages.updatePinnedMessage_param_id_type_int": "The message to pin or unpin", + "method_messages.sendVote": "Vote in a [poll](..\/constructors\/poll.md)\n\nStarting from layer 159, the vote will be sent from the peer specified using [messages.saveDefaultSendAs](..\/methods\/messages.saveDefaultSendAs.md).", + "method_messages.sendVote_param_peer_type_InputPeer": "The chat where the poll was sent", + "method_messages.sendVote_param_msg_id_type_int": "The message ID of the poll", + "method_messages.sendVote_param_options_type_Vector<bytes>": "The options that were chosen", + "method_messages.getPollResults": "Get poll results", + "method_messages.getPollResults_param_peer_type_InputPeer": "Peer where the poll was found", + "method_messages.getPollResults_param_msg_id_type_int": "Message ID of poll message", + "method_messages.getOnlines": "Get count of online users in a chat", + "method_messages.getOnlines_param_peer_type_InputPeer": "The chat", + "method_messages.editChatAbout": "Edit the description of a [group\/supergroup\/channel](https:\/\/core.telegram.org\/api\/channel).", + "method_messages.editChatAbout_param_peer_type_InputPeer": "The [group\/supergroup\/channel](https:\/\/core.telegram.org\/api\/channel).", + "method_messages.editChatAbout_param_about_type_string": "The new description", + "method_messages.editChatDefaultBannedRights": "Edit the default banned rights of a [channel\/supergroup\/group](https:\/\/core.telegram.org\/api\/channel).", + "method_messages.editChatDefaultBannedRights_param_peer_type_InputPeer": "The peer", + "method_messages.editChatDefaultBannedRights_param_banned_rights_type_ChatBannedRights": "The new global rights", + "method_messages.getEmojiKeywords": "Get localized [emoji keywords \u00bb](https:\/\/core.telegram.org\/api\/custom-emoji#emoji-keywords).", + "method_messages.getEmojiKeywords_param_lang_code_type_string": "Language code", + "method_messages.getEmojiKeywordsDifference": "Get changed [emoji keywords \u00bb](https:\/\/core.telegram.org\/api\/custom-emoji#emoji-keywords).", + "method_messages.getEmojiKeywordsDifference_param_lang_code_type_string": "Language code", + "method_messages.getEmojiKeywordsDifference_param_from_version_type_int": "Previous stored emoji keyword list `version`", + "method_messages.getEmojiKeywordsLanguages": "Obtain a list of related languages that must be used when fetching [emoji keyword lists \u00bb](https:\/\/core.telegram.org\/api\/custom-emoji#emoji-keywords).\n\nUsually the method will return the passed language codes (if localized) + `en` + some language codes for similar languages (if applicable).", + "method_messages.getEmojiKeywordsLanguages_param_lang_codes_type_Vector<string>": "The user's language codes", + "method_messages.getEmojiURL": "Returns an HTTP URL which can be used to automatically log in into translation platform and suggest new [emoji keywords \u00bb](https:\/\/core.telegram.org\/api\/custom-emoji#emoji-keywords). The URL will be valid for 30 seconds after generation.", + "method_messages.getEmojiURL_param_lang_code_type_string": "Language code for which the emoji keywords will be suggested", + "method_messages.getSearchCounters": "Get the number of results that would be found by a [messages.search](..\/methods\/messages.search.md) call with the same parameters", + "method_messages.getSearchCounters_param_peer_type_InputPeer": "Peer where to search", + "method_messages.getSearchCounters_param_saved_peer_id_type_flags.2?InputPeer": "Search within the [saved message dialog \u00bb](https:\/\/core.telegram.org\/api\/saved-messages) with this ID.", + "method_messages.getSearchCounters_param_top_msg_id_type_flags.0?int": "If set, consider only messages within the specified [forum topic](https:\/\/core.telegram.org\/api\/forum#forum-topics)", + "method_messages.getSearchCounters_param_filters_type_Vector<MessagesFilter>": "Search filters", + "method_messages.requestUrlAuth": "Get more info about a Seamless Telegram Login authorization request, for more info [click here \u00bb](https:\/\/core.telegram.org\/api\/url-authorization)", + "method_messages.requestUrlAuth_param_peer_type_flags.1?InputPeer": "Peer where the message is located", + "method_messages.requestUrlAuth_param_msg_id_type_flags.1?int": "The message", + "method_messages.requestUrlAuth_param_button_id_type_flags.1?int": "The ID of the button with the authorization request", + "method_messages.requestUrlAuth_param_url_type_flags.2?string": "URL used for [link URL authorization, click here for more info \u00bb](https:\/\/core.telegram.org\/api\/url-authorization#link-url-authorization)", + "method_messages.acceptUrlAuth": "Use this to accept a Seamless Telegram Login authorization request, for more info [click here \u00bb](https:\/\/core.telegram.org\/api\/url-authorization)", + "method_messages.acceptUrlAuth_param_write_allowed_type_flags.0?true": "Set this flag to allow the bot to send messages to you (if requested)", + "method_messages.acceptUrlAuth_param_peer_type_flags.1?InputPeer": "The location of the message", + "method_messages.acceptUrlAuth_param_msg_id_type_flags.1?int": "Message ID of the message with the login button", + "method_messages.acceptUrlAuth_param_button_id_type_flags.1?int": "ID of the login button", + "method_messages.acceptUrlAuth_param_url_type_flags.2?string": "URL used for [link URL authorization, click here for more info \u00bb](https:\/\/core.telegram.org\/api\/url-authorization#link-url-authorization)", + "method_messages.hidePeerSettingsBar": "Should be called after the user hides the [report spam\/add as contact bar](https:\/\/core.telegram.org\/api\/action-bar) of a new chat, effectively prevents the user from executing the actions specified in the [action bar \u00bb](https:\/\/core.telegram.org\/api\/action-bar).", + "method_messages.hidePeerSettingsBar_param_peer_type_InputPeer": "Peer", + "method_messages.getScheduledHistory": "Get scheduled messages", + "method_messages.getScheduledHistory_param_peer_type_InputPeer": "Peer", + "method_messages.getScheduledHistory_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).
To generate the hash, populate the `ids` array with the `id`, `edit_date` (0 if unedited) and `date` (in this order) of the previously returned messages (in order, i.e. `ids = [id1, (edit_date1 ?? 0), date1, id2, (edit_date2 ?? 0), date2, ...]`).", + "method_messages.getScheduledMessages": "Get scheduled messages", + "method_messages.getScheduledMessages_param_peer_type_InputPeer": "Peer", + "method_messages.getScheduledMessages_param_id_type_Vector<int>": "IDs of scheduled messages", + "method_messages.sendScheduledMessages": "Send scheduled messages right away", + "method_messages.sendScheduledMessages_param_peer_type_InputPeer": "Peer", + "method_messages.sendScheduledMessages_param_id_type_Vector<int>": "Scheduled message IDs", + "method_messages.deleteScheduledMessages": "Delete scheduled messages", + "method_messages.deleteScheduledMessages_param_peer_type_InputPeer": "Peer", + "method_messages.deleteScheduledMessages_param_id_type_Vector<int>": "Scheduled message IDs", + "method_messages.getPollVotes": "Get poll results for non-anonymous polls", + "method_messages.getPollVotes_param_peer_type_InputPeer": "Chat where the poll was sent", + "method_messages.getPollVotes_param_id_type_int": "Message ID", + "method_messages.getPollVotes_param_option_type_flags.0?bytes": "Get only results for the specified poll `option`", + "method_messages.getPollVotes_param_offset_type_flags.1?string": "Offset for results, taken from the `next_offset` field of [messages.votesList](..\/constructors\/messages.votesList.md), initially an empty string.
Note: if no more results are available, the method call will return an empty `next_offset`; thus, avoid providing the `next_offset` returned in [messages.votesList](..\/constructors\/messages.votesList.md) if it is empty, to avoid an infinite loop.", + "method_messages.getPollVotes_param_limit_type_int": "Number of results to return", + "method_messages.toggleStickerSets": "Apply changes to multiple stickersets", + "method_messages.toggleStickerSets_param_uninstall_type_flags.0?true": "Uninstall the specified stickersets", + "method_messages.toggleStickerSets_param_archive_type_flags.1?true": "Archive the specified stickersets", + "method_messages.toggleStickerSets_param_unarchive_type_flags.2?true": "Unarchive the specified stickersets", + "method_messages.toggleStickerSets_param_stickersets_type_Vector<InputStickerSet>": "Stickersets to act upon", + "method_messages.getDialogFilters": "Get [folders](https:\/\/core.telegram.org\/api\/folders)", + "method_messages.getSuggestedDialogFilters": "Get [suggested folders](https:\/\/core.telegram.org\/api\/folders)", + "method_messages.updateDialogFilter": "Update [folder](https:\/\/core.telegram.org\/api\/folders)", + "method_messages.updateDialogFilter_param_id_type_int": "[Folder](https:\/\/core.telegram.org\/api\/folders) ID", + "method_messages.updateDialogFilter_param_filter_type_flags.0?DialogFilter": "[Folder](https:\/\/core.telegram.org\/api\/folders) info", + "method_messages.updateDialogFiltersOrder": "Reorder [folders](https:\/\/core.telegram.org\/api\/folders)", + "method_messages.updateDialogFiltersOrder_param_order_type_Vector<int>": "New [folder](https:\/\/core.telegram.org\/api\/folders) order", + "method_messages.getOldFeaturedStickers": "Method for fetching previously featured stickers", + "method_messages.getOldFeaturedStickers_param_offset_type_int": "Offset", + "method_messages.getOldFeaturedStickers_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getOldFeaturedStickers_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.getReplies": "Get messages in a reply thread", + "method_messages.getReplies_param_peer_type_InputPeer": "Peer", + "method_messages.getReplies_param_msg_id_type_int": "Message ID", + "method_messages.getReplies_param_offset_id_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getReplies_param_offset_date_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getReplies_param_add_offset_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getReplies_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getReplies_param_max_id_type_int": "If a positive value was transferred, the method will return only messages with ID smaller than max\\_id", + "method_messages.getReplies_param_min_id_type_int": "If a positive value was transferred, the method will return only messages with ID bigger than min\\_id", + "method_messages.getReplies_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "method_messages.getDiscussionMessage": "Get [discussion message](https:\/\/core.telegram.org\/api\/threads) from the [associated discussion group](https:\/\/core.telegram.org\/api\/discussion) of a channel to show it on top of the comment section, without actually joining the group", + "method_messages.getDiscussionMessage_param_peer_type_InputPeer": "[Channel ID](https:\/\/core.telegram.org\/api\/channel)", + "method_messages.getDiscussionMessage_param_msg_id_type_int": "Message ID", + "method_messages.readDiscussion": "Mark a [thread](https:\/\/core.telegram.org\/api\/threads) as read", + "method_messages.readDiscussion_param_peer_type_InputPeer": "Group ID", + "method_messages.readDiscussion_param_msg_id_type_int": "ID of message that started the thread", + "method_messages.readDiscussion_param_read_max_id_type_int": "ID up to which thread messages were read", + "method_messages.unpinAllMessages": "[Unpin](https:\/\/core.telegram.org\/api\/pin) all pinned messages", + "method_messages.unpinAllMessages_param_peer_type_InputPeer": "Chat where to unpin", + "method_messages.unpinAllMessages_param_top_msg_id_type_flags.0?int": "[Forum topic](https:\/\/core.telegram.org\/api\/forum#forum-topics) where to unpin", + "method_messages.unpinAllMessages_param_saved_peer_id_type_flags.1?InputPeer": "If set, must be equal to the ID of a [monoforum topic](https:\/\/core.telegram.org\/api\/monoforum), and will unpin all messages pinned in the passed monoforum topic.", + "method_messages.deleteChat": "Delete a [chat](https:\/\/core.telegram.org\/api\/channel)", + "method_messages.deleteChat_param_chat_id_type_long": "Chat ID", + "method_messages.deletePhoneCallHistory": "Delete the entire phone call history.", + "method_messages.deletePhoneCallHistory_param_revoke_type_flags.0?true": "Whether to remove phone call history for participants as well", + "method_messages.checkHistoryImport": "Obtains information about a chat export file, generated by a foreign chat app, [click here for more info about imported chats \u00bb](https:\/\/core.telegram.org\/api\/import).", + "method_messages.checkHistoryImport_param_import_head_type_string": "Beginning of the message file; up to 100 lines.", + "method_messages.initHistoryImport": "Import chat history from a foreign chat app into a specific Telegram chat, [click here for more info about imported chats \u00bb](https:\/\/core.telegram.org\/api\/import).", + "method_messages.initHistoryImport_param_peer_type_InputPeer": "The Telegram chat where the [history should be imported](https:\/\/core.telegram.org\/api\/import).", + "method_messages.initHistoryImport_param_file_type_InputFile": "File with messages to import.", + "method_messages.initHistoryImport_param_media_count_type_int": "Number of media files associated with the chat that will be uploaded using [messages.uploadImportedMedia](..\/methods\/messages.uploadImportedMedia.md).", + "method_messages.uploadImportedMedia": "Upload a media file associated with an [imported chat, click here for more info \u00bb](https:\/\/core.telegram.org\/api\/import).", + "method_messages.uploadImportedMedia_param_peer_type_InputPeer": "The Telegram chat where the media will be imported", + "method_messages.uploadImportedMedia_param_import_id_type_long": "Identifier of a [history import session](https:\/\/core.telegram.org\/api\/import), returned by [messages.initHistoryImport](..\/methods\/messages.initHistoryImport.md)", + "method_messages.uploadImportedMedia_param_file_name_type_string": "File name", + "method_messages.uploadImportedMedia_param_media_type_InputMedia": "Media metadata", + "method_messages.startHistoryImport": "Complete the [history import process](https:\/\/core.telegram.org\/api\/import), importing all messages into the chat. \nTo be called only after initializing the import with [messages.initHistoryImport](..\/methods\/messages.initHistoryImport.md) and uploading all files using [messages.uploadImportedMedia](..\/methods\/messages.uploadImportedMedia.md).", + "method_messages.startHistoryImport_param_peer_type_InputPeer": "The Telegram chat where the messages should be [imported, click here for more info \u00bb](https:\/\/core.telegram.org\/api\/import)", + "method_messages.startHistoryImport_param_import_id_type_long": "Identifier of a history import session, returned by [messages.initHistoryImport](..\/methods\/messages.initHistoryImport.md).", + "method_messages.getExportedChatInvites": "Get info about the chat invites of a specific chat", + "method_messages.getExportedChatInvites_param_revoked_type_flags.3?true": "Whether to fetch revoked chat invites", + "method_messages.getExportedChatInvites_param_peer_type_InputPeer": "Chat", + "method_messages.getExportedChatInvites_param_admin_id_type_InputUser": "Whether to only fetch chat invites from this admin", + "method_messages.getExportedChatInvites_param_offset_date_type_flags.2?int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getExportedChatInvites_param_offset_link_type_flags.2?string": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getExportedChatInvites_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getExportedChatInvite": "Get info about a chat invite", + "method_messages.getExportedChatInvite_param_peer_type_InputPeer": "Chat", + "method_messages.getExportedChatInvite_param_link_type_string": "Invite link", + "method_messages.editExportedChatInvite": "Edit an exported chat invite", + "method_messages.editExportedChatInvite_param_revoked_type_flags.2?true": "Whether to revoke the chat invite", + "method_messages.editExportedChatInvite_param_peer_type_InputPeer": "Chat", + "method_messages.editExportedChatInvite_param_link_type_string": "Invite link", + "method_messages.editExportedChatInvite_param_expire_date_type_flags.0?int": "New expiration date", + "method_messages.editExportedChatInvite_param_usage_limit_type_flags.1?int": "Maximum number of users that can join using this link", + "method_messages.editExportedChatInvite_param_request_needed_type_flags.3?Bool": "Whether admin confirmation is required before admitting each separate user into the chat", + "method_messages.editExportedChatInvite_param_title_type_flags.4?string": "Description of the invite link, visible only to administrators", + "method_messages.deleteRevokedExportedChatInvites": "Delete all revoked chat invites", + "method_messages.deleteRevokedExportedChatInvites_param_peer_type_InputPeer": "Chat", + "method_messages.deleteRevokedExportedChatInvites_param_admin_id_type_InputUser": "ID of the admin that originally generated the revoked chat invites", + "method_messages.deleteExportedChatInvite": "Delete a chat invite", + "method_messages.deleteExportedChatInvite_param_peer_type_InputPeer": "Peer", + "method_messages.deleteExportedChatInvite_param_link_type_string": "Invite link", + "method_messages.getAdminsWithInvites": "Get info about chat invites generated by admins.", + "method_messages.getAdminsWithInvites_param_peer_type_InputPeer": "Chat", + "method_messages.getChatInviteImporters": "Get info about the users that joined the chat using a specific chat invite", + "method_messages.getChatInviteImporters_param_requested_type_flags.0?true": "If set, only returns info about users with pending [join requests \u00bb](https:\/\/core.telegram.org\/api\/invites#join-requests)", + "method_messages.getChatInviteImporters_param_subscription_expired_type_flags.3?true": "Set this flag if the link is a [Telegram Star subscription link \u00bb](https:\/\/core.telegram.org\/api\/stars#star-subscriptions) and only members with already expired subscription must be returned.", + "method_messages.getChatInviteImporters_param_peer_type_InputPeer": "Chat", + "method_messages.getChatInviteImporters_param_link_type_flags.1?string": "Invite link", + "method_messages.getChatInviteImporters_param_q_type_flags.2?string": "Search for a user in the pending [join requests \u00bb](https:\/\/core.telegram.org\/api\/invites#join-requests) list: only available when the `requested` flag is set, cannot be used together with a specific `link`.", + "method_messages.getChatInviteImporters_param_offset_date_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getChatInviteImporters_param_offset_user_type_InputUser": "User ID for [pagination](https:\/\/core.telegram.org\/api\/offsets): if set, `offset_date` must also be set.", + "method_messages.getChatInviteImporters_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.setHistoryTTL": "Set maximum Time-To-Live of all messages in the specified chat", + "method_messages.setHistoryTTL_param_peer_type_InputPeer": "The dialog", + "method_messages.setHistoryTTL_param_period_type_int": "Automatically delete all messages sent in the chat after this many seconds", + "method_messages.checkHistoryImportPeer": "Check whether chat history exported from another chat app can be [imported into a specific Telegram chat, click here for more info \u00bb](https:\/\/core.telegram.org\/api\/import).\n\nIf the check succeeds, and no RPC errors are returned, a [messages.CheckedHistoryImportPeer](..\/types\/messages.CheckedHistoryImportPeer.md) constructor will be returned, with a confirmation text to be shown to the user, before actually initializing the import.", + "method_messages.checkHistoryImportPeer_param_peer_type_InputPeer": "The chat where we want to [import history \u00bb](https:\/\/core.telegram.org\/api\/import).", + "method_messages.setChatTheme": "Change the chat theme of a certain chat, see [here \u00bb](https:\/\/core.telegram.org\/api\/themes#chat-themes) for more info.", + "method_messages.setChatTheme_param_peer_type_InputPeer": "Private chat where to change theme", + "method_messages.setChatTheme_param_theme_type_InputChatTheme": "The theme to set.", + "method_messages.getMessageReadParticipants": "Get which users read a specific message: only available for groups and supergroups with less than [`chat_read_mark_size_threshold` members](https:\/\/core.telegram.org\/api\/config#chat-read-mark-size-threshold), read receipts will be stored for [`chat_read_mark_expire_period` seconds after the message was sent](https:\/\/core.telegram.org\/api\/config#chat-read-mark-expire-period), see [client configuration for more info \u00bb](https:\/\/core.telegram.org\/api\/config#client-configuration).", + "method_messages.getMessageReadParticipants_param_peer_type_InputPeer": "Dialog", + "method_messages.getMessageReadParticipants_param_msg_id_type_int": "Message ID", + "method_messages.getSearchResultsCalendar": "Returns information about the next messages of the specified type in the chat split by days.\n\nReturns the results in reverse chronological order. \nCan return partial results for the last returned day.", + "method_messages.getSearchResultsCalendar_param_peer_type_InputPeer": "Peer where to search", + "method_messages.getSearchResultsCalendar_param_saved_peer_id_type_flags.2?InputPeer": "Search within the [saved message dialog \u00bb](https:\/\/core.telegram.org\/api\/saved-messages) with this ID.", + "method_messages.getSearchResultsCalendar_param_filter_type_MessagesFilter": "Message filter, [inputMessagesFilterEmpty](..\/constructors\/inputMessagesFilterEmpty.md), [inputMessagesFilterMyMentions](..\/constructors\/inputMessagesFilterMyMentions.md) filters are not supported by this method.", + "method_messages.getSearchResultsCalendar_param_offset_id_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getSearchResultsCalendar_param_offset_date_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getSearchResultsPositions": "Returns sparse positions of messages of the specified type in the chat to be used for shared media scroll implementation.\n\nReturns the results in reverse chronological order (i.e., in order of decreasing message\\_id).", + "method_messages.getSearchResultsPositions_param_peer_type_InputPeer": "Peer where to search", + "method_messages.getSearchResultsPositions_param_saved_peer_id_type_flags.2?InputPeer": "Search within the [saved message dialog \u00bb](https:\/\/core.telegram.org\/api\/saved-messages) with this ID.", + "method_messages.getSearchResultsPositions_param_filter_type_MessagesFilter": "Message filter, [inputMessagesFilterEmpty](..\/constructors\/inputMessagesFilterEmpty.md), [inputMessagesFilterMyMentions](..\/constructors\/inputMessagesFilterMyMentions.md) filters are not supported by this method.", + "method_messages.getSearchResultsPositions_param_offset_id_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getSearchResultsPositions_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.hideChatJoinRequest": "Dismiss or approve a chat [join request](https:\/\/core.telegram.org\/api\/invites#join-requests) related to a specific chat or channel.", + "method_messages.hideChatJoinRequest_param_approved_type_flags.0?true": "Whether to dismiss or approve the chat [join request \u00bb](https:\/\/core.telegram.org\/api\/invites#join-requests)", + "method_messages.hideChatJoinRequest_param_peer_type_InputPeer": "The chat or channel", + "method_messages.hideChatJoinRequest_param_user_id_type_InputUser": "The user whose [join request \u00bb](https:\/\/core.telegram.org\/api\/invites#join-requests) should be dismissed or approved", + "method_messages.hideAllChatJoinRequests": "Dismiss or approve all [join requests](https:\/\/core.telegram.org\/api\/invites#join-requests) related to a specific chat or channel.", + "method_messages.hideAllChatJoinRequests_param_approved_type_flags.0?true": "Whether to dismiss or approve all chat [join requests \u00bb](https:\/\/core.telegram.org\/api\/invites#join-requests)", + "method_messages.hideAllChatJoinRequests_param_peer_type_InputPeer": "The chat or channel", + "method_messages.hideAllChatJoinRequests_param_link_type_flags.1?string": "Only dismiss or approve [join requests \u00bb](https:\/\/core.telegram.org\/api\/invites#join-requests) initiated using this invite link", + "method_messages.toggleNoForwards": "Enable or disable [content protection](https:\/\/telegram.org\/blog\/protected-content-delete-by-date-and-more) on a channel or chat", + "method_messages.toggleNoForwards_param_peer_type_InputPeer": "The chat or channel", + "method_messages.toggleNoForwards_param_enabled_type_Bool": "Enable or disable content protection", + "method_messages.saveDefaultSendAs": "Change the default peer that should be used when sending messages, reactions, poll votes to a specific group", + "method_messages.saveDefaultSendAs_param_peer_type_InputPeer": "Group", + "method_messages.saveDefaultSendAs_param_send_as_type_InputPeer": "The default peer that should be used when sending messages to the group", + "method_messages.sendReaction": "React to message.\n\nStarting from layer 159, the reaction will be sent from the peer specified using [messages.saveDefaultSendAs](..\/methods\/messages.saveDefaultSendAs.md).", + "method_messages.sendReaction_param_big_type_flags.1?true": "Whether a bigger and longer reaction should be shown", + "method_messages.sendReaction_param_add_to_recent_type_flags.2?true": "Whether to add this reaction to the [recent reactions list \u00bb](https:\/\/core.telegram.org\/api\/reactions#recent-reactions).", + "method_messages.sendReaction_param_peer_type_InputPeer": "Peer", + "method_messages.sendReaction_param_msg_id_type_int": "Message ID to react to", + "method_messages.sendReaction_param_reaction_type_flags.0?Vector<Reaction>": "A list of reactions (doesn't accept [reactionPaid](..\/constructors\/reactionPaid.md) constructors, use [messages.sendPaidReaction](..\/methods\/messages.sendPaidReaction.md) to send paid reactions, instead).", + "method_messages.getMessagesReactions": "Get [message reactions \u00bb](https:\/\/core.telegram.org\/api\/reactions)", + "method_messages.getMessagesReactions_param_peer_type_InputPeer": "Peer", + "method_messages.getMessagesReactions_param_id_type_Vector<int>": "Message IDs", + "method_messages.getMessageReactionsList": "Get [message reaction](https:\/\/core.telegram.org\/api\/reactions) list, along with the sender of each reaction.", + "method_messages.getMessageReactionsList_param_peer_type_InputPeer": "Peer", + "method_messages.getMessageReactionsList_param_id_type_int": "Message ID", + "method_messages.getMessageReactionsList_param_reaction_type_flags.0?Reaction": "Get only reactions of this type", + "method_messages.getMessageReactionsList_param_offset_type_flags.1?string": "Offset for pagination (taken from the `next_offset` field of the returned [messages.MessageReactionsList](..\/types\/messages.MessageReactionsList.md)); empty in the first request.", + "method_messages.getMessageReactionsList_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.setChatAvailableReactions": "Change the set of [message reactions \u00bb](https:\/\/core.telegram.org\/api\/reactions) that can be used in a certain group, supergroup or channel", + "method_messages.setChatAvailableReactions_param_peer_type_InputPeer": "Group where to apply changes", + "method_messages.setChatAvailableReactions_param_available_reactions_type_ChatReactions": "Allowed reaction emojis", + "method_messages.setChatAvailableReactions_param_reactions_limit_type_flags.0?int": "This flag may be used to impose a custom limit of unique reactions (i.e. a customizable version of [appConfig.reactions\\_uniq\\_max](https:\/\/core.telegram.org\/api\/config#reactions-uniq-max)); this field and the other info set by the method will then be available to users in [channelFull](..\/constructors\/channelFull.md) and [chatFull](..\/constructors\/chatFull.md).
If this flag is not set, the previously configured `reactions_limit` will not be altered.", + "method_messages.setChatAvailableReactions_param_paid_enabled_type_flags.1?Bool": "If this flag is set and a [Bool](..\/types\/Bool.md) is passed, the method will enable or disable [paid message reactions \u00bb](https:\/\/core.telegram.org\/api\/reactions#paid-reactions). If this flag is not set, the previously stored setting will not be changed.", + "method_messages.getAvailableReactions": "Obtain available [message reactions \u00bb](https:\/\/core.telegram.org\/api\/reactions)", + "method_messages.getAvailableReactions_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.setDefaultReaction": "Change default emoji reaction to use in the quick reaction menu: the value is synced across devices and can be fetched using [help.getConfig, `reactions_default` field](..\/methods\/help.getConfig.md).", + "method_messages.setDefaultReaction_param_reaction_type_Reaction": "New emoji reaction", + "method_messages.translateText": "Translate a given text.\n\n[Styled text entities](https:\/\/core.telegram.org\/api\/entities) will only be preserved for [Telegram Premium](https:\/\/core.telegram.org\/api\/premium) users.", + "method_messages.translateText_param_peer_type_flags.0?InputPeer": "If the text is a chat message, the peer ID", + "method_messages.translateText_param_id_type_flags.0?Vector<int>": "A list of message IDs to translate", + "method_messages.translateText_param_text_type_flags.1?Vector<TextWithEntities>": "A list of styled messages to translate", + "method_messages.translateText_param_to_lang_type_string": "Two-letter ISO 639-1 language code of the language to which the message is translated", + "method_messages.getUnreadReactions": "Get unread reactions to messages you sent", + "method_messages.getUnreadReactions_param_peer_type_InputPeer": "Peer", + "method_messages.getUnreadReactions_param_top_msg_id_type_flags.0?int": "If set, considers only reactions to messages within the specified [forum topic](https:\/\/core.telegram.org\/api\/forum#forum-topics)", + "method_messages.getUnreadReactions_param_saved_peer_id_type_flags.1?InputPeer": "If set, must be equal to the ID of a [monoforum topic](https:\/\/core.telegram.org\/api\/monoforum): will affect that topic in the monoforum passed in `peer`.", + "method_messages.getUnreadReactions_param_offset_id_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getUnreadReactions_param_add_offset_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getUnreadReactions_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getUnreadReactions_param_max_id_type_int": "Only return reactions for messages up until this message ID", + "method_messages.getUnreadReactions_param_min_id_type_int": "Only return reactions for messages starting from this message ID", + "method_messages.readReactions": "Mark [message reactions \u00bb](https:\/\/core.telegram.org\/api\/reactions) as read", + "method_messages.readReactions_param_peer_type_InputPeer": "Peer", + "method_messages.readReactions_param_top_msg_id_type_flags.0?int": "Mark as read only reactions to messages within the specified [forum topic](https:\/\/core.telegram.org\/api\/forum#forum-topics)", + "method_messages.readReactions_param_saved_peer_id_type_flags.1?InputPeer": "If set, must be equal to the ID of a [monoforum topic](https:\/\/core.telegram.org\/api\/monoforum): will affect that topic in the monoforum passed in `peer`.", + "method_messages.searchSentMedia": "View and search recently sent media. \nThis method does not support pagination.", + "method_messages.searchSentMedia_param_q_type_string": "Optional search query", + "method_messages.searchSentMedia_param_filter_type_MessagesFilter": "Message filter", + "method_messages.searchSentMedia_param_limit_type_int": "Maximum number of results to return (max 100).", + "method_messages.getAttachMenuBots": "Returns installed attachment menu [bot mini apps \u00bb](https:\/\/core.telegram.org\/api\/bots\/attach)", + "method_messages.getAttachMenuBots_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.getAttachMenuBot": "Returns attachment menu entry for a [bot mini app that can be launched from the attachment menu \u00bb](https:\/\/core.telegram.org\/api\/bots\/attach)", + "method_messages.getAttachMenuBot_param_bot_type_InputUser": "Bot ID", + "method_messages.toggleBotInAttachMenu": "Enable or disable [web bot attachment menu \u00bb](https:\/\/core.telegram.org\/api\/bots\/attach)", + "method_messages.toggleBotInAttachMenu_param_write_allowed_type_flags.0?true": "Whether the user authorizes the bot to write messages to them, if requested by [attachMenuBot](..\/constructors\/attachMenuBot.md).`request_write_access`", + "method_messages.toggleBotInAttachMenu_param_bot_type_InputUser": "Bot ID", + "method_messages.toggleBotInAttachMenu_param_enabled_type_Bool": "Toggle", + "method_messages.requestWebView": "Open a [bot mini app](https:\/\/core.telegram.org\/bots\/webapps), sending over user information after user confirmation.\n\nAfter calling this method, until the user closes the webview, [messages.prolongWebView](..\/methods\/messages.prolongWebView.md) must be called every 60 seconds.", + "method_messages.requestWebView_param_from_bot_menu_type_flags.4?true": "Whether the webview was opened by clicking on the bot's [menu button \u00bb](https:\/\/core.telegram.org\/api\/bots\/menu).", + "method_messages.requestWebView_param_silent_type_flags.5?true": "Whether the inline message that will be sent by the bot on behalf of the user once the web app interaction is [terminated](..\/methods\/messages.sendWebViewResultMessage.md) should be sent silently (no notifications for the receivers).", + "method_messages.requestWebView_param_compact_type_flags.7?true": "If set, requests to open the mini app in compact mode (as opposed to normal or fullscreen mode). Must be set if the `mode` parameter of the [attachment menu deep link](https:\/\/core.telegram.org\/api\/links#bot-attachment-or-side-menu-links) is equal to `compact`.", + "method_messages.requestWebView_param_fullscreen_type_flags.8?true": "If set, requests to open the mini app in fullscreen mode (as opposed to normal or compact mode). Must be set if the `mode` parameter of the [attachment menu deep link](https:\/\/core.telegram.org\/api\/links#bot-attachment-or-side-menu-links) is equal to `fullscreen`.", + "method_messages.requestWebView_param_peer_type_InputPeer": "Dialog where the web app is being opened, and where the resulting message will be sent (see the [docs for more info \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps)).", + "method_messages.requestWebView_param_bot_type_InputUser": "Bot that owns the [web app](https:\/\/core.telegram.org\/api\/bots\/webapps)", + "method_messages.requestWebView_param_url_type_flags.1?string": "[Web app URL](https:\/\/core.telegram.org\/api\/bots\/webapps)", + "method_messages.requestWebView_param_start_param_type_flags.3?string": "If the web app was opened from the attachment menu using a [attachment menu deep link](https:\/\/core.telegram.org\/api\/links#bot-attachment-or-side-menu-links), `start_param` should contain the `data` from the `startattach` parameter.", + "method_messages.requestWebView_param_theme_params_type_flags.2?DataJSON": "[Theme parameters \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#theme-parameters)", + "method_messages.requestWebView_param_platform_type_string": "Short name of the application; 0-64 English letters, digits, and underscores", + "method_messages.requestWebView_param_reply_to_type_flags.0?InputReplyTo": "If set, indicates that the inline message that will be sent by the bot on behalf of the user once the web app interaction is [terminated](..\/methods\/messages.sendWebViewResultMessage.md) should be sent in reply to the specified message or story.", + "method_messages.requestWebView_param_send_as_type_flags.13?InputPeer": "Open the web app as the specified peer, sending the resulting the message as the specified peer.", + "method_messages.prolongWebView": "Indicate to the server (from the user side) that the user is still using a web app.\n\nIf the method returns a `QUERY_ID_INVALID` error, the webview must be closed.", + "method_messages.prolongWebView_param_silent_type_flags.5?true": "Whether the inline message that will be sent by the bot on behalf of the user once the web app interaction is [terminated](..\/methods\/messages.sendWebViewResultMessage.md) should be sent silently (no notifications for the receivers).", + "method_messages.prolongWebView_param_peer_type_InputPeer": "Dialog where the web app was opened.", + "method_messages.prolongWebView_param_bot_type_InputUser": "Bot that owns the [web app](https:\/\/core.telegram.org\/api\/bots\/webapps)", + "method_messages.prolongWebView_param_query_id_type_long": "Web app interaction ID obtained from [messages.requestWebView](..\/methods\/messages.requestWebView.md)", + "method_messages.prolongWebView_param_reply_to_type_flags.0?InputReplyTo": "If set, indicates that the inline message that will be sent by the bot on behalf of the user once the web app interaction is [terminated](..\/methods\/messages.sendWebViewResultMessage.md) should be sent in reply to the specified message or story.", + "method_messages.prolongWebView_param_send_as_type_flags.13?InputPeer": "Open the web app as the specified peer", + "method_messages.requestSimpleWebView": "Open a [bot mini app](https:\/\/core.telegram.org\/api\/bots\/webapps).", + "method_messages.requestSimpleWebView_param_from_switch_webview_type_flags.1?true": "Whether the webapp was opened by clicking on the `switch_webview` button shown on top of the inline results list returned by [messages.getInlineBotResults](..\/methods\/messages.getInlineBotResults.md).", + "method_messages.requestSimpleWebView_param_from_side_menu_type_flags.2?true": "Set this flag if opening the Mini App from the installed [side menu entry \u00bb](https:\/\/core.telegram.org\/api\/bots\/attach).", + "method_messages.requestSimpleWebView_param_compact_type_flags.7?true": "Deprecated.", + "method_messages.requestSimpleWebView_param_fullscreen_type_flags.8?true": "Requests to open the app in fullscreen mode.", + "method_messages.requestSimpleWebView_param_bot_type_InputUser": "Bot that owns the mini app", + "method_messages.requestSimpleWebView_param_url_type_flags.3?string": "Web app URL, if opening from a keyboard button or inline result", + "method_messages.requestSimpleWebView_param_start_param_type_flags.4?string": "Deprecated.", + "method_messages.requestSimpleWebView_param_theme_params_type_flags.0?DataJSON": "[Theme parameters \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#theme-parameters)", + "method_messages.requestSimpleWebView_param_platform_type_string": "Short name of the application; 0-64 English letters, digits, and underscores", + "method_messages.sendWebViewResultMessage": "Terminate webview interaction started with [messages.requestWebView](..\/methods\/messages.requestWebView.md), sending the specified message to the chat on behalf of the user.", + "method_messages.sendWebViewResultMessage_param_bot_query_id_type_string": "Webview interaction ID obtained from [messages.requestWebView](..\/methods\/messages.requestWebView.md)", + "method_messages.sendWebViewResultMessage_param_result_type_InputBotInlineResult": "Message to send", + "method_messages.sendWebViewData": "Used by the user to relay data from an opened [reply keyboard bot mini app](https:\/\/core.telegram.org\/api\/bots\/webapps) to the bot that owns it.", + "method_messages.sendWebViewData_param_bot_type_InputUser": "Bot that owns the web app", + "method_messages.sendWebViewData_param_random_id_type_long": "Unique client message ID to prevent duplicate sending of the same event", + "method_messages.sendWebViewData_param_button_text_type_string": "Text of the [keyboardButtonSimpleWebView](..\/constructors\/keyboardButtonSimpleWebView.md) that was pressed to open the web app.", + "method_messages.sendWebViewData_param_data_type_string": "Data to relay to the bot, obtained from a [`web_app_data_send` JS event](https:\/\/core.telegram.org\/api\/web-events#web-app-data-send).", + "method_messages.transcribeAudio": "[Transcribe voice message](https:\/\/core.telegram.org\/api\/transcribe)", + "method_messages.transcribeAudio_param_peer_type_InputPeer": "Peer ID where the voice message was sent", + "method_messages.transcribeAudio_param_msg_id_type_int": "Voice message ID", + "method_messages.rateTranscribedAudio": "Rate [transcribed voice message](https:\/\/core.telegram.org\/api\/transcribe)", + "method_messages.rateTranscribedAudio_param_peer_type_InputPeer": "Peer where the voice message was sent", + "method_messages.rateTranscribedAudio_param_msg_id_type_int": "Message ID", + "method_messages.rateTranscribedAudio_param_transcription_id_type_long": "Transcription ID", + "method_messages.rateTranscribedAudio_param_good_type_Bool": "Whether the transcription was correct", + "method_messages.getCustomEmojiDocuments": "Fetch [custom emoji stickers \u00bb](https:\/\/core.telegram.org\/api\/custom-emoji).\n\nReturns a list of [documents](..\/constructors\/document.md) with the animated custom emoji in TGS format, and a [documentAttributeCustomEmoji](..\/constructors\/documentAttributeCustomEmoji.md) attribute with the original emoji and info about the emoji stickerset this custom emoji belongs to.", + "method_messages.getCustomEmojiDocuments_param_document_id_type_Vector<long>": "[Custom emoji](https:\/\/core.telegram.org\/api\/custom-emoji) IDs from a [messageEntityCustomEmoji](..\/constructors\/messageEntityCustomEmoji.md).", + "method_messages.getEmojiStickers": "Gets the list of currently installed [custom emoji stickersets](https:\/\/core.telegram.org\/api\/custom-emoji).", + "method_messages.getEmojiStickers_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.getFeaturedEmojiStickers": "Gets featured custom emoji stickersets.", + "method_messages.getFeaturedEmojiStickers_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.reportReaction": "Report a [message reaction](https:\/\/core.telegram.org\/api\/reactions)", + "method_messages.reportReaction_param_peer_type_InputPeer": "Peer where the message was sent", + "method_messages.reportReaction_param_id_type_int": "Message ID", + "method_messages.reportReaction_param_reaction_peer_type_InputPeer": "Peer that sent the reaction", + "method_messages.getTopReactions": "Got popular [message reactions](https:\/\/core.telegram.org\/api\/reactions)", + "method_messages.getTopReactions_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getTopReactions_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.getRecentReactions": "Get recently used [message reactions](https:\/\/core.telegram.org\/api\/reactions)", + "method_messages.getRecentReactions_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getRecentReactions_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.clearRecentReactions": "Clear recently used [message reactions](https:\/\/core.telegram.org\/api\/reactions)", + "method_messages.getExtendedMedia": "Fetch updated information about [paid media, see here \u00bb](https:\/\/core.telegram.org\/api\/paid-media) for the full flow.\n\nThis method will return an array of [updateMessageExtendedMedia](..\/constructors\/updateMessageExtendedMedia.md) updates, only for messages containing **already bought** paid media. \nNo information will be returned for messages containing not yet bought paid media.", + "method_messages.getExtendedMedia_param_peer_type_InputPeer": "Peer with visible paid media messages.", + "method_messages.getExtendedMedia_param_id_type_Vector<int>": "IDs of currently visible messages containing paid media.", + "method_messages.setDefaultHistoryTTL": "Changes the default value of the Time-To-Live setting, applied to all new chats.", + "method_messages.setDefaultHistoryTTL_param_period_type_int": "The new default Time-To-Live of all messages sent in new chats, in seconds.", + "method_messages.getDefaultHistoryTTL": "Gets the default value of the Time-To-Live setting, applied to all new chats.", + "method_messages.sendBotRequestedPeer": "Send one or more chosen peers, as requested by a [keyboardButtonRequestPeer](..\/constructors\/keyboardButtonRequestPeer.md) button.", + "method_messages.sendBotRequestedPeer_param_peer_type_InputPeer": "The bot that sent the [keyboardButtonRequestPeer](..\/constructors\/keyboardButtonRequestPeer.md) button.", + "method_messages.sendBotRequestedPeer_param_msg_id_type_int": "ID of the message that contained the reply keyboard with the [keyboardButtonRequestPeer](..\/constructors\/keyboardButtonRequestPeer.md) button.", + "method_messages.sendBotRequestedPeer_param_button_id_type_int": "The `button_id` field from the [keyboardButtonRequestPeer](..\/constructors\/keyboardButtonRequestPeer.md) constructor.", + "method_messages.sendBotRequestedPeer_param_requested_peers_type_Vector<InputPeer>": "The chosen peers.", + "method_messages.getEmojiGroups": "Represents a list of [emoji categories](https:\/\/core.telegram.org\/api\/emoji-categories).", + "method_messages.getEmojiGroups_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.getEmojiStatusGroups": "Represents a list of [emoji categories](https:\/\/core.telegram.org\/api\/emoji-categories), to be used when selecting custom emojis to set as [custom emoji status](https:\/\/core.telegram.org\/api).", + "method_messages.getEmojiStatusGroups_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.getEmojiProfilePhotoGroups": "Represents a list of [emoji categories](https:\/\/core.telegram.org\/api\/emoji-categories), to be used when selecting custom emojis to set as [profile picture](https:\/\/core.telegram.org\/api\/files#sticker-profile-pictures).", + "method_messages.getEmojiProfilePhotoGroups_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.searchCustomEmoji": "Look for [custom emojis](https:\/\/core.telegram.org\/api\/custom-emoji) associated to a UTF8 emoji", + "method_messages.searchCustomEmoji_param_emoticon_type_string": "The emoji", + "method_messages.searchCustomEmoji_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.togglePeerTranslations": "Show or hide the [real-time chat translation popup](https:\/\/core.telegram.org\/api\/translation) for a certain chat", + "method_messages.togglePeerTranslations_param_disabled_type_flags.0?true": "Whether to disable or enable the real-time chat translation popup", + "method_messages.togglePeerTranslations_param_peer_type_InputPeer": "The peer", + "method_messages.getBotApp": "Obtain information about a [direct link Mini App](https:\/\/core.telegram.org\/api\/bots\/webapps#direct-link-mini-apps)", + "method_messages.getBotApp_param_app_type_InputBotApp": "Bot app information obtained from a [Direct Mini App deep link \u00bb](https:\/\/core.telegram.org\/api\/links#direct-mini-app-links).", + "method_messages.getBotApp_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "method_messages.requestAppWebView": "Open a [bot mini app](https:\/\/core.telegram.org\/bots\/webapps) from a [direct Mini App deep link](https:\/\/core.telegram.org\/api\/links#direct-mini-app-links), sending over user information after user confirmation.\n\nAfter calling this method, until the user closes the webview, [messages.prolongWebView](..\/methods\/messages.prolongWebView.md) must be called every 60 seconds.", + "method_messages.requestAppWebView_param_write_allowed_type_flags.0?true": "Set this flag if the bot is asking permission to send messages to the user as specified in the [direct Mini App deep link](https:\/\/core.telegram.org\/api\/links#direct-mini-app-links) docs, and the user agreed.", + "method_messages.requestAppWebView_param_compact_type_flags.7?true": "If set, requests to open the mini app in compact mode (as opposed to normal or fullscreen mode). Must be set if the `mode` parameter of the [direct Mini App deep link](https:\/\/core.telegram.org\/api\/links#direct-mini-app-links) is equal to `compact`.", + "method_messages.requestAppWebView_param_fullscreen_type_flags.8?true": "If set, requests to open the mini app in fullscreen mode (as opposed to compact or normal mode). Must be set if the `mode` parameter of the [direct Mini App deep link](https:\/\/core.telegram.org\/api\/links#direct-mini-app-links) is equal to `fullscreen`.", + "method_messages.requestAppWebView_param_peer_type_InputPeer": "If the client has clicked on the link in a Telegram chat, pass the chat's peer information; otherwise pass the bot's peer information, instead.", + "method_messages.requestAppWebView_param_app_type_InputBotApp": "The app obtained by invoking [messages.getBotApp](..\/methods\/messages.getBotApp.md) as specified in the [direct Mini App deep link](https:\/\/core.telegram.org\/api\/links#direct-mini-app-links) docs.", + "method_messages.requestAppWebView_param_start_param_type_flags.1?string": "If the `startapp` query string parameter is present in the [direct Mini App deep link](https:\/\/core.telegram.org\/api\/links#direct-mini-app-links), pass it to `start_param`.", + "method_messages.requestAppWebView_param_theme_params_type_flags.2?DataJSON": "[Theme parameters \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#theme-parameters)", + "method_messages.requestAppWebView_param_platform_type_string": "Short name of the application; 0-64 English letters, digits, and underscores", + "method_messages.setChatWallPaper": "Set a custom [wallpaper \u00bb](https:\/\/core.telegram.org\/api\/wallpapers) in a specific private chat with another user.", + "method_messages.setChatWallPaper_param_for_both_type_flags.3?true": "Only for [Premium](https:\/\/core.telegram.org\/api\/premium) users, sets the specified wallpaper for both users of the chat, without requiring confirmation from the other user.", + "method_messages.setChatWallPaper_param_revert_type_flags.4?true": "If we don't like the new wallpaper the other user of the chat has chosen for us using the `for_both` flag, we can re-set our previous wallpaper just on our side using this flag.", + "method_messages.setChatWallPaper_param_peer_type_InputPeer": "The private chat where the wallpaper will be set", + "method_messages.setChatWallPaper_param_wallpaper_type_flags.0?InputWallPaper": "The [wallpaper \u00bb](https:\/\/core.telegram.org\/api\/wallpapers), obtained as described in the [wallpaper documentation \u00bb](https:\/\/core.telegram.org\/api\/wallpapers#uploading-wallpapers); must **not** be provided when installing a wallpaper obtained from a [messageActionSetChatWallPaper](..\/constructors\/messageActionSetChatWallPaper.md) service message (`id` must be provided, instead).", + "method_messages.setChatWallPaper_param_settings_type_flags.2?WallPaperSettings": "Wallpaper settings, obtained as described in the [wallpaper documentation \u00bb](https:\/\/core.telegram.org\/api\/wallpapers#uploading-wallpapers) or from [messageActionSetChatWallPaper](..\/constructors\/messageActionSetChatWallPaper.md).`wallpaper`.`settings`.", + "method_messages.setChatWallPaper_param_id_type_flags.1?int": "If the wallpaper was obtained from a [messageActionSetChatWallPaper](..\/constructors\/messageActionSetChatWallPaper.md) service message, must contain the ID of that message.", + "method_messages.searchEmojiStickerSets": "Search for [custom emoji stickersets \u00bb](https:\/\/core.telegram.org\/api\/custom-emoji)", + "method_messages.searchEmojiStickerSets_param_exclude_featured_type_flags.0?true": "Exclude featured stickersets from results", + "method_messages.searchEmojiStickerSets_param_q_type_string": "Query string", + "method_messages.searchEmojiStickerSets_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.getSavedDialogs": "Returns the current [saved dialog list \u00bb](https:\/\/core.telegram.org\/api\/saved-messages) or [monoforum topic list \u00bb](https:\/\/core.telegram.org\/api\/monoforum).", + "method_messages.getSavedDialogs_param_exclude_pinned_type_flags.0?true": "Exclude pinned dialogs", + "method_messages.getSavedDialogs_param_parent_peer_type_flags.1?InputPeer": "If set, fetches the topic list of the passed monoforum, otherwise fetches the saved dialog list.", + "method_messages.getSavedDialogs_param_offset_date_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getSavedDialogs_param_offset_id_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets) (`top_message` ID used for pagination)", + "method_messages.getSavedDialogs_param_offset_peer_type_InputPeer": "[Offset peer for pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getSavedDialogs_param_limit_type_int": "Number of list elements to be returned", + "method_messages.getSavedDialogs_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation)", + "method_messages.getSavedHistory": "Fetch [saved messages \u00bb](https:\/\/core.telegram.org\/api\/saved-messages) forwarded from a specific peer, or fetch messages from a [monoforum topic \u00bb](https:\/\/core.telegram.org\/api\/monoforum).", + "method_messages.getSavedHistory_param_parent_peer_type_flags.0?InputPeer": "If set, fetches messages from the specified monoforum, otherwise fetches from saved messages.", + "method_messages.getSavedHistory_param_peer_type_InputPeer": "Target peer (or topic)", + "method_messages.getSavedHistory_param_offset_id_type_int": "Only return messages starting from the specified message ID", + "method_messages.getSavedHistory_param_offset_date_type_int": "Only return messages sent before the specified date", + "method_messages.getSavedHistory_param_add_offset_type_int": "Number of list elements to be skipped, negative values are also accepted.", + "method_messages.getSavedHistory_param_limit_type_int": "Number of results to return", + "method_messages.getSavedHistory_param_max_id_type_int": "If a positive value was transferred, the method will return only messages with IDs less than **max\\_id**", + "method_messages.getSavedHistory_param_min_id_type_int": "If a positive value was transferred, the method will return only messages with IDs more than **min\\_id**", + "method_messages.getSavedHistory_param_hash_type_long": "[Result hash](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.deleteSavedHistory": "Deletes messages from a [monoforum topic \u00bb](https:\/\/core.telegram.org\/api\/monoforum), or deletes messages forwarded from a specific peer to [saved messages \u00bb](https:\/\/core.telegram.org\/api\/saved-messages).", + "method_messages.deleteSavedHistory_param_parent_peer_type_flags.0?InputPeer": "If set, affects the messages of the passed [monoforum topic \u00bb](https:\/\/core.telegram.org\/api\/monoforum), otherwise affects [saved messages \u00bb](https:\/\/core.telegram.org\/api\/saved-messages).", + "method_messages.deleteSavedHistory_param_peer_type_InputPeer": "Peer, whose messages will be deleted from [saved messages \u00bb](https:\/\/core.telegram.org\/api\/saved-messages), or the ID of the topic.", + "method_messages.deleteSavedHistory_param_max_id_type_int": "Maximum ID of message to delete", + "method_messages.deleteSavedHistory_param_min_date_type_flags.2?int": "Delete all messages newer than this UNIX timestamp", + "method_messages.deleteSavedHistory_param_max_date_type_flags.3?int": "Delete all messages older than this UNIX timestamp", + "method_messages.getPinnedSavedDialogs": "Get pinned [saved dialogs, see here \u00bb](https:\/\/core.telegram.org\/api\/saved-messages) for more info.", + "method_messages.toggleSavedDialogPin": "Pin or unpin a [saved message dialog \u00bb](https:\/\/core.telegram.org\/api\/saved-messages).", + "method_messages.toggleSavedDialogPin_param_pinned_type_flags.0?true": "Whether to pin or unpin the dialog", + "method_messages.toggleSavedDialogPin_param_peer_type_InputDialogPeer": "The dialog to pin", + "method_messages.reorderPinnedSavedDialogs": "Reorder pinned [saved message dialogs \u00bb](https:\/\/core.telegram.org\/api\/saved-messages).", + "method_messages.reorderPinnedSavedDialogs_param_force_type_flags.0?true": "If set, dialogs pinned server-side but not present in the `order` field will be unpinned.", + "method_messages.reorderPinnedSavedDialogs_param_order_type_Vector<InputDialogPeer>": "New dialog order", + "method_messages.getSavedReactionTags": "Fetch the full list of [saved message tags](https:\/\/core.telegram.org\/api\/saved-messages#tags) created by the user.", + "method_messages.getSavedReactionTags_param_peer_type_flags.0?InputPeer": "If set, returns tags only used in the specified [saved message dialog](https:\/\/core.telegram.org\/api\/saved-messages#saved-message-dialogs).", + "method_messages.getSavedReactionTags_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.updateSavedReactionTag": "Update the [description of a saved message tag \u00bb](https:\/\/core.telegram.org\/api\/saved-messages#tags).", + "method_messages.updateSavedReactionTag_param_reaction_type_Reaction": "[Reaction](https:\/\/core.telegram.org\/api\/reactions) associated to the tag", + "method_messages.updateSavedReactionTag_param_title_type_flags.0?string": "Tag description, max 12 UTF-8 characters; to remove the description call the method without setting this flag.", + "method_messages.getDefaultTagReactions": "Fetch a default recommended list of [saved message tag reactions](https:\/\/core.telegram.org\/api\/saved-messages#tags).", + "method_messages.getDefaultTagReactions_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.getOutboxReadDate": "Get the exact read date of one of our messages, sent to a private chat with another user.\n\nCan be only done for private outgoing messages not older than [appConfig.pm\\_read\\_date\\_expire\\_period \u00bb](https:\/\/core.telegram.org\/api\/config#pm-read-date-expire-period).\n\nIf the `peer`'s [userFull](..\/constructors\/userFull.md).`read_dates_private` flag is set, we will not be able to fetch the exact read date of messages we send to them, and a `USER_PRIVACY_RESTRICTED` RPC error will be emitted. \nThe exact read date of messages might still be unavailable for other reasons, see [here \u00bb](..\/constructors\/globalPrivacySettings.md) for more info. \nTo set [userFull](..\/constructors\/userFull.md).`read_dates_private` for ourselves invoke [account.setGlobalPrivacySettings](..\/methods\/account.setGlobalPrivacySettings.md), setting the `settings.hide_read_marks` flag.", + "method_messages.getOutboxReadDate_param_peer_type_InputPeer": "The user to whom we sent the message.", + "method_messages.getOutboxReadDate_param_msg_id_type_int": "The message ID.", + "method_messages.getQuickReplies": "Fetch basic info about all existing [quick reply shortcuts](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts).", + "method_messages.getQuickReplies_param_hash_type_long": "Hash for pagination, generated as specified [here \u00bb](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts) (not the usual algorithm used for hash generation.)", + "method_messages.reorderQuickReplies": "Reorder [quick reply shortcuts](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts).\n\nThis will emit an [updateQuickReplies](..\/constructors\/updateQuickReplies.md) update to other logged-in sessions.", + "method_messages.reorderQuickReplies_param_order_type_Vector<int>": "IDs of all created [quick reply shortcuts](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts), in the desired order.", + "method_messages.checkQuickReplyShortcut": "Before offering the user the choice to add a message to a [quick reply shortcut](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts), to make sure that none of the limits specified [here \u00bb](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts) were reached.", + "method_messages.checkQuickReplyShortcut_param_shortcut_type_string": "Shorcut name (not ID!).", + "method_messages.editQuickReplyShortcut": "Rename a [quick reply shortcut](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts). \nThis will emit an [updateQuickReplies](..\/constructors\/updateQuickReplies.md) update to other logged-in sessions.", + "method_messages.editQuickReplyShortcut_param_shortcut_id_type_int": "[Shortcut ID](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts).", + "method_messages.editQuickReplyShortcut_param_shortcut_type_string": "New shortcut name.", + "method_messages.deleteQuickReplyShortcut": "Completely delete a [quick reply shortcut](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts). \nThis will also emit an [updateDeleteQuickReply](..\/constructors\/updateDeleteQuickReply.md) update to other logged-in sessions (and *no* [updateDeleteQuickReplyMessages](..\/constructors\/updateDeleteQuickReplyMessages.md) updates, even if all the messages in the shortcuts are also deleted by this method).", + "method_messages.deleteQuickReplyShortcut_param_shortcut_id_type_int": "[Shortcut ID](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts)", + "method_messages.getQuickReplyMessages": "Fetch (a subset or all) messages in a [quick reply shortcut \u00bb](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts).", + "method_messages.getQuickReplyMessages_param_shortcut_id_type_int": "Quick reply shortcut ID.", + "method_messages.getQuickReplyMessages_param_id_type_flags.0?Vector<int>": "IDs of the messages to fetch, if empty fetches all of them.", + "method_messages.getQuickReplyMessages_param_hash_type_long": "Hash for pagination, generated as specified [here \u00bb](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts) (not the usual algorithm used for hash generation).", + "method_messages.sendQuickReplyMessages": "Send a [quick reply shortcut \u00bb](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts).", + "method_messages.sendQuickReplyMessages_param_peer_type_InputPeer": "The peer where to send the shortcut (users only, for now).", + "method_messages.sendQuickReplyMessages_param_shortcut_id_type_int": "The ID of the quick reply shortcut to send.", + "method_messages.sendQuickReplyMessages_param_id_type_Vector<int>": "Specify a subset of messages from the shortcut to send; if empty, defaults to all of them.", + "method_messages.sendQuickReplyMessages_param_random_id_type_Vector<long>": "Unique client IDs required to prevent message resending, one for each message we're sending, may be empty (but not recommended).", + "method_messages.deleteQuickReplyMessages": "Delete one or more messages from a [quick reply shortcut](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts). This will also emit an [updateDeleteQuickReplyMessages](..\/constructors\/updateDeleteQuickReplyMessages.md) update.", + "method_messages.deleteQuickReplyMessages_param_shortcut_id_type_int": "[Shortcut ID](https:\/\/core.telegram.org\/api\/business#quick-reply-shortcuts).", + "method_messages.deleteQuickReplyMessages_param_id_type_Vector<int>": "IDs of shortcut messages to delete.", + "method_messages.toggleDialogFilterTags": "Enable or disable [folder tags \u00bb](https:\/\/core.telegram.org\/api\/folders#folder-tags).", + "method_messages.toggleDialogFilterTags_param_enabled_type_Bool": "Enable or disable folder tags.", + "method_messages.getMyStickers": "Fetch all [stickersets \u00bb](https:\/\/core.telegram.org\/api\/stickers) owned by the current user.", + "method_messages.getMyStickers_param_offset_id_type_long": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getMyStickers_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.getEmojiStickerGroups": "Represents a list of [emoji categories](https:\/\/core.telegram.org\/api\/emoji-categories), to be used when choosing a sticker.", + "method_messages.getEmojiStickerGroups_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.getAvailableEffects": "Fetch the full list of usable [animated message effects \u00bb](https:\/\/core.telegram.org\/api\/effects).", + "method_messages.getAvailableEffects_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_messages.editFactCheck": "Edit\/create a [fact-check](https:\/\/core.telegram.org\/api\/factcheck) on a message.\n\nCan only be used by independent fact-checkers as specified by the [appConfig.can\\_edit\\_factcheck](https:\/\/core.telegram.org\/api\/config#can-edit-factcheck) configuration flag.", + "method_messages.editFactCheck_param_peer_type_InputPeer": "Peer where the message was sent", + "method_messages.editFactCheck_param_msg_id_type_int": "Message ID", + "method_messages.editFactCheck_param_text_type_TextWithEntities": "Fact-check (maximum UTF-8 length specified in [appConfig.factcheck\\_length\\_limit](https:\/\/core.telegram.org\/api\/config#factcheck-length-limit)).", + "method_messages.deleteFactCheck": "Delete a [fact-check](https:\/\/core.telegram.org\/api\/factcheck) from a message.\n\nCan only be used by independent fact-checkers as specified by the [appConfig.can\\_edit\\_factcheck](https:\/\/core.telegram.org\/api\/config#can-edit-factcheck) configuration flag.", + "method_messages.deleteFactCheck_param_peer_type_InputPeer": "Peer where the message was sent.", + "method_messages.deleteFactCheck_param_msg_id_type_int": "Message ID", + "method_messages.getFactCheck": "Fetch one or more [factchecks, see here \u00bb](https:\/\/core.telegram.org\/api\/factcheck) for the full flow.", + "method_messages.getFactCheck_param_peer_type_InputPeer": "Peer where the messages were sent.", + "method_messages.getFactCheck_param_msg_id_type_Vector<int>": "Messages that have associated [factCheck](..\/constructors\/factCheck.md) constructors with the `need_check` flag set.", + "method_messages.requestMainWebView": "Open a [Main Mini App](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-apps).", + "method_messages.requestMainWebView_param_compact_type_flags.7?true": "If set, requests to open the mini app in compact mode (as opposed to normal or fullscreen mode). Must be set if the `mode` parameter of the [Main Mini App link](https:\/\/core.telegram.org\/api\/links#main-mini-app-links) is equal to `compact`.", + "method_messages.requestMainWebView_param_fullscreen_type_flags.8?true": "If set, requests to open the mini app in fullscreen mode (as opposed to compact or normal mode). Must be set if the `mode` parameter of the [Main Mini App link](https:\/\/core.telegram.org\/api\/links#main-mini-app-links) is equal to `fullscreen`.", + "method_messages.requestMainWebView_param_peer_type_InputPeer": "Currently open chat, may be [inputPeerEmpty](..\/constructors\/inputPeerEmpty.md) if no chat is currently open.", + "method_messages.requestMainWebView_param_bot_type_InputUser": "Bot that owns the main mini app.", + "method_messages.requestMainWebView_param_start_param_type_flags.1?string": "Start parameter, if opening from a [Main Mini App link \u00bb](https:\/\/core.telegram.org\/api\/links#main-mini-app-links).", + "method_messages.requestMainWebView_param_theme_params_type_flags.0?DataJSON": "[Theme parameters \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#theme-parameters)", + "method_messages.requestMainWebView_param_platform_type_string": "Short name of the application; 0-64 English letters, digits, and underscores", + "method_messages.sendPaidReaction": "Sends one or more [paid Telegram Star reactions \u00bb](https:\/\/core.telegram.org\/api\/reactions#paid-reactions), transferring [Telegram Stars \u00bb](https:\/\/core.telegram.org\/api\/stars) to a channel's balance.", + "method_messages.sendPaidReaction_param_peer_type_InputPeer": "The channel", + "method_messages.sendPaidReaction_param_msg_id_type_int": "The message to react to", + "method_messages.sendPaidReaction_param_count_type_int": "The number of [stars](https:\/\/core.telegram.org\/api\/stars) to send (each will increment the reaction counter by one).", + "method_messages.sendPaidReaction_param_random_id_type_long": "Unique client message ID required to prevent message resending.
**Note**: this argument **must** be composed of a 64-bit integer where the lower 32 bits are random, and the higher 32 bits **are equal to the current unixtime**, i.e. `uint64_t random_id = (time() << 32) | ((uint64_t)random_uint32_t())`: this differs from the `random_id` format of all other methods in the API, which just take 64 random bits.", + "method_messages.sendPaidReaction_param_private_type_flags.0?PaidReactionPrivacy": "Each post with star reactions has a leaderboard with the top senders, but users can opt out of appearing there if they prefer more privacy. Not populating this field will use the default reaction privacy, stored on the server and synced to clients using [updatePaidReactionPrivacy](..\/constructors\/updatePaidReactionPrivacy.md) (see [here](https:\/\/core.telegram.org\/api\/reactions#paid-reaction-privacy) for more info).", + "method_messages.togglePaidReactionPrivacy": "Changes the privacy of already sent [paid reactions](https:\/\/core.telegram.org\/api\/reactions#paid-reactions) on a specific message.", + "method_messages.togglePaidReactionPrivacy_param_peer_type_InputPeer": "The channel", + "method_messages.togglePaidReactionPrivacy_param_msg_id_type_int": "The ID of the message to which we sent the paid reactions", + "method_messages.togglePaidReactionPrivacy_param_private_type_PaidReactionPrivacy": "If true, makes the current anonymous in the top sender leaderboard for this message; otherwise, does the opposite.", + "method_messages.getPaidReactionPrivacy": "Fetches an [updatePaidReactionPrivacy](..\/constructors\/updatePaidReactionPrivacy.md) update with the current [default paid reaction privacy, see here \u00bb](https:\/\/core.telegram.org\/api\/reactions#paid-reactions) for more info.", + "method_messages.viewSponsoredMessage": "Mark a specific [sponsored message \u00bb](https:\/\/core.telegram.org\/api\/sponsored-messages) as read", + "method_messages.viewSponsoredMessage_param_random_id_type_bytes": "The ad's unique ID.", + "method_messages.clickSponsoredMessage": "Informs the server that the user has interacted with a sponsored message in [one of the ways listed here \u00bb](https:\/\/core.telegram.org\/api\/sponsored-messages#clicking-on-sponsored-messages).", + "method_messages.clickSponsoredMessage_param_media_type_flags.0?true": "The user clicked on the media", + "method_messages.clickSponsoredMessage_param_fullscreen_type_flags.1?true": "The user expanded the video to full screen, and then clicked on it.", + "method_messages.clickSponsoredMessage_param_random_id_type_bytes": "The ad's unique ID.", + "method_messages.reportSponsoredMessage": "Report a [sponsored message \u00bb](https:\/\/core.telegram.org\/api\/sponsored-messages), see [here \u00bb](https:\/\/core.telegram.org\/api\/sponsored-messages#reporting-sponsored-messages) for more info on the full flow.", + "method_messages.reportSponsoredMessage_param_random_id_type_bytes": "The ad's unique ID.", + "method_messages.reportSponsoredMessage_param_option_type_bytes": "Chosen report option, initially an empty string, see [here \u00bb](https:\/\/core.telegram.org\/api\/sponsored-messages#reporting-sponsored-messages) for more info on the full flow.", + "method_messages.getSponsoredMessages": "Get a list of [sponsored messages for a peer, see here \u00bb](https:\/\/core.telegram.org\/api\/sponsored-messages) for more info.", + "method_messages.getSponsoredMessages_param_peer_type_InputPeer": "The currently open channel\/bot.", + "method_messages.getSponsoredMessages_param_msg_id_type_flags.0?int": "Must be set when fetching [sponsored messages to show on channel videos \u00bb](https:\/\/core.telegram.org\/api\/sponsored-messages#getting-sponsored-video-advertisements).", + "method_messages.savePreparedInlineMessage": "Save a [prepared inline message](https:\/\/core.telegram.org\/api\/bots\/inline#21-using-a-prepared-inline-message), to be shared by the user of the mini app using a [web\\_app\\_send\\_prepared\\_message event](https:\/\/core.telegram.org\/api\/web-events#web-app-send-prepared-message)", + "method_messages.savePreparedInlineMessage_param_result_type_InputBotInlineResult": "The message", + "method_messages.savePreparedInlineMessage_param_user_id_type_InputUser": "The user to whom the [web\\_app\\_send\\_prepared\\_message event](https:\/\/core.telegram.org\/api\/web-events#web-app-send-prepared-message) event will be sent", + "method_messages.savePreparedInlineMessage_param_peer_types_type_flags.0?Vector<InlineQueryPeerType>": "Types of chats where this message can be sent", + "method_messages.getPreparedInlineMessage": "Obtain a [prepared inline message](https:\/\/core.telegram.org\/api\/bots\/inline#21-using-a-prepared-inline-message) generated by a [mini app](https:\/\/core.telegram.org\/api\/bots\/webapps): invoked when handling [web\\_app\\_send\\_prepared\\_message events](https:\/\/core.telegram.org\/api\/web-events#web-app-send-prepared-message)", + "method_messages.getPreparedInlineMessage_param_bot_type_InputUser": "The bot that owns the mini app that emitted the [web\\_app\\_send\\_prepared\\_message event](https:\/\/core.telegram.org\/api\/web-events#web-app-send-prepared-message)", + "method_messages.getPreparedInlineMessage_param_id_type_string": "The `id` from the [web\\_app\\_send\\_prepared\\_message event](https:\/\/core.telegram.org\/api\/web-events#web-app-send-prepared-message)", + "method_messages.searchStickers": "Search for stickers using AI-powered keyword search", + "method_messages.searchStickers_param_emojis_type_flags.0?true": "If set, returns [custom emoji stickers](https:\/\/core.telegram.org\/api\/custom-emoji)", + "method_messages.searchStickers_param_q_type_string": "The search term", + "method_messages.searchStickers_param_emoticon_type_string": "Space-separated list of emojis to search for", + "method_messages.searchStickers_param_lang_code_type_Vector<string>": "List of possible IETF language tags of the user's input language; may be empty if unknown", + "method_messages.searchStickers_param_offset_type_int": "[Offset for pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.searchStickers_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_messages.searchStickers_param_hash_type_long": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).
The hash may be generated locally by using the `id`s of the returned or stored sticker [document](..\/constructors\/document.md)s.", + "method_messages.reportMessagesDelivery": "Used for [Telegram Gateway verification messages \u00bb](https:\/\/telegram.org\/blog\/star-messages-gateway-2-0-and-more#save-even-more-on-user-verification): indicate to the server that one or more [message](..\/constructors\/message.md)s were received by the client, if requested by the [message](..\/constructors\/message.md).**report\\_delivery\\_until\\_date** flag or the equivalent flag in [push notifications](https:\/\/core.telegram.org\/api\/push-updates).", + "method_messages.reportMessagesDelivery_param_push_type_flags.0?true": "Must be set if the messages were received from a [push notification](https:\/\/core.telegram.org\/api\/push-updates).", + "method_messages.reportMessagesDelivery_param_peer_type_InputPeer": "The peer where the messages were received.", + "method_messages.reportMessagesDelivery_param_id_type_Vector<int>": "The IDs of the received messages.", + "method_messages.getSavedDialogsByID": "Obtain information about specific [saved message dialogs \u00bb](https:\/\/core.telegram.org\/api\/saved-messages#saved-message-dialogs) or [monoforum topics \u00bb](https:\/\/core.telegram.org\/api\/monoforum).", + "method_messages.getSavedDialogsByID_param_parent_peer_type_flags.1?InputPeer": "If set, fetches [monoforum topics \u00bb](https:\/\/core.telegram.org\/api\/monoforum), otherwise fetches [saved message dialogs \u00bb](https:\/\/core.telegram.org\/api\/saved-messages#saved-message-dialogs).", + "method_messages.getSavedDialogsByID_param_ids_type_Vector<InputPeer>": "IDs of dialogs (topics) to fetch.", + "method_messages.readSavedHistory": "Mark messages as read in a [monoforum topic \u00bb](https:\/\/core.telegram.org\/api\/monoforum).", + "method_messages.readSavedHistory_param_parent_peer_type_InputPeer": "ID of the monoforum group.", + "method_messages.readSavedHistory_param_peer_type_InputPeer": "ID of the topic.", + "method_messages.readSavedHistory_param_max_id_type_int": "If a positive value is passed, only messages with identifiers less or equal than the given one will be read.", + "method_messages.toggleTodoCompleted": "Mark one or more items of a [todo list \u00bb](https:\/\/core.telegram.org\/api\/todo) as completed or not completed.", + "method_messages.toggleTodoCompleted_param_peer_type_InputPeer": "Peer where the todo list was posted.", + "method_messages.toggleTodoCompleted_param_msg_id_type_int": "ID of the message with the todo list.", + "method_messages.toggleTodoCompleted_param_completed_type_Vector<int>": "Items to mark as completed.", + "method_messages.toggleTodoCompleted_param_incompleted_type_Vector<int>": "Items to mark as not completed.", + "method_messages.appendTodoList": "Appends one or more items to a [todo list \u00bb](https:\/\/core.telegram.org\/api\/todo).", + "method_messages.appendTodoList_param_peer_type_InputPeer": "Peer where the todo list was posted.", + "method_messages.appendTodoList_param_msg_id_type_int": "ID of the message with the todo list.", + "method_messages.appendTodoList_param_list_type_Vector<TodoItem>": "Items to append.", + "method_messages.toggleSuggestedPostApproval": "Approve or reject a [suggested post \u00bb](https:\/\/core.telegram.org\/api\/suggested-posts).", + "method_messages.toggleSuggestedPostApproval_param_reject_type_flags.1?true": "Reject the suggested post.", + "method_messages.toggleSuggestedPostApproval_param_peer_type_InputPeer": "Both for users and channels, must contain the ID of the [direct messages monoforum \u00bb](https:\/\/core.telegram.org\/api\/monoforum) (for channels, the topic ID is extracted automatically from the `msg_id`).", + "method_messages.toggleSuggestedPostApproval_param_msg_id_type_int": "ID of the suggestion message.", + "method_messages.toggleSuggestedPostApproval_param_schedule_date_type_flags.0?int": "Custom scheduling date.", + "method_messages.toggleSuggestedPostApproval_param_reject_comment_type_flags.2?string": "Optional comment for rejections (can only be used if `reject` is set).", + "method_updates.getState": "Returns a current state of updates.", + "method_updates.getDifference": "Get new [updates](https:\/\/core.telegram.org\/api\/updates).", + "method_updates.getDifference_param_pts_type_int": "PTS, see [updates](https:\/\/core.telegram.org\/api\/updates).", + "method_updates.getDifference_param_pts_limit_type_flags.1?int": "PTS limit", + "method_updates.getDifference_param_pts_total_limit_type_flags.0?int": "For fast updating: if provided and `pts + pts_total_limit < remote pts`, [updates.differenceTooLong](..\/constructors\/updates.differenceTooLong.md) will be returned.
Simply tells the server to not return the difference if it is bigger than `pts_total_limit`
If the remote pts is too big (> ~4000000), this field will default to 1000000", + "method_updates.getDifference_param_date_type_int": "date, see [updates](https:\/\/core.telegram.org\/api\/updates).", + "method_updates.getDifference_param_qts_type_int": "QTS, see [updates](https:\/\/core.telegram.org\/api\/updates).", + "method_updates.getDifference_param_qts_limit_type_flags.2?int": "QTS limit", + "method_updates.getChannelDifference": "Returns the difference between the current state of updates of a certain channel and transmitted.", + "method_updates.getChannelDifference_param_force_type_flags.0?true": "Set to true to skip some possibly unneeded updates and reduce server-side load", + "method_updates.getChannelDifference_param_channel_type_InputChannel": "The channel", + "method_updates.getChannelDifference_param_filter_type_ChannelMessagesFilter": "Messsage filter", + "method_updates.getChannelDifference_param_pts_type_int": "Persistent timestamp (see [updates](https:\/\/core.telegram.org\/api\/updates))", + "method_updates.getChannelDifference_param_limit_type_int": "How many updates to fetch, max `100000`
Ordinary (non-bot) users are supposed to pass `10-100`", + "method_photos.updateProfilePhoto": "Installs a previously uploaded photo as a profile photo.", + "method_photos.updateProfilePhoto_param_fallback_type_flags.0?true": "If set, the chosen profile photo will be shown to users that can't display your main profile photo due to your privacy settings.", + "method_photos.updateProfilePhoto_param_bot_type_flags.1?InputUser": "Can contain info of a bot we own, to change the profile photo of that bot, instead of the current user.", + "method_photos.updateProfilePhoto_param_id_type_InputPhoto": "Input photo", + "method_photos.uploadProfilePhoto": "Updates current user profile photo.\n\nThe `file`, `video` and `video_emoji_markup` flags are mutually exclusive.", + "method_photos.uploadProfilePhoto_param_fallback_type_flags.3?true": "If set, the chosen profile photo will be shown to users that can't display your main profile photo due to your privacy settings.", + "method_photos.uploadProfilePhoto_param_bot_type_flags.5?InputUser": "Can contain info of a bot we own, to change the profile photo of that bot, instead of the current user.", + "method_photos.uploadProfilePhoto_param_file_type_flags.0?InputFile": "Profile photo", + "method_photos.uploadProfilePhoto_param_video_type_flags.1?InputFile": "[Animated profile picture](https:\/\/core.telegram.org\/api\/files#animated-profile-pictures) video", + "method_photos.uploadProfilePhoto_param_video_start_ts_type_flags.2?double": "Floating point UNIX timestamp in seconds, indicating the frame of the video\/sticker that should be used as static preview; can only be used if `video` or `video_emoji_markup` is set.", + "method_photos.uploadProfilePhoto_param_video_emoji_markup_type_flags.4?VideoSize": "Animated sticker profile picture, must contain either a [videoSizeEmojiMarkup](..\/constructors\/videoSizeEmojiMarkup.md) or a [videoSizeStickerMarkup](..\/constructors\/videoSizeStickerMarkup.md) constructor.", + "method_photos.deletePhotos": "Deletes profile photos. The method returns a list of successfully deleted photo IDs.", + "method_photos.deletePhotos_param_id_type_Vector<InputPhoto>": "Input photos to delete", + "method_photos.getUserPhotos": "Returns the list of user photos.", + "method_photos.getUserPhotos_param_user_id_type_InputUser": "User ID", + "method_photos.getUserPhotos_param_offset_type_int": "Number of list elements to be skipped", + "method_photos.getUserPhotos_param_max_id_type_long": "If a positive value was transferred, the method will return only photos with IDs less than the set one. This parameter is often useful when [refetching file references \u00bb](https:\/\/core.telegram.org\/api\/file-references), as in conjuction with `limit=1` and `offset=-1` the [photo](..\/constructors\/photo.md) object with the `id` specified in `max_id` can be fetched.", + "method_photos.getUserPhotos_param_limit_type_int": "Number of list elements to be returned", + "method_photos.uploadContactProfilePhoto": "Upload a custom profile picture for a contact, or suggest a new profile picture to a contact.\n\nThe `file`, `video` and `video_emoji_markup` flags are mutually exclusive.", + "method_photos.uploadContactProfilePhoto_param_suggest_type_flags.3?true": "If set, will send a [messageActionSuggestProfilePhoto](..\/constructors\/messageActionSuggestProfilePhoto.md) service message to `user_id`, suggesting them to use the specified profile picture; otherwise, will set a personal profile picture for the user (only visible to the current user).", + "method_photos.uploadContactProfilePhoto_param_save_type_flags.4?true": "If set, removes a previously set personal profile picture (does not affect suggested profile pictures, to remove them simply delete the [messageActionSuggestProfilePhoto](..\/constructors\/messageActionSuggestProfilePhoto.md) service message with [messages.deleteMessages](..\/methods\/messages.deleteMessages.md)).", + "method_photos.uploadContactProfilePhoto_param_user_id_type_InputUser": "The contact", + "method_photos.uploadContactProfilePhoto_param_file_type_flags.0?InputFile": "Profile photo", + "method_photos.uploadContactProfilePhoto_param_video_type_flags.1?InputFile": "[Animated profile picture](https:\/\/core.telegram.org\/api\/files#animated-profile-pictures) video", + "method_photos.uploadContactProfilePhoto_param_video_start_ts_type_flags.2?double": "Floating point UNIX timestamp in seconds, indicating the frame of the video\/sticker that should be used as static preview; can only be used if `video` or `video_emoji_markup` is set.", + "method_photos.uploadContactProfilePhoto_param_video_emoji_markup_type_flags.5?VideoSize": "Animated sticker profile picture, must contain either a [videoSizeEmojiMarkup](..\/constructors\/videoSizeEmojiMarkup.md) or a [videoSizeStickerMarkup](..\/constructors\/videoSizeStickerMarkup.md) constructor.", + "method_upload.saveFilePart": "Saves a part of file for further sending to one of the methods.", + "method_upload.saveFilePart_param_file_id_type_long": "Random file identifier created by the client", + "method_upload.saveFilePart_param_file_part_type_int": "Numerical order of a part", + "method_upload.saveFilePart_param_bytes_type_bytes": "Binary data, content of a part", + "method_upload.getFile": "Returns content of a whole file or its part.", + "method_upload.getFile_param_precise_type_flags.0?true": "Disable some checks on limit and offset values, useful for example to stream videos by keyframes", + "method_upload.getFile_param_cdn_supported_type_flags.1?true": "Whether the current client supports [CDN downloads](https:\/\/core.telegram.org\/cdn)", + "method_upload.getFile_param_location_type_InputFileLocation": "File location", + "method_upload.getFile_param_offset_type_long": "Number of bytes to be skipped", + "method_upload.getFile_param_limit_type_int": "Number of bytes to be returned", + "method_upload.saveBigFilePart": "Saves a part of a large file (over 10 MB in size) to be later passed to one of the methods.", + "method_upload.saveBigFilePart_param_file_id_type_long": "Random file id, created by the client", + "method_upload.saveBigFilePart_param_file_part_type_int": "Part sequence number", + "method_upload.saveBigFilePart_param_file_total_parts_type_int": "Total number of parts", + "method_upload.saveBigFilePart_param_bytes_type_bytes": "Binary data, part contents", + "method_upload.getWebFile": "Returns content of a web file, by proxying the request through telegram, see the [webfile docs for more info](https:\/\/core.telegram.org\/api\/files#downloading-webfiles).\n\n**Note**: the query must be sent to the DC specified in the `webfile_dc_id` [MTProto configuration field](https:\/\/core.telegram.org\/api\/config#mtproto-configuration).", + "method_upload.getWebFile_param_location_type_InputWebFileLocation": "The file to download", + "method_upload.getWebFile_param_offset_type_int": "Number of bytes to be skipped", + "method_upload.getWebFile_param_limit_type_int": "Number of bytes to be returned", + "method_upload.getCdnFile": "Download a [CDN](https:\/\/core.telegram.org\/cdn) file.", + "method_upload.getCdnFile_param_file_token_type_bytes": "File token", + "method_upload.getCdnFile_param_offset_type_long": "Offset of chunk to download", + "method_upload.getCdnFile_param_limit_type_int": "Length of chunk to download", + "method_upload.reuploadCdnFile": "Request a reupload of a certain file to a [CDN DC](https:\/\/core.telegram.org\/cdn).", + "method_upload.reuploadCdnFile_param_file_token_type_bytes": "File token", + "method_upload.reuploadCdnFile_param_request_token_type_bytes": "Request token", + "method_upload.getCdnFileHashes": "Get SHA256 hashes for verifying downloaded [CDN](https:\/\/core.telegram.org\/cdn) files", + "method_upload.getCdnFileHashes_param_file_token_type_bytes": "File", + "method_upload.getCdnFileHashes_param_offset_type_long": "Offset from which to start getting hashes", + "method_upload.getFileHashes": "Get SHA256 hashes for verifying downloaded files", + "method_upload.getFileHashes_param_location_type_InputFileLocation": "File", + "method_upload.getFileHashes_param_offset_type_long": "Offset from which to get file hashes", + "method_help.getConfig": "Returns current configuration, including data center configuration.", + "method_help.getNearestDc": "Returns info on data center nearest to the user.", + "method_help.getAppUpdate": "Returns information on update availability for the current application.", + "method_help.getAppUpdate_param_source_type_string": "Source", + "method_help.getInviteText": "Returns localized text of a text message with an invitation.", + "method_help.getSupport": "Returns the support user for the \"ask a question\" feature.", + "method_help.setBotUpdatesStatus": "Informs the server about the number of pending bot updates if they haven't been processed for a long time; for bots only", + "method_help.setBotUpdatesStatus_param_pending_updates_count_type_int": "Number of pending updates", + "method_help.setBotUpdatesStatus_param_message_type_string": "Error message, if present", + "method_help.getCdnConfig": "Get configuration for [CDN](https:\/\/core.telegram.org\/cdn) file downloads.", + "method_help.getRecentMeUrls": "Get recently used `t.me` links.\n\nWhen installing official applications from \"Download Telegram\" buttons present in [t.me](https:\/\/t.me) pages, a referral parameter is passed to applications after installation. \nIf, after downloading the application, the user creates a new account (instead of logging into an existing one), the referral parameter should be imported using this method, which returns the [t.me](https:\/\/t.me) pages the user recently opened, before installing Telegram.", + "method_help.getRecentMeUrls_param_referer_type_string": "Referrer", + "method_help.getTermsOfServiceUpdate": "Look for updates of telegram's terms of service", + "method_help.acceptTermsOfService": "Accept the new terms of service", + "method_help.acceptTermsOfService_param_id_type_DataJSON": "ID of terms of service", + "method_help.getDeepLinkInfo": "Get info about an unsupported deep link, see [here for more info \u00bb](https:\/\/core.telegram.org\/api\/links#unsupported-links).", + "method_help.getDeepLinkInfo_param_path_type_string": "Path component of a `tg:` link", + "method_help.getAppConfig": "Get app-specific configuration, see [client configuration](https:\/\/core.telegram.org\/api\/config#client-configuration) for more info on the result.", + "method_help.getAppConfig_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_help.saveAppLog": "Saves logs of application on the server.", + "method_help.saveAppLog_param_events_type_Vector<InputAppEvent>": "List of input events", + "method_help.getPassportConfig": "Get [passport](https:\/\/core.telegram.org\/passport) configuration", + "method_help.getPassportConfig_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_help.getSupportName": "Get localized name of the telegram support user", + "method_help.getUserInfo": "Can only be used by TSF members to obtain internal information.", + "method_help.getUserInfo_param_user_id_type_InputUser": "User ID", + "method_help.editUserInfo": "Internal use", + "method_help.editUserInfo_param_user_id_type_InputUser": "User", + "method_help.editUserInfo_param_message_type_string": "Message", + "method_help.editUserInfo_param_entities_type_Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities)", + "method_help.getPromoData": "Returns a set of useful suggestions and PSA\/MTProxy sponsored peers, see [here \u00bb](https:\/\/core.telegram.org\/api\/config#suggestions) for more info.", + "method_help.hidePromoData": "Hide MTProxy\/Public Service Announcement information", + "method_help.hidePromoData_param_peer_type_InputPeer": "Peer to hide", + "method_help.dismissSuggestion": "Dismiss a [suggestion, see here for more info \u00bb](https:\/\/core.telegram.org\/api\/config#suggestions).", + "method_help.dismissSuggestion_param_peer_type_InputPeer": "In the case of pending suggestions in [channels](..\/constructors\/channelFull.md), the channel ID.", + "method_help.dismissSuggestion_param_suggestion_type_string": "[Suggestion, see here for more info \u00bb](https:\/\/core.telegram.org\/api\/config#suggestions).", + "method_help.getCountriesList": "Get name, ISO code, localized name and phone codes\/patterns of all available countries", + "method_help.getCountriesList_param_lang_code_type_string": "Language code of the current user", + "method_help.getCountriesList_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_help.getPremiumPromo": "Get Telegram Premium promotion information", + "method_help.getPeerColors": "Get the set of [accent color palettes \u00bb](https:\/\/core.telegram.org\/api\/colors) that can be used for message accents.", + "method_help.getPeerColors_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_help.getPeerProfileColors": "Get the set of [accent color palettes \u00bb](https:\/\/core.telegram.org\/api\/colors) that can be used in profile page backgrounds.", + "method_help.getPeerProfileColors_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_help.getTimezonesList": "Returns timezone information that may be used elsewhere in the API, such as to set [Telegram Business opening hours \u00bb](https:\/\/core.telegram.org\/api\/business#opening-hours).", + "method_help.getTimezonesList_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).", + "method_channels.readHistory": "Mark [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel) history as read", + "method_channels.readHistory_param_channel_type_InputChannel": "[Channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "method_channels.readHistory_param_max_id_type_int": "ID of message up to which messages should be marked as read", + "method_channels.deleteMessages": "Delete messages in a [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "method_channels.deleteMessages_param_channel_type_InputChannel": "[Channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "method_channels.deleteMessages_param_id_type_Vector<int>": "IDs of messages to delete", + "method_channels.reportSpam": "Reports some messages from a user in a supergroup as spam; requires administrator rights in the supergroup", + "method_channels.reportSpam_param_channel_type_InputChannel": "Supergroup", + "method_channels.reportSpam_param_participant_type_InputPeer": "Participant whose messages should be reported", + "method_channels.reportSpam_param_id_type_Vector<int>": "IDs of spam messages", + "method_channels.getMessages": "Get [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel) messages", + "method_channels.getMessages_param_channel_type_InputChannel": "Channel\/supergroup", + "method_channels.getMessages_param_id_type_Vector<InputMessage>": "IDs of messages to get", + "method_channels.getParticipants": "Get the participants of a [supergroup\/channel](https:\/\/core.telegram.org\/api\/channel)", + "method_channels.getParticipants_param_channel_type_InputChannel": "Channel", + "method_channels.getParticipants_param_filter_type_ChannelParticipantsFilter": "Which participant types to fetch", + "method_channels.getParticipants_param_offset_type_int": "[Offset](https:\/\/core.telegram.org\/api\/offsets)", + "method_channels.getParticipants_param_limit_type_int": "[Limit](https:\/\/core.telegram.org\/api\/offsets)", + "method_channels.getParticipants_param_hash_type_long": "[Hash](https:\/\/core.telegram.org\/api\/offsets)", + "method_channels.getParticipant": "Get info about a [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel) participant", + "method_channels.getParticipant_param_channel_type_InputChannel": "Channel\/supergroup", + "method_channels.getParticipant_param_participant_type_InputPeer": "Participant to get info about", + "method_channels.getChannels": "Get info about [channels\/supergroups](https:\/\/core.telegram.org\/api\/channel)", + "method_channels.getChannels_param_id_type_Vector<InputChannel>": "IDs of channels\/supergroups to get info about", + "method_channels.getFullChannel": "Get full info about a [supergroup](https:\/\/core.telegram.org\/api\/channel#supergroups), [gigagroup](https:\/\/core.telegram.org\/api\/channel#gigagroups) or [channel](https:\/\/core.telegram.org\/api\/channel#channels)", + "method_channels.getFullChannel_param_channel_type_InputChannel": "The [channel](https:\/\/core.telegram.org\/api\/channel#channels), [supergroup](https:\/\/core.telegram.org\/api\/channel#supergroups) or [gigagroup](https:\/\/core.telegram.org\/api\/channel#gigagroups) to get info about", + "method_channels.createChannel": "Create a [supergroup\/channel](https:\/\/core.telegram.org\/api\/channel).", + "method_channels.createChannel_param_broadcast_type_flags.0?true": "Whether to create a [channel](https:\/\/core.telegram.org\/api\/channel)", + "method_channels.createChannel_param_megagroup_type_flags.1?true": "Whether to create a [supergroup](https:\/\/core.telegram.org\/api\/channel)", + "method_channels.createChannel_param_for_import_type_flags.3?true": "Whether the supergroup is being created to import messages from a foreign chat service using [messages.initHistoryImport](..\/methods\/messages.initHistoryImport.md)", + "method_channels.createChannel_param_forum_type_flags.5?true": "Whether to create a [forum](https:\/\/core.telegram.org\/api\/forum)", + "method_channels.createChannel_param_title_type_string": "Channel title", + "method_channels.createChannel_param_about_type_string": "Channel description", + "method_channels.createChannel_param_geo_point_type_flags.2?InputGeoPoint": "Geogroup location, see [here \u00bb](https:\/\/core.telegram.org\/api\/nearby) for more info on geogroups.", + "method_channels.createChannel_param_address_type_flags.2?string": "Geogroup address, see [here \u00bb](https:\/\/core.telegram.org\/api\/nearby) for more info on geogroups.", + "method_channels.createChannel_param_ttl_period_type_flags.4?int": "Time-to-live of all messages that will be sent in the supergroup: once message.date+message.ttl\\_period === time(), the message will be deleted on the server, and must be deleted locally as well. You can use [messages.setDefaultHistoryTTL](..\/methods\/messages.setDefaultHistoryTTL.md) to edit this value later.", + "method_channels.editAdmin": "Modify the admin rights of a user in a [supergroup\/channel](https:\/\/core.telegram.org\/api\/channel).", + "method_channels.editAdmin_param_channel_type_InputChannel": "The [supergroup\/channel](https:\/\/core.telegram.org\/api\/channel).", + "method_channels.editAdmin_param_user_id_type_InputUser": "The ID of the user whose admin rights should be modified", + "method_channels.editAdmin_param_admin_rights_type_ChatAdminRights": "The admin rights", + "method_channels.editAdmin_param_rank_type_string": "Indicates the role (rank) of the admin in the group: just an arbitrary string", + "method_channels.editTitle": "Edit the name of a [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "method_channels.editTitle_param_channel_type_InputChannel": "Channel\/supergroup", + "method_channels.editTitle_param_title_type_string": "New name", + "method_channels.editPhoto": "Change the photo of a [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "method_channels.editPhoto_param_channel_type_InputChannel": "Channel\/supergroup whose photo should be edited", + "method_channels.editPhoto_param_photo_type_InputChatPhoto": "New photo", + "method_channels.checkUsername": "Check if a username is free and can be assigned to a channel\/supergroup", + "method_channels.checkUsername_param_channel_type_InputChannel": "The [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel) that will assigned the specified username", + "method_channels.checkUsername_param_username_type_string": "The username to check", + "method_channels.updateUsername": "Change or remove the username of a supergroup\/channel", + "method_channels.updateUsername_param_channel_type_InputChannel": "Channel", + "method_channels.updateUsername_param_username_type_string": "New username, pass an empty string to remove the username", + "method_channels.joinChannel": "Join a channel\/supergroup", + "method_channels.joinChannel_param_channel_type_InputChannel": "Channel\/supergroup to join", + "method_channels.leaveChannel": "Leave a [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "method_channels.leaveChannel_param_channel_type_InputChannel": "[Channel\/supergroup](https:\/\/core.telegram.org\/api\/channel) to leave", + "method_channels.inviteToChannel": "Invite users to a channel\/supergroup", + "method_channels.inviteToChannel_param_channel_type_InputChannel": "Channel\/supergroup", + "method_channels.inviteToChannel_param_users_type_Vector<InputUser>": "Users to invite", + "method_channels.deleteChannel": "Delete a [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "method_channels.deleteChannel_param_channel_type_InputChannel": "[Channel\/supergroup](https:\/\/core.telegram.org\/api\/channel) to delete", + "method_channels.exportMessageLink": "Get link and embed info of a message in a [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "method_channels.exportMessageLink_param_grouped_type_flags.0?true": "Whether to include other grouped media (for albums)", + "method_channels.exportMessageLink_param_thread_type_flags.1?true": "Whether to also include a thread ID, if available, inside of the link", + "method_channels.exportMessageLink_param_channel_type_InputChannel": "Channel", + "method_channels.exportMessageLink_param_id_type_int": "Message ID", + "method_channels.toggleSignatures": "Enable\/disable message signatures in channels", + "method_channels.toggleSignatures_param_signatures_enabled_type_flags.0?true": "If set, enables message signatures.", + "method_channels.toggleSignatures_param_profiles_enabled_type_flags.1?true": "If set, messages from channel admins will link to their profiles, just like for group messages: can only be set if the `signatures_enabled` flag is set.", + "method_channels.toggleSignatures_param_channel_type_InputChannel": "Channel", + "method_channels.getAdminedPublicChannels": "Get [channels\/supergroups\/geogroups](https:\/\/core.telegram.org\/api\/channel) we're admin in. Usually called when the user exceeds the [limit](..\/constructors\/config.md) for owned public [channels\/supergroups\/geogroups](https:\/\/core.telegram.org\/api\/channel), and the user is given the choice to remove one of his channels\/supergroups\/geogroups.", + "method_channels.getAdminedPublicChannels_param_by_location_type_flags.0?true": "Get geogroups", + "method_channels.getAdminedPublicChannels_param_check_limit_type_flags.1?true": "If set and the user has reached the limit of owned public [channels\/supergroups\/geogroups](https:\/\/core.telegram.org\/api\/channel), instead of returning the channel list one of the specified [errors](#possible-errors) will be returned.
Useful to check if a new public channel can indeed be created, even before asking the user to enter a channel username to use in [channels.checkUsername](..\/methods\/channels.checkUsername.md)\/[channels.updateUsername](..\/methods\/channels.updateUsername.md).", + "method_channels.getAdminedPublicChannels_param_for_personal_type_flags.2?true": "Set this flag to only fetch the full list of channels that may be passed to [account.updatePersonalChannel](..\/methods\/account.updatePersonalChannel.md) to [display them on our profile page](https:\/\/core.telegram.org\/api\/profile#personal-channel).", + "method_channels.editBanned": "Ban\/unban\/kick a user in a [supergroup\/channel](https:\/\/core.telegram.org\/api\/channel).", + "method_channels.editBanned_param_channel_type_InputChannel": "The [supergroup\/channel](https:\/\/core.telegram.org\/api\/channel).", + "method_channels.editBanned_param_participant_type_InputPeer": "Participant to ban", + "method_channels.editBanned_param_banned_rights_type_ChatBannedRights": "The banned rights", + "method_channels.getAdminLog": "Get the admin log of a [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "method_channels.getAdminLog_param_channel_type_InputChannel": "Channel", + "method_channels.getAdminLog_param_q_type_string": "Search query, can be empty", + "method_channels.getAdminLog_param_events_filter_type_flags.0?ChannelAdminLogEventsFilter": "Event filter", + "method_channels.getAdminLog_param_admins_type_flags.1?Vector<InputUser>": "Only show events from these admins", + "method_channels.getAdminLog_param_max_id_type_long": "Maximum ID of message to return (see [pagination](https:\/\/core.telegram.org\/api\/offsets))", + "method_channels.getAdminLog_param_min_id_type_long": "Minimum ID of message to return (see [pagination](https:\/\/core.telegram.org\/api\/offsets))", + "method_channels.getAdminLog_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_channels.setStickers": "Associate a stickerset to the supergroup", + "method_channels.setStickers_param_channel_type_InputChannel": "Supergroup", + "method_channels.setStickers_param_stickerset_type_InputStickerSet": "The stickerset to associate", + "method_channels.readMessageContents": "Mark [channel\/supergroup](https:\/\/core.telegram.org\/api\/channel) message contents as read, emitting an [updateChannelReadMessagesContents](..\/constructors\/updateChannelReadMessagesContents.md).", + "method_channels.readMessageContents_param_channel_type_InputChannel": "[Channel\/supergroup](https:\/\/core.telegram.org\/api\/channel)", + "method_channels.readMessageContents_param_id_type_Vector<int>": "IDs of messages whose contents should be marked as read", + "method_channels.deleteHistory": "Delete the history of a [supergroup](https:\/\/core.telegram.org\/api\/channel)", + "method_channels.deleteHistory_param_for_everyone_type_flags.0?true": "Whether the history should be deleted for everyone", + "method_channels.deleteHistory_param_channel_type_InputChannel": "[Supergroup](https:\/\/core.telegram.org\/api\/channel) whose history must be deleted", + "method_channels.deleteHistory_param_max_id_type_int": "ID of message **up to which** the history must be deleted", + "method_channels.togglePreHistoryHidden": "Hide\/unhide message history for new channel\/supergroup users", + "method_channels.togglePreHistoryHidden_param_channel_type_InputChannel": "Channel\/supergroup", + "method_channels.togglePreHistoryHidden_param_enabled_type_Bool": "Hide\/unhide", + "method_channels.getLeftChannels": "Get a list of [channels\/supergroups](https:\/\/core.telegram.org\/api\/channel) we left, requires a [takeout session, see here \u00bb for more info](https:\/\/core.telegram.org\/api\/takeout).", + "method_channels.getLeftChannels_param_offset_type_int": "Offset for [pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_channels.getGroupsForDiscussion": "Get all groups that can be used as [discussion groups](https:\/\/core.telegram.org\/api\/discussion).\n\nReturned [basic group chats](https:\/\/core.telegram.org\/api\/channel#basic-groups) must be first upgraded to [supergroups](https:\/\/core.telegram.org\/api\/channel#supergroups) before they can be set as a discussion group. \nTo set a returned supergroup as a discussion group, access to its old messages must be enabled using [channels.togglePreHistoryHidden](..\/methods\/channels.togglePreHistoryHidden.md), first.", + "method_channels.setDiscussionGroup": "Associate a group to a channel as [discussion group](https:\/\/core.telegram.org\/api\/discussion) for that channel", + "method_channels.setDiscussionGroup_param_broadcast_type_InputChannel": "Channel", + "method_channels.setDiscussionGroup_param_group_type_InputChannel": "[Discussion group](https:\/\/core.telegram.org\/api\/discussion) to associate to the channel", + "method_channels.editCreator": "Transfer channel ownership", + "method_channels.editCreator_param_channel_type_InputChannel": "Channel", + "method_channels.editCreator_param_user_id_type_InputUser": "New channel owner", + "method_channels.editCreator_param_password_type_InputCheckPasswordSRP": "[2FA password](https:\/\/core.telegram.org\/api\/srp) of account", + "method_channels.editLocation": "Edit location of geogroup, see [here \u00bb](https:\/\/core.telegram.org\/api\/nearby) for more info on geogroups.", + "method_channels.editLocation_param_channel_type_InputChannel": "[Geogroup](https:\/\/core.telegram.org\/api\/channel)", + "method_channels.editLocation_param_geo_point_type_InputGeoPoint": "New geolocation", + "method_channels.editLocation_param_address_type_string": "Address string", + "method_channels.toggleSlowMode": "Toggle supergroup slow mode: if enabled, users will only be able to send one message every `seconds` seconds", + "method_channels.toggleSlowMode_param_channel_type_InputChannel": "The [supergroup](https:\/\/core.telegram.org\/api\/channel)", + "method_channels.toggleSlowMode_param_seconds_type_int": "Users will only be able to send one message every `seconds` seconds, `0` to disable the limitation", + "method_channels.getInactiveChannels": "Get inactive channels and supergroups", + "method_channels.convertToGigagroup": "Convert a [supergroup](https:\/\/core.telegram.org\/api\/channel) to a [gigagroup](https:\/\/core.telegram.org\/api\/channel), when requested by [channel suggestions](https:\/\/core.telegram.org\/api\/config#channel-suggestions).", + "method_channels.convertToGigagroup_param_channel_type_InputChannel": "The [supergroup](https:\/\/core.telegram.org\/api\/channel) to convert", + "method_channels.getSendAs": "Obtains a list of peers that can be used to send messages in a specific group", + "method_channels.getSendAs_param_for_paid_reactions_type_flags.0?true": "If set, fetches the list of peers that can be used to send [paid reactions](https:\/\/core.telegram.org\/api\/reactions#paid-reactions) to messages of a specific peer.", + "method_channels.getSendAs_param_peer_type_InputPeer": "The group where we intend to send messages", + "method_channels.deleteParticipantHistory": "Delete all messages sent by a specific participant of a given supergroup", + "method_channels.deleteParticipantHistory_param_channel_type_InputChannel": "Supergroup", + "method_channels.deleteParticipantHistory_param_participant_type_InputPeer": "The participant whose messages should be deleted", + "method_channels.toggleJoinToSend": "Set whether all users [should join a discussion group in order to comment on a post \u00bb](https:\/\/core.telegram.org\/api\/discussion#requiring-users-to-join-the-group)", + "method_channels.toggleJoinToSend_param_channel_type_InputChannel": "Discussion group", + "method_channels.toggleJoinToSend_param_enabled_type_Bool": "Toggle", + "method_channels.toggleJoinRequest": "Set whether all users should [request admin approval to join the group \u00bb](https:\/\/core.telegram.org\/api\/invites#join-requests).", + "method_channels.toggleJoinRequest_param_channel_type_InputChannel": "Group", + "method_channels.toggleJoinRequest_param_enabled_type_Bool": "Toggle", + "method_channels.reorderUsernames": "Reorder active usernames", + "method_channels.reorderUsernames_param_channel_type_InputChannel": "The supergroup or channel", + "method_channels.reorderUsernames_param_order_type_Vector<string>": "The new order for active usernames. All active usernames must be specified.", + "method_channels.toggleUsername": "Activate or deactivate a purchased [fragment.com](https:\/\/fragment.com) username associated to a [supergroup or channel](https:\/\/core.telegram.org\/api\/channel) we own.", + "method_channels.toggleUsername_param_channel_type_InputChannel": "[Supergroup or channel](https:\/\/core.telegram.org\/api\/channel)", + "method_channels.toggleUsername_param_username_type_string": "Username", + "method_channels.toggleUsername_param_active_type_Bool": "Whether to activate or deactivate the username", + "method_channels.deactivateAllUsernames": "Disable all purchased usernames of a supergroup or channel", + "method_channels.deactivateAllUsernames_param_channel_type_InputChannel": "Supergroup or channel", + "method_channels.toggleForum": "Enable or disable [forum functionality](https:\/\/core.telegram.org\/api\/forum) in a supergroup.", + "method_channels.toggleForum_param_channel_type_InputChannel": "Supergroup ID", + "method_channels.toggleForum_param_enabled_type_Bool": "Enable or disable forum functionality", + "method_channels.toggleForum_param_tabs_type_Bool": "If true enables the tabbed forum UI, otherwise enables the list-based forum UI.", + "method_channels.createForumTopic": "Create a [forum topic](https:\/\/core.telegram.org\/api\/forum); requires [`manage_topics` rights](https:\/\/core.telegram.org\/api\/rights).", + "method_channels.createForumTopic_param_channel_type_InputChannel": "[The forum](https:\/\/core.telegram.org\/api\/forum)", + "method_channels.createForumTopic_param_title_type_string": "Topic title (maximum UTF-8 length: 128)", + "method_channels.createForumTopic_param_icon_color_type_flags.0?int": "If no custom emoji icon is specified, specifies the color of the fallback topic icon (RGB), one of `0x6FB9F0`, `0xFFD67E`, `0xCB86DB`, `0x8EEE98`, `0xFF93B2`, or `0xFB6F5F`.", + "method_channels.createForumTopic_param_icon_emoji_id_type_flags.3?long": "ID of the [custom emoji](https:\/\/core.telegram.org\/api\/custom-emoji) used as topic icon. [Telegram Premium](https:\/\/core.telegram.org\/api\/premium) users can use any custom emoji, other users can only use the custom emojis contained in the [inputStickerSetEmojiDefaultTopicIcons](..\/constructors\/inputStickerSetEmojiDefaultTopicIcons.md) emoji pack.", + "method_channels.createForumTopic_param_random_id_type_long": "Unique client message ID to prevent duplicate sending of the same event", + "method_channels.createForumTopic_param_send_as_type_flags.2?InputPeer": "Create the topic as the specified peer", + "method_channels.getForumTopics": "Get [topics of a forum](https:\/\/core.telegram.org\/api\/forum)", + "method_channels.getForumTopics_param_channel_type_InputChannel": "Supergroup", + "method_channels.getForumTopics_param_q_type_flags.0?string": "Search query", + "method_channels.getForumTopics_param_offset_date_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets), date of the last message of the last found topic. Use 0 or any date in the future to get results from the last topic.", + "method_channels.getForumTopics_param_offset_id_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets), ID of the last message of the last found topic (or initially `0`).", + "method_channels.getForumTopics_param_offset_topic_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets), ID of the last found topic (or initially `0`).", + "method_channels.getForumTopics_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets). For optimal performance, the number of returned topics is chosen by the server and can be smaller than the specified limit.", + "method_channels.getForumTopicsByID": "Get forum topics by their ID", + "method_channels.getForumTopicsByID_param_channel_type_InputChannel": "Forum", + "method_channels.getForumTopicsByID_param_topics_type_Vector<int>": "Topic IDs", + "method_channels.editForumTopic": "Edit [forum topic](https:\/\/core.telegram.org\/api\/forum); requires [`manage_topics` rights](https:\/\/core.telegram.org\/api\/rights).", + "method_channels.editForumTopic_param_channel_type_InputChannel": "Supergroup", + "method_channels.editForumTopic_param_topic_id_type_int": "Topic ID", + "method_channels.editForumTopic_param_title_type_flags.0?string": "If present, will update the topic title (maximum UTF-8 length: 128).", + "method_channels.editForumTopic_param_icon_emoji_id_type_flags.1?long": "If present, updates the [custom emoji](https:\/\/core.telegram.org\/api\/custom-emoji) used as topic icon. [Telegram Premium](https:\/\/core.telegram.org\/api\/premium) users can use any custom emoji, other users can only use the custom emojis contained in the [inputStickerSetEmojiDefaultTopicIcons](..\/constructors\/inputStickerSetEmojiDefaultTopicIcons.md) emoji pack. Pass 0 to switch to the fallback topic icon.", + "method_channels.editForumTopic_param_closed_type_flags.2?Bool": "If present, will update the open\/closed status of the topic.", + "method_channels.editForumTopic_param_hidden_type_flags.3?Bool": "If present, will hide\/unhide the topic (only valid for the \"General\" topic, `id=1`).", + "method_channels.updatePinnedForumTopic": "Pin or unpin [forum topics](https:\/\/core.telegram.org\/api\/forum)", + "method_channels.updatePinnedForumTopic_param_channel_type_InputChannel": "Supergroup ID", + "method_channels.updatePinnedForumTopic_param_topic_id_type_int": "[Forum topic ID](https:\/\/core.telegram.org\/api\/forum)", + "method_channels.updatePinnedForumTopic_param_pinned_type_Bool": "Whether to pin or unpin the topic", + "method_channels.deleteTopicHistory": "Delete message history of a [forum topic](https:\/\/core.telegram.org\/api\/forum)", + "method_channels.deleteTopicHistory_param_channel_type_InputChannel": "Forum", + "method_channels.deleteTopicHistory_param_top_msg_id_type_int": "Topic ID", + "method_channels.reorderPinnedForumTopics": "Reorder pinned forum topics", + "method_channels.reorderPinnedForumTopics_param_force_type_flags.0?true": "If not set, the order of only the topics present both server-side and in `order` will be changed (i.e. mentioning topics not pinned server-side in `order` will not pin them, and not mentioning topics pinned server-side will not unpin them).
If set, the entire server-side pinned topic list will be replaced with `order` (i.e. mentioning topics not pinned server-side in `order` will pin them, and not mentioning topics pinned server-side will unpin them)", + "method_channels.reorderPinnedForumTopics_param_channel_type_InputChannel": "Supergroup ID", + "method_channels.reorderPinnedForumTopics_param_order_type_Vector<int>": "[Topic IDs \u00bb](https:\/\/core.telegram.org\/api\/forum)", + "method_channels.toggleAntiSpam": "Enable or disable the [native antispam system](https:\/\/core.telegram.org\/api\/antispam).", + "method_channels.toggleAntiSpam_param_channel_type_InputChannel": "Supergroup ID. The specified supergroup must have at least `telegram_antispam_group_size_min` members to enable antispam functionality, as specified by the [client configuration parameters](https:\/\/core.telegram.org\/api\/config#client-configuration).", + "method_channels.toggleAntiSpam_param_enabled_type_Bool": "Enable or disable the native antispam system.", + "method_channels.reportAntiSpamFalsePositive": "Report a [native antispam](https:\/\/core.telegram.org\/api\/antispam) false positive", + "method_channels.reportAntiSpamFalsePositive_param_channel_type_InputChannel": "Supergroup ID", + "method_channels.reportAntiSpamFalsePositive_param_msg_id_type_int": "Message ID that was mistakenly deleted by the [native antispam](https:\/\/core.telegram.org\/api\/antispam) system, taken from the [admin log](https:\/\/core.telegram.org\/api\/recent-actions)", + "method_channels.toggleParticipantsHidden": "Hide or display the participants list in a [supergroup](https:\/\/core.telegram.org\/api\/channel).\n\nThe supergroup must have at least `hidden_members_group_size_min` participants in order to use this method, as specified by the [client configuration parameters \u00bb](https:\/\/core.telegram.org\/api\/config#client-configuration).", + "method_channels.toggleParticipantsHidden_param_channel_type_InputChannel": "Supergroup ID", + "method_channels.toggleParticipantsHidden_param_enabled_type_Bool": "If true, will hide the participants list; otherwise will unhide it.", + "method_channels.updateColor": "Update the [accent color and background custom emoji \u00bb](https:\/\/core.telegram.org\/api\/colors) of a channel.", + "method_channels.updateColor_param_for_profile_type_flags.1?true": "Whether to change the accent color emoji pattern of the profile page; otherwise, the accent color and emoji pattern of messages will be changed.
Channels can change both message and profile palettes; supergroups can only change the profile palette, of course after reaching the [appropriate boost level](https:\/\/core.telegram.org\/api\/colors).", + "method_channels.updateColor_param_channel_type_InputChannel": "Channel whose accent color should be changed.", + "method_channels.updateColor_param_color_type_flags.2?int": "[ID of the accent color palette \u00bb](https:\/\/core.telegram.org\/api\/colors) to use (not RGB24, see [here \u00bb](https:\/\/core.telegram.org\/api\/colors) for more info); if not set, the default palette is used.", + "method_channels.updateColor_param_background_emoji_id_type_flags.0?long": "Custom emoji ID used in the accent color pattern.", + "method_channels.toggleViewForumAsMessages": "Users may also choose to display messages from all topics of a [forum](https:\/\/core.telegram.org\/api\/forum) as if they were sent to a normal group, using a \"View as messages\" setting in the local client: this setting only affects the current account, and is synced to other logged in sessions using this method.\n\nInvoking this method will update the value of the `view_forum_as_messages` flag of [channelFull](..\/constructors\/channelFull.md) or [dialog](..\/constructors\/dialog.md) and emit an [updateChannelViewForumAsMessages](..\/constructors\/updateChannelViewForumAsMessages.md).", + "method_channels.toggleViewForumAsMessages_param_channel_type_InputChannel": "The forum", + "method_channels.toggleViewForumAsMessages_param_enabled_type_Bool": "The new value of the `view_forum_as_messages` flag.", + "method_channels.getChannelRecommendations": "Obtain a list of similarly themed public channels, selected based on similarities in their **subscriber bases**.", + "method_channels.getChannelRecommendations_param_channel_type_flags.0?InputChannel": "The method will return channels related to the passed `channel`. If not set, the method will returns channels related to channels the user has joined.", + "method_channels.updateEmojiStatus": "Set an [emoji status](https:\/\/core.telegram.org\/api\/emoji-status) for a channel or supergroup.", + "method_channels.updateEmojiStatus_param_channel_type_InputChannel": "The channel\/supergroup, must have at least [channel\\_emoji\\_status\\_level\\_min](https:\/\/core.telegram.org\/api\/config#channel-emoji-status-level-min)\/[group\\_emoji\\_status\\_level\\_min](https:\/\/core.telegram.org\/api\/config#group-emoji-status-level-min) boosts.", + "method_channels.updateEmojiStatus_param_emoji_status_type_EmojiStatus": "[Emoji status](https:\/\/core.telegram.org\/api\/emoji-status) to set", + "method_channels.setBoostsToUnblockRestrictions": "Admins with [ban\\_users admin rights \u00bb](..\/constructors\/chatAdminRights.md) may allow users that apply a certain number of [booosts \u00bb](https:\/\/core.telegram.org\/api\/boost) to the group to bypass [slow mode \u00bb](..\/methods\/channels.toggleSlowMode.md) and [other \u00bb](https:\/\/core.telegram.org\/api\/rights#default-rights) supergroup restrictions, see [here \u00bb](https:\/\/core.telegram.org\/api\/boost#bypass-slowmode-and-chat-restrictions) for more info.", + "method_channels.setBoostsToUnblockRestrictions_param_channel_type_InputChannel": "The supergroup.", + "method_channels.setBoostsToUnblockRestrictions_param_boosts_type_int": "The number of required boosts (1-8, 0 to disable).", + "method_channels.setEmojiStickers": "Set a [custom emoji stickerset](https:\/\/core.telegram.org\/api\/custom-emoji) for supergroups. Only usable after reaching at least the [boost level \u00bb](https:\/\/core.telegram.org\/api\/boost) specified in the [`group_emoji_stickers_level_min` \u00bb](https:\/\/core.telegram.org\/api\/config#group-emoji-stickers-level-min) config parameter.", + "method_channels.setEmojiStickers_param_channel_type_InputChannel": "The supergroup", + "method_channels.setEmojiStickers_param_stickerset_type_InputStickerSet": "The custom emoji stickerset to associate to the supergroup", + "method_channels.restrictSponsoredMessages": "Disable ads on the specified channel, for all users.\n\nAvailable only after reaching at least the [boost level \u00bb](https:\/\/core.telegram.org\/api\/boost) specified in the [`channel_restrict_sponsored_level_min` \u00bb](https:\/\/core.telegram.org\/api\/config#channel-restrict-sponsored-level-min) config parameter.", + "method_channels.restrictSponsoredMessages_param_channel_type_InputChannel": "The channel.", + "method_channels.restrictSponsoredMessages_param_restricted_type_Bool": "Whether to disable or re-enable ads.", + "method_channels.searchPosts": "Globally search for posts from public [channels \u00bb](https:\/\/core.telegram.org\/api\/channel) (*including* those we aren't a member of) containing either a specific hashtag, *or* a full text query.\n\nExactly one of `query` and `hashtag` must be set.", + "method_channels.searchPosts_param_hashtag_type_flags.0?string": "The hashtag to search, without the `#` character.", + "method_channels.searchPosts_param_query_type_flags.1?string": "The full text query: each user has a limited amount of free full text search slots, after which payment is required, see [here \u00bb](https:\/\/core.telegram.org\/api\/search#posts-tab) for more info on the full flow.", + "method_channels.searchPosts_param_offset_rate_type_int": "Initially 0, then set to the [`next_rate` parameter of messages.messagesSlice](..\/constructors\/messages.messagesSlice.md), or if that is absent, the `date` of the last returned message.", + "method_channels.searchPosts_param_offset_peer_type_InputPeer": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_channels.searchPosts_param_offset_id_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_channels.searchPosts_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_channels.searchPosts_param_allow_paid_stars_type_flags.2?long": "For full text post searches (`query`), allows payment of the specified amount of Stars for the search, see [here \u00bb](https:\/\/core.telegram.org\/api\/search#posts-tab) for more info on the full flow.", + "method_channels.updatePaidMessagesPrice": "Enable or disable [paid messages \u00bb](https:\/\/core.telegram.org\/api\/paid-messages) in this [supergroup](https:\/\/core.telegram.org\/api\/channel) or [monoforum](https:\/\/core.telegram.org\/api\/monoforum).\n\nAlso used to [enable or disable monoforums aka direct messages in a channel](https:\/\/core.telegram.org\/api\/monoforum).\n\nNote that passing the ID of the monoforum itself to `channel` will return a `CHANNEL_MONOFORUM_UNSUPPORTED` error: pass the ID of the associated channel to edit the settings of the associated monoforum, instead.", + "method_channels.updatePaidMessagesPrice_param_broadcast_messages_allowed_type_flags.0?true": "Only usable for channels, enables or disables the associated [monoforum aka direct messages](https:\/\/core.telegram.org\/api\/monoforum).", + "method_channels.updatePaidMessagesPrice_param_channel_type_InputChannel": "Pass the supergroup ID for supergroups and the ID of the [channel](https:\/\/core.telegram.org\/api\/channel) to modify the setting in the associated monoforum.", + "method_channels.updatePaidMessagesPrice_param_send_paid_messages_stars_type_long": "Specifies the required amount of [Telegram Stars](https:\/\/core.telegram.org\/api\/stars) users must pay to send messages to the supergroup or monoforum.", + "method_channels.toggleAutotranslation": "Toggle autotranslation in a channel, for all users: see [here \u00bb](https:\/\/core.telegram.org\/api\/translation#autotranslation-for-channels) for more info.", + "method_channels.toggleAutotranslation_param_channel_type_InputChannel": "The channel where to toggle autotranslation.", + "method_channels.toggleAutotranslation_param_enabled_type_Bool": "Whether to enable or disable autotranslation.", + "method_channels.getMessageAuthor": "Can only be invoked by non-bot admins of a [monoforum \u00bb](https:\/\/core.telegram.org\/api\/monoforum), obtains the original sender of a message sent by other monoforum admins to the monoforum, on behalf of the channel associated to the monoforum.", + "method_channels.getMessageAuthor_param_channel_type_InputChannel": "ID of the monoforum.", + "method_channels.getMessageAuthor_param_id_type_int": "ID of the message sent by a monoforum admin.", + "method_channels.checkSearchPostsFlood": "Check if the specified [global post search \u00bb](https:\/\/core.telegram.org\/api\/search#posts-tab) requires payment.", + "method_channels.checkSearchPostsFlood_param_query_type_flags.0?string": "The query.", + "method_channels.setMainProfileTab": "Changes the main profile tab of a channel, see [here \u00bb](https:\/\/core.telegram.org\/api\/profile#tabs) for more info.", + "method_channels.setMainProfileTab_param_channel_type_InputChannel": "The channel.", + "method_channels.setMainProfileTab_param_tab_type_ProfileTab": "The tab to set as main tab.", + "method_bots.sendCustomRequest": "Sends a custom request; for bots only", + "method_bots.sendCustomRequest_param_custom_method_type_string": "The method name", + "method_bots.sendCustomRequest_param_params_type_DataJSON": "JSON-serialized method parameters", + "method_bots.answerWebhookJSONQuery": "Answers a custom query; for bots only", + "method_bots.answerWebhookJSONQuery_param_query_id_type_long": "Identifier of a custom query", + "method_bots.answerWebhookJSONQuery_param_data_type_DataJSON": "JSON-serialized answer to the query", + "method_bots.setBotCommands": "Set bot command list", + "method_bots.setBotCommands_param_scope_type_BotCommandScope": "Command scope", + "method_bots.setBotCommands_param_lang_code_type_string": "Language code", + "method_bots.setBotCommands_param_commands_type_Vector<BotCommand>": "Bot commands", + "method_bots.resetBotCommands": "Clear bot commands for the specified bot scope and language code", + "method_bots.resetBotCommands_param_scope_type_BotCommandScope": "Command scope", + "method_bots.resetBotCommands_param_lang_code_type_string": "Language code", + "method_bots.getBotCommands": "Obtain a list of bot commands for the specified bot scope and language code", + "method_bots.getBotCommands_param_scope_type_BotCommandScope": "Command scope", + "method_bots.getBotCommands_param_lang_code_type_string": "Language code", + "method_bots.setBotMenuButton": "Sets the [menu button action \u00bb](https:\/\/core.telegram.org\/api\/bots\/menu) for a given user or for all users", + "method_bots.setBotMenuButton_param_user_id_type_InputUser": "User ID", + "method_bots.setBotMenuButton_param_button_type_BotMenuButton": "Bot menu button action", + "method_bots.getBotMenuButton": "Gets the menu button action for a given user or for all users, previously set using [bots.setBotMenuButton](..\/methods\/bots.setBotMenuButton.md); users can see this information in the [botInfo](..\/constructors\/botInfo.md) constructor.", + "method_bots.getBotMenuButton_param_user_id_type_InputUser": "User ID or empty for the default menu button.", + "method_bots.setBotBroadcastDefaultAdminRights": "Set the default [suggested admin rights](https:\/\/core.telegram.org\/api\/rights#suggested-bot-rights) for bots being added as admins to channels, see [here for more info on how to handle them \u00bb](https:\/\/core.telegram.org\/api\/rights#suggested-bot-rights).", + "method_bots.setBotBroadcastDefaultAdminRights_param_admin_rights_type_ChatAdminRights": "Admin rights", + "method_bots.setBotGroupDefaultAdminRights": "Set the default [suggested admin rights](https:\/\/core.telegram.org\/api\/rights#suggested-bot-rights) for bots being added as admins to groups, see [here for more info on how to handle them \u00bb](https:\/\/core.telegram.org\/api\/rights#suggested-bot-rights).", + "method_bots.setBotGroupDefaultAdminRights_param_admin_rights_type_ChatAdminRights": "Admin rights", + "method_bots.setBotInfo": "Set localized name, about text and description of a bot (or of the current account, if called by a bot).", + "method_bots.setBotInfo_param_bot_type_flags.2?InputUser": "If called by a user, **must** contain the peer of a bot we own.", + "method_bots.setBotInfo_param_lang_code_type_string": "Language code, if left empty update the fallback about text and description", + "method_bots.setBotInfo_param_name_type_flags.3?string": "New bot name", + "method_bots.setBotInfo_param_about_type_flags.0?string": "New about text", + "method_bots.setBotInfo_param_description_type_flags.1?string": "New description", + "method_bots.getBotInfo": "Get localized name, about text and description of a bot (or of the current account, if called by a bot).", + "method_bots.getBotInfo_param_bot_type_flags.0?InputUser": "If called by a user, **must** contain the peer of a bot we own.", + "method_bots.getBotInfo_param_lang_code_type_string": "Language code, if left empty this method will return the fallback about text and description.", + "method_bots.reorderUsernames": "Reorder usernames associated to a bot we own.", + "method_bots.reorderUsernames_param_bot_type_InputUser": "The bot", + "method_bots.reorderUsernames_param_order_type_Vector<string>": "The new order for active usernames. All active usernames must be specified.", + "method_bots.toggleUsername": "Activate or deactivate a purchased [fragment.com](https:\/\/fragment.com) username associated to a bot we own.", + "method_bots.toggleUsername_param_bot_type_InputUser": "The bot", + "method_bots.toggleUsername_param_username_type_string": "Username", + "method_bots.toggleUsername_param_active_type_Bool": "Whether to activate or deactivate it", + "method_bots.canSendMessage": "Check whether the specified bot can send us messages", + "method_bots.canSendMessage_param_bot_type_InputUser": "The bot", + "method_bots.allowSendMessage": "Allow the specified bot to send us messages", + "method_bots.allowSendMessage_param_bot_type_InputUser": "The bot", + "method_bots.invokeWebViewCustomMethod": "Send a custom request from a [mini bot app](https:\/\/core.telegram.org\/api\/bots\/webapps), triggered by a [web\\_app\\_invoke\\_custom\\_method event \u00bb](https:\/\/core.telegram.org\/api\/web-events#web-app-invoke-custom-method).\n\nThe response should be sent using a [custom\\_method\\_invoked](https:\/\/core.telegram.org\/api\/bots\/webapps#custom-method-invoked) event, [see here \u00bb](https:\/\/core.telegram.org\/api\/web-events#web-app-invoke-custom-method) for more info on the flow.", + "method_bots.invokeWebViewCustomMethod_param_bot_type_InputUser": "Identifier of the bot associated to the [mini bot app](https:\/\/core.telegram.org\/api\/bots\/webapps)", + "method_bots.invokeWebViewCustomMethod_param_custom_method_type_string": "Identifier of the custom method to invoke", + "method_bots.invokeWebViewCustomMethod_param_params_type_DataJSON": "Method parameters", + "method_bots.getPopularAppBots": "Fetch popular [Main Mini Apps](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-apps), to be used in the [apps tab of global search \u00bb](https:\/\/core.telegram.org\/api\/search#apps-tab).", + "method_bots.getPopularAppBots_param_offset_type_string": "Offset for [pagination](https:\/\/core.telegram.org\/api\/offsets), initially an empty string, then re-use the `next_offset` returned by the previous query.", + "method_bots.getPopularAppBots_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_bots.addPreviewMedia": "Add a [main mini app preview, see here \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-app-previews) for more info.\n\nOnly owners of bots with a configured Main Mini App can use this method, see [see here \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-app-previews) for more info on how to check if you can invoke this method.", + "method_bots.addPreviewMedia_param_bot_type_InputUser": "The bot that owns the Main Mini App.", + "method_bots.addPreviewMedia_param_lang_code_type_string": "ISO 639-1 language code, indicating the localization of the preview to add.", + "method_bots.addPreviewMedia_param_media_type_InputMedia": "The photo\/video preview, uploaded using [messages.uploadMedia](..\/methods\/messages.uploadMedia.md).", + "method_bots.editPreviewMedia": "Edit a [main mini app preview, see here \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-app-previews) for more info.\n\nOnly owners of bots with a configured Main Mini App can use this method, see [see here \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-app-previews) for more info on how to check if you can invoke this method.", + "method_bots.editPreviewMedia_param_bot_type_InputUser": "The bot that owns the Main Mini App.", + "method_bots.editPreviewMedia_param_lang_code_type_string": "ISO 639-1 language code, indicating the localization of the preview to edit.", + "method_bots.editPreviewMedia_param_media_type_InputMedia": "The photo\/video preview to replace, previously fetched as specified [here \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-app-previews).", + "method_bots.editPreviewMedia_param_new_media_type_InputMedia": "The new photo\/video preview, uploaded using [messages.uploadMedia](..\/methods\/messages.uploadMedia.md).", + "method_bots.deletePreviewMedia": "Delete a [main mini app preview, see here \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-app-previews) for more info.\n\nOnly owners of bots with a configured Main Mini App can use this method, see [see here \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-app-previews) for more info on how to check if you can invoke this method.", + "method_bots.deletePreviewMedia_param_bot_type_InputUser": "The bot that owns the Main Mini App.", + "method_bots.deletePreviewMedia_param_lang_code_type_string": "ISO 639-1 language code, indicating the localization of the preview to delete.", + "method_bots.deletePreviewMedia_param_media_type_Vector<InputMedia>": "The photo\/video preview to delete, previously fetched as specified [here \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-app-previews).", + "method_bots.reorderPreviewMedias": "Reorder a [main mini app previews, see here \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-app-previews) for more info.\n\nOnly owners of bots with a configured Main Mini App can use this method, see [see here \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-app-previews) for more info on how to check if you can invoke this method.", + "method_bots.reorderPreviewMedias_param_bot_type_InputUser": "The bot that owns the Main Mini App.", + "method_bots.reorderPreviewMedias_param_lang_code_type_string": "ISO 639-1 language code, indicating the localization of the previews to reorder.", + "method_bots.reorderPreviewMedias_param_order_type_Vector<InputMedia>": "New order of the previews.", + "method_bots.getPreviewInfo": "Bot owners only, fetch [main mini app preview information, see here \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-app-previews) for more info.\n\nNote: technically non-owners may also invoke this method, but it will always behave exactly as [bots.getPreviewMedias](..\/methods\/bots.getPreviewMedias.md), returning only previews for the current language and an empty `lang_codes` array, regardless of the passed `lang_code`, so please only use [bots.getPreviewMedias](..\/methods\/bots.getPreviewMedias.md) if you're not the owner of the `bot`.", + "method_bots.getPreviewInfo_param_bot_type_InputUser": "The bot that owns the Main Mini App.", + "method_bots.getPreviewInfo_param_lang_code_type_string": "Fetch previews for the specified ISO 639-1 language code.", + "method_bots.getPreviewMedias": "Fetch [main mini app previews, see here \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#main-mini-app-previews) for more info.", + "method_bots.getPreviewMedias_param_bot_type_InputUser": "The bot that owns the Main Mini App.", + "method_bots.updateUserEmojiStatus": "Change the emoji status of a user (invoked by bots, see [here \u00bb](https:\/\/core.telegram.org\/api\/emoji-status#setting-an-emoji-status-from-a-bot) for more info on the full flow)", + "method_bots.updateUserEmojiStatus_param_user_id_type_InputUser": "The user whose emoji status should be changed", + "method_bots.updateUserEmojiStatus_param_emoji_status_type_EmojiStatus": "The emoji status", + "method_bots.toggleUserEmojiStatusPermission": "Allow or prevent a bot from [changing our emoji status \u00bb](https:\/\/core.telegram.org\/api\/emoji-status#setting-an-emoji-status-from-a-bot)", + "method_bots.toggleUserEmojiStatusPermission_param_bot_type_InputUser": "The bot", + "method_bots.toggleUserEmojiStatusPermission_param_enabled_type_Bool": "Whether to allow or prevent the bot from changing our emoji status", + "method_bots.checkDownloadFileParams": "Check if a [mini app](https:\/\/core.telegram.org\/api\/bots\/webapps) can request the download of a specific file: called when handling [web\\_app\\_request\\_file\\_download events \u00bb](https:\/\/core.telegram.org\/api\/web-events#web-app-request-file-download)", + "method_bots.checkDownloadFileParams_param_bot_type_InputUser": "The bot that owns the [mini app](https:\/\/core.telegram.org\/api\/bots\/webapps) that requested the download", + "method_bots.checkDownloadFileParams_param_file_name_type_string": "The `filename` from the [web\\_app\\_request\\_file\\_download event \u00bb](https:\/\/core.telegram.org\/api\/web-events#web-app-request-file-download)", + "method_bots.checkDownloadFileParams_param_url_type_string": "The `url` from the [web\\_app\\_request\\_file\\_download event \u00bb](https:\/\/core.telegram.org\/api\/web-events#web-app-request-file-download)", + "method_bots.getAdminedBots": "Get a list of bots owned by the current user", + "method_bots.updateStarRefProgram": "Create, edit or delete the [affiliate program](https:\/\/core.telegram.org\/api\/bots\/referrals) of a bot we own", + "method_bots.updateStarRefProgram_param_bot_type_InputUser": "The bot", + "method_bots.updateStarRefProgram_param_commission_permille_type_int": "The permille commission rate: it indicates the share of Telegram Stars received by affiliates for every transaction made by users they referred inside of the bot.
The minimum and maximum values for this parameter are contained in the [starref\\_min\\_commission\\_permille](https:\/\/core.telegram.org\/api\/config#starref-min-commission-permille) and [starref\\_max\\_commission\\_permille](https:\/\/core.telegram.org\/api\/config#starref-max-commission-permille) client configuration parameters.
Can be `0` to terminate the affiliate program.
Both the duration and the commission may only be raised after creation of the program: to lower them, the program must first be terminated and a new one created.", + "method_bots.updateStarRefProgram_param_duration_months_type_flags.0?int": "Indicates the duration of the affiliate program; if not set, there is no expiration date.", + "method_bots.setCustomVerification": "Verify a user or chat [on behalf of an organization \u00bb](https:\/\/core.telegram.org\/api\/bots\/verification).", + "method_bots.setCustomVerification_param_enabled_type_flags.1?true": "If set, adds the verification; otherwise removes verification.", + "method_bots.setCustomVerification_param_bot_type_flags.0?InputUser": "Must **not** be set if invoked by a bot, **must** be set to the ID of an owned bot if invoked by a user.", + "method_bots.setCustomVerification_param_peer_type_InputPeer": "The peer to verify", + "method_bots.setCustomVerification_param_custom_description_type_flags.2?string": "Custom description for the verification, the UTF-8 length limit for this field is contained in [bot\\_verification\\_description\\_length\\_limit \u00bb](https:\/\/core.telegram.org\/api\/config#bot-verification-description-length-limit).
If not set, `Was verified by organization \"organization_name\"` will be used as description.", + "method_bots.getBotRecommendations": "Obtain a list of similarly themed bots, selected based on similarities in their subscriber bases, see [here \u00bb](https:\/\/core.telegram.org\/api\/recommend) for more info.", + "method_bots.getBotRecommendations_param_bot_type_InputUser": "The method will return bots related to the passed bot.", + "method_payments.getPaymentForm": "Get a payment form", + "method_payments.getPaymentForm_param_invoice_type_InputInvoice": "Invoice", + "method_payments.getPaymentForm_param_theme_params_type_flags.0?DataJSON": "[Theme parameters \u00bb](https:\/\/core.telegram.org\/api\/bots\/webapps#theme-parameters)", + "method_payments.getPaymentReceipt": "Get payment receipt", + "method_payments.getPaymentReceipt_param_peer_type_InputPeer": "The peer where the payment receipt was sent", + "method_payments.getPaymentReceipt_param_msg_id_type_int": "Message ID of receipt", + "method_payments.validateRequestedInfo": "Submit requested order information for validation", + "method_payments.validateRequestedInfo_param_save_type_flags.0?true": "Save order information to re-use it for future orders", + "method_payments.validateRequestedInfo_param_invoice_type_InputInvoice": "Invoice", + "method_payments.validateRequestedInfo_param_info_type_PaymentRequestedInfo": "Requested order information", + "method_payments.sendPaymentForm": "Send compiled payment form", + "method_payments.sendPaymentForm_param_form_id_type_long": "Form ID", + "method_payments.sendPaymentForm_param_invoice_type_InputInvoice": "Invoice", + "method_payments.sendPaymentForm_param_requested_info_id_type_flags.0?string": "ID of saved and validated [order info](..\/constructors\/payments.validatedRequestedInfo.md)", + "method_payments.sendPaymentForm_param_shipping_option_id_type_flags.1?string": "Chosen shipping option ID", + "method_payments.sendPaymentForm_param_credentials_type_InputPaymentCredentials": "Payment credentials", + "method_payments.sendPaymentForm_param_tip_amount_type_flags.2?long": "Tip, in the smallest units of the currency (integer, not float\/double). For example, for a price of `US$ 1.45` pass `amount = 145`. See the exp parameter in [currencies.json](https:\/\/core.telegram.org\/bots\/payments\/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).", + "method_payments.getSavedInfo": "Get saved payment information", + "method_payments.clearSavedInfo": "Clear saved payment information", + "method_payments.clearSavedInfo_param_credentials_type_flags.0?true": "Remove saved payment credentials", + "method_payments.clearSavedInfo_param_info_type_flags.1?true": "Clear the last order settings saved by the user", + "method_payments.getBankCardData": "Get info about a credit card", + "method_payments.getBankCardData_param_number_type_string": "Credit card number", + "method_payments.exportInvoice": "Generate an [invoice deep link](https:\/\/core.telegram.org\/api\/links#invoice-links)", + "method_payments.exportInvoice_param_invoice_media_type_InputMedia": "Invoice", + "method_payments.assignAppStoreTransaction": "Informs server about a purchase made through the App Store: for official applications only.", + "method_payments.assignAppStoreTransaction_param_receipt_type_bytes": "Receipt", + "method_payments.assignAppStoreTransaction_param_purpose_type_InputStorePaymentPurpose": "Payment purpose", + "method_payments.assignPlayMarketTransaction": "Informs server about a purchase made through the Play Store: for official applications only.", + "method_payments.assignPlayMarketTransaction_param_receipt_type_DataJSON": "Receipt", + "method_payments.assignPlayMarketTransaction_param_purpose_type_InputStorePaymentPurpose": "Payment purpose", + "method_payments.getPremiumGiftCodeOptions": "Obtain a list of Telegram Premium [giveaway\/gift code \u00bb](https:\/\/core.telegram.org\/api\/giveaways) options.", + "method_payments.getPremiumGiftCodeOptions_param_boost_peer_type_flags.0?InputPeer": "The channel that will start the giveaway", + "method_payments.checkGiftCode": "Obtain information about a [Telegram Premium giftcode \u00bb](https:\/\/core.telegram.org\/api\/giveaways)", + "method_payments.checkGiftCode_param_slug_type_string": "The giftcode to check", + "method_payments.applyGiftCode": "Apply a [Telegram Premium giftcode \u00bb](https:\/\/core.telegram.org\/api\/giveaways)", + "method_payments.applyGiftCode_param_slug_type_string": "The code to apply", + "method_payments.getGiveawayInfo": "Obtain information about a [Telegram Premium giveaway \u00bb](https:\/\/core.telegram.org\/api\/giveaways).", + "method_payments.getGiveawayInfo_param_peer_type_InputPeer": "The peer where the giveaway was posted.", + "method_payments.getGiveawayInfo_param_msg_id_type_int": "Message ID of the [messageActionGiveawayLaunch](..\/constructors\/messageActionGiveawayLaunch.md) service message", + "method_payments.launchPrepaidGiveaway": "Launch a [prepaid giveaway \u00bb](https:\/\/core.telegram.org\/api\/giveaways).", + "method_payments.launchPrepaidGiveaway_param_peer_type_InputPeer": "The peer where to launch the giveaway.", + "method_payments.launchPrepaidGiveaway_param_giveaway_id_type_long": "The prepaid giveaway ID.", + "method_payments.launchPrepaidGiveaway_param_purpose_type_InputStorePaymentPurpose": "Giveway parameters", + "method_payments.getStarsTopupOptions": "Obtain a list of [Telegram Stars topup options \u00bb](https:\/\/core.telegram.org\/api\/stars#buying-or-gifting-stars) as [starsTopupOption](..\/constructors\/starsTopupOption.md) constructors.", + "method_payments.getStarsStatus": "Get the current [Telegram Stars balance](https:\/\/core.telegram.org\/api\/stars) of the current account (with peer=[inputPeerSelf](..\/constructors\/inputPeerSelf.md)), or the stars balance of the bot specified in `peer`.", + "method_payments.getStarsStatus_param_ton_type_flags.0?true": "If set, returns the channel\/ad revenue balance in nanotons.", + "method_payments.getStarsStatus_param_peer_type_InputPeer": "Peer of which to get the balance.", + "method_payments.getStarsTransactions": "Fetch [Telegram Stars transactions](https:\/\/core.telegram.org\/api\/stars#balance-and-transaction-history).\n\nThe `inbound` and `outbound` flags are mutually exclusive: if none of the two are set, both incoming and outgoing transactions are fetched.", + "method_payments.getStarsTransactions_param_inbound_type_flags.0?true": "If set, fetches only incoming transactions.", + "method_payments.getStarsTransactions_param_outbound_type_flags.1?true": "If set, fetches only outgoing transactions.", + "method_payments.getStarsTransactions_param_ascending_type_flags.2?true": "Return transactions in ascending order by date (instead of descending order by date).", + "method_payments.getStarsTransactions_param_ton_type_flags.4?true": "If set, returns the channel\/ad revenue transactions in nanotons, instead.", + "method_payments.getStarsTransactions_param_subscription_id_type_flags.3?string": "If set, fetches only transactions for the specified [Telegram Star subscription \u00bb](https:\/\/core.telegram.org\/api\/stars#star-subscriptions).", + "method_payments.getStarsTransactions_param_peer_type_InputPeer": "Fetch the transaction history of the peer ([inputPeerSelf](..\/constructors\/inputPeerSelf.md) or a bot we own).", + "method_payments.getStarsTransactions_param_offset_type_string": "[Offset for pagination, obtained from the returned `next_offset`, initially an empty string \u00bb](https:\/\/core.telegram.org\/api\/offsets).", + "method_payments.getStarsTransactions_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_payments.sendStarsForm": "Make a payment using [Telegram Stars, see here \u00bb](https:\/\/core.telegram.org\/api\/stars#using-stars) for more info.", + "method_payments.sendStarsForm_param_form_id_type_long": "Payment form ID", + "method_payments.sendStarsForm_param_invoice_type_InputInvoice": "Invoice", + "method_payments.refundStarsCharge": "Refund a [Telegram Stars](https:\/\/core.telegram.org\/api\/stars) transaction, see [here \u00bb](https:\/\/core.telegram.org\/api\/payments#6-refunds) for more info.", + "method_payments.refundStarsCharge_param_user_id_type_InputUser": "User to refund.", + "method_payments.refundStarsCharge_param_charge_id_type_string": "Transaction ID.", + "method_payments.getStarsRevenueStats": "Get [Telegram Star revenue statistics \u00bb](https:\/\/core.telegram.org\/api\/stars).", + "method_payments.getStarsRevenueStats_param_dark_type_flags.0?true": "Whether to enable dark theme for graph colors", + "method_payments.getStarsRevenueStats_param_ton_type_flags.1?true": "If set, fetches channel\/bot ad revenue statistics in TON.", + "method_payments.getStarsRevenueStats_param_peer_type_InputPeer": "Get statistics for the specified bot, channel or ourselves ([inputPeerSelf](..\/constructors\/inputPeerSelf.md)).", + "method_payments.getStarsRevenueWithdrawalUrl": "Withdraw funds from a channel or bot's [star balance \u00bb](https:\/\/core.telegram.org\/api\/stars#withdrawing-revenue).", + "method_payments.getStarsRevenueWithdrawalUrl_param_ton_type_flags.0?true": "If set, withdraws channel\/ad revenue in TON.", + "method_payments.getStarsRevenueWithdrawalUrl_param_peer_type_InputPeer": "Channel or bot from which to withdraw funds.", + "method_payments.getStarsRevenueWithdrawalUrl_param_amount_type_flags.1?long": "The amount of stars or nanotons to withdraw.", + "method_payments.getStarsRevenueWithdrawalUrl_param_password_type_InputCheckPasswordSRP": "2FA password, see [here \u00bb](https:\/\/core.telegram.org\/api\/srp#using-the-2fa-password) for more info.", + "method_payments.getStarsRevenueAdsAccountUrl": "Returns a URL for a Telegram Ad platform account that can be used to set up advertisements for channel\/bot in `peer`, paid using the Telegram Stars owned by the specified `peer`, see [here \u00bb](https:\/\/core.telegram.org\/api\/stars#paying-for-ads) for more info.", + "method_payments.getStarsRevenueAdsAccountUrl_param_peer_type_InputPeer": "Channel or bot that owns the stars.", + "method_payments.getStarsTransactionsByID": "Obtain info about [Telegram Star transactions \u00bb](https:\/\/core.telegram.org\/api\/stars#balance-and-transaction-history) using specific transaction IDs.", + "method_payments.getStarsTransactionsByID_param_ton_type_flags.0?true": "If set, returns channel\/bot ad revenue transactions in nanotons.", + "method_payments.getStarsTransactionsByID_param_peer_type_InputPeer": "Channel or bot.", + "method_payments.getStarsTransactionsByID_param_id_type_Vector<InputStarsTransaction>": "Transaction IDs.", + "method_payments.getStarsGiftOptions": "Obtain a list of [Telegram Stars gift options \u00bb](https:\/\/core.telegram.org\/api\/stars#buying-or-gifting-stars) as [starsGiftOption](..\/constructors\/starsGiftOption.md) constructors.", + "method_payments.getStarsGiftOptions_param_user_id_type_flags.0?InputUser": "Receiver of the gift (optional).", + "method_payments.getStarsSubscriptions": "Obtain a list of active, expired or cancelled [Telegram Star subscriptions \u00bb](https:\/\/core.telegram.org\/api\/invites#paid-invite-links).", + "method_payments.getStarsSubscriptions_param_missing_balance_type_flags.0?true": "Whether to return only subscriptions expired due to an excessively low Telegram Star balance.", + "method_payments.getStarsSubscriptions_param_peer_type_InputPeer": "Always pass [inputPeerSelf](..\/constructors\/inputPeerSelf.md).", + "method_payments.getStarsSubscriptions_param_offset_type_string": "Offset for pagination, taken from [payments.starsStatus](..\/constructors\/payments.starsStatus.md).`subscriptions_next_offset`.", + "method_payments.changeStarsSubscription": "Activate or deactivate a [Telegram Star subscription \u00bb](https:\/\/core.telegram.org\/api\/invites#paid-invite-links).", + "method_payments.changeStarsSubscription_param_peer_type_InputPeer": "Always pass [inputPeerSelf](..\/constructors\/inputPeerSelf.md).", + "method_payments.changeStarsSubscription_param_subscription_id_type_string": "ID of the subscription.", + "method_payments.changeStarsSubscription_param_canceled_type_flags.0?Bool": "Whether to cancel or reactivate the subscription.", + "method_payments.fulfillStarsSubscription": "Re-join a private channel associated to an active [Telegram Star subscription \u00bb](https:\/\/core.telegram.org\/api\/invites#paid-invite-links).", + "method_payments.fulfillStarsSubscription_param_peer_type_InputPeer": "Always pass [inputPeerSelf](..\/constructors\/inputPeerSelf.md).", + "method_payments.fulfillStarsSubscription_param_subscription_id_type_string": "ID of the subscription.", + "method_payments.getStarsGiveawayOptions": "Fetch a list of [star giveaway options \u00bb](https:\/\/core.telegram.org\/api\/giveaways#star-giveaways).", + "method_payments.getStarGifts": "Get a list of available [gifts, see here \u00bb](https:\/\/core.telegram.org\/api\/gifts) for more info.", + "method_payments.getStarGifts_param_hash_type_int": "[Hash used for caching, for more info click here](https:\/\/core.telegram.org\/api\/offsets#hash-generation).
The hash may be generated locally by using the `id`s of the returned or stored sticker [starGift](..\/constructors\/starGift.md)s.", + "method_payments.saveStarGift": "Display or remove a [received gift \u00bb](https:\/\/core.telegram.org\/api\/gifts) from our profile.", + "method_payments.saveStarGift_param_unsave_type_flags.0?true": "If set, hides the gift from our profile.", + "method_payments.saveStarGift_param_stargift_type_InputSavedStarGift": "The gift to display or remove.", + "method_payments.convertStarGift": "Convert a [received gift \u00bb](https:\/\/core.telegram.org\/api\/gifts) into Telegram Stars: this will permanently destroy the gift, converting it into [starGift](..\/constructors\/starGift.md).`convert_stars` [Telegram Stars](https:\/\/core.telegram.org\/api\/stars), added to the user's balance.\n\nNote that [starGift](..\/constructors\/starGift.md).`convert_stars` will be less than the buying price ([starGift](..\/constructors\/starGift.md).`stars`) of the gift if it was originally bought using Telegram Stars bought a long time ago.", + "method_payments.convertStarGift_param_stargift_type_InputSavedStarGift": "The gift to convert.", + "method_payments.botCancelStarsSubscription": "Cancel a [bot subscription](https:\/\/core.telegram.org\/api\/subscriptions#bot-subscriptions)", + "method_payments.botCancelStarsSubscription_param_restore_type_flags.0?true": "If **not** set, disables autorenewal of the subscriptions, and prevents the user from reactivating the subscription once the current period expires: a subscription cancelled by the bot will have the [starsSubscription](..\/constructors\/starsSubscription.md).`bot_canceled` flag set.
The bot can can partially undo this operation by setting this flag: this will allow the user to reactivate the subscription.", + "method_payments.botCancelStarsSubscription_param_user_id_type_InputUser": "The ID of the user whose subscription should be (un)cancelled", + "method_payments.botCancelStarsSubscription_param_charge_id_type_string": "The `provider_charge_id` from the [messageActionPaymentSentMe](..\/constructors\/messageActionPaymentSentMe.md) service message sent to the bot for the first subscription payment.", + "method_payments.getConnectedStarRefBots": "Fetch all affiliations we have created for a certain peer", + "method_payments.getConnectedStarRefBots_param_peer_type_InputPeer": "The affiliated peer", + "method_payments.getConnectedStarRefBots_param_offset_date_type_flags.2?int": "If set, returns only results older than the specified unixtime", + "method_payments.getConnectedStarRefBots_param_offset_link_type_flags.2?string": "Offset for [pagination](https:\/\/core.telegram.org\/api\/offsets), taken from the last returned [connectedBotStarRef](..\/constructors\/connectedBotStarRef.md).`url` (initially empty)", + "method_payments.getConnectedStarRefBots_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_payments.getConnectedStarRefBot": "Fetch info about a specific [bot affiliation \u00bb](https:\/\/core.telegram.org\/api\/bots\/referrals)", + "method_payments.getConnectedStarRefBot_param_peer_type_InputPeer": "The affiliated peer", + "method_payments.getConnectedStarRefBot_param_bot_type_InputUser": "The bot that offers the affiliate program", + "method_payments.getSuggestedStarRefBots": "Obtain a list of suggested [mini apps](https:\/\/core.telegram.org\/api\/bots\/webapps) with available [affiliate programs](https:\/\/core.telegram.org\/api\/bots\/referrals)\n\n`order_by_revenue` and `order_by_date` are mutually exclusive: if neither is set, results are sorted by profitability.", + "method_payments.getSuggestedStarRefBots_param_order_by_revenue_type_flags.0?true": "If set, orders results by the expected revenue", + "method_payments.getSuggestedStarRefBots_param_order_by_date_type_flags.1?true": "If set, orders results by the creation date of the affiliate program", + "method_payments.getSuggestedStarRefBots_param_peer_type_InputPeer": "The peer that will become the affiliate: star commissions will be transferred to this peer's star balance.", + "method_payments.getSuggestedStarRefBots_param_offset_type_string": "Offset for pagination, taken from [payments.suggestedStarRefBots](..\/constructors\/payments.suggestedStarRefBots.md).`next_offset`, initially empty.", + "method_payments.getSuggestedStarRefBots_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_payments.connectStarRefBot": "Join a bot's [affiliate program, becoming an affiliate \u00bb](https:\/\/core.telegram.org\/api\/bots\/referrals#becoming-an-affiliate)", + "method_payments.connectStarRefBot_param_peer_type_InputPeer": "The peer that will become the affiliate: star commissions will be transferred to this peer's star balance.", + "method_payments.connectStarRefBot_param_bot_type_InputUser": "The bot that offers the affiliate program", + "method_payments.editConnectedStarRefBot": "Leave a bot's [affiliate program \u00bb](https:\/\/core.telegram.org\/api\/bots\/referrals#becoming-an-affiliate)", + "method_payments.editConnectedStarRefBot_param_revoked_type_flags.0?true": "If set, leaves the bot's affiliate program", + "method_payments.editConnectedStarRefBot_param_peer_type_InputPeer": "The peer that was affiliated", + "method_payments.editConnectedStarRefBot_param_link_type_string": "The affiliate link to revoke", + "method_payments.getStarGiftUpgradePreview": "Obtain a preview of the possible attributes (chosen randomly) a [gift \u00bb](https:\/\/core.telegram.org\/api\/gifts) can receive after upgrading it to a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts), see [here \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts) for more info.", + "method_payments.getStarGiftUpgradePreview_param_gift_id_type_long": "The gift to upgrade.", + "method_payments.upgradeStarGift": "Upgrade a [gift](https:\/\/core.telegram.org\/api\/gifts) to a [collectible gift](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts): can only be used if the upgrade was already paid by the gift sender; see [here \u00bb](https:\/\/core.telegram.org\/api\/gifts#upgrade-a-gift-to-a-collectible-gift) for more info on the full flow (including the different flow to use in case the upgrade was not paid by the gift sender).", + "method_payments.upgradeStarGift_param_keep_original_details_type_flags.0?true": "Set this flag to keep the original gift text, sender and receiver in the upgraded gift as a [starGiftAttributeOriginalDetails](..\/constructors\/starGiftAttributeOriginalDetails.md) attribute.", + "method_payments.upgradeStarGift_param_stargift_type_InputSavedStarGift": "The gift to upgrade", + "method_payments.transferStarGift": "Transfer a [collectible gift](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts) to another user or channel: can only be used if transfer is free (i.e. [messageActionStarGiftUnique](..\/constructors\/messageActionStarGiftUnique.md).`transfer_stars` is not set); see [here \u00bb](https:\/\/core.telegram.org\/api\/gifts#transferring-collectible-gifts) for more info on the full flow (including the different flow to use in case the transfer isn't free).", + "method_payments.transferStarGift_param_stargift_type_InputSavedStarGift": "The gift to transfer.", + "method_payments.transferStarGift_param_to_id_type_InputPeer": "Destination peer.", + "method_payments.getUniqueStarGift": "Obtain info about a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts) using a slug obtained from a [collectible gift link \u00bb](https:\/\/core.telegram.org\/api\/links#collectible-gift-link).", + "method_payments.getUniqueStarGift_param_slug_type_string": "The slug.", + "method_payments.getSavedStarGifts": "Fetch the full list of [gifts](https:\/\/core.telegram.org\/api\/gifts) owned by a peer.\n\nNote that unlike what the name suggests, the method can be used to fetch both \"saved\" and \"unsaved\" gifts (aka gifts both pinned and not pinned) to the profile, depending on the passed flags.", + "method_payments.getSavedStarGifts_param_exclude_unsaved_type_flags.0?true": "Exclude gifts not pinned on the profile.", + "method_payments.getSavedStarGifts_param_exclude_saved_type_flags.1?true": "Exclude gifts pinned on the profile.", + "method_payments.getSavedStarGifts_param_exclude_unlimited_type_flags.2?true": "Exclude gifts that do not have the [starGift](..\/constructors\/starGift.md).`limited` flag set.", + "method_payments.getSavedStarGifts_param_exclude_unique_type_flags.4?true": "Exclude [collectible gifts \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "method_payments.getSavedStarGifts_param_sort_by_value_type_flags.5?true": "If set, sorts the gifts by price instead of reception date.", + "method_payments.getSavedStarGifts_param_exclude_upgradable_type_flags.7?true": "Exclude gifts that can be [upgraded to collectible gifts \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "method_payments.getSavedStarGifts_param_exclude_unupgradable_type_flags.8?true": "Exclude gifts that cannot be [upgraded to collectible gifts \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "method_payments.getSavedStarGifts_param_peer_type_InputPeer": "Fetch only gifts owned by the specified peer, such as: a user, with peer=[inputPeerUser](..\/constructors\/inputPeerUser.md); a channel, with peer=[inputPeerChannel](..\/constructors\/inputPeerChannel.md); a [connected business user](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots) (when executing the method as a bot, over the business connection), with peer=[inputPeerUser](..\/constructors\/inputPeerUser.md).", + "method_payments.getSavedStarGifts_param_collection_id_type_flags.6?int": "Only returns gifts within the specified [collection \u00bb](https:\/\/core.telegram.org\/api\/gifts#gift-collections).", + "method_payments.getSavedStarGifts_param_offset_type_string": "[Offset for pagination](https:\/\/core.telegram.org\/api\/offsets).", + "method_payments.getSavedStarGifts_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_payments.getSavedStarGift": "Fetch info about specific [gifts](https:\/\/core.telegram.org\/api\/gifts) owned by a peer we control.\n\nNote that unlike what the name suggests, the method can be used to fetch both \"saved\" and \"unsaved\" gifts (aka gifts both pinned and not pinned to the profile).", + "method_payments.getSavedStarGift_param_stargift_type_Vector<InputSavedStarGift>": "List of gifts to fetch info about.", + "method_payments.getStarGiftWithdrawalUrl": "Convert a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts) to an NFT on the TON blockchain.", + "method_payments.getStarGiftWithdrawalUrl_param_stargift_type_InputSavedStarGift": "The collectible gift to export.", + "method_payments.getStarGiftWithdrawalUrl_param_password_type_InputCheckPasswordSRP": "The current user's 2FA password, passed as [specified here \u00bb](https:\/\/core.telegram.org\/api\/srp).", + "method_payments.toggleChatStarGiftNotifications": "Enables or disables the reception of notifications every time a [gift \u00bb](https:\/\/core.telegram.org\/api\/gifts) is received by the specified channel, can only be invoked by admins with `post_messages` [admin rights](..\/constructors\/chatAdminRights.md).", + "method_payments.toggleChatStarGiftNotifications_param_enabled_type_flags.0?true": "Whether to enable or disable reception of notifications in the form of [messageActionStarGiftUnique](..\/constructors\/messageActionStarGiftUnique.md) and [messageActionStarGift](..\/constructors\/messageActionStarGift.md) service messages from the channel.", + "method_payments.toggleChatStarGiftNotifications_param_peer_type_InputPeer": "The channel for which to receive or not receive notifications.", + "method_payments.toggleStarGiftsPinnedToTop": "Pins a received gift on top of the profile of the user or owned channels by using [payments.toggleStarGiftsPinnedToTop](..\/methods\/payments.toggleStarGiftsPinnedToTop.md).", + "method_payments.toggleStarGiftsPinnedToTop_param_peer_type_InputPeer": "The peer where to pin the gift.", + "method_payments.toggleStarGiftsPinnedToTop_param_stargift_type_Vector<InputSavedStarGift>": "The gift to pin.", + "method_payments.canPurchaseStore": "Checks whether a purchase is possible. Must be called before in-store purchase, official apps only.", + "method_payments.canPurchaseStore_param_purpose_type_InputStorePaymentPurpose": "Payment purpose.", + "method_payments.getResaleStarGifts": "Get [collectible gifts](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts) of a specific type currently on resale, see [here \u00bb](https:\/\/core.telegram.org\/api\/gifts#reselling-collectible-gifts) for more info.\n\n`sort_by_price` and `sort_by_num` are mutually exclusive, if neither are set results are sorted by the unixtime (descending) when their resell price was last changed.\n\nSee [here \u00bb](https:\/\/core.telegram.org\/api\/gifts#sending-gifts) for detailed documentation on this method.", + "method_payments.getResaleStarGifts_param_sort_by_price_type_flags.1?true": "Sort gifts by price (ascending).", + "method_payments.getResaleStarGifts_param_sort_by_num_type_flags.2?true": "Sort gifts by number (ascending).", + "method_payments.getResaleStarGifts_param_attributes_hash_type_flags.0?long": "If a previous call to the method was made and [payments.resaleStarGifts](..\/constructors\/payments.resaleStarGifts.md).`attributes_hash` was set, pass it here to avoid returning any results if they haven't changed.
Otherwise, set this flag and pass `0` to return [payments.resaleStarGifts](..\/constructors\/payments.resaleStarGifts.md).`attributes_hash` and [payments.resaleStarGifts](..\/constructors\/payments.resaleStarGifts.md).`attributes`, **these two fields will not be set** if this flag is not set.", + "method_payments.getResaleStarGifts_param_gift_id_type_long": "Mandatory identifier of the base gift from which the collectible gift was upgraded.", + "method_payments.getResaleStarGifts_param_attributes_type_flags.3?Vector<StarGiftAttributeId>": "Optionally filter gifts with the specified attributes. If no attributes of a specific type are specified, all attributes of that type are allowed.", + "method_payments.getResaleStarGifts_param_offset_type_string": "Offset for pagination. If not equal to an empty string, [payments.resaleStarGifts](..\/constructors\/payments.resaleStarGifts.md).`counters` will not be set to avoid returning the counters every time a new page is fetched.", + "method_payments.getResaleStarGifts_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_payments.updateStarGiftPrice": "A [collectible gift we own \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts) can be put up for sale on the [gift marketplace \u00bb](https:\/\/telegram.org\/blog\/gift-marketplace-and-more) with this method, see [here \u00bb](https:\/\/core.telegram.org\/api\/gifts#reselling-collectible-gifts) for more info.", + "method_payments.updateStarGiftPrice_param_stargift_type_InputSavedStarGift": "The gift to resell.", + "method_payments.updateStarGiftPrice_param_resell_amount_type_StarsAmount": "Resale price of the gift.", + "method_payments.createStarGiftCollection": "Create a [star gift collection \u00bb](https:\/\/core.telegram.org\/api\/gifts#gift-collections).", + "method_payments.createStarGiftCollection_param_peer_type_InputPeer": "Peer where to create the collection.", + "method_payments.createStarGiftCollection_param_title_type_string": "Title of the collection.", + "method_payments.createStarGiftCollection_param_stargift_type_Vector<InputSavedStarGift>": "Gifts added to the collection.", + "method_payments.updateStarGiftCollection": "Add or remove gifts from a [star gift collection \u00bb](https:\/\/core.telegram.org\/api\/gifts#gift-collections), or rename the collection.", + "method_payments.updateStarGiftCollection_param_peer_type_InputPeer": "Peer that owns the collection.", + "method_payments.updateStarGiftCollection_param_collection_id_type_int": "Collection ID.", + "method_payments.updateStarGiftCollection_param_title_type_flags.0?string": "Title of the collection, to rename the collection.", + "method_payments.updateStarGiftCollection_param_delete_stargift_type_flags.1?Vector<InputSavedStarGift>": "Can contain a list of gifts to remove from the collection.", + "method_payments.updateStarGiftCollection_param_add_stargift_type_flags.2?Vector<InputSavedStarGift>": "Can contain a list of gifts to add to the collection.", + "method_payments.updateStarGiftCollection_param_order_type_flags.3?Vector<InputSavedStarGift>": "Can contain the new gift order.", + "method_payments.reorderStarGiftCollections": "Reorder the [star gift collections \u00bb](https:\/\/core.telegram.org\/api\/gifts#gift-collections) on an owned peer's profile.", + "method_payments.reorderStarGiftCollections_param_peer_type_InputPeer": "The owned peer.", + "method_payments.reorderStarGiftCollections_param_order_type_Vector<int>": "New collection order.", + "method_payments.deleteStarGiftCollection": "Delete a [star gift collection \u00bb](https:\/\/core.telegram.org\/api\/gifts#gift-collections).", + "method_payments.deleteStarGiftCollection_param_peer_type_InputPeer": "Peer that owns the collection.", + "method_payments.deleteStarGiftCollection_param_collection_id_type_int": "ID of the collection.", + "method_payments.getStarGiftCollections": "Fetches all [star gift collections \u00bb](https:\/\/core.telegram.org\/api\/gifts#gift-collections) of a peer.", + "method_payments.getStarGiftCollections_param_peer_type_InputPeer": "The peer.", + "method_payments.getStarGiftCollections_param_hash_type_long": "Hash ([generated as specified here \u00bb](https:\/\/core.telegram.org\/api\/offsets#hash-generation)) using the [starGiftCollection](..\/constructors\/starGiftCollection.md).`hash` field (**not** the `collection_id` field) of all collections returned by a previous method call, to avoid refetching the result if it hasn't changed.", + "method_payments.getUniqueStarGiftValueInfo": "Get information about the value of a [collectible gift \u00bb](https:\/\/core.telegram.org\/api\/gifts#collectible-gifts).", + "method_payments.getUniqueStarGiftValueInfo_param_slug_type_string": "`slug` from a [starGiftUnique](..\/constructors\/starGiftUnique.md).", + "method_payments.checkCanSendGift": "Check if the specified [gift \u00bb](https:\/\/core.telegram.org\/api\/gifts) can be sent.", + "method_payments.checkCanSendGift_param_gift_id_type_long": "Gift ID.", + "method_stickers.createStickerSet": "Create a stickerset.", + "method_stickers.createStickerSet_param_masks_type_flags.0?true": "Whether this is a mask stickerset", + "method_stickers.createStickerSet_param_emojis_type_flags.5?true": "Whether this is a [custom emoji](https:\/\/core.telegram.org\/api\/custom-emoji) stickerset.", + "method_stickers.createStickerSet_param_text_color_type_flags.6?true": "Whether the color of TGS custom emojis contained in this set should be changed to the text color when used in messages, the accent color if used as emoji status, white on chat photos, or another appropriate color based on context. For custom emoji stickersets only.", + "method_stickers.createStickerSet_param_user_id_type_InputUser": "Stickerset owner", + "method_stickers.createStickerSet_param_title_type_string": "Stickerset name, `1-64` chars", + "method_stickers.createStickerSet_param_short_name_type_string": "Short name of sticker set, to be used in [sticker deep links \u00bb](https:\/\/core.telegram.org\/api\/links#stickerset-links). Can contain only english letters, digits and underscores. Must begin with a letter, can't contain consecutive underscores and, **if called by a bot**, must end in `\"_by_\"`. `` is case insensitive. 1-64 characters.", + "method_stickers.createStickerSet_param_thumb_type_flags.2?InputDocument": "Thumbnail", + "method_stickers.createStickerSet_param_stickers_type_Vector<InputStickerSetItem>": "Stickers", + "method_stickers.createStickerSet_param_software_type_flags.3?string": "Used when [importing stickers using the sticker import SDKs](https:\/\/core.telegram.org\/import-stickers), specifies the name of the software that created the stickers", + "method_stickers.removeStickerFromSet": "Remove a sticker from the set where it belongs. The sticker set must have been created by the current user\/bot.", + "method_stickers.removeStickerFromSet_param_sticker_type_InputDocument": "The sticker to remove", + "method_stickers.changeStickerPosition": "Changes the absolute position of a sticker in the set to which it belongs. The sticker set must have been created by the current user\/bot.", + "method_stickers.changeStickerPosition_param_sticker_type_InputDocument": "The sticker", + "method_stickers.changeStickerPosition_param_position_type_int": "The new position of the sticker, zero-based", + "method_stickers.addStickerToSet": "Add a sticker to a stickerset. The sticker set must have been created by the current user\/bot.", + "method_stickers.addStickerToSet_param_stickerset_type_InputStickerSet": "The stickerset", + "method_stickers.addStickerToSet_param_sticker_type_InputStickerSetItem": "The sticker", + "method_stickers.setStickerSetThumb": "Set stickerset thumbnail", + "method_stickers.setStickerSetThumb_param_stickerset_type_InputStickerSet": "Stickerset", + "method_stickers.setStickerSetThumb_param_thumb_type_flags.0?InputDocument": "Thumbnail (only for normal stickersets, not custom emoji stickersets).", + "method_stickers.setStickerSetThumb_param_thumb_document_id_type_flags.1?long": "Only for [custom emoji stickersets](https:\/\/core.telegram.org\/api\/custom-emoji), ID of a custom emoji present in the set to use as thumbnail; pass 0 to fallback to the first custom emoji of the set.", + "method_stickers.checkShortName": "Check whether the given short name is available", + "method_stickers.checkShortName_param_short_name_type_string": "Short name", + "method_stickers.suggestShortName": "Suggests a short name for a given stickerpack name", + "method_stickers.suggestShortName_param_title_type_string": "Sticker pack name", + "method_stickers.changeSticker": "Update the keywords, emojis or [mask coordinates](https:\/\/core.telegram.org\/api\/stickers#mask-stickers) of a sticker.", + "method_stickers.changeSticker_param_sticker_type_InputDocument": "The sticker", + "method_stickers.changeSticker_param_emoji_type_flags.0?string": "If set, updates the emoji list associated to the sticker", + "method_stickers.changeSticker_param_mask_coords_type_flags.1?MaskCoords": "If set, updates the [mask coordinates](https:\/\/core.telegram.org\/api\/stickers#mask-stickers)", + "method_stickers.changeSticker_param_keywords_type_flags.2?string": "If set, updates the sticker keywords (separated by commas). Can't be provided for mask stickers.", + "method_stickers.renameStickerSet": "Renames a stickerset.", + "method_stickers.renameStickerSet_param_stickerset_type_InputStickerSet": "Stickerset to rename", + "method_stickers.renameStickerSet_param_title_type_string": "New stickerset title", + "method_stickers.deleteStickerSet": "Deletes a stickerset we created.", + "method_stickers.deleteStickerSet_param_stickerset_type_InputStickerSet": "Stickerset to delete", + "method_stickers.replaceSticker": "Replace a sticker in a [stickerset \u00bb](https:\/\/core.telegram.org\/api\/stickers).", + "method_stickers.replaceSticker_param_sticker_type_InputDocument": "Old sticker document.", + "method_stickers.replaceSticker_param_new_sticker_type_InputStickerSetItem": "New sticker.", + "method_phone.getCallConfig": "Get phone call configuration to be passed to libtgvoip's shared config", + "method_phone.requestCall": "Start a telegram phone call", + "method_phone.requestCall_param_video_type_flags.0?true": "Whether to start a video call", + "method_phone.requestCall_param_user_id_type_InputUser": "Destination of the phone call", + "method_phone.requestCall_param_random_id_type_int": "Random ID to avoid resending the same object", + "method_phone.requestCall_param_g_a_hash_type_bytes": "[Parameter for E2E encryption key exchange \u00bb](https:\/\/core.telegram.org\/api\/end-to-end\/voice-calls)", + "method_phone.requestCall_param_protocol_type_PhoneCallProtocol": "Phone call settings", + "method_phone.acceptCall": "Accept incoming call", + "method_phone.acceptCall_param_peer_type_InputPhoneCall": "The call to accept", + "method_phone.acceptCall_param_g_b_type_bytes": "[Parameter for E2E encryption key exchange \u00bb](https:\/\/core.telegram.org\/api\/end-to-end\/voice-calls)", + "method_phone.acceptCall_param_protocol_type_PhoneCallProtocol": "Phone call settings", + "method_phone.confirmCall": "[Complete phone call E2E encryption key exchange \u00bb](https:\/\/core.telegram.org\/api\/end-to-end\/voice-calls)", + "method_phone.confirmCall_param_peer_type_InputPhoneCall": "The phone call", + "method_phone.confirmCall_param_g_a_type_bytes": "[Parameter for E2E encryption key exchange \u00bb](https:\/\/core.telegram.org\/api\/end-to-end\/voice-calls)", + "method_phone.confirmCall_param_key_fingerprint_type_long": "Key fingerprint", + "method_phone.confirmCall_param_protocol_type_PhoneCallProtocol": "Phone call settings", + "method_phone.receivedCall": "Optional: notify the server that the user is currently busy in a call: this will automatically refuse all incoming phone calls until the current phone call is ended.", + "method_phone.receivedCall_param_peer_type_InputPhoneCall": "The phone call we're currently in", + "method_phone.discardCall": "Refuse or end running call", + "method_phone.discardCall_param_video_type_flags.0?true": "Whether this is a video call", + "method_phone.discardCall_param_peer_type_InputPhoneCall": "The phone call", + "method_phone.discardCall_param_duration_type_int": "Call duration", + "method_phone.discardCall_param_reason_type_PhoneCallDiscardReason": "Why was the call discarded", + "method_phone.discardCall_param_connection_id_type_long": "Preferred libtgvoip relay ID", + "method_phone.setCallRating": "Rate a call, returns info about the rating message sent to the official VoIP bot.", + "method_phone.setCallRating_param_user_initiative_type_flags.0?true": "Whether the user decided on their own initiative to rate the call", + "method_phone.setCallRating_param_peer_type_InputPhoneCall": "The call to rate", + "method_phone.setCallRating_param_rating_type_int": "Rating in `1-5` stars", + "method_phone.setCallRating_param_comment_type_string": "An additional comment", + "method_phone.saveCallDebug": "Send phone call debug data to server", + "method_phone.saveCallDebug_param_peer_type_InputPhoneCall": "Phone call", + "method_phone.saveCallDebug_param_debug_type_DataJSON": "Debug statistics obtained from libtgvoip", + "method_phone.sendSignalingData": "Send VoIP signaling data", + "method_phone.sendSignalingData_param_peer_type_InputPhoneCall": "Phone call", + "method_phone.sendSignalingData_param_data_type_bytes": "Signaling payload", + "method_phone.createGroupCall": "Create a group call or livestream", + "method_phone.createGroupCall_param_rtmp_stream_type_flags.2?true": "Whether RTMP stream support should be enabled: only the [group\/supergroup\/channel](https:\/\/core.telegram.org\/api\/channel) owner can use this flag.", + "method_phone.createGroupCall_param_peer_type_InputPeer": "Associate the group call or livestream to the provided [group\/supergroup\/channel](https:\/\/core.telegram.org\/api\/channel)", + "method_phone.createGroupCall_param_random_id_type_int": "Unique client message ID required to prevent creation of duplicate group calls", + "method_phone.createGroupCall_param_title_type_flags.0?string": "Call title", + "method_phone.createGroupCall_param_schedule_date_type_flags.1?int": "For scheduled group call or livestreams, the absolute date when the group call will start", + "method_phone.joinGroupCall": "Join a group call", + "method_phone.joinGroupCall_param_muted_type_flags.0?true": "If set, the user will be muted by default upon joining.", + "method_phone.joinGroupCall_param_video_stopped_type_flags.2?true": "If set, the user's video will be disabled by default upon joining.", + "method_phone.joinGroupCall_param_call_type_InputGroupCall": "The group call", + "method_phone.joinGroupCall_param_join_as_type_InputPeer": "Join the group call, presenting yourself as the specified user\/channel", + "method_phone.joinGroupCall_param_invite_hash_type_flags.1?string": "The invitation hash from the [invite link \u00bb](https:\/\/core.telegram.org\/api\/links#video-chat-livestream-links), if provided allows speaking in a livestream or muted group chat.", + "method_phone.joinGroupCall_param_public_key_type_flags.3?int256": "For conference calls, your public key.", + "method_phone.joinGroupCall_param_block_type_flags.3?bytes": "The [block containing an appropriate e2e.chain.changeSetGroupState event](https:\/\/core.telegram.org\/api\/end-to-end\/group-calls).", + "method_phone.joinGroupCall_param_params_type_DataJSON": "WebRTC parameters", + "method_phone.leaveGroupCall": "Leave a group call", + "method_phone.leaveGroupCall_param_call_type_InputGroupCall": "The group call", + "method_phone.leaveGroupCall_param_source_type_int": "Your source ID", + "method_phone.inviteToGroupCall": "Invite a set of users to a group call.", + "method_phone.inviteToGroupCall_param_call_type_InputGroupCall": "The group call", + "method_phone.inviteToGroupCall_param_users_type_Vector<InputUser>": "The users to invite.", + "method_phone.discardGroupCall": "Terminate a group call", + "method_phone.discardGroupCall_param_call_type_InputGroupCall": "The group call to terminate", + "method_phone.toggleGroupCallSettings": "Change group call settings", + "method_phone.toggleGroupCallSettings_param_reset_invite_hash_type_flags.1?true": "Invalidate existing invite links", + "method_phone.toggleGroupCallSettings_param_call_type_InputGroupCall": "Group call", + "method_phone.toggleGroupCallSettings_param_join_muted_type_flags.0?Bool": "Whether all users will that join this group call are muted by default upon joining the group call", + "method_phone.getGroupCall": "Get info about a group call", + "method_phone.getGroupCall_param_call_type_InputGroupCall": "The group call", + "method_phone.getGroupCall_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_phone.getGroupParticipants": "Get group call participants", + "method_phone.getGroupParticipants_param_call_type_InputGroupCall": "Group call", + "method_phone.getGroupParticipants_param_ids_type_Vector<InputPeer>": "If specified, will fetch group participant info about the specified peers", + "method_phone.getGroupParticipants_param_sources_type_Vector<int>": "If specified, will fetch group participant info about the specified WebRTC source IDs", + "method_phone.getGroupParticipants_param_offset_type_string": "Offset for results, taken from the `next_offset` field of [phone.groupParticipants](..\/constructors\/phone.groupParticipants.md), initially an empty string.
Note: if no more results are available, the method call will return an empty `next_offset`; thus, avoid providing the `next_offset` returned in [phone.groupParticipants](..\/constructors\/phone.groupParticipants.md) if it is empty, to avoid an infinite loop.", + "method_phone.getGroupParticipants_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_phone.checkGroupCall": "Check whether the group call Server Forwarding Unit is currently receiving the streams with the specified WebRTC source IDs. \nReturns an intersection of the source IDs specified in `sources`, and the source IDs currently being forwarded by the SFU.", + "method_phone.checkGroupCall_param_call_type_InputGroupCall": "Group call", + "method_phone.checkGroupCall_param_sources_type_Vector<int>": "Source IDs", + "method_phone.toggleGroupCallRecord": "Start or stop recording a group call: the recorded audio and video streams will be automatically sent to `Saved messages` (the chat with ourselves).", + "method_phone.toggleGroupCallRecord_param_start_type_flags.0?true": "Whether to start or stop recording", + "method_phone.toggleGroupCallRecord_param_video_type_flags.2?true": "Whether to also record video streams", + "method_phone.toggleGroupCallRecord_param_call_type_InputGroupCall": "The group call or livestream", + "method_phone.toggleGroupCallRecord_param_title_type_flags.1?string": "Recording title", + "method_phone.toggleGroupCallRecord_param_video_portrait_type_flags.2?Bool": "If video stream recording is enabled, whether to record in portrait or landscape mode", + "method_phone.editGroupCallParticipant": "Edit information about a given group call participant\n\nNote: [flags](https:\/\/core.telegram.org\/mtproto\/TL-combinators#conditional-fields).N?[Bool](..\/types\/Bool.md) parameters can have three possible values:\n\n- If the [TL flag](https:\/\/core.telegram.org\/mtproto\/TL-combinators#conditional-fields) is not set, the previous value will not be changed.\n- If the [TL flag](https:\/\/core.telegram.org\/mtproto\/TL-combinators#conditional-fields) is set and contains a [boolTrue](..\/constructors\/boolTrue.md), the previous value will be overwritten to `true`.\n- If the [TL flag](https:\/\/core.telegram.org\/mtproto\/TL-combinators#conditional-fields) is set and contains a [boolFalse](..\/constructors\/boolFalse.md), the previous value will be overwritten to `false`.", + "method_phone.editGroupCallParticipant_param_call_type_InputGroupCall": "The group call", + "method_phone.editGroupCallParticipant_param_participant_type_InputPeer": "The group call participant (can also be the user itself)", + "method_phone.editGroupCallParticipant_param_muted_type_flags.0?Bool": "Whether to mute or unmute the specified participant", + "method_phone.editGroupCallParticipant_param_volume_type_flags.1?int": "New volume", + "method_phone.editGroupCallParticipant_param_raise_hand_type_flags.2?Bool": "Raise or lower hand", + "method_phone.editGroupCallParticipant_param_video_stopped_type_flags.3?Bool": "Start or stop the video stream", + "method_phone.editGroupCallParticipant_param_video_paused_type_flags.4?Bool": "Pause or resume the video stream", + "method_phone.editGroupCallParticipant_param_presentation_paused_type_flags.5?Bool": "Pause or resume the screen sharing stream", + "method_phone.editGroupCallTitle": "Edit the title of a group call or livestream", + "method_phone.editGroupCallTitle_param_call_type_InputGroupCall": "Group call", + "method_phone.editGroupCallTitle_param_title_type_string": "New title", + "method_phone.getGroupCallJoinAs": "Get a list of peers that can be used to join a group call, presenting yourself as a specific user\/channel.", + "method_phone.getGroupCallJoinAs_param_peer_type_InputPeer": "The dialog whose group call or livestream we're trying to join", + "method_phone.exportGroupCallInvite": "Get an [invite link](https:\/\/core.telegram.org\/api\/links#video-chat-livestream-links) for a group call or livestream", + "method_phone.exportGroupCallInvite_param_can_self_unmute_type_flags.0?true": "For livestreams or muted group chats, if set, users that join using this link will be able to speak without explicitly requesting permission by (for example by raising their hand).", + "method_phone.exportGroupCallInvite_param_call_type_InputGroupCall": "The group call", + "method_phone.toggleGroupCallStartSubscription": "Subscribe or unsubscribe to a scheduled group call", + "method_phone.toggleGroupCallStartSubscription_param_call_type_InputGroupCall": "Scheduled group call", + "method_phone.toggleGroupCallStartSubscription_param_subscribed_type_Bool": "Enable or disable subscription", + "method_phone.startScheduledGroupCall": "Start a scheduled group call.", + "method_phone.startScheduledGroupCall_param_call_type_InputGroupCall": "The scheduled group call", + "method_phone.saveDefaultGroupCallJoinAs": "Set the default peer that will be used to join a group call in a specific dialog.", + "method_phone.saveDefaultGroupCallJoinAs_param_peer_type_InputPeer": "The dialog", + "method_phone.saveDefaultGroupCallJoinAs_param_join_as_type_InputPeer": "The default peer that will be used to join group calls in this dialog, presenting yourself as a specific user\/channel.", + "method_phone.joinGroupCallPresentation": "Start screen sharing in a call", + "method_phone.joinGroupCallPresentation_param_call_type_InputGroupCall": "The group call", + "method_phone.joinGroupCallPresentation_param_params_type_DataJSON": "WebRTC parameters", + "method_phone.leaveGroupCallPresentation": "Stop screen sharing in a group call", + "method_phone.leaveGroupCallPresentation_param_call_type_InputGroupCall": "The group call", + "method_phone.getGroupCallStreamChannels": "Get info about RTMP streams in a group call or livestream. \nThis method should be invoked to the same group\/channel-related DC used for [downloading livestream chunks](https:\/\/core.telegram.org\/api\/files#downloading-files). \nAs usual, the media DC is preferred, if available.", + "method_phone.getGroupCallStreamChannels_param_call_type_InputGroupCall": "Group call or livestream", + "method_phone.getGroupCallStreamRtmpUrl": "Get RTMP URL and stream key for RTMP livestreams. Can be used even before creating the actual RTMP livestream with [phone.createGroupCall](..\/methods\/phone.createGroupCall.md) (the `rtmp_stream` flag must be set).", + "method_phone.getGroupCallStreamRtmpUrl_param_peer_type_InputPeer": "Peer to livestream into", + "method_phone.getGroupCallStreamRtmpUrl_param_revoke_type_Bool": "Whether to revoke the previous stream key or simply return the existing one", + "method_phone.saveCallLog": "Save phone call debug information", + "method_phone.saveCallLog_param_peer_type_InputPhoneCall": "Phone call", + "method_phone.saveCallLog_param_file_type_InputFile": "Logs", + "method_phone.createConferenceCall": "Create and optionally join a new conference call.", + "method_phone.createConferenceCall_param_muted_type_flags.0?true": "If set, mute our microphone when joining the call (can only be used if `join` is set).", + "method_phone.createConferenceCall_param_video_stopped_type_flags.2?true": "If set, our video stream is disabled (can only be used if `join` is set).", + "method_phone.createConferenceCall_param_join_type_flags.3?true": "If set, also join the call, otherwise just create the call link.", + "method_phone.createConferenceCall_param_random_id_type_int": "Unique client message ID required to prevent creation of duplicate group calls.", + "method_phone.createConferenceCall_param_public_key_type_flags.3?int256": "Public key (can only be used if `join` is set).", + "method_phone.createConferenceCall_param_block_type_flags.3?bytes": "Initial blockchain block (can only be used if `join` is set).", + "method_phone.createConferenceCall_param_params_type_flags.3?DataJSON": "Parameters from tgcalls (can only be used if `join` is set).", + "method_phone.deleteConferenceCallParticipants": "Remove participants from a conference call.\n\nExactly one of the `only_left` and `kick` flags must be set.", + "method_phone.deleteConferenceCallParticipants_param_only_left_type_flags.0?true": "Whether this is a removal of members that already left the conference call.", + "method_phone.deleteConferenceCallParticipants_param_kick_type_flags.1?true": "Whether this is a forced removal of active members in a conference call.", + "method_phone.deleteConferenceCallParticipants_param_call_type_InputGroupCall": "The conference call.", + "method_phone.deleteConferenceCallParticipants_param_ids_type_Vector<long>": "IDs of users to remove.", + "method_phone.deleteConferenceCallParticipants_param_block_type_bytes": "The [block containing an appropriate e2e.chain.changeSetGroupState event](https:\/\/core.telegram.org\/api\/end-to-end\/group-calls)", + "method_phone.sendConferenceCallBroadcast": "Broadcast a blockchain block to all members of a conference call, see [here \u00bb](https:\/\/core.telegram.org\/api\/end-to-end\/group-calls) for more info.", + "method_phone.sendConferenceCallBroadcast_param_call_type_InputGroupCall": "The conference where to broadcast the block.", + "method_phone.sendConferenceCallBroadcast_param_block_type_bytes": "The block to broadcast.", + "method_phone.inviteConferenceCallParticipant": "Invite a user to a conference call.", + "method_phone.inviteConferenceCallParticipant_param_video_type_flags.0?true": "Invite the user to also turn on their video feed.", + "method_phone.inviteConferenceCallParticipant_param_call_type_InputGroupCall": "The conference call.", + "method_phone.inviteConferenceCallParticipant_param_user_id_type_InputUser": "The user to invite.", + "method_phone.declineConferenceCallInvite": "Declines a conference call invite.", + "method_phone.declineConferenceCallInvite_param_msg_id_type_int": "The ID of the [messageActionConferenceCall](..\/constructors\/messageActionConferenceCall.md) to decline.", + "method_phone.getGroupCallChainBlocks": "Fetch the blocks of a [conference blockchain \u00bb](https:\/\/core.telegram.org\/api\/end-to-end\/group-calls).", + "method_phone.getGroupCallChainBlocks_param_call_type_InputGroupCall": "The conference.", + "method_phone.getGroupCallChainBlocks_param_sub_chain_id_type_int": "Subchain ID.", + "method_phone.getGroupCallChainBlocks_param_offset_type_int": "Offset for pagination.", + "method_phone.getGroupCallChainBlocks_param_limit_type_int": "Maximum number of blocks to return in this call, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_langpack.getLangPack": "Get localization pack strings", + "method_langpack.getLangPack_param_lang_pack_type_string": "Platform identifier (i.e. `android`, `tdesktop`, etc).", + "method_langpack.getLangPack_param_lang_code_type_string": "Either an ISO 639-1 language code or a language pack name obtained from a [language pack link](https:\/\/core.telegram.org\/api\/links#language-pack-links).", + "method_langpack.getStrings": "Get strings from a language pack", + "method_langpack.getStrings_param_lang_pack_type_string": "Platform identifier (i.e. `android`, `tdesktop`, etc).", + "method_langpack.getStrings_param_lang_code_type_string": "Either an ISO 639-1 language code or a language pack name obtained from a [language pack link](https:\/\/core.telegram.org\/api\/links#language-pack-links).", + "method_langpack.getStrings_param_keys_type_Vector<string>": "Strings to get", + "method_langpack.getDifference": "Get new strings in language pack", + "method_langpack.getDifference_param_lang_pack_type_string": "Platform identifier (i.e. `android`, `tdesktop`, etc).", + "method_langpack.getDifference_param_lang_code_type_string": "Either an ISO 639-1 language code or a language pack name obtained from a [language pack link](https:\/\/core.telegram.org\/api\/links#language-pack-links).", + "method_langpack.getDifference_param_from_version_type_int": "Previous localization pack version", + "method_langpack.getLanguages": "Get information about all languages in a localization pack", + "method_langpack.getLanguages_param_lang_pack_type_string": "Platform identifier (i.e. `android`, `tdesktop`, etc).", + "method_langpack.getLanguage": "Get information about a language in a localization pack", + "method_langpack.getLanguage_param_lang_pack_type_string": "Platform identifier (i.e. `android`, `tdesktop`, etc).", + "method_langpack.getLanguage_param_lang_code_type_string": "Either an ISO 639-1 language code or a language pack name obtained from a [language pack link](https:\/\/core.telegram.org\/api\/links#language-pack-links).", + "method_folders.editPeerFolders": "Edit peers in [peer folder](https:\/\/core.telegram.org\/api\/folders#peer-folders)", + "method_folders.editPeerFolders_param_folder_peers_type_Vector<InputFolderPeer>": "New peer list", + "method_stats.getBroadcastStats": "Get [channel statistics](https:\/\/core.telegram.org\/api\/stats)", + "method_stats.getBroadcastStats_param_dark_type_flags.0?true": "Whether to enable dark theme for graph colors", + "method_stats.getBroadcastStats_param_channel_type_InputChannel": "The channel", + "method_stats.loadAsyncGraph": "Load [channel statistics graph](https:\/\/core.telegram.org\/api\/stats) asynchronously", + "method_stats.loadAsyncGraph_param_token_type_string": "Graph token from [statsGraphAsync](..\/constructors\/statsGraphAsync.md) constructor", + "method_stats.loadAsyncGraph_param_x_type_flags.0?long": "Zoom value, if required", + "method_stats.getMegagroupStats": "Get [supergroup statistics](https:\/\/core.telegram.org\/api\/stats)", + "method_stats.getMegagroupStats_param_dark_type_flags.0?true": "Whether to enable dark theme for graph colors", + "method_stats.getMegagroupStats_param_channel_type_InputChannel": "[Supergroup ID](https:\/\/core.telegram.org\/api\/channel)", + "method_stats.getMessagePublicForwards": "Obtains a list of messages, indicating to which other public channels was a channel message forwarded. \nWill return a list of [messages](..\/constructors\/message.md) with `peer_id` equal to the public channel to which this message was forwarded.", + "method_stats.getMessagePublicForwards_param_channel_type_InputChannel": "Source channel", + "method_stats.getMessagePublicForwards_param_msg_id_type_int": "Source message ID", + "method_stats.getMessagePublicForwards_param_offset_type_string": "Offset for [pagination](https:\/\/core.telegram.org\/api\/offsets), empty string on first call, then use the `next_offset` field of the returned constructor (if present, otherwise no more results are available).", + "method_stats.getMessagePublicForwards_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_stats.getMessageStats": "Get [message statistics](https:\/\/core.telegram.org\/api\/stats)", + "method_stats.getMessageStats_param_dark_type_flags.0?true": "Whether to enable dark theme for graph colors", + "method_stats.getMessageStats_param_channel_type_InputChannel": "Channel ID", + "method_stats.getMessageStats_param_msg_id_type_int": "Message ID", + "method_stats.getStoryStats": "Get [statistics](https:\/\/core.telegram.org\/api\/stats) for a certain [story](https:\/\/core.telegram.org\/api\/stories).", + "method_stats.getStoryStats_param_dark_type_flags.0?true": "Whether to enable the dark theme for graph colors", + "method_stats.getStoryStats_param_peer_type_InputPeer": "The peer that posted the story", + "method_stats.getStoryStats_param_id_type_int": "Story ID", + "method_stats.getStoryPublicForwards": "Obtain forwards of a [story](https:\/\/core.telegram.org\/api\/stories) as a message to public chats and reposts by public channels.", + "method_stats.getStoryPublicForwards_param_peer_type_InputPeer": "Peer where the story was originally posted", + "method_stats.getStoryPublicForwards_param_id_type_int": "[Story](https:\/\/core.telegram.org\/api\/stories) ID", + "method_stats.getStoryPublicForwards_param_offset_type_string": "Offset for pagination, from [stats.PublicForwards](..\/constructors\/stats.publicForwards.md).`next_offset`.", + "method_stats.getStoryPublicForwards_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_chatlists.exportChatlistInvite": "Export a [folder \u00bb](https:\/\/core.telegram.org\/api\/folders), creating a [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "method_chatlists.exportChatlistInvite_param_chatlist_type_InputChatlist": "The folder to export", + "method_chatlists.exportChatlistInvite_param_title_type_string": "An optional name for the link", + "method_chatlists.exportChatlistInvite_param_peers_type_Vector<InputPeer>": "The list of channels, group and supergroups to share with the link. Basic groups will automatically be [converted to supergroups](https:\/\/core.telegram.org\/api\/channel#migration) when invoking the method.", + "method_chatlists.deleteExportedInvite": "Delete a previously created [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "method_chatlists.deleteExportedInvite_param_chatlist_type_InputChatlist": "The related folder", + "method_chatlists.deleteExportedInvite_param_slug_type_string": "`slug` obtained from the [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "method_chatlists.editExportedInvite": "Edit a [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "method_chatlists.editExportedInvite_param_chatlist_type_InputChatlist": "Folder ID", + "method_chatlists.editExportedInvite_param_slug_type_string": "`slug` obtained from the [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "method_chatlists.editExportedInvite_param_title_type_flags.1?string": "If set, sets a new name for the link", + "method_chatlists.editExportedInvite_param_peers_type_flags.2?Vector<InputPeer>": "If set, changes the list of peers shared with the link", + "method_chatlists.getExportedInvites": "List all [chat folder deep links \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links) associated to a folder", + "method_chatlists.getExportedInvites_param_chatlist_type_InputChatlist": "The folder", + "method_chatlists.checkChatlistInvite": "Obtain information about a [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "method_chatlists.checkChatlistInvite_param_slug_type_string": "`slug` obtained from the [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links)", + "method_chatlists.joinChatlistInvite": "Import a [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links), joining some or all the chats in the folder.", + "method_chatlists.joinChatlistInvite_param_slug_type_string": "`slug` obtained from a [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "method_chatlists.joinChatlistInvite_param_peers_type_Vector<InputPeer>": "List of new chats to join, fetched using [chatlists.checkChatlistInvite](..\/methods\/chatlists.checkChatlistInvite.md) and filtered as specified in the [documentation \u00bb](https:\/\/core.telegram.org\/api\/folders#shared-folders).", + "method_chatlists.getChatlistUpdates": "Fetch new chats associated with an imported [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links). Must be invoked at most every `chatlist_update_period` seconds (as per the related [client configuration parameter \u00bb](https:\/\/core.telegram.org\/api\/config#chatlist-update-period)).", + "method_chatlists.getChatlistUpdates_param_chatlist_type_InputChatlist": "The folder", + "method_chatlists.joinChatlistUpdates": "Join channels and supergroups recently added to a [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "method_chatlists.joinChatlistUpdates_param_chatlist_type_InputChatlist": "The folder", + "method_chatlists.joinChatlistUpdates_param_peers_type_Vector<InputPeer>": "List of new chats to join, fetched using [chatlists.getChatlistUpdates](..\/methods\/chatlists.getChatlistUpdates.md) and filtered as specified in the [documentation \u00bb](https:\/\/core.telegram.org\/api\/folders#shared-folders).", + "method_chatlists.hideChatlistUpdates": "Dismiss new pending peers recently added to a [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links).", + "method_chatlists.hideChatlistUpdates_param_chatlist_type_InputChatlist": "The folder", + "method_chatlists.getLeaveChatlistSuggestions": "Returns identifiers of pinned or always included chats from a chat folder imported using a [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links), which are suggested to be left when the chat folder is deleted.", + "method_chatlists.getLeaveChatlistSuggestions_param_chatlist_type_InputChatlist": "Folder ID", + "method_chatlists.leaveChatlist": "Delete a folder imported using a [chat folder deep link \u00bb](https:\/\/core.telegram.org\/api\/links#chat-folder-links)", + "method_chatlists.leaveChatlist_param_chatlist_type_InputChatlist": "Folder ID", + "method_chatlists.leaveChatlist_param_peers_type_Vector<InputPeer>": "Also leave the specified channels and groups", + "method_stories.canSendStory": "Check whether we can post stories as the specified peer.", + "method_stories.canSendStory_param_peer_type_InputPeer": "The peer from which we wish to post stories.", + "method_stories.sendStory": "Uploads a [Telegram Story](https:\/\/core.telegram.org\/api\/stories).\n\nMay also be used in a [business connection](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots), *not* by wrapping the query in [invokeWithBusinessConnection \u00bb](..\/methods\/invokeWithBusinessConnection.md), but rather by specifying the ID of a controlled business user in `peer`.", + "method_stories.sendStory_param_pinned_type_flags.2?true": "Whether to add the story to the profile automatically upon expiration. If not set, the story will only be added to the archive, see [here \u00bb](https:\/\/core.telegram.org\/api\/stories) for more info.", + "method_stories.sendStory_param_noforwards_type_flags.4?true": "If set, disables forwards, screenshots, and downloads.", + "method_stories.sendStory_param_fwd_modified_type_flags.7?true": "Set this flag when reposting stories with `fwd_from_id`+`fwd_from_id`, if the `media` was modified before reposting.", + "method_stories.sendStory_param_peer_type_InputPeer": "The peer to send the story as.", + "method_stories.sendStory_param_media_type_InputMedia": "The story media.", + "method_stories.sendStory_param_media_areas_type_flags.5?Vector<MediaArea>": "[Media areas](https:\/\/core.telegram.org\/api\/stories#media-areas) associated to the story, see [here \u00bb](https:\/\/core.telegram.org\/api\/stories#media-areas) for more info.", + "method_stories.sendStory_param_caption_type_flags.0?string": "Story caption.", + "method_stories.sendStory_param_entities_type_flags.1?Vector<MessageEntity>": "[Message entities for styled text](https:\/\/core.telegram.org\/api\/entities), if allowed by the [`stories_entities` client configuration parameter \u00bb](https:\/\/core.telegram.org\/api\/config#stories-entities).", + "method_stories.sendStory_param_privacy_rules_type_Vector<InputPrivacyRule>": "[Privacy rules](https:\/\/core.telegram.org\/api\/privacy) for the story, indicating who can or can't view the story.", + "method_stories.sendStory_param_random_id_type_long": "Unique client message ID required to prevent message resending.", + "method_stories.sendStory_param_period_type_flags.3?int": "Period after which the story is moved to archive (and to the profile if `pinned` is set), in seconds; must be one of `6 * 3600`, `12 * 3600`, `86400`, or `2 * 86400` for Telegram Premium users, and `86400` otherwise.", + "method_stories.sendStory_param_fwd_from_id_type_flags.6?InputPeer": "If set, indicates that this story is a repost of story with ID `fwd_from_story` posted by the peer in `fwd_from_id`.", + "method_stories.sendStory_param_fwd_from_story_type_flags.6?int": "If set, indicates that this story is a repost of story with ID `fwd_from_story` posted by the peer in `fwd_from_id`.", + "method_stories.sendStory_param_albums_type_flags.8?Vector<int>": "If set, adds the story to the specified albums.", + "method_stories.editStory": "Edit an uploaded [story](https:\/\/core.telegram.org\/api\/stories)\n\nMay also be used in a [business connection](https:\/\/core.telegram.org\/api\/bots\/connected-business-bots), *not* by wrapping the query in [invokeWithBusinessConnection \u00bb](..\/methods\/invokeWithBusinessConnection.md), but rather by specifying the ID of a controlled business user in `peer`: in this context, the method can only be used to edit stories posted by the same business bot on behalf of the user with [stories.sendStory](..\/methods\/stories.sendStory.md).", + "method_stories.editStory_param_peer_type_InputPeer": "Peer where the story was posted.", + "method_stories.editStory_param_id_type_int": "ID of story to edit.", + "method_stories.editStory_param_media_type_flags.0?InputMedia": "If specified, replaces the story media.", + "method_stories.editStory_param_media_areas_type_flags.3?Vector<MediaArea>": "[Media areas](https:\/\/core.telegram.org\/api\/stories#media-areas) associated to the story, see [here \u00bb](https:\/\/core.telegram.org\/api\/stories#media-areas) for more info.", + "method_stories.editStory_param_caption_type_flags.1?string": "If specified, replaces the story caption.", + "method_stories.editStory_param_entities_type_flags.1?Vector<MessageEntity>": "[Message entities for styled text in the caption](https:\/\/core.telegram.org\/api\/entities), if allowed by the [`stories_entities` client configuration parameter \u00bb](https:\/\/core.telegram.org\/api\/config#stories-entities).", + "method_stories.editStory_param_privacy_rules_type_flags.2?Vector<InputPrivacyRule>": "If specified, alters the [privacy settings \u00bb](https:\/\/core.telegram.org\/api\/privacy) of the story, changing who can or can't view the story.", + "method_stories.deleteStories": "Deletes some posted [stories](https:\/\/core.telegram.org\/api\/stories).", + "method_stories.deleteStories_param_peer_type_InputPeer": "Channel\/user from where to delete stories.", + "method_stories.deleteStories_param_id_type_Vector<int>": "IDs of stories to delete.", + "method_stories.togglePinned": "Pin or unpin one or more stories", + "method_stories.togglePinned_param_peer_type_InputPeer": "Peer where to pin or unpin stories", + "method_stories.togglePinned_param_id_type_Vector<int>": "IDs of stories to pin or unpin", + "method_stories.togglePinned_param_pinned_type_Bool": "Whether to pin or unpin the stories", + "method_stories.getAllStories": "Fetch the List of active (or active and hidden) stories, see [here \u00bb](https:\/\/core.telegram.org\/api\/stories#watching-stories) for more info on watching stories.", + "method_stories.getAllStories_param_next_type_flags.1?true": "If `next` and `state` are both set, uses the passed `state` to paginate to the next results; if neither `state` nor `next` are set, fetches the initial page; if `state` is set and `next` is not set, check for changes in the active\/hidden peerset, see [here \u00bb](https:\/\/core.telegram.org\/api\/stories#watching-stories) for more info on the full flow.", + "method_stories.getAllStories_param_hidden_type_flags.2?true": "If set, fetches the hidden active story list, otherwise fetches the active story list, see [here \u00bb](https:\/\/core.telegram.org\/api\/stories#watching-stories) for more info on the full flow.", + "method_stories.getAllStories_param_state_type_flags.0?string": "If `next` and `state` are both set, uses the passed `state` to paginate to the next results; if neither `state` nor `next` are set, fetches the initial page; if `state` is set and `next` is not set, check for changes in the active\/hidden peerset, see [here \u00bb](https:\/\/core.telegram.org\/api\/stories#watching-stories) for more info on the full flow.", + "method_stories.getPinnedStories": "Fetch the [stories](https:\/\/core.telegram.org\/api\/stories#pinned-or-archived-stories) pinned on a peer's profile.", + "method_stories.getPinnedStories_param_peer_type_InputPeer": "Peer whose pinned stories should be fetched", + "method_stories.getPinnedStories_param_offset_id_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_stories.getPinnedStories_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_stories.getStoriesArchive": "Fetch the [story archive \u00bb](https:\/\/core.telegram.org\/api\/stories#pinned-or-archived-stories) of a peer we control.", + "method_stories.getStoriesArchive_param_peer_type_InputPeer": "Peer whose archived stories should be fetched", + "method_stories.getStoriesArchive_param_offset_id_type_int": "[Offsets for pagination, for more info click here](https:\/\/core.telegram.org\/api\/offsets)", + "method_stories.getStoriesArchive_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_stories.getStoriesByID": "Obtain full info about a set of [stories](https:\/\/core.telegram.org\/api\/stories) by their IDs.", + "method_stories.getStoriesByID_param_peer_type_InputPeer": "Peer where the stories were posted", + "method_stories.getStoriesByID_param_id_type_Vector<int>": "Story IDs", + "method_stories.toggleAllStoriesHidden": "Hide the active stories of a specific peer, preventing them from being displayed on the action bar on the homescreen.", + "method_stories.toggleAllStoriesHidden_param_hidden_type_Bool": "Whether to hide or unhide all active stories of the peer", + "method_stories.readStories": "Mark all stories up to a certain ID as read, for a given peer; will emit an [updateReadStories](..\/constructors\/updateReadStories.md) update to all logged-in sessions.", + "method_stories.readStories_param_peer_type_InputPeer": "The peer whose stories should be marked as read.", + "method_stories.readStories_param_max_id_type_int": "Mark all stories up to and including this ID as read", + "method_stories.incrementStoryViews": "Increment the view counter of one or more stories.", + "method_stories.incrementStoryViews_param_peer_type_InputPeer": "Peer where the stories were posted.", + "method_stories.incrementStoryViews_param_id_type_Vector<int>": "IDs of the stories (maximum 200 at a time).", + "method_stories.getStoryViewsList": "Obtain the list of users that have viewed a specific [story we posted](https:\/\/core.telegram.org\/api\/stories)", + "method_stories.getStoryViewsList_param_just_contacts_type_flags.0?true": "Whether to only fetch view reaction\/views made by our [contacts](https:\/\/core.telegram.org\/api\/contacts)", + "method_stories.getStoryViewsList_param_reactions_first_type_flags.2?true": "Whether to return [storyView](..\/constructors\/storyView.md) info about users that reacted to the story (i.e. if set, the server will first sort results by view date as usual, and then also additionally sort the list by putting [storyView](..\/constructors\/storyView.md)s with an associated reaction first in the list). Ignored if `forwards_first` is set.", + "method_stories.getStoryViewsList_param_forwards_first_type_flags.3?true": "If set, returns forwards and reposts first, then reactions, then other views; otherwise returns interactions sorted just by interaction date.", + "method_stories.getStoryViewsList_param_peer_type_InputPeer": "Peer where the story was posted", + "method_stories.getStoryViewsList_param_q_type_flags.1?string": "Search for specific peers", + "method_stories.getStoryViewsList_param_id_type_int": "Story ID", + "method_stories.getStoryViewsList_param_offset_type_string": "Offset for pagination, obtained from [stories.storyViewsList](..\/constructors\/stories.storyViewsList.md).`next_offset`", + "method_stories.getStoryViewsList_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_stories.getStoriesViews": "Obtain info about the view count, forward count, reactions and recent viewers of one or more [stories](https:\/\/core.telegram.org\/api\/stories).", + "method_stories.getStoriesViews_param_peer_type_InputPeer": "Peer whose stories should be fetched", + "method_stories.getStoriesViews_param_id_type_Vector<int>": "Story IDs", + "method_stories.exportStoryLink": "Generate a [story deep link](https:\/\/core.telegram.org\/api\/links#story-links) for a specific story", + "method_stories.exportStoryLink_param_peer_type_InputPeer": "Peer where the story was posted", + "method_stories.exportStoryLink_param_id_type_int": "Story ID", + "method_stories.report": "Report a story.", + "method_stories.report_param_peer_type_InputPeer": "The peer that uploaded the story.", + "method_stories.report_param_id_type_Vector<int>": "IDs of the stories to report.", + "method_stories.report_param_option_type_bytes": "Menu option, intially empty", + "method_stories.report_param_message_type_string": "Comment for report moderation", + "method_stories.activateStealthMode": "Activates [stories stealth mode](https:\/\/core.telegram.org\/api\/stories#stealth-mode), see [here \u00bb](https:\/\/core.telegram.org\/api\/stories#stealth-mode) for more info.\n\nWill return an [updateStoriesStealthMode](..\/constructors\/updateStoriesStealthMode.md).", + "method_stories.activateStealthMode_param_past_type_flags.0?true": "Whether to erase views from any stories opened in the past [`stories_stealth_past_period` seconds \u00bb](https:\/\/core.telegram.org\/api\/config#stories-stealth-past-period), as specified by the [client configuration](https:\/\/core.telegram.org\/api\/config#client-configuration).", + "method_stories.activateStealthMode_param_future_type_flags.1?true": "Whether to hide future story views for the next [`stories_stealth_future_period` seconds \u00bb](https:\/\/core.telegram.org\/api\/config#stories-stealth-future-period), as specified by the [client configuration](https:\/\/core.telegram.org\/api\/config#client-configuration).", + "method_stories.sendReaction": "React to a story.", + "method_stories.sendReaction_param_add_to_recent_type_flags.0?true": "Whether to add this reaction to the [recent reactions list \u00bb](https:\/\/core.telegram.org\/api\/reactions#recent-reactions).", + "method_stories.sendReaction_param_peer_type_InputPeer": "The peer that sent the story", + "method_stories.sendReaction_param_story_id_type_int": "ID of the story to react to", + "method_stories.sendReaction_param_reaction_type_Reaction": "Reaction", + "method_stories.getPeerStories": "Fetch the full active [story list](https:\/\/core.telegram.org\/api\/stories#watching-stories) of a specific peer.", + "method_stories.getPeerStories_param_peer_type_InputPeer": "Peer whose stories should be fetched", + "method_stories.getAllReadPeerStories": "Obtain the latest read story ID for all peers when first logging in, returned as a list of [updateReadStories](..\/constructors\/updateReadStories.md) updates, see [here \u00bb](https:\/\/core.telegram.org\/api\/stories#watching-stories) for more info.", + "method_stories.getPeerMaxIDs": "Get the IDs of the maximum read stories for a set of peers.", + "method_stories.getPeerMaxIDs_param_id_type_Vector<InputPeer>": "Peers", + "method_stories.getChatsToSend": "Obtain a list of channels where the user can post [stories](https:\/\/core.telegram.org\/api\/stories)", + "method_stories.togglePeerStoriesHidden": "Hide the active stories of a user, preventing them from being displayed on the action bar on the homescreen, see [here \u00bb](https:\/\/core.telegram.org\/api\/stories#hiding-stories-of-other-users) for more info.", + "method_stories.togglePeerStoriesHidden_param_peer_type_InputPeer": "Peer whose stories should be (un)hidden.", + "method_stories.togglePeerStoriesHidden_param_hidden_type_Bool": "Whether to hide or unhide stories.", + "method_stories.getStoryReactionsList": "Get the [reaction](https:\/\/core.telegram.org\/api\/reactions) and interaction list of a [story](https:\/\/core.telegram.org\/api\/stories) posted to a channel, along with the sender of each reaction.\n\nCan only be used by channel admins.", + "method_stories.getStoryReactionsList_param_forwards_first_type_flags.2?true": "If set, returns forwards and reposts first, then reactions, then other views; otherwise returns interactions sorted just by interaction date.", + "method_stories.getStoryReactionsList_param_peer_type_InputPeer": "Channel", + "method_stories.getStoryReactionsList_param_id_type_int": "[Story](https:\/\/core.telegram.org\/api\/stories) ID", + "method_stories.getStoryReactionsList_param_reaction_type_flags.0?Reaction": "Get only reactions of this type", + "method_stories.getStoryReactionsList_param_offset_type_flags.1?string": "Offset for pagination (taken from the `next_offset` field of the returned [stories.StoryReactionsList](..\/types\/stories.StoryReactionsList.md)); empty in the first request.", + "method_stories.getStoryReactionsList_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_stories.togglePinnedToTop": "Pin some stories to the top of the profile, see [here \u00bb](https:\/\/core.telegram.org\/api\/stories#pinned-or-archived-stories) for more info.", + "method_stories.togglePinnedToTop_param_peer_type_InputPeer": "Peer where to pin stories.", + "method_stories.togglePinnedToTop_param_id_type_Vector<int>": "IDs of the stories to pin (max [stories\\_pinned\\_to\\_top\\_count\\_max](https:\/\/core.telegram.org\/api\/config#stories-pinned-to-top-count-max)).", + "method_stories.searchPosts": "Globally search for [stories](https:\/\/core.telegram.org\/api\/stories) using a hashtag or a [location media area](https:\/\/core.telegram.org\/api\/stories#location-tags), see [here \u00bb](https:\/\/core.telegram.org\/api\/stories#searching-stories) for more info on the full flow.\n\nEither `hashtag` **or** `area` **must** be set when invoking the method.", + "method_stories.searchPosts_param_hashtag_type_flags.0?string": "Hashtag (without the `#`)", + "method_stories.searchPosts_param_area_type_flags.1?MediaArea": "A [mediaAreaGeoPoint](..\/constructors\/mediaAreaGeoPoint.md) or a [mediaAreaVenue](..\/constructors\/mediaAreaVenue.md).
Note [mediaAreaGeoPoint](..\/constructors\/mediaAreaGeoPoint.md) areas may be searched only if they have an associated `address`.", + "method_stories.searchPosts_param_peer_type_flags.2?InputPeer": "If set, returns only stories posted by this peer.", + "method_stories.searchPosts_param_offset_type_string": "Offset for [pagination](https:\/\/core.telegram.org\/api\/offsets): initially an empty string, then the `next_offset` from the previously returned [stories.foundStories](..\/constructors\/stories.foundStories.md).", + "method_stories.searchPosts_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_stories.createAlbum": "Creates a [story album](https:\/\/core.telegram.org\/api\/stories#story-albums).", + "method_stories.createAlbum_param_peer_type_InputPeer": "The owned peer where to create the album.", + "method_stories.createAlbum_param_title_type_string": "Album name.", + "method_stories.createAlbum_param_stories_type_Vector<int>": "Stories to add to the album.", + "method_stories.updateAlbum": "Rename a [story albums \u00bb](https:\/\/core.telegram.org\/api\/stories#story-albums), or add, delete or reorder stories in it.", + "method_stories.updateAlbum_param_peer_type_InputPeer": "Peer where the album is posted.", + "method_stories.updateAlbum_param_album_id_type_int": "Album ID.", + "method_stories.updateAlbum_param_title_type_flags.0?string": "New album title.", + "method_stories.updateAlbum_param_delete_stories_type_flags.1?Vector<int>": "If set, deletes the specified stories from the album.", + "method_stories.updateAlbum_param_add_stories_type_flags.2?Vector<int>": "If set, adds the specified stories to the album.", + "method_stories.updateAlbum_param_order_type_flags.3?Vector<int>": "If set, reorders the stories in the album by their IDs.", + "method_stories.reorderAlbums": "Reorder [story albums on a profile \u00bb](https:\/\/core.telegram.org\/api\/stories#story-albums).", + "method_stories.reorderAlbums_param_peer_type_InputPeer": "Peer where the albums are located.", + "method_stories.reorderAlbums_param_order_type_Vector<int>": "New order of the albums.", + "method_stories.deleteAlbum": "Delete a [story album](https:\/\/core.telegram.org\/api\/stories#story-albums).", + "method_stories.deleteAlbum_param_peer_type_InputPeer": "Owned peer where the album is located.", + "method_stories.deleteAlbum_param_album_id_type_int": "ID of the album to delete.", + "method_stories.getAlbums": "Get [story albums](https:\/\/core.telegram.org\/api\/stories#story-albums) created by a peer.", + "method_stories.getAlbums_param_peer_type_InputPeer": "The peer.", + "method_stories.getAlbums_param_hash_type_long": "The `hash` from a previously returned [stories.albums](..\/constructors\/stories.albums.md), to avoid returning any results if they haven't changed.", + "method_stories.getAlbumStories": "Get stories in a [story album \u00bb](https:\/\/core.telegram.org\/api\/stories#story-albums).", + "method_stories.getAlbumStories_param_peer_type_InputPeer": "Peer where the album is posted.", + "method_stories.getAlbumStories_param_album_id_type_int": "ID of the album.", + "method_stories.getAlbumStories_param_offset_type_int": "Offset for [pagination](https:\/\/core.telegram.org\/api\/offsets).", + "method_stories.getAlbumStories_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_premium.getBoostsList": "Obtains info about the boosts that were applied to a certain channel or supergroup (admins only)", + "method_premium.getBoostsList_param_gifts_type_flags.0?true": "Whether to return only info about boosts received from [gift codes and giveaways created by the channel\/supergroup \u00bb](https:\/\/core.telegram.org\/api\/giveaways)", + "method_premium.getBoostsList_param_peer_type_InputPeer": "The channel\/supergroup", + "method_premium.getBoostsList_param_offset_type_string": "Offset for pagination, obtained from [premium.boostsList](..\/constructors\/premium.boostsList.md).`next_offset`", + "method_premium.getBoostsList_param_limit_type_int": "Maximum number of results to return, [see pagination](https:\/\/core.telegram.org\/api\/offsets)", + "method_premium.getMyBoosts": "Obtain which peers are we currently [boosting](https:\/\/core.telegram.org\/api\/boost), and how many [boost slots](https:\/\/core.telegram.org\/api\/boost) we have left.", + "method_premium.applyBoost": "Apply one or more [boosts \u00bb](https:\/\/core.telegram.org\/api\/boost) to a peer.", + "method_premium.applyBoost_param_slots_type_flags.0?Vector<int>": "Which [boost slots](https:\/\/core.telegram.org\/api\/boost) to assign to this peer.", + "method_premium.applyBoost_param_peer_type_InputPeer": "The peer to boost.", + "method_premium.getBoostsStatus": "Gets the current [number of boosts](https:\/\/core.telegram.org\/api\/boost) of a channel\/supergroup.", + "method_premium.getBoostsStatus_param_peer_type_InputPeer": "The peer.", + "method_premium.getUserBoosts": "Returns the lists of boost that were applied to a channel\/supergroup by a specific user (admins only)", + "method_premium.getUserBoosts_param_peer_type_InputPeer": "The channel\/supergroup", + "method_premium.getUserBoosts_param_user_id_type_InputUser": "The user", + "method_smsjobs.isEligibleToJoin": "Check if we can process SMS jobs (official clients only).", + "method_smsjobs.join": "Enable SMS jobs (official clients only).", + "method_smsjobs.leave": "Disable SMS jobs (official clients only).", + "method_smsjobs.updateSettings": "Update SMS job settings (official clients only).", + "method_smsjobs.updateSettings_param_allow_international_type_flags.0?true": "Allow international numbers?", + "method_smsjobs.getStatus": "Get SMS jobs status (official clients only).", + "method_smsjobs.getSmsJob": "Get info about an SMS job (official clients only).", + "method_smsjobs.getSmsJob_param_job_id_type_string": "Job ID", + "method_smsjobs.finishJob": "Finish an SMS job (official clients only).", + "method_smsjobs.finishJob_param_job_id_type_string": "Job ID.", + "method_smsjobs.finishJob_param_error_type_flags.0?string": "If failed, the error.", + "method_fragment.getCollectibleInfo": "Fetch information about a [fragment collectible, see here \u00bb](https:\/\/core.telegram.org\/api\/fragment#fetching-info-about-fragment-collectibles) for more info on the full flow.", + "method_fragment.getCollectibleInfo_param_collectible_type_InputCollectible": "Collectible to fetch info about." +} \ No newline at end of file diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/ckb.json b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/ckb.json new file mode 100644 index 0000000..ecfa036 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/ckb.json @@ -0,0 +1,121 @@ +{ + "apiChooseManualAutoTip": "تێبینی بکە کە دەتوانیت API ID/hash ڕاستەوخۆ لە کۆدەکەدا دابین بکەیت بە بەکارهێنانی ڕێکخستنەکان: %s", + "go": "بڕۆ", + "apiChooseManualAutoTipWeb": "تێبینی بکە کە دەتوانیت API ID/hash ڕاستەوخۆ لە کۆدەکەدا دابین بکەیت بە بەکارهێنانی
ڕێکخستنەکان.", + "constructor_not_found": "Constructor نەدۆزرایەوە بۆ جۆری: ", + "botapi_conversion_error": "ناتوانرێت %s بگۆڕێت بۆ ئۆبجێکتی API بۆت", + "file_type_invalid": "جۆری پەڕگەی نادروست دۆزراوەتەوە (%s)", + "apiManualInstructions2": "کلیک لەسەر create application بکە", + "signupLastNameWeb": "ناوی کۆتایی", + "apiChoosePrompt": "هەڵبژاردەی تۆ: ", + "apiManualInstructions0": "چوونەژوورەوە بۆ https://my.telegram.org", + "apiManualInstructions1": "بڕۆ بۆ ئامرازەکانی پەرەپێدانی API", + "apiAppInstructionsManual0": "ناوی ئەپەکەت دەتوانێت هەر شتێک بێت", + "apiAppInstructionsManual2": "URL ی ئەپ/ماڵپەڕەکەت، یان t.me/yourusername", + "apiAppInstructionsManual3": "هەر شتێک", + "apiAppInstructionsManual4": "لێرەدا باسی ئەپەکەت بکە", + "apiManualWeb": "API ID و API هاشەکەت دابنێ", + "apiManualPrompt1": "هاشی API ەکەت بنووسە: ", + "apiAutoPrompt0": "ژمارەی تەلەفۆنێک داخڵ بکە کە پێشتر لە تێلێگرام تۆمار کراوە: ", + "apiAutoPrompt1": "ئەو کۆدەی پشتڕاستکردنەوە کە لە تێلێگرام وەرتگرتووە داخڵ بکە: ", + "apiAppWeb": "زانیارییەکانی API داخڵ بکە", + "apiAppInstructionsAuto1": "ناوی کورتی ئەپەکە بنووسە، ئەلفوبێی ژمارەیی، ٥-٣٢ پیت: ", + "apiAppInstructionsAuto3": "چوونە ناو پلاتفۆرمی ئەپەکە: ", + "apiAppInstructionsAuto4": "باسی ئەپەکەت بکە: ", + "apiAppInstructionsAutoTypeOther": "شتی تر (لە وەسفدا دیاری بکە)", + "apiError": "هەڵە: %s. دووبارە هەوڵبدەرەوە.", + "loginChoosePromptWeb": "دەتەوێت وەک بەکارهێنەر یان وەک بۆت بچیتە ژوورەوە؟", + "loginWebQr1": "لە مۆبایلەکەتدا تێلێگرام بکەرەوە", + "loginWebQr2": "بڕۆ بۆ ڕێکخستنەکان > ئامێرەکان > بەستنەوەی ئامێری سەر مێز", + "loginOptionBot": "بۆت", + "loginOptionUser": "بەکارهێنەر", + "loginBot": "تۆکنی بۆتەکەت بنووسە: ", + "loginUser": "ژمارەی مۆبایلت داخل بکە: ", + "loginQrCodeSuccessful": "چوونەژوورەوەی کۆدی QR سەرکەوتوو بوو!", + "loginQrCodeExpired": "کۆدی QR بەسەرچوو، کۆدی نوێی دروستکرد...", + "loginManual": "یان دەتوانیت تۆکنێکی بۆت یان ژمارەی تەلەفۆنیش دابنێیت بۆ ئەوەی بە دەستی بچیتە ژوورەوە: ", + "loginUserCode": "کۆدەکە داخڵ بکە: ", + "loginUserPass": "وشەی نهێنی خۆت بنووسە (ئاماژە %s): ", + "loginUserPassWeb": "ژمارەی نهێنییەکەت داخل بکە: ", + "loginUserPassHint": "ئاماژە: %s", + "signupFirstName": "ناوی یەکەمی خۆت بنووسە: ", + "signupLastName": "ناوی کۆتایی خۆت بنووسە (دەتوانێت بەتاڵ بێت): ", + "signupWeb": "تکایە ناوت تۆمار بکە", + "signupFirstNameWeb": "ناوی یەکەم", + "loginNoCode": "تۆ کۆدی تەلەفۆنت بۆ دابین نەکرد!", + "loginNoName": "ناوی یەکەمتان دابین نەکردووە!", + "loginBotTokenWeb": "بۆت تۆکن", + "loginUserPhoneWeb": "ژمارەی تەلەفۆن", + "loginUserPhoneCodeWeb": "کۆد", + "done": "تەواو!", + "serialization_ofd": "زنجیرەییکردن بەسەرچووە، دووبارە بنیاتنانەوەی ئۆبجێکتی!", + "session_corrupted": "دانیشتنەکە گەندەڵ بووە!", + "value_bigger_than_2147483647": "بەهای دابینکراو %s گەورەترە لە 2147483647", + "value_smaller_than_2147483648": "بەهای دابینکراو %s بچووکترە لە -2147483648", + "value_bigger_than_9223372036854775807": "بەهای دابینکراو %s گەورەترە لە 9223372036854775807", + "value_smaller_than_9223372036854775808": "بەهای دابینکراو %s بچووکترە لە -9223372036854775808", + "value_bigger_than_4294967296": "بەهای مەرجدار %s گەورەترە لە 4294967296", + "value_smaller_than_0": "بەهای بە مەرجێک %s بچووکترە لە 0", + "encode_double_error": "نەتوانرا بە باشی دووانە کۆد بکات", + "file_not_exist": "فایله‌که‌ بوونی نییه‌", + "madelineproto_ready": "MadelineProto ئامادەیە!", + "logout_ok": "بە سەرکەوتوویی دەرچووە!", + "already_loggedIn": "ئەم نموونەیەی MadelineProto پێشتر چووەتە ژوورەوە!", + "login_ok": "بە سەرکەوتوویی چوونەژوورەوە!", + "login_user": "چوونە ژوورەوە وەک بەکارهێنەرێکی ئاسایی...", + "login_bot": "چوونە ژوورەوە وەک بۆتێک...", + "login_code_uncalled": "چاوەڕێی کۆدەکە ناکەم! تکایە سەرەتا پەیوەندی بە شێوازی phoneLogin بکەن", + "login_2fa_enabled": "2FA چالاک کراوە، دەبێت بانگی فەنکشنی complete2falogin بکەیت...", + "login_auth_key": "چوونە ژوورەوە بە بەکارهێنانی کلیلی auth...", + "signing_up": "ناو تۆمارکردن وەک بەکارهێنەرێکی ئاسایی...", + "signup_ok": "بە سەرکەوتوویی ناوت تۆمار کرد!", + "2fa_uncalled": "چاوەڕێی پاسۆردەکە ناکەم! تکایە سەرەتا پەیوەندی بە phoneLogin و شێوازەکانی completePhoneLogin بکەن!", + "call_error_1": "نەتوانرا پەیوەندی %s بدۆزرێتەوە و وەریبگرێت", + "accepting_call": "وەرگرتنی پەیوەندی لە %s...", + "call_already_accepted": "پەیوەندی %s پێشتر وەرگیراوە", + "call_confirming": "پشتڕاستکردنەوەی پەیوەندی لە %s...", + "call_error_3": "نەتوانرا پەیوەندی %s بدۆزرێتەوە و تەواو بکات", + "fingerprint_invalid": "پەنجەمۆری کلیل نادروستە!", + "call_discarding": "فڕێدانی پەیوەندی %s...", + "file_parsing": "پارسکردنی %s...", + "src_file_invalid": "پەڕگەی سەرچاوەی نادروست دابین کرا: ", + "not_numeric": "بەهای پێدراو ژمارەیی نییە", + "long_not_16": "بەهای پێدراو درێژییەکەی ١٦ بایت نییە", + "long_not_64": "بەهای پێدراو درێژییەکەی ٦٤ بایت نییە", + "array_invalid": "تۆ ڕیزبەندییەکی دروستت دابین نەکردووە", + "type_extract_error": "نەتوانرا جۆری \"%s\" دەربهێنرێت، پێویستە MadelineProto نوێ بکەیتەوە!", + "method_not_found": "نەتوانرا شێواز بدۆزرێتەوە: ", + "params_missing": "پارامێتری پێویست نەماوە", + "stream_handle_invalid": "دەستەیەکی نادروستی سترێم دابین کرابوو.", + "apiAppInstructionsManual1": "ناوی کورتی ئەپەکەت، ئەلفوبێی ژمارەیی، ٥-٣٢ پیت", + "apiManualPrompt0": "ناسنامەی API ی خۆت دابنێ: ", + "apiAutoWeb": "ژمارەیەکی تەلەفۆن دابنێ کە پێشتر تۆمارکراوە لە تێلێگرام بۆ بەدەستهێنانی ناسنامەی API", + "apiAppInstructionsAuto0": "ناوی ئەپەکە بنووسە، دەتوانێت هەر شتێک بێت: ", + "apiAppInstructionsAuto2": "URL ی ئەپ/ماڵپەڕەکە دابنێ، یان t.me/yourusername: ", + "apiParamsError": "تۆ هەموو پارامێتەرەکانی پێویستت دابین نەکردووە!", + "loginWebQr": "هەروەها دەتوانیت بە شێوەیەکی ئۆتۆماتیکی بچیتە ژوورەوە بە سکانکردنی ئەم QR کۆدە:", + "loginWebQr3": "بۆ پشتڕاستکردنەوەی چوونەژوورەوە مۆبایلەکەت ئاراستەی ئەم شاشەیە بکە", + "loginQr": "کۆدی QR ی سەرەوە سکان بکە بۆ ئەوەی بە شێوەیەکی ئۆتۆماتیکی بچیتە ژوورەوە.", + "loginNoPass": "تۆ پاسۆردەکەت دابین نەکرد!", + "nearest_dc": "ئێمە لە %s داین، نزیکترین DC %d ە.", + "api_not_set": "پێویستە کلیلی api و api id دابین بکەیت، خۆت @ my.telegram.org بەدەست بهێنە", + "deserialization_error": "هەڵەیەک لە کاتی ڕیزبەندیکردندا ڕوویدا", + "rpc_tg_error": "تێلێگرام هەڵەیەکی RPC ی گەڕاندەوە: %s (%s)، کە بەهۆی %s:%s%sTL شوێنپێهەڵگرتنەوە دروست بووە:", + "login_code_sending": "ناردنی کۆد...", + "login_code_sent": "کۆد بە سەرکەوتوویی نێردراوە! کاتێک کۆدەکەت وەرگرت پێویستە فەنکشنی completePhoneLogin بەکاربهێنیت.", + "login_need_signup": "ئەکاونتێک بۆ ئەم ژمارەیە دروست نەکراوە، دەبێت پەیوەندی بە فەنکشنی completeSignup بکەیت...", + "not_loggedIn": "من چوومەتە ژوورەوە!", + "signup_uncalled": "چاوەڕێی ناو تۆمارکردن ناکەم! تکایە سەرەتا پەیوەندی بە phoneLogin و شێوازەکانی completePhoneLogin بکەن!", + "peer_not_in_db": "ئەم هاوتایە لە بنکەدراوەی ناوخۆیی هاوتادا ئامادە نییە", + "call_already_declined": "پەیوەندی %s پێشتر ڕەتکراوەتەوە", + "call_error_2": "نەتوانرا پەیوەندی %s بدۆزرێتەوە و پشتڕاستی بکاتەوە", + "call_completing": "تەواوکردنی پەیوەندی لە %s...", + "bool_error": "نەتوانرا boolean دەربهێنرێت", + "long_not_32": "بەهای پێدراو درێژییەکەی ٣٢ بایت نییە", + "predicate_not_set": "پێشبینی (بەهای ژێر _) دانەنرابوو!", + "sec_peer_not_in_db": "ئەم هاوتا نهێنییە لە بنکەدراوەی ناوخۆیی هاوتادا ئامادە نییە", + "length_too_big": "درێژی زۆر گەورەیە", + "type_extract_error_id": "نەتوانرا جۆری: %s بە id %s دەربهێنرێت، پێویستە MadelineProto نوێ بکەیتەوە!", + "non_text_conversion": "هێشتا ناتوانرێت نامە نا کورتەکان بگۆڕدرێت!", + "secret_chat_skipping": "من چاتی نهێنی %sم لە بنکەدراوەدا نییە، نامەکەم بەجێهێشتووە..." +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/de.json b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/de.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/de.json @@ -0,0 +1 @@ +{} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/en.json b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/en.json new file mode 100644 index 0000000..1a524af --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/en.json @@ -0,0 +1,162 @@ +{ + "baseDirLimitation": "A basedir limitation is configured: this can impact performance and cause some issues, please disable it if possible!", + "noReportPeers": "Warning: no report peers are set, please add the following method to your event handler", + "manualAdminActionRequired": "!!!!!!!!! MANUAL SYSTEM ADMIN ACTION REQUIRED !!!!!!!!!", + "mmapErrorPart1": "The maximum number of memory mapped (mmap) regions was reached (%s): please increase the vm.max_map_count kernel config to 262144 to fix.", + "mmapErrorPart2": "To fix, run the following command as root: %s", + "mmapErrorPart3": "To persist the change across reboots: %s", + "mmapErrorPart4": "On Windows and WSL, increasing the size of the pagefile might help; please switch to native Linux if the issue persists.", + "botAlreadyRunning": "The bot is already running!", + "extensionRequired": "MadelineProto requires the %s extension to run. %s", + "extensionRequiredInstallWithApt": "Try running sudo apt-get install %s.", + "extensionRequiredInstallWithCustomInstructions": "Follow the instructions at %s to install it.", + "extensionRecommended": "Warning: the %s extension is not installed, please install it to speed up MadelineProto!", + "go": "Go", + "apiChooseManualAutoTip": "Note that you can also provide the API ID/hash directly in the code using the settings: %s", + "apiChooseManualAutoTipWeb": "Note that you can also provide the API ID/hash directly in the code using the settings.", + "apiChoosePrompt": "Your choice (m/a): ", + "apiManualInstructions0": "Login to https://my.telegram.org", + "apiManualInstructions1": "Go to API development tools", + "apiManualInstructions2": "Click on create application", + "apiAppInstructionsManual0": "your app's name, can be anything", + "apiAppInstructionsManual1": "your app's short name, alphanumeric, 5-32 characters", + "apiAppInstructionsManual2": "your app/website's URL, or t.me/yourusername", + "apiAppInstructionsManual3": "anything", + "apiAppInstructionsManual4": "Describe your app here", + "apiManualWeb": "Enter your API ID and API hash", + "apiManualPrompt0": "Enter your API ID: ", + "apiManualPrompt1": "Enter your API hash: ", + "apiAutoWeb": "Enter a phone number that is already registered on telegram to get the API ID", + "apiAutoPrompt0": "Enter a phone number that is already registered on Telegram: ", + "apiAutoPrompt1": "Enter the verification code you received in Telegram: ", + "apiAppWeb": "Enter API information", + "apiAppInstructionsAuto0": "Enter the app's name, can be anything: ", + "apiAppInstructionsAuto1": "Enter the app's short name, alphanumeric, 5-32 characters: ", + "apiAppInstructionsAuto2": "Enter the app/website's URL, or t.me/yourusername: ", + "apiAppInstructionsAuto3": "Enter the app platform: ", + "apiAppInstructionsAuto4": "Describe your app: ", + "apiAppInstructionsAutoTypeOther": "Other (specify in description)", + "apiParamsError": "You didn't provide all of the required parameters!", + "apiError": "ERROR: %s. Try again.", + "loginChoosePromptWeb": "Do you want to login as a user or as a bot?", + "loginWebQr": "You can also login automatically by opening Telegram on your phone, going to Settings > Devices > Link Desktop Device and scanning the following QR code:", + "loginWebQr1": "Open Telegram on your phone", + "loginWebQr2": "Go to Settings > Devices > Link Desktop Device", + "loginWebQr3": "Point your phone at this screen to confirm login", + "loginOptionBot": "Bot", + "loginOptionUser": "User", + "loginBot": "Enter your bot token: ", + "loginUser": "Enter your phone number: ", + "loginQr": "Open Telegram on your phone, go to Settings > Devices > Link Desktop Device and scan the above QR code to login automatically.", + "loginQrCodeSuccessful": "QR code login successful!", + "loginQrCodeExpired": "The QR code expired, generating a new one...", + "loginManual": "Alternatively, you can also enter a bot token or phone number to login manually: ", + "loginUserCode": "Enter the code: ", + "loginUserPass": "Enter your password (hint %s): ", + "loginUserPassWeb": "Enter your password: ", + "loginUserPassHint": "Hint: %s", + "signupFirstName": "Enter your first name: ", + "signupLastName": "Enter your last name (can be empty): ", + "signupWeb": "Sign up please", + "signupFirstNameWeb": "First name", + "signupLastNameWeb": "Last name", + "loginNoCode": "You didn't provide a phone code!", + "loginNoPass": "You didn't provide the password!", + "loginNoName": "You didn't provide the first name!", + "loginBotTokenWeb": "Bot token", + "loginUserPhoneWeb": "Phone number", + "loginUserPhoneCodeWeb": "Code", + "done": "Done!", + "nearest_dc": "We're in %s, nearest DC is %d.", + "serialization_ofd": "Serialization is out of date, reconstructing object!", + "api_not_set": "You must provide an api key and an api id, get your own @ my.telegram.org", + "session_corrupted": "The session is corrupted!", + "value_bigger_than_2147483647": "Provided value %s is bigger than 2147483647", + "value_smaller_than_2147483648": "Provided value %s is smaller than -2147483648", + "value_bigger_than_9223372036854775807": "Provided value %s is bigger than 9223372036854775807", + "value_smaller_than_9223372036854775808": "Provided value %s is smaller than -9223372036854775808", + "value_bigger_than_4294967296": "Provided value %s is bigger than 4294967296", + "value_smaller_than_0": "Provided value %s is smaller than 0", + "encode_double_error": "Could not properly encode double", + "file_not_exist": "File does not exist", + "deserialization_error": "An error occurred on deserialization", + "rpc_tg_error": "Telegram returned an RPC error: %s (%s), caused by %s:%s%sTL trace:", + "madelineproto_ready": "MadelineProto is ready!", + "logout_ok": "Logged out successfully!", + "already_loggedIn": "This instance of MadelineProto is already logged in!", + "login_ok": "Logged in successfully!", + "login_user": "Logging in as a normal user...", + "login_bot": "Logging in as a bot...", + "login_code_sending": "Sending code...", + "login_code_sent": "Code sent successfully! Once you receive the code you should use the completePhoneLogin function.", + "login_code_uncalled": "I'm not waiting for the code! Please call the phoneLogin method first", + "login_2fa_enabled": "2FA enabled, you will have to call the complete2falogin function...", + "login_need_signup": "An account has not been created for this number, you will have to call the completeSignup function...", + "login_auth_key": "Logging in using auth key...", + "not_loggedIn": "I'm not logged in!", + "signup_uncalled": "I'm not waiting to signup! Please call the phoneLogin and the completePhoneLogin methods first!", + "signing_up": "Signing up as a normal user...", + "signup_ok": "Signed up in successfully!", + "2fa_uncalled": "I'm not waiting for the password! Please call the phoneLogin and the completePhoneLogin methods first!", + "peer_not_in_db": "This peer is not present in the internal peer database", + "call_error_1": "Could not find and accept call %s", + "accepting_call": "Accepting call from %s...", + "call_already_accepted": "Call %s already accepted", + "call_already_declined": "Call %s already declined", + "call_error_2": "Could not find and confirm call %s", + "call_confirming": "Confirming call from %s...", + "call_error_3": "Could not find and complete call %s", + "call_completing": "Completing call from %s...", + "fingerprint_invalid": "Invalid key fingerprint!", + "call_discarding": "Discarding call %s...", + "file_parsing": "Parsing %s...", + "src_file_invalid": "Invalid source file was provided: ", + "bool_error": "Could not extract boolean", + "not_numeric": "Given value isn't numeric", + "long_not_16": "Given value is not 16 bytes long", + "long_not_32": "Given value is not 32 bytes long", + "long_not_64": "Given value is not 64 bytes long", + "array_invalid": "You didn't provide a valid array", + "predicate_not_set": "Predicate (value under _) was not set!", + "update_madelineproto": "You're running an old version of MadelineProto, an update is required: currently running %s, but the latest version with multiple bugfixes and new features is %s!", + "type_extract_error": "Could not extract type \"%s\", you should update MadelineProto!", + "method_not_found": "Could not find method: ", + "params_missing": "Missing required parameter", + "sec_peer_not_in_db": "This secret peer is not present in the internal peer database", + "stream_handle_invalid": "An invalid stream handle was provided.", + "length_too_big": "Length is too big", + "string_required": "A string was expected!", + "waveform_must_have_100_values": "A waveform array must have 100 values!", + "waveform_value": "A waveform value must be between 0 and 31!", + "could_not_convert_object": "Could not convert object of type %s", + "type_extract_error_id": "Could not extract type: %s with id %s, you should update MadelineProto!", + "constructor_not_found": "Constructor not found for type: ", + "botapi_conversion_error": "Can't convert %s to a bot API object", + "non_text_conversion": "Can't convert non text messages yet!", + "file_type_invalid": "Invalid file type detected (%s)", + "static_analysis_minor": "A minor issue was encountered during static analysis of %s: %s", + "static_analysis_severe": "A severe issue was encountered during static analysis of %s: %s", + "secret_chat_skipping": "I do not have the secret chat %s in the database, skipping message...", + "must_have_declare_types": "for performance reasons, the first statement of an event handler file must be \"declare(strict_types=1);\"", + "do_not_delete_MadelineProto.log": "the MadelineProto.log file must never be deleted, please set a custom max size in the settings, instead!", + "do_not_remove_MadelineProto.log_phar": "Please do not remove madeline.phar or madeline.php, or else MadelineProto will crash. If you have any problem with MadelineProto, report it to https://github.com/danog/MadelineProto or https://t.me/pwrtelegramgroup", + "do_not_use_blocking_function": "for performance reasons, event handlers may not use the non-async blocking function %s, please use %s, instead", + "do_not_use_blocking_class": "for performance reasons, handlers may not use the non-async blocking class %s, please use %s, instead", + "do_not_use_deprecated_function": "the %s function is deprecated, please use %s, instead", + "do_not_use_non_root_require_in_event_handler": "for performance reasons, you must not use require or include inside of an event handler class, only root-level requires are allowed.", + "do_not_use_yield": "MadelineProto 8 does not require or support the use of yield in async functions, you must remove all yield keywords previously used for async function calls", + "recommend_not_use_filesystem_function": "usage of the %s function is not recommended, because accessing the filesystem during update handling will slow down your bot, please see https://docs.madelineproto.xyz/docs/UPDATES.html#avoiding-the-use-of-filesystem-functions for a list of alternative ways to store data that will not slow down your bot!", + "plugins_do_not_use_require": "for performance reasons, plugins can only automatically include or require other files present in the plugins folder by triggering the PSR-4 autoloader (not by manually require()'ing them).", + "plugins_must_have_exactly_one_class": "a plugin must define exactly one class! To define multiple classes, interfaces or traits, create separate files, they will be autoloaded by MadelineProto automatically.", + "cli_need_dl.php_link": "Please specify a download script URL when using getDownloadLink via CLI!", + "invalid_dl.php_session": "%s is not a valid download script because its session ID is different (expected %s, got %s)", + "need_dl.php": "Could not generate default download script (%s), please create a dl.php file with the following content: %s and pass its URL to the second parameter of getDownloadLink", + "dl.php_powered_by_madelineproto": "Telegram file download server (up to 4GB), powered by MadelineProto!
Click here for more info on how to setup your very own Telegram file download server!", + "dl.php_check_logs_make_sure_session_running": "Either the associated MadelineProto EventHandler bot or the MadelineProto IPC server are offline, please check logs and make sure at least one of them is running!", + "account_banned": "!!!!!!! WARNING !!!!!!!\nTelegram's flood prevention system suspended this account.\nTo continue, manual verification is required.\nSend an email to recover@telegram.org, asking to unban the phone number %s, and shortly describe what will you do with this phone number.\nThen login again.\nIf you intentionally deleted this account, ignore this message.", + "plugin_path_does_not_exist": "Plugin path %s does not exist!", + "windows_warning": "For Windows users: please switch to Linux if this fails. You can also try modifying the firewall settings to allow all PHP processes to create sockets (it's 100% easier to just switch to Linux, on Linux MadelineProto just works out of the box, no changes needed)", + "could_not_connect_to_MadelineProto": "Could not connect to MadelineProto, please enable proc_open and remove open_basedir restrictions or disable webserver path rewrites to fix! If you already did that, make sure the CLI version of PHP is exactly the same as the web version (same version, extensions, et cetera) and check out the MadelineProto.log file for more info about the error that prevented the IPC server from starting.", + "translate_madelineproto_web": "MadelineProto can be translated in your language (current translation progress: %d%%), click here to contribute with the translation!", + "translate_madelineproto_cli": "MadelineProto can be translated in your language (current translation progress: %d%%), go to https://weblate.madelineproto.xyz to contribute with the translation!" +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/fa.json b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/fa.json new file mode 100644 index 0000000..ae67208 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/fa.json @@ -0,0 +1,162 @@ +{ + "apiChoosePrompt": "انتخاب شما (m/a): ", + "apiManualInstructions0": "وارد حساب خود در https://my.telegram.org شوید", + "apiAppInstructionsManual0": "اسم اپلیکیشن شما، می‌تواند هرچیزی باشد", + "apiAppInstructionsManual1": "اسم کوتاه اپلیکیشن شما، 5 تا 32 کاراکتر، حروف و اعداد انگلیسی", + "apiAppInstructionsManual2": "لینک اپلیکیشن/وبسایت شما، یا t.me/yourusername", + "apiAppInstructionsManual3": "هرچیزی", + "apiAppInstructionsManual4": "اپلیکیشن خود را اینجا توصیف کنید", + "apiManualPrompt0": "API ID خود را وارد کنید: ", + "apiManualPrompt1": "API Hash خود را وارد کنید: ", + "apiAutoPrompt0": "شماره‌ای را وارد کنید که از قبل در تلگرام ثبت‌نام کرده باشد: ", + "apiAutoPrompt1": "کد تاییدی را که در تلگرام دریافت کردید، وارد کنید ", + "apiAppWeb": "اطلاعات API را وارد کنید", + "apiAppInstructionsAuto1": "نام مخفف برنامه‌تان را وارد کنید، 5 تا 32 کاراکتر الفبا اعداد: ", + "apiAppInstructionsAuto2": "لینک برنامه/وبسایت را وارد کنید، یا t.me/yourusername: ", + "apiAppInstructionsAuto4": "برنامه‌تان را توصیف کنید: ", + "apiAppInstructionsAutoTypeOther": "مابقی (در توضیحات مشخص کنید)", + "apiChooseManualAutoTip": "در نظر داشته باشید که می‌توانید API ID و API Hash را به طور مستقیم داخل کدتان با استفاده از تنظیمات وارد کنید. %s", + "apiChooseManualAutoTipWeb": "در نظر باشید که می‌توانید API ID و API Hash را به صورت مستقیم داخل کدتان با استفاده از تنظیمات وارد کنید.", + "go": "برو", + "apiManualWeb": "API ID و API HASH خود را وارد کنید", + "apiAutoWeb": "برای دریافت API ID شماره‌ای را وارد کنید که از قبل در تلگرام ثبت‌نام کرده باشد", + "apiAppInstructionsAuto0": "نام برنامه خود را وارد کنید، میتواند هرچیزی باشد ", + "apiAppInstructionsAuto3": "سکوی (پلتفرم) برنامه را وارد کنید: ", + "apiParamsError": "شما تمام ورودی‌های موردنیاز را وارد نکردید!", + "apiError": "ارور: %s. دوباره امتحان کنید.", + "loginChoosePromptWeb": "میخواهید به عنوان یک کاربر یا به عنوان یک ربات، وارد شوید؟", + "loginWebQr": "همچنین میتوانید به صورت خودکار با اسکن QR Code پایین وارد شوید:", + "loginWebQr2": "بروید به تنظیمات > دستگاه‌ها > اتصال دستگاه دسکتاپ", + "loginWebQr3": "گوشی خود را به سمت این صفحه بگیرید تا ورود را تایید کنید", + "loginOptionBot": "ربات", + "loginOptionUser": "کاربر", + "loginBot": "توکن ربات‌تان را وارد کنید: ", + "loginUser": "شماره تلفن‌تان را وارد کنید: ", + "loginQr": "برای ورود خودکار QR Code بالا را اسکن کنید.", + "loginQrCodeSuccessful": "ورود با QR code با موفقیت انجام شد!", + "loginQrCodeExpired": "QR Code منقضی شد، در حال ساخت QR code جدید...", + "loginManual": "همچنین از سوی دیگر، میتوانید توکن ربات یا شماره تلفن خود را برای ورود خودکار وارد کنید: ", + "loginUserCode": "کد را وارد کنید: ", + "loginUserPass": "رمز خود را وارد کنید (اشاره %s): ", + "loginUserPassWeb": "رمز خود را وارد کنید: ", + "loginUserPassHint": "اشاره: %s", + "signupFirstNameWeb": "نام", + "nearest_dc": "ما در %s هستیم، نزدیک ترین دیتاسنتر %d است.", + "fingerprint_invalid": "اثرانگشت کلید نامعتبر است!", + "value_bigger_than_2147483647": "مقدار داده شده‌ی %s بیشتر از 2147483647 است", + "value_bigger_than_9223372036854775807": "مقدار داده شده‌ی %s بیشتر از 9223372036854775807 است", + "already_loggedIn": "نمونه‌ی MadelineProto از قبل وارد شده!", + "login_code_sent": "کد با موفقیت ارسال شد! زمانی که کد را دریافت کردید باید از تابع completePhoneLogin استفاده کنید.", + "apiManualInstructions2": "روی create application کلیک کنید", + "signupFirstName": "نام خود را وارد کنید: ", + "signupLastName": "نام خانوادگی خود را وارد کنید (می‌تواند خالی باشد): ", + "loginNoPass": "شما کلمه عبور را وارد نکردید!", + "loginNoName": "شما نام را وارد نکردید!", + "loginBotTokenWeb": "توکن ربات", + "loginUserPhoneWeb": "شماره تلفن", + "loginUserPhoneCodeWeb": "کد", + "done": "انجام شد!", + "serialization_ofd": "مرتب سازی (سریالایز) منقضی شده، درحال بازسازی شی!", + "session_corrupted": "سشن شما خراب است!", + "value_smaller_than_9223372036854775808": "مقدار داده شده‌ی %s کمتر از -9223372036854775808 است", + "value_smaller_than_2147483648": "مقدار داده شده‌ی %s کمتر از -2147483648 است", + "value_bigger_than_4294967296": "مقدار داده شده‌ی %s بیشتر از 4294967296 است", + "value_smaller_than_0": "مقدار داده شده‌ی %s کمتر از 0 است", + "file_not_exist": "فایل وجود ندارد", + "madelineproto_ready": "MadelineProto آماده است!", + "logout_ok": "با موفقیت خارج شد!", + "login_ok": "با موفقیت وارد شد!", + "login_user": "در حال ورود به عنوان یک کاربر عادی...", + "login_bot": "در حال ورود به عنوان یک ربات...", + "login_code_sending": "در حال ارسال کد...", + "login_code_uncalled": "من منتظر کد نیستم! لطفا اول تابع phoneLogin را صدا بزنید", + "login_need_signup": "حسابی برای این شماره ساخته نشده‌است، شما باید تابع completeSignup را صدا بزنید...", + "login_auth_key": "درحال ورود با استفاده از کلید هویتی...", + "not_loggedIn": "من وارد نشدم!", + "signing_up": "در حال ثبت‌نام به عنوان یک کاربر عادی...", + "signup_ok": "با موفقیت ثبت‌نام شد!", + "2fa_uncalled": "من منتظر کلمه عبور نیستم! لطفا اول توابع phoneLogin و completePhoneLogin را صدا بزنید!", + "accepting_call": "در حال پذیرش تماس از طرف %s...", + "call_already_accepted": "تماس %s از قبل پذیرفته شده", + "call_already_declined": "تماس %s از قبل رد شده", + "login_2fa_enabled": "احراز هویت دوعاملی فعال است، شما باید تابع complete2falogin را صدا بزنید...", + "call_error_3": "نمیتوان تماس %s را یافت و کامل کرد", + "call_completing": "در حال کامل کردن تماس از طرف %s...", + "call_discarding": "درحال صرف نظر کردن از تماس %s...", + "file_parsing": "درحال تجزیه %s...", + "not_numeric": "مقدار ورودی عددی نیست", + "signup_uncalled": "من منتظر ساخت حساب نیستم! لطفا اول توابع phoneLogin و completePhoneLogin را صدا بزنید!", + "call_error_1": "نمی‌توان تماس %s را پیدا کرد و پذیرفت", + "call_error_2": "نمی‌توان تماس %s را پیدا و تایید کرد", + "signupLastNameWeb": "نام خانوادگی", + "call_confirming": "در حال تایید تماس از طرف %s...", + "long_not_16": "مقدار ورودی به طول 16 بایت نیست", + "long_not_32": "مقدار ورودی به طول 32 بایت نیست", + "long_not_64": "مقدار ورودی به طول 64 بایت نیست", + "array_invalid": "شما یک آرایه معتبر وارد نکردید", + "predicate_not_set": "مستند (مقدار تحت _) تنظیم نشده!", + "type_extract_error": "نمی‌توان نوع (تایپ) \"%s\" را استخراج کرد، شما باید MadelineProto را به روز رسانی کنید!", + "apiManualInstructions1": "به ابزارهای توسعه API بروید", + "loginWebQr1": "تلگرام را در موبایل خود باز کنید", + "signupWeb": "لطفا ثبت‌نام کنید", + "loginNoCode": "شما کد شماره را وارد نکردید!", + "api_not_set": "شما باید یک api key و یک api id وارد کنید، @ خوتان را از my.telegram.org بگیرید", + "deserialization_error": "مشکلی در سریال‌زدایی پیش آمد", + "rpc_tg_error": "تلگرام یک خطای RPC برگرداند: %s (%s), ناشی از %s:%s%sTL رد:", + "peer_not_in_db": "این peer در پایگاه داده (دیتابیس) peer وجود ندارد", + "encode_double_error": "نمی‌توان به درستی double را رمزنگاری (انکد) کرد", + "method_not_found": "تابع پیدا نشد: ", + "params_missing": "ورودی موردنیاز یافت نشد", + "length_too_big": "طول بسیار بزرگ است", + "type_extract_error_id": "نمی‌توان نوع: %s را با ایدی %s استخراج کرد، شما باید MadelineProto را به روز رسانی کنید!", + "constructor_not_found": "سازنده برای این نوع پیدا نشد: ", + "botapi_conversion_error": "نمیتوان %s را به شی ربات API تبدیل کرد", + "non_text_conversion": "فعلا نمی‌توان پیام‌های غیرمتنی را تبدیل کرد!", + "file_type_invalid": "نوع فایل نامعتبر شناسایی شد (%s)", + "secret_chat_skipping": "من چت مخفی (سکرت) %s را در پایگاه داده (دیتابیس) ندارم، درحال رد شدن از پیام...", + "src_file_invalid": "منبع فایل نامعتبری لحاظ گردیده: ", + "bool_error": "نمی‌توان‌ boolean را استخراج کرد", + "sec_peer_not_in_db": "این peer مخفی در پایگاه داده (دیتابیس) داخلی peer وجود ندارد", + "stream_handle_invalid": "یک کنترل‌کننده جریان (استریم هندل) نامعتبر لحاظ گردیده.", + "noReportPeers": "هشدار: هیچ peerی به عنوان peer گزارشات تنظیم نشده، لطفا متود زیر را به ایونت هندلر اضافه کنید", + "mmapErrorPart2": "برای حل کردن مشکل، کامند مقابل را با دسترسی root اجرا کنید: %s", + "mmapErrorPart4": "روی ویندوز و WSL، افزایش سایز pagefile ممکن است کمک کند؛ اگر مشکل پافشاری کرد لطفا سیستم‌عامل خود را به لینوکس تغییر دهید.", + "extensionRecommended": "هشدار: افزونه %s نصب نشده است. لطفا برای افزایش سرعت مدلین‌پروتو آن را نصب کنید!", + "botAlreadyRunning": "ربات هم اکنون در حال اجرا است!", + "extensionRequiredInstallWithApt": "اجرای کامند sudo apt-get install %s را امتحان کنید.", + "extensionRequiredInstallWithCustomInstructions": "برای نصب آن، دستورالعمل ها را در %s دنبال کنید.", + "extensionRequired": "مدلین برای اجرا نیاز به افزونه %s دارد. %s", + "manualAdminActionRequired": "!!!!!!!!! فعالیت دستی ادمین سیستم نیاز است !!!!!!!!!", + "must_have_declare_types": "به دلایل عملکردی و اجرایی، اولین دستور فایل ایونت‌هندلر باید دستور مقابل باشد: \"declare(strict_types=1);\"", + "do_not_delete_MadelineProto.log": "فایل MadelineProto.log هیچوقت نباید حذف شود، لطفا به جای حذف، بیشترین اندازه دلخواه را در تنظیمات مشخص کنید!", + "do_not_remove_MadelineProto.log_phar": "لطفا madeline.phar یا madeline.php را حذف نکنید، در غیراینصورت مدلین‌پروتو crash خواهد کرد. در صورت داشتن هرگونه مشکل با مدلین‌پروتو، آن را به https://github.com/danog/MadelineProto یا https://t.me/pwrtelegramgroup گزارش کنید", + "do_not_use_deprecated_function": "تابع %s منسوخ شده، لطفا به جای آن از %s استفاده کنید", + "mmapErrorPart3": "برای تداوم تغییر در طول راه‌اندازی دوباره: %s", + "recommend_not_use_filesystem_function": "استفاده از تابع %s پیشنهاد نمیشود، چراکه دسترسی و کار با فایل های سیستمی موقع پردازش آپدیت باعث کم شدن سرعت ربات شما میشود، لطفا صفحه https://docs.madelineproto.xyz/docs/UPDATES.html#avoiding-the-use-of-filesystem-functions را ببینید تا با راه‌های جایگزین برای ذخیره اطلاعات که باعث کاهش سرعت ربات شما نمیشوند آشنا شوید!", + "do_not_use_blocking_function": "به دلایل عملکردی و اجرایی، ایونت‌هندلرها نباید از فانکشن %s که async نیست استفاده کنند، لطفا به جای آن از %s استفاده کنید", + "do_not_use_blocking_class": "به دلایل عملکردی و اجرایی، هندلرها نباید از کلس %s که async نیست استفاده کنند، به جای آن از %s استفاده کنید", + "do_not_use_non_root_require_in_event_handler": "به دلایل عملکردی و اجرایی، شما نباید از require یا include داخل کلس ایونت‌هندلر استفاده کنید، فقط require های سطح root مجاز هستند.", + "plugins_must_have_exactly_one_class": "یک پلاگین باید دقیقا یک کلس را تعریف کند! برای تعریف چند کلس، اینترفیس یا تریت، فایل‌های جداگانه بسازید، آنها توسط مدلین‌پروتو به صورت خودکار بارگذاری خواهند شد.", + "plugins_do_not_use_require": "به دلایل عملکردی و اجرایی، پلاگین‌ها فقط میتوانند فایل های دیگر را که در پوشه پلاگین هاست با استفاده از راه‌اندازی بارگذار خودکار PSR-4، به صورت خودکار include یا require کنند (بدون require کردن دستی آنها).", + "static_analysis_minor": "یک مشکل جزئی در طول بررسی استاتیک %s رخ داد: %s", + "static_analysis_severe": "یک مشکل سمت سرور در طول بررسی استاتیک %s رخ داد: %s", + "cli_need_dl.php_link": "لطفا هنگام استفاده از getDownloadLink روی CLI (محیط ترمینال)، لینک اسکریپت دانلود را مشخص کنید!", + "need_dl.php": "اسکریپت دانلود پیشفرض تولید نشد (%s)، لطفا یک فایل dl.php بسیازید و این محتوا را در آن قرار دهید: %s سپس لینک آن فایل را به ورودی دوم getDownloadLink بدهید", + "dl.php_powered_by_madelineproto": "سرور دانلود فایل تلگرام (تا حداکثر 4 گیگابایت)، قدرت گرفته از مدلین‌پروتو!
برای اطلاعات بیشتر در مورد طریقه اجرای سرور دانلود تلگرام شخصی خود اینجا کلیک کنید!", + "update_madelineproto": "شما نسخه قدیمی MadelineProto را اجرا می‌کنید، سورس شما نیاز به بروزرسانی دارد: در حال حاضر %s در حال اجرا است، اما آخرین نسخه با چندین رفع اشکال و ویژگی‌های جدید %s است!", + "dl.php_check_logs_make_sure_session_running": "هم ربات ایونت‌هندلر مدلین‌پروتو مرتبط و هم سرور IPC مدلین‌پروتو آفلاین هستند، لطفا لاگ‌ها را بررسی کنید و مطمئن شوید حداقل یکی از آنها در حال اجراست!", + "invalid_dl.php_session": "%s یک اسکریپت دانلود درست و معتبر نیست چرا که سشن‌آیدی متفاوت است (انتظار این سشن‌آیدی وجود داشت: %s، اما این دریافت شد: %s)", + "account_banned": "!!!!!!! اخطار !!!!!!!\nسیستم جلوگیری از فلود تلگرام، این حساب را معلق کرده.\nبرای ادامه، تایید دستی نیاز است.\nیک ایمیل به recover@telegram.org بفرستید، و از آنها آزادسازی شماره %s را جویا باشید، و کوتاه توضیح دهید که چه کاری با این شماره انجام خواهید داد.\nسپس دوباره وارد شوید.\nاگر از قصد این حساب را حذف کرده‌اید، این پیام را نادیده بگیرید.", + "plugin_path_does_not_exist": "مسیر پلاگین %s وجود ندارد!", + "string_required": "مقدار مورد انتظار رشته است!", + "waveform_must_have_100_values": "آرایه waveformباید 100 مقدار داشته باشد(سایز مورد انتظار 100 است ) !", + "waveform_value": "مقدار عددیwaveform باید بین 0 تا 31 باشد!", + "could_not_convert_object": "نمیتوان مقدار آبجکت تایپ %s را تبدیل کرد", + "mmapErrorPart1": "بیشترین مقدار حافظه تخصیص داده شده (mmap ) پر شده است (%s ) : لطفا از داخل کانفیگ های مربوط به کرنل مقدار vm.max_map_count را به مقدار 262144 افزایش دهیدتا مشکل رفع گردد.", + "could_not_connect_to_MadelineProto": "نمی توان به مدلین‌پروتو متصل شد، لطفاً proc_open را فعال کنید و محدودیت open_basedir را بردارید، یا بازنویسی مسیر وب سرور را غیرفعال کنید تا مشکل رفع شود! اگر این کار را کردید، مطمئن شوید که نسخه PHP در کامندلاین و وبسرور دقیقا یکی است (ورژن یکسان، افزونه‌های یکسان و...) و برای کسب اطلاعات بیشتر راجب اروری که مانع شروع IPC server میشود، فایل MadelineProto.log را بررسی کنید.", + "do_not_use_yield": "مدلین‌پروتو نسخه 8 نیازی به yield در توابع async ندارد و حتی آن را پشتیبانی هم نمیکند، شما باید تمام کلمات کلیدی yield را که قبلا در اجرای توابع async به کار میرفتند حذف کنید", + "windows_warning": "برای کاربران ویندوزی: لطفا اگر این ناموفق بود به لینوکس کوچ کنید. همچنین میتوانید تلاش کنید تا تنظیمات فایروال خود را تغییر دهید تا به تمام پروسه‌های PHP اجازه ساخت سوکت را بدهید (100 درصد تغییر سیستم به لینوکس آسان‌تر است، مدلین‌پروتو در لینوکس خارج از باکس کار میکند، نیازی به تغییر ندارد)", + "translate_madelineproto_web": "مدلین‌پروتو را می‌توان به زبان شما ترجمه کرد (پیشرفت ترجمه فعلی: %d%%)، برای مشارکت در ترجمه اینجا را کلیک کنید!", + "translate_madelineproto_cli": "مدلین‌پروتو را می‌توان به زبان شما ترجمه کرد (پیشرفت ترجمه فعلی: %d%%)، برای مشارکت در ترجمه به https://weblate.madelineproto.xyz بروید!", + "baseDirLimitation": "یک محدودیت basedir پیکربندی شده است: این میتواند روی پرفورمنس تاثیر بگذارد و باعث ایجاد مشکلات شود، لطفا در صورت امکان آن را غیرفعال کنید!" +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/fr.json b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/fr.json new file mode 100644 index 0000000..c49e3c2 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/fr.json @@ -0,0 +1,61 @@ +{ + "loginUserCode": "Entrez le code: ", + "loginUserPass": "Entrez votre mot de passe (Indice %s): ", + "loginUserPassWeb": "Entrez votre mot de passe: ", + "loginUserPassHint": "Indice: %s", + "signupFirstName": "Entrez votre prénom: ", + "signupLastName": "Entrez votre nom de famille (peut être vide): ", + "loginOptionUser": "Utilisateur", + "loginUser": "Entrez votre numéro de téléphone: ", + "file_not_exist": "Le fichier n'existe pas", + "deserialization_error": "Une erreur s'est produite lors de la désérialisation", + "loginUserPhoneCodeWeb": "Code", + "loginNoName": "Vous n'avez pas fourni le prénom!", + "loginUserPhoneWeb": "Numéro de téléphone", + "login_user": "Connexion en tant qu'utilisateur normal...", + "madelineproto_ready": "MadelineProto est prêt!", + "logout_ok": "Déconnecté avec succès!", + "already_loggedIn": "Cette instance de MadelineProto est déjà connectée!", + "login_ok": "Connecté avec succès!", + "apiManualInstructions0": "Connectez-vous à https://my.telegram.org", + "apiAutoPrompt1": "Saisissez le code de vérification que vous avez reçu dans Telegram : ", + "params_missing": "Paramètre requis manquant", + "array_invalid": "Vous n'avez pas fourni de tableau valide", + "not_numeric": "La valeur donnée n'est pas numérique", + "non_text_conversion": "Impossible de convertir des messages non textuels pour le moment!", + "signup_ok": "Inscription réussie!", + "login_code_sending": "Envoi du code...", + "login_code_sent": "Code envoyé avec succès! Une fois que vous avez reçu le code, vous devez utiliser la fonction completePhoneLogin.", + "loginQr": "Scannez le code QR ci-dessus pour vous connecter automatiquement.", + "loginQrCodeSuccessful": "Connexion par code QR réussie!", + "loginWebQr": "Vous pouvez également vous connecter automatiquement en scannant le code QR suivant:", + "loginWebQr1": "Ouvrez Telegram sur votre téléphone", + "loginNoPass": "Vous n'avez pas fourni le mot de passe!", + "signupFirstNameWeb": "Prénom", + "signupLastNameWeb": "Nom de famille", + "serialization_ofd": "La sérialisation est obsolète, reconstruction de l'objet!", + "session_corrupted": "La session est corrompue!", + "apiParamsError": "Vous n'avez pas fourni tous les paramètres requis!", + "apiError": "ERREUR: %s. Essayez de nouveau.", + "signupWeb": "Inscrivez-vous s'il vous plaît", + "loginWebQr3": "Pointez votre téléphone vers cet écran pour confirmer la connexion", + "login_2fa_enabled": "2FA activé, vous devrez appeler la fonction complete2falogin...", + "signing_up": "Inscription en tant qu'utilisateur normal...", + "value_bigger_than_9223372036854775807": "La valeur fournie %s est supérieure à 9223372036854775807", + "value_smaller_than_9223372036854775808": "La valeur fournie %s est inférieure à -9223372036854775808", + "value_bigger_than_4294967296": "La valeur fournie %s est supérieure à 4294967296", + "value_smaller_than_0": "La valeur fournie %s est inférieure à 0", + "value_bigger_than_2147483647": "La valeur fournie %s est supérieure à 2147483647", + "value_smaller_than_2147483648": "La valeur fournie %s est inférieure à -2147483648", + "call_error_1": "Impossible de trouver et d'accepter l'appel %s", + "accepting_call": "Acceptation de l'appel de %s...", + "call_error_2": "Impossible de trouver et de confirmer l'appel %s", + "long_not_16": "La valeur donnée ne fait pas 16 octets", + "long_not_32": "La valeur donnée ne fait pas 32 octets", + "long_not_64": "La valeur donnée ne fait pas 64 octets", + "call_error_3": "Impossible de trouver et de terminer l'appel %s", + "call_completing": "Fin de l'appel de %s...", + "call_confirming": "Confirmation de l'appel de %s...", + "call_discarding": "Abandon de l'appel %s...", + "file_parsing": "Analyse de %s..." +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/he.json b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/he.json new file mode 100644 index 0000000..f10635a --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/he.json @@ -0,0 +1,162 @@ +{ + "go": "קדימה", + "apiChooseManualAutoTip": "שים לב שאתה יכול גם לספק את מזהה ה-API/hash ישירות בקוד באמצעות ההגדרות: %s", + "apiChooseManualAutoTipWeb": "שים לב שאתה יכול גם לספק את מזהה ה-API/hash ישירות בקוד באמצעות ה- הגדרות.", + "apiChoosePrompt": "בחירתך (m/a): ", + "apiManualInstructions0": "התחבר ל https://my.telegram.org", + "apiManualInstructions1": "לך ל API development tools", + "apiManualInstructions2": "לחץ על create application", + "apiAppInstructionsManual0": "שם האפליקציה שלך, יכול להיות כל שם", + "apiAppInstructionsManual1": "שם קצר לאפליקציה שלך, אותיות באנגלית בלבד, 5-32 תווים", + "apiAppInstructionsManual2": "קישור לאפליקציה/לאתר שלך או t.me/yourusername", + "apiAppInstructionsManual3": "הכל", + "apiAppInstructionsManual4": "תאר את האפליקציה שלך פה", + "apiManualWeb": "הזן את API ID ו API hash", + "apiManualPrompt0": "הזן את ה API ID שלך: ", + "apiManualPrompt1": "הזן את ה API Hash שלך: ", + "apiAutoWeb": "הזן את מספר הטלפון שכבר רשום בטלגרם כדי לקבל את ה API ID", + "apiAutoPrompt0": "הזן את מספר הטלפון שכבר רשום בטלגרם: ", + "apiAutoPrompt1": "הזן את קוד האימות שקיבלת באפליקצית טגלרם: ", + "apiAppWeb": "הזן את פרטי ה API", + "apiAppInstructionsAuto0": "הזן את שם האפליקציה שלך, יכול להיות כל שם: ", + "apiAppInstructionsAuto1": "הזן שם קצר לאפליקציה שלך, אותיות באנגלית בלבד, 5-32 תווים: ", + "apiAppInstructionsAuto2": "הזן את הקישור לאפליקציה/לאתר שלך או t.me/yourusername: ", + "apiAppInstructionsAuto3": "הזן את פלטופרמת האפליקציה: ", + "apiAppInstructionsAuto4": "תאר את האפליקציה שלך: ", + "apiAppInstructionsAutoTypeOther": "אחר (פרט בתיאור)", + "apiParamsError": "לא סיפקת את כל הפרמטרים הנדרשים!", + "apiError": "שגיאה: %s. נסה שנית.", + "loginChoosePromptWeb": "האם ברצונך להתחבר כמשתמש או כבוט?", + "loginWebQr": "אתה יכול גם להתחבר אוטומטית על ידי פתיחת Telegram בטלפון שלך, מעבר להגדרות > מכשירים > קישור מכשיר שולחן עבודה וסריקת קוד ה-QR הבא:", + "loginWebQr1": "פתח את טלגרם בטלפון שלך", + "loginWebQr2": "עבור אל הגדרות > מכשירים > קישור מכשיר שולחן עבודה", + "loginWebQr3": "כוון את הטלפון שלך למסך זה כדי לאשר את הכניסה", + "loginOptionBot": "בוט", + "loginOptionUser": "משתמש", + "loginBot": "הזן את הטוקן של הבוט שלך: ", + "loginUser": "הזן את מספר הטלפון שלך: ", + "loginQr": "פתח את Telegram בטלפון שלך, עבור אל הגדרות > מכשירים > קישור מכשיר שולחן עבודה וסרוק את קוד ה-QR שלמעלה כדי להתחבר אוטומטית.", + "loginQrCodeSuccessful": "התחברות דרך קוד QR בוצעה בהצלחה!", + "loginQrCodeExpired": "פג תוקפו של קוד ה-QR, תיצרו קוד חדש...", + "loginManual": "לחלופין, אתה יכול גם להזין טורן של בוט או מספר טלפון כדי להתחבר באופן ידני: ", + "loginUserCode": "הזן את הקוד: ", + "loginUserPass": "הזן את הסיסמא שלך (רמז %s): ", + "loginUserPassWeb": "הזן את הסיסמא שלך: ", + "loginUserPassHint": "רמז: %s", + "signupFirstName": "הזן את השם הפרטי שלך: ", + "signupLastName": "הזן את שם המשפחה שלך (יכול להיות ריק): ", + "signupWeb": "הירשם בבקשה", + "signupFirstNameWeb": "שם פרטי", + "signupLastNameWeb": "שם משפחה", + "loginNoCode": "לא הזנת קוד טלפון!", + "loginNoPass": "לא הזנת את הסיסמה!", + "loginNoName": "לא הזנהת את השם הפרטי!", + "loginBotTokenWeb": "טוקן הבוט", + "loginUserPhoneWeb": "מספר טלפון", + "loginUserPhoneCodeWeb": "קוד", + "done": "בוצע!", + "nearest_dc": "אנחנו ב %s, חוות שרתי ה DC הקרובה היא %d.", + "serialization_ofd": "הסידרה לא מעודכנת, משחזרת אובייקט!", + "api_not_set": "עליך להזין api key ו- api id משלך, קבל אחד בקישור @ my.telegram.org", + "session_corrupted": "הסשן פגום!", + "value_bigger_than_2147483647": "הערך שהתקבל %s גדול מ 2147483647", + "value_smaller_than_2147483648": "הערך שהתקבל %s קטן מ -2147483648", + "value_bigger_than_9223372036854775807": "הערך שהתקבל %s גדול מ 9223372036854775807", + "value_smaller_than_9223372036854775808": "הערך שהתקבל %s קטן מ -9223372036854775808", + "value_bigger_than_4294967296": "הערך שהתקבל %s גדול מ 4294967296", + "value_smaller_than_0": "הערך שהתקבל %s קטן מ 0", + "encode_double_error": "לא ניתן היה לקודד כפול כראוי", + "file_not_exist": "קובץ לא קיים", + "deserialization_error": "אירעה שגיאה בעת דה-סידריאליזציה", + "rpc_tg_error": "טלגרם החזירה שגיאת RPC: %s (%s), נתפס ע\"י %s:%s%sמעקב TL:", + "madelineproto_ready": "MadelineProto מוכן!", + "logout_ok": "התנתק בהצלחה!", + "already_loggedIn": "מופע זה של MadelineProto כבר מחובר!", + "login_ok": "התחברת בהצלחה!", + "login_user": "מתחבר כמשתמש רגיל...", + "login_bot": "מתחבר כבוט...", + "login_code_sending": "שולח קוד...", + "login_code_sent": "הקוד נשלח בהצלחה! לאחר שתקבל את הקוד, עליך להשתמש בפונקציית completePhoneLogin.", + "login_code_uncalled": "אני לא מחכה לקוד! עליך להשתמש בפונקציית phoneLogin קודם", + "login_2fa_enabled": "אימות דו שלבי מופעל, עליך להשתמש בפונקציית complete2falogin...", + "login_need_signup": "לא נוצר חשבון עבור מספר זה, עליך להשתמש בפונקציית completeSignup...", + "login_auth_key": "מתחבר באמצעות מפתח אישור...", + "not_loggedIn": "אני לא מחובר!", + "signup_uncalled": "אני לא מחכה להירשם! עליך להשתמש בפונקציות phoneLogin ו- completePhoneLogin קודם!", + "signing_up": "נרשם כמשתמש רגיל...", + "signup_ok": "נרשמת בהצלחה!", + "2fa_uncalled": "אני לא מחכה לסיסמא! עליך להשתמש בפונקציות phoneLogin ו- completePhoneLogin קודם!", + "peer_not_in_db": "עמית זה לא קיים במסד הנתונים הפנימי של עמיתים", + "call_error_1": "לא ניתן היה למצוא ולקבל את השיחה %s", + "accepting_call": "מקבל שיחה מ %s...", + "call_already_accepted": "שיחה %s כבר התקבלה", + "call_already_declined": "שיחה %s כבר נדחתה", + "call_error_2": "לא ניתן היה למצוא ולאשר את השיחה %s", + "call_confirming": "אישור שיחה מ %s...", + "call_error_3": "לא ניתן היה למצוא ולהשלים את השיחה %s", + "call_completing": "משלים שיחה מ %s...", + "fingerprint_invalid": "טביעת אצבע לא חוקית של מפתח!", + "call_discarding": "ביטול שיחה %s...", + "file_parsing": "ממיר %s...", + "src_file_invalid": "סופק קובץ מקור לא חוקי: ", + "bool_error": "לא ניתן היה לחלץ בוליאני", + "not_numeric": "הערך הנתון אינו מספרי", + "long_not_16": "הערך הנתון אינו באורך 16 בתים", + "long_not_32": "הערך הנתון אינו באורך 32 בתים", + "long_not_64": "הערך הנתון אינו באורך 64 בתים", + "array_invalid": "לא סיפקת מערך חוקי", + "predicate_not_set": "פרדיקט (ערך תחת _) לא הוגדר!", + "type_extract_error": "לא ניתן היה לחלץ את הסוג \"%s\", נדרש לעדכן את MadelineProto!", + "method_not_found": "הפונקציה לא נמצא: ", + "params_missing": "חסר פרמטר נדרש", + "sec_peer_not_in_db": "עמית סודי זה אינו קיים במסד הנתונים הפנימי של עמיתים", + "stream_handle_invalid": "סופק stream handle לא חוקי.", + "length_too_big": "האורך גדול מדי", + "type_extract_error_id": "לא ניתן היה לחלץ את הסוג: %s עם מזהה id %s, נדרש לעדכן את MadelineProto!", + "constructor_not_found": "הבנאי לא נמצא לסוג: ", + "botapi_conversion_error": "לא ניתן להמיר את %s לאובייקט bot API", + "non_text_conversion": "עדיין לא ניתן להמיר הודעות שאינן טקסט!", + "file_type_invalid": "זוהה סוג קובץ לא חוקי (%s)", + "secret_chat_skipping": "אין לי את הצ'אט הסודי %s במסד הנתונים, דילוג על הודעה...", + "waveform_value": "ערך waveform חייב להיות בין 0 ל-31!", + "string_required": "המחרוזת הייתה צפויה!", + "waveform_must_have_100_values": "מערך צורות גל(waveform ) חייב להיות 100 ערכים!", + "could_not_convert_object": "לא ניתן להמיר אובייקט מסוג %s", + "do_not_delete_MadelineProto.log": "אסור למחוק את הקובץ MadelineProto.log, אנא הגדר גודל מקסימלי מותאם אישית בהגדרות, במקום זאת!", + "do_not_remove_MadelineProto.log_phar": "נא לא להסיר madeline.phar או madeline.php, אחרת MadelineProto תקרוס. אם יש לך בעיה כלשהי עם MadelineProto, דווח על זה אל https://github.com/danog/MadelineProto או https://t.me/pwrtelegramgroup", + "plugins_must_have_exactly_one_class": "תוסף חייב להגדיר בדיוק מחלקה אחת! כדי להגדיר מספר מחלקות, ממשקים או תכונות, צור קבצים נפרדים, הם ייטענו אוטומטית על ידי MadelineProto באופן אוטומטי.", + "do_not_use_blocking_class": "מטעמי ביצועים, מטפלים אינם רשאים להשתמש במחלקה החוסמת ללא אסינכרון %s, אנא השתמש ב-%s, במקום זאת", + "need_dl.php": "לא ניתן ליצור סקריפט הורדה כברירת מחדל (%s), אנא צור קובץ dl.php עם התוכן הבא: %s והעביר את כתובת האתר שלו לפרמטר השני של getDownloadLink", + "mmapErrorPart2": "כדי לתקן, הפעל את הפקודה הבאה: %s (בתור root)", + "mmapErrorPart3": "כדי להחיל את השינוי לאחר אתחול מחדש: %s", + "static_analysis_minor": "נתקלה בבעיה קלה במהלך ניתוח סטטי של %s: %s", + "static_analysis_severe": "נתקלה בבעיה חמורה במהלך ניתוח סטטי של %s: %s", + "cli_need_dl.php_link": "אנא ציין כתובת אתר של סקריפט הורדה בעת שימוש ב-getDownloadLink דרך CLI!", + "manualAdminActionRequired": "!!!!!!!!! נדרשת פעולה ידנית של מנהל מערכת !!!!!!!!!", + "extensionRequired": "MadelineProto דורשת את התוסף %s כדי לפעול. %s", + "extensionRequiredInstallWithCustomInstructions": "עקוב אחר ההוראות ב-%s כדי להתקין אותו.", + "plugin_path_does_not_exist": "נתיב התוסף %s אינו קיים!", + "update_madelineproto": "אתה מפעיל גרסה ישנה של MadelineProto, נדרש עדכון: פועל כעת %s, אך הגרסה האחרונה עם מספר תיקוני באגים ותכונות חדשות היא %s!", + "do_not_use_deprecated_function": "הפונקציה %s הוצאה משימוש, אנא השתמש ב-%s במקום זאת", + "baseDirLimitation": "מגבלת תיקיית בסיס מוגדרת: זה יכול להשפיע על הביצועים ולגרום לבעיות מסוימות, אנא השבת אותה אם אפשר!", + "noReportPeers": "אזהרה: לא מוגדרים עמיתים לדיווח, אנא הוסף את השיטה הבאה למטפל באירועים שלך", + "mmapErrorPart1": "המספר המרבי של אזורים ממופי זיכרון (mmap) הושג (%s): הגדל את תצורת ליבת vm.max_map_count ל-262144 כדי לתקן.", + "mmapErrorPart4": "ב-Windows וב-WSL, הגדלת גודל קובץ הדף עשויה לעזור; אנא עבור ללינוקס מקורית אם הבעיה נמשכת.", + "botAlreadyRunning": "הבוט כבר פועל!", + "extensionRequiredInstallWithApt": "נסה להפעיל את sudo apt-get install %s.", + "extensionRecommended": "אזהרה: התוסף %s אינו מותקן, אנא התקן אותו כדי להאיץ את MadelineProto!", + "must_have_declare_types": "מסיבות ביצועים, ההצהרה הראשונה של קובץ מטפל באירוע חייבת להיות \"declare(strict_types=1);\"", + "do_not_use_blocking_function": "מטעמי ביצועים, ייתכן שמטפלי אירועים לא ישתמשו בפונקציית החסימה הלא-אסינכרונית %s, אנא השתמש ב-%s, במקום זאת", + "could_not_connect_to_MadelineProto": "לא ניתן להתחבר ל-MadelineProto, אנא הפעל את proc_open והסר הגבלות open_basedir או השבת שכתוב של נתיב שרת אינטרנט כדי לתקן! אם כבר עשית זאת, ודא שגרסת ה-CLI של PHP זהה בדיוק לגרסת האינטרנט (אותה גרסה, הרחבות וכו') ועיין בקובץ MadelineProto.log לקבלת מידע נוסף על השגיאה שמנעה משרת ה-IPC להתחיל.", + "do_not_use_non_root_require_in_event_handler": "מסיבות ביצועים, אסור להשתמש ב-require או לכלול בתוך מחלקה של מטפל באירועים, רק דרישות ברמת השורש מותרות.", + "do_not_use_yield": "MadelineProto 8 אינו דורש או תומך בשימוש בתשואה בפונקציות אסינכרון, עליך להסיר את כל מילות המפתח של תשואה ששימשו בעבר עבור קריאות פונקציות אסינכרון", + "account_banned": "!!!!!!! אזהרה!!!!!!!\nמערכת מניעת הצפות של טלגרם השעתה את החשבון הזה.\nכדי להמשיך, נדרש אימות ידני.\nשלח אימייל לכתובת recover@telegram.org, בבקשה לבטל את החסימה של מספר הטלפון %s, ותאר בקצרה מה תעשה עם מספר הטלפון הזה.\nלאחר מכן התחבר שוב.\nאם מחקת את החשבון הזה בכוונה, התעלם מהודעה זו.", + "windows_warning": "למשתמשי Windows: נא לעבור ללינוקס אם זה נכשל. אתה יכול גם לנסות לשנות את הגדרות חומת האש כדי לאפשר לכל תהליכי PHP ליצור שקעים (קל ב-100% פשוט לעבור ללינוקס, ב-Linux MadelineProto פשוט עובד מחוץ לקופסה, אין צורך בשינויים)", + "translate_madelineproto_cli": "ניתן לתרגם את MadelineProto בשפה שלך (התקדמות התרגום הנוכחית: %d%%), עבור אל https://weblate.madelineproto.xyz כדי לתרום עם התרגום!", + "recommend_not_use_filesystem_function": "השימוש בפונקציה %s אינו מומלץ, מכיוון שגישה למערכת הקבצים במהלך טיפול בעדכונים תאט את הבוט שלך, אנא ראה https://docs.madelineproto.xyz/docs/UPDATES.html#avoiding-the-use-of-filesystem-functions עבור רשימה של דרכים חלופיות לאחסון נתונים שלא יאט את הבוט שלך!", + "plugins_do_not_use_require": "מטעמי ביצועים, תוספים יכולים לכלול או לדרוש אוטומטית קבצים אחרים הנמצאים בתיקיית התוספים על ידי הפעלת הטעינה האוטומטית של PSR-4 (לא על ידי הפעלתם ידנית של require()'ing them).", + "dl.php_check_logs_make_sure_session_running": "הבוט של MadelineProto EventHandler או שרת ה-IPC של MadelineProto אינם מקוונים, אנא בדוק יומנים וודא שלפחות אחד מהם פועל!", + "invalid_dl.php_session": "%s אינו סקריפט הורדה חוקי מכיוון שמזהה ההפעלה שלו שונה (צפי %s, קיבל %s)", + "dl.php_powered_by_madelineproto": "שרת הורדת קבצי Telegram (עד 4GB), מופעל על ידי MadelineProto!
Click here למידע נוסף על איך להגדיר שרת הורדת קבצים משלך בטלגרם!", + "translate_madelineproto_web": "ניתן לתרגם את MadelineProto בשפה שלך (התקדמות התרגום הנוכחית: %d%%), לחץ כאן כדי לתרום עם התרגום!" +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/it.json b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/it.json new file mode 100644 index 0000000..8da2889 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/it.json @@ -0,0 +1,162 @@ +{ + "nearest_dc": "Siamo in %s, il DC più vicino è %d.", + "serialization_ofd": "La serializzazione non è aggiornata, reistanziamento dell'oggetto in corso!", + "api_not_set": "Devi specificare una chiave ed un ID API, ottienili su https://my.telegram.org", + "session_corrupted": "La sessione si è corrotta!", + "value_bigger_than_2147483647": "Il valore fornito (%s) è maggiore di 2147483647", + "value_smaller_than_2147483648": "Il valore fornito (%s) è minore di -2147483648", + "value_bigger_than_9223372036854775807": "Il valore fornito (%s) è maggiore di 9223372036854775807", + "value_smaller_than_9223372036854775808": "Il valore fornito (%s) è minore di -9223372036854775808", + "value_bigger_than_4294967296": "Il valore fornito (%s) è maggiore di 4294967296", + "value_smaller_than_0": "Il valore fornito (%s) è minore di 0", + "encode_double_error": "Non sono riuscito a codificare il numero a virgola mobile fornito", + "file_not_exist": "Il file specificato non esiste", + "deserialization_error": "C'è stato un errore durante la deserializzazione", + "rpc_tg_error": "Telegram ha ritornato un errore RPC: %s (%s), causato da %s:%s%sTL trace:", + "madelineproto_ready": "MadelineProto è pronto!", + "logout_ok": "Il logout è stato eseguito correttamente!", + "already_loggedIn": "Questa istanza di MadelineProto è già loggata!", + "login_ok": "Il login è stato eseguito correttamente!", + "login_user": "Sto eseguendo il login come utente normale...", + "login_bot": "Sto eseguendo il login come bot...", + "login_code_sending": "Sto inviando il codice...", + "login_code_sent": "Il codice è stato inviato correttamente! Una volta ricevuto il codice dovrai usare la funzione completePhoneLogin.", + "login_code_uncalled": "Non sto aspettando il codice, usa prima la funzione phoneLogin!", + "login_2fa_enabled": "L'autenticazione a due fattori è abilitata, dovrai chiamare il metodo complete2falogin...", + "login_need_signup": "Questo numero non è registrato su telegram, dovrai chiamare la funzione completeSignup...", + "login_auth_key": "Sto facendo il login con la chiave di autorizzazione...", + "not_loggedIn": "Non ho ancora fatto il login!", + "signup_uncalled": "Chiama prima le funzioni phoneLogin e completePhoneLogin!", + "signing_up": "Mi sto registrando su telegram come utente normale...", + "signup_ok": "Mi sono registrato su Telegram!", + "2fa_uncalled": "Non sto aspettando la password, chiama prima le funzioni phoneLogin e completePhoneLogin!", + "peer_not_in_db": "Questo utente/gruppo/canale non è presente nel database interno MadelineProto", + "call_error_1": "Impossibile trovare ed accettare la chiamata %s", + "accepting_call": "Sto accettando una chiamata da %s...", + "call_already_accepted": "La chiamata %s è già stata accettata", + "call_already_declined": "La chiamata %s è già stata annullata", + "call_error_2": "Impossibile trovare e confermare la chiamata %s", + "call_confirming": "Sto confermando una chiamata da %s...", + "call_error_3": "Impossibile trovare e completare la chiamata %s", + "call_completing": "Sto completando una chiamata da %s...", + "fingerprint_invalid": "fingerprint della chiave non valido!", + "call_discarding": "Sto rifiutando la chiamata %s...", + "file_parsing": "Leggendo %s...", + "src_file_invalid": "È stato fornito un file sorgente non valido: ", + "bool_error": "Non sono riuscito ad estrarre un booleano", + "not_numeric": "Il valore fornito non è numerico", + "long_not_16": "Il valore fornito non è lungo 16 byte", + "long_not_32": "Il valore fornito non è lungo 32 byte", + "long_not_64": "Il valore fornito non è lungo 64 byte", + "array_invalid": "Il valore fornito non è un array", + "predicate_not_set": "Il predicato (valore sotto chiave _, esempio ['_' => 'inputPeer']) non è impostato!", + "type_extract_error": "Impossibile estrarre il tipo \"%s\", dovresti aggiornare MadelineProto!", + "method_not_found": "Impossibile trovare il seguente metodo: ", + "params_missing": "Non hai fornito un parametro obbligatorio, rileggi la documentazione API", + "sec_peer_not_in_db": "La chat segreta non è presente nel database interno MadelineProto", + "stream_handle_invalid": "Il valore fornito non è uno stream.", + "length_too_big": "Il valore fornito è troppo lungo", + "type_extract_error_id": "Non sono riuscito ad estrarre il tipo %s con ID %s, dovresti aggiornare MadelineProto!", + "constructor_not_found": "Costruttore non trovato per tipo: ", + "botapi_conversion_error": "Non sono risucito a convertire %s in un oggetto bot API", + "non_text_conversion": "Non posso ancora convertire messaggi media!", + "file_type_invalid": "È stato fornito un tipo file errato", + "secret_chat_skipping": "Non ho la chat segreta %s nel database, ignorando messaggio...", + "done": "Fatto!", + "apiAppInstructionsAuto0": "Inserisci il nome dell'app, può essere qualsiasi cosa: ", + "apiAppInstructionsAuto1": "Inserisci il nome ridotto dell'app, caratteri alfanumerici: ", + "apiAppInstructionsAuto2": "Inserisci il sito internet dell'app, oppure t.me/username: ", + "apiAppInstructionsAuto3": "Inserisci la piattaforma dell'app: ", + "apiAppInstructionsAuto4": "Descrivi la tua app: ", + "apiAppInstructionsManual0": "titolo dell'app, può essere qualsiasi cosa", + "apiAppInstructionsManual1": "il nome ridotto dell'app, caratteri alfanumerici", + "apiAppInstructionsManual2": "L'indirizzo del tuo sito, oppure t.me/username", + "apiAppInstructionsManual3": "Qualsiasi", + "apiAppInstructionsManual4": "Descrivi la tua app", + "apiAutoPrompt0": "Inserisci un numero di telefono che è già registrato su Telegram: ", + "apiAutoPrompt1": "Inserisci il codice di verifica che hai ricevuto su Telegram: ", + "apiChooseManualAutoTip": "Nota che puoi anche fornire i parametri API direttamente nelle impostazioni: %s", + "apiChoosePrompt": "La tua scelta (m/a): ", + "apiError": "ERRORE: %s. Prova ancora.", + "apiManualInstructions0": "Effettua il login su https://my.telegram.org", + "apiManualInstructions1": "Vai su API development tools", + "apiManualInstructions2": "Clicca su create application", + "apiManualPrompt0": "Inserisci il tuo API ID: ", + "apiManualPrompt1": "Inserisci il tuo API hash: ", + "apiParamsError": "Non hai fornito tutti i parametri richiesti!", + "loginBot": "Inserisci il tuo bot token: ", + "loginQr": "Apri Telegram sul tuo telefono, vai in Impostazioni > Dispositivi > Collega dispositivo desktop e scansiona il codice QR per fare il login automaticamente.", + "loginManual": "In alternativa, puoi inserire un bot token o un numero di telefono per effettuare il login manualmente: ", + "loginNoCode": "Non hai fornito un codice di verifica!", + "loginNoName": "Non hai fornito un nome!", + "loginNoPass": "Non hai fornito la password!", + "loginUser": "Inserisci il tuo numero di telefono: ", + "loginUserPass": "Inserisci la tua password (suggerimento %s): ", + "loginUserPassHint": "Suggerimento: %s", + "loginUserPassWeb": "Inserisci la tua password: ", + "loginUserCode": "Inserisci il codice di verifica: ", + "signupFirstName": "Inserisci il tuo nome: ", + "signupFirstNameWeb": "Nome", + "signupLastName": "Inserisci il tuo cognome: ", + "signupLastNameWeb": "Cognome", + "signupWeb": "Registrazione", + "go": "Vai", + "loginChoosePromptWeb": "Vuoi effettuare il login come utente o come bot?", + "loginWebQr": "Puoi anche effettuare il login automaticamente aprendo Telegram sul telefono, andando in Impostazioni > Dispositivi > Collega dispositivo desktop e scansionando il seguente codice QR:", + "loginWebQr1": "Apri Telegram sul tuo telefono", + "loginWebQr2": "Vai su Impostazioni > Dispositivi > Collega dispositivo desktop", + "loginWebQr3": "Inquadra il codice sullo schermo per completare il login", + "loginOptionBot": "Bot", + "loginOptionUser": "Utente", + "loginBotTokenWeb": "Token del bot", + "loginUserPhoneCodeWeb": "Codice di verifica", + "loginUserPhoneWeb": "Numero di telefono", + "apiAutoWeb": "Inserisci un numero di telefono già registrato su Telegram per ottenere l'API ID", + "apiManualWeb": "Inserisci il tuo API ID e API hash", + "apiAppInstructionsAutoTypeOther": "Altro (specificare nella descrizione)", + "apiAppWeb": "Inserire informazioni API", + "apiChooseManualAutoTipWeb": "Nota che puoi anche fornire i parametri API direttamente nelle impostazioni.", + "loginQrCodeSuccessful": "Il login con codice QR è stato effettuato correttamente!", + "loginQrCodeExpired": "Il codice QR è scaduto, generazione di un nuovo codice QR in corso...", + "noReportPeers": "Attenzione: non è stato impostato alcun peer per la segnalazione errori, per favore aggiungi il seguente metodo all'event handler", + "manualAdminActionRequired": "!!!!!!!!! È NECESSARIO L'INTERVENTO DELL'AMMINISTRATORE DI SISTEMA !!!!!!!!!", + "mmapErrorPart2": "Per correggere l'errore, avviare il seguente comando come root: %s", + "mmapErrorPart3": "Per correggere l'errore in modo permanente, anche dopo un riavvio: %s", + "mmapErrorPart4": "Su Windows e WSL, potrebbe aiutare l'incremento della dimensione del file di paginazione; passare a Linux nativo se il problema persiste.", + "extensionRequired": "MadelineProto richiede l'estensione %s. %s", + "extensionRequiredInstallWithApt": "Provate ad avviare sudo apt-get install %s.", + "extensionRequiredInstallWithCustomInstructions": "Seguire le istruzioni su %s per installarla.", + "extensionRecommended": "Attenzione: l'estensione %s non è installata, si prega di installarla per velocizzare MadelineProto!", + "mmapErrorPart1": "È stato raggiunto il limite massimo di regioni di memoria mappate (mmap, %s): è necessario incrementare il parametro di configurazione del kernel vm.max_map_count a 262144 per correggere l'errore.", + "botAlreadyRunning": "Il bot è già in esecuzione!", + "do_not_remove_MadelineProto.log_phar": "Per favore non rimuovere madeline.phar o madeline.php, o MadelineProto crasherà. Se hai problemi con MadelineProto, segnalali su https://github.com/danog/MadelineProto o https://t.me/pwrtelegramgroup", + "do_not_use_blocking_function": "per motivi di performance, gli event handler non possono usare la funzione bloccante non asincrona %s, per favore usa %s", + "do_not_use_deprecated_function": "la funzione %s è deprecata, per favore usa %s", + "recommend_not_use_filesystem_function": "l'uso della funzione %s non è racommandato, perché l'accesso al filesystem durante la gestione degli update rallenterà il bot, si prega di leggere https://docs.madelineproto.xyz/docs/UPDATES.html#avoiding-the-use-of-filesystem-functions per una lista di modi alternativi per memorizzare informazioni in modi che non rallenteranno il tuo bot!", + "do_not_use_blocking_class": "per motivi di performance, gli event handler non possono usare la classe bloccante non-asincrona %s, per favore usa %s", + "must_have_declare_types": "per motivi di performance, la prima riga del file contenente l'event handler deve essere uguale a \"declare(strict_types=1);\"", + "do_not_delete_MadelineProto.log": "il file MadelineProto.log non deve essere mai eliminato, per favore imposta una dimensione massima nelle impostazioni invece di eliminarlo!", + "do_not_use_non_root_require_in_event_handler": "per motivi di performance, non è possibile usare require o include dentro l'event handler, è possibile includere file solo all'esterno della classe.", + "static_analysis_minor": "È stato riscontrato un problema minore durante l'analisi statica di %s: %s", + "static_analysis_severe": "È stato riscontrato un problema grave durante l'analisi statica di %s: %s", + "plugins_must_have_exactly_one_class": "un plugin deve definire esattamente una classe! Per definire più classi, interfacce o trait, si prega di creare file separati, che verranno caricati da MadelineProto automaticamente.", + "plugins_do_not_use_require": "per motivi di performance, i plugin possono solo includere altri file presenti nella cartella plugins usando il meccanismo di autocaricamento PSR-4 (non usando require o include).", + "cli_need_dl.php_link": "È necessario specificare l'URL dello script di scaricamente per usare getDownloadLink via CLI!", + "need_dl.php": "Impossibile generare lo script di scaricamento di default (%s), è necessario creare un file dl.php con il seguente contenuto: %s e passare il suo URL al secondo parametro di getDownloadLink", + "dl.php_powered_by_madelineproto": "Server di scaricamento file Telegram (fino a 4GB), creato usando MadelineProto!
Clicca qui per configurare il tuo personale server di scaricamento file Telegram!", + "invalid_dl.php_session": "%s non è uno script di scaricamento valido perché l'ID della sessione non è corretto (mi aspettavo %s, ho ricevuto %s)", + "account_banned": "!!!!!!! ATTENZIONE !!!!!!!\nIl sistema antispam di telegram ha sospeso questo account.\nPer continuare, è richiesta una verifica manuale.\nMandare un'email in inglese a recover@telegram.org, chiedendo di sbannare il numero di telefono %s, spiegando brevemente cosa si ha intenzione di fare con l'account.\nPoi rieseguite nuovamente il login.\nIgnorare questo messaggio se la sessione è stata resettata intenzionalmente.", + "plugin_path_does_not_exist": "La cartella dei plugin %s non esiste!", + "string_required": "È richiesta una stringa!", + "waveform_must_have_100_values": "Una forma d'onda deve essere un array contenente 100 valori!", + "waveform_value": "Un singolo valore di una forma d'onda deve essere compreso tra 0 e 31!", + "could_not_convert_object": "Non è stato possibile convertire l'oggetto di tipo %s", + "dl.php_check_logs_make_sure_session_running": "Sia l'event handler associato al bot che il server IPC della sessione sono offline, controllare i log e assicurarsi che almeno uno dei due sia online!", + "update_madelineproto": "Stai usando una vecchia versione di MadelineProto, è necessario un aggiornamento: la versione che stai usando adesso è %s, ma l'ultima versione con tutti gli ultimi bugfix e tante nuove funzionalità è %s!", + "do_not_use_yield": "MadelineProto 8 non richede e non supporta l'uso della parola chiave yield in funzioni asincrono, è necessario rimuovere tutte gli yield usati in precedenza per chiamate a funzioni asincrone", + "translate_madelineproto_web": "MadelineProto può essere tradotto nella tua lingua (stato attuale della traduzione: %d%%), cliccate qui per contribuire alla traduzione!", + "translate_madelineproto_cli": "MadelineProto può essere tradotto nella tua lingua (stato attuale della traduzione: %d%%), vai su https://weblate.madelineproto.xyz per contribuire alla traduzione!", + "windows_warning": "Per utenti Windows: per favore passate a Linux se questo passaggio fallisce. Per continuare ad usare Windows, potrebbe essere necessario modificare le impostazioni del firewall per permettere a tutti i processi PHP di creare socket (100% è più facile passare a Linux, su Linux MadelineProto funziona direttamente senza alcuna modifica richiesta)", + "could_not_connect_to_MadelineProto": "Non è stato possibile collegarsi a MadelineProto, per favore abilitare la funzione proc_open e rimuovere ogni limitazione open_basedir o disabilitare le rewrite lato server per fixare! Se l'avete già fatto, assicuratevi che la versione PHP CLI è la stessa versione di PHP web (apache/php-fpm) (stessa versione, estensioni, eccetera) e controllate il file MadelineProto.log per più informazioni sull'errore che ha impedito l'avvio del server IPC.", + "baseDirLimitation": "È presente una limitazione basedir: questo può impattare negativamente sulle performance e causare vari problemi, si prega di disabilitare le limitazioni basedir se possibile!" +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/pl.json b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/pl.json new file mode 100644 index 0000000..aafea4b --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/pl.json @@ -0,0 +1,4 @@ +{ + "noReportPeers": "Ostrzeżenie: nie ustawiono żadnych elementów równorzędnych raportu, dodaj następującą metodę do programu obsługi zdarzeń", + "baseDirLimitation": "Skonfigurowane jest ograniczenie katalogu bazowego: może to wpłynąć na wydajność i spowodować pewne problemy, wyłącz je, jeśli to możliwe!" +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/pt.json b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/pt.json new file mode 100644 index 0000000..58b8bff --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/pt.json @@ -0,0 +1,133 @@ +{ + "go": "Pronto", + "loginChoosePromptWeb": "Deseja fazer login como Usuário ou como Bot?", + "noReportPeers": "Aviso: nenhum peers de relatório está definido, adicione o seguinte método ao seu event handler", + "manualAdminActionRequired": "!!!!!!!!! AÇÃO MANUAL DO ADMINISTRADOR DO SISTEMA NECESSÁRIA !!!!!!!!", + "mmapErrorPart2": "Para corrigir, execute o seguinte comando como root: %s", + "botAlreadyRunning": "O bot já está em execução!", + "extensionRequired": "MadelineProto requer a extensão %s para ser executada. %s", + "extensionRequiredInstallWithApt": "Tente executar sudo apt-get install %s.", + "extensionRequiredInstallWithCustomInstructions": "Siga as instruções em %s para instalá-lo.", + "apiChoosePrompt": "Sua escolha (m/a): ", + "apiManualInstructions0": "Faça login em https://my.telegram.org", + "apiManualInstructions1": "Ir para API development tools", + "apiManualInstructions2": "Clique em criar aplicativo", + "apiAppInstructionsManual0": "nome do seu aplicativo, pode ser qualquer coisa", + "apiAppInstructionsManual1": "o nome abreviado do seu aplicativo, alfanumérico, de 5 a 32 caracteres", + "apiAppInstructionsManual2": "URL do seu aplicativo/site ou t.me/yourusername", + "apiAppInstructionsManual4": "Descreva seu aplicativo aqui", + "apiManualWeb": "Insira seu API ID e API hash", + "apiManualPrompt0": "Insira seu API ID: ", + "apiManualPrompt1": "Insira seu API hash: ", + "loginWebQr1": "Abra o Telegram no seu telefone", + "mmapErrorPart3": "Para manter a alteração após reinicializações: %s", + "translate_madelineproto_web": "MadelineProto pode ser traduzido para o seu idioma (progresso atual da tradução: %d%%), clique aqui para contribuir com a tradução!", + "loginWebQr": "Você também pode fazer login automaticamente abrindo o Telegram no seu telefone, acessando Configurações > Dispositivos > Conectar Desktop e digitalizando o seguinte código QR:", + "extensionRecommended": "Aviso: a extensão %s não está instalada, instale-a para acelerar o MadelineProto!", + "baseDirLimitation": "Uma limitação baseada está configurada: isso pode afetar o desempenho e causar alguns problemas, desative-o se possível!", + "mmapErrorPart1": "O número máximo de regiões mapeadas de memória (mmap) foi atingido (%s): aumente a configuração do kernel vm.max_map_count para 262144 a corrigir.", + "apiChooseManualAutoTip": "Observe que você também pode fornecer o ID/hash da API diretamente no código usando as configurações: %s", + "apiChooseManualAutoTipWeb": "Observe que você também pode fornecer o ID/hash da API diretamente no código usando as configurações.", + "mmapErrorPart4": "No Windows e no WSL, aumentar o tamanho do arquivo de paginação pode ajudar; mude para o Linux nativo se o problema persistir.", + "apiAppInstructionsManual3": "qualquer coisa", + "apiAutoWeb": "Insira um número de telefone que já esteja registrado no Telegram para obter o ID da API", + "apiAutoPrompt0": "Digite um número de telefone que já esteja registrado no Telegram: ", + "apiAutoPrompt1": "Digite o código de verificação recebido pelo Telegram: ", + "apiAppWeb": "Insira as informações da API", + "apiAppInstructionsAuto0": "Digite o nome do app, pode ser qualquer coisa: ", + "loginOptionUser": "Usuário", + "signupFirstNameWeb": "Primeiro nome", + "apiAppInstructionsAuto1": "Digite o nome do seu aplicativo, alfanumérico, de 5 a 32 caracteres: ", + "apiAppInstructionsAuto2": "Digite a URL do seu aplicativo/site ou t.me/seuusuário: ", + "apiAppInstructionsAuto3": "Digite a plataforma do aplicativo: ", + "apiAppInstructionsAuto4": "Descreva seu aplicativo: ", + "apiAppInstructionsAutoTypeOther": "Outro (especifique na descrição)", + "apiParamsError": "Você não forneceu todos os parâmetros necessários!", + "apiError": "ERRO: %s. Tente novamente.", + "loginWebQr2": "Vá para Configurações > Dispositivos > Conectar Desktop", + "loginWebQr3": "Aponte seu telefone para tela para confirmar o login", + "loginOptionBot": "Bot", + "loginBot": "Digite o token do seu bot: ", + "loginUser": "Digite seu número de telefone: ", + "loginQrCodeExpired": "O QR code expirou, gerando um novo...", + "loginUserCode": "Digite o código: ", + "loginUserPass": "Digite sua senha (dica %s): ", + "loginUserPassWeb": "Digite sua senha: ", + "loginUserPassHint": "Dica: %s", + "signupFirstName": "Digite seu primeiro nome: ", + "signupLastName": "Digite seu sobrenome (pode ficar em branco): ", + "signupWeb": "Faça seu cadastro, por favor", + "signupLastNameWeb": "Sobrenome", + "loginNoCode": "Você não forneceu o código do telefone!", + "loginNoPass": "Você não forneceu a senha!", + "loginBotTokenWeb": "token do Bot", + "loginUserPhoneWeb": "Número telefone", + "loginUserPhoneCodeWeb": "Código", + "done": "Concluído!", + "nearest_dc": "Estamos em %s, o DC mais próximo é %d.", + "api_not_set": "Você deve fornecer uma chave de API e um ID de API, você pode obter em @ my.telegram.org", + "session_corrupted": "A sessão está corrompida!", + "value_bigger_than_2147483647": "O valor fornecido %s é maior que 2147483647", + "value_smaller_than_2147483648": "O valor fornecido %s é menor que -2147483648", + "value_smaller_than_9223372036854775808": "O valor fornecido %s é menor que -9223372036854775808", + "value_bigger_than_4294967296": "O valor fornecido %s é maior que 4294967296", + "value_smaller_than_0": "O valor fornecido %s é menor que 0", + "loginQr": "Abra o Telegram no seu telefone, vá para Configurações > Dispositivos > Conectar Desktop e escaneie o QR code acima para fazer login automaticamente.", + "loginQrCodeSuccessful": "Login efetuado com sucesso, utilizando QR code!", + "loginManual": "Alternativa, você também pode inserir um token de bot ou número de telefone para fazer login manualmente: ", + "loginNoName": "Você não forneceu o primeiro nome!", + "serialization_ofd": "A serialização está desatualizada, reconstruindo o objeto!", + "value_bigger_than_9223372036854775807": "O valor fornecido %s é maior que 9223372036854775807", + "encode_double_error": "Não foi possível codificar o número decimal corretamente", + "file_not_exist": "Arquivo não existe", + "deserialization_error": "Ocorreu um erro na deserialização", + "rpc_tg_error": "O Telegram retornou um erro RPC: %s (%s), causado por %s:%s%sTL trace:", + "madelineproto_ready": "MadelineProto está pronto!", + "logout_ok": "Desconectado com sucesso!", + "already_loggedIn": "Esta instância do MadelineProto já está conectada!", + "login_ok": "Conectado com sucesso!", + "login_user": "Conectando-se como um usuário normal...", + "login_bot": "Conectando-se como um bot...", + "login_code_sending": "Enviando código...", + "login_code_sent": "Código enviado com sucesso! Assim que receber o código, você deve usar a função completePhoneLogin.", + "login_code_uncalled": "Não estou esperando pelo código! Por favor, chame primeiro o método phoneLogin", + "login_2fa_enabled": "Autenticação de dois fatores ativada, você terá que chamar a função complete2falogin...", + "login_auth_key": "Conectando-se usando a chave de autenticação...", + "not_loggedIn": "Não estou conectado!", + "signing_up": "Cadastrando-se como um usuário normal...", + "signup_ok": "Cadastro realizado com sucesso!", + "2fa_uncalled": "Não estou esperando pela senha! Por favor, chame primeiro os métodos phoneLogin e completePhoneLogin!", + "login_need_signup": "Uma conta não foi criada para este número, você terá que chamar a função completeSignup...", + "signup_uncalled": "Não estou esperando para me cadastrar! Por favor, chame primeiro os métodos phoneLogin e completePhoneLogin!", + "peer_not_in_db": "Este peer não está presente no banco de dados interno de peers", + "call_error_1": "Não foi possível encontrar e aceitar a chamada %s", + "accepting_call": "Aceitando chamada de %s...", + "call_already_accepted": "Chamada %s já aceita", + "call_already_declined": "Chamada %s já recusada", + "call_error_2": "Não foi possível encontrar e confirmar a chamada %s", + "call_confirming": "Confirmando chamada de %s...", + "call_error_3": "Não foi possível encontrar e completar a chamada %s", + "call_completing": "Completando chamada de %s...", + "fingerprint_invalid": "Chave de impressão inválida!", + "call_discarding": "Descartando chamada %s...", + "file_parsing": "Processando %s...", + "src_file_invalid": "Arquivo de origem inválido foi fornecido: ", + "bool_error": "Não foi possível extrair um valor booleano", + "not_numeric": "O valor fornecido não é numérico", + "long_not_16": "O valor fornecido não tem 16 bytes de comprimento", + "long_not_32": "O valor fornecido não tem 32 bytes de comprimento", + "long_not_64": "O valor fornecido não tem 64 bytes de comprimento", + "array_invalid": "Você não forneceu um array válido", + "predicate_not_set": "Predicado (valor sob _) não foi definido!", + "type_extract_error": "Não foi possível extrair o tipo \"%s\", você deve atualizar o MadelineProto!", + "method_not_found": "Não foi possível encontrar o método: ", + "params_missing": "Parâmetro obrigatório ausente", + "sec_peer_not_in_db": "Este peer secreto não está presente no banco de dados interno de peers", + "stream_handle_invalid": "Um identificador de fluxo inválido foi fornecido.", + "length_too_big": "O comprimento é muito grande", + "string_required": "Uma string era esperada!", + "waveform_value": "Um between de waveform deve estar entre 0 e 31!", + "could_not_convert_object": "Não foi possível converter o objeto do tipo %s", + "waveform_must_have_100_values": "Um array de waveform deve ter 100 valores!", + "update_madelineproto": "Você está executando uma versão antiga do MadelineProto, uma atualização é necessária: atualmente rodando %s, mas a versão mais recente com várias correções de bugs e novos recursos é %s!" +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/ru.json b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/ru.json new file mode 100644 index 0000000..9170a90 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/ru.json @@ -0,0 +1,134 @@ +{ + "go": "ОК", + "apiChoosePrompt": "Ваш выбор (m/a): ", + "apiManualInstructions0": "Залогинтесь в https://my.telegram.org", + "apiManualInstructions1": "Нажмите на \"API development tools\"", + "apiManualInstructions2": "Выберите \"create application\"", + "apiAppInstructionsManual0": "Имя вашего приложения, что угодно", + "apiAppInstructionsManual1": "короткое имя вашего приложения, латиница и цифры, 5-32 букв", + "apiAppInstructionsManual2": "Ссылка на сайт важего приложения, или t.me/username", + "apiAppInstructionsManual3": "что угодно", + "apiManualWeb": "Введите ваш API ID и API hash", + "apiManualPrompt0": "Введите ваш API ID: ", + "apiManualPrompt1": "Введите ваш API hash: ", + "apiAutoPrompt0": "Введите номер телефона который уже записан в Telegram: ", + "apiAutoPrompt1": "Введите код проверки, который вы получили в Telegram: ", + "apiAppWeb": "Введите API информацию", + "apiAppInstructionsAuto2": "Введите ссылку на сайт вашего приложения, или t.me/yourusername: ", + "apiAppInstructionsAuto4": "Опишите ваше приложение: ", + "apiAppInstructionsAutoTypeOther": "Другое (указано в описании)", + "apiParamsError": "Вы не заполнили все обязательные параметры!", + "apiChooseManualAutoTip": "Также можно указать API ID/hash сразу в коде используя настройки: %s", + "apiChooseManualAutoTipWeb": "Также можно указать API ID/hash сразу в коде с помощью настроек.", + "apiAppInstructionsManual4": "Опишите ваше приложение сдесь", + "apiAutoWeb": "Введите номер телефона который уже записан в Телеграме чтобы получить API ID", + "apiAppInstructionsAuto0": "Введите имя приложения, может быть что угодно: ", + "apiAppInstructionsAuto1": "Введите короткое имя вашего приложения, латиница и цифры, 5-32 букв: ", + "apiAppInstructionsAuto3": "Введите платформу приложения: ", + "apiError": "ОШИБКА: %s. Попробуйте снова.", + "loginWebQr1": "Откройте Telegram в вашем смартфоне", + "loginWebQr2": "Откройте Настройки > Устройства > Подключить устройство", + "loginUser": "Номер телефона: ", + "loginQr": "Отсканируйте QR код выше чтобы войти автоматически.", + "loginQrCodeSuccessful": "Вход по QR коду прошел успешно!", + "loginUserCode": "Введите код: ", + "loginUserPass": "Введите ваш пароль (подсказка %s): ", + "loginUserPassWeb": "Введите ваш пароль: ", + "loginUserPassHint": "Подсказка: %s", + "signupFirstName": "Введите ваше имя: ", + "loginOptionBot": "Бот", + "loginOptionUser": "Пользователь", + "loginBot": "Введите токен бота: ", + "signupWeb": "Зарегистрируйтесь, пожалуйста", + "signupFirstNameWeb": "Имя", + "signupLastNameWeb": "Фамилия", + "loginNoCode": "Вы не ввели код!", + "loginNoPass": "Вы не ввели пароль!", + "loginNoName": "Вы не ввели имя!", + "loginBotTokenWeb": "Токен бота", + "loginUserPhoneCodeWeb": "Код", + "done": "Готово!", + "nearest_dc": "Вы в %s, ближайший ДЦ: %d.", + "loginQrCodeExpired": "QR код больше не действует, генерируем новый...", + "signupLastName": "Введите вашу фамилию (может быть пустым): ", + "loginUserPhoneWeb": "Номер телефона", + "loginManual": "Вы также можете ввести токен бота или номер телефона чтобы войти вручную: ", + "loginChoosePromptWeb": "Авторизоваться как пользователь или как бот?", + "loginWebQr": "Вы также можете войти, отсканировав QR код:", + "loginWebQr3": "Наведите ваш смартфон на этот экран чтобы подтвердить вход", + "api_not_set": "Необходимо указать свой api ключ, достаньте свой @ my.telegram.org", + "value_smaller_than_2147483648": "Значение %s меньше чем -2147483648", + "value_bigger_than_9223372036854775807": "Значение %s больше чем 9223372036854775807", + "session_corrupted": "Сессия повреждена!", + "value_bigger_than_2147483647": "Значение %s больше чем 2147483647", + "value_smaller_than_9223372036854775808": "Значение %s меньше чем -9223372036854775808", + "serialization_ofd": "Сериализация старая, реконструкция объекта!", + "logout_ok": "Logout!", + "already_loggedIn": "Этот инстанс MadelineProto уже залогинен!", + "login_ok": "Мы залогинены!", + "rpc_tg_error": "Телеграм возвратил RPC ошибку: %s (%s), из-за %s:%s%sTL trace:", + "madelineproto_ready": "MadelineProto готов!", + "mmapErrorPart1": "Превышено максимальное количество маппированных зон памяти (%s, это НЕ потребление памяти, а mmap): пожалуйста увеличьте значение настройки ядра vm.max_map_count до 262144, чтобы исправить проблему.", + "mmapErrorPart2": "Чтобы исправить, необходимо запустить эту команду как root: %s", + "mmapErrorPart3": "Чтобы сохранить настройки даже после перезапуска: %s", + "mmapErrorPart4": "На Windows и WSL, проблема может испариться при увеличении размера page file; пожалуйста перейдите на нативный Linux если это не исправит проблему.", + "extensionRequired": "MadelineProto нуждается в расширении %s. %s", + "extensionRequiredInstallWithApt": "Попробуйте запустить sudo apt-get install %s.", + "extensionRequiredInstallWithCustomInstructions": "Следуйте инструкциям в %s для установки.", + "extensionRecommended": "Внимание: расширение %s не установлено, просьба его установить для ускорения MadelineProto!", + "botAlreadyRunning": "Бот уже запущен!", + "value_bigger_than_4294967296": "Значение %s больше чем 4294967296", + "value_smaller_than_0": "Значение %s меньше нуля", + "encode_double_error": "Невозможно создать double", + "file_not_exist": "Файл не существует", + "deserialization_error": "Произошла ошибка при deserialization", + "noReportPeers": "Внимание: не настроен ни один юзер для сообщения ошибок, пожалуйста добавьте этот метод в Event Handler", + "manualAdminActionRequired": "!!!!!!!!! НЕОБХОДИМЫ РУЧНЫЕ ДЕЙСТВИЯ СИСТЕМНОГО АДМИНИСТРАТОРА !!!!!!!!!", + "login_code_uncalled": "Я не ожидаю код! Пожалуйста сначала вызовите метод phoneLogin", + "login_auth_key": "Вход с помощью ключа авторизации...", + "signing_up": "Вход под нормальным пользователем...", + "baseDirLimitation": "Настройка basedir сконфигурирована: это может повлиять на производительность и вызвать некоторые проблемы, отключите её если это возможно!", + "login_code_sending": "Отправка кода...", + "login_code_sent": "Код успешно отправлен! Как только Вы получите код Вам нужно использовать функцию completePhoneLogin.", + "login_2fa_enabled": "2FA активно, вам необходимо сначала вызвать функцию complete2falogin...", + "not_loggedIn": "Я вошёл в систему!", + "call_error_1": "Не смог найти и принять звонок %s", + "string_required": "Ожидана string!", + "waveform_must_have_100_values": "Массив waveform должен иметь 100 значений!", + "waveform_value": "Значение waveform должно быть между 0 и 31!", + "method_not_found": "Невозможно найти метод: ", + "params_missing": "Не хватает необходимого папаметра", + "sec_peer_not_in_db": "Этого секретного чата нету во внутренней базе", + "length_too_big": "Длина слишком большая", + "login_user": "Вхожу как пользователь...", + "signup_ok": "Запись прошла успешно!", + "accepting_call": "Принимяю звонок от %s...", + "call_already_declined": "Звонок %s уже был отвергнут", + "call_error_3": "Невозможно найти и подтвердить звонок %s", + "call_completing": "Финализирую звонок от %s...", + "fingerprint_invalid": "Невалидный фингерпринт ключа!", + "file_parsing": "Чтение %s...", + "src_file_invalid": "Невалидный файл: ", + "bool_error": "Невозможно считать boolean", + "not_numeric": "Данное значение не цифра", + "long_not_32": "Длинна данного значения не равна 32 байтам", + "array_invalid": "Вы указали невалидный массив", + "predicate_not_set": "Предикат (значение под ключом _) не был указан!", + "login_bot": "Вхожу как бот...", + "login_need_signup": "На этот номер телефона не найдена учётная запись Телеграм...", + "long_not_16": "Длинна данного значения не равна 16 байтам", + "signup_uncalled": "Я не в процессе записи! Пожалуйста, вызовите сначала методы phoneLogin и completePhoneLogin!", + "2fa_uncalled": "Я не жду сейчас пароля! Вызовите сначала методы phoneLogin и completePhoneLogin!", + "call_already_accepted": "Звонок %s уже был принят", + "call_error_2": "Невозможно найти и подтвердить звонок %s", + "call_confirming": "Подтверждаю звонок от %s...", + "translate_madelineproto_cli": "MadelineProto можно локализировать на ваш язык (на данный момент переведено: %d%%), откройте https://weblate.madelineproto.xyz чтобы помочь с переводом!", + "translate_madelineproto_web": "MadelineProto можно локализировать на ваш язык (на данный момент переведено: %d%%), кликните сюда чтобы помочь с переводом!", + "peer_not_in_db": "Этот peer не находится во внутренней базе", + "call_discarding": "Отвергаю звонок %s...", + "stream_handle_invalid": "Использован невалидный стрим.", + "long_not_64": "Длинна данного значения не равна 64 байтам", + "update_madelineproto": "Вы используете старую версию MadelineProto, необходимо обновится: сейчас используется версия %s, но последняя версия со многими поправками и с новым функционалом - %s!", + "type_extract_error": "Невозможно распаковать тип \"%s\", необходимо обновить MadelineProto!", + "could_not_convert_object": "Невозможно сконвертировать объект типа %s" +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/uz.json b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/uz.json new file mode 100644 index 0000000..422150a --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/uz.json @@ -0,0 +1,162 @@ +{ + "apiAppInstructionsManual1": "Ilovangizni qisqacha nomi, harflar va raqamlardan iborat 5-32 belgilar orasida", + "apiAppInstructionsManual2": "Ilova yoki vebsaytingiz manzili, yoki t.me/havola", + "apiAppInstructionsManual3": "istalgan narsa", + "apiAppInstructionsManual4": "Ilovangizni izoh bering", + "apiManualWeb": "API ID va API hash qiymatlaringizni kiriting", + "apiManualPrompt1": "API hash qiymatingizni kiriting ", + "apiAutoPrompt0": "Telegram ro'yhatdan o'tkazilgan telefon raqamingizni kiriting ", + "apiAutoPrompt1": "Telegramdan olgan tasdiqlash kodingizni kiriting ", + "apiAppWeb": "API ma'lumotlarini kiriting", + "loginOptionBot": "Bot", + "loginOptionUser": "Foydalanuvchi", + "loginBot": "Bot tokeningizni kiriting ", + "loginUser": "Telefon raqamingizni kiriting ", + "loginQrCodeSuccessful": "QR kod orqali muvaffaqiyatli kirish amalga oshirildi!", + "loginQrCodeExpired": "QR kod eskirdi, yangisini yaratish...", + "loginUserCode": "Kodni kiriting: ", + "loginUserPass": "Parolingizni kiriting (eslatma %s): ", + "loginUserPassWeb": "Parolingizni kiriting: ", + "loginUserPassHint": "Eslatma: %s", + "signupFirstName": "Ismingizni kiriting: ", + "signupWeb": "Iltimos, ro'yhatdan o'ting", + "signupLastNameWeb": "Familiya", + "loginNoPass": "Parolingizni kiritmadingiz!", + "loginNoName": "Ismingizni kiritmadingiz!", + "loginBotTokenWeb": "Bot tokeni", + "loginUserPhoneWeb": "Telefon raqam", + "loginUserPhoneCodeWeb": "Kod", + "done": "Bajarildi!", + "apiManualInstructions2": "Ilova yaratishga bosing", + "apiAppInstructionsManual0": "sizning ilovangizni nomi, u istalgan ko'rinishda bo'lishi mumkin", + "apiManualPrompt0": "API ID qiymatingizni kiriting ", + "apiAutoWeb": "API ID olish uchun telegramdan oldin ro'yhatdan o'tkazilgan telefon raqamingizni kiriting", + "loginQr": "Telefoningizda Telegram-ni oching, Sozlamalar > Qurilmalar > Ish stoli qurilmasini ulash-ga o‘ting va avtomatik kirish uchun yuqoridagi QR kodni skanerlang.", + "signupLastName": "Familiyangizni kiriting (bo'sh qoldirish mumkin): ", + "signupFirstNameWeb": "Ism", + "loginNoCode": "Telefon raqamingiz kodini kiritmadingiz!", + "value_bigger_than_2147483647": "Taqdim etilgan %s qiymati 2147483647 dan katta", + "value_smaller_than_2147483648": "Taqdim etilgan %s qiymati -2147483648dan kichik", + "value_bigger_than_9223372036854775807": "Taqdim etilgan %s qiymati 9223372036854775807 dan katta", + "value_smaller_than_9223372036854775808": "Taqdim etilgan %s qiymati -9223372036854775808 dan kichik", + "value_bigger_than_4294967296": "Taqdim etilgan %s qiymati 4294967296 dan katta", + "value_smaller_than_0": "Taqdim etilgan %s qiymati 0 dan kichik", + "file_not_exist": "Fayl mavjud emas", + "madelineproto_ready": "MadelineProto tayyor!", + "logout_ok": "Chiqish muvaffaqiyatli amalga oshirildi!", + "login_ok": "Kirish muvaffaqiyatli amalga oshirildi!", + "login_user": "Odatiy foydalanuvchi kabi kirish...", + "login_bot": "Bot ko'rinishida kirish...", + "login_code_sending": "Kod yuborilmoqda...", + "apiAppInstructionsAuto0": "Ilovangiz nomini kiriting: ", + "apiAppInstructionsAuto1": "Ilovani qisqacha nomini kiriting, harflar va raqamlardan iborat 5-32 belgilar orasida ", + "apiAppInstructionsAuto2": "Ilova yoki vebsay manzilini kiriting, yoki t.me/havola ", + "apiAppInstructionsAuto3": "Ilova platformasini kiriting: ", + "apiAppInstructionsAuto4": "Ilovangizni izohlang: ", + "apiAppInstructionsAutoTypeOther": "Boshqa (izohda ko'rsatiladi)", + "apiParamsError": "Siz barcha kerakli parametrlarni taqdim etmadingiz!", + "apiError": "Xatolik: %s. Qayta urinib ko'ring.", + "loginChoosePromptWeb": "Foydalanuvchi sifatida yoki bot sifatida kirmoqchimisiz?", + "loginWebQr": "Shuningdek, siz telefoningizda Telegram’ni ochib, Sozlamalar > Qurilmalar > Ish stoli qurilmasini bog‘lash bo‘limiga o‘tib, quyidagi QR kodni skanerlash orqali ham avtomatik tarzda kirishingiz mumkin:", + "go": "Boshlash", + "apiChooseManualAutoTip": "Shuni esda tutingki, siz API ID/hashni to'g'ridan-to'g'ri kodda sozlamalardan foydalanib ko'rsatishingiz mumkin: %s", + "apiChooseManualAutoTipWeb": "Shuni esda tutingki, siz API identifikatorini/xesh-ni to'g'ridan-to'g'ri kodda sozlamalardan foydalanib ko'rsatishingiz mumkin.", + "apiChoosePrompt": "Sizning tanlovingiz (q/a): ", + "apiManualInstructions0": "https://my.telegram.org ga kirish", + "apiManualInstructions1": "API yaratish asboblariga o'tish", + "loginWebQr1": "Telegram dasturini telefoningizda oching", + "loginWebQr2": "Sozlamalar > Uskunalar > Yangi qurilma ulashga o'ting", + "loginWebQr3": "Kirishni tasdiqlash uchun telefoningizni ushbu ekranga yo'naltiring", + "loginManual": "Shu bilan bir qatorda, qo'lda kirish uchun bot tokenini yoki telefon raqamini ham kiritishingiz mumkin: ", + "nearest_dc": "Biz %s ichidamiz, eng yaqin shahar %d.", + "serialization_ofd": "Seriyalash eskirgan, ob'ekt qayta tiklanmoqda!", + "api_not_set": "Siz api kaliti va api ID taqdim etishingiz kerak, o'zingiz @ my.telegram.org manzilidan oling", + "session_corrupted": "Sessiya buzilgan!", + "encode_double_error": "Doubleni toʻgʻri kodlab boʻlmadi", + "deserialization_error": "Seriyadan chiqarishda xatolik yuz berdi", + "rpc_tg_error": "Telegram RPC xatosini qaytardi: %s (%s), %s:%s%s TL izidan kelib chiqqan:", + "already_loggedIn": "MadelineProto-ning bu nusxasi allaqachon tizimga kirgan!", + "login_code_sent": "Kod muvaffaqiyatli yuborildi! Kodni olganingizdan so'ng siz to'liq PhoneLogin funksiyasidan foydalanishingiz kerak.", + "login_code_uncalled": "Men kodni kutmayapman! Iltimos, avval phoneLogin funsksiyasini ishga tushuring", + "login_2fa_enabled": "2FA faollashtirilgan, siz complete2falogin funksiyasini chaqirishingiz kerak bo'ladi...", + "login_need_signup": "Bu raqam uchun hisob yaratilmagan, siz completeSignup funksiyasidan foydalanishingiz kerak boʻladi...", + "login_auth_key": "auth keydan foydalanib kirish...", + "not_loggedIn": "Kirish amalga oshirilmagan!", + "signup_uncalled": "Men ro'yxatdan o'tishni kutmayman! Iltimos, birinchi navbatda phoneLogin va completePhoneLogin metodlarini ishga tushuring!", + "signing_up": "Oddiy foydalanuvchi sifatida roʻyxatdan oʻtish...", + "signup_ok": "Muvaffaqiyatli ro'yxatdan o'tildi!", + "2fa_uncalled": "Men parolni kutmayapman! Iltimos, birinchi navbatda phoneLogin va completePhoneLogin metodlarini ishga tushuring!", + "peer_not_in_db": "Bu obyekt ichki ma'lumotlar bazasida mavjud emas", + "call_error_1": "%s qo‘ng‘irog‘ini topib, qabul qilib bo‘lmadi", + "accepting_call": "%s qo‘ng‘irog‘i qabul qilinmoqda...", + "call_already_accepted": "%s chaqiruvi allaqachon qabul qilingan", + "call_already_declined": "%s qo‘ng‘iroqlari allaqachon rad etilgan", + "call_error_2": "%s qo‘ng‘irog‘i topilmadi va tasdiqlanmadi", + "call_confirming": "%sdan qo‘ng‘iroq tasdiqlanmoqda...", + "call_error_3": "%s qo‘ng‘irog‘ini topib bo‘lmadi", + "call_completing": "%s qo‘ng‘irog‘i tugallanmoqda...", + "fingerprint_invalid": "Barmoq izi yaroqsiz!", + "call_discarding": "%s qo‘ng‘irog‘i bekor qilinmoqda...", + "file_parsing": "%s tahlil qilinmoqda...", + "src_file_invalid": "Yaroqsiz manba fayl taqdim etildi: ", + "bool_error": "Mantiqiy natija chiqarib bo'lmadi", + "not_numeric": "Kiritilgan qiymat raqamlar emas", + "long_not_16": "Berilgan qiymat 16 bayt emas", + "long_not_32": "Berilgan qiymat 32 bayt emas", + "long_not_64": "Berilgan qiymat 64 bayt emas", + "array_invalid": "Siz toʻgʻri massiv taqdim qilmadingiz", + "predicate_not_set": "Predikat (_ ostidagi qiymat) belgilanmagan!", + "type_extract_error": "“%s” turini chiqarib bo‘lmadi, siz MadelineProtoni yangilashingiz kerak!", + "method_not_found": "Metodni topib bo'lmadi: ", + "params_missing": "Talab etiladigan parametr kiritilmagan", + "sec_peer_not_in_db": "Ushbu maxfiy obyekt ichki obyektlar bazasida mavjud emas", + "stream_handle_invalid": "Yaroqsiz oqim tutqichi taqdim etildi.", + "length_too_big": "Uzunlik juda katta", + "type_extract_error_id": "Turni ajratib bo‘lmadi: %s identifikatori %s, siz MadelineProtoni yangilashingiz kerak!", + "constructor_not_found": "Ushbu tur uchun konstruktor topilmadi: ", + "botapi_conversion_error": "%s bot API obyektiga aylantirib bo‘lmadi", + "non_text_conversion": "Matnli boʻlmagan xabarlarni oʻzgartirib boʻlmaydi!", + "file_type_invalid": "Yaroqsiz fayl turi aniqlandi (%s)", + "secret_chat_skipping": "Menda %s maxfiy chati maʼlumotlar bazasida yoʻq, xabar oʻtkazib yuborilmoqda...", + "botAlreadyRunning": "Bot allaqachon ishlayapti!", + "mmapErrorPart2": "Tuzatish uchun quyidagi buyruqni root sifatida ishga tushiring: %s", + "mmapErrorPart3": "Qayta yuklashda oʻzgarishlarni davom ettirish uchun: %s", + "extensionRecommended": "Ogohlantirish: %s kengaytmasi oʻrnatilmagan, MadelineProto tezligini oshirish uchun uni oʻrnating!", + "do_not_delete_MadelineProto.log": "MadelineProto.log fayli hech qachon o'chirilmasligi kerak, o'rniga sozlamalarda maxsus maksimal o'lchamni o'rnating!", + "string_required": "Bir qator kutilgan edi!", + "waveform_must_have_100_values": "To'lqin shakli qatori 100 ta qiymatga ega bo'lishi kerak!", + "waveform_value": "To'lqin shakli qiymati 0 dan 31 gacha bo'lishi kerak!", + "could_not_convert_object": "%s turdagi obyektni aylantirib bo‘lmadi", + "must_have_declare_types": "ishlash sabablariga ko'ra, voqea ishlov beruvchi faylining birinchi bayonoti \"declare(strict_types=1);\" bo'lishi kerak", + "do_not_use_blocking_function": "samaradorlik sabablariga ko‘ra, hodisa ishlov beruvchilari %s asinxron bo‘lmagan blokirovka funksiyasidan foydalanmasligi mumkin, o‘rniga %s dan foydalaning", + "do_not_use_deprecated_function": "%s funksiyasi eskirgan, o‘rniga %s dan foydalaning", + "do_not_use_blocking_class": "ishlash sabablariga ko'ra, ishlov beruvchilar asinxron bo'lmagan bloklash sinfi %s dan foydalanmasligi mumkin, o'rniga %s dan foydalaning", + "do_not_use_non_root_require_in_event_handler": "ishlash sabablariga ko'ra, voqea ishlov beruvchisi sinfiga talab yoki qo'shmaslik kerak, faqat ildiz darajasidagi talablarga ruxsat beriladi.", + "static_analysis_minor": "%s: %s ni statik tahlil qilishda kichik muammoga duch keldi", + "static_analysis_severe": "%s: %s ni statik tahlil qilishda jiddiy muammoga duch keldi", + "plugins_must_have_exactly_one_class": "plagin aynan bitta sinfni belgilashi kerak! Bir nechta sinflarni, interfeyslarni yoki xususiyatlarni aniqlash uchun alohida fayllar yarating, ular MadelineProto tomonidan avtomatik ravishda yuklanadi.", + "translate_madelineproto_web": "MadelineProto oʻz tilingizga tarjima qilinishi mumkin (hozirgi tarjima jarayoni: %d%%), tarjimaga hissa qoʻshish uchun bu yerni bosing!", + "noReportPeers": "Ogohlantirish: hech qanday hisobot tengdoshlari o'rnatilmagan, iltimos, voqea ishlov beruvchingizga quyidagi usulni qo'shing", + "manualAdminActionRequired": "!!!!!!!! QO'L QUVVAT TIZIMI ADMIN HARAKATI TALAB QILINADI !!!!!!!!!!!", + "extensionRequired": "MadelineProto ishlashi uchun %s kengaytmasi talab qilinadi. %s", + "extensionRequiredInstallWithApt": "Sudo apt-get install %s ni ishga tushirib ko‘ring.", + "plugin_path_does_not_exist": "%s plagin yoʻli mavjud emas!", + "dl.php_check_logs_make_sure_session_running": "MadelineProto EventHandler boti yoki MadelineProto IPC serveri oflayn, iltimos jurnallarni tekshiring va ulardan kamida bittasi ishlayotganiga ishonch hosil qiling!", + "baseDirLimitation": "Basedir cheklovi sozlangan: bu ishlashga taʼsir qilishi va baʼzi muammolarni keltirib chiqarishi mumkin, iloji boʻlsa, uni oʻchirib qoʻying!", + "extensionRequiredInstallWithCustomInstructions": "Uni oʻrnatish uchun %s koʻrsatmalariga amal qiling.", + "update_madelineproto": "Siz MadelineProto’ning eski versiyasini ishga tushiryapsiz, yangilash talab qilinadi: hozirda %s ishlayapti, lekin bir nechta xatoliklar tuzatilgan va yangi funksiyalarga ega so‘nggi versiya %s!", + "do_not_use_yield": "MadelineProto 8 asinx funksiyalarida yield dan foydalanishni talab qilmaydi yoki qo‘llab-quvvatlamaydi, avval asinxron funksiya chaqiruvlari uchun ishlatilgan barcha yield kalit so‘zlarini olib tashlashingiz kerak", + "recommend_not_use_filesystem_function": "%s funksiyasidan foydalanish tavsiya etilmaydi, chunki yangilanishni qayta ishlash jarayonida fayl tizimiga kirish botni sekinlashtiradi, botni sekinlashtirmaydigan maʼlumotlarni saqlashning muqobil usullari roʻyxatini https://docs.madelineproto.xyz/docs/UPDATES.html#avoiding-the-use-of-filesystem-functions sahifasiga oʻting!", + "plugins_do_not_use_require": "ishlash sabablariga ko'ra, plaginlar faqat PSR-4 avtomatik yuklagichini ishga tushirish orqali plaginlar jildida mavjud bo'lgan boshqa fayllarni avtomatik ravishda kiritishi yoki talab qilishi mumkin (ularni qo'lda talab qilish orqali emas).", + "could_not_connect_to_MadelineProto": "MadelineProto-ga ulanib bo'lmadi, iltimos, proc_open-ni yoqing va open_basedir cheklovlarini olib tashlang yoki tuzatish uchun veb-server yo'lini qayta yozishni o'chirib qo'ying! Agar siz buni allaqachon qilgan bo'lsangiz, PHP ning CLI versiyasi veb-versiyasi bilan bir xil ekanligiga ishonch hosil qiling (xuddi shu versiya, kengaytmalar va boshqalar) va IPC serverini ishga tushirishga to'sqinlik qilgan xato haqida ko'proq ma'lumot olish uchun MadelineProto.log faylini tekshiring.", + "invalid_dl.php_session": "%s yuklab olish skripti noto‘g‘ri, chunki uning seans identifikatori boshqacha (kutilgan %s, %s oldi)", + "dl.php_powered_by_madelineproto": "MadelineProto tomonidan quvvatlangan Telegram fayl yuklab olish serveri (4 GB gacha)!
Batafsil ma'lumot olish uchun 已在电报上注册的电话号码以获取 API ID", + "apiAutoPrompt0": "输入已经在 Telegram 注册的电话号码: ", + "apiAppWeb": "输入 API 信息", + "apiAppInstructionsAuto0": "输入应用程序的名称,可以是任何内容: ", + "apiAppInstructionsAuto1": "输入应用程序的简称,字母数字,5-32个字符: ", + "apiAppInstructionsAuto3": "输入应用纲领: ", + "apiAppInstructionsAuto4": "描述你的应用: ", + "apiAppInstructionsAutoTypeOther": "其他(在描述中指定)", + "apiParamsError": "您没有提供所有必需的参数!", + "apiError": "错误:%s. 请重试。", + "loginChoosePromptWeb": "您想以用户身份还是机器人身份登录?", + "loginWebQr1": "在手机上打开 Telegram", + "loginWebQr2": "前往“设置”>“设备”>“链接桌面设备”", + "loginWebQr3": "将你的手机对准此屏幕以确认登录", + "loginOptionBot": "机器人", + "loginOptionUser": "用户", + "loginBot": "输入您的机器人令牌: ", + "loginUser": "输入你的电话号码: ", + "loginQrCodeSuccessful": "二维码登录成功!", + "loginQrCodeExpired": "QR 码已过期,正在生成新的 QR 码...", + "loginManual": "或者,您也可以输入机器人令牌或电话号码手动登录: ", + "loginUserCode": "输入验证码: ", + "loginUserPassWeb": "输入您的密码: ", + "loginUserPassHint": "提示:%s", + "signupFirstName": "输入您的名字: ", + "go": "去", + "apiChooseManualAutoTip": "请注意,您也可以使用以下设置直接在代码中提供 API ID/hash:%s", + "apiChooseManualAutoTipWeb": "请注意,您还可以使用设置直接在代码中提供 API ID/hash。", + "apiChoosePrompt": "您的选择 (m/a): ", + "apiManualInstructions0": "登录 https://my.telegram.org", + "apiManualInstructions1": "前往API 开发工具", + "apiManualInstructions2": "点击创建应用程序", + "apiAppInstructionsManual1": "您的应用的简称,字母数字,5-32 个字符", + "apiAppInstructionsManual2": "你的应用/网站的 URL,或者 t.me/yourusername", + "apiAppInstructionsManual3": "任何事", + "apiAppInstructionsManual4": "在此描述您的应用", + "signupLastNameWeb": "姓氏", + "loginNoPass": "您没有提供密码!", + "loginNoName": "您没有提供名字!", + "loginBotTokenWeb": "机器人令牌", + "loginUserPhoneWeb": "电话号码", + "loginUserPhoneCodeWeb": "验证码", + "done": "完成!", + "serialization_ofd": "序列化已过时,正在重建对象!", + "api_not_set": "您必须提供一个 api key 和一个 api id,请获取您自己的 @ my.telegram.org", + "session_corrupted": "会话已损坏!", + "value_smaller_than_2147483648": "提供的值 %s 小于 -2147483648", + "value_bigger_than_9223372036854775807": "提供的值 %s 大于 9223372036854775807", + "value_smaller_than_9223372036854775808": "提供的值 %s 小于 -9223372036854775808", + "value_bigger_than_4294967296": "提供的值 %s 大于 4294967296", + "value_smaller_than_0": "提供的值 %s 小于 0", + "file_not_exist": "文件不存在", + "deserialization_error": "反序列化时发生错误", + "rpc_tg_error": "Telegram 返回了 RPC 错误:%s(%s),由 %s:%s%sTL 跟踪导致:", + "madelineproto_ready": "MadelineProto 已准备好!", + "logout_ok": "退出成功!", + "login_ok": "登录成功!", + "login_user": "以普通用户身份登录...", + "peer_not_in_db": "内部对等数据库中不存在此对等点", + "call_error_1": "无法找到并接受呼叫 %s", + "accepting_call": "正在接听来自 %s 的电话...", + "call_already_accepted": "呼叫 %s 已被接受", + "login_bot": "以机器人身份登录...", + "login_code_sending": "正在发送代码...", + "login_code_sent": "代码发送成功!收到代码后,您应该使用 completePhoneLogin 函数。", + "login_2fa_enabled": "启用 2FA 后,您将必须调用 complete2falogin 函数...", + "login_need_signup": "尚未为此号码创建帐户,您必须调用 completeSignup 函数...", + "login_auth_key": "使用身份验证密钥登录...", + "not_loggedIn": "我还没有登录!", + "signing_up": "正在注册为普通用户...", + "signup_ok": "报名成功!", + "call_already_declined": "已拒绝来电 %s", + "call_error_2": "无法找到并确认呼叫 %s", + "call_error_3": "无法找到并完成呼叫 %s", + "fingerprint_invalid": "密钥指纹无效!", + "call_discarding": "正在丢弃呼叫 %s...", + "file_parsing": "正在解析 %s...", + "src_file_invalid": "提供的源文件无效: ", + "bool_error": "无法提取布尔值", + "not_numeric": "给定值不是数字", + "long_not_32": "给定值的长度不是 32 个字节", + "long_not_64": "给定值的长度不是 64 个字节", + "array_invalid": "您没有提供有效的数组", + "predicate_not_set": "谓词(_ 下的值)未设置!", + "type_extract_error": "无法提取类型“%s”,您应该更新 MadelineProto!", + "method_not_found": "找不到方法: ", + "params_missing": "缺少必需参数", + "sec_peer_not_in_db": "内部对等数据库中不存在此秘密对等体", + "stream_handle_invalid": "提供了无效的流句柄。", + "length_too_big": "长度太大", + "string_required": "期望的是字符串!", + "waveform_must_have_100_values": "波形数组必须有 100 个值!", + "waveform_value": "波形值必须介于0至31之间!", + "type_extract_error_id": "无法提取类型:%s,ID 为 %s,您应该更新 MadelineProto!", + "constructor_not_found": "未找到该类型的构造函数: ", + "botapi_conversion_error": "无法将 %s 转换为机器人 API 对象", + "file_type_invalid": "检测到无效的文件类型 (%s)", + "static_analysis_minor": "对 %s 进行静态分析时遇到一个小问题:%s", + "static_analysis_severe": "对 %s 进行静态分析时遇到严重问题:%s", + "must_have_declare_types": "出于性能原因,事件处理程序文件的第一个语句必须是“declare(strict_types=1);”", + "do_not_use_blocking_function": "出于性能原因,事件处理程序可能不会使用非异步阻塞函数 %s,请改用 %s", + "do_not_use_blocking_class": "出于性能原因,处理程序可能不会使用非异步阻塞类 %s,请改用 %s", + "do_not_use_deprecated_function": "%s 函数已弃用,请使用 %s 代替", + "do_not_use_non_root_require_in_event_handler": "出于性能原因,您不能在事件处理程序类中使用 require 或 include,只允许使用根级需要。", + "do_not_use_yield": "MadelineProto 8 不要求或支持在异步函数中使用 Yield,您必须删除以前用于异步函数调用的所有 Yield 关键字", + "baseDirLimitation": "配置了 basedir 限制:这可能会影响性能并导致一些问题,请尽可能禁用它!", + "manualAdminActionRequired": "!!!!!!!!! 需要系统管理员手动操作 !!!!!!!!!", + "mmapErrorPart4": "在 Windows 和 WSL 上,增加页面文件的大小可能会有所帮助;如果问题仍然存在,请切换到原生 Linux。", + "apiManualWeb": "输入您的 API ID 和 API hash", + "apiManualPrompt1": "输入您的 API hash: ", + "apiAutoPrompt1": "输入您在 Telegram 中收到的验证码: ", + "apiAppInstructionsAuto2": "输入应用程序/网站的 URL,或 t.me/yourusername: ", + "loginWebQr": "您也可以通过扫描以下二维码自动登录:", + "loginQr": "扫描以上二维码即可自动登录。", + "loginUserPass": "输入您的密码(提示 %s): ", + "signupLastName": "输入您的姓氏(可以为空): ", + "signupWeb": "请注册", + "signupFirstNameWeb": "名字", + "plugins_do_not_use_require": "出于性能原因,插件只能通过触发 PSR-4 自动加载器来自动包含或需要插件文件夹中的其他文件(而不是通过手动 require() 它们)。", + "cli_need_dl.php_link": "通过 CLI 使用 getDownloadLink 时,请指定下载脚本 URL!", + "invalid_dl.php_session": "%s 不是有效的下载脚本,因为其会话 ID 不同(预期为 %s,实际为 %s)", + "need_dl.php": "无法生成默认下载脚本(%s),请创建一个包含以下内容的 dl.php 文件:%s 并将其 URL 传递给 getDownloadLink 的第二个参数", + "dl.php_check_logs_make_sure_session_running": "相关的 MadelineProto EventHandler 机器人或 MadelineProto IPC 服务器处于离线状态,请检查日志并确保其中至少有一个正在运行!", + "plugin_path_does_not_exist": "插件路径 %s 不存在!", + "windows_warning": "对于 Windows 用户:如果失败,请切换到 Linux。您还可以尝试修改防火墙设置以允许所有 PHP 进程创建套接字(切换到 Linux 更容易,在 Linux 上 MadelineProto 开箱即用,无需进行任何更改)", + "translate_madelineproto_web": "MadelineProto 可以翻译成您的语言(当前翻译进度:%d%%),点击此处为翻译做出贡献!", + "translate_madelineproto_cli": "MadelineProto 可以翻译成您的语言(当前翻译进度:%d%%),请访问 https://weblate.madelineproto.xyz 为翻译做出贡献!", + "loginNoCode": "您没有提供电话代码!", + "2fa_uncalled": "我不等你输入密码!请先调用 phoneLogin 和 completePhoneLogin 方法!", + "account_banned": "!!!!!!! 警告 !!!!!!!\nTelegram 的防洪系统已暂停此帐户。\n要继续,需要手动验证。\n发送电子邮件至 recovery@telegram.org,要求解禁电话号码 %s,并简要描述您将如何处理此电话号码。\n然后重新登录。\n如果您有意删除此帐户,请忽略此消息。", + "could_not_connect_to_MadelineProto": "无法连接到 MadelineProto,请启用 proc_open 并删除 open_basedir 限制或禁用 webserver 路径重写以进行修复!如果您已经这样做了,请确保 PHP 的 CLI 版本与 web 版本完全相同(相同的版本、扩展等),并查看 MadelineProto.log 文件以获取有关阻止 IPC 服务器启动的错误的更多信息。", + "nearest_dc": "我们在 %s,最近的 DC 是 %d。", + "value_bigger_than_2147483647": "提供的值 %s 大于 2147483647", + "encode_double_error": "无法正确编码双重", + "already_loggedIn": "MadelineProto 的这个实例已经登录!", + "extensionRecommended": "警告:未安装 %s 扩展,请安装它以加快 MadelineProto 的速度!", + "apiAppInstructionsManual0": "你的应用名称,可以是任意名称", + "login_code_uncalled": "我不等代码了!请先调用 phoneLogin 方法", + "call_confirming": "确认来自 %s 的呼叫...", + "call_completing": "正在完成来自 %s 的呼叫...", + "long_not_16": "给定值的长度不是 16 个字节", + "could_not_convert_object": "无法转换 %s 类型的对象", + "non_text_conversion": "尚无法转换非文本信息!", + "secret_chat_skipping": "我的数据库中没有秘密聊天 %s,跳过消息...", + "do_not_delete_MadelineProto.log": "绝不能删除 MadelineProto.log 文件,请在设置中设置自定义最大大小!", + "do_not_remove_MadelineProto.log_phar": "请不要删除 madeline.phar 或 madeline.php,否则 MadelineProto 将崩溃。如果您对 MadelineProto 有任何问题,请报告给 https://github.com/danog/MadelineProto 或 https://t.me/pwrtelegramgroup", + "recommend_not_use_filesystem_function": "不建议使用 %s 函数,因为在更新处理期间访问文件系统会减慢您的机器人速度,请参阅 https://docs.madelineproto.xyz/docs/UPDATES.html#avoiding-the-use-of-filesystem-functions 以获取不会减慢您的机器人速度的替代数据存储方法列表!", + "signup_uncalled": "我不等着注册!请先调用 phoneLogin 和 completePhoneLogin 方法!", + "update_madelineproto": "您正在运行旧版本的 MadelineProto,需要更新:当前运行 %s,但最新版本具有多项错误修复和新功能是 %s!", + "plugins_must_have_exactly_one_class": "一个插件必须定义一个类!要定义多个类、接口或特征,请创建单独的文件,它们将由 MadelineProto 自动加载。", + "dl.php_powered_by_madelineproto": "Telegram 文件下载服务器(最高 4GB),由 MadelineProto 提供支持!
单击此处了解有关如何设置您自己的 Telegram 文件下载服务器的更多信息!" +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/README.md b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/README.md new file mode 100644 index 0000000..c796923 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/README.md @@ -0,0 +1,4 @@ +# Schemas + +Repo for [MadelineProto](https://docs.madelineproto.xyz) TL schemas. +Just cleaning up the repo, splitting the components. diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_mtproto_v1.tl b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_mtproto_v1.tl new file mode 100644 index 0000000..291c240 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_mtproto_v1.tl @@ -0,0 +1,83 @@ +resPQ#05162463 nonce:int128 server_nonce:int128 pq:string server_public_key_fingerprints:Vector = ResPQ; + +vector {t:Type} # [ t ] = Vector t; + +p_q_inner_data_dc#a9f55f95 pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 dc:int = P_Q_inner_data; +p_q_inner_data_temp_dc#56fddf88 pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 dc:int expires_in:int = P_Q_inner_data; + +server_DH_params_fail#79cb045d nonce:int128 server_nonce:int128 new_nonce_hash:int128 = Server_DH_Params; +server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params; + +server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data; + +client_DH_inner_data#6643b654 nonce:int128 server_nonce:int128 retry_id:long g_b:string = Client_DH_Inner_Data; + +dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer; +dh_gen_retry#46dc1fb9 nonce:int128 server_nonce:int128 new_nonce_hash2:int128 = Set_client_DH_params_answer; +dh_gen_fail#a69dae02 nonce:int128 server_nonce:int128 new_nonce_hash3:int128 = Set_client_DH_params_answer; + +bind_auth_key_inner#75a3f765 nonce:long temp_auth_key_id:long perm_auth_key_id:long temp_session_id:long expires_at:int = BindAuthKeyInner; + +rpc_result#f35c6d01 req_msg_id:long result:Object = RpcResult; +rpc_error#2144ca19 error_code:int error_message:string = RpcError; + +rpc_answer_unknown#5e2ad36e = RpcDropAnswer; +rpc_answer_dropped_running#cd78e586 = RpcDropAnswer; +rpc_answer_dropped#a43ad8b7 msg_id:long seq_no:int bytes:int = RpcDropAnswer; + +future_salt#0949d9dc valid_since:int valid_until:int salt:long = FutureSalt; +future_salts#ae500895 req_msg_id:long now:int salts:vector = FutureSalts; + +pong#347773c5 msg_id:long ping_id:long = Pong; + +destroy_session_ok#e22045fc session_id:long = DestroySessionRes; +destroy_session_none#62d350c9 session_id:long = DestroySessionRes; + +new_session_created#9ec20908 first_msg_id:long unique_id:long server_salt:long = NewSession; + +msg_container#73f1f8dc messages:vector<%Message> = MessageContainer; +message msg_id:long seqno:int bytes:int body:Object = Message; +msg_copy#e06046b2 orig_message:Message = MessageCopy; + +gzip_packed#3072cfa1 packed_data:bytes = Object; + +msgs_ack#62d6b459 msg_ids:Vector = MsgsAck; + +bad_msg_notification#a7eff811 bad_msg_id:long bad_msg_seqno:int error_code:int = BadMsgNotification; +bad_server_salt#edab447b bad_msg_id:long bad_msg_seqno:int error_code:int new_server_salt:long = BadMsgNotification; + +msg_resend_ans_req#8610baeb msg_ids:Vector = MsgResendReq; +msg_resend_req#7d861a08 msg_ids:Vector = MsgResendReq; +msgs_state_req#da69fb52 msg_ids:Vector = MsgsStateReq; +msgs_state_info#04deb57d req_msg_id:long info:string = MsgsStateInfo; +msgs_all_info#8cc0d131 msg_ids:Vector info:string = MsgsAllInfo; +msg_detailed_info#276d3ec6 msg_id:long answer_msg_id:long bytes:int status:int = MsgDetailedInfo; +msg_new_detailed_info#809db6df answer_msg_id:long bytes:int status:int = MsgDetailedInfo; + +rsa_public_key n:string e:string = RSAPublicKey; + +http_wait#9299359f max_delay:int wait_after:int max_wait:int = HttpWait; + +---functions--- + +req_pq_multi#be7e8ef1 nonce:int128 = ResPQ; + +req_pq nonce:int128 = ResPQ; + +req_DH_params#d712e4be nonce:int128 server_nonce:int128 p:string q:string public_key_fingerprint:long encrypted_data:string = Server_DH_Params; + +set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer; + +rpc_drop_answer#58e4a740 req_msg_id:long = RpcDropAnswer; +get_future_salts#b921bd04 num:int = FutureSalts; +ping#7abe77ec ping_id:long = Pong; +ping_delay_disconnect#f3427b8c ping_id:long disconnect_delay:int = Pong; +destroy_session#e7512126 session_id:long = DestroySessionRes; + +//test.useGzipPacked = GzipPacked; +//test.useServerDhInnerData = Server_DH_inner_data; +//test.useNewSessionCreated = NewSession; +//test.useMsgsAck = MsgsAck; +//test.useBadMsgNotification = BadMsgNotification; + +//test.useOther key:rsa_public_key p_q_data:P_Q_inner_data dh_data:client_DH_inner_data = RpcError; diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_secret.tl b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_secret.tl new file mode 100644 index 0000000..364fc11 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_secret.tl @@ -0,0 +1,102 @@ +===8=== +decryptedMessage#1f814f1f random_id:long random_bytes:bytes message:string media:DecryptedMessageMedia = DecryptedMessage; +decryptedMessageService#aa48327d random_id:long random_bytes:bytes action:DecryptedMessageAction = DecryptedMessage; +decryptedMessageMediaEmpty#89f5c4a = DecryptedMessageMedia; +decryptedMessageMediaPhoto#32798a8c thumb:bytes thumb_w:int thumb_h:int w:int h:int size:int key:bytes iv:bytes = DecryptedMessageMedia; +decryptedMessageMediaVideo#4cee6ef3 thumb:bytes thumb_w:int thumb_h:int duration:int w:int h:int size:int key:bytes iv:bytes = DecryptedMessageMedia; +decryptedMessageMediaGeoPoint#35480a59 lat:double long:double = DecryptedMessageMedia; +decryptedMessageMediaContact#588a0a97 phone_number:string first_name:string last_name:string user_id:int = DecryptedMessageMedia; +decryptedMessageActionSetMessageTTL#a1733aec ttl_seconds:int = DecryptedMessageAction; +decryptedMessageMediaDocument#b095434b thumb:bytes thumb_w:int thumb_h:int file_name:string mime_type:string size:int key:bytes iv:bytes = DecryptedMessageMedia; +decryptedMessageMediaAudio#6080758f duration:int size:int key:bytes iv:bytes = DecryptedMessageMedia; +decryptedMessageActionReadMessages#c4f40be random_ids:Vector = DecryptedMessageAction; +decryptedMessageActionDeleteMessages#65614304 random_ids:Vector = DecryptedMessageAction; +decryptedMessageActionScreenshotMessages#8ac1f475 random_ids:Vector = DecryptedMessageAction; +decryptedMessageActionFlushHistory#6719e45c = DecryptedMessageAction; + +===17=== +decryptedMessage#204d3878 random_id:long ttl:int message:string media:DecryptedMessageMedia = DecryptedMessage; +decryptedMessageService#73164160 random_id:long action:DecryptedMessageAction = DecryptedMessage; +decryptedMessageMediaVideo#524a415d thumb:bytes thumb_w:int thumb_h:int duration:int mime_type:string w:int h:int size:int key:bytes iv:bytes = DecryptedMessageMedia; +decryptedMessageMediaAudio#57e0a9cb duration:int mime_type:string size:int key:bytes iv:bytes = DecryptedMessageMedia; +decryptedMessageLayer#1be31789 random_bytes:bytes layer:int in_seq_no:int out_seq_no:int message:DecryptedMessage = DecryptedMessageLayer; +sendMessageTypingAction#16bf744e = SendMessageAction; +sendMessageCancelAction#fd5ec8f5 = SendMessageAction; +sendMessageRecordVideoAction#a187d66f = SendMessageAction; +sendMessageUploadVideoAction#92042ff7 = SendMessageAction; +sendMessageRecordAudioAction#d52f73f7 = SendMessageAction; +sendMessageUploadAudioAction#e6ac8a6f = SendMessageAction; +sendMessageUploadPhotoAction#990a3c1a = SendMessageAction; +sendMessageUploadDocumentAction#8faee98e = SendMessageAction; +sendMessageGeoLocationAction#176f8ba1 = SendMessageAction; +sendMessageChooseContactAction#628cbc6f = SendMessageAction; +decryptedMessageActionResend#511110b0 start_seq_no:int end_seq_no:int = DecryptedMessageAction; +decryptedMessageActionNotifyLayer#f3048883 layer:int = DecryptedMessageAction; +decryptedMessageActionTyping#ccb27641 action:SendMessageAction = DecryptedMessageAction; + +===20=== +decryptedMessageActionRequestKey#f3c9611b exchange_id:long g_a:bytes = DecryptedMessageAction; +decryptedMessageActionAcceptKey#6fe1735b exchange_id:long g_b:bytes key_fingerprint:long = DecryptedMessageAction; +decryptedMessageActionAbortKey#dd05ec6b exchange_id:long = DecryptedMessageAction; +decryptedMessageActionCommitKey#ec2e0b9b exchange_id:long key_fingerprint:long = DecryptedMessageAction; +decryptedMessageActionNoop#a82fdd63 = DecryptedMessageAction; + +===23=== +documentAttributeImageSize#6c37c15c w:int h:int = DocumentAttribute; +documentAttributeAnimated#11b58939 = DocumentAttribute; +documentAttributeSticker#fb0a5727 = DocumentAttribute; +documentAttributeVideo#5910cccb duration:int w:int h:int = DocumentAttribute; +documentAttributeAudio#51448e5 duration:int = DocumentAttribute; +documentAttributeFilename#15590068 file_name:string = DocumentAttribute; +photoSizeEmpty#e17e23c type:string = PhotoSize; +photoSize#77bfb61b type:string location:FileLocation w:int h:int size:int = PhotoSize; +photoCachedSize#e9a734fa type:string location:FileLocation w:int h:int bytes:bytes = PhotoSize; +fileLocationUnavailable#7c596b46 volume_id:long local_id:int secret:long = FileLocation; +fileLocation#53d69076 dc_id:int volume_id:long local_id:int secret:long = FileLocation; +decryptedMessageMediaExternalDocument#fa95b0dd id:long access_hash:long date:int mime_type:string size:int thumb:PhotoSize dc_id:int attributes:Vector = DecryptedMessageMedia; + +===45=== +decryptedMessage#36b091de flags:# random_id:long ttl:int message:string media:flags.9?DecryptedMessageMedia entities:flags.7?Vector via_bot_name:flags.11?string reply_to_random_id:flags.3?long = DecryptedMessage; +decryptedMessageMediaPhoto#f1fa8d78 thumb:bytes thumb_w:int thumb_h:int w:int h:int size:int key:bytes iv:bytes caption:string = DecryptedMessageMedia; +decryptedMessageMediaVideo#970c8c0e thumb:bytes thumb_w:int thumb_h:int duration:int mime_type:string w:int h:int size:int key:bytes iv:bytes caption:string = DecryptedMessageMedia; +decryptedMessageMediaDocument#7afe8ae2 thumb:bytes thumb_w:int thumb_h:int mime_type:string size:int key:bytes iv:bytes attributes:Vector caption:string = DecryptedMessageMedia; +documentAttributeSticker#3a556302 alt:string stickerset:InputStickerSet = DocumentAttribute; +documentAttributeAudio#ded218e0 duration:int title:string performer:string = DocumentAttribute; +messageEntityUnknown#bb92ba95 offset:int length:int = MessageEntity; +messageEntityMention#fa04579d offset:int length:int = MessageEntity; +messageEntityHashtag#6f635b0d offset:int length:int = MessageEntity; +messageEntityBotCommand#6cef8ac7 offset:int length:int = MessageEntity; +messageEntityUrl#6ed02538 offset:int length:int = MessageEntity; +messageEntityEmail#64e475c2 offset:int length:int = MessageEntity; +messageEntityBold#bd610bc9 offset:int length:int = MessageEntity; +messageEntityItalic#826f8b60 offset:int length:int = MessageEntity; +messageEntityCode#28a20571 offset:int length:int = MessageEntity; +messageEntityPre#73924be0 offset:int length:int language:string = MessageEntity; +messageEntityTextUrl#76a6d327 offset:int length:int url:string = MessageEntity; +inputStickerSetShortName#861cc8a0 short_name:string = InputStickerSet; +inputStickerSetEmpty#ffb62b95 = InputStickerSet; +decryptedMessageMediaVenue#8a0df56f lat:double long:double title:string address:string provider:string venue_id:string = DecryptedMessageMedia; +decryptedMessageMediaWebPage#e50511d8 url:string = DecryptedMessageMedia; + +===46=== +documentAttributeAudio#9852f9c6 flags:# voice:flags.10?true duration:int title:flags.0?string performer:flags.1?string waveform:flags.2?bytes = DocumentAttribute; + +===66=== +documentAttributeVideo#ef02ce6 flags:# round_message:flags.0?true duration:int w:int h:int = DocumentAttribute; +sendMessageRecordRoundAction#88f27fbc = SendMessageAction; +sendMessageUploadRoundAction#bb718624 = SendMessageAction; + +===73=== +decryptedMessage#91cc4674 flags:# no_webpage:flags.1?true silent:flags.5?true random_id:long ttl:int message:string media:flags.9?DecryptedMessageMedia entities:flags.7?Vector via_bot_name:flags.11?string reply_to_random_id:flags.3?long grouped_id:flags.17?long = DecryptedMessage; + +===101=== +messageEntityUnderline#9c4e7e8b offset:int length:int = MessageEntity; +messageEntityStrike#bf0693d4 offset:int length:int = MessageEntity; +messageEntityBlockquote#20df5d0 offset:int length:int = MessageEntity; + +===143=== +decryptedMessageMediaDocument#6abd9782 thumb:bytes thumb_w:int thumb_h:int mime_type:string size:long key:bytes iv:bytes attributes:Vector caption:string = DecryptedMessageMedia; + +===144=== +messageEntitySpoiler#32ca960f offset:int length:int = MessageEntity; +messageEntityCustomEmoji#c8cf05f8 offset:int length:int document_id:long = MessageEntity; diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225.json b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225.json new file mode 100644 index 0000000..be33e4b --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225.json @@ -0,0 +1,46142 @@ +{ + "constructors": [ + { + "id": "-1132882121", + "predicate": "boolFalse", + "params": [], + "type": "Bool" + }, + { + "id": "-1720552011", + "predicate": "boolTrue", + "params": [], + "type": "Bool" + }, + { + "id": "1072550713", + "predicate": "true", + "params": [], + "type": "True" + }, + { + "id": "481674261", + "predicate": "vector", + "params": [], + "type": "Vector t" + }, + { + "id": "-994444869", + "predicate": "error", + "params": [ + { + "name": "code", + "type": "int" + }, + { + "name": "text", + "type": "string" + } + ], + "type": "Error" + }, + { + "id": "1450380236", + "predicate": "null", + "params": [], + "type": "Null" + }, + { + "id": "2134579434", + "predicate": "inputPeerEmpty", + "params": [], + "type": "InputPeer" + }, + { + "id": "2107670217", + "predicate": "inputPeerSelf", + "params": [], + "type": "InputPeer" + }, + { + "id": "900291769", + "predicate": "inputPeerChat", + "params": [ + { + "name": "chat_id", + "type": "long" + } + ], + "type": "InputPeer" + }, + { + "id": "-571955892", + "predicate": "inputPeerUser", + "params": [ + { + "name": "user_id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputPeer" + }, + { + "id": "666680316", + "predicate": "inputPeerChannel", + "params": [ + { + "name": "channel_id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputPeer" + }, + { + "id": "-1468331492", + "predicate": "inputPeerUserFromMessage", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "user_id", + "type": "long" + } + ], + "type": "InputPeer" + }, + { + "id": "-1121318848", + "predicate": "inputPeerChannelFromMessage", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "channel_id", + "type": "long" + } + ], + "type": "InputPeer" + }, + { + "id": "-1182234929", + "predicate": "inputUserEmpty", + "params": [], + "type": "InputUser" + }, + { + "id": "-138301121", + "predicate": "inputUserSelf", + "params": [], + "type": "InputUser" + }, + { + "id": "-233744186", + "predicate": "inputUser", + "params": [ + { + "name": "user_id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputUser" + }, + { + "id": "497305826", + "predicate": "inputUserFromMessage", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "user_id", + "type": "long" + } + ], + "type": "InputUser" + }, + { + "id": "1780335806", + "predicate": "inputPhoneContact", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "client_id", + "type": "long" + }, + { + "name": "phone", + "type": "string" + }, + { + "name": "first_name", + "type": "string" + }, + { + "name": "last_name", + "type": "string" + }, + { + "name": "note", + "type": "flags.0?TextWithEntities" + } + ], + "type": "InputContact" + }, + { + "id": "-181407105", + "predicate": "inputFile", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "parts", + "type": "int" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "md5_checksum", + "type": "string" + } + ], + "type": "InputFile" + }, + { + "id": "-95482955", + "predicate": "inputFileBig", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "parts", + "type": "int" + }, + { + "name": "name", + "type": "string" + } + ], + "type": "InputFile" + }, + { + "id": "1658620744", + "predicate": "inputFileStoryDocument", + "params": [ + { + "name": "id", + "type": "InputDocument" + } + ], + "type": "InputFile" + }, + { + "id": "-1771768449", + "predicate": "inputMediaEmpty", + "params": [], + "type": "InputMedia" + }, + { + "id": "2105767386", + "predicate": "inputMediaUploadedPhoto", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "spoiler", + "type": "flags.2?true" + }, + { + "name": "live_photo", + "type": "flags.3?true" + }, + { + "name": "file", + "type": "InputFile" + }, + { + "name": "stickers", + "type": "flags.0?Vector" + }, + { + "name": "ttl_seconds", + "type": "flags.1?int" + }, + { + "name": "video", + "type": "flags.3?InputDocument" + } + ], + "type": "InputMedia" + }, + { + "id": "-475053004", + "predicate": "inputMediaPhoto", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "spoiler", + "type": "flags.1?true" + }, + { + "name": "live_photo", + "type": "flags.2?true" + }, + { + "name": "id", + "type": "InputPhoto" + }, + { + "name": "ttl_seconds", + "type": "flags.0?int" + }, + { + "name": "video", + "type": "flags.2?InputDocument" + } + ], + "type": "InputMedia" + }, + { + "id": "-104578748", + "predicate": "inputMediaGeoPoint", + "params": [ + { + "name": "geo_point", + "type": "InputGeoPoint" + } + ], + "type": "InputMedia" + }, + { + "id": "-122978821", + "predicate": "inputMediaContact", + "params": [ + { + "name": "phone_number", + "type": "string" + }, + { + "name": "first_name", + "type": "string" + }, + { + "name": "last_name", + "type": "string" + }, + { + "name": "vcard", + "type": "string" + } + ], + "type": "InputMedia" + }, + { + "id": "58495792", + "predicate": "inputMediaUploadedDocument", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "nosound_video", + "type": "flags.3?true" + }, + { + "name": "force_file", + "type": "flags.4?true" + }, + { + "name": "spoiler", + "type": "flags.5?true" + }, + { + "name": "file", + "type": "InputFile" + }, + { + "name": "thumb", + "type": "flags.2?InputFile" + }, + { + "name": "mime_type", + "type": "string" + }, + { + "name": "attributes", + "type": "Vector" + }, + { + "name": "stickers", + "type": "flags.0?Vector" + }, + { + "name": "video_cover", + "type": "flags.6?InputPhoto" + }, + { + "name": "video_timestamp", + "type": "flags.7?int" + }, + { + "name": "ttl_seconds", + "type": "flags.1?int" + } + ], + "type": "InputMedia" + }, + { + "id": "-1468646731", + "predicate": "inputMediaDocument", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "spoiler", + "type": "flags.2?true" + }, + { + "name": "id", + "type": "InputDocument" + }, + { + "name": "video_cover", + "type": "flags.3?InputPhoto" + }, + { + "name": "video_timestamp", + "type": "flags.4?int" + }, + { + "name": "ttl_seconds", + "type": "flags.0?int" + }, + { + "name": "query", + "type": "flags.1?string" + } + ], + "type": "InputMedia" + }, + { + "id": "-1052959727", + "predicate": "inputMediaVenue", + "params": [ + { + "name": "geo_point", + "type": "InputGeoPoint" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "address", + "type": "string" + }, + { + "name": "provider", + "type": "string" + }, + { + "name": "venue_id", + "type": "string" + }, + { + "name": "venue_type", + "type": "string" + } + ], + "type": "InputMedia" + }, + { + "id": "-440664550", + "predicate": "inputMediaPhotoExternal", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "spoiler", + "type": "flags.1?true" + }, + { + "name": "url", + "type": "string" + }, + { + "name": "ttl_seconds", + "type": "flags.0?int" + } + ], + "type": "InputMedia" + }, + { + "id": "2006319353", + "predicate": "inputMediaDocumentExternal", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "spoiler", + "type": "flags.1?true" + }, + { + "name": "url", + "type": "string" + }, + { + "name": "ttl_seconds", + "type": "flags.0?int" + }, + { + "name": "video_cover", + "type": "flags.2?InputPhoto" + }, + { + "name": "video_timestamp", + "type": "flags.3?int" + } + ], + "type": "InputMedia" + }, + { + "id": "-750828557", + "predicate": "inputMediaGame", + "params": [ + { + "name": "id", + "type": "InputGame" + } + ], + "type": "InputMedia" + }, + { + "id": "1080028941", + "predicate": "inputMediaInvoice", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "description", + "type": "string" + }, + { + "name": "photo", + "type": "flags.0?InputWebDocument" + }, + { + "name": "invoice", + "type": "Invoice" + }, + { + "name": "payload", + "type": "bytes" + }, + { + "name": "provider", + "type": "flags.3?string" + }, + { + "name": "provider_data", + "type": "DataJSON" + }, + { + "name": "start_param", + "type": "flags.1?string" + }, + { + "name": "extended_media", + "type": "flags.2?InputMedia" + } + ], + "type": "InputMedia" + }, + { + "id": "-1759532989", + "predicate": "inputMediaGeoLive", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "stopped", + "type": "flags.0?true" + }, + { + "name": "geo_point", + "type": "InputGeoPoint" + }, + { + "name": "heading", + "type": "flags.2?int" + }, + { + "name": "period", + "type": "flags.1?int" + }, + { + "name": "proximity_notification_radius", + "type": "flags.3?int" + } + ], + "type": "InputMedia" + }, + { + "id": "-2009448184", + "predicate": "inputMediaPoll", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "poll", + "type": "Poll" + }, + { + "name": "correct_answers", + "type": "flags.0?Vector" + }, + { + "name": "attached_media", + "type": "flags.3?InputMedia" + }, + { + "name": "solution", + "type": "flags.1?string" + }, + { + "name": "solution_entities", + "type": "flags.1?Vector" + }, + { + "name": "solution_media", + "type": "flags.2?InputMedia" + } + ], + "type": "InputMedia" + }, + { + "id": "-428884101", + "predicate": "inputMediaDice", + "params": [ + { + "name": "emoticon", + "type": "string" + } + ], + "type": "InputMedia" + }, + { + "id": "-1979852936", + "predicate": "inputMediaStory", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "int" + } + ], + "type": "InputMedia" + }, + { + "id": "-1038383031", + "predicate": "inputMediaWebPage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "force_large_media", + "type": "flags.0?true" + }, + { + "name": "force_small_media", + "type": "flags.1?true" + }, + { + "name": "optional", + "type": "flags.2?true" + }, + { + "name": "url", + "type": "string" + } + ], + "type": "InputMedia" + }, + { + "id": "-1005571194", + "predicate": "inputMediaPaidMedia", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "stars_amount", + "type": "long" + }, + { + "name": "extended_media", + "type": "Vector" + }, + { + "name": "payload", + "type": "flags.0?string" + } + ], + "type": "InputMedia" + }, + { + "id": "-1614454818", + "predicate": "inputMediaTodo", + "params": [ + { + "name": "todo", + "type": "TodoList" + } + ], + "type": "InputMedia" + }, + { + "id": "-207018934", + "predicate": "inputMediaStakeDice", + "params": [ + { + "name": "game_hash", + "type": "string" + }, + { + "name": "ton_amount", + "type": "long" + }, + { + "name": "client_seed", + "type": "bytes" + } + ], + "type": "InputMedia" + }, + { + "id": "480546647", + "predicate": "inputChatPhotoEmpty", + "params": [], + "type": "InputChatPhoto" + }, + { + "id": "-1110593856", + "predicate": "inputChatUploadedPhoto", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "file", + "type": "flags.0?InputFile" + }, + { + "name": "video", + "type": "flags.1?InputFile" + }, + { + "name": "video_start_ts", + "type": "flags.2?double" + }, + { + "name": "video_emoji_markup", + "type": "flags.3?VideoSize" + } + ], + "type": "InputChatPhoto" + }, + { + "id": "-1991004873", + "predicate": "inputChatPhoto", + "params": [ + { + "name": "id", + "type": "InputPhoto" + } + ], + "type": "InputChatPhoto" + }, + { + "id": "-457104426", + "predicate": "inputGeoPointEmpty", + "params": [], + "type": "InputGeoPoint" + }, + { + "id": "1210199983", + "predicate": "inputGeoPoint", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "lat", + "type": "double" + }, + { + "name": "long", + "type": "double" + }, + { + "name": "accuracy_radius", + "type": "flags.0?int" + } + ], + "type": "InputGeoPoint" + }, + { + "id": "483901197", + "predicate": "inputPhotoEmpty", + "params": [], + "type": "InputPhoto" + }, + { + "id": "1001634122", + "predicate": "inputPhoto", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "file_reference", + "type": "bytes" + } + ], + "type": "InputPhoto" + }, + { + "id": "-539317279", + "predicate": "inputFileLocation", + "params": [ + { + "name": "volume_id", + "type": "long" + }, + { + "name": "local_id", + "type": "int" + }, + { + "name": "secret", + "type": "long" + }, + { + "name": "file_reference", + "type": "bytes" + } + ], + "type": "InputFileLocation" + }, + { + "id": "-182231723", + "predicate": "inputEncryptedFileLocation", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputFileLocation" + }, + { + "id": "-1160743548", + "predicate": "inputDocumentFileLocation", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "file_reference", + "type": "bytes" + }, + { + "name": "thumb_size", + "type": "string" + } + ], + "type": "InputFileLocation" + }, + { + "id": "-876089816", + "predicate": "inputSecureFileLocation", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputFileLocation" + }, + { + "id": "700340377", + "predicate": "inputTakeoutFileLocation", + "params": [], + "type": "InputFileLocation" + }, + { + "id": "1075322878", + "predicate": "inputPhotoFileLocation", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "file_reference", + "type": "bytes" + }, + { + "name": "thumb_size", + "type": "string" + } + ], + "type": "InputFileLocation" + }, + { + "id": "-667654413", + "predicate": "inputPhotoLegacyFileLocation", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "file_reference", + "type": "bytes" + }, + { + "name": "volume_id", + "type": "long" + }, + { + "name": "local_id", + "type": "int" + }, + { + "name": "secret", + "type": "long" + } + ], + "type": "InputFileLocation" + }, + { + "id": "925204121", + "predicate": "inputPeerPhotoFileLocation", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "big", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "photo_id", + "type": "long" + } + ], + "type": "InputFileLocation" + }, + { + "id": "-1652231205", + "predicate": "inputStickerSetThumb", + "params": [ + { + "name": "stickerset", + "type": "InputStickerSet" + }, + { + "name": "thumb_version", + "type": "int" + } + ], + "type": "InputFileLocation" + }, + { + "id": "93890858", + "predicate": "inputGroupCallStream", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "time_ms", + "type": "long" + }, + { + "name": "scale", + "type": "int" + }, + { + "name": "video_channel", + "type": "flags.0?int" + }, + { + "name": "video_quality", + "type": "flags.0?int" + } + ], + "type": "InputFileLocation" + }, + { + "id": "1498486562", + "predicate": "peerUser", + "params": [ + { + "name": "user_id", + "type": "long" + } + ], + "type": "Peer" + }, + { + "id": "918946202", + "predicate": "peerChat", + "params": [ + { + "name": "chat_id", + "type": "long" + } + ], + "type": "Peer" + }, + { + "id": "-1566230754", + "predicate": "peerChannel", + "params": [ + { + "name": "channel_id", + "type": "long" + } + ], + "type": "Peer" + }, + { + "id": "-1432995067", + "predicate": "storage.fileUnknown", + "params": [], + "type": "storage.FileType" + }, + { + "id": "1086091090", + "predicate": "storage.filePartial", + "params": [], + "type": "storage.FileType" + }, + { + "id": "8322574", + "predicate": "storage.fileJpeg", + "params": [], + "type": "storage.FileType" + }, + { + "id": "-891180321", + "predicate": "storage.fileGif", + "params": [], + "type": "storage.FileType" + }, + { + "id": "172975040", + "predicate": "storage.filePng", + "params": [], + "type": "storage.FileType" + }, + { + "id": "-1373745011", + "predicate": "storage.filePdf", + "params": [], + "type": "storage.FileType" + }, + { + "id": "1384777335", + "predicate": "storage.fileMp3", + "params": [], + "type": "storage.FileType" + }, + { + "id": "1258941372", + "predicate": "storage.fileMov", + "params": [], + "type": "storage.FileType" + }, + { + "id": "-1278304028", + "predicate": "storage.fileMp4", + "params": [], + "type": "storage.FileType" + }, + { + "id": "276907596", + "predicate": "storage.fileWebp", + "params": [], + "type": "storage.FileType" + }, + { + "id": "-742634630", + "predicate": "userEmpty", + "params": [ + { + "name": "id", + "type": "long" + } + ], + "type": "User" + }, + { + "id": "829899656", + "predicate": "user", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "self", + "type": "flags.10?true" + }, + { + "name": "contact", + "type": "flags.11?true" + }, + { + "name": "mutual_contact", + "type": "flags.12?true" + }, + { + "name": "deleted", + "type": "flags.13?true" + }, + { + "name": "bot", + "type": "flags.14?true" + }, + { + "name": "bot_chat_history", + "type": "flags.15?true" + }, + { + "name": "bot_nochats", + "type": "flags.16?true" + }, + { + "name": "verified", + "type": "flags.17?true" + }, + { + "name": "restricted", + "type": "flags.18?true" + }, + { + "name": "min", + "type": "flags.20?true" + }, + { + "name": "bot_inline_geo", + "type": "flags.21?true" + }, + { + "name": "support", + "type": "flags.23?true" + }, + { + "name": "scam", + "type": "flags.24?true" + }, + { + "name": "apply_min_photo", + "type": "flags.25?true" + }, + { + "name": "fake", + "type": "flags.26?true" + }, + { + "name": "bot_attach_menu", + "type": "flags.27?true" + }, + { + "name": "premium", + "type": "flags.28?true" + }, + { + "name": "attach_menu_enabled", + "type": "flags.29?true" + }, + { + "name": "flags2", + "type": "#" + }, + { + "name": "bot_can_edit", + "type": "flags2.1?true" + }, + { + "name": "close_friend", + "type": "flags2.2?true" + }, + { + "name": "stories_hidden", + "type": "flags2.3?true" + }, + { + "name": "stories_unavailable", + "type": "flags2.4?true" + }, + { + "name": "contact_require_premium", + "type": "flags2.10?true" + }, + { + "name": "bot_business", + "type": "flags2.11?true" + }, + { + "name": "bot_has_main_app", + "type": "flags2.13?true" + }, + { + "name": "bot_forum_view", + "type": "flags2.16?true" + }, + { + "name": "bot_forum_can_manage_topics", + "type": "flags2.17?true" + }, + { + "name": "bot_can_manage_bots", + "type": "flags2.18?true" + }, + { + "name": "bot_guestchat", + "type": "flags2.19?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "flags.0?long" + }, + { + "name": "first_name", + "type": "flags.1?string" + }, + { + "name": "last_name", + "type": "flags.2?string" + }, + { + "name": "username", + "type": "flags.3?string" + }, + { + "name": "phone", + "type": "flags.4?string" + }, + { + "name": "photo", + "type": "flags.5?UserProfilePhoto" + }, + { + "name": "status", + "type": "flags.6?UserStatus" + }, + { + "name": "bot_info_version", + "type": "flags.14?int" + }, + { + "name": "restriction_reason", + "type": "flags.18?Vector" + }, + { + "name": "bot_inline_placeholder", + "type": "flags.19?string" + }, + { + "name": "lang_code", + "type": "flags.22?string" + }, + { + "name": "emoji_status", + "type": "flags.30?EmojiStatus" + }, + { + "name": "usernames", + "type": "flags2.0?Vector" + }, + { + "name": "stories_max_id", + "type": "flags2.5?RecentStory" + }, + { + "name": "color", + "type": "flags2.8?PeerColor" + }, + { + "name": "profile_color", + "type": "flags2.9?PeerColor" + }, + { + "name": "bot_active_users", + "type": "flags2.12?int" + }, + { + "name": "bot_verification_icon", + "type": "flags2.14?long" + }, + { + "name": "send_paid_messages_stars", + "type": "flags2.15?long" + } + ], + "type": "User" + }, + { + "id": "1326562017", + "predicate": "userProfilePhotoEmpty", + "params": [], + "type": "UserProfilePhoto" + }, + { + "id": "-2100168954", + "predicate": "userProfilePhoto", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "has_video", + "type": "flags.0?true" + }, + { + "name": "personal", + "type": "flags.2?true" + }, + { + "name": "photo_id", + "type": "long" + }, + { + "name": "stripped_thumb", + "type": "flags.1?bytes" + }, + { + "name": "dc_id", + "type": "int" + } + ], + "type": "UserProfilePhoto" + }, + { + "id": "164646985", + "predicate": "userStatusEmpty", + "params": [], + "type": "UserStatus" + }, + { + "id": "-306628279", + "predicate": "userStatusOnline", + "params": [ + { + "name": "expires", + "type": "int" + } + ], + "type": "UserStatus" + }, + { + "id": "9203775", + "predicate": "userStatusOffline", + "params": [ + { + "name": "was_online", + "type": "int" + } + ], + "type": "UserStatus" + }, + { + "id": "2065268168", + "predicate": "userStatusRecently", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "by_me", + "type": "flags.0?true" + } + ], + "type": "UserStatus" + }, + { + "id": "1410997530", + "predicate": "userStatusLastWeek", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "by_me", + "type": "flags.0?true" + } + ], + "type": "UserStatus" + }, + { + "id": "1703516023", + "predicate": "userStatusLastMonth", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "by_me", + "type": "flags.0?true" + } + ], + "type": "UserStatus" + }, + { + "id": "693512293", + "predicate": "chatEmpty", + "params": [ + { + "name": "id", + "type": "long" + } + ], + "type": "Chat" + }, + { + "id": "1103884886", + "predicate": "chat", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "creator", + "type": "flags.0?true" + }, + { + "name": "left", + "type": "flags.2?true" + }, + { + "name": "deactivated", + "type": "flags.5?true" + }, + { + "name": "call_active", + "type": "flags.23?true" + }, + { + "name": "call_not_empty", + "type": "flags.24?true" + }, + { + "name": "noforwards", + "type": "flags.25?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "photo", + "type": "ChatPhoto" + }, + { + "name": "participants_count", + "type": "int" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "version", + "type": "int" + }, + { + "name": "migrated_to", + "type": "flags.6?InputChannel" + }, + { + "name": "admin_rights", + "type": "flags.14?ChatAdminRights" + }, + { + "name": "default_banned_rights", + "type": "flags.18?ChatBannedRights" + } + ], + "type": "Chat" + }, + { + "id": "1704108455", + "predicate": "chatForbidden", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "title", + "type": "string" + } + ], + "type": "Chat" + }, + { + "id": "473084188", + "predicate": "channel", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "creator", + "type": "flags.0?true" + }, + { + "name": "left", + "type": "flags.2?true" + }, + { + "name": "broadcast", + "type": "flags.5?true" + }, + { + "name": "verified", + "type": "flags.7?true" + }, + { + "name": "megagroup", + "type": "flags.8?true" + }, + { + "name": "restricted", + "type": "flags.9?true" + }, + { + "name": "signatures", + "type": "flags.11?true" + }, + { + "name": "min", + "type": "flags.12?true" + }, + { + "name": "scam", + "type": "flags.19?true" + }, + { + "name": "has_link", + "type": "flags.20?true" + }, + { + "name": "has_geo", + "type": "flags.21?true" + }, + { + "name": "slowmode_enabled", + "type": "flags.22?true" + }, + { + "name": "call_active", + "type": "flags.23?true" + }, + { + "name": "call_not_empty", + "type": "flags.24?true" + }, + { + "name": "fake", + "type": "flags.25?true" + }, + { + "name": "gigagroup", + "type": "flags.26?true" + }, + { + "name": "noforwards", + "type": "flags.27?true" + }, + { + "name": "join_to_send", + "type": "flags.28?true" + }, + { + "name": "join_request", + "type": "flags.29?true" + }, + { + "name": "forum", + "type": "flags.30?true" + }, + { + "name": "flags2", + "type": "#" + }, + { + "name": "stories_hidden", + "type": "flags2.1?true" + }, + { + "name": "stories_hidden_min", + "type": "flags2.2?true" + }, + { + "name": "stories_unavailable", + "type": "flags2.3?true" + }, + { + "name": "signature_profiles", + "type": "flags2.12?true" + }, + { + "name": "autotranslation", + "type": "flags2.15?true" + }, + { + "name": "broadcast_messages_allowed", + "type": "flags2.16?true" + }, + { + "name": "monoforum", + "type": "flags2.17?true" + }, + { + "name": "forum_tabs", + "type": "flags2.19?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "flags.13?long" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "username", + "type": "flags.6?string" + }, + { + "name": "photo", + "type": "ChatPhoto" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "restriction_reason", + "type": "flags.9?Vector" + }, + { + "name": "admin_rights", + "type": "flags.14?ChatAdminRights" + }, + { + "name": "banned_rights", + "type": "flags.15?ChatBannedRights" + }, + { + "name": "default_banned_rights", + "type": "flags.18?ChatBannedRights" + }, + { + "name": "participants_count", + "type": "flags.17?int" + }, + { + "name": "usernames", + "type": "flags2.0?Vector" + }, + { + "name": "stories_max_id", + "type": "flags2.4?RecentStory" + }, + { + "name": "color", + "type": "flags2.7?PeerColor" + }, + { + "name": "profile_color", + "type": "flags2.8?PeerColor" + }, + { + "name": "emoji_status", + "type": "flags2.9?EmojiStatus" + }, + { + "name": "level", + "type": "flags2.10?int" + }, + { + "name": "subscription_until_date", + "type": "flags2.11?int" + }, + { + "name": "bot_verification_icon", + "type": "flags2.13?long" + }, + { + "name": "send_paid_messages_stars", + "type": "flags2.14?long" + }, + { + "name": "linked_monoforum_id", + "type": "flags2.18?long" + } + ], + "type": "Chat" + }, + { + "id": "399807445", + "predicate": "channelForbidden", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "broadcast", + "type": "flags.5?true" + }, + { + "name": "megagroup", + "type": "flags.8?true" + }, + { + "name": "monoforum", + "type": "flags.10?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "until_date", + "type": "flags.16?int" + } + ], + "type": "Chat" + }, + { + "id": "640893467", + "predicate": "chatFull", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "can_set_username", + "type": "flags.7?true" + }, + { + "name": "has_scheduled", + "type": "flags.8?true" + }, + { + "name": "translations_disabled", + "type": "flags.19?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "about", + "type": "string" + }, + { + "name": "participants", + "type": "ChatParticipants" + }, + { + "name": "chat_photo", + "type": "flags.2?Photo" + }, + { + "name": "notify_settings", + "type": "PeerNotifySettings" + }, + { + "name": "exported_invite", + "type": "flags.13?ExportedChatInvite" + }, + { + "name": "bot_info", + "type": "flags.3?Vector" + }, + { + "name": "pinned_msg_id", + "type": "flags.6?int" + }, + { + "name": "folder_id", + "type": "flags.11?int" + }, + { + "name": "call", + "type": "flags.12?InputGroupCall" + }, + { + "name": "ttl_period", + "type": "flags.14?int" + }, + { + "name": "groupcall_default_join_as", + "type": "flags.15?Peer" + }, + { + "name": "theme_emoticon", + "type": "flags.16?string" + }, + { + "name": "requests_pending", + "type": "flags.17?int" + }, + { + "name": "recent_requesters", + "type": "flags.17?Vector" + }, + { + "name": "available_reactions", + "type": "flags.18?ChatReactions" + }, + { + "name": "reactions_limit", + "type": "flags.20?int" + } + ], + "type": "ChatFull" + }, + { + "id": "-455036259", + "predicate": "channelFull", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "can_view_participants", + "type": "flags.3?true" + }, + { + "name": "can_set_username", + "type": "flags.6?true" + }, + { + "name": "can_set_stickers", + "type": "flags.7?true" + }, + { + "name": "hidden_prehistory", + "type": "flags.10?true" + }, + { + "name": "can_set_location", + "type": "flags.16?true" + }, + { + "name": "has_scheduled", + "type": "flags.19?true" + }, + { + "name": "can_view_stats", + "type": "flags.20?true" + }, + { + "name": "blocked", + "type": "flags.22?true" + }, + { + "name": "flags2", + "type": "#" + }, + { + "name": "can_delete_channel", + "type": "flags2.0?true" + }, + { + "name": "antispam", + "type": "flags2.1?true" + }, + { + "name": "participants_hidden", + "type": "flags2.2?true" + }, + { + "name": "translations_disabled", + "type": "flags2.3?true" + }, + { + "name": "stories_pinned_available", + "type": "flags2.5?true" + }, + { + "name": "view_forum_as_messages", + "type": "flags2.6?true" + }, + { + "name": "restricted_sponsored", + "type": "flags2.11?true" + }, + { + "name": "can_view_revenue", + "type": "flags2.12?true" + }, + { + "name": "paid_media_allowed", + "type": "flags2.14?true" + }, + { + "name": "can_view_stars_revenue", + "type": "flags2.15?true" + }, + { + "name": "paid_reactions_available", + "type": "flags2.16?true" + }, + { + "name": "stargifts_available", + "type": "flags2.19?true" + }, + { + "name": "paid_messages_available", + "type": "flags2.20?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "about", + "type": "string" + }, + { + "name": "participants_count", + "type": "flags.0?int" + }, + { + "name": "admins_count", + "type": "flags.1?int" + }, + { + "name": "kicked_count", + "type": "flags.2?int" + }, + { + "name": "banned_count", + "type": "flags.2?int" + }, + { + "name": "online_count", + "type": "flags.13?int" + }, + { + "name": "read_inbox_max_id", + "type": "int" + }, + { + "name": "read_outbox_max_id", + "type": "int" + }, + { + "name": "unread_count", + "type": "int" + }, + { + "name": "chat_photo", + "type": "Photo" + }, + { + "name": "notify_settings", + "type": "PeerNotifySettings" + }, + { + "name": "exported_invite", + "type": "flags.23?ExportedChatInvite" + }, + { + "name": "bot_info", + "type": "Vector" + }, + { + "name": "migrated_from_chat_id", + "type": "flags.4?long" + }, + { + "name": "migrated_from_max_id", + "type": "flags.4?int" + }, + { + "name": "pinned_msg_id", + "type": "flags.5?int" + }, + { + "name": "stickerset", + "type": "flags.8?StickerSet" + }, + { + "name": "available_min_id", + "type": "flags.9?int" + }, + { + "name": "folder_id", + "type": "flags.11?int" + }, + { + "name": "linked_chat_id", + "type": "flags.14?long" + }, + { + "name": "location", + "type": "flags.15?ChannelLocation" + }, + { + "name": "slowmode_seconds", + "type": "flags.17?int" + }, + { + "name": "slowmode_next_send_date", + "type": "flags.18?int" + }, + { + "name": "stats_dc", + "type": "flags.12?int" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "call", + "type": "flags.21?InputGroupCall" + }, + { + "name": "ttl_period", + "type": "flags.24?int" + }, + { + "name": "pending_suggestions", + "type": "flags.25?Vector" + }, + { + "name": "groupcall_default_join_as", + "type": "flags.26?Peer" + }, + { + "name": "theme_emoticon", + "type": "flags.27?string" + }, + { + "name": "requests_pending", + "type": "flags.28?int" + }, + { + "name": "recent_requesters", + "type": "flags.28?Vector" + }, + { + "name": "default_send_as", + "type": "flags.29?Peer" + }, + { + "name": "available_reactions", + "type": "flags.30?ChatReactions" + }, + { + "name": "reactions_limit", + "type": "flags2.13?int" + }, + { + "name": "stories", + "type": "flags2.4?PeerStories" + }, + { + "name": "wallpaper", + "type": "flags2.7?WallPaper" + }, + { + "name": "boosts_applied", + "type": "flags2.8?int" + }, + { + "name": "boosts_unrestrict", + "type": "flags2.9?int" + }, + { + "name": "emojiset", + "type": "flags2.10?StickerSet" + }, + { + "name": "bot_verification", + "type": "flags2.17?BotVerification" + }, + { + "name": "stargifts_count", + "type": "flags2.18?int" + }, + { + "name": "send_paid_messages_stars", + "type": "flags2.21?long" + }, + { + "name": "main_tab", + "type": "flags2.22?ProfileTab" + } + ], + "type": "ChatFull" + }, + { + "id": "954703838", + "predicate": "chatParticipant", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "inviter_id", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "rank", + "type": "flags.0?string" + } + ], + "type": "ChatParticipant" + }, + { + "id": "-503814216", + "predicate": "chatParticipantCreator", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "rank", + "type": "flags.0?string" + } + ], + "type": "ChatParticipant" + }, + { + "id": "56677842", + "predicate": "chatParticipantAdmin", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "inviter_id", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "rank", + "type": "flags.0?string" + } + ], + "type": "ChatParticipant" + }, + { + "id": "-2023500831", + "predicate": "chatParticipantsForbidden", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "chat_id", + "type": "long" + }, + { + "name": "self_participant", + "type": "flags.0?ChatParticipant" + } + ], + "type": "ChatParticipants" + }, + { + "id": "1018991608", + "predicate": "chatParticipants", + "params": [ + { + "name": "chat_id", + "type": "long" + }, + { + "name": "participants", + "type": "Vector" + }, + { + "name": "version", + "type": "int" + } + ], + "type": "ChatParticipants" + }, + { + "id": "935395612", + "predicate": "chatPhotoEmpty", + "params": [], + "type": "ChatPhoto" + }, + { + "id": "476978193", + "predicate": "chatPhoto", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "has_video", + "type": "flags.0?true" + }, + { + "name": "photo_id", + "type": "long" + }, + { + "name": "stripped_thumb", + "type": "flags.1?bytes" + }, + { + "name": "dc_id", + "type": "int" + } + ], + "type": "ChatPhoto" + }, + { + "id": "-1868117372", + "predicate": "messageEmpty", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "peer_id", + "type": "flags.0?Peer" + } + ], + "type": "Message" + }, + { + "id": "-1779470549", + "predicate": "message", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "out", + "type": "flags.1?true" + }, + { + "name": "mentioned", + "type": "flags.4?true" + }, + { + "name": "media_unread", + "type": "flags.5?true" + }, + { + "name": "silent", + "type": "flags.13?true" + }, + { + "name": "post", + "type": "flags.14?true" + }, + { + "name": "from_scheduled", + "type": "flags.18?true" + }, + { + "name": "legacy", + "type": "flags.19?true" + }, + { + "name": "edit_hide", + "type": "flags.21?true" + }, + { + "name": "pinned", + "type": "flags.24?true" + }, + { + "name": "noforwards", + "type": "flags.26?true" + }, + { + "name": "invert_media", + "type": "flags.27?true" + }, + { + "name": "flags2", + "type": "#" + }, + { + "name": "offline", + "type": "flags2.1?true" + }, + { + "name": "video_processing_pending", + "type": "flags2.4?true" + }, + { + "name": "paid_suggested_post_stars", + "type": "flags2.8?true" + }, + { + "name": "paid_suggested_post_ton", + "type": "flags2.9?true" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "from_id", + "type": "flags.8?Peer" + }, + { + "name": "from_boosts_applied", + "type": "flags.29?int" + }, + { + "name": "from_rank", + "type": "flags2.12?string" + }, + { + "name": "peer_id", + "type": "Peer" + }, + { + "name": "saved_peer_id", + "type": "flags.28?Peer" + }, + { + "name": "fwd_from", + "type": "flags.2?MessageFwdHeader" + }, + { + "name": "via_bot_id", + "type": "flags.11?long" + }, + { + "name": "via_business_bot_id", + "type": "flags2.0?long" + }, + { + "name": "guestchat_via_from", + "type": "flags2.19?Peer" + }, + { + "name": "reply_to", + "type": "flags.3?MessageReplyHeader" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "media", + "type": "flags.9?MessageMedia" + }, + { + "name": "reply_markup", + "type": "flags.6?ReplyMarkup" + }, + { + "name": "entities", + "type": "flags.7?Vector" + }, + { + "name": "views", + "type": "flags.10?int" + }, + { + "name": "forwards", + "type": "flags.10?int" + }, + { + "name": "replies", + "type": "flags.23?MessageReplies" + }, + { + "name": "edit_date", + "type": "flags.15?int" + }, + { + "name": "post_author", + "type": "flags.16?string" + }, + { + "name": "grouped_id", + "type": "flags.17?long" + }, + { + "name": "reactions", + "type": "flags.20?MessageReactions" + }, + { + "name": "restriction_reason", + "type": "flags.22?Vector" + }, + { + "name": "ttl_period", + "type": "flags.25?int" + }, + { + "name": "quick_reply_shortcut_id", + "type": "flags.30?int" + }, + { + "name": "effect", + "type": "flags2.2?long" + }, + { + "name": "factcheck", + "type": "flags2.3?FactCheck" + }, + { + "name": "report_delivery_until_date", + "type": "flags2.5?int" + }, + { + "name": "paid_message_stars", + "type": "flags2.6?long" + }, + { + "name": "suggested_post", + "type": "flags2.7?SuggestedPost" + }, + { + "name": "schedule_repeat_period", + "type": "flags2.10?int" + }, + { + "name": "summary_from_language", + "type": "flags2.11?string" + } + ], + "type": "Message" + }, + { + "id": "2055212554", + "predicate": "messageService", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "out", + "type": "flags.1?true" + }, + { + "name": "mentioned", + "type": "flags.4?true" + }, + { + "name": "media_unread", + "type": "flags.5?true" + }, + { + "name": "reactions_are_possible", + "type": "flags.9?true" + }, + { + "name": "silent", + "type": "flags.13?true" + }, + { + "name": "post", + "type": "flags.14?true" + }, + { + "name": "legacy", + "type": "flags.19?true" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "from_id", + "type": "flags.8?Peer" + }, + { + "name": "peer_id", + "type": "Peer" + }, + { + "name": "saved_peer_id", + "type": "flags.28?Peer" + }, + { + "name": "reply_to", + "type": "flags.3?MessageReplyHeader" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "action", + "type": "MessageAction" + }, + { + "name": "reactions", + "type": "flags.20?MessageReactions" + }, + { + "name": "ttl_period", + "type": "flags.25?int" + } + ], + "type": "Message" + }, + { + "id": "1038967584", + "predicate": "messageMediaEmpty", + "params": [], + "type": "MessageMedia" + }, + { + "id": "-501814429", + "predicate": "messageMediaPhoto", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "spoiler", + "type": "flags.3?true" + }, + { + "name": "live_photo", + "type": "flags.4?true" + }, + { + "name": "photo", + "type": "flags.0?Photo" + }, + { + "name": "ttl_seconds", + "type": "flags.2?int" + }, + { + "name": "video", + "type": "flags.4?Document" + } + ], + "type": "MessageMedia" + }, + { + "id": "1457575028", + "predicate": "messageMediaGeo", + "params": [ + { + "name": "geo", + "type": "GeoPoint" + } + ], + "type": "MessageMedia" + }, + { + "id": "1882335561", + "predicate": "messageMediaContact", + "params": [ + { + "name": "phone_number", + "type": "string" + }, + { + "name": "first_name", + "type": "string" + }, + { + "name": "last_name", + "type": "string" + }, + { + "name": "vcard", + "type": "string" + }, + { + "name": "user_id", + "type": "long" + } + ], + "type": "MessageMedia" + }, + { + "id": "-1618676578", + "predicate": "messageMediaUnsupported", + "params": [], + "type": "MessageMedia" + }, + { + "id": "1389939929", + "predicate": "messageMediaDocument", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "nopremium", + "type": "flags.3?true" + }, + { + "name": "spoiler", + "type": "flags.4?true" + }, + { + "name": "video", + "type": "flags.6?true" + }, + { + "name": "round", + "type": "flags.7?true" + }, + { + "name": "voice", + "type": "flags.8?true" + }, + { + "name": "document", + "type": "flags.0?Document" + }, + { + "name": "alt_documents", + "type": "flags.5?Vector" + }, + { + "name": "video_cover", + "type": "flags.9?Photo" + }, + { + "name": "video_timestamp", + "type": "flags.10?int" + }, + { + "name": "ttl_seconds", + "type": "flags.2?int" + } + ], + "type": "MessageMedia" + }, + { + "id": "-571405253", + "predicate": "messageMediaWebPage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "force_large_media", + "type": "flags.0?true" + }, + { + "name": "force_small_media", + "type": "flags.1?true" + }, + { + "name": "manual", + "type": "flags.3?true" + }, + { + "name": "safe", + "type": "flags.4?true" + }, + { + "name": "webpage", + "type": "WebPage" + } + ], + "type": "MessageMedia" + }, + { + "id": "784356159", + "predicate": "messageMediaVenue", + "params": [ + { + "name": "geo", + "type": "GeoPoint" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "address", + "type": "string" + }, + { + "name": "provider", + "type": "string" + }, + { + "name": "venue_id", + "type": "string" + }, + { + "name": "venue_type", + "type": "string" + } + ], + "type": "MessageMedia" + }, + { + "id": "-38694904", + "predicate": "messageMediaGame", + "params": [ + { + "name": "game", + "type": "Game" + } + ], + "type": "MessageMedia" + }, + { + "id": "-156940077", + "predicate": "messageMediaInvoice", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "shipping_address_requested", + "type": "flags.1?true" + }, + { + "name": "test", + "type": "flags.3?true" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "description", + "type": "string" + }, + { + "name": "photo", + "type": "flags.0?WebDocument" + }, + { + "name": "receipt_msg_id", + "type": "flags.2?int" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "total_amount", + "type": "long" + }, + { + "name": "start_param", + "type": "string" + }, + { + "name": "extended_media", + "type": "flags.4?MessageExtendedMedia" + } + ], + "type": "MessageMedia" + }, + { + "id": "-1186937242", + "predicate": "messageMediaGeoLive", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "geo", + "type": "GeoPoint" + }, + { + "name": "heading", + "type": "flags.0?int" + }, + { + "name": "period", + "type": "int" + }, + { + "name": "proximity_notification_radius", + "type": "flags.1?int" + } + ], + "type": "MessageMedia" + }, + { + "id": "2000637542", + "predicate": "messageMediaPoll", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "poll", + "type": "Poll" + }, + { + "name": "results", + "type": "PollResults" + }, + { + "name": "attached_media", + "type": "flags.0?MessageMedia" + } + ], + "type": "MessageMedia" + }, + { + "id": "147581959", + "predicate": "messageMediaDice", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "value", + "type": "int" + }, + { + "name": "emoticon", + "type": "string" + }, + { + "name": "game_outcome", + "type": "flags.0?messages.EmojiGameOutcome" + } + ], + "type": "MessageMedia" + }, + { + "id": "1758159491", + "predicate": "messageMediaStory", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "via_mention", + "type": "flags.1?true" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "story", + "type": "flags.0?StoryItem" + } + ], + "type": "MessageMedia" + }, + { + "id": "-1442366485", + "predicate": "messageMediaGiveaway", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "only_new_subscribers", + "type": "flags.0?true" + }, + { + "name": "winners_are_visible", + "type": "flags.2?true" + }, + { + "name": "channels", + "type": "Vector" + }, + { + "name": "countries_iso2", + "type": "flags.1?Vector" + }, + { + "name": "prize_description", + "type": "flags.3?string" + }, + { + "name": "quantity", + "type": "int" + }, + { + "name": "months", + "type": "flags.4?int" + }, + { + "name": "stars", + "type": "flags.5?long" + }, + { + "name": "until_date", + "type": "int" + } + ], + "type": "MessageMedia" + }, + { + "id": "-827703647", + "predicate": "messageMediaGiveawayResults", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "only_new_subscribers", + "type": "flags.0?true" + }, + { + "name": "refunded", + "type": "flags.2?true" + }, + { + "name": "channel_id", + "type": "long" + }, + { + "name": "additional_peers_count", + "type": "flags.3?int" + }, + { + "name": "launch_msg_id", + "type": "int" + }, + { + "name": "winners_count", + "type": "int" + }, + { + "name": "unclaimed_count", + "type": "int" + }, + { + "name": "winners", + "type": "Vector" + }, + { + "name": "months", + "type": "flags.4?int" + }, + { + "name": "stars", + "type": "flags.5?long" + }, + { + "name": "prize_description", + "type": "flags.1?string" + }, + { + "name": "until_date", + "type": "int" + } + ], + "type": "MessageMedia" + }, + { + "id": "-1467669359", + "predicate": "messageMediaPaidMedia", + "params": [ + { + "name": "stars_amount", + "type": "long" + }, + { + "name": "extended_media", + "type": "Vector" + } + ], + "type": "MessageMedia" + }, + { + "id": "-1974226924", + "predicate": "messageMediaToDo", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "todo", + "type": "TodoList" + }, + { + "name": "completions", + "type": "flags.0?Vector" + } + ], + "type": "MessageMedia" + }, + { + "id": "-899896439", + "predicate": "messageMediaVideoStream", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "rtmp_stream", + "type": "flags.0?true" + }, + { + "name": "call", + "type": "InputGroupCall" + } + ], + "type": "MessageMedia" + }, + { + "id": "-1230047312", + "predicate": "messageActionEmpty", + "params": [], + "type": "MessageAction" + }, + { + "id": "-1119368275", + "predicate": "messageActionChatCreate", + "params": [ + { + "name": "title", + "type": "string" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "MessageAction" + }, + { + "id": "-1247687078", + "predicate": "messageActionChatEditTitle", + "params": [ + { + "name": "title", + "type": "string" + } + ], + "type": "MessageAction" + }, + { + "id": "2144015272", + "predicate": "messageActionChatEditPhoto", + "params": [ + { + "name": "photo", + "type": "Photo" + } + ], + "type": "MessageAction" + }, + { + "id": "-1780220945", + "predicate": "messageActionChatDeletePhoto", + "params": [], + "type": "MessageAction" + }, + { + "id": "365886720", + "predicate": "messageActionChatAddUser", + "params": [ + { + "name": "users", + "type": "Vector" + } + ], + "type": "MessageAction" + }, + { + "id": "-1539362612", + "predicate": "messageActionChatDeleteUser", + "params": [ + { + "name": "user_id", + "type": "long" + } + ], + "type": "MessageAction" + }, + { + "id": "51520707", + "predicate": "messageActionChatJoinedByLink", + "params": [ + { + "name": "inviter_id", + "type": "long" + } + ], + "type": "MessageAction" + }, + { + "id": "-1781355374", + "predicate": "messageActionChannelCreate", + "params": [ + { + "name": "title", + "type": "string" + } + ], + "type": "MessageAction" + }, + { + "id": "-519864430", + "predicate": "messageActionChatMigrateTo", + "params": [ + { + "name": "channel_id", + "type": "long" + } + ], + "type": "MessageAction" + }, + { + "id": "-365344535", + "predicate": "messageActionChannelMigrateFrom", + "params": [ + { + "name": "title", + "type": "string" + }, + { + "name": "chat_id", + "type": "long" + } + ], + "type": "MessageAction" + }, + { + "id": "-1799538451", + "predicate": "messageActionPinMessage", + "params": [], + "type": "MessageAction" + }, + { + "id": "-1615153660", + "predicate": "messageActionHistoryClear", + "params": [], + "type": "MessageAction" + }, + { + "id": "-1834538890", + "predicate": "messageActionGameScore", + "params": [ + { + "name": "game_id", + "type": "long" + }, + { + "name": "score", + "type": "int" + } + ], + "type": "MessageAction" + }, + { + "id": "-6288180", + "predicate": "messageActionPaymentSentMe", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "recurring_init", + "type": "flags.2?true" + }, + { + "name": "recurring_used", + "type": "flags.3?true" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "total_amount", + "type": "long" + }, + { + "name": "payload", + "type": "bytes" + }, + { + "name": "info", + "type": "flags.0?PaymentRequestedInfo" + }, + { + "name": "shipping_option_id", + "type": "flags.1?string" + }, + { + "name": "charge", + "type": "PaymentCharge" + }, + { + "name": "subscription_until_date", + "type": "flags.4?int" + } + ], + "type": "MessageAction" + }, + { + "id": "-970673810", + "predicate": "messageActionPaymentSent", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "recurring_init", + "type": "flags.2?true" + }, + { + "name": "recurring_used", + "type": "flags.3?true" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "total_amount", + "type": "long" + }, + { + "name": "invoice_slug", + "type": "flags.0?string" + }, + { + "name": "subscription_until_date", + "type": "flags.4?int" + } + ], + "type": "MessageAction" + }, + { + "id": "-2132731265", + "predicate": "messageActionPhoneCall", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "video", + "type": "flags.2?true" + }, + { + "name": "call_id", + "type": "long" + }, + { + "name": "reason", + "type": "flags.0?PhoneCallDiscardReason" + }, + { + "name": "duration", + "type": "flags.1?int" + } + ], + "type": "MessageAction" + }, + { + "id": "1200788123", + "predicate": "messageActionScreenshotTaken", + "params": [], + "type": "MessageAction" + }, + { + "id": "-85549226", + "predicate": "messageActionCustomAction", + "params": [ + { + "name": "message", + "type": "string" + } + ], + "type": "MessageAction" + }, + { + "id": "-988359047", + "predicate": "messageActionBotAllowed", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "attach_menu", + "type": "flags.1?true" + }, + { + "name": "from_request", + "type": "flags.3?true" + }, + { + "name": "domain", + "type": "flags.0?string" + }, + { + "name": "app", + "type": "flags.2?BotApp" + } + ], + "type": "MessageAction" + }, + { + "id": "455635795", + "predicate": "messageActionSecureValuesSentMe", + "params": [ + { + "name": "values", + "type": "Vector" + }, + { + "name": "credentials", + "type": "SecureCredentialsEncrypted" + } + ], + "type": "MessageAction" + }, + { + "id": "-648257196", + "predicate": "messageActionSecureValuesSent", + "params": [ + { + "name": "types", + "type": "Vector" + } + ], + "type": "MessageAction" + }, + { + "id": "-202219658", + "predicate": "messageActionContactSignUp", + "params": [], + "type": "MessageAction" + }, + { + "id": "-1730095465", + "predicate": "messageActionGeoProximityReached", + "params": [ + { + "name": "from_id", + "type": "Peer" + }, + { + "name": "to_id", + "type": "Peer" + }, + { + "name": "distance", + "type": "int" + } + ], + "type": "MessageAction" + }, + { + "id": "2047704898", + "predicate": "messageActionGroupCall", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "duration", + "type": "flags.0?int" + } + ], + "type": "MessageAction" + }, + { + "id": "1345295095", + "predicate": "messageActionInviteToGroupCall", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "MessageAction" + }, + { + "id": "1007897979", + "predicate": "messageActionSetMessagesTTL", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "period", + "type": "int" + }, + { + "name": "auto_setting_from", + "type": "flags.0?long" + } + ], + "type": "MessageAction" + }, + { + "id": "-1281329567", + "predicate": "messageActionGroupCallScheduled", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "schedule_date", + "type": "int" + } + ], + "type": "MessageAction" + }, + { + "id": "-1189364422", + "predicate": "messageActionSetChatTheme", + "params": [ + { + "name": "theme", + "type": "ChatTheme" + } + ], + "type": "MessageAction" + }, + { + "id": "-339958837", + "predicate": "messageActionChatJoinedByRequest", + "params": [], + "type": "MessageAction" + }, + { + "id": "1205698681", + "predicate": "messageActionWebViewDataSentMe", + "params": [ + { + "name": "text", + "type": "string" + }, + { + "name": "data", + "type": "string" + } + ], + "type": "MessageAction" + }, + { + "id": "-1262252875", + "predicate": "messageActionWebViewDataSent", + "params": [ + { + "name": "text", + "type": "string" + } + ], + "type": "MessageAction" + }, + { + "id": "1223234306", + "predicate": "messageActionGiftPremium", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "amount", + "type": "long" + }, + { + "name": "days", + "type": "int" + }, + { + "name": "crypto_currency", + "type": "flags.0?string" + }, + { + "name": "crypto_amount", + "type": "flags.0?long" + }, + { + "name": "message", + "type": "flags.1?TextWithEntities" + } + ], + "type": "MessageAction" + }, + { + "id": "228168278", + "predicate": "messageActionTopicCreate", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "title_missing", + "type": "flags.1?true" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "icon_color", + "type": "int" + }, + { + "name": "icon_emoji_id", + "type": "flags.0?long" + } + ], + "type": "MessageAction" + }, + { + "id": "-1064024032", + "predicate": "messageActionTopicEdit", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "title", + "type": "flags.0?string" + }, + { + "name": "icon_emoji_id", + "type": "flags.1?long" + }, + { + "name": "closed", + "type": "flags.2?Bool" + }, + { + "name": "hidden", + "type": "flags.3?Bool" + } + ], + "type": "MessageAction" + }, + { + "id": "1474192222", + "predicate": "messageActionSuggestProfilePhoto", + "params": [ + { + "name": "photo", + "type": "Photo" + } + ], + "type": "MessageAction" + }, + { + "id": "827428507", + "predicate": "messageActionRequestedPeer", + "params": [ + { + "name": "button_id", + "type": "int" + }, + { + "name": "peers", + "type": "Vector" + } + ], + "type": "MessageAction" + }, + { + "id": "1348510708", + "predicate": "messageActionSetChatWallPaper", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "same", + "type": "flags.0?true" + }, + { + "name": "for_both", + "type": "flags.1?true" + }, + { + "name": "wallpaper", + "type": "WallPaper" + } + ], + "type": "MessageAction" + }, + { + "id": "834962247", + "predicate": "messageActionGiftCode", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "via_giveaway", + "type": "flags.0?true" + }, + { + "name": "unclaimed", + "type": "flags.5?true" + }, + { + "name": "boost_peer", + "type": "flags.1?Peer" + }, + { + "name": "days", + "type": "int" + }, + { + "name": "slug", + "type": "string" + }, + { + "name": "currency", + "type": "flags.2?string" + }, + { + "name": "amount", + "type": "flags.2?long" + }, + { + "name": "crypto_currency", + "type": "flags.3?string" + }, + { + "name": "crypto_amount", + "type": "flags.3?long" + }, + { + "name": "message", + "type": "flags.4?TextWithEntities" + } + ], + "type": "MessageAction" + }, + { + "id": "-1475391004", + "predicate": "messageActionGiveawayLaunch", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "stars", + "type": "flags.0?long" + } + ], + "type": "MessageAction" + }, + { + "id": "-2015170219", + "predicate": "messageActionGiveawayResults", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "stars", + "type": "flags.0?true" + }, + { + "name": "winners_count", + "type": "int" + }, + { + "name": "unclaimed_count", + "type": "int" + } + ], + "type": "MessageAction" + }, + { + "id": "-872240531", + "predicate": "messageActionBoostApply", + "params": [ + { + "name": "boosts", + "type": "int" + } + ], + "type": "MessageAction" + }, + { + "id": "-1816979384", + "predicate": "messageActionRequestedPeerSentMe", + "params": [ + { + "name": "button_id", + "type": "int" + }, + { + "name": "peers", + "type": "Vector" + } + ], + "type": "MessageAction" + }, + { + "id": "1102307842", + "predicate": "messageActionPaymentRefunded", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "total_amount", + "type": "long" + }, + { + "name": "payload", + "type": "flags.0?bytes" + }, + { + "name": "charge", + "type": "PaymentCharge" + } + ], + "type": "MessageAction" + }, + { + "id": "1171632161", + "predicate": "messageActionGiftStars", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "amount", + "type": "long" + }, + { + "name": "stars", + "type": "long" + }, + { + "name": "crypto_currency", + "type": "flags.0?string" + }, + { + "name": "crypto_amount", + "type": "flags.0?long" + }, + { + "name": "transaction_id", + "type": "flags.1?string" + } + ], + "type": "MessageAction" + }, + { + "id": "-1341372510", + "predicate": "messageActionPrizeStars", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "unclaimed", + "type": "flags.0?true" + }, + { + "name": "stars", + "type": "long" + }, + { + "name": "transaction_id", + "type": "string" + }, + { + "name": "boost_peer", + "type": "Peer" + }, + { + "name": "giveaway_msg_id", + "type": "int" + } + ], + "type": "MessageAction" + }, + { + "id": "-366202413", + "predicate": "messageActionStarGift", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "name_hidden", + "type": "flags.0?true" + }, + { + "name": "saved", + "type": "flags.2?true" + }, + { + "name": "converted", + "type": "flags.3?true" + }, + { + "name": "upgraded", + "type": "flags.5?true" + }, + { + "name": "refunded", + "type": "flags.9?true" + }, + { + "name": "can_upgrade", + "type": "flags.10?true" + }, + { + "name": "prepaid_upgrade", + "type": "flags.13?true" + }, + { + "name": "upgrade_separate", + "type": "flags.16?true" + }, + { + "name": "auction_acquired", + "type": "flags.17?true" + }, + { + "name": "gift", + "type": "StarGift" + }, + { + "name": "message", + "type": "flags.1?TextWithEntities" + }, + { + "name": "convert_stars", + "type": "flags.4?long" + }, + { + "name": "upgrade_msg_id", + "type": "flags.5?int" + }, + { + "name": "upgrade_stars", + "type": "flags.8?long" + }, + { + "name": "from_id", + "type": "flags.11?Peer" + }, + { + "name": "peer", + "type": "flags.12?Peer" + }, + { + "name": "saved_id", + "type": "flags.12?long" + }, + { + "name": "prepaid_upgrade_hash", + "type": "flags.14?string" + }, + { + "name": "gift_msg_id", + "type": "flags.15?int" + }, + { + "name": "to_id", + "type": "flags.18?Peer" + }, + { + "name": "gift_num", + "type": "flags.19?int" + } + ], + "type": "MessageAction" + }, + { + "id": "-423422686", + "predicate": "messageActionStarGiftUnique", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "upgrade", + "type": "flags.0?true" + }, + { + "name": "transferred", + "type": "flags.1?true" + }, + { + "name": "saved", + "type": "flags.2?true" + }, + { + "name": "refunded", + "type": "flags.5?true" + }, + { + "name": "prepaid_upgrade", + "type": "flags.11?true" + }, + { + "name": "assigned", + "type": "flags.13?true" + }, + { + "name": "from_offer", + "type": "flags.14?true" + }, + { + "name": "craft", + "type": "flags.16?true" + }, + { + "name": "gift", + "type": "StarGift" + }, + { + "name": "can_export_at", + "type": "flags.3?int" + }, + { + "name": "transfer_stars", + "type": "flags.4?long" + }, + { + "name": "from_id", + "type": "flags.6?Peer" + }, + { + "name": "peer", + "type": "flags.7?Peer" + }, + { + "name": "saved_id", + "type": "flags.7?long" + }, + { + "name": "resale_amount", + "type": "flags.8?StarsAmount" + }, + { + "name": "can_transfer_at", + "type": "flags.9?int" + }, + { + "name": "can_resell_at", + "type": "flags.10?int" + }, + { + "name": "drop_original_details_stars", + "type": "flags.12?long" + }, + { + "name": "can_craft_at", + "type": "flags.15?int" + } + ], + "type": "MessageAction" + }, + { + "id": "-1407246387", + "predicate": "messageActionPaidMessagesRefunded", + "params": [ + { + "name": "count", + "type": "int" + }, + { + "name": "stars", + "type": "long" + } + ], + "type": "MessageAction" + }, + { + "id": "-2068281992", + "predicate": "messageActionPaidMessagesPrice", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "broadcast_messages_allowed", + "type": "flags.0?true" + }, + { + "name": "stars", + "type": "long" + } + ], + "type": "MessageAction" + }, + { + "id": "805187450", + "predicate": "messageActionConferenceCall", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "missed", + "type": "flags.0?true" + }, + { + "name": "active", + "type": "flags.1?true" + }, + { + "name": "video", + "type": "flags.4?true" + }, + { + "name": "call_id", + "type": "long" + }, + { + "name": "duration", + "type": "flags.2?int" + }, + { + "name": "other_participants", + "type": "flags.3?Vector" + } + ], + "type": "MessageAction" + }, + { + "id": "-864265079", + "predicate": "messageActionTodoCompletions", + "params": [ + { + "name": "completed", + "type": "Vector" + }, + { + "name": "incompleted", + "type": "Vector" + } + ], + "type": "MessageAction" + }, + { + "id": "-940721021", + "predicate": "messageActionTodoAppendTasks", + "params": [ + { + "name": "list", + "type": "Vector" + } + ], + "type": "MessageAction" + }, + { + "id": "-293988970", + "predicate": "messageActionSuggestedPostApproval", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "rejected", + "type": "flags.0?true" + }, + { + "name": "balance_too_low", + "type": "flags.1?true" + }, + { + "name": "reject_comment", + "type": "flags.2?string" + }, + { + "name": "schedule_date", + "type": "flags.3?int" + }, + { + "name": "price", + "type": "flags.4?StarsAmount" + } + ], + "type": "MessageAction" + }, + { + "id": "-1780625559", + "predicate": "messageActionSuggestedPostSuccess", + "params": [ + { + "name": "price", + "type": "StarsAmount" + } + ], + "type": "MessageAction" + }, + { + "id": "1777932024", + "predicate": "messageActionSuggestedPostRefund", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "payer_initiated", + "type": "flags.0?true" + } + ], + "type": "MessageAction" + }, + { + "id": "-1465661799", + "predicate": "messageActionGiftTon", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "amount", + "type": "long" + }, + { + "name": "crypto_currency", + "type": "string" + }, + { + "name": "crypto_amount", + "type": "long" + }, + { + "name": "transaction_id", + "type": "flags.0?string" + } + ], + "type": "MessageAction" + }, + { + "id": "747579941", + "predicate": "messageActionSuggestBirthday", + "params": [ + { + "name": "birthday", + "type": "Birthday" + } + ], + "type": "MessageAction" + }, + { + "id": "2000845012", + "predicate": "messageActionStarGiftPurchaseOffer", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "accepted", + "type": "flags.0?true" + }, + { + "name": "declined", + "type": "flags.1?true" + }, + { + "name": "gift", + "type": "StarGift" + }, + { + "name": "price", + "type": "StarsAmount" + }, + { + "name": "expires_at", + "type": "int" + } + ], + "type": "MessageAction" + }, + { + "id": "1940760427", + "predicate": "messageActionStarGiftPurchaseOfferDeclined", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "expired", + "type": "flags.0?true" + }, + { + "name": "gift", + "type": "StarGift" + }, + { + "name": "price", + "type": "StarsAmount" + } + ], + "type": "MessageAction" + }, + { + "id": "-1333866363", + "predicate": "messageActionNewCreatorPending", + "params": [ + { + "name": "new_creator_id", + "type": "long" + } + ], + "type": "MessageAction" + }, + { + "id": "-511160261", + "predicate": "messageActionChangeCreator", + "params": [ + { + "name": "new_creator_id", + "type": "long" + } + ], + "type": "MessageAction" + }, + { + "id": "-1082301070", + "predicate": "messageActionNoForwardsToggle", + "params": [ + { + "name": "prev_value", + "type": "Bool" + }, + { + "name": "new_value", + "type": "Bool" + } + ], + "type": "MessageAction" + }, + { + "id": "1042781114", + "predicate": "messageActionNoForwardsRequest", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "expired", + "type": "flags.0?true" + }, + { + "name": "prev_value", + "type": "Bool" + }, + { + "name": "new_value", + "type": "Bool" + } + ], + "type": "MessageAction" + }, + { + "id": "-1650340500", + "predicate": "messageActionPollAppendAnswer", + "params": [ + { + "name": "answer", + "type": "PollAnswer" + } + ], + "type": "MessageAction" + }, + { + "id": "966161628", + "predicate": "messageActionPollDeleteAnswer", + "params": [ + { + "name": "answer", + "type": "PollAnswer" + } + ], + "type": "MessageAction" + }, + { + "id": "375414334", + "predicate": "messageActionManagedBotCreated", + "params": [ + { + "name": "bot_id", + "type": "long" + } + ], + "type": "MessageAction" + }, + { + "id": "-58066957", + "predicate": "dialog", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "pinned", + "type": "flags.2?true" + }, + { + "name": "unread_mark", + "type": "flags.3?true" + }, + { + "name": "view_forum_as_messages", + "type": "flags.6?true" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "top_message", + "type": "int" + }, + { + "name": "read_inbox_max_id", + "type": "int" + }, + { + "name": "read_outbox_max_id", + "type": "int" + }, + { + "name": "unread_count", + "type": "int" + }, + { + "name": "unread_mentions_count", + "type": "int" + }, + { + "name": "unread_reactions_count", + "type": "int" + }, + { + "name": "unread_poll_votes_count", + "type": "int" + }, + { + "name": "notify_settings", + "type": "PeerNotifySettings" + }, + { + "name": "pts", + "type": "flags.0?int" + }, + { + "name": "draft", + "type": "flags.1?DraftMessage" + }, + { + "name": "folder_id", + "type": "flags.4?int" + }, + { + "name": "ttl_period", + "type": "flags.5?int" + } + ], + "type": "Dialog" + }, + { + "id": "1908216652", + "predicate": "dialogFolder", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "pinned", + "type": "flags.2?true" + }, + { + "name": "folder", + "type": "Folder" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "top_message", + "type": "int" + }, + { + "name": "unread_muted_peers_count", + "type": "int" + }, + { + "name": "unread_unmuted_peers_count", + "type": "int" + }, + { + "name": "unread_muted_messages_count", + "type": "int" + }, + { + "name": "unread_unmuted_messages_count", + "type": "int" + } + ], + "type": "Dialog" + }, + { + "id": "590459437", + "predicate": "photoEmpty", + "params": [ + { + "name": "id", + "type": "long" + } + ], + "type": "Photo" + }, + { + "id": "-82216347", + "predicate": "photo", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "has_stickers", + "type": "flags.0?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "file_reference", + "type": "bytes" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "sizes", + "type": "Vector" + }, + { + "name": "video_sizes", + "type": "flags.1?Vector" + }, + { + "name": "dc_id", + "type": "int" + } + ], + "type": "Photo" + }, + { + "id": "236446268", + "predicate": "photoSizeEmpty", + "params": [ + { + "name": "type", + "type": "string" + } + ], + "type": "PhotoSize" + }, + { + "id": "1976012384", + "predicate": "photoSize", + "params": [ + { + "name": "type", + "type": "string" + }, + { + "name": "w", + "type": "int" + }, + { + "name": "h", + "type": "int" + }, + { + "name": "size", + "type": "int" + } + ], + "type": "PhotoSize" + }, + { + "id": "35527382", + "predicate": "photoCachedSize", + "params": [ + { + "name": "type", + "type": "string" + }, + { + "name": "w", + "type": "int" + }, + { + "name": "h", + "type": "int" + }, + { + "name": "bytes", + "type": "bytes" + } + ], + "type": "PhotoSize" + }, + { + "id": "-525288402", + "predicate": "photoStrippedSize", + "params": [ + { + "name": "type", + "type": "string" + }, + { + "name": "bytes", + "type": "bytes" + } + ], + "type": "PhotoSize" + }, + { + "id": "-96535659", + "predicate": "photoSizeProgressive", + "params": [ + { + "name": "type", + "type": "string" + }, + { + "name": "w", + "type": "int" + }, + { + "name": "h", + "type": "int" + }, + { + "name": "sizes", + "type": "Vector" + } + ], + "type": "PhotoSize" + }, + { + "id": "-668906175", + "predicate": "photoPathSize", + "params": [ + { + "name": "type", + "type": "string" + }, + { + "name": "bytes", + "type": "bytes" + } + ], + "type": "PhotoSize" + }, + { + "id": "286776671", + "predicate": "geoPointEmpty", + "params": [], + "type": "GeoPoint" + }, + { + "id": "-1297942941", + "predicate": "geoPoint", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "long", + "type": "double" + }, + { + "name": "lat", + "type": "double" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "accuracy_radius", + "type": "flags.0?int" + } + ], + "type": "GeoPoint" + }, + { + "id": "1577067778", + "predicate": "auth.sentCode", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "type", + "type": "auth.SentCodeType" + }, + { + "name": "phone_code_hash", + "type": "string" + }, + { + "name": "next_type", + "type": "flags.1?auth.CodeType" + }, + { + "name": "timeout", + "type": "flags.2?int" + } + ], + "type": "auth.SentCode" + }, + { + "id": "596704836", + "predicate": "auth.sentCodeSuccess", + "params": [ + { + "name": "authorization", + "type": "auth.Authorization" + } + ], + "type": "auth.SentCode" + }, + { + "id": "-125665601", + "predicate": "auth.sentCodePaymentRequired", + "params": [ + { + "name": "store_product", + "type": "string" + }, + { + "name": "phone_code_hash", + "type": "string" + }, + { + "name": "support_email_address", + "type": "string" + }, + { + "name": "support_email_subject", + "type": "string" + }, + { + "name": "premium_days", + "type": "int" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "amount", + "type": "long" + } + ], + "type": "auth.SentCode" + }, + { + "id": "782418132", + "predicate": "auth.authorization", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "setup_password_required", + "type": "flags.1?true" + }, + { + "name": "otherwise_relogin_days", + "type": "flags.1?int" + }, + { + "name": "tmp_sessions", + "type": "flags.0?int" + }, + { + "name": "future_auth_token", + "type": "flags.2?bytes" + }, + { + "name": "user", + "type": "User" + } + ], + "type": "auth.Authorization" + }, + { + "id": "1148485274", + "predicate": "auth.authorizationSignUpRequired", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "terms_of_service", + "type": "flags.0?help.TermsOfService" + } + ], + "type": "auth.Authorization" + }, + { + "id": "-1271602504", + "predicate": "auth.exportedAuthorization", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "bytes", + "type": "bytes" + } + ], + "type": "auth.ExportedAuthorization" + }, + { + "id": "-1195615476", + "predicate": "inputNotifyPeer", + "params": [ + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "InputNotifyPeer" + }, + { + "id": "423314455", + "predicate": "inputNotifyUsers", + "params": [], + "type": "InputNotifyPeer" + }, + { + "id": "1251338318", + "predicate": "inputNotifyChats", + "params": [], + "type": "InputNotifyPeer" + }, + { + "id": "-1311015810", + "predicate": "inputNotifyBroadcasts", + "params": [], + "type": "InputNotifyPeer" + }, + { + "id": "1548122514", + "predicate": "inputNotifyForumTopic", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "top_msg_id", + "type": "int" + } + ], + "type": "InputNotifyPeer" + }, + { + "id": "-892638494", + "predicate": "inputPeerNotifySettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "show_previews", + "type": "flags.0?Bool" + }, + { + "name": "silent", + "type": "flags.1?Bool" + }, + { + "name": "mute_until", + "type": "flags.2?int" + }, + { + "name": "sound", + "type": "flags.3?NotificationSound" + }, + { + "name": "stories_muted", + "type": "flags.6?Bool" + }, + { + "name": "stories_hide_sender", + "type": "flags.7?Bool" + }, + { + "name": "stories_sound", + "type": "flags.8?NotificationSound" + } + ], + "type": "InputPeerNotifySettings" + }, + { + "id": "-1721619444", + "predicate": "peerNotifySettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "show_previews", + "type": "flags.0?Bool" + }, + { + "name": "silent", + "type": "flags.1?Bool" + }, + { + "name": "mute_until", + "type": "flags.2?int" + }, + { + "name": "ios_sound", + "type": "flags.3?NotificationSound" + }, + { + "name": "android_sound", + "type": "flags.4?NotificationSound" + }, + { + "name": "other_sound", + "type": "flags.5?NotificationSound" + }, + { + "name": "stories_muted", + "type": "flags.6?Bool" + }, + { + "name": "stories_hide_sender", + "type": "flags.7?Bool" + }, + { + "name": "stories_ios_sound", + "type": "flags.8?NotificationSound" + }, + { + "name": "stories_android_sound", + "type": "flags.9?NotificationSound" + }, + { + "name": "stories_other_sound", + "type": "flags.10?NotificationSound" + } + ], + "type": "PeerNotifySettings" + }, + { + "id": "-193510921", + "predicate": "peerSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "report_spam", + "type": "flags.0?true" + }, + { + "name": "add_contact", + "type": "flags.1?true" + }, + { + "name": "block_contact", + "type": "flags.2?true" + }, + { + "name": "share_contact", + "type": "flags.3?true" + }, + { + "name": "need_contacts_exception", + "type": "flags.4?true" + }, + { + "name": "report_geo", + "type": "flags.5?true" + }, + { + "name": "autoarchived", + "type": "flags.7?true" + }, + { + "name": "invite_members", + "type": "flags.8?true" + }, + { + "name": "request_chat_broadcast", + "type": "flags.10?true" + }, + { + "name": "business_bot_paused", + "type": "flags.11?true" + }, + { + "name": "business_bot_can_reply", + "type": "flags.12?true" + }, + { + "name": "geo_distance", + "type": "flags.6?int" + }, + { + "name": "request_chat_title", + "type": "flags.9?string" + }, + { + "name": "request_chat_date", + "type": "flags.9?int" + }, + { + "name": "business_bot_id", + "type": "flags.13?long" + }, + { + "name": "business_bot_manage_url", + "type": "flags.13?string" + }, + { + "name": "charge_paid_message_stars", + "type": "flags.14?long" + }, + { + "name": "registration_month", + "type": "flags.15?string" + }, + { + "name": "phone_country", + "type": "flags.16?string" + }, + { + "name": "name_change_date", + "type": "flags.17?int" + }, + { + "name": "photo_change_date", + "type": "flags.18?int" + } + ], + "type": "PeerSettings" + }, + { + "id": "-1539849235", + "predicate": "wallPaper", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "flags", + "type": "#" + }, + { + "name": "creator", + "type": "flags.0?true" + }, + { + "name": "default", + "type": "flags.1?true" + }, + { + "name": "pattern", + "type": "flags.3?true" + }, + { + "name": "dark", + "type": "flags.4?true" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "slug", + "type": "string" + }, + { + "name": "document", + "type": "Document" + }, + { + "name": "settings", + "type": "flags.2?WallPaperSettings" + } + ], + "type": "WallPaper" + }, + { + "id": "-528465642", + "predicate": "wallPaperNoFile", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "flags", + "type": "#" + }, + { + "name": "default", + "type": "flags.1?true" + }, + { + "name": "dark", + "type": "flags.4?true" + }, + { + "name": "settings", + "type": "flags.2?WallPaperSettings" + } + ], + "type": "WallPaper" + }, + { + "id": "1490799288", + "predicate": "inputReportReasonSpam", + "params": [], + "type": "ReportReason" + }, + { + "id": "505595789", + "predicate": "inputReportReasonViolence", + "params": [], + "type": "ReportReason" + }, + { + "id": "777640226", + "predicate": "inputReportReasonPornography", + "params": [], + "type": "ReportReason" + }, + { + "id": "-1376497949", + "predicate": "inputReportReasonChildAbuse", + "params": [], + "type": "ReportReason" + }, + { + "id": "-1041980751", + "predicate": "inputReportReasonOther", + "params": [], + "type": "ReportReason" + }, + { + "id": "-1685456582", + "predicate": "inputReportReasonCopyright", + "params": [], + "type": "ReportReason" + }, + { + "id": "-606798099", + "predicate": "inputReportReasonGeoIrrelevant", + "params": [], + "type": "ReportReason" + }, + { + "id": "-170010905", + "predicate": "inputReportReasonFake", + "params": [], + "type": "ReportReason" + }, + { + "id": "177124030", + "predicate": "inputReportReasonIllegalDrugs", + "params": [], + "type": "ReportReason" + }, + { + "id": "-1631091139", + "predicate": "inputReportReasonPersonalDetails", + "params": [], + "type": "ReportReason" + }, + { + "id": "114026053", + "predicate": "userFull", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "blocked", + "type": "flags.0?true" + }, + { + "name": "phone_calls_available", + "type": "flags.4?true" + }, + { + "name": "phone_calls_private", + "type": "flags.5?true" + }, + { + "name": "can_pin_message", + "type": "flags.7?true" + }, + { + "name": "has_scheduled", + "type": "flags.12?true" + }, + { + "name": "video_calls_available", + "type": "flags.13?true" + }, + { + "name": "voice_messages_forbidden", + "type": "flags.20?true" + }, + { + "name": "translations_disabled", + "type": "flags.23?true" + }, + { + "name": "stories_pinned_available", + "type": "flags.26?true" + }, + { + "name": "blocked_my_stories_from", + "type": "flags.27?true" + }, + { + "name": "wallpaper_overridden", + "type": "flags.28?true" + }, + { + "name": "contact_require_premium", + "type": "flags.29?true" + }, + { + "name": "read_dates_private", + "type": "flags.30?true" + }, + { + "name": "flags2", + "type": "#" + }, + { + "name": "sponsored_enabled", + "type": "flags2.7?true" + }, + { + "name": "can_view_revenue", + "type": "flags2.9?true" + }, + { + "name": "bot_can_manage_emoji_status", + "type": "flags2.10?true" + }, + { + "name": "display_gifts_button", + "type": "flags2.16?true" + }, + { + "name": "noforwards_my_enabled", + "type": "flags2.23?true" + }, + { + "name": "noforwards_peer_enabled", + "type": "flags2.24?true" + }, + { + "name": "unofficial_security_risk", + "type": "flags2.26?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "about", + "type": "flags.1?string" + }, + { + "name": "settings", + "type": "PeerSettings" + }, + { + "name": "personal_photo", + "type": "flags.21?Photo" + }, + { + "name": "profile_photo", + "type": "flags.2?Photo" + }, + { + "name": "fallback_photo", + "type": "flags.22?Photo" + }, + { + "name": "notify_settings", + "type": "PeerNotifySettings" + }, + { + "name": "bot_info", + "type": "flags.3?BotInfo" + }, + { + "name": "pinned_msg_id", + "type": "flags.6?int" + }, + { + "name": "common_chats_count", + "type": "int" + }, + { + "name": "folder_id", + "type": "flags.11?int" + }, + { + "name": "ttl_period", + "type": "flags.14?int" + }, + { + "name": "theme", + "type": "flags.15?ChatTheme" + }, + { + "name": "private_forward_name", + "type": "flags.16?string" + }, + { + "name": "bot_group_admin_rights", + "type": "flags.17?ChatAdminRights" + }, + { + "name": "bot_broadcast_admin_rights", + "type": "flags.18?ChatAdminRights" + }, + { + "name": "wallpaper", + "type": "flags.24?WallPaper" + }, + { + "name": "stories", + "type": "flags.25?PeerStories" + }, + { + "name": "business_work_hours", + "type": "flags2.0?BusinessWorkHours" + }, + { + "name": "business_location", + "type": "flags2.1?BusinessLocation" + }, + { + "name": "business_greeting_message", + "type": "flags2.2?BusinessGreetingMessage" + }, + { + "name": "business_away_message", + "type": "flags2.3?BusinessAwayMessage" + }, + { + "name": "business_intro", + "type": "flags2.4?BusinessIntro" + }, + { + "name": "birthday", + "type": "flags2.5?Birthday" + }, + { + "name": "personal_channel_id", + "type": "flags2.6?long" + }, + { + "name": "personal_channel_message", + "type": "flags2.6?int" + }, + { + "name": "stargifts_count", + "type": "flags2.8?int" + }, + { + "name": "starref_program", + "type": "flags2.11?StarRefProgram" + }, + { + "name": "bot_verification", + "type": "flags2.12?BotVerification" + }, + { + "name": "send_paid_messages_stars", + "type": "flags2.14?long" + }, + { + "name": "disallowed_gifts", + "type": "flags2.15?DisallowedGiftsSettings" + }, + { + "name": "stars_rating", + "type": "flags2.17?StarsRating" + }, + { + "name": "stars_my_pending_rating", + "type": "flags2.18?StarsRating" + }, + { + "name": "stars_my_pending_rating_date", + "type": "flags2.18?int" + }, + { + "name": "main_tab", + "type": "flags2.20?ProfileTab" + }, + { + "name": "saved_music", + "type": "flags2.21?Document" + }, + { + "name": "note", + "type": "flags2.22?TextWithEntities" + }, + { + "name": "bot_manager_id", + "type": "flags2.25?long" + } + ], + "type": "UserFull" + }, + { + "id": "341499403", + "predicate": "contact", + "params": [ + { + "name": "user_id", + "type": "long" + }, + { + "name": "mutual", + "type": "Bool" + } + ], + "type": "Contact" + }, + { + "id": "-1052885936", + "predicate": "importedContact", + "params": [ + { + "name": "user_id", + "type": "long" + }, + { + "name": "client_id", + "type": "long" + } + ], + "type": "ImportedContact" + }, + { + "id": "383348795", + "predicate": "contactStatus", + "params": [ + { + "name": "user_id", + "type": "long" + }, + { + "name": "status", + "type": "UserStatus" + } + ], + "type": "ContactStatus" + }, + { + "id": "-1219778094", + "predicate": "contacts.contactsNotModified", + "params": [], + "type": "contacts.Contacts" + }, + { + "id": "-353862078", + "predicate": "contacts.contacts", + "params": [ + { + "name": "contacts", + "type": "Vector" + }, + { + "name": "saved_count", + "type": "int" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "contacts.Contacts" + }, + { + "id": "2010127419", + "predicate": "contacts.importedContacts", + "params": [ + { + "name": "imported", + "type": "Vector" + }, + { + "name": "popular_invites", + "type": "Vector" + }, + { + "name": "retry_contacts", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "contacts.ImportedContacts" + }, + { + "id": "182326673", + "predicate": "contacts.blocked", + "params": [ + { + "name": "blocked", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "contacts.Blocked" + }, + { + "id": "-513392236", + "predicate": "contacts.blockedSlice", + "params": [ + { + "name": "count", + "type": "int" + }, + { + "name": "blocked", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "contacts.Blocked" + }, + { + "id": "364538944", + "predicate": "messages.dialogs", + "params": [ + { + "name": "dialogs", + "type": "Vector" + }, + { + "name": "messages", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.Dialogs" + }, + { + "id": "1910543603", + "predicate": "messages.dialogsSlice", + "params": [ + { + "name": "count", + "type": "int" + }, + { + "name": "dialogs", + "type": "Vector" + }, + { + "name": "messages", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.Dialogs" + }, + { + "id": "-253500010", + "predicate": "messages.dialogsNotModified", + "params": [ + { + "name": "count", + "type": "int" + } + ], + "type": "messages.Dialogs" + }, + { + "id": "494135274", + "predicate": "messages.messages", + "params": [ + { + "name": "messages", + "type": "Vector" + }, + { + "name": "topics", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.Messages" + }, + { + "id": "1595959062", + "predicate": "messages.messagesSlice", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "inexact", + "type": "flags.1?true" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "next_rate", + "type": "flags.0?int" + }, + { + "name": "offset_id_offset", + "type": "flags.2?int" + }, + { + "name": "search_flood", + "type": "flags.3?SearchPostsFlood" + }, + { + "name": "messages", + "type": "Vector" + }, + { + "name": "topics", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.Messages" + }, + { + "id": "-948520370", + "predicate": "messages.channelMessages", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "inexact", + "type": "flags.1?true" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "offset_id_offset", + "type": "flags.2?int" + }, + { + "name": "messages", + "type": "Vector" + }, + { + "name": "topics", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.Messages" + }, + { + "id": "1951620897", + "predicate": "messages.messagesNotModified", + "params": [ + { + "name": "count", + "type": "int" + } + ], + "type": "messages.Messages" + }, + { + "id": "1694474197", + "predicate": "messages.chats", + "params": [ + { + "name": "chats", + "type": "Vector" + } + ], + "type": "messages.Chats" + }, + { + "id": "-1663561404", + "predicate": "messages.chatsSlice", + "params": [ + { + "name": "count", + "type": "int" + }, + { + "name": "chats", + "type": "Vector" + } + ], + "type": "messages.Chats" + }, + { + "id": "-438840932", + "predicate": "messages.chatFull", + "params": [ + { + "name": "full_chat", + "type": "ChatFull" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.ChatFull" + }, + { + "id": "-1269012015", + "predicate": "messages.affectedHistory", + "params": [ + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + }, + { + "name": "offset", + "type": "int" + } + ], + "type": "messages.AffectedHistory" + }, + { + "id": "1474492012", + "predicate": "inputMessagesFilterEmpty", + "params": [], + "type": "MessagesFilter" + }, + { + "id": "-1777752804", + "predicate": "inputMessagesFilterPhotos", + "params": [], + "type": "MessagesFilter" + }, + { + "id": "-1614803355", + "predicate": "inputMessagesFilterVideo", + "params": [], + "type": "MessagesFilter" + }, + { + "id": "1458172132", + "predicate": "inputMessagesFilterPhotoVideo", + "params": [], + "type": "MessagesFilter" + }, + { + "id": "-1629621880", + "predicate": "inputMessagesFilterDocument", + "params": [], + "type": "MessagesFilter" + }, + { + "id": "2129714567", + "predicate": "inputMessagesFilterUrl", + "params": [], + "type": "MessagesFilter" + }, + { + "id": "-3644025", + "predicate": "inputMessagesFilterGif", + "params": [], + "type": "MessagesFilter" + }, + { + "id": "1358283666", + "predicate": "inputMessagesFilterVoice", + "params": [], + "type": "MessagesFilter" + }, + { + "id": "928101534", + "predicate": "inputMessagesFilterMusic", + "params": [], + "type": "MessagesFilter" + }, + { + "id": "975236280", + "predicate": "inputMessagesFilterChatPhotos", + "params": [], + "type": "MessagesFilter" + }, + { + "id": "-2134272152", + "predicate": "inputMessagesFilterPhoneCalls", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "missed", + "type": "flags.0?true" + } + ], + "type": "MessagesFilter" + }, + { + "id": "2054952868", + "predicate": "inputMessagesFilterRoundVoice", + "params": [], + "type": "MessagesFilter" + }, + { + "id": "-1253451181", + "predicate": "inputMessagesFilterRoundVideo", + "params": [], + "type": "MessagesFilter" + }, + { + "id": "-1040652646", + "predicate": "inputMessagesFilterMyMentions", + "params": [], + "type": "MessagesFilter" + }, + { + "id": "-419271411", + "predicate": "inputMessagesFilterGeo", + "params": [], + "type": "MessagesFilter" + }, + { + "id": "-530392189", + "predicate": "inputMessagesFilterContacts", + "params": [], + "type": "MessagesFilter" + }, + { + "id": "464520273", + "predicate": "inputMessagesFilterPinned", + "params": [], + "type": "MessagesFilter" + }, + { + "id": "-97793782", + "predicate": "inputMessagesFilterPoll", + "params": [], + "type": "MessagesFilter" + }, + { + "id": "522914557", + "predicate": "updateNewMessage", + "params": [ + { + "name": "message", + "type": "Message" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "1318109142", + "predicate": "updateMessageID", + "params": [ + { + "name": "id", + "type": "int" + }, + { + "name": "random_id", + "type": "long" + } + ], + "type": "Update" + }, + { + "id": "-1576161051", + "predicate": "updateDeleteMessages", + "params": [ + { + "name": "messages", + "type": "Vector" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "706199388", + "predicate": "updateUserTyping", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "top_msg_id", + "type": "flags.0?int" + }, + { + "name": "action", + "type": "SendMessageAction" + } + ], + "type": "Update" + }, + { + "id": "-2092401936", + "predicate": "updateChatUserTyping", + "params": [ + { + "name": "chat_id", + "type": "long" + }, + { + "name": "from_id", + "type": "Peer" + }, + { + "name": "action", + "type": "SendMessageAction" + } + ], + "type": "Update" + }, + { + "id": "125178264", + "predicate": "updateChatParticipants", + "params": [ + { + "name": "participants", + "type": "ChatParticipants" + } + ], + "type": "Update" + }, + { + "id": "-440534818", + "predicate": "updateUserStatus", + "params": [ + { + "name": "user_id", + "type": "long" + }, + { + "name": "status", + "type": "UserStatus" + } + ], + "type": "Update" + }, + { + "id": "-1484486364", + "predicate": "updateUserName", + "params": [ + { + "name": "user_id", + "type": "long" + }, + { + "name": "first_name", + "type": "string" + }, + { + "name": "last_name", + "type": "string" + }, + { + "name": "usernames", + "type": "Vector" + } + ], + "type": "Update" + }, + { + "id": "-1991136273", + "predicate": "updateNewAuthorization", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "unconfirmed", + "type": "flags.0?true" + }, + { + "name": "hash", + "type": "long" + }, + { + "name": "date", + "type": "flags.0?int" + }, + { + "name": "device", + "type": "flags.0?string" + }, + { + "name": "location", + "type": "flags.0?string" + } + ], + "type": "Update" + }, + { + "id": "314359194", + "predicate": "updateNewEncryptedMessage", + "params": [ + { + "name": "message", + "type": "EncryptedMessage" + }, + { + "name": "qts", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "386986326", + "predicate": "updateEncryptedChatTyping", + "params": [ + { + "name": "chat_id", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-1264392051", + "predicate": "updateEncryption", + "params": [ + { + "name": "chat", + "type": "EncryptedChat" + }, + { + "name": "date", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "956179895", + "predicate": "updateEncryptedMessagesRead", + "params": [ + { + "name": "chat_id", + "type": "int" + }, + { + "name": "max_date", + "type": "int" + }, + { + "name": "date", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "1037718609", + "predicate": "updateChatParticipantAdd", + "params": [ + { + "name": "chat_id", + "type": "long" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "inviter_id", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "version", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-483443337", + "predicate": "updateChatParticipantDelete", + "params": [ + { + "name": "chat_id", + "type": "long" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "version", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-1906403213", + "predicate": "updateDcOptions", + "params": [ + { + "name": "dc_options", + "type": "Vector" + } + ], + "type": "Update" + }, + { + "id": "-1094555409", + "predicate": "updateNotifySettings", + "params": [ + { + "name": "peer", + "type": "NotifyPeer" + }, + { + "name": "notify_settings", + "type": "PeerNotifySettings" + } + ], + "type": "Update" + }, + { + "id": "-337352679", + "predicate": "updateServiceNotification", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "popup", + "type": "flags.0?true" + }, + { + "name": "invert_media", + "type": "flags.2?true" + }, + { + "name": "inbox_date", + "type": "flags.1?int" + }, + { + "name": "type", + "type": "string" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "media", + "type": "MessageMedia" + }, + { + "name": "entities", + "type": "Vector" + } + ], + "type": "Update" + }, + { + "id": "-298113238", + "predicate": "updatePrivacy", + "params": [ + { + "name": "key", + "type": "PrivacyKey" + }, + { + "name": "rules", + "type": "Vector" + } + ], + "type": "Update" + }, + { + "id": "88680979", + "predicate": "updateUserPhone", + "params": [ + { + "name": "user_id", + "type": "long" + }, + { + "name": "phone", + "type": "string" + } + ], + "type": "Update" + }, + { + "id": "-1635468135", + "predicate": "updateReadHistoryInbox", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "folder_id", + "type": "flags.0?int" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "top_msg_id", + "type": "flags.1?int" + }, + { + "name": "max_id", + "type": "int" + }, + { + "name": "still_unread_count", + "type": "int" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "791617983", + "predicate": "updateReadHistoryOutbox", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "max_id", + "type": "int" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "2139689491", + "predicate": "updateWebPage", + "params": [ + { + "name": "webpage", + "type": "WebPage" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-131960447", + "predicate": "updateReadMessagesContents", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "messages", + "type": "Vector" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + }, + { + "name": "date", + "type": "flags.0?int" + } + ], + "type": "Update" + }, + { + "id": "277713951", + "predicate": "updateChannelTooLong", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "channel_id", + "type": "long" + }, + { + "name": "pts", + "type": "flags.0?int" + } + ], + "type": "Update" + }, + { + "id": "1666927625", + "predicate": "updateChannel", + "params": [ + { + "name": "channel_id", + "type": "long" + } + ], + "type": "Update" + }, + { + "id": "1656358105", + "predicate": "updateNewChannelMessage", + "params": [ + { + "name": "message", + "type": "Message" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-1842450928", + "predicate": "updateReadChannelInbox", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "folder_id", + "type": "flags.0?int" + }, + { + "name": "channel_id", + "type": "long" + }, + { + "name": "max_id", + "type": "int" + }, + { + "name": "still_unread_count", + "type": "int" + }, + { + "name": "pts", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-1020437742", + "predicate": "updateDeleteChannelMessages", + "params": [ + { + "name": "channel_id", + "type": "long" + }, + { + "name": "messages", + "type": "Vector" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-232346616", + "predicate": "updateChannelMessageViews", + "params": [ + { + "name": "channel_id", + "type": "long" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "views", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-674602590", + "predicate": "updateChatParticipantAdmin", + "params": [ + { + "name": "chat_id", + "type": "long" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "is_admin", + "type": "Bool" + }, + { + "name": "version", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "1753886890", + "predicate": "updateNewStickerSet", + "params": [ + { + "name": "stickerset", + "type": "messages.StickerSet" + } + ], + "type": "Update" + }, + { + "id": "196268545", + "predicate": "updateStickerSetsOrder", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "masks", + "type": "flags.0?true" + }, + { + "name": "emojis", + "type": "flags.1?true" + }, + { + "name": "order", + "type": "Vector" + } + ], + "type": "Update" + }, + { + "id": "834816008", + "predicate": "updateStickerSets", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "masks", + "type": "flags.0?true" + }, + { + "name": "emojis", + "type": "flags.1?true" + } + ], + "type": "Update" + }, + { + "id": "-1821035490", + "predicate": "updateSavedGifs", + "params": [], + "type": "Update" + }, + { + "id": "1232025500", + "predicate": "updateBotInlineQuery", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "query_id", + "type": "long" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "query", + "type": "string" + }, + { + "name": "geo", + "type": "flags.0?GeoPoint" + }, + { + "name": "peer_type", + "type": "flags.1?InlineQueryPeerType" + }, + { + "name": "offset", + "type": "string" + } + ], + "type": "Update" + }, + { + "id": "317794823", + "predicate": "updateBotInlineSend", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "query", + "type": "string" + }, + { + "name": "geo", + "type": "flags.0?GeoPoint" + }, + { + "name": "id", + "type": "string" + }, + { + "name": "msg_id", + "type": "flags.1?InputBotInlineMessageID" + } + ], + "type": "Update" + }, + { + "id": "457133559", + "predicate": "updateEditChannelMessage", + "params": [ + { + "name": "message", + "type": "Message" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-1177566067", + "predicate": "updateBotCallbackQuery", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "query_id", + "type": "long" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "chat_instance", + "type": "long" + }, + { + "name": "data", + "type": "flags.0?bytes" + }, + { + "name": "game_short_name", + "type": "flags.1?string" + } + ], + "type": "Update" + }, + { + "id": "-469536605", + "predicate": "updateEditMessage", + "params": [ + { + "name": "message", + "type": "Message" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "1763610706", + "predicate": "updateInlineBotCallbackQuery", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "query_id", + "type": "long" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "msg_id", + "type": "InputBotInlineMessageID" + }, + { + "name": "chat_instance", + "type": "long" + }, + { + "name": "data", + "type": "flags.0?bytes" + }, + { + "name": "game_short_name", + "type": "flags.1?string" + } + ], + "type": "Update" + }, + { + "id": "-1218471511", + "predicate": "updateReadChannelOutbox", + "params": [ + { + "name": "channel_id", + "type": "long" + }, + { + "name": "max_id", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-302247650", + "predicate": "updateDraftMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "top_msg_id", + "type": "flags.0?int" + }, + { + "name": "saved_peer_id", + "type": "flags.1?Peer" + }, + { + "name": "draft", + "type": "DraftMessage" + } + ], + "type": "Update" + }, + { + "id": "1461528386", + "predicate": "updateReadFeaturedStickers", + "params": [], + "type": "Update" + }, + { + "id": "-1706939360", + "predicate": "updateRecentStickers", + "params": [], + "type": "Update" + }, + { + "id": "-1574314746", + "predicate": "updateConfig", + "params": [], + "type": "Update" + }, + { + "id": "861169551", + "predicate": "updatePtsChanged", + "params": [], + "type": "Update" + }, + { + "id": "791390623", + "predicate": "updateChannelWebPage", + "params": [ + { + "name": "channel_id", + "type": "long" + }, + { + "name": "webpage", + "type": "WebPage" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "1852826908", + "predicate": "updateDialogPinned", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "pinned", + "type": "flags.0?true" + }, + { + "name": "folder_id", + "type": "flags.1?int" + }, + { + "name": "peer", + "type": "DialogPeer" + } + ], + "type": "Update" + }, + { + "id": "-99664734", + "predicate": "updatePinnedDialogs", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "folder_id", + "type": "flags.1?int" + }, + { + "name": "order", + "type": "flags.0?Vector" + } + ], + "type": "Update" + }, + { + "id": "-2095595325", + "predicate": "updateBotWebhookJSON", + "params": [ + { + "name": "data", + "type": "DataJSON" + } + ], + "type": "Update" + }, + { + "id": "-1684914010", + "predicate": "updateBotWebhookJSONQuery", + "params": [ + { + "name": "query_id", + "type": "long" + }, + { + "name": "data", + "type": "DataJSON" + }, + { + "name": "timeout", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-1246823043", + "predicate": "updateBotShippingQuery", + "params": [ + { + "name": "query_id", + "type": "long" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "payload", + "type": "bytes" + }, + { + "name": "shipping_address", + "type": "PostAddress" + } + ], + "type": "Update" + }, + { + "id": "-1934976362", + "predicate": "updateBotPrecheckoutQuery", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "query_id", + "type": "long" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "payload", + "type": "bytes" + }, + { + "name": "info", + "type": "flags.0?PaymentRequestedInfo" + }, + { + "name": "shipping_option_id", + "type": "flags.1?string" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "total_amount", + "type": "long" + } + ], + "type": "Update" + }, + { + "id": "-1425052898", + "predicate": "updatePhoneCall", + "params": [ + { + "name": "phone_call", + "type": "PhoneCall" + } + ], + "type": "Update" + }, + { + "id": "1180041828", + "predicate": "updateLangPackTooLong", + "params": [ + { + "name": "lang_code", + "type": "string" + } + ], + "type": "Update" + }, + { + "id": "1442983757", + "predicate": "updateLangPack", + "params": [ + { + "name": "difference", + "type": "LangPackDifference" + } + ], + "type": "Update" + }, + { + "id": "-451831443", + "predicate": "updateFavedStickers", + "params": [], + "type": "Update" + }, + { + "id": "636691703", + "predicate": "updateChannelReadMessagesContents", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "channel_id", + "type": "long" + }, + { + "name": "top_msg_id", + "type": "flags.0?int" + }, + { + "name": "saved_peer_id", + "type": "flags.1?Peer" + }, + { + "name": "messages", + "type": "Vector" + } + ], + "type": "Update" + }, + { + "id": "1887741886", + "predicate": "updateContactsReset", + "params": [], + "type": "Update" + }, + { + "id": "-1304443240", + "predicate": "updateChannelAvailableMessages", + "params": [ + { + "name": "channel_id", + "type": "long" + }, + { + "name": "available_min_id", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-1235684802", + "predicate": "updateDialogUnreadMark", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "unread", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "DialogPeer" + }, + { + "name": "saved_peer_id", + "type": "flags.1?Peer" + } + ], + "type": "Update" + }, + { + "id": "-699641301", + "predicate": "updateMessagePoll", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "flags.1?Peer" + }, + { + "name": "msg_id", + "type": "flags.1?int" + }, + { + "name": "top_msg_id", + "type": "flags.2?int" + }, + { + "name": "poll_id", + "type": "long" + }, + { + "name": "poll", + "type": "flags.0?Poll" + }, + { + "name": "results", + "type": "PollResults" + } + ], + "type": "Update" + }, + { + "id": "1421875280", + "predicate": "updateChatDefaultBannedRights", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "default_banned_rights", + "type": "ChatBannedRights" + }, + { + "name": "version", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "422972864", + "predicate": "updateFolderPeers", + "params": [ + { + "name": "folder_peers", + "type": "Vector" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "1786671974", + "predicate": "updatePeerSettings", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "settings", + "type": "PeerSettings" + } + ], + "type": "Update" + }, + { + "id": "-1263546448", + "predicate": "updatePeerLocated", + "params": [ + { + "name": "peers", + "type": "Vector" + } + ], + "type": "Update" + }, + { + "id": "967122427", + "predicate": "updateNewScheduledMessage", + "params": [ + { + "name": "message", + "type": "Message" + } + ], + "type": "Update" + }, + { + "id": "-223929981", + "predicate": "updateDeleteScheduledMessages", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "messages", + "type": "Vector" + }, + { + "name": "sent_messages", + "type": "flags.0?Vector" + } + ], + "type": "Update" + }, + { + "id": "-2112423005", + "predicate": "updateTheme", + "params": [ + { + "name": "theme", + "type": "Theme" + } + ], + "type": "Update" + }, + { + "id": "-2027964103", + "predicate": "updateGeoLiveViewed", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "msg_id", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "1448076945", + "predicate": "updateLoginToken", + "params": [], + "type": "Update" + }, + { + "id": "1989799956", + "predicate": "updateMessagePollVote", + "params": [ + { + "name": "poll_id", + "type": "long" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "options", + "type": "Vector" + }, + { + "name": "positions", + "type": "Vector" + }, + { + "name": "qts", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "654302845", + "predicate": "updateDialogFilter", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "filter", + "type": "flags.0?DialogFilter" + } + ], + "type": "Update" + }, + { + "id": "-1512627963", + "predicate": "updateDialogFilterOrder", + "params": [ + { + "name": "order", + "type": "Vector" + } + ], + "type": "Update" + }, + { + "id": "889491791", + "predicate": "updateDialogFilters", + "params": [], + "type": "Update" + }, + { + "id": "643940105", + "predicate": "updatePhoneCallSignalingData", + "params": [ + { + "name": "phone_call_id", + "type": "long" + }, + { + "name": "data", + "type": "bytes" + } + ], + "type": "Update" + }, + { + "id": "-761649164", + "predicate": "updateChannelMessageForwards", + "params": [ + { + "name": "channel_id", + "type": "long" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "forwards", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-693004986", + "predicate": "updateReadChannelDiscussionInbox", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "channel_id", + "type": "long" + }, + { + "name": "top_msg_id", + "type": "int" + }, + { + "name": "read_max_id", + "type": "int" + }, + { + "name": "broadcast_id", + "type": "flags.0?long" + }, + { + "name": "broadcast_post", + "type": "flags.0?int" + } + ], + "type": "Update" + }, + { + "id": "1767677564", + "predicate": "updateReadChannelDiscussionOutbox", + "params": [ + { + "name": "channel_id", + "type": "long" + }, + { + "name": "top_msg_id", + "type": "int" + }, + { + "name": "read_max_id", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-337610926", + "predicate": "updatePeerBlocked", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "blocked", + "type": "flags.0?true" + }, + { + "name": "blocked_my_stories_from", + "type": "flags.1?true" + }, + { + "name": "peer_id", + "type": "Peer" + } + ], + "type": "Update" + }, + { + "id": "-1937192669", + "predicate": "updateChannelUserTyping", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "channel_id", + "type": "long" + }, + { + "name": "top_msg_id", + "type": "flags.0?int" + }, + { + "name": "from_id", + "type": "Peer" + }, + { + "name": "action", + "type": "SendMessageAction" + } + ], + "type": "Update" + }, + { + "id": "-309990731", + "predicate": "updatePinnedMessages", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "pinned", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "messages", + "type": "Vector" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "1538885128", + "predicate": "updatePinnedChannelMessages", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "pinned", + "type": "flags.0?true" + }, + { + "name": "channel_id", + "type": "long" + }, + { + "name": "messages", + "type": "Vector" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-124097970", + "predicate": "updateChat", + "params": [ + { + "name": "chat_id", + "type": "long" + } + ], + "type": "Update" + }, + { + "id": "-219423922", + "predicate": "updateGroupCallParticipants", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "participants", + "type": "Vector" + }, + { + "name": "version", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-1658710304", + "predicate": "updateGroupCall", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "live_story", + "type": "flags.2?true" + }, + { + "name": "peer", + "type": "flags.1?Peer" + }, + { + "name": "call", + "type": "GroupCall" + } + ], + "type": "Update" + }, + { + "id": "-1147422299", + "predicate": "updatePeerHistoryTTL", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "ttl_period", + "type": "flags.0?int" + } + ], + "type": "Update" + }, + { + "id": "-796432838", + "predicate": "updateChatParticipant", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "chat_id", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "actor_id", + "type": "long" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "prev_participant", + "type": "flags.0?ChatParticipant" + }, + { + "name": "new_participant", + "type": "flags.1?ChatParticipant" + }, + { + "name": "invite", + "type": "flags.2?ExportedChatInvite" + }, + { + "name": "qts", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-1738720581", + "predicate": "updateChannelParticipant", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "via_chatlist", + "type": "flags.3?true" + }, + { + "name": "channel_id", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "actor_id", + "type": "long" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "prev_participant", + "type": "flags.0?ChannelParticipant" + }, + { + "name": "new_participant", + "type": "flags.1?ChannelParticipant" + }, + { + "name": "invite", + "type": "flags.2?ExportedChatInvite" + }, + { + "name": "qts", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-997782967", + "predicate": "updateBotStopped", + "params": [ + { + "name": "user_id", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "stopped", + "type": "Bool" + }, + { + "name": "qts", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "192428418", + "predicate": "updateGroupCallConnection", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "presentation", + "type": "flags.0?true" + }, + { + "name": "params", + "type": "DataJSON" + } + ], + "type": "Update" + }, + { + "id": "1299263278", + "predicate": "updateBotCommands", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "bot_id", + "type": "long" + }, + { + "name": "commands", + "type": "Vector" + } + ], + "type": "Update" + }, + { + "id": "1885586395", + "predicate": "updatePendingJoinRequests", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "requests_pending", + "type": "int" + }, + { + "name": "recent_requesters", + "type": "Vector" + } + ], + "type": "Update" + }, + { + "id": "299870598", + "predicate": "updateBotChatInviteRequester", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "about", + "type": "string" + }, + { + "name": "invite", + "type": "ExportedChatInvite" + }, + { + "name": "qts", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "506035194", + "predicate": "updateMessageReactions", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "top_msg_id", + "type": "flags.0?int" + }, + { + "name": "saved_peer_id", + "type": "flags.1?Peer" + }, + { + "name": "reactions", + "type": "MessageReactions" + } + ], + "type": "Update" + }, + { + "id": "397910539", + "predicate": "updateAttachMenuBots", + "params": [], + "type": "Update" + }, + { + "id": "361936797", + "predicate": "updateWebViewResultSent", + "params": [ + { + "name": "query_id", + "type": "long" + } + ], + "type": "Update" + }, + { + "id": "347625491", + "predicate": "updateBotMenuButton", + "params": [ + { + "name": "bot_id", + "type": "long" + }, + { + "name": "button", + "type": "BotMenuButton" + } + ], + "type": "Update" + }, + { + "id": "1960361625", + "predicate": "updateSavedRingtones", + "params": [], + "type": "Update" + }, + { + "id": "8703322", + "predicate": "updateTranscribedAudio", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "pending", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "transcription_id", + "type": "long" + }, + { + "name": "text", + "type": "string" + } + ], + "type": "Update" + }, + { + "id": "-78886548", + "predicate": "updateReadFeaturedEmojiStickers", + "params": [], + "type": "Update" + }, + { + "id": "674706841", + "predicate": "updateUserEmojiStatus", + "params": [ + { + "name": "user_id", + "type": "long" + }, + { + "name": "emoji_status", + "type": "EmojiStatus" + } + ], + "type": "Update" + }, + { + "id": "821314523", + "predicate": "updateRecentEmojiStatuses", + "params": [], + "type": "Update" + }, + { + "id": "1870160884", + "predicate": "updateRecentReactions", + "params": [], + "type": "Update" + }, + { + "id": "-2030252155", + "predicate": "updateMoveStickerSetToTop", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "masks", + "type": "flags.0?true" + }, + { + "name": "emojis", + "type": "flags.1?true" + }, + { + "name": "stickerset", + "type": "long" + } + ], + "type": "Update" + }, + { + "id": "-710666460", + "predicate": "updateMessageExtendedMedia", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "extended_media", + "type": "Vector" + } + ], + "type": "Update" + }, + { + "id": "542282808", + "predicate": "updateUser", + "params": [ + { + "name": "user_id", + "type": "long" + } + ], + "type": "Update" + }, + { + "id": "-335171433", + "predicate": "updateAutoSaveSettings", + "params": [], + "type": "Update" + }, + { + "id": "1974712216", + "predicate": "updateStory", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "story", + "type": "StoryItem" + } + ], + "type": "Update" + }, + { + "id": "-145845461", + "predicate": "updateReadStories", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "max_id", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "468923833", + "predicate": "updateStoryID", + "params": [ + { + "name": "id", + "type": "int" + }, + { + "name": "random_id", + "type": "long" + } + ], + "type": "Update" + }, + { + "id": "738741697", + "predicate": "updateStoriesStealthMode", + "params": [ + { + "name": "stealth_mode", + "type": "StoriesStealthMode" + } + ], + "type": "Update" + }, + { + "id": "2103604867", + "predicate": "updateSentStoryReaction", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "story_id", + "type": "int" + }, + { + "name": "reaction", + "type": "Reaction" + } + ], + "type": "Update" + }, + { + "id": "-1873947492", + "predicate": "updateBotChatBoost", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "boost", + "type": "Boost" + }, + { + "name": "qts", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "129403168", + "predicate": "updateChannelViewForumAsMessages", + "params": [ + { + "name": "channel_id", + "type": "long" + }, + { + "name": "enabled", + "type": "Bool" + } + ], + "type": "Update" + }, + { + "id": "-1371598819", + "predicate": "updatePeerWallpaper", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "wallpaper_overridden", + "type": "flags.1?true" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "wallpaper", + "type": "flags.0?WallPaper" + } + ], + "type": "Update" + }, + { + "id": "-1407069234", + "predicate": "updateBotMessageReaction", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "actor", + "type": "Peer" + }, + { + "name": "old_reactions", + "type": "Vector" + }, + { + "name": "new_reactions", + "type": "Vector" + }, + { + "name": "qts", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "164329305", + "predicate": "updateBotMessageReactions", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "reactions", + "type": "Vector" + }, + { + "name": "qts", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-1364222348", + "predicate": "updateSavedDialogPinned", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "pinned", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "DialogPeer" + } + ], + "type": "Update" + }, + { + "id": "1751942566", + "predicate": "updatePinnedSavedDialogs", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "order", + "type": "flags.0?Vector" + } + ], + "type": "Update" + }, + { + "id": "969307186", + "predicate": "updateSavedReactionTags", + "params": [], + "type": "Update" + }, + { + "id": "-245208620", + "predicate": "updateSmsJob", + "params": [ + { + "name": "job_id", + "type": "string" + } + ], + "type": "Update" + }, + { + "id": "-112784718", + "predicate": "updateQuickReplies", + "params": [ + { + "name": "quick_replies", + "type": "Vector" + } + ], + "type": "Update" + }, + { + "id": "-180508905", + "predicate": "updateNewQuickReply", + "params": [ + { + "name": "quick_reply", + "type": "QuickReply" + } + ], + "type": "Update" + }, + { + "id": "1407644140", + "predicate": "updateDeleteQuickReply", + "params": [ + { + "name": "shortcut_id", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "1040518415", + "predicate": "updateQuickReplyMessage", + "params": [ + { + "name": "message", + "type": "Message" + } + ], + "type": "Update" + }, + { + "id": "1450174413", + "predicate": "updateDeleteQuickReplyMessages", + "params": [ + { + "name": "shortcut_id", + "type": "int" + }, + { + "name": "messages", + "type": "Vector" + } + ], + "type": "Update" + }, + { + "id": "-1964652166", + "predicate": "updateBotBusinessConnect", + "params": [ + { + "name": "connection", + "type": "BotBusinessConnection" + }, + { + "name": "qts", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-1646578564", + "predicate": "updateBotNewBusinessMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "connection_id", + "type": "string" + }, + { + "name": "message", + "type": "Message" + }, + { + "name": "reply_to_message", + "type": "flags.0?Message" + }, + { + "name": "qts", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "132077692", + "predicate": "updateBotEditBusinessMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "connection_id", + "type": "string" + }, + { + "name": "message", + "type": "Message" + }, + { + "name": "reply_to_message", + "type": "flags.0?Message" + }, + { + "name": "qts", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-1607821266", + "predicate": "updateBotDeleteBusinessMessage", + "params": [ + { + "name": "connection_id", + "type": "string" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "messages", + "type": "Vector" + }, + { + "name": "qts", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "405070859", + "predicate": "updateNewStoryReaction", + "params": [ + { + "name": "story_id", + "type": "int" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "reaction", + "type": "Reaction" + } + ], + "type": "Update" + }, + { + "id": "1317053305", + "predicate": "updateStarsBalance", + "params": [ + { + "name": "balance", + "type": "StarsAmount" + } + ], + "type": "Update" + }, + { + "id": "513998247", + "predicate": "updateBusinessBotCallbackQuery", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "query_id", + "type": "long" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "connection_id", + "type": "string" + }, + { + "name": "message", + "type": "Message" + }, + { + "name": "reply_to_message", + "type": "flags.2?Message" + }, + { + "name": "chat_instance", + "type": "long" + }, + { + "name": "data", + "type": "flags.0?bytes" + } + ], + "type": "Update" + }, + { + "id": "-1518030823", + "predicate": "updateStarsRevenueStatus", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "status", + "type": "StarsRevenueStatus" + } + ], + "type": "Update" + }, + { + "id": "675009298", + "predicate": "updateBotPurchasedPaidMedia", + "params": [ + { + "name": "user_id", + "type": "long" + }, + { + "name": "payload", + "type": "string" + }, + { + "name": "qts", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-1955438642", + "predicate": "updatePaidReactionPrivacy", + "params": [ + { + "name": "private", + "type": "PaidReactionPrivacy" + } + ], + "type": "Update" + }, + { + "id": "1347068303", + "predicate": "updateSentPhoneCode", + "params": [ + { + "name": "sent_code", + "type": "auth.SentCode" + } + ], + "type": "Update" + }, + { + "id": "-1535694705", + "predicate": "updateGroupCallChainBlocks", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "sub_chain_id", + "type": "int" + }, + { + "name": "blocks", + "type": "Vector" + }, + { + "name": "next_offset", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "2008081266", + "predicate": "updateReadMonoForumInbox", + "params": [ + { + "name": "channel_id", + "type": "long" + }, + { + "name": "saved_peer_id", + "type": "Peer" + }, + { + "name": "read_max_id", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-1532521610", + "predicate": "updateReadMonoForumOutbox", + "params": [ + { + "name": "channel_id", + "type": "long" + }, + { + "name": "saved_peer_id", + "type": "Peer" + }, + { + "name": "read_max_id", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-1618924792", + "predicate": "updateMonoForumNoPaidException", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "exception", + "type": "flags.0?true" + }, + { + "name": "channel_id", + "type": "long" + }, + { + "name": "saved_peer_id", + "type": "Peer" + } + ], + "type": "Update" + }, + { + "id": "-667783411", + "predicate": "updateGroupCallMessage", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "message", + "type": "GroupCallMessage" + } + ], + "type": "Update" + }, + { + "id": "-917002394", + "predicate": "updateGroupCallEncryptedMessage", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "from_id", + "type": "Peer" + }, + { + "name": "encrypted_message", + "type": "bytes" + } + ], + "type": "Update" + }, + { + "id": "1748708434", + "predicate": "updatePinnedForumTopic", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "pinned", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "topic_id", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-554613808", + "predicate": "updatePinnedForumTopics", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "order", + "type": "flags.0?Vector" + } + ], + "type": "Update" + }, + { + "id": "1048963372", + "predicate": "updateDeleteGroupCallMessages", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "messages", + "type": "Vector" + } + ], + "type": "Update" + }, + { + "id": "1222788802", + "predicate": "updateStarGiftAuctionState", + "params": [ + { + "name": "gift_id", + "type": "long" + }, + { + "name": "state", + "type": "StarGiftAuctionState" + } + ], + "type": "Update" + }, + { + "id": "-598150370", + "predicate": "updateStarGiftAuctionUserState", + "params": [ + { + "name": "gift_id", + "type": "long" + }, + { + "name": "user_state", + "type": "StarGiftAuctionUserState" + } + ], + "type": "Update" + }, + { + "id": "-73640838", + "predicate": "updateEmojiGameInfo", + "params": [ + { + "name": "info", + "type": "messages.EmojiGameInfo" + } + ], + "type": "Update" + }, + { + "id": "-1408818108", + "predicate": "updateStarGiftCraftFail", + "params": [], + "type": "Update" + }, + { + "id": "-1115461703", + "predicate": "updateChatParticipantRank", + "params": [ + { + "name": "chat_id", + "type": "long" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "rank", + "type": "string" + }, + { + "name": "version", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "1216408986", + "predicate": "updateManagedBot", + "params": [ + { + "name": "user_id", + "type": "long" + }, + { + "name": "bot_id", + "type": "long" + }, + { + "name": "qts", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-841742019", + "predicate": "updateBotGuestChatQuery", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "query_id", + "type": "long" + }, + { + "name": "message", + "type": "Message" + }, + { + "name": "reference_messages", + "type": "flags.0?Vector" + }, + { + "name": "qts", + "type": "int" + } + ], + "type": "Update" + }, + { + "id": "-1945136645", + "predicate": "updateAiComposeTones", + "params": [], + "type": "Update" + }, + { + "id": "-1519637954", + "predicate": "updates.state", + "params": [ + { + "name": "pts", + "type": "int" + }, + { + "name": "qts", + "type": "int" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "seq", + "type": "int" + }, + { + "name": "unread_count", + "type": "int" + } + ], + "type": "updates.State" + }, + { + "id": "1567990072", + "predicate": "updates.differenceEmpty", + "params": [ + { + "name": "date", + "type": "int" + }, + { + "name": "seq", + "type": "int" + } + ], + "type": "updates.Difference" + }, + { + "id": "16030880", + "predicate": "updates.difference", + "params": [ + { + "name": "new_messages", + "type": "Vector" + }, + { + "name": "new_encrypted_messages", + "type": "Vector" + }, + { + "name": "other_updates", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "state", + "type": "updates.State" + } + ], + "type": "updates.Difference" + }, + { + "id": "-1459938943", + "predicate": "updates.differenceSlice", + "params": [ + { + "name": "new_messages", + "type": "Vector" + }, + { + "name": "new_encrypted_messages", + "type": "Vector" + }, + { + "name": "other_updates", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "intermediate_state", + "type": "updates.State" + } + ], + "type": "updates.Difference" + }, + { + "id": "1258196845", + "predicate": "updates.differenceTooLong", + "params": [ + { + "name": "pts", + "type": "int" + } + ], + "type": "updates.Difference" + }, + { + "id": "-484987010", + "predicate": "updatesTooLong", + "params": [], + "type": "Updates" + }, + { + "id": "826001400", + "predicate": "updateShortMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "out", + "type": "flags.1?true" + }, + { + "name": "mentioned", + "type": "flags.4?true" + }, + { + "name": "media_unread", + "type": "flags.5?true" + }, + { + "name": "silent", + "type": "flags.13?true" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "fwd_from", + "type": "flags.2?MessageFwdHeader" + }, + { + "name": "via_bot_id", + "type": "flags.11?long" + }, + { + "name": "reply_to", + "type": "flags.3?MessageReplyHeader" + }, + { + "name": "entities", + "type": "flags.7?Vector" + }, + { + "name": "ttl_period", + "type": "flags.25?int" + } + ], + "type": "Updates" + }, + { + "id": "1299050149", + "predicate": "updateShortChatMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "out", + "type": "flags.1?true" + }, + { + "name": "mentioned", + "type": "flags.4?true" + }, + { + "name": "media_unread", + "type": "flags.5?true" + }, + { + "name": "silent", + "type": "flags.13?true" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "from_id", + "type": "long" + }, + { + "name": "chat_id", + "type": "long" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "fwd_from", + "type": "flags.2?MessageFwdHeader" + }, + { + "name": "via_bot_id", + "type": "flags.11?long" + }, + { + "name": "reply_to", + "type": "flags.3?MessageReplyHeader" + }, + { + "name": "entities", + "type": "flags.7?Vector" + }, + { + "name": "ttl_period", + "type": "flags.25?int" + } + ], + "type": "Updates" + }, + { + "id": "2027216577", + "predicate": "updateShort", + "params": [ + { + "name": "update", + "type": "Update" + }, + { + "name": "date", + "type": "int" + } + ], + "type": "Updates" + }, + { + "id": "1918567619", + "predicate": "updatesCombined", + "params": [ + { + "name": "updates", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "seq_start", + "type": "int" + }, + { + "name": "seq", + "type": "int" + } + ], + "type": "Updates" + }, + { + "id": "1957577280", + "predicate": "updates", + "params": [ + { + "name": "updates", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "seq", + "type": "int" + } + ], + "type": "Updates" + }, + { + "id": "-1877614335", + "predicate": "updateShortSentMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "out", + "type": "flags.1?true" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "media", + "type": "flags.9?MessageMedia" + }, + { + "name": "entities", + "type": "flags.7?Vector" + }, + { + "name": "ttl_period", + "type": "flags.25?int" + } + ], + "type": "Updates" + }, + { + "id": "-1916114267", + "predicate": "photos.photos", + "params": [ + { + "name": "photos", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "photos.Photos" + }, + { + "id": "352657236", + "predicate": "photos.photosSlice", + "params": [ + { + "name": "count", + "type": "int" + }, + { + "name": "photos", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "photos.Photos" + }, + { + "id": "539045032", + "predicate": "photos.photo", + "params": [ + { + "name": "photo", + "type": "Photo" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "photos.Photo" + }, + { + "id": "157948117", + "predicate": "upload.file", + "params": [ + { + "name": "type", + "type": "storage.FileType" + }, + { + "name": "mtime", + "type": "int" + }, + { + "name": "bytes", + "type": "bytes" + } + ], + "type": "upload.File" + }, + { + "id": "-242427324", + "predicate": "upload.fileCdnRedirect", + "params": [ + { + "name": "dc_id", + "type": "int" + }, + { + "name": "file_token", + "type": "bytes" + }, + { + "name": "encryption_key", + "type": "bytes" + }, + { + "name": "encryption_iv", + "type": "bytes" + }, + { + "name": "file_hashes", + "type": "Vector" + } + ], + "type": "upload.File" + }, + { + "id": "414687501", + "predicate": "dcOption", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "ipv6", + "type": "flags.0?true" + }, + { + "name": "media_only", + "type": "flags.1?true" + }, + { + "name": "tcpo_only", + "type": "flags.2?true" + }, + { + "name": "cdn", + "type": "flags.3?true" + }, + { + "name": "static", + "type": "flags.4?true" + }, + { + "name": "this_port_only", + "type": "flags.5?true" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "ip_address", + "type": "string" + }, + { + "name": "port", + "type": "int" + }, + { + "name": "secret", + "type": "flags.10?bytes" + } + ], + "type": "DcOption" + }, + { + "id": "-870702050", + "predicate": "config", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "default_p2p_contacts", + "type": "flags.3?true" + }, + { + "name": "preload_featured_stickers", + "type": "flags.4?true" + }, + { + "name": "revoke_pm_inbox", + "type": "flags.6?true" + }, + { + "name": "blocked_mode", + "type": "flags.8?true" + }, + { + "name": "force_try_ipv6", + "type": "flags.14?true" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "expires", + "type": "int" + }, + { + "name": "test_mode", + "type": "Bool" + }, + { + "name": "this_dc", + "type": "int" + }, + { + "name": "dc_options", + "type": "Vector" + }, + { + "name": "dc_txt_domain_name", + "type": "string" + }, + { + "name": "chat_size_max", + "type": "int" + }, + { + "name": "megagroup_size_max", + "type": "int" + }, + { + "name": "forwarded_count_max", + "type": "int" + }, + { + "name": "online_update_period_ms", + "type": "int" + }, + { + "name": "offline_blur_timeout_ms", + "type": "int" + }, + { + "name": "offline_idle_timeout_ms", + "type": "int" + }, + { + "name": "online_cloud_timeout_ms", + "type": "int" + }, + { + "name": "notify_cloud_delay_ms", + "type": "int" + }, + { + "name": "notify_default_delay_ms", + "type": "int" + }, + { + "name": "push_chat_period_ms", + "type": "int" + }, + { + "name": "push_chat_limit", + "type": "int" + }, + { + "name": "edit_time_limit", + "type": "int" + }, + { + "name": "revoke_time_limit", + "type": "int" + }, + { + "name": "revoke_pm_time_limit", + "type": "int" + }, + { + "name": "rating_e_decay", + "type": "int" + }, + { + "name": "stickers_recent_limit", + "type": "int" + }, + { + "name": "channels_read_media_period", + "type": "int" + }, + { + "name": "tmp_sessions", + "type": "flags.0?int" + }, + { + "name": "call_receive_timeout_ms", + "type": "int" + }, + { + "name": "call_ring_timeout_ms", + "type": "int" + }, + { + "name": "call_connect_timeout_ms", + "type": "int" + }, + { + "name": "call_packet_timeout_ms", + "type": "int" + }, + { + "name": "me_url_prefix", + "type": "string" + }, + { + "name": "autoupdate_url_prefix", + "type": "flags.7?string" + }, + { + "name": "gif_search_username", + "type": "flags.9?string" + }, + { + "name": "venue_search_username", + "type": "flags.10?string" + }, + { + "name": "img_search_username", + "type": "flags.11?string" + }, + { + "name": "static_maps_provider", + "type": "flags.12?string" + }, + { + "name": "caption_length_max", + "type": "int" + }, + { + "name": "message_length_max", + "type": "int" + }, + { + "name": "webfile_dc_id", + "type": "int" + }, + { + "name": "suggested_lang_code", + "type": "flags.2?string" + }, + { + "name": "lang_pack_version", + "type": "flags.2?int" + }, + { + "name": "base_lang_pack_version", + "type": "flags.2?int" + }, + { + "name": "reactions_default", + "type": "flags.15?Reaction" + }, + { + "name": "autologin_token", + "type": "flags.16?string" + } + ], + "type": "Config" + }, + { + "id": "-1910892683", + "predicate": "nearestDc", + "params": [ + { + "name": "country", + "type": "string" + }, + { + "name": "this_dc", + "type": "int" + }, + { + "name": "nearest_dc", + "type": "int" + } + ], + "type": "NearestDc" + }, + { + "id": "-860107216", + "predicate": "help.appUpdate", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "can_not_skip", + "type": "flags.0?true" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "version", + "type": "string" + }, + { + "name": "text", + "type": "string" + }, + { + "name": "entities", + "type": "Vector" + }, + { + "name": "document", + "type": "flags.1?Document" + }, + { + "name": "url", + "type": "flags.2?string" + }, + { + "name": "sticker", + "type": "flags.3?Document" + } + ], + "type": "help.AppUpdate" + }, + { + "id": "-1000708810", + "predicate": "help.noAppUpdate", + "params": [], + "type": "help.AppUpdate" + }, + { + "id": "415997816", + "predicate": "help.inviteText", + "params": [ + { + "name": "message", + "type": "string" + } + ], + "type": "help.InviteText" + }, + { + "id": "-1417756512", + "predicate": "encryptedChatEmpty", + "params": [ + { + "name": "id", + "type": "int" + } + ], + "type": "EncryptedChat" + }, + { + "id": "1722964307", + "predicate": "encryptedChatWaiting", + "params": [ + { + "name": "id", + "type": "int" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "admin_id", + "type": "long" + }, + { + "name": "participant_id", + "type": "long" + } + ], + "type": "EncryptedChat" + }, + { + "id": "1223809356", + "predicate": "encryptedChatRequested", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "folder_id", + "type": "flags.0?int" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "admin_id", + "type": "long" + }, + { + "name": "participant_id", + "type": "long" + }, + { + "name": "g_a", + "type": "bytes" + } + ], + "type": "EncryptedChat" + }, + { + "id": "1643173063", + "predicate": "encryptedChat", + "params": [ + { + "name": "id", + "type": "int" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "admin_id", + "type": "long" + }, + { + "name": "participant_id", + "type": "long" + }, + { + "name": "g_a_or_b", + "type": "bytes" + }, + { + "name": "key_fingerprint", + "type": "long" + } + ], + "type": "EncryptedChat" + }, + { + "id": "505183301", + "predicate": "encryptedChatDiscarded", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "history_deleted", + "type": "flags.0?true" + }, + { + "name": "id", + "type": "int" + } + ], + "type": "EncryptedChat" + }, + { + "id": "-247351839", + "predicate": "inputEncryptedChat", + "params": [ + { + "name": "chat_id", + "type": "int" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputEncryptedChat" + }, + { + "id": "-1038136962", + "predicate": "encryptedFileEmpty", + "params": [], + "type": "EncryptedFile" + }, + { + "id": "-1476358952", + "predicate": "encryptedFile", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "size", + "type": "long" + }, + { + "name": "dc_id", + "type": "int" + }, + { + "name": "key_fingerprint", + "type": "int" + } + ], + "type": "EncryptedFile" + }, + { + "id": "406307684", + "predicate": "inputEncryptedFileEmpty", + "params": [], + "type": "InputEncryptedFile" + }, + { + "id": "1690108678", + "predicate": "inputEncryptedFileUploaded", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "parts", + "type": "int" + }, + { + "name": "md5_checksum", + "type": "string" + }, + { + "name": "key_fingerprint", + "type": "int" + } + ], + "type": "InputEncryptedFile" + }, + { + "id": "1511503333", + "predicate": "inputEncryptedFile", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputEncryptedFile" + }, + { + "id": "767652808", + "predicate": "inputEncryptedFileBigUploaded", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "parts", + "type": "int" + }, + { + "name": "key_fingerprint", + "type": "int" + } + ], + "type": "InputEncryptedFile" + }, + { + "id": "-317144808", + "predicate": "encryptedMessage", + "params": [ + { + "name": "random_id", + "type": "long" + }, + { + "name": "chat_id", + "type": "int" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "bytes", + "type": "bytes" + }, + { + "name": "file", + "type": "EncryptedFile" + } + ], + "type": "EncryptedMessage" + }, + { + "id": "594758406", + "predicate": "encryptedMessageService", + "params": [ + { + "name": "random_id", + "type": "long" + }, + { + "name": "chat_id", + "type": "int" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "bytes", + "type": "bytes" + } + ], + "type": "EncryptedMessage" + }, + { + "id": "-1058912715", + "predicate": "messages.dhConfigNotModified", + "params": [ + { + "name": "random", + "type": "bytes" + } + ], + "type": "messages.DhConfig" + }, + { + "id": "740433629", + "predicate": "messages.dhConfig", + "params": [ + { + "name": "g", + "type": "int" + }, + { + "name": "p", + "type": "bytes" + }, + { + "name": "version", + "type": "int" + }, + { + "name": "random", + "type": "bytes" + } + ], + "type": "messages.DhConfig" + }, + { + "id": "1443858741", + "predicate": "messages.sentEncryptedMessage", + "params": [ + { + "name": "date", + "type": "int" + } + ], + "type": "messages.SentEncryptedMessage" + }, + { + "id": "-1802240206", + "predicate": "messages.sentEncryptedFile", + "params": [ + { + "name": "date", + "type": "int" + }, + { + "name": "file", + "type": "EncryptedFile" + } + ], + "type": "messages.SentEncryptedMessage" + }, + { + "id": "1928391342", + "predicate": "inputDocumentEmpty", + "params": [], + "type": "InputDocument" + }, + { + "id": "448771445", + "predicate": "inputDocument", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "file_reference", + "type": "bytes" + } + ], + "type": "InputDocument" + }, + { + "id": "922273905", + "predicate": "documentEmpty", + "params": [ + { + "name": "id", + "type": "long" + } + ], + "type": "Document" + }, + { + "id": "-1881881384", + "predicate": "document", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "file_reference", + "type": "bytes" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "mime_type", + "type": "string" + }, + { + "name": "size", + "type": "long" + }, + { + "name": "thumbs", + "type": "flags.0?Vector" + }, + { + "name": "video_thumbs", + "type": "flags.1?Vector" + }, + { + "name": "dc_id", + "type": "int" + }, + { + "name": "attributes", + "type": "Vector" + } + ], + "type": "Document" + }, + { + "id": "398898678", + "predicate": "help.support", + "params": [ + { + "name": "phone_number", + "type": "string" + }, + { + "name": "user", + "type": "User" + } + ], + "type": "help.Support" + }, + { + "id": "-1613493288", + "predicate": "notifyPeer", + "params": [ + { + "name": "peer", + "type": "Peer" + } + ], + "type": "NotifyPeer" + }, + { + "id": "-1261946036", + "predicate": "notifyUsers", + "params": [], + "type": "NotifyPeer" + }, + { + "id": "-1073230141", + "predicate": "notifyChats", + "params": [], + "type": "NotifyPeer" + }, + { + "id": "-703403793", + "predicate": "notifyBroadcasts", + "params": [], + "type": "NotifyPeer" + }, + { + "id": "577659656", + "predicate": "notifyForumTopic", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "top_msg_id", + "type": "int" + } + ], + "type": "NotifyPeer" + }, + { + "id": "381645902", + "predicate": "sendMessageTypingAction", + "params": [], + "type": "SendMessageAction" + }, + { + "id": "-44119819", + "predicate": "sendMessageCancelAction", + "params": [], + "type": "SendMessageAction" + }, + { + "id": "-1584933265", + "predicate": "sendMessageRecordVideoAction", + "params": [], + "type": "SendMessageAction" + }, + { + "id": "-378127636", + "predicate": "sendMessageUploadVideoAction", + "params": [ + { + "name": "progress", + "type": "int" + } + ], + "type": "SendMessageAction" + }, + { + "id": "-718310409", + "predicate": "sendMessageRecordAudioAction", + "params": [], + "type": "SendMessageAction" + }, + { + "id": "-212740181", + "predicate": "sendMessageUploadAudioAction", + "params": [ + { + "name": "progress", + "type": "int" + } + ], + "type": "SendMessageAction" + }, + { + "id": "-774682074", + "predicate": "sendMessageUploadPhotoAction", + "params": [ + { + "name": "progress", + "type": "int" + } + ], + "type": "SendMessageAction" + }, + { + "id": "-1441998364", + "predicate": "sendMessageUploadDocumentAction", + "params": [ + { + "name": "progress", + "type": "int" + } + ], + "type": "SendMessageAction" + }, + { + "id": "393186209", + "predicate": "sendMessageGeoLocationAction", + "params": [], + "type": "SendMessageAction" + }, + { + "id": "1653390447", + "predicate": "sendMessageChooseContactAction", + "params": [], + "type": "SendMessageAction" + }, + { + "id": "-580219064", + "predicate": "sendMessageGamePlayAction", + "params": [], + "type": "SendMessageAction" + }, + { + "id": "-1997373508", + "predicate": "sendMessageRecordRoundAction", + "params": [], + "type": "SendMessageAction" + }, + { + "id": "608050278", + "predicate": "sendMessageUploadRoundAction", + "params": [ + { + "name": "progress", + "type": "int" + } + ], + "type": "SendMessageAction" + }, + { + "id": "-651419003", + "predicate": "speakingInGroupCallAction", + "params": [], + "type": "SendMessageAction" + }, + { + "id": "-606432698", + "predicate": "sendMessageHistoryImportAction", + "params": [ + { + "name": "progress", + "type": "int" + } + ], + "type": "SendMessageAction" + }, + { + "id": "-1336228175", + "predicate": "sendMessageChooseStickerAction", + "params": [], + "type": "SendMessageAction" + }, + { + "id": "630664139", + "predicate": "sendMessageEmojiInteraction", + "params": [ + { + "name": "emoticon", + "type": "string" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "interaction", + "type": "DataJSON" + } + ], + "type": "SendMessageAction" + }, + { + "id": "-1234857938", + "predicate": "sendMessageEmojiInteractionSeen", + "params": [ + { + "name": "emoticon", + "type": "string" + } + ], + "type": "SendMessageAction" + }, + { + "id": "929929052", + "predicate": "sendMessageTextDraftAction", + "params": [ + { + "name": "random_id", + "type": "long" + }, + { + "name": "text", + "type": "TextWithEntities" + } + ], + "type": "SendMessageAction" + }, + { + "id": "-1290580579", + "predicate": "contacts.found", + "params": [ + { + "name": "my_results", + "type": "Vector" + }, + { + "name": "results", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "contacts.Found" + }, + { + "id": "1335282456", + "predicate": "inputPrivacyKeyStatusTimestamp", + "params": [], + "type": "InputPrivacyKey" + }, + { + "id": "-1107622874", + "predicate": "inputPrivacyKeyChatInvite", + "params": [], + "type": "InputPrivacyKey" + }, + { + "id": "-88417185", + "predicate": "inputPrivacyKeyPhoneCall", + "params": [], + "type": "InputPrivacyKey" + }, + { + "id": "-610373422", + "predicate": "inputPrivacyKeyPhoneP2P", + "params": [], + "type": "InputPrivacyKey" + }, + { + "id": "-1529000952", + "predicate": "inputPrivacyKeyForwards", + "params": [], + "type": "InputPrivacyKey" + }, + { + "id": "1461304012", + "predicate": "inputPrivacyKeyProfilePhoto", + "params": [], + "type": "InputPrivacyKey" + }, + { + "id": "55761658", + "predicate": "inputPrivacyKeyPhoneNumber", + "params": [], + "type": "InputPrivacyKey" + }, + { + "id": "-786326563", + "predicate": "inputPrivacyKeyAddedByPhone", + "params": [], + "type": "InputPrivacyKey" + }, + { + "id": "-1360618136", + "predicate": "inputPrivacyKeyVoiceMessages", + "params": [], + "type": "InputPrivacyKey" + }, + { + "id": "941870144", + "predicate": "inputPrivacyKeyAbout", + "params": [], + "type": "InputPrivacyKey" + }, + { + "id": "-698740276", + "predicate": "inputPrivacyKeyBirthday", + "params": [], + "type": "InputPrivacyKey" + }, + { + "id": "-512548031", + "predicate": "inputPrivacyKeyStarGiftsAutoSave", + "params": [], + "type": "InputPrivacyKey" + }, + { + "id": "-1111124044", + "predicate": "inputPrivacyKeyNoPaidMessages", + "params": [], + "type": "InputPrivacyKey" + }, + { + "id": "1304334886", + "predicate": "inputPrivacyKeySavedMusic", + "params": [], + "type": "InputPrivacyKey" + }, + { + "id": "-1137792208", + "predicate": "privacyKeyStatusTimestamp", + "params": [], + "type": "PrivacyKey" + }, + { + "id": "1343122938", + "predicate": "privacyKeyChatInvite", + "params": [], + "type": "PrivacyKey" + }, + { + "id": "1030105979", + "predicate": "privacyKeyPhoneCall", + "params": [], + "type": "PrivacyKey" + }, + { + "id": "961092808", + "predicate": "privacyKeyPhoneP2P", + "params": [], + "type": "PrivacyKey" + }, + { + "id": "1777096355", + "predicate": "privacyKeyForwards", + "params": [], + "type": "PrivacyKey" + }, + { + "id": "-1777000467", + "predicate": "privacyKeyProfilePhoto", + "params": [], + "type": "PrivacyKey" + }, + { + "id": "-778378131", + "predicate": "privacyKeyPhoneNumber", + "params": [], + "type": "PrivacyKey" + }, + { + "id": "1124062251", + "predicate": "privacyKeyAddedByPhone", + "params": [], + "type": "PrivacyKey" + }, + { + "id": "110621716", + "predicate": "privacyKeyVoiceMessages", + "params": [], + "type": "PrivacyKey" + }, + { + "id": "-1534675103", + "predicate": "privacyKeyAbout", + "params": [], + "type": "PrivacyKey" + }, + { + "id": "536913176", + "predicate": "privacyKeyBirthday", + "params": [], + "type": "PrivacyKey" + }, + { + "id": "749010424", + "predicate": "privacyKeyStarGiftsAutoSave", + "params": [], + "type": "PrivacyKey" + }, + { + "id": "399722706", + "predicate": "privacyKeyNoPaidMessages", + "params": [], + "type": "PrivacyKey" + }, + { + "id": "-8759525", + "predicate": "privacyKeySavedMusic", + "params": [], + "type": "PrivacyKey" + }, + { + "id": "218751099", + "predicate": "inputPrivacyValueAllowContacts", + "params": [], + "type": "InputPrivacyRule" + }, + { + "id": "407582158", + "predicate": "inputPrivacyValueAllowAll", + "params": [], + "type": "InputPrivacyRule" + }, + { + "id": "320652927", + "predicate": "inputPrivacyValueAllowUsers", + "params": [ + { + "name": "users", + "type": "Vector" + } + ], + "type": "InputPrivacyRule" + }, + { + "id": "195371015", + "predicate": "inputPrivacyValueDisallowContacts", + "params": [], + "type": "InputPrivacyRule" + }, + { + "id": "-697604407", + "predicate": "inputPrivacyValueDisallowAll", + "params": [], + "type": "InputPrivacyRule" + }, + { + "id": "-1877932953", + "predicate": "inputPrivacyValueDisallowUsers", + "params": [ + { + "name": "users", + "type": "Vector" + } + ], + "type": "InputPrivacyRule" + }, + { + "id": "-2079962673", + "predicate": "inputPrivacyValueAllowChatParticipants", + "params": [ + { + "name": "chats", + "type": "Vector" + } + ], + "type": "InputPrivacyRule" + }, + { + "id": "-380694650", + "predicate": "inputPrivacyValueDisallowChatParticipants", + "params": [ + { + "name": "chats", + "type": "Vector" + } + ], + "type": "InputPrivacyRule" + }, + { + "id": "793067081", + "predicate": "inputPrivacyValueAllowCloseFriends", + "params": [], + "type": "InputPrivacyRule" + }, + { + "id": "2009975281", + "predicate": "inputPrivacyValueAllowPremium", + "params": [], + "type": "InputPrivacyRule" + }, + { + "id": "1515179237", + "predicate": "inputPrivacyValueAllowBots", + "params": [], + "type": "InputPrivacyRule" + }, + { + "id": "-991594219", + "predicate": "inputPrivacyValueDisallowBots", + "params": [], + "type": "InputPrivacyRule" + }, + { + "id": "-123988", + "predicate": "privacyValueAllowContacts", + "params": [], + "type": "PrivacyRule" + }, + { + "id": "1698855810", + "predicate": "privacyValueAllowAll", + "params": [], + "type": "PrivacyRule" + }, + { + "id": "-1198497870", + "predicate": "privacyValueAllowUsers", + "params": [ + { + "name": "users", + "type": "Vector" + } + ], + "type": "PrivacyRule" + }, + { + "id": "-125240806", + "predicate": "privacyValueDisallowContacts", + "params": [], + "type": "PrivacyRule" + }, + { + "id": "-1955338397", + "predicate": "privacyValueDisallowAll", + "params": [], + "type": "PrivacyRule" + }, + { + "id": "-463335103", + "predicate": "privacyValueDisallowUsers", + "params": [ + { + "name": "users", + "type": "Vector" + } + ], + "type": "PrivacyRule" + }, + { + "id": "1796427406", + "predicate": "privacyValueAllowChatParticipants", + "params": [ + { + "name": "chats", + "type": "Vector" + } + ], + "type": "PrivacyRule" + }, + { + "id": "1103656293", + "predicate": "privacyValueDisallowChatParticipants", + "params": [ + { + "name": "chats", + "type": "Vector" + } + ], + "type": "PrivacyRule" + }, + { + "id": "-135735141", + "predicate": "privacyValueAllowCloseFriends", + "params": [], + "type": "PrivacyRule" + }, + { + "id": "-320241333", + "predicate": "privacyValueAllowPremium", + "params": [], + "type": "PrivacyRule" + }, + { + "id": "558242653", + "predicate": "privacyValueAllowBots", + "params": [], + "type": "PrivacyRule" + }, + { + "id": "-156895185", + "predicate": "privacyValueDisallowBots", + "params": [], + "type": "PrivacyRule" + }, + { + "id": "1352683077", + "predicate": "account.privacyRules", + "params": [ + { + "name": "rules", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "account.PrivacyRules" + }, + { + "id": "-1194283041", + "predicate": "accountDaysTTL", + "params": [ + { + "name": "days", + "type": "int" + } + ], + "type": "AccountDaysTTL" + }, + { + "id": "1815593308", + "predicate": "documentAttributeImageSize", + "params": [ + { + "name": "w", + "type": "int" + }, + { + "name": "h", + "type": "int" + } + ], + "type": "DocumentAttribute" + }, + { + "id": "297109817", + "predicate": "documentAttributeAnimated", + "params": [], + "type": "DocumentAttribute" + }, + { + "id": "1662637586", + "predicate": "documentAttributeSticker", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "mask", + "type": "flags.1?true" + }, + { + "name": "alt", + "type": "string" + }, + { + "name": "stickerset", + "type": "InputStickerSet" + }, + { + "name": "mask_coords", + "type": "flags.0?MaskCoords" + } + ], + "type": "DocumentAttribute" + }, + { + "id": "1137015880", + "predicate": "documentAttributeVideo", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "round_message", + "type": "flags.0?true" + }, + { + "name": "supports_streaming", + "type": "flags.1?true" + }, + { + "name": "nosound", + "type": "flags.3?true" + }, + { + "name": "duration", + "type": "double" + }, + { + "name": "w", + "type": "int" + }, + { + "name": "h", + "type": "int" + }, + { + "name": "preload_prefix_size", + "type": "flags.2?int" + }, + { + "name": "video_start_ts", + "type": "flags.4?double" + }, + { + "name": "video_codec", + "type": "flags.5?string" + } + ], + "type": "DocumentAttribute" + }, + { + "id": "-1739392570", + "predicate": "documentAttributeAudio", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "voice", + "type": "flags.10?true" + }, + { + "name": "duration", + "type": "int" + }, + { + "name": "title", + "type": "flags.0?string" + }, + { + "name": "performer", + "type": "flags.1?string" + }, + { + "name": "waveform", + "type": "flags.2?bytes" + } + ], + "type": "DocumentAttribute" + }, + { + "id": "358154344", + "predicate": "documentAttributeFilename", + "params": [ + { + "name": "file_name", + "type": "string" + } + ], + "type": "DocumentAttribute" + }, + { + "id": "-1744710921", + "predicate": "documentAttributeHasStickers", + "params": [], + "type": "DocumentAttribute" + }, + { + "id": "-48981863", + "predicate": "documentAttributeCustomEmoji", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "free", + "type": "flags.0?true" + }, + { + "name": "text_color", + "type": "flags.1?true" + }, + { + "name": "alt", + "type": "string" + }, + { + "name": "stickerset", + "type": "InputStickerSet" + } + ], + "type": "DocumentAttribute" + }, + { + "id": "-244016606", + "predicate": "messages.stickersNotModified", + "params": [], + "type": "messages.Stickers" + }, + { + "id": "816245886", + "predicate": "messages.stickers", + "params": [ + { + "name": "hash", + "type": "long" + }, + { + "name": "stickers", + "type": "Vector" + } + ], + "type": "messages.Stickers" + }, + { + "id": "313694676", + "predicate": "stickerPack", + "params": [ + { + "name": "emoticon", + "type": "string" + }, + { + "name": "documents", + "type": "Vector" + } + ], + "type": "StickerPack" + }, + { + "id": "-395967805", + "predicate": "messages.allStickersNotModified", + "params": [], + "type": "messages.AllStickers" + }, + { + "id": "-843329861", + "predicate": "messages.allStickers", + "params": [ + { + "name": "hash", + "type": "long" + }, + { + "name": "sets", + "type": "Vector" + } + ], + "type": "messages.AllStickers" + }, + { + "id": "-2066640507", + "predicate": "messages.affectedMessages", + "params": [ + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + } + ], + "type": "messages.AffectedMessages" + }, + { + "id": "555358088", + "predicate": "webPageEmpty", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "url", + "type": "flags.0?string" + } + ], + "type": "WebPage" + }, + { + "id": "-1328464313", + "predicate": "webPagePending", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "url", + "type": "flags.0?string" + }, + { + "name": "date", + "type": "int" + } + ], + "type": "WebPage" + }, + { + "id": "-392411726", + "predicate": "webPage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "has_large_media", + "type": "flags.13?true" + }, + { + "name": "video_cover_photo", + "type": "flags.14?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "url", + "type": "string" + }, + { + "name": "display_url", + "type": "string" + }, + { + "name": "hash", + "type": "int" + }, + { + "name": "type", + "type": "flags.0?string" + }, + { + "name": "site_name", + "type": "flags.1?string" + }, + { + "name": "title", + "type": "flags.2?string" + }, + { + "name": "description", + "type": "flags.3?string" + }, + { + "name": "photo", + "type": "flags.4?Photo" + }, + { + "name": "embed_url", + "type": "flags.5?string" + }, + { + "name": "embed_type", + "type": "flags.5?string" + }, + { + "name": "embed_width", + "type": "flags.6?int" + }, + { + "name": "embed_height", + "type": "flags.6?int" + }, + { + "name": "duration", + "type": "flags.7?int" + }, + { + "name": "author", + "type": "flags.8?string" + }, + { + "name": "document", + "type": "flags.9?Document" + }, + { + "name": "cached_page", + "type": "flags.10?Page" + }, + { + "name": "attributes", + "type": "flags.12?Vector" + } + ], + "type": "WebPage" + }, + { + "id": "1930545681", + "predicate": "webPageNotModified", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "cached_page_views", + "type": "flags.0?int" + } + ], + "type": "WebPage" + }, + { + "id": "-1392388579", + "predicate": "authorization", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "current", + "type": "flags.0?true" + }, + { + "name": "official_app", + "type": "flags.1?true" + }, + { + "name": "password_pending", + "type": "flags.2?true" + }, + { + "name": "encrypted_requests_disabled", + "type": "flags.3?true" + }, + { + "name": "call_requests_disabled", + "type": "flags.4?true" + }, + { + "name": "unconfirmed", + "type": "flags.5?true" + }, + { + "name": "hash", + "type": "long" + }, + { + "name": "device_model", + "type": "string" + }, + { + "name": "platform", + "type": "string" + }, + { + "name": "system_version", + "type": "string" + }, + { + "name": "api_id", + "type": "int" + }, + { + "name": "app_name", + "type": "string" + }, + { + "name": "app_version", + "type": "string" + }, + { + "name": "date_created", + "type": "int" + }, + { + "name": "date_active", + "type": "int" + }, + { + "name": "ip", + "type": "string" + }, + { + "name": "country", + "type": "string" + }, + { + "name": "region", + "type": "string" + } + ], + "type": "Authorization" + }, + { + "id": "1275039392", + "predicate": "account.authorizations", + "params": [ + { + "name": "authorization_ttl_days", + "type": "int" + }, + { + "name": "authorizations", + "type": "Vector" + } + ], + "type": "account.Authorizations" + }, + { + "id": "-1787080453", + "predicate": "account.password", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "has_recovery", + "type": "flags.0?true" + }, + { + "name": "has_secure_values", + "type": "flags.1?true" + }, + { + "name": "has_password", + "type": "flags.2?true" + }, + { + "name": "current_algo", + "type": "flags.2?PasswordKdfAlgo" + }, + { + "name": "srp_B", + "type": "flags.2?bytes" + }, + { + "name": "srp_id", + "type": "flags.2?long" + }, + { + "name": "hint", + "type": "flags.3?string" + }, + { + "name": "email_unconfirmed_pattern", + "type": "flags.4?string" + }, + { + "name": "new_algo", + "type": "PasswordKdfAlgo" + }, + { + "name": "new_secure_algo", + "type": "SecurePasswordKdfAlgo" + }, + { + "name": "secure_random", + "type": "bytes" + }, + { + "name": "pending_reset_date", + "type": "flags.5?int" + }, + { + "name": "login_email_pattern", + "type": "flags.6?string" + } + ], + "type": "account.Password" + }, + { + "id": "-1705233435", + "predicate": "account.passwordSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "email", + "type": "flags.0?string" + }, + { + "name": "secure_settings", + "type": "flags.1?SecureSecretSettings" + } + ], + "type": "account.PasswordSettings" + }, + { + "id": "-1036572727", + "predicate": "account.passwordInputSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "new_algo", + "type": "flags.0?PasswordKdfAlgo" + }, + { + "name": "new_password_hash", + "type": "flags.0?bytes" + }, + { + "name": "hint", + "type": "flags.0?string" + }, + { + "name": "email", + "type": "flags.1?string" + }, + { + "name": "new_secure_settings", + "type": "flags.2?SecureSecretSettings" + } + ], + "type": "account.PasswordInputSettings" + }, + { + "id": "326715557", + "predicate": "auth.passwordRecovery", + "params": [ + { + "name": "email_pattern", + "type": "string" + } + ], + "type": "auth.PasswordRecovery" + }, + { + "id": "-1551583367", + "predicate": "receivedNotifyMessage", + "params": [ + { + "name": "id", + "type": "int" + }, + { + "name": "flags", + "type": "int" + } + ], + "type": "ReceivedNotifyMessage" + }, + { + "id": "-1574126186", + "predicate": "chatInviteExported", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "revoked", + "type": "flags.0?true" + }, + { + "name": "permanent", + "type": "flags.5?true" + }, + { + "name": "request_needed", + "type": "flags.6?true" + }, + { + "name": "link", + "type": "string" + }, + { + "name": "admin_id", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "start_date", + "type": "flags.4?int" + }, + { + "name": "expire_date", + "type": "flags.1?int" + }, + { + "name": "usage_limit", + "type": "flags.2?int" + }, + { + "name": "usage", + "type": "flags.3?int" + }, + { + "name": "requested", + "type": "flags.7?int" + }, + { + "name": "subscription_expired", + "type": "flags.10?int" + }, + { + "name": "title", + "type": "flags.8?string" + }, + { + "name": "subscription_pricing", + "type": "flags.9?StarsSubscriptionPricing" + } + ], + "type": "ExportedChatInvite" + }, + { + "id": "-317687113", + "predicate": "chatInvitePublicJoinRequests", + "params": [], + "type": "ExportedChatInvite" + }, + { + "id": "1516793212", + "predicate": "chatInviteAlready", + "params": [ + { + "name": "chat", + "type": "Chat" + } + ], + "type": "ChatInvite" + }, + { + "id": "1553807106", + "predicate": "chatInvite", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "channel", + "type": "flags.0?true" + }, + { + "name": "broadcast", + "type": "flags.1?true" + }, + { + "name": "public", + "type": "flags.2?true" + }, + { + "name": "megagroup", + "type": "flags.3?true" + }, + { + "name": "request_needed", + "type": "flags.6?true" + }, + { + "name": "verified", + "type": "flags.7?true" + }, + { + "name": "scam", + "type": "flags.8?true" + }, + { + "name": "fake", + "type": "flags.9?true" + }, + { + "name": "can_refulfill_subscription", + "type": "flags.11?true" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "about", + "type": "flags.5?string" + }, + { + "name": "photo", + "type": "Photo" + }, + { + "name": "participants_count", + "type": "int" + }, + { + "name": "participants", + "type": "flags.4?Vector" + }, + { + "name": "color", + "type": "int" + }, + { + "name": "subscription_pricing", + "type": "flags.10?StarsSubscriptionPricing" + }, + { + "name": "subscription_form_id", + "type": "flags.12?long" + }, + { + "name": "bot_verification", + "type": "flags.13?BotVerification" + } + ], + "type": "ChatInvite" + }, + { + "id": "1634294960", + "predicate": "chatInvitePeek", + "params": [ + { + "name": "chat", + "type": "Chat" + }, + { + "name": "expires", + "type": "int" + } + ], + "type": "ChatInvite" + }, + { + "id": "-4838507", + "predicate": "inputStickerSetEmpty", + "params": [], + "type": "InputStickerSet" + }, + { + "id": "-1645763991", + "predicate": "inputStickerSetID", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputStickerSet" + }, + { + "id": "-2044933984", + "predicate": "inputStickerSetShortName", + "params": [ + { + "name": "short_name", + "type": "string" + } + ], + "type": "InputStickerSet" + }, + { + "id": "42402760", + "predicate": "inputStickerSetAnimatedEmoji", + "params": [], + "type": "InputStickerSet" + }, + { + "id": "-427863538", + "predicate": "inputStickerSetDice", + "params": [ + { + "name": "emoticon", + "type": "string" + } + ], + "type": "InputStickerSet" + }, + { + "id": "215889721", + "predicate": "inputStickerSetAnimatedEmojiAnimations", + "params": [], + "type": "InputStickerSet" + }, + { + "id": "-930399486", + "predicate": "inputStickerSetPremiumGifts", + "params": [], + "type": "InputStickerSet" + }, + { + "id": "80008398", + "predicate": "inputStickerSetEmojiGenericAnimations", + "params": [], + "type": "InputStickerSet" + }, + { + "id": "701560302", + "predicate": "inputStickerSetEmojiDefaultStatuses", + "params": [], + "type": "InputStickerSet" + }, + { + "id": "1153562857", + "predicate": "inputStickerSetEmojiDefaultTopicIcons", + "params": [], + "type": "InputStickerSet" + }, + { + "id": "1232373075", + "predicate": "inputStickerSetEmojiChannelDefaultStatuses", + "params": [], + "type": "InputStickerSet" + }, + { + "id": "485912992", + "predicate": "inputStickerSetTonGifts", + "params": [], + "type": "InputStickerSet" + }, + { + "id": "768691932", + "predicate": "stickerSet", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "archived", + "type": "flags.1?true" + }, + { + "name": "official", + "type": "flags.2?true" + }, + { + "name": "masks", + "type": "flags.3?true" + }, + { + "name": "emojis", + "type": "flags.7?true" + }, + { + "name": "text_color", + "type": "flags.9?true" + }, + { + "name": "channel_emoji_status", + "type": "flags.10?true" + }, + { + "name": "creator", + "type": "flags.11?true" + }, + { + "name": "installed_date", + "type": "flags.0?int" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "short_name", + "type": "string" + }, + { + "name": "thumbs", + "type": "flags.4?Vector" + }, + { + "name": "thumb_dc_id", + "type": "flags.4?int" + }, + { + "name": "thumb_version", + "type": "flags.4?int" + }, + { + "name": "thumb_document_id", + "type": "flags.8?long" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "hash", + "type": "int" + } + ], + "type": "StickerSet" + }, + { + "id": "1846886166", + "predicate": "messages.stickerSet", + "params": [ + { + "name": "set", + "type": "StickerSet" + }, + { + "name": "packs", + "type": "Vector" + }, + { + "name": "keywords", + "type": "Vector" + }, + { + "name": "documents", + "type": "Vector" + } + ], + "type": "messages.StickerSet" + }, + { + "id": "-738646805", + "predicate": "messages.stickerSetNotModified", + "params": [], + "type": "messages.StickerSet" + }, + { + "id": "-1032140601", + "predicate": "botCommand", + "params": [ + { + "name": "command", + "type": "string" + }, + { + "name": "description", + "type": "string" + } + ], + "type": "BotCommand" + }, + { + "id": "1300890265", + "predicate": "botInfo", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "has_preview_medias", + "type": "flags.6?true" + }, + { + "name": "user_id", + "type": "flags.0?long" + }, + { + "name": "description", + "type": "flags.1?string" + }, + { + "name": "description_photo", + "type": "flags.4?Photo" + }, + { + "name": "description_document", + "type": "flags.5?Document" + }, + { + "name": "commands", + "type": "flags.2?Vector" + }, + { + "name": "menu_button", + "type": "flags.3?BotMenuButton" + }, + { + "name": "privacy_policy_url", + "type": "flags.7?string" + }, + { + "name": "app_settings", + "type": "flags.8?BotAppSettings" + }, + { + "name": "verifier_settings", + "type": "flags.9?BotVerifierSettings" + } + ], + "type": "BotInfo" + }, + { + "id": "2098662655", + "predicate": "keyboardButton", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "style", + "type": "flags.10?KeyboardButtonStyle" + }, + { + "name": "text", + "type": "string" + } + ], + "type": "KeyboardButton" + }, + { + "id": "-670292500", + "predicate": "keyboardButtonUrl", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "style", + "type": "flags.10?KeyboardButtonStyle" + }, + { + "name": "text", + "type": "string" + }, + { + "name": "url", + "type": "string" + } + ], + "type": "KeyboardButton" + }, + { + "id": "-433338016", + "predicate": "keyboardButtonCallback", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "requires_password", + "type": "flags.0?true" + }, + { + "name": "style", + "type": "flags.10?KeyboardButtonStyle" + }, + { + "name": "text", + "type": "string" + }, + { + "name": "data", + "type": "bytes" + } + ], + "type": "KeyboardButton" + }, + { + "id": "1098841487", + "predicate": "keyboardButtonRequestPhone", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "style", + "type": "flags.10?KeyboardButtonStyle" + }, + { + "name": "text", + "type": "string" + } + ], + "type": "KeyboardButton" + }, + { + "id": "-1438582451", + "predicate": "keyboardButtonRequestGeoLocation", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "style", + "type": "flags.10?KeyboardButtonStyle" + }, + { + "name": "text", + "type": "string" + } + ], + "type": "KeyboardButton" + }, + { + "id": "-1726768644", + "predicate": "keyboardButtonSwitchInline", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "same_peer", + "type": "flags.0?true" + }, + { + "name": "style", + "type": "flags.10?KeyboardButtonStyle" + }, + { + "name": "text", + "type": "string" + }, + { + "name": "query", + "type": "string" + }, + { + "name": "peer_types", + "type": "flags.1?Vector" + } + ], + "type": "KeyboardButton" + }, + { + "id": "-1983540999", + "predicate": "keyboardButtonGame", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "style", + "type": "flags.10?KeyboardButtonStyle" + }, + { + "name": "text", + "type": "string" + } + ], + "type": "KeyboardButton" + }, + { + "id": "1067792645", + "predicate": "keyboardButtonBuy", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "style", + "type": "flags.10?KeyboardButtonStyle" + }, + { + "name": "text", + "type": "string" + } + ], + "type": "KeyboardButton" + }, + { + "id": "-183499015", + "predicate": "keyboardButtonUrlAuth", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "style", + "type": "flags.10?KeyboardButtonStyle" + }, + { + "name": "text", + "type": "string" + }, + { + "name": "fwd_text", + "type": "flags.0?string" + }, + { + "name": "url", + "type": "string" + }, + { + "name": "button_id", + "type": "int" + } + ], + "type": "KeyboardButton" + }, + { + "id": "1744911986", + "predicate": "inputKeyboardButtonUrlAuth", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "request_write_access", + "type": "flags.0?true" + }, + { + "name": "style", + "type": "flags.10?KeyboardButtonStyle" + }, + { + "name": "text", + "type": "string" + }, + { + "name": "fwd_text", + "type": "flags.1?string" + }, + { + "name": "url", + "type": "string" + }, + { + "name": "bot", + "type": "InputUser" + } + ], + "type": "KeyboardButton" + }, + { + "id": "2047989634", + "predicate": "keyboardButtonRequestPoll", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "style", + "type": "flags.10?KeyboardButtonStyle" + }, + { + "name": "quiz", + "type": "flags.0?Bool" + }, + { + "name": "text", + "type": "string" + } + ], + "type": "KeyboardButton" + }, + { + "id": "2103314375", + "predicate": "inputKeyboardButtonUserProfile", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "style", + "type": "flags.10?KeyboardButtonStyle" + }, + { + "name": "text", + "type": "string" + }, + { + "name": "user_id", + "type": "InputUser" + } + ], + "type": "KeyboardButton" + }, + { + "id": "-1057137399", + "predicate": "keyboardButtonUserProfile", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "style", + "type": "flags.10?KeyboardButtonStyle" + }, + { + "name": "text", + "type": "string" + }, + { + "name": "user_id", + "type": "long" + } + ], + "type": "KeyboardButton" + }, + { + "id": "-398020192", + "predicate": "keyboardButtonWebView", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "style", + "type": "flags.10?KeyboardButtonStyle" + }, + { + "name": "text", + "type": "string" + }, + { + "name": "url", + "type": "string" + } + ], + "type": "KeyboardButton" + }, + { + "id": "-514047120", + "predicate": "keyboardButtonSimpleWebView", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "style", + "type": "flags.10?KeyboardButtonStyle" + }, + { + "name": "text", + "type": "string" + }, + { + "name": "url", + "type": "string" + } + ], + "type": "KeyboardButton" + }, + { + "id": "1527715317", + "predicate": "keyboardButtonRequestPeer", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "style", + "type": "flags.10?KeyboardButtonStyle" + }, + { + "name": "text", + "type": "string" + }, + { + "name": "button_id", + "type": "int" + }, + { + "name": "peer_type", + "type": "RequestPeerType" + }, + { + "name": "max_quantity", + "type": "int" + } + ], + "type": "KeyboardButton" + }, + { + "id": "45580630", + "predicate": "inputKeyboardButtonRequestPeer", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "name_requested", + "type": "flags.0?true" + }, + { + "name": "username_requested", + "type": "flags.1?true" + }, + { + "name": "photo_requested", + "type": "flags.2?true" + }, + { + "name": "style", + "type": "flags.10?KeyboardButtonStyle" + }, + { + "name": "text", + "type": "string" + }, + { + "name": "button_id", + "type": "int" + }, + { + "name": "peer_type", + "type": "RequestPeerType" + }, + { + "name": "max_quantity", + "type": "int" + } + ], + "type": "KeyboardButton" + }, + { + "id": "-1127960816", + "predicate": "keyboardButtonCopy", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "style", + "type": "flags.10?KeyboardButtonStyle" + }, + { + "name": "text", + "type": "string" + }, + { + "name": "copy_text", + "type": "string" + } + ], + "type": "KeyboardButton" + }, + { + "id": "2002815875", + "predicate": "keyboardButtonRow", + "params": [ + { + "name": "buttons", + "type": "Vector" + } + ], + "type": "KeyboardButtonRow" + }, + { + "id": "-1606526075", + "predicate": "replyKeyboardHide", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "selective", + "type": "flags.2?true" + } + ], + "type": "ReplyMarkup" + }, + { + "id": "-2035021048", + "predicate": "replyKeyboardForceReply", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "single_use", + "type": "flags.1?true" + }, + { + "name": "selective", + "type": "flags.2?true" + }, + { + "name": "placeholder", + "type": "flags.3?string" + } + ], + "type": "ReplyMarkup" + }, + { + "id": "-2049074735", + "predicate": "replyKeyboardMarkup", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "resize", + "type": "flags.0?true" + }, + { + "name": "single_use", + "type": "flags.1?true" + }, + { + "name": "selective", + "type": "flags.2?true" + }, + { + "name": "persistent", + "type": "flags.4?true" + }, + { + "name": "rows", + "type": "Vector" + }, + { + "name": "placeholder", + "type": "flags.3?string" + } + ], + "type": "ReplyMarkup" + }, + { + "id": "1218642516", + "predicate": "replyInlineMarkup", + "params": [ + { + "name": "rows", + "type": "Vector" + } + ], + "type": "ReplyMarkup" + }, + { + "id": "-1148011883", + "predicate": "messageEntityUnknown", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "MessageEntity" + }, + { + "id": "-100378723", + "predicate": "messageEntityMention", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "MessageEntity" + }, + { + "id": "1868782349", + "predicate": "messageEntityHashtag", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "MessageEntity" + }, + { + "id": "1827637959", + "predicate": "messageEntityBotCommand", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "MessageEntity" + }, + { + "id": "1859134776", + "predicate": "messageEntityUrl", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "MessageEntity" + }, + { + "id": "1692693954", + "predicate": "messageEntityEmail", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "MessageEntity" + }, + { + "id": "-1117713463", + "predicate": "messageEntityBold", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "MessageEntity" + }, + { + "id": "-2106619040", + "predicate": "messageEntityItalic", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "MessageEntity" + }, + { + "id": "681706865", + "predicate": "messageEntityCode", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "MessageEntity" + }, + { + "id": "1938967520", + "predicate": "messageEntityPre", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + }, + { + "name": "language", + "type": "string" + } + ], + "type": "MessageEntity" + }, + { + "id": "1990644519", + "predicate": "messageEntityTextUrl", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + }, + { + "name": "url", + "type": "string" + } + ], + "type": "MessageEntity" + }, + { + "id": "-595914432", + "predicate": "messageEntityMentionName", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + }, + { + "name": "user_id", + "type": "long" + } + ], + "type": "MessageEntity" + }, + { + "id": "546203849", + "predicate": "inputMessageEntityMentionName", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + }, + { + "name": "user_id", + "type": "InputUser" + } + ], + "type": "MessageEntity" + }, + { + "id": "-1687559349", + "predicate": "messageEntityPhone", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "MessageEntity" + }, + { + "id": "1280209983", + "predicate": "messageEntityCashtag", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "MessageEntity" + }, + { + "id": "-1672577397", + "predicate": "messageEntityUnderline", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "MessageEntity" + }, + { + "id": "-1090087980", + "predicate": "messageEntityStrike", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "MessageEntity" + }, + { + "id": "1981704948", + "predicate": "messageEntityBankCard", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "MessageEntity" + }, + { + "id": "852137487", + "predicate": "messageEntitySpoiler", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "MessageEntity" + }, + { + "id": "-925956616", + "predicate": "messageEntityCustomEmoji", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + }, + { + "name": "document_id", + "type": "long" + } + ], + "type": "MessageEntity" + }, + { + "id": "-238245204", + "predicate": "messageEntityBlockquote", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "collapsed", + "type": "flags.0?true" + }, + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "MessageEntity" + }, + { + "id": "-1874147385", + "predicate": "messageEntityFormattedDate", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "relative", + "type": "flags.0?true" + }, + { + "name": "short_time", + "type": "flags.1?true" + }, + { + "name": "long_time", + "type": "flags.2?true" + }, + { + "name": "short_date", + "type": "flags.3?true" + }, + { + "name": "long_date", + "type": "flags.4?true" + }, + { + "name": "day_of_week", + "type": "flags.5?true" + }, + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + }, + { + "name": "date", + "type": "int" + } + ], + "type": "MessageEntity" + }, + { + "id": "1903653142", + "predicate": "messageEntityDiffInsert", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "MessageEntity" + }, + { + "id": "-960371289", + "predicate": "messageEntityDiffReplace", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + }, + { + "name": "old_text", + "type": "string" + } + ], + "type": "MessageEntity" + }, + { + "id": "106086853", + "predicate": "messageEntityDiffDelete", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "MessageEntity" + }, + { + "id": "-292807034", + "predicate": "inputChannelEmpty", + "params": [], + "type": "InputChannel" + }, + { + "id": "-212145112", + "predicate": "inputChannel", + "params": [ + { + "name": "channel_id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputChannel" + }, + { + "id": "1536380829", + "predicate": "inputChannelFromMessage", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "channel_id", + "type": "long" + } + ], + "type": "InputChannel" + }, + { + "id": "2131196633", + "predicate": "contacts.resolvedPeer", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "contacts.ResolvedPeer" + }, + { + "id": "182649427", + "predicate": "messageRange", + "params": [ + { + "name": "min_id", + "type": "int" + }, + { + "name": "max_id", + "type": "int" + } + ], + "type": "MessageRange" + }, + { + "id": "1041346555", + "predicate": "updates.channelDifferenceEmpty", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "final", + "type": "flags.0?true" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "timeout", + "type": "flags.1?int" + } + ], + "type": "updates.ChannelDifference" + }, + { + "id": "-1531132162", + "predicate": "updates.channelDifferenceTooLong", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "final", + "type": "flags.0?true" + }, + { + "name": "timeout", + "type": "flags.1?int" + }, + { + "name": "dialog", + "type": "Dialog" + }, + { + "name": "messages", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "updates.ChannelDifference" + }, + { + "id": "543450958", + "predicate": "updates.channelDifference", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "final", + "type": "flags.0?true" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "timeout", + "type": "flags.1?int" + }, + { + "name": "new_messages", + "type": "Vector" + }, + { + "name": "other_updates", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "updates.ChannelDifference" + }, + { + "id": "-1798033689", + "predicate": "channelMessagesFilterEmpty", + "params": [], + "type": "ChannelMessagesFilter" + }, + { + "id": "-847783593", + "predicate": "channelMessagesFilter", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "exclude_new_messages", + "type": "flags.1?true" + }, + { + "name": "ranges", + "type": "Vector" + } + ], + "type": "ChannelMessagesFilter" + }, + { + "id": "466961494", + "predicate": "channelParticipant", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "subscription_until_date", + "type": "flags.0?int" + }, + { + "name": "rank", + "type": "flags.2?string" + } + ], + "type": "ChannelParticipant" + }, + { + "id": "-1454929382", + "predicate": "channelParticipantSelf", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "via_request", + "type": "flags.0?true" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "inviter_id", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "subscription_until_date", + "type": "flags.1?int" + }, + { + "name": "rank", + "type": "flags.2?string" + } + ], + "type": "ChannelParticipant" + }, + { + "id": "803602899", + "predicate": "channelParticipantCreator", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "admin_rights", + "type": "ChatAdminRights" + }, + { + "name": "rank", + "type": "flags.0?string" + } + ], + "type": "ChannelParticipant" + }, + { + "id": "885242707", + "predicate": "channelParticipantAdmin", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "can_edit", + "type": "flags.0?true" + }, + { + "name": "self", + "type": "flags.1?true" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "inviter_id", + "type": "flags.1?long" + }, + { + "name": "promoted_by", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "admin_rights", + "type": "ChatAdminRights" + }, + { + "name": "rank", + "type": "flags.2?string" + } + ], + "type": "ChannelParticipant" + }, + { + "id": "-705647215", + "predicate": "channelParticipantBanned", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "left", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "kicked_by", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "banned_rights", + "type": "ChatBannedRights" + }, + { + "name": "rank", + "type": "flags.2?string" + } + ], + "type": "ChannelParticipant" + }, + { + "id": "453242886", + "predicate": "channelParticipantLeft", + "params": [ + { + "name": "peer", + "type": "Peer" + } + ], + "type": "ChannelParticipant" + }, + { + "id": "-566281095", + "predicate": "channelParticipantsRecent", + "params": [], + "type": "ChannelParticipantsFilter" + }, + { + "id": "-1268741783", + "predicate": "channelParticipantsAdmins", + "params": [], + "type": "ChannelParticipantsFilter" + }, + { + "id": "-1548400251", + "predicate": "channelParticipantsKicked", + "params": [ + { + "name": "q", + "type": "string" + } + ], + "type": "ChannelParticipantsFilter" + }, + { + "id": "-1328445861", + "predicate": "channelParticipantsBots", + "params": [], + "type": "ChannelParticipantsFilter" + }, + { + "id": "338142689", + "predicate": "channelParticipantsBanned", + "params": [ + { + "name": "q", + "type": "string" + } + ], + "type": "ChannelParticipantsFilter" + }, + { + "id": "106343499", + "predicate": "channelParticipantsSearch", + "params": [ + { + "name": "q", + "type": "string" + } + ], + "type": "ChannelParticipantsFilter" + }, + { + "id": "-1150621555", + "predicate": "channelParticipantsContacts", + "params": [ + { + "name": "q", + "type": "string" + } + ], + "type": "ChannelParticipantsFilter" + }, + { + "id": "-531931925", + "predicate": "channelParticipantsMentions", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "q", + "type": "flags.0?string" + }, + { + "name": "top_msg_id", + "type": "flags.1?int" + } + ], + "type": "ChannelParticipantsFilter" + }, + { + "id": "-1699676497", + "predicate": "channels.channelParticipants", + "params": [ + { + "name": "count", + "type": "int" + }, + { + "name": "participants", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "channels.ChannelParticipants" + }, + { + "id": "-266911767", + "predicate": "channels.channelParticipantsNotModified", + "params": [], + "type": "channels.ChannelParticipants" + }, + { + "id": "-541588713", + "predicate": "channels.channelParticipant", + "params": [ + { + "name": "participant", + "type": "ChannelParticipant" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "channels.ChannelParticipant" + }, + { + "id": "2013922064", + "predicate": "help.termsOfService", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "popup", + "type": "flags.0?true" + }, + { + "name": "id", + "type": "DataJSON" + }, + { + "name": "text", + "type": "string" + }, + { + "name": "entities", + "type": "Vector" + }, + { + "name": "min_age_confirm", + "type": "flags.1?int" + } + ], + "type": "help.TermsOfService" + }, + { + "id": "-402498398", + "predicate": "messages.savedGifsNotModified", + "params": [], + "type": "messages.SavedGifs" + }, + { + "id": "-2069878259", + "predicate": "messages.savedGifs", + "params": [ + { + "name": "hash", + "type": "long" + }, + { + "name": "gifs", + "type": "Vector" + } + ], + "type": "messages.SavedGifs" + }, + { + "id": "864077702", + "predicate": "inputBotInlineMessageMediaAuto", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "invert_media", + "type": "flags.3?true" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "entities", + "type": "flags.1?Vector" + }, + { + "name": "reply_markup", + "type": "flags.2?ReplyMarkup" + } + ], + "type": "InputBotInlineMessage" + }, + { + "id": "1036876423", + "predicate": "inputBotInlineMessageText", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "no_webpage", + "type": "flags.0?true" + }, + { + "name": "invert_media", + "type": "flags.3?true" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "entities", + "type": "flags.1?Vector" + }, + { + "name": "reply_markup", + "type": "flags.2?ReplyMarkup" + } + ], + "type": "InputBotInlineMessage" + }, + { + "id": "-1768777083", + "predicate": "inputBotInlineMessageMediaGeo", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "geo_point", + "type": "InputGeoPoint" + }, + { + "name": "heading", + "type": "flags.0?int" + }, + { + "name": "period", + "type": "flags.1?int" + }, + { + "name": "proximity_notification_radius", + "type": "flags.3?int" + }, + { + "name": "reply_markup", + "type": "flags.2?ReplyMarkup" + } + ], + "type": "InputBotInlineMessage" + }, + { + "id": "1098628881", + "predicate": "inputBotInlineMessageMediaVenue", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "geo_point", + "type": "InputGeoPoint" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "address", + "type": "string" + }, + { + "name": "provider", + "type": "string" + }, + { + "name": "venue_id", + "type": "string" + }, + { + "name": "venue_type", + "type": "string" + }, + { + "name": "reply_markup", + "type": "flags.2?ReplyMarkup" + } + ], + "type": "InputBotInlineMessage" + }, + { + "id": "-1494368259", + "predicate": "inputBotInlineMessageMediaContact", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "phone_number", + "type": "string" + }, + { + "name": "first_name", + "type": "string" + }, + { + "name": "last_name", + "type": "string" + }, + { + "name": "vcard", + "type": "string" + }, + { + "name": "reply_markup", + "type": "flags.2?ReplyMarkup" + } + ], + "type": "InputBotInlineMessage" + }, + { + "id": "1262639204", + "predicate": "inputBotInlineMessageGame", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "reply_markup", + "type": "flags.2?ReplyMarkup" + } + ], + "type": "InputBotInlineMessage" + }, + { + "id": "-672693723", + "predicate": "inputBotInlineMessageMediaInvoice", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "description", + "type": "string" + }, + { + "name": "photo", + "type": "flags.0?InputWebDocument" + }, + { + "name": "invoice", + "type": "Invoice" + }, + { + "name": "payload", + "type": "bytes" + }, + { + "name": "provider", + "type": "string" + }, + { + "name": "provider_data", + "type": "DataJSON" + }, + { + "name": "reply_markup", + "type": "flags.2?ReplyMarkup" + } + ], + "type": "InputBotInlineMessage" + }, + { + "id": "-1109605104", + "predicate": "inputBotInlineMessageMediaWebPage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "invert_media", + "type": "flags.3?true" + }, + { + "name": "force_large_media", + "type": "flags.4?true" + }, + { + "name": "force_small_media", + "type": "flags.5?true" + }, + { + "name": "optional", + "type": "flags.6?true" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "entities", + "type": "flags.1?Vector" + }, + { + "name": "url", + "type": "string" + }, + { + "name": "reply_markup", + "type": "flags.2?ReplyMarkup" + } + ], + "type": "InputBotInlineMessage" + }, + { + "id": "-2000710887", + "predicate": "inputBotInlineResult", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "id", + "type": "string" + }, + { + "name": "type", + "type": "string" + }, + { + "name": "title", + "type": "flags.1?string" + }, + { + "name": "description", + "type": "flags.2?string" + }, + { + "name": "url", + "type": "flags.3?string" + }, + { + "name": "thumb", + "type": "flags.4?InputWebDocument" + }, + { + "name": "content", + "type": "flags.5?InputWebDocument" + }, + { + "name": "send_message", + "type": "InputBotInlineMessage" + } + ], + "type": "InputBotInlineResult" + }, + { + "id": "-1462213465", + "predicate": "inputBotInlineResultPhoto", + "params": [ + { + "name": "id", + "type": "string" + }, + { + "name": "type", + "type": "string" + }, + { + "name": "photo", + "type": "InputPhoto" + }, + { + "name": "send_message", + "type": "InputBotInlineMessage" + } + ], + "type": "InputBotInlineResult" + }, + { + "id": "-459324", + "predicate": "inputBotInlineResultDocument", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "id", + "type": "string" + }, + { + "name": "type", + "type": "string" + }, + { + "name": "title", + "type": "flags.1?string" + }, + { + "name": "description", + "type": "flags.2?string" + }, + { + "name": "document", + "type": "InputDocument" + }, + { + "name": "send_message", + "type": "InputBotInlineMessage" + } + ], + "type": "InputBotInlineResult" + }, + { + "id": "1336154098", + "predicate": "inputBotInlineResultGame", + "params": [ + { + "name": "id", + "type": "string" + }, + { + "name": "short_name", + "type": "string" + }, + { + "name": "send_message", + "type": "InputBotInlineMessage" + } + ], + "type": "InputBotInlineResult" + }, + { + "id": "1984755728", + "predicate": "botInlineMessageMediaAuto", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "invert_media", + "type": "flags.3?true" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "entities", + "type": "flags.1?Vector" + }, + { + "name": "reply_markup", + "type": "flags.2?ReplyMarkup" + } + ], + "type": "BotInlineMessage" + }, + { + "id": "-1937807902", + "predicate": "botInlineMessageText", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "no_webpage", + "type": "flags.0?true" + }, + { + "name": "invert_media", + "type": "flags.3?true" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "entities", + "type": "flags.1?Vector" + }, + { + "name": "reply_markup", + "type": "flags.2?ReplyMarkup" + } + ], + "type": "BotInlineMessage" + }, + { + "id": "85477117", + "predicate": "botInlineMessageMediaGeo", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "geo", + "type": "GeoPoint" + }, + { + "name": "heading", + "type": "flags.0?int" + }, + { + "name": "period", + "type": "flags.1?int" + }, + { + "name": "proximity_notification_radius", + "type": "flags.3?int" + }, + { + "name": "reply_markup", + "type": "flags.2?ReplyMarkup" + } + ], + "type": "BotInlineMessage" + }, + { + "id": "-1970903652", + "predicate": "botInlineMessageMediaVenue", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "geo", + "type": "GeoPoint" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "address", + "type": "string" + }, + { + "name": "provider", + "type": "string" + }, + { + "name": "venue_id", + "type": "string" + }, + { + "name": "venue_type", + "type": "string" + }, + { + "name": "reply_markup", + "type": "flags.2?ReplyMarkup" + } + ], + "type": "BotInlineMessage" + }, + { + "id": "416402882", + "predicate": "botInlineMessageMediaContact", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "phone_number", + "type": "string" + }, + { + "name": "first_name", + "type": "string" + }, + { + "name": "last_name", + "type": "string" + }, + { + "name": "vcard", + "type": "string" + }, + { + "name": "reply_markup", + "type": "flags.2?ReplyMarkup" + } + ], + "type": "BotInlineMessage" + }, + { + "id": "894081801", + "predicate": "botInlineMessageMediaInvoice", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "shipping_address_requested", + "type": "flags.1?true" + }, + { + "name": "test", + "type": "flags.3?true" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "description", + "type": "string" + }, + { + "name": "photo", + "type": "flags.0?WebDocument" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "total_amount", + "type": "long" + }, + { + "name": "reply_markup", + "type": "flags.2?ReplyMarkup" + } + ], + "type": "BotInlineMessage" + }, + { + "id": "-2137335386", + "predicate": "botInlineMessageMediaWebPage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "invert_media", + "type": "flags.3?true" + }, + { + "name": "force_large_media", + "type": "flags.4?true" + }, + { + "name": "force_small_media", + "type": "flags.5?true" + }, + { + "name": "manual", + "type": "flags.7?true" + }, + { + "name": "safe", + "type": "flags.8?true" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "entities", + "type": "flags.1?Vector" + }, + { + "name": "url", + "type": "string" + }, + { + "name": "reply_markup", + "type": "flags.2?ReplyMarkup" + } + ], + "type": "BotInlineMessage" + }, + { + "id": "295067450", + "predicate": "botInlineResult", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "id", + "type": "string" + }, + { + "name": "type", + "type": "string" + }, + { + "name": "title", + "type": "flags.1?string" + }, + { + "name": "description", + "type": "flags.2?string" + }, + { + "name": "url", + "type": "flags.3?string" + }, + { + "name": "thumb", + "type": "flags.4?WebDocument" + }, + { + "name": "content", + "type": "flags.5?WebDocument" + }, + { + "name": "send_message", + "type": "BotInlineMessage" + } + ], + "type": "BotInlineResult" + }, + { + "id": "400266251", + "predicate": "botInlineMediaResult", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "id", + "type": "string" + }, + { + "name": "type", + "type": "string" + }, + { + "name": "photo", + "type": "flags.0?Photo" + }, + { + "name": "document", + "type": "flags.1?Document" + }, + { + "name": "title", + "type": "flags.2?string" + }, + { + "name": "description", + "type": "flags.3?string" + }, + { + "name": "send_message", + "type": "BotInlineMessage" + } + ], + "type": "BotInlineResult" + }, + { + "id": "-534646026", + "predicate": "messages.botResults", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "gallery", + "type": "flags.0?true" + }, + { + "name": "query_id", + "type": "long" + }, + { + "name": "next_offset", + "type": "flags.1?string" + }, + { + "name": "switch_pm", + "type": "flags.2?InlineBotSwitchPM" + }, + { + "name": "switch_webview", + "type": "flags.3?InlineBotWebView" + }, + { + "name": "results", + "type": "Vector" + }, + { + "name": "cache_time", + "type": "int" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.BotResults" + }, + { + "id": "1571494644", + "predicate": "exportedMessageLink", + "params": [ + { + "name": "link", + "type": "string" + }, + { + "name": "html", + "type": "string" + } + ], + "type": "ExportedMessageLink" + }, + { + "id": "1313731771", + "predicate": "messageFwdHeader", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "imported", + "type": "flags.7?true" + }, + { + "name": "saved_out", + "type": "flags.11?true" + }, + { + "name": "from_id", + "type": "flags.0?Peer" + }, + { + "name": "from_name", + "type": "flags.5?string" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "channel_post", + "type": "flags.2?int" + }, + { + "name": "post_author", + "type": "flags.3?string" + }, + { + "name": "saved_from_peer", + "type": "flags.4?Peer" + }, + { + "name": "saved_from_msg_id", + "type": "flags.4?int" + }, + { + "name": "saved_from_id", + "type": "flags.8?Peer" + }, + { + "name": "saved_from_name", + "type": "flags.9?string" + }, + { + "name": "saved_date", + "type": "flags.10?int" + }, + { + "name": "psa_type", + "type": "flags.6?string" + } + ], + "type": "MessageFwdHeader" + }, + { + "id": "1923290508", + "predicate": "auth.codeTypeSms", + "params": [], + "type": "auth.CodeType" + }, + { + "id": "1948046307", + "predicate": "auth.codeTypeCall", + "params": [], + "type": "auth.CodeType" + }, + { + "id": "577556219", + "predicate": "auth.codeTypeFlashCall", + "params": [], + "type": "auth.CodeType" + }, + { + "id": "-702884114", + "predicate": "auth.codeTypeMissedCall", + "params": [], + "type": "auth.CodeType" + }, + { + "id": "116234636", + "predicate": "auth.codeTypeFragmentSms", + "params": [], + "type": "auth.CodeType" + }, + { + "id": "1035688326", + "predicate": "auth.sentCodeTypeApp", + "params": [ + { + "name": "length", + "type": "int" + } + ], + "type": "auth.SentCodeType" + }, + { + "id": "-1073693790", + "predicate": "auth.sentCodeTypeSms", + "params": [ + { + "name": "length", + "type": "int" + } + ], + "type": "auth.SentCodeType" + }, + { + "id": "1398007207", + "predicate": "auth.sentCodeTypeCall", + "params": [ + { + "name": "length", + "type": "int" + } + ], + "type": "auth.SentCodeType" + }, + { + "id": "-1425815847", + "predicate": "auth.sentCodeTypeFlashCall", + "params": [ + { + "name": "pattern", + "type": "string" + } + ], + "type": "auth.SentCodeType" + }, + { + "id": "-2113903484", + "predicate": "auth.sentCodeTypeMissedCall", + "params": [ + { + "name": "prefix", + "type": "string" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "auth.SentCodeType" + }, + { + "id": "-196020837", + "predicate": "auth.sentCodeTypeEmailCode", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "apple_signin_allowed", + "type": "flags.0?true" + }, + { + "name": "google_signin_allowed", + "type": "flags.1?true" + }, + { + "name": "email_pattern", + "type": "string" + }, + { + "name": "length", + "type": "int" + }, + { + "name": "reset_available_period", + "type": "flags.3?int" + }, + { + "name": "reset_pending_date", + "type": "flags.4?int" + } + ], + "type": "auth.SentCodeType" + }, + { + "id": "-1521934870", + "predicate": "auth.sentCodeTypeSetUpEmailRequired", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "apple_signin_allowed", + "type": "flags.0?true" + }, + { + "name": "google_signin_allowed", + "type": "flags.1?true" + } + ], + "type": "auth.SentCodeType" + }, + { + "id": "-648651719", + "predicate": "auth.sentCodeTypeFragmentSms", + "params": [ + { + "name": "url", + "type": "string" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "auth.SentCodeType" + }, + { + "id": "10475318", + "predicate": "auth.sentCodeTypeFirebaseSms", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "nonce", + "type": "flags.0?bytes" + }, + { + "name": "play_integrity_project_id", + "type": "flags.2?long" + }, + { + "name": "play_integrity_nonce", + "type": "flags.2?bytes" + }, + { + "name": "receipt", + "type": "flags.1?string" + }, + { + "name": "push_timeout", + "type": "flags.1?int" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "auth.SentCodeType" + }, + { + "id": "-1542017919", + "predicate": "auth.sentCodeTypeSmsWord", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "beginning", + "type": "flags.0?string" + } + ], + "type": "auth.SentCodeType" + }, + { + "id": "-1284008785", + "predicate": "auth.sentCodeTypeSmsPhrase", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "beginning", + "type": "flags.0?string" + } + ], + "type": "auth.SentCodeType" + }, + { + "id": "911761060", + "predicate": "messages.botCallbackAnswer", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "alert", + "type": "flags.1?true" + }, + { + "name": "has_url", + "type": "flags.3?true" + }, + { + "name": "native_ui", + "type": "flags.4?true" + }, + { + "name": "message", + "type": "flags.0?string" + }, + { + "name": "url", + "type": "flags.2?string" + }, + { + "name": "cache_time", + "type": "int" + } + ], + "type": "messages.BotCallbackAnswer" + }, + { + "id": "649453030", + "predicate": "messages.messageEditData", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "caption", + "type": "flags.0?true" + } + ], + "type": "messages.MessageEditData" + }, + { + "id": "-1995686519", + "predicate": "inputBotInlineMessageID", + "params": [ + { + "name": "dc_id", + "type": "int" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputBotInlineMessageID" + }, + { + "id": "-1227287081", + "predicate": "inputBotInlineMessageID64", + "params": [ + { + "name": "dc_id", + "type": "int" + }, + { + "name": "owner_id", + "type": "long" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputBotInlineMessageID" + }, + { + "id": "1008755359", + "predicate": "inlineBotSwitchPM", + "params": [ + { + "name": "text", + "type": "string" + }, + { + "name": "start_param", + "type": "string" + } + ], + "type": "InlineBotSwitchPM" + }, + { + "id": "863093588", + "predicate": "messages.peerDialogs", + "params": [ + { + "name": "dialogs", + "type": "Vector" + }, + { + "name": "messages", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "state", + "type": "updates.State" + } + ], + "type": "messages.PeerDialogs" + }, + { + "id": "-305282981", + "predicate": "topPeer", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "rating", + "type": "double" + } + ], + "type": "TopPeer" + }, + { + "id": "-1419371685", + "predicate": "topPeerCategoryBotsPM", + "params": [], + "type": "TopPeerCategory" + }, + { + "id": "344356834", + "predicate": "topPeerCategoryBotsInline", + "params": [], + "type": "TopPeerCategory" + }, + { + "id": "104314861", + "predicate": "topPeerCategoryCorrespondents", + "params": [], + "type": "TopPeerCategory" + }, + { + "id": "-1122524854", + "predicate": "topPeerCategoryGroups", + "params": [], + "type": "TopPeerCategory" + }, + { + "id": "371037736", + "predicate": "topPeerCategoryChannels", + "params": [], + "type": "TopPeerCategory" + }, + { + "id": "511092620", + "predicate": "topPeerCategoryPhoneCalls", + "params": [], + "type": "TopPeerCategory" + }, + { + "id": "-1472172887", + "predicate": "topPeerCategoryForwardUsers", + "params": [], + "type": "TopPeerCategory" + }, + { + "id": "-68239120", + "predicate": "topPeerCategoryForwardChats", + "params": [], + "type": "TopPeerCategory" + }, + { + "id": "-39945236", + "predicate": "topPeerCategoryBotsApp", + "params": [], + "type": "TopPeerCategory" + }, + { + "id": "1814361053", + "predicate": "topPeerCategoryBotsGuestChat", + "params": [], + "type": "TopPeerCategory" + }, + { + "id": "-75283823", + "predicate": "topPeerCategoryPeers", + "params": [ + { + "name": "category", + "type": "TopPeerCategory" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "peers", + "type": "Vector" + } + ], + "type": "TopPeerCategoryPeers" + }, + { + "id": "-567906571", + "predicate": "contacts.topPeersNotModified", + "params": [], + "type": "contacts.TopPeers" + }, + { + "id": "1891070632", + "predicate": "contacts.topPeers", + "params": [ + { + "name": "categories", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "contacts.TopPeers" + }, + { + "id": "-1255369827", + "predicate": "contacts.topPeersDisabled", + "params": [], + "type": "contacts.TopPeers" + }, + { + "id": "453805082", + "predicate": "draftMessageEmpty", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "date", + "type": "flags.0?int" + } + ], + "type": "DraftMessage" + }, + { + "id": "-1763006997", + "predicate": "draftMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "no_webpage", + "type": "flags.1?true" + }, + { + "name": "invert_media", + "type": "flags.6?true" + }, + { + "name": "reply_to", + "type": "flags.4?InputReplyTo" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "entities", + "type": "flags.3?Vector" + }, + { + "name": "media", + "type": "flags.5?InputMedia" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "effect", + "type": "flags.7?long" + }, + { + "name": "suggested_post", + "type": "flags.8?SuggestedPost" + } + ], + "type": "DraftMessage" + }, + { + "id": "-958657434", + "predicate": "messages.featuredStickersNotModified", + "params": [ + { + "name": "count", + "type": "int" + } + ], + "type": "messages.FeaturedStickers" + }, + { + "id": "-1103615738", + "predicate": "messages.featuredStickers", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "premium", + "type": "flags.0?true" + }, + { + "name": "hash", + "type": "long" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "sets", + "type": "Vector" + }, + { + "name": "unread", + "type": "Vector" + } + ], + "type": "messages.FeaturedStickers" + }, + { + "id": "186120336", + "predicate": "messages.recentStickersNotModified", + "params": [], + "type": "messages.RecentStickers" + }, + { + "id": "-1999405994", + "predicate": "messages.recentStickers", + "params": [ + { + "name": "hash", + "type": "long" + }, + { + "name": "packs", + "type": "Vector" + }, + { + "name": "stickers", + "type": "Vector" + }, + { + "name": "dates", + "type": "Vector" + } + ], + "type": "messages.RecentStickers" + }, + { + "id": "1338747336", + "predicate": "messages.archivedStickers", + "params": [ + { + "name": "count", + "type": "int" + }, + { + "name": "sets", + "type": "Vector" + } + ], + "type": "messages.ArchivedStickers" + }, + { + "id": "946083368", + "predicate": "messages.stickerSetInstallResultSuccess", + "params": [], + "type": "messages.StickerSetInstallResult" + }, + { + "id": "904138920", + "predicate": "messages.stickerSetInstallResultArchive", + "params": [ + { + "name": "sets", + "type": "Vector" + } + ], + "type": "messages.StickerSetInstallResult" + }, + { + "id": "1678812626", + "predicate": "stickerSetCovered", + "params": [ + { + "name": "set", + "type": "StickerSet" + }, + { + "name": "cover", + "type": "Document" + } + ], + "type": "StickerSetCovered" + }, + { + "id": "872932635", + "predicate": "stickerSetMultiCovered", + "params": [ + { + "name": "set", + "type": "StickerSet" + }, + { + "name": "covers", + "type": "Vector" + } + ], + "type": "StickerSetCovered" + }, + { + "id": "1087454222", + "predicate": "stickerSetFullCovered", + "params": [ + { + "name": "set", + "type": "StickerSet" + }, + { + "name": "packs", + "type": "Vector" + }, + { + "name": "keywords", + "type": "Vector" + }, + { + "name": "documents", + "type": "Vector" + } + ], + "type": "StickerSetCovered" + }, + { + "id": "2008112412", + "predicate": "stickerSetNoCovered", + "params": [ + { + "name": "set", + "type": "StickerSet" + } + ], + "type": "StickerSetCovered" + }, + { + "id": "-1361650766", + "predicate": "maskCoords", + "params": [ + { + "name": "n", + "type": "int" + }, + { + "name": "x", + "type": "double" + }, + { + "name": "y", + "type": "double" + }, + { + "name": "zoom", + "type": "double" + } + ], + "type": "MaskCoords" + }, + { + "id": "1251549527", + "predicate": "inputStickeredMediaPhoto", + "params": [ + { + "name": "id", + "type": "InputPhoto" + } + ], + "type": "InputStickeredMedia" + }, + { + "id": "70813275", + "predicate": "inputStickeredMediaDocument", + "params": [ + { + "name": "id", + "type": "InputDocument" + } + ], + "type": "InputStickeredMedia" + }, + { + "id": "-1107729093", + "predicate": "game", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "short_name", + "type": "string" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "description", + "type": "string" + }, + { + "name": "photo", + "type": "Photo" + }, + { + "name": "document", + "type": "flags.0?Document" + } + ], + "type": "Game" + }, + { + "id": "53231223", + "predicate": "inputGameID", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputGame" + }, + { + "id": "-1020139510", + "predicate": "inputGameShortName", + "params": [ + { + "name": "bot_id", + "type": "InputUser" + }, + { + "name": "short_name", + "type": "string" + } + ], + "type": "InputGame" + }, + { + "id": "1940093419", + "predicate": "highScore", + "params": [ + { + "name": "pos", + "type": "int" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "score", + "type": "int" + } + ], + "type": "HighScore" + }, + { + "id": "-1707344487", + "predicate": "messages.highScores", + "params": [ + { + "name": "scores", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.HighScores" + }, + { + "id": "-599948721", + "predicate": "textEmpty", + "params": [], + "type": "RichText" + }, + { + "id": "1950782688", + "predicate": "textPlain", + "params": [ + { + "name": "text", + "type": "string" + } + ], + "type": "RichText" + }, + { + "id": "1730456516", + "predicate": "textBold", + "params": [ + { + "name": "text", + "type": "RichText" + } + ], + "type": "RichText" + }, + { + "id": "-653089380", + "predicate": "textItalic", + "params": [ + { + "name": "text", + "type": "RichText" + } + ], + "type": "RichText" + }, + { + "id": "-1054465340", + "predicate": "textUnderline", + "params": [ + { + "name": "text", + "type": "RichText" + } + ], + "type": "RichText" + }, + { + "id": "-1678197867", + "predicate": "textStrike", + "params": [ + { + "name": "text", + "type": "RichText" + } + ], + "type": "RichText" + }, + { + "id": "1816074681", + "predicate": "textFixed", + "params": [ + { + "name": "text", + "type": "RichText" + } + ], + "type": "RichText" + }, + { + "id": "1009288385", + "predicate": "textUrl", + "params": [ + { + "name": "text", + "type": "RichText" + }, + { + "name": "url", + "type": "string" + }, + { + "name": "webpage_id", + "type": "long" + } + ], + "type": "RichText" + }, + { + "id": "-564523562", + "predicate": "textEmail", + "params": [ + { + "name": "text", + "type": "RichText" + }, + { + "name": "email", + "type": "string" + } + ], + "type": "RichText" + }, + { + "id": "2120376535", + "predicate": "textConcat", + "params": [ + { + "name": "texts", + "type": "Vector" + } + ], + "type": "RichText" + }, + { + "id": "-311786236", + "predicate": "textSubscript", + "params": [ + { + "name": "text", + "type": "RichText" + } + ], + "type": "RichText" + }, + { + "id": "-939827711", + "predicate": "textSuperscript", + "params": [ + { + "name": "text", + "type": "RichText" + } + ], + "type": "RichText" + }, + { + "id": "55281185", + "predicate": "textMarked", + "params": [ + { + "name": "text", + "type": "RichText" + } + ], + "type": "RichText" + }, + { + "id": "483104362", + "predicate": "textPhone", + "params": [ + { + "name": "text", + "type": "RichText" + }, + { + "name": "phone", + "type": "string" + } + ], + "type": "RichText" + }, + { + "id": "136105807", + "predicate": "textImage", + "params": [ + { + "name": "document_id", + "type": "long" + }, + { + "name": "w", + "type": "int" + }, + { + "name": "h", + "type": "int" + } + ], + "type": "RichText" + }, + { + "id": "894777186", + "predicate": "textAnchor", + "params": [ + { + "name": "text", + "type": "RichText" + }, + { + "name": "name", + "type": "string" + } + ], + "type": "RichText" + }, + { + "id": "324435594", + "predicate": "pageBlockUnsupported", + "params": [], + "type": "PageBlock" + }, + { + "id": "1890305021", + "predicate": "pageBlockTitle", + "params": [ + { + "name": "text", + "type": "RichText" + } + ], + "type": "PageBlock" + }, + { + "id": "-1879401953", + "predicate": "pageBlockSubtitle", + "params": [ + { + "name": "text", + "type": "RichText" + } + ], + "type": "PageBlock" + }, + { + "id": "-1162877472", + "predicate": "pageBlockAuthorDate", + "params": [ + { + "name": "author", + "type": "RichText" + }, + { + "name": "published_date", + "type": "int" + } + ], + "type": "PageBlock" + }, + { + "id": "-1076861716", + "predicate": "pageBlockHeader", + "params": [ + { + "name": "text", + "type": "RichText" + } + ], + "type": "PageBlock" + }, + { + "id": "-248793375", + "predicate": "pageBlockSubheader", + "params": [ + { + "name": "text", + "type": "RichText" + } + ], + "type": "PageBlock" + }, + { + "id": "1182402406", + "predicate": "pageBlockParagraph", + "params": [ + { + "name": "text", + "type": "RichText" + } + ], + "type": "PageBlock" + }, + { + "id": "-1066346178", + "predicate": "pageBlockPreformatted", + "params": [ + { + "name": "text", + "type": "RichText" + }, + { + "name": "language", + "type": "string" + } + ], + "type": "PageBlock" + }, + { + "id": "1216809369", + "predicate": "pageBlockFooter", + "params": [ + { + "name": "text", + "type": "RichText" + } + ], + "type": "PageBlock" + }, + { + "id": "-618614392", + "predicate": "pageBlockDivider", + "params": [], + "type": "PageBlock" + }, + { + "id": "-837994576", + "predicate": "pageBlockAnchor", + "params": [ + { + "name": "name", + "type": "string" + } + ], + "type": "PageBlock" + }, + { + "id": "-454524911", + "predicate": "pageBlockList", + "params": [ + { + "name": "items", + "type": "Vector" + } + ], + "type": "PageBlock" + }, + { + "id": "641563686", + "predicate": "pageBlockBlockquote", + "params": [ + { + "name": "text", + "type": "RichText" + }, + { + "name": "caption", + "type": "RichText" + } + ], + "type": "PageBlock" + }, + { + "id": "1329878739", + "predicate": "pageBlockPullquote", + "params": [ + { + "name": "text", + "type": "RichText" + }, + { + "name": "caption", + "type": "RichText" + } + ], + "type": "PageBlock" + }, + { + "id": "391759200", + "predicate": "pageBlockPhoto", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "photo_id", + "type": "long" + }, + { + "name": "caption", + "type": "PageCaption" + }, + { + "name": "url", + "type": "flags.0?string" + }, + { + "name": "webpage_id", + "type": "flags.0?long" + } + ], + "type": "PageBlock" + }, + { + "id": "2089805750", + "predicate": "pageBlockVideo", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "autoplay", + "type": "flags.0?true" + }, + { + "name": "loop", + "type": "flags.1?true" + }, + { + "name": "video_id", + "type": "long" + }, + { + "name": "caption", + "type": "PageCaption" + } + ], + "type": "PageBlock" + }, + { + "id": "972174080", + "predicate": "pageBlockCover", + "params": [ + { + "name": "cover", + "type": "PageBlock" + } + ], + "type": "PageBlock" + }, + { + "id": "-1468953147", + "predicate": "pageBlockEmbed", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "full_width", + "type": "flags.0?true" + }, + { + "name": "allow_scrolling", + "type": "flags.3?true" + }, + { + "name": "url", + "type": "flags.1?string" + }, + { + "name": "html", + "type": "flags.2?string" + }, + { + "name": "poster_photo_id", + "type": "flags.4?long" + }, + { + "name": "w", + "type": "flags.5?int" + }, + { + "name": "h", + "type": "flags.5?int" + }, + { + "name": "caption", + "type": "PageCaption" + } + ], + "type": "PageBlock" + }, + { + "id": "-229005301", + "predicate": "pageBlockEmbedPost", + "params": [ + { + "name": "url", + "type": "string" + }, + { + "name": "webpage_id", + "type": "long" + }, + { + "name": "author_photo_id", + "type": "long" + }, + { + "name": "author", + "type": "string" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "blocks", + "type": "Vector" + }, + { + "name": "caption", + "type": "PageCaption" + } + ], + "type": "PageBlock" + }, + { + "id": "1705048653", + "predicate": "pageBlockCollage", + "params": [ + { + "name": "items", + "type": "Vector" + }, + { + "name": "caption", + "type": "PageCaption" + } + ], + "type": "PageBlock" + }, + { + "id": "52401552", + "predicate": "pageBlockSlideshow", + "params": [ + { + "name": "items", + "type": "Vector" + }, + { + "name": "caption", + "type": "PageCaption" + } + ], + "type": "PageBlock" + }, + { + "id": "-283684427", + "predicate": "pageBlockChannel", + "params": [ + { + "name": "channel", + "type": "Chat" + } + ], + "type": "PageBlock" + }, + { + "id": "-2143067670", + "predicate": "pageBlockAudio", + "params": [ + { + "name": "audio_id", + "type": "long" + }, + { + "name": "caption", + "type": "PageCaption" + } + ], + "type": "PageBlock" + }, + { + "id": "504660880", + "predicate": "pageBlockKicker", + "params": [ + { + "name": "text", + "type": "RichText" + } + ], + "type": "PageBlock" + }, + { + "id": "-1085412734", + "predicate": "pageBlockTable", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "bordered", + "type": "flags.0?true" + }, + { + "name": "striped", + "type": "flags.1?true" + }, + { + "name": "title", + "type": "RichText" + }, + { + "name": "rows", + "type": "Vector" + } + ], + "type": "PageBlock" + }, + { + "id": "-1702174239", + "predicate": "pageBlockOrderedList", + "params": [ + { + "name": "items", + "type": "Vector" + } + ], + "type": "PageBlock" + }, + { + "id": "1987480557", + "predicate": "pageBlockDetails", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "open", + "type": "flags.0?true" + }, + { + "name": "blocks", + "type": "Vector" + }, + { + "name": "title", + "type": "RichText" + } + ], + "type": "PageBlock" + }, + { + "id": "370236054", + "predicate": "pageBlockRelatedArticles", + "params": [ + { + "name": "title", + "type": "RichText" + }, + { + "name": "articles", + "type": "Vector" + } + ], + "type": "PageBlock" + }, + { + "id": "-1538310410", + "predicate": "pageBlockMap", + "params": [ + { + "name": "geo", + "type": "GeoPoint" + }, + { + "name": "zoom", + "type": "int" + }, + { + "name": "w", + "type": "int" + }, + { + "name": "h", + "type": "int" + }, + { + "name": "caption", + "type": "PageCaption" + } + ], + "type": "PageBlock" + }, + { + "id": "-2048646399", + "predicate": "phoneCallDiscardReasonMissed", + "params": [], + "type": "PhoneCallDiscardReason" + }, + { + "id": "-527056480", + "predicate": "phoneCallDiscardReasonDisconnect", + "params": [], + "type": "PhoneCallDiscardReason" + }, + { + "id": "1471006352", + "predicate": "phoneCallDiscardReasonHangup", + "params": [], + "type": "PhoneCallDiscardReason" + }, + { + "id": "-84416311", + "predicate": "phoneCallDiscardReasonBusy", + "params": [], + "type": "PhoneCallDiscardReason" + }, + { + "id": "-1615072777", + "predicate": "phoneCallDiscardReasonMigrateConferenceCall", + "params": [ + { + "name": "slug", + "type": "string" + } + ], + "type": "PhoneCallDiscardReason" + }, + { + "id": "2104790276", + "predicate": "dataJSON", + "params": [ + { + "name": "data", + "type": "string" + } + ], + "type": "DataJSON" + }, + { + "id": "-886477832", + "predicate": "labeledPrice", + "params": [ + { + "name": "label", + "type": "string" + }, + { + "name": "amount", + "type": "long" + } + ], + "type": "LabeledPrice" + }, + { + "id": "77522308", + "predicate": "invoice", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "test", + "type": "flags.0?true" + }, + { + "name": "name_requested", + "type": "flags.1?true" + }, + { + "name": "phone_requested", + "type": "flags.2?true" + }, + { + "name": "email_requested", + "type": "flags.3?true" + }, + { + "name": "shipping_address_requested", + "type": "flags.4?true" + }, + { + "name": "flexible", + "type": "flags.5?true" + }, + { + "name": "phone_to_provider", + "type": "flags.6?true" + }, + { + "name": "email_to_provider", + "type": "flags.7?true" + }, + { + "name": "recurring", + "type": "flags.9?true" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "prices", + "type": "Vector" + }, + { + "name": "max_tip_amount", + "type": "flags.8?long" + }, + { + "name": "suggested_tip_amounts", + "type": "flags.8?Vector" + }, + { + "name": "terms_url", + "type": "flags.10?string" + }, + { + "name": "subscription_period", + "type": "flags.11?int" + } + ], + "type": "Invoice" + }, + { + "id": "-368917890", + "predicate": "paymentCharge", + "params": [ + { + "name": "id", + "type": "string" + }, + { + "name": "provider_charge_id", + "type": "string" + } + ], + "type": "PaymentCharge" + }, + { + "id": "512535275", + "predicate": "postAddress", + "params": [ + { + "name": "street_line1", + "type": "string" + }, + { + "name": "street_line2", + "type": "string" + }, + { + "name": "city", + "type": "string" + }, + { + "name": "state", + "type": "string" + }, + { + "name": "country_iso2", + "type": "string" + }, + { + "name": "post_code", + "type": "string" + } + ], + "type": "PostAddress" + }, + { + "id": "-1868808300", + "predicate": "paymentRequestedInfo", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "name", + "type": "flags.0?string" + }, + { + "name": "phone", + "type": "flags.1?string" + }, + { + "name": "email", + "type": "flags.2?string" + }, + { + "name": "shipping_address", + "type": "flags.3?PostAddress" + } + ], + "type": "PaymentRequestedInfo" + }, + { + "id": "-842892769", + "predicate": "paymentSavedCredentialsCard", + "params": [ + { + "name": "id", + "type": "string" + }, + { + "name": "title", + "type": "string" + } + ], + "type": "PaymentSavedCredentials" + }, + { + "id": "475467473", + "predicate": "webDocument", + "params": [ + { + "name": "url", + "type": "string" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "size", + "type": "int" + }, + { + "name": "mime_type", + "type": "string" + }, + { + "name": "attributes", + "type": "Vector" + } + ], + "type": "WebDocument" + }, + { + "id": "-104284986", + "predicate": "webDocumentNoProxy", + "params": [ + { + "name": "url", + "type": "string" + }, + { + "name": "size", + "type": "int" + }, + { + "name": "mime_type", + "type": "string" + }, + { + "name": "attributes", + "type": "Vector" + } + ], + "type": "WebDocument" + }, + { + "id": "-1678949555", + "predicate": "inputWebDocument", + "params": [ + { + "name": "url", + "type": "string" + }, + { + "name": "size", + "type": "int" + }, + { + "name": "mime_type", + "type": "string" + }, + { + "name": "attributes", + "type": "Vector" + } + ], + "type": "InputWebDocument" + }, + { + "id": "-1036396922", + "predicate": "inputWebFileLocation", + "params": [ + { + "name": "url", + "type": "string" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputWebFileLocation" + }, + { + "id": "-1625153079", + "predicate": "inputWebFileGeoPointLocation", + "params": [ + { + "name": "geo_point", + "type": "InputGeoPoint" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "w", + "type": "int" + }, + { + "name": "h", + "type": "int" + }, + { + "name": "zoom", + "type": "int" + }, + { + "name": "scale", + "type": "int" + } + ], + "type": "InputWebFileLocation" + }, + { + "id": "-193992412", + "predicate": "inputWebFileAudioAlbumThumbLocation", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "small", + "type": "flags.2?true" + }, + { + "name": "document", + "type": "flags.0?InputDocument" + }, + { + "name": "title", + "type": "flags.1?string" + }, + { + "name": "performer", + "type": "flags.1?string" + } + ], + "type": "InputWebFileLocation" + }, + { + "id": "568808380", + "predicate": "upload.webFile", + "params": [ + { + "name": "size", + "type": "int" + }, + { + "name": "mime_type", + "type": "string" + }, + { + "name": "file_type", + "type": "storage.FileType" + }, + { + "name": "mtime", + "type": "int" + }, + { + "name": "bytes", + "type": "bytes" + } + ], + "type": "upload.WebFile" + }, + { + "id": "-1610250415", + "predicate": "payments.paymentForm", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "can_save_credentials", + "type": "flags.2?true" + }, + { + "name": "password_missing", + "type": "flags.3?true" + }, + { + "name": "form_id", + "type": "long" + }, + { + "name": "bot_id", + "type": "long" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "description", + "type": "string" + }, + { + "name": "photo", + "type": "flags.5?WebDocument" + }, + { + "name": "invoice", + "type": "Invoice" + }, + { + "name": "provider_id", + "type": "long" + }, + { + "name": "url", + "type": "string" + }, + { + "name": "native_provider", + "type": "flags.4?string" + }, + { + "name": "native_params", + "type": "flags.4?DataJSON" + }, + { + "name": "additional_methods", + "type": "flags.6?Vector" + }, + { + "name": "saved_info", + "type": "flags.0?PaymentRequestedInfo" + }, + { + "name": "saved_credentials", + "type": "flags.1?Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "payments.PaymentForm" + }, + { + "id": "2079764828", + "predicate": "payments.paymentFormStars", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "form_id", + "type": "long" + }, + { + "name": "bot_id", + "type": "long" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "description", + "type": "string" + }, + { + "name": "photo", + "type": "flags.5?WebDocument" + }, + { + "name": "invoice", + "type": "Invoice" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "payments.PaymentForm" + }, + { + "id": "-1272590367", + "predicate": "payments.paymentFormStarGift", + "params": [ + { + "name": "form_id", + "type": "long" + }, + { + "name": "invoice", + "type": "Invoice" + } + ], + "type": "payments.PaymentForm" + }, + { + "id": "-784000893", + "predicate": "payments.validatedRequestedInfo", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "id", + "type": "flags.0?string" + }, + { + "name": "shipping_options", + "type": "flags.1?Vector" + } + ], + "type": "payments.ValidatedRequestedInfo" + }, + { + "id": "1314881805", + "predicate": "payments.paymentResult", + "params": [ + { + "name": "updates", + "type": "Updates" + } + ], + "type": "payments.PaymentResult" + }, + { + "id": "-666824391", + "predicate": "payments.paymentVerificationNeeded", + "params": [ + { + "name": "url", + "type": "string" + } + ], + "type": "payments.PaymentResult" + }, + { + "id": "1891958275", + "predicate": "payments.paymentReceipt", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "bot_id", + "type": "long" + }, + { + "name": "provider_id", + "type": "long" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "description", + "type": "string" + }, + { + "name": "photo", + "type": "flags.2?WebDocument" + }, + { + "name": "invoice", + "type": "Invoice" + }, + { + "name": "info", + "type": "flags.0?PaymentRequestedInfo" + }, + { + "name": "shipping", + "type": "flags.1?ShippingOption" + }, + { + "name": "tip_amount", + "type": "flags.3?long" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "total_amount", + "type": "long" + }, + { + "name": "credentials_title", + "type": "string" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "payments.PaymentReceipt" + }, + { + "id": "-625215430", + "predicate": "payments.paymentReceiptStars", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "bot_id", + "type": "long" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "description", + "type": "string" + }, + { + "name": "photo", + "type": "flags.2?WebDocument" + }, + { + "name": "invoice", + "type": "Invoice" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "total_amount", + "type": "long" + }, + { + "name": "transaction_id", + "type": "string" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "payments.PaymentReceipt" + }, + { + "id": "-74456004", + "predicate": "payments.savedInfo", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "has_saved_credentials", + "type": "flags.1?true" + }, + { + "name": "saved_info", + "type": "flags.0?PaymentRequestedInfo" + } + ], + "type": "payments.SavedInfo" + }, + { + "id": "-1056001329", + "predicate": "inputPaymentCredentialsSaved", + "params": [ + { + "name": "id", + "type": "string" + }, + { + "name": "tmp_password", + "type": "bytes" + } + ], + "type": "InputPaymentCredentials" + }, + { + "id": "873977640", + "predicate": "inputPaymentCredentials", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "save", + "type": "flags.0?true" + }, + { + "name": "data", + "type": "DataJSON" + } + ], + "type": "InputPaymentCredentials" + }, + { + "id": "178373535", + "predicate": "inputPaymentCredentialsApplePay", + "params": [ + { + "name": "payment_data", + "type": "DataJSON" + } + ], + "type": "InputPaymentCredentials" + }, + { + "id": "-1966921727", + "predicate": "inputPaymentCredentialsGooglePay", + "params": [ + { + "name": "payment_token", + "type": "DataJSON" + } + ], + "type": "InputPaymentCredentials" + }, + { + "id": "-614138572", + "predicate": "account.tmpPassword", + "params": [ + { + "name": "tmp_password", + "type": "bytes" + }, + { + "name": "valid_until", + "type": "int" + } + ], + "type": "account.TmpPassword" + }, + { + "id": "-1239335713", + "predicate": "shippingOption", + "params": [ + { + "name": "id", + "type": "string" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "prices", + "type": "Vector" + } + ], + "type": "ShippingOption" + }, + { + "id": "853188252", + "predicate": "inputStickerSetItem", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "document", + "type": "InputDocument" + }, + { + "name": "emoji", + "type": "string" + }, + { + "name": "mask_coords", + "type": "flags.0?MaskCoords" + }, + { + "name": "keywords", + "type": "flags.1?string" + } + ], + "type": "InputStickerSetItem" + }, + { + "id": "506920429", + "predicate": "inputPhoneCall", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputPhoneCall" + }, + { + "id": "1399245077", + "predicate": "phoneCallEmpty", + "params": [ + { + "name": "id", + "type": "long" + } + ], + "type": "PhoneCall" + }, + { + "id": "-987599081", + "predicate": "phoneCallWaiting", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "video", + "type": "flags.6?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "admin_id", + "type": "long" + }, + { + "name": "participant_id", + "type": "long" + }, + { + "name": "protocol", + "type": "PhoneCallProtocol" + }, + { + "name": "receive_date", + "type": "flags.0?int" + } + ], + "type": "PhoneCall" + }, + { + "id": "347139340", + "predicate": "phoneCallRequested", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "video", + "type": "flags.6?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "admin_id", + "type": "long" + }, + { + "name": "participant_id", + "type": "long" + }, + { + "name": "g_a_hash", + "type": "bytes" + }, + { + "name": "protocol", + "type": "PhoneCallProtocol" + } + ], + "type": "PhoneCall" + }, + { + "id": "912311057", + "predicate": "phoneCallAccepted", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "video", + "type": "flags.6?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "admin_id", + "type": "long" + }, + { + "name": "participant_id", + "type": "long" + }, + { + "name": "g_b", + "type": "bytes" + }, + { + "name": "protocol", + "type": "PhoneCallProtocol" + } + ], + "type": "PhoneCall" + }, + { + "id": "810769141", + "predicate": "phoneCall", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "p2p_allowed", + "type": "flags.5?true" + }, + { + "name": "video", + "type": "flags.6?true" + }, + { + "name": "conference_supported", + "type": "flags.8?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "admin_id", + "type": "long" + }, + { + "name": "participant_id", + "type": "long" + }, + { + "name": "g_a_or_b", + "type": "bytes" + }, + { + "name": "key_fingerprint", + "type": "long" + }, + { + "name": "protocol", + "type": "PhoneCallProtocol" + }, + { + "name": "connections", + "type": "Vector" + }, + { + "name": "start_date", + "type": "int" + }, + { + "name": "custom_parameters", + "type": "flags.7?DataJSON" + } + ], + "type": "PhoneCall" + }, + { + "id": "1355435489", + "predicate": "phoneCallDiscarded", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "need_rating", + "type": "flags.2?true" + }, + { + "name": "need_debug", + "type": "flags.3?true" + }, + { + "name": "video", + "type": "flags.6?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "reason", + "type": "flags.0?PhoneCallDiscardReason" + }, + { + "name": "duration", + "type": "flags.1?int" + } + ], + "type": "PhoneCall" + }, + { + "id": "-1665063993", + "predicate": "phoneConnection", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "tcp", + "type": "flags.0?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "ip", + "type": "string" + }, + { + "name": "ipv6", + "type": "string" + }, + { + "name": "port", + "type": "int" + }, + { + "name": "peer_tag", + "type": "bytes" + } + ], + "type": "PhoneConnection" + }, + { + "id": "1667228533", + "predicate": "phoneConnectionWebrtc", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "turn", + "type": "flags.0?true" + }, + { + "name": "stun", + "type": "flags.1?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "ip", + "type": "string" + }, + { + "name": "ipv6", + "type": "string" + }, + { + "name": "port", + "type": "int" + }, + { + "name": "username", + "type": "string" + }, + { + "name": "password", + "type": "string" + } + ], + "type": "PhoneConnection" + }, + { + "id": "-58224696", + "predicate": "phoneCallProtocol", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "udp_p2p", + "type": "flags.0?true" + }, + { + "name": "udp_reflector", + "type": "flags.1?true" + }, + { + "name": "min_layer", + "type": "int" + }, + { + "name": "max_layer", + "type": "int" + }, + { + "name": "library_versions", + "type": "Vector" + } + ], + "type": "PhoneCallProtocol" + }, + { + "id": "-326966976", + "predicate": "phone.phoneCall", + "params": [ + { + "name": "phone_call", + "type": "PhoneCall" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "phone.PhoneCall" + }, + { + "id": "-290921362", + "predicate": "upload.cdnFileReuploadNeeded", + "params": [ + { + "name": "request_token", + "type": "bytes" + } + ], + "type": "upload.CdnFile" + }, + { + "id": "-1449145777", + "predicate": "upload.cdnFile", + "params": [ + { + "name": "bytes", + "type": "bytes" + } + ], + "type": "upload.CdnFile" + }, + { + "id": "-914167110", + "predicate": "cdnPublicKey", + "params": [ + { + "name": "dc_id", + "type": "int" + }, + { + "name": "public_key", + "type": "string" + } + ], + "type": "CdnPublicKey" + }, + { + "id": "1462101002", + "predicate": "cdnConfig", + "params": [ + { + "name": "public_keys", + "type": "Vector" + } + ], + "type": "CdnConfig" + }, + { + "id": "-892239370", + "predicate": "langPackString", + "params": [ + { + "name": "key", + "type": "string" + }, + { + "name": "value", + "type": "string" + } + ], + "type": "LangPackString" + }, + { + "id": "1816636575", + "predicate": "langPackStringPluralized", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "key", + "type": "string" + }, + { + "name": "zero_value", + "type": "flags.0?string" + }, + { + "name": "one_value", + "type": "flags.1?string" + }, + { + "name": "two_value", + "type": "flags.2?string" + }, + { + "name": "few_value", + "type": "flags.3?string" + }, + { + "name": "many_value", + "type": "flags.4?string" + }, + { + "name": "other_value", + "type": "string" + } + ], + "type": "LangPackString" + }, + { + "id": "695856818", + "predicate": "langPackStringDeleted", + "params": [ + { + "name": "key", + "type": "string" + } + ], + "type": "LangPackString" + }, + { + "id": "-209337866", + "predicate": "langPackDifference", + "params": [ + { + "name": "lang_code", + "type": "string" + }, + { + "name": "from_version", + "type": "int" + }, + { + "name": "version", + "type": "int" + }, + { + "name": "strings", + "type": "Vector" + } + ], + "type": "LangPackDifference" + }, + { + "id": "-288727837", + "predicate": "langPackLanguage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "official", + "type": "flags.0?true" + }, + { + "name": "rtl", + "type": "flags.2?true" + }, + { + "name": "beta", + "type": "flags.3?true" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "native_name", + "type": "string" + }, + { + "name": "lang_code", + "type": "string" + }, + { + "name": "base_lang_code", + "type": "flags.1?string" + }, + { + "name": "plural_code", + "type": "string" + }, + { + "name": "strings_count", + "type": "int" + }, + { + "name": "translated_count", + "type": "int" + }, + { + "name": "translations_url", + "type": "string" + } + ], + "type": "LangPackLanguage" + }, + { + "id": "-421545947", + "predicate": "channelAdminLogEventActionChangeTitle", + "params": [ + { + "name": "prev_value", + "type": "string" + }, + { + "name": "new_value", + "type": "string" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1427671598", + "predicate": "channelAdminLogEventActionChangeAbout", + "params": [ + { + "name": "prev_value", + "type": "string" + }, + { + "name": "new_value", + "type": "string" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1783299128", + "predicate": "channelAdminLogEventActionChangeUsername", + "params": [ + { + "name": "prev_value", + "type": "string" + }, + { + "name": "new_value", + "type": "string" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1129042607", + "predicate": "channelAdminLogEventActionChangePhoto", + "params": [ + { + "name": "prev_photo", + "type": "Photo" + }, + { + "name": "new_photo", + "type": "Photo" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "460916654", + "predicate": "channelAdminLogEventActionToggleInvites", + "params": [ + { + "name": "new_value", + "type": "Bool" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "648939889", + "predicate": "channelAdminLogEventActionToggleSignatures", + "params": [ + { + "name": "new_value", + "type": "Bool" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "-370660328", + "predicate": "channelAdminLogEventActionUpdatePinned", + "params": [ + { + "name": "message", + "type": "Message" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1889215493", + "predicate": "channelAdminLogEventActionEditMessage", + "params": [ + { + "name": "prev_message", + "type": "Message" + }, + { + "name": "new_message", + "type": "Message" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1121994683", + "predicate": "channelAdminLogEventActionDeleteMessage", + "params": [ + { + "name": "message", + "type": "Message" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "405815507", + "predicate": "channelAdminLogEventActionParticipantJoin", + "params": [], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "-124291086", + "predicate": "channelAdminLogEventActionParticipantLeave", + "params": [], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "-484690728", + "predicate": "channelAdminLogEventActionParticipantInvite", + "params": [ + { + "name": "participant", + "type": "ChannelParticipant" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "-422036098", + "predicate": "channelAdminLogEventActionParticipantToggleBan", + "params": [ + { + "name": "prev_participant", + "type": "ChannelParticipant" + }, + { + "name": "new_participant", + "type": "ChannelParticipant" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "-714643696", + "predicate": "channelAdminLogEventActionParticipantToggleAdmin", + "params": [ + { + "name": "prev_participant", + "type": "ChannelParticipant" + }, + { + "name": "new_participant", + "type": "ChannelParticipant" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "-1312568665", + "predicate": "channelAdminLogEventActionChangeStickerSet", + "params": [ + { + "name": "prev_stickerset", + "type": "InputStickerSet" + }, + { + "name": "new_stickerset", + "type": "InputStickerSet" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1599903217", + "predicate": "channelAdminLogEventActionTogglePreHistoryHidden", + "params": [ + { + "name": "new_value", + "type": "Bool" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "771095562", + "predicate": "channelAdminLogEventActionDefaultBannedRights", + "params": [ + { + "name": "prev_banned_rights", + "type": "ChatBannedRights" + }, + { + "name": "new_banned_rights", + "type": "ChatBannedRights" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "-1895328189", + "predicate": "channelAdminLogEventActionStopPoll", + "params": [ + { + "name": "message", + "type": "Message" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "84703944", + "predicate": "channelAdminLogEventActionChangeLinkedChat", + "params": [ + { + "name": "prev_value", + "type": "long" + }, + { + "name": "new_value", + "type": "long" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "241923758", + "predicate": "channelAdminLogEventActionChangeLocation", + "params": [ + { + "name": "prev_value", + "type": "ChannelLocation" + }, + { + "name": "new_value", + "type": "ChannelLocation" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1401984889", + "predicate": "channelAdminLogEventActionToggleSlowMode", + "params": [ + { + "name": "prev_value", + "type": "int" + }, + { + "name": "new_value", + "type": "int" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "589338437", + "predicate": "channelAdminLogEventActionStartGroupCall", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "-610299584", + "predicate": "channelAdminLogEventActionDiscardGroupCall", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "-115071790", + "predicate": "channelAdminLogEventActionParticipantMute", + "params": [ + { + "name": "participant", + "type": "GroupCallParticipant" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "-431740480", + "predicate": "channelAdminLogEventActionParticipantUnmute", + "params": [ + { + "name": "participant", + "type": "GroupCallParticipant" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1456906823", + "predicate": "channelAdminLogEventActionToggleGroupCallSetting", + "params": [ + { + "name": "join_muted", + "type": "Bool" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "-23084712", + "predicate": "channelAdminLogEventActionParticipantJoinByInvite", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "via_chatlist", + "type": "flags.0?true" + }, + { + "name": "invite", + "type": "ExportedChatInvite" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1515256996", + "predicate": "channelAdminLogEventActionExportedInviteDelete", + "params": [ + { + "name": "invite", + "type": "ExportedChatInvite" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1091179342", + "predicate": "channelAdminLogEventActionExportedInviteRevoke", + "params": [ + { + "name": "invite", + "type": "ExportedChatInvite" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "-384910503", + "predicate": "channelAdminLogEventActionExportedInviteEdit", + "params": [ + { + "name": "prev_invite", + "type": "ExportedChatInvite" + }, + { + "name": "new_invite", + "type": "ExportedChatInvite" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1048537159", + "predicate": "channelAdminLogEventActionParticipantVolume", + "params": [ + { + "name": "participant", + "type": "GroupCallParticipant" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1855199800", + "predicate": "channelAdminLogEventActionChangeHistoryTTL", + "params": [ + { + "name": "prev_value", + "type": "int" + }, + { + "name": "new_value", + "type": "int" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "-1347021750", + "predicate": "channelAdminLogEventActionParticipantJoinByRequest", + "params": [ + { + "name": "invite", + "type": "ExportedChatInvite" + }, + { + "name": "approved_by", + "type": "long" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "-886388890", + "predicate": "channelAdminLogEventActionToggleNoForwards", + "params": [ + { + "name": "new_value", + "type": "Bool" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "663693416", + "predicate": "channelAdminLogEventActionSendMessage", + "params": [ + { + "name": "message", + "type": "Message" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "-1102180616", + "predicate": "channelAdminLogEventActionChangeAvailableReactions", + "params": [ + { + "name": "prev_value", + "type": "ChatReactions" + }, + { + "name": "new_value", + "type": "ChatReactions" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "-263212119", + "predicate": "channelAdminLogEventActionChangeUsernames", + "params": [ + { + "name": "prev_value", + "type": "Vector" + }, + { + "name": "new_value", + "type": "Vector" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "46949251", + "predicate": "channelAdminLogEventActionToggleForum", + "params": [ + { + "name": "new_value", + "type": "Bool" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1483767080", + "predicate": "channelAdminLogEventActionCreateTopic", + "params": [ + { + "name": "topic", + "type": "ForumTopic" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "-261103096", + "predicate": "channelAdminLogEventActionEditTopic", + "params": [ + { + "name": "prev_topic", + "type": "ForumTopic" + }, + { + "name": "new_topic", + "type": "ForumTopic" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "-1374254839", + "predicate": "channelAdminLogEventActionDeleteTopic", + "params": [ + { + "name": "topic", + "type": "ForumTopic" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1569535291", + "predicate": "channelAdminLogEventActionPinTopic", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "prev_topic", + "type": "flags.0?ForumTopic" + }, + { + "name": "new_topic", + "type": "flags.1?ForumTopic" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1693675004", + "predicate": "channelAdminLogEventActionToggleAntiSpam", + "params": [ + { + "name": "new_value", + "type": "Bool" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1469507456", + "predicate": "channelAdminLogEventActionChangePeerColor", + "params": [ + { + "name": "prev_value", + "type": "PeerColor" + }, + { + "name": "new_value", + "type": "PeerColor" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1581742885", + "predicate": "channelAdminLogEventActionChangeProfilePeerColor", + "params": [ + { + "name": "prev_value", + "type": "PeerColor" + }, + { + "name": "new_value", + "type": "PeerColor" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "834362706", + "predicate": "channelAdminLogEventActionChangeWallpaper", + "params": [ + { + "name": "prev_value", + "type": "WallPaper" + }, + { + "name": "new_value", + "type": "WallPaper" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1051328177", + "predicate": "channelAdminLogEventActionChangeEmojiStatus", + "params": [ + { + "name": "prev_value", + "type": "EmojiStatus" + }, + { + "name": "new_value", + "type": "EmojiStatus" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1188577451", + "predicate": "channelAdminLogEventActionChangeEmojiStickerSet", + "params": [ + { + "name": "prev_stickerset", + "type": "InputStickerSet" + }, + { + "name": "new_stickerset", + "type": "InputStickerSet" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1621597305", + "predicate": "channelAdminLogEventActionToggleSignatureProfiles", + "params": [ + { + "name": "new_value", + "type": "Bool" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1684286899", + "predicate": "channelAdminLogEventActionParticipantSubExtend", + "params": [ + { + "name": "prev_participant", + "type": "ChannelParticipant" + }, + { + "name": "new_participant", + "type": "ChannelParticipant" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "-988285058", + "predicate": "channelAdminLogEventActionToggleAutotranslation", + "params": [ + { + "name": "new_value", + "type": "Bool" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "1476834540", + "predicate": "channelAdminLogEventActionParticipantEditRank", + "params": [ + { + "name": "user_id", + "type": "long" + }, + { + "name": "prev_rank", + "type": "string" + }, + { + "name": "new_rank", + "type": "string" + } + ], + "type": "ChannelAdminLogEventAction" + }, + { + "id": "531458253", + "predicate": "channelAdminLogEvent", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "action", + "type": "ChannelAdminLogEventAction" + } + ], + "type": "ChannelAdminLogEvent" + }, + { + "id": "-309659827", + "predicate": "channels.adminLogResults", + "params": [ + { + "name": "events", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "channels.AdminLogResults" + }, + { + "id": "-368018716", + "predicate": "channelAdminLogEventsFilter", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "join", + "type": "flags.0?true" + }, + { + "name": "leave", + "type": "flags.1?true" + }, + { + "name": "invite", + "type": "flags.2?true" + }, + { + "name": "ban", + "type": "flags.3?true" + }, + { + "name": "unban", + "type": "flags.4?true" + }, + { + "name": "kick", + "type": "flags.5?true" + }, + { + "name": "unkick", + "type": "flags.6?true" + }, + { + "name": "promote", + "type": "flags.7?true" + }, + { + "name": "demote", + "type": "flags.8?true" + }, + { + "name": "info", + "type": "flags.9?true" + }, + { + "name": "settings", + "type": "flags.10?true" + }, + { + "name": "pinned", + "type": "flags.11?true" + }, + { + "name": "edit", + "type": "flags.12?true" + }, + { + "name": "delete", + "type": "flags.13?true" + }, + { + "name": "group_call", + "type": "flags.14?true" + }, + { + "name": "invites", + "type": "flags.15?true" + }, + { + "name": "send", + "type": "flags.16?true" + }, + { + "name": "forums", + "type": "flags.17?true" + }, + { + "name": "sub_extend", + "type": "flags.18?true" + }, + { + "name": "edit_rank", + "type": "flags.19?true" + } + ], + "type": "ChannelAdminLogEventsFilter" + }, + { + "id": "1558266229", + "predicate": "popularContact", + "params": [ + { + "name": "client_id", + "type": "long" + }, + { + "name": "importers", + "type": "int" + } + ], + "type": "PopularContact" + }, + { + "id": "-1634752813", + "predicate": "messages.favedStickersNotModified", + "params": [], + "type": "messages.FavedStickers" + }, + { + "id": "750063767", + "predicate": "messages.favedStickers", + "params": [ + { + "name": "hash", + "type": "long" + }, + { + "name": "packs", + "type": "Vector" + }, + { + "name": "stickers", + "type": "Vector" + } + ], + "type": "messages.FavedStickers" + }, + { + "id": "1189204285", + "predicate": "recentMeUrlUnknown", + "params": [ + { + "name": "url", + "type": "string" + } + ], + "type": "RecentMeUrl" + }, + { + "id": "-1188296222", + "predicate": "recentMeUrlUser", + "params": [ + { + "name": "url", + "type": "string" + }, + { + "name": "user_id", + "type": "long" + } + ], + "type": "RecentMeUrl" + }, + { + "id": "-1294306862", + "predicate": "recentMeUrlChat", + "params": [ + { + "name": "url", + "type": "string" + }, + { + "name": "chat_id", + "type": "long" + } + ], + "type": "RecentMeUrl" + }, + { + "id": "-347535331", + "predicate": "recentMeUrlChatInvite", + "params": [ + { + "name": "url", + "type": "string" + }, + { + "name": "chat_invite", + "type": "ChatInvite" + } + ], + "type": "RecentMeUrl" + }, + { + "id": "-1140172836", + "predicate": "recentMeUrlStickerSet", + "params": [ + { + "name": "url", + "type": "string" + }, + { + "name": "set", + "type": "StickerSetCovered" + } + ], + "type": "RecentMeUrl" + }, + { + "id": "235081943", + "predicate": "help.recentMeUrls", + "params": [ + { + "name": "urls", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "help.RecentMeUrls" + }, + { + "id": "482797855", + "predicate": "inputSingleMedia", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "media", + "type": "InputMedia" + }, + { + "name": "random_id", + "type": "long" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "entities", + "type": "flags.0?Vector" + } + ], + "type": "InputSingleMedia" + }, + { + "id": "-1493633966", + "predicate": "webAuthorization", + "params": [ + { + "name": "hash", + "type": "long" + }, + { + "name": "bot_id", + "type": "long" + }, + { + "name": "domain", + "type": "string" + }, + { + "name": "browser", + "type": "string" + }, + { + "name": "platform", + "type": "string" + }, + { + "name": "date_created", + "type": "int" + }, + { + "name": "date_active", + "type": "int" + }, + { + "name": "ip", + "type": "string" + }, + { + "name": "region", + "type": "string" + } + ], + "type": "WebAuthorization" + }, + { + "id": "-313079300", + "predicate": "account.webAuthorizations", + "params": [ + { + "name": "authorizations", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "account.WebAuthorizations" + }, + { + "id": "-1502174430", + "predicate": "inputMessageID", + "params": [ + { + "name": "id", + "type": "int" + } + ], + "type": "InputMessage" + }, + { + "id": "-1160215659", + "predicate": "inputMessageReplyTo", + "params": [ + { + "name": "id", + "type": "int" + } + ], + "type": "InputMessage" + }, + { + "id": "-2037963464", + "predicate": "inputMessagePinned", + "params": [], + "type": "InputMessage" + }, + { + "id": "-1392895362", + "predicate": "inputMessageCallbackQuery", + "params": [ + { + "name": "id", + "type": "int" + }, + { + "name": "query_id", + "type": "long" + } + ], + "type": "InputMessage" + }, + { + "id": "-55902537", + "predicate": "inputDialogPeer", + "params": [ + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "InputDialogPeer" + }, + { + "id": "1684014375", + "predicate": "inputDialogPeerFolder", + "params": [ + { + "name": "folder_id", + "type": "int" + } + ], + "type": "InputDialogPeer" + }, + { + "id": "-445792507", + "predicate": "dialogPeer", + "params": [ + { + "name": "peer", + "type": "Peer" + } + ], + "type": "DialogPeer" + }, + { + "id": "1363483106", + "predicate": "dialogPeerFolder", + "params": [ + { + "name": "folder_id", + "type": "int" + } + ], + "type": "DialogPeer" + }, + { + "id": "223655517", + "predicate": "messages.foundStickerSetsNotModified", + "params": [], + "type": "messages.FoundStickerSets" + }, + { + "id": "-1963942446", + "predicate": "messages.foundStickerSets", + "params": [ + { + "name": "hash", + "type": "long" + }, + { + "name": "sets", + "type": "Vector" + } + ], + "type": "messages.FoundStickerSets" + }, + { + "id": "-207944868", + "predicate": "fileHash", + "params": [ + { + "name": "offset", + "type": "long" + }, + { + "name": "limit", + "type": "int" + }, + { + "name": "hash", + "type": "bytes" + } + ], + "type": "FileHash" + }, + { + "id": "1968737087", + "predicate": "inputClientProxy", + "params": [ + { + "name": "address", + "type": "string" + }, + { + "name": "port", + "type": "int" + } + ], + "type": "InputClientProxy" + }, + { + "id": "-483352705", + "predicate": "help.termsOfServiceUpdateEmpty", + "params": [ + { + "name": "expires", + "type": "int" + } + ], + "type": "help.TermsOfServiceUpdate" + }, + { + "id": "686618977", + "predicate": "help.termsOfServiceUpdate", + "params": [ + { + "name": "expires", + "type": "int" + }, + { + "name": "terms_of_service", + "type": "help.TermsOfService" + } + ], + "type": "help.TermsOfServiceUpdate" + }, + { + "id": "859091184", + "predicate": "inputSecureFileUploaded", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "parts", + "type": "int" + }, + { + "name": "md5_checksum", + "type": "string" + }, + { + "name": "file_hash", + "type": "bytes" + }, + { + "name": "secret", + "type": "bytes" + } + ], + "type": "InputSecureFile" + }, + { + "id": "1399317950", + "predicate": "inputSecureFile", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputSecureFile" + }, + { + "id": "1679398724", + "predicate": "secureFileEmpty", + "params": [], + "type": "SecureFile" + }, + { + "id": "2097791614", + "predicate": "secureFile", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "size", + "type": "long" + }, + { + "name": "dc_id", + "type": "int" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "file_hash", + "type": "bytes" + }, + { + "name": "secret", + "type": "bytes" + } + ], + "type": "SecureFile" + }, + { + "id": "-1964327229", + "predicate": "secureData", + "params": [ + { + "name": "data", + "type": "bytes" + }, + { + "name": "data_hash", + "type": "bytes" + }, + { + "name": "secret", + "type": "bytes" + } + ], + "type": "SecureData" + }, + { + "id": "2103482845", + "predicate": "securePlainPhone", + "params": [ + { + "name": "phone", + "type": "string" + } + ], + "type": "SecurePlainData" + }, + { + "id": "569137759", + "predicate": "securePlainEmail", + "params": [ + { + "name": "email", + "type": "string" + } + ], + "type": "SecurePlainData" + }, + { + "id": "-1658158621", + "predicate": "secureValueTypePersonalDetails", + "params": [], + "type": "SecureValueType" + }, + { + "id": "1034709504", + "predicate": "secureValueTypePassport", + "params": [], + "type": "SecureValueType" + }, + { + "id": "115615172", + "predicate": "secureValueTypeDriverLicense", + "params": [], + "type": "SecureValueType" + }, + { + "id": "-1596951477", + "predicate": "secureValueTypeIdentityCard", + "params": [], + "type": "SecureValueType" + }, + { + "id": "-1717268701", + "predicate": "secureValueTypeInternalPassport", + "params": [], + "type": "SecureValueType" + }, + { + "id": "-874308058", + "predicate": "secureValueTypeAddress", + "params": [], + "type": "SecureValueType" + }, + { + "id": "-63531698", + "predicate": "secureValueTypeUtilityBill", + "params": [], + "type": "SecureValueType" + }, + { + "id": "-1995211763", + "predicate": "secureValueTypeBankStatement", + "params": [], + "type": "SecureValueType" + }, + { + "id": "-1954007928", + "predicate": "secureValueTypeRentalAgreement", + "params": [], + "type": "SecureValueType" + }, + { + "id": "-1713143702", + "predicate": "secureValueTypePassportRegistration", + "params": [], + "type": "SecureValueType" + }, + { + "id": "-368907213", + "predicate": "secureValueTypeTemporaryRegistration", + "params": [], + "type": "SecureValueType" + }, + { + "id": "-1289704741", + "predicate": "secureValueTypePhone", + "params": [], + "type": "SecureValueType" + }, + { + "id": "-1908627474", + "predicate": "secureValueTypeEmail", + "params": [], + "type": "SecureValueType" + }, + { + "id": "411017418", + "predicate": "secureValue", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "type", + "type": "SecureValueType" + }, + { + "name": "data", + "type": "flags.0?SecureData" + }, + { + "name": "front_side", + "type": "flags.1?SecureFile" + }, + { + "name": "reverse_side", + "type": "flags.2?SecureFile" + }, + { + "name": "selfie", + "type": "flags.3?SecureFile" + }, + { + "name": "translation", + "type": "flags.6?Vector" + }, + { + "name": "files", + "type": "flags.4?Vector" + }, + { + "name": "plain_data", + "type": "flags.5?SecurePlainData" + }, + { + "name": "hash", + "type": "bytes" + } + ], + "type": "SecureValue" + }, + { + "id": "-618540889", + "predicate": "inputSecureValue", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "type", + "type": "SecureValueType" + }, + { + "name": "data", + "type": "flags.0?SecureData" + }, + { + "name": "front_side", + "type": "flags.1?InputSecureFile" + }, + { + "name": "reverse_side", + "type": "flags.2?InputSecureFile" + }, + { + "name": "selfie", + "type": "flags.3?InputSecureFile" + }, + { + "name": "translation", + "type": "flags.6?Vector" + }, + { + "name": "files", + "type": "flags.4?Vector" + }, + { + "name": "plain_data", + "type": "flags.5?SecurePlainData" + } + ], + "type": "InputSecureValue" + }, + { + "id": "-316748368", + "predicate": "secureValueHash", + "params": [ + { + "name": "type", + "type": "SecureValueType" + }, + { + "name": "hash", + "type": "bytes" + } + ], + "type": "SecureValueHash" + }, + { + "id": "-391902247", + "predicate": "secureValueErrorData", + "params": [ + { + "name": "type", + "type": "SecureValueType" + }, + { + "name": "data_hash", + "type": "bytes" + }, + { + "name": "field", + "type": "string" + }, + { + "name": "text", + "type": "string" + } + ], + "type": "SecureValueError" + }, + { + "id": "12467706", + "predicate": "secureValueErrorFrontSide", + "params": [ + { + "name": "type", + "type": "SecureValueType" + }, + { + "name": "file_hash", + "type": "bytes" + }, + { + "name": "text", + "type": "string" + } + ], + "type": "SecureValueError" + }, + { + "id": "-2037765467", + "predicate": "secureValueErrorReverseSide", + "params": [ + { + "name": "type", + "type": "SecureValueType" + }, + { + "name": "file_hash", + "type": "bytes" + }, + { + "name": "text", + "type": "string" + } + ], + "type": "SecureValueError" + }, + { + "id": "-449327402", + "predicate": "secureValueErrorSelfie", + "params": [ + { + "name": "type", + "type": "SecureValueType" + }, + { + "name": "file_hash", + "type": "bytes" + }, + { + "name": "text", + "type": "string" + } + ], + "type": "SecureValueError" + }, + { + "id": "2054162547", + "predicate": "secureValueErrorFile", + "params": [ + { + "name": "type", + "type": "SecureValueType" + }, + { + "name": "file_hash", + "type": "bytes" + }, + { + "name": "text", + "type": "string" + } + ], + "type": "SecureValueError" + }, + { + "id": "1717706985", + "predicate": "secureValueErrorFiles", + "params": [ + { + "name": "type", + "type": "SecureValueType" + }, + { + "name": "file_hash", + "type": "Vector" + }, + { + "name": "text", + "type": "string" + } + ], + "type": "SecureValueError" + }, + { + "id": "-2036501105", + "predicate": "secureValueError", + "params": [ + { + "name": "type", + "type": "SecureValueType" + }, + { + "name": "hash", + "type": "bytes" + }, + { + "name": "text", + "type": "string" + } + ], + "type": "SecureValueError" + }, + { + "id": "-1592506512", + "predicate": "secureValueErrorTranslationFile", + "params": [ + { + "name": "type", + "type": "SecureValueType" + }, + { + "name": "file_hash", + "type": "bytes" + }, + { + "name": "text", + "type": "string" + } + ], + "type": "SecureValueError" + }, + { + "id": "878931416", + "predicate": "secureValueErrorTranslationFiles", + "params": [ + { + "name": "type", + "type": "SecureValueType" + }, + { + "name": "file_hash", + "type": "Vector" + }, + { + "name": "text", + "type": "string" + } + ], + "type": "SecureValueError" + }, + { + "id": "871426631", + "predicate": "secureCredentialsEncrypted", + "params": [ + { + "name": "data", + "type": "bytes" + }, + { + "name": "hash", + "type": "bytes" + }, + { + "name": "secret", + "type": "bytes" + } + ], + "type": "SecureCredentialsEncrypted" + }, + { + "id": "-1389486888", + "predicate": "account.authorizationForm", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "required_types", + "type": "Vector" + }, + { + "name": "values", + "type": "Vector" + }, + { + "name": "errors", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "privacy_policy_url", + "type": "flags.0?string" + } + ], + "type": "account.AuthorizationForm" + }, + { + "id": "-2128640689", + "predicate": "account.sentEmailCode", + "params": [ + { + "name": "email_pattern", + "type": "string" + }, + { + "name": "length", + "type": "int" + } + ], + "type": "account.SentEmailCode" + }, + { + "id": "1722786150", + "predicate": "help.deepLinkInfoEmpty", + "params": [], + "type": "help.DeepLinkInfo" + }, + { + "id": "1783556146", + "predicate": "help.deepLinkInfo", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "update_app", + "type": "flags.0?true" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "entities", + "type": "flags.1?Vector" + } + ], + "type": "help.DeepLinkInfo" + }, + { + "id": "289586518", + "predicate": "savedPhoneContact", + "params": [ + { + "name": "phone", + "type": "string" + }, + { + "name": "first_name", + "type": "string" + }, + { + "name": "last_name", + "type": "string" + }, + { + "name": "date", + "type": "int" + } + ], + "type": "SavedContact" + }, + { + "id": "1304052993", + "predicate": "account.takeout", + "params": [ + { + "name": "id", + "type": "long" + } + ], + "type": "account.Takeout" + }, + { + "id": "-732254058", + "predicate": "passwordKdfAlgoUnknown", + "params": [], + "type": "PasswordKdfAlgo" + }, + { + "id": "982592842", + "predicate": "passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow", + "params": [ + { + "name": "salt1", + "type": "bytes" + }, + { + "name": "salt2", + "type": "bytes" + }, + { + "name": "g", + "type": "int" + }, + { + "name": "p", + "type": "bytes" + } + ], + "type": "PasswordKdfAlgo" + }, + { + "id": "4883767", + "predicate": "securePasswordKdfAlgoUnknown", + "params": [], + "type": "SecurePasswordKdfAlgo" + }, + { + "id": "-1141711456", + "predicate": "securePasswordKdfAlgoPBKDF2HMACSHA512iter100000", + "params": [ + { + "name": "salt", + "type": "bytes" + } + ], + "type": "SecurePasswordKdfAlgo" + }, + { + "id": "-2042159726", + "predicate": "securePasswordKdfAlgoSHA512", + "params": [ + { + "name": "salt", + "type": "bytes" + } + ], + "type": "SecurePasswordKdfAlgo" + }, + { + "id": "354925740", + "predicate": "secureSecretSettings", + "params": [ + { + "name": "secure_algo", + "type": "SecurePasswordKdfAlgo" + }, + { + "name": "secure_secret", + "type": "bytes" + }, + { + "name": "secure_secret_id", + "type": "long" + } + ], + "type": "SecureSecretSettings" + }, + { + "id": "-1736378792", + "predicate": "inputCheckPasswordEmpty", + "params": [], + "type": "InputCheckPasswordSRP" + }, + { + "id": "-763367294", + "predicate": "inputCheckPasswordSRP", + "params": [ + { + "name": "srp_id", + "type": "long" + }, + { + "name": "A", + "type": "bytes" + }, + { + "name": "M1", + "type": "bytes" + } + ], + "type": "InputCheckPasswordSRP" + }, + { + "id": "-2103600678", + "predicate": "secureRequiredType", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "native_names", + "type": "flags.0?true" + }, + { + "name": "selfie_required", + "type": "flags.1?true" + }, + { + "name": "translation_required", + "type": "flags.2?true" + }, + { + "name": "type", + "type": "SecureValueType" + } + ], + "type": "SecureRequiredType" + }, + { + "id": "41187252", + "predicate": "secureRequiredTypeOneOf", + "params": [ + { + "name": "types", + "type": "Vector" + } + ], + "type": "SecureRequiredType" + }, + { + "id": "-1078332329", + "predicate": "help.passportConfigNotModified", + "params": [], + "type": "help.PassportConfig" + }, + { + "id": "-1600596305", + "predicate": "help.passportConfig", + "params": [ + { + "name": "hash", + "type": "int" + }, + { + "name": "countries_langs", + "type": "DataJSON" + } + ], + "type": "help.PassportConfig" + }, + { + "id": "488313413", + "predicate": "inputAppEvent", + "params": [ + { + "name": "time", + "type": "double" + }, + { + "name": "type", + "type": "string" + }, + { + "name": "peer", + "type": "long" + }, + { + "name": "data", + "type": "JSONValue" + } + ], + "type": "InputAppEvent" + }, + { + "id": "-1059185703", + "predicate": "jsonObjectValue", + "params": [ + { + "name": "key", + "type": "string" + }, + { + "name": "value", + "type": "JSONValue" + } + ], + "type": "JSONObjectValue" + }, + { + "id": "1064139624", + "predicate": "jsonNull", + "params": [], + "type": "JSONValue" + }, + { + "id": "-952869270", + "predicate": "jsonBool", + "params": [ + { + "name": "value", + "type": "Bool" + } + ], + "type": "JSONValue" + }, + { + "id": "736157604", + "predicate": "jsonNumber", + "params": [ + { + "name": "value", + "type": "double" + } + ], + "type": "JSONValue" + }, + { + "id": "-1222740358", + "predicate": "jsonString", + "params": [ + { + "name": "value", + "type": "string" + } + ], + "type": "JSONValue" + }, + { + "id": "-146520221", + "predicate": "jsonArray", + "params": [ + { + "name": "value", + "type": "Vector" + } + ], + "type": "JSONValue" + }, + { + "id": "-1715350371", + "predicate": "jsonObject", + "params": [ + { + "name": "value", + "type": "Vector" + } + ], + "type": "JSONValue" + }, + { + "id": "878078826", + "predicate": "pageTableCell", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "header", + "type": "flags.0?true" + }, + { + "name": "align_center", + "type": "flags.3?true" + }, + { + "name": "align_right", + "type": "flags.4?true" + }, + { + "name": "valign_middle", + "type": "flags.5?true" + }, + { + "name": "valign_bottom", + "type": "flags.6?true" + }, + { + "name": "text", + "type": "flags.7?RichText" + }, + { + "name": "colspan", + "type": "flags.1?int" + }, + { + "name": "rowspan", + "type": "flags.2?int" + } + ], + "type": "PageTableCell" + }, + { + "id": "-524237339", + "predicate": "pageTableRow", + "params": [ + { + "name": "cells", + "type": "Vector" + } + ], + "type": "PageTableRow" + }, + { + "id": "1869903447", + "predicate": "pageCaption", + "params": [ + { + "name": "text", + "type": "RichText" + }, + { + "name": "credit", + "type": "RichText" + } + ], + "type": "PageCaption" + }, + { + "id": "-1188055347", + "predicate": "pageListItemText", + "params": [ + { + "name": "text", + "type": "RichText" + } + ], + "type": "PageListItem" + }, + { + "id": "635466748", + "predicate": "pageListItemBlocks", + "params": [ + { + "name": "blocks", + "type": "Vector" + } + ], + "type": "PageListItem" + }, + { + "id": "1577484359", + "predicate": "pageListOrderedItemText", + "params": [ + { + "name": "num", + "type": "string" + }, + { + "name": "text", + "type": "RichText" + } + ], + "type": "PageListOrderedItem" + }, + { + "id": "-1730311882", + "predicate": "pageListOrderedItemBlocks", + "params": [ + { + "name": "num", + "type": "string" + }, + { + "name": "blocks", + "type": "Vector" + } + ], + "type": "PageListOrderedItem" + }, + { + "id": "-1282352120", + "predicate": "pageRelatedArticle", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "url", + "type": "string" + }, + { + "name": "webpage_id", + "type": "long" + }, + { + "name": "title", + "type": "flags.0?string" + }, + { + "name": "description", + "type": "flags.1?string" + }, + { + "name": "photo_id", + "type": "flags.2?long" + }, + { + "name": "author", + "type": "flags.3?string" + }, + { + "name": "published_date", + "type": "flags.4?int" + } + ], + "type": "PageRelatedArticle" + }, + { + "id": "-1738178803", + "predicate": "page", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "part", + "type": "flags.0?true" + }, + { + "name": "rtl", + "type": "flags.1?true" + }, + { + "name": "v2", + "type": "flags.2?true" + }, + { + "name": "url", + "type": "string" + }, + { + "name": "blocks", + "type": "Vector" + }, + { + "name": "photos", + "type": "Vector" + }, + { + "name": "documents", + "type": "Vector" + }, + { + "name": "views", + "type": "flags.3?int" + } + ], + "type": "Page" + }, + { + "id": "-1945767479", + "predicate": "help.supportName", + "params": [ + { + "name": "name", + "type": "string" + } + ], + "type": "help.SupportName" + }, + { + "id": "-206688531", + "predicate": "help.userInfoEmpty", + "params": [], + "type": "help.UserInfo" + }, + { + "id": "32192344", + "predicate": "help.userInfo", + "params": [ + { + "name": "message", + "type": "string" + }, + { + "name": "entities", + "type": "Vector" + }, + { + "name": "author", + "type": "string" + }, + { + "name": "date", + "type": "int" + } + ], + "type": "help.UserInfo" + }, + { + "id": "1266514026", + "predicate": "pollAnswer", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "text", + "type": "TextWithEntities" + }, + { + "name": "option", + "type": "bytes" + }, + { + "name": "media", + "type": "flags.0?MessageMedia" + }, + { + "name": "added_by", + "type": "flags.1?Peer" + }, + { + "name": "date", + "type": "flags.1?int" + } + ], + "type": "PollAnswer" + }, + { + "id": "429911446", + "predicate": "inputPollAnswer", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "text", + "type": "TextWithEntities" + }, + { + "name": "media", + "type": "flags.0?InputMedia" + } + ], + "type": "PollAnswer" + }, + { + "id": "-1771164225", + "predicate": "poll", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "flags", + "type": "#" + }, + { + "name": "closed", + "type": "flags.0?true" + }, + { + "name": "public_voters", + "type": "flags.1?true" + }, + { + "name": "multiple_choice", + "type": "flags.2?true" + }, + { + "name": "quiz", + "type": "flags.3?true" + }, + { + "name": "open_answers", + "type": "flags.6?true" + }, + { + "name": "revoting_disabled", + "type": "flags.7?true" + }, + { + "name": "shuffle_answers", + "type": "flags.8?true" + }, + { + "name": "hide_results_until_close", + "type": "flags.9?true" + }, + { + "name": "creator", + "type": "flags.10?true" + }, + { + "name": "subscribers_only", + "type": "flags.11?true" + }, + { + "name": "question", + "type": "TextWithEntities" + }, + { + "name": "answers", + "type": "Vector" + }, + { + "name": "close_period", + "type": "flags.4?int" + }, + { + "name": "close_date", + "type": "flags.5?int" + }, + { + "name": "countries_iso2", + "type": "flags.12?Vector" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "Poll" + }, + { + "id": "910500618", + "predicate": "pollAnswerVoters", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "chosen", + "type": "flags.0?true" + }, + { + "name": "correct", + "type": "flags.1?true" + }, + { + "name": "option", + "type": "bytes" + }, + { + "name": "voters", + "type": "flags.2?int" + }, + { + "name": "recent_voters", + "type": "flags.2?Vector" + } + ], + "type": "PollAnswerVoters" + }, + { + "id": "-1166298786", + "predicate": "pollResults", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "min", + "type": "flags.0?true" + }, + { + "name": "has_unread_votes", + "type": "flags.6?true" + }, + { + "name": "can_view_stats", + "type": "flags.7?true" + }, + { + "name": "results", + "type": "flags.1?Vector" + }, + { + "name": "total_voters", + "type": "flags.2?int" + }, + { + "name": "recent_voters", + "type": "flags.3?Vector" + }, + { + "name": "solution", + "type": "flags.4?string" + }, + { + "name": "solution_entities", + "type": "flags.4?Vector" + }, + { + "name": "solution_media", + "type": "flags.5?MessageMedia" + } + ], + "type": "PollResults" + }, + { + "id": "-264117680", + "predicate": "chatOnlines", + "params": [ + { + "name": "onlines", + "type": "int" + } + ], + "type": "ChatOnlines" + }, + { + "id": "1202287072", + "predicate": "statsURL", + "params": [ + { + "name": "url", + "type": "string" + } + ], + "type": "StatsURL" + }, + { + "id": "1605510357", + "predicate": "chatAdminRights", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "change_info", + "type": "flags.0?true" + }, + { + "name": "post_messages", + "type": "flags.1?true" + }, + { + "name": "edit_messages", + "type": "flags.2?true" + }, + { + "name": "delete_messages", + "type": "flags.3?true" + }, + { + "name": "ban_users", + "type": "flags.4?true" + }, + { + "name": "invite_users", + "type": "flags.5?true" + }, + { + "name": "pin_messages", + "type": "flags.7?true" + }, + { + "name": "add_admins", + "type": "flags.9?true" + }, + { + "name": "anonymous", + "type": "flags.10?true" + }, + { + "name": "manage_call", + "type": "flags.11?true" + }, + { + "name": "other", + "type": "flags.12?true" + }, + { + "name": "manage_topics", + "type": "flags.13?true" + }, + { + "name": "post_stories", + "type": "flags.14?true" + }, + { + "name": "edit_stories", + "type": "flags.15?true" + }, + { + "name": "delete_stories", + "type": "flags.16?true" + }, + { + "name": "manage_direct_messages", + "type": "flags.17?true" + }, + { + "name": "manage_ranks", + "type": "flags.18?true" + } + ], + "type": "ChatAdminRights" + }, + { + "id": "-1626209256", + "predicate": "chatBannedRights", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "view_messages", + "type": "flags.0?true" + }, + { + "name": "send_messages", + "type": "flags.1?true" + }, + { + "name": "send_media", + "type": "flags.2?true" + }, + { + "name": "send_stickers", + "type": "flags.3?true" + }, + { + "name": "send_gifs", + "type": "flags.4?true" + }, + { + "name": "send_games", + "type": "flags.5?true" + }, + { + "name": "send_inline", + "type": "flags.6?true" + }, + { + "name": "embed_links", + "type": "flags.7?true" + }, + { + "name": "send_polls", + "type": "flags.8?true" + }, + { + "name": "change_info", + "type": "flags.10?true" + }, + { + "name": "invite_users", + "type": "flags.15?true" + }, + { + "name": "pin_messages", + "type": "flags.17?true" + }, + { + "name": "manage_topics", + "type": "flags.18?true" + }, + { + "name": "send_photos", + "type": "flags.19?true" + }, + { + "name": "send_videos", + "type": "flags.20?true" + }, + { + "name": "send_roundvideos", + "type": "flags.21?true" + }, + { + "name": "send_audios", + "type": "flags.22?true" + }, + { + "name": "send_voices", + "type": "flags.23?true" + }, + { + "name": "send_docs", + "type": "flags.24?true" + }, + { + "name": "send_plain", + "type": "flags.25?true" + }, + { + "name": "edit_rank", + "type": "flags.26?true" + }, + { + "name": "send_reactions", + "type": "flags.27?true" + }, + { + "name": "until_date", + "type": "int" + } + ], + "type": "ChatBannedRights" + }, + { + "id": "-433014407", + "predicate": "inputWallPaper", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputWallPaper" + }, + { + "id": "1913199744", + "predicate": "inputWallPaperSlug", + "params": [ + { + "name": "slug", + "type": "string" + } + ], + "type": "InputWallPaper" + }, + { + "id": "-1770371538", + "predicate": "inputWallPaperNoFile", + "params": [ + { + "name": "id", + "type": "long" + } + ], + "type": "InputWallPaper" + }, + { + "id": "471437699", + "predicate": "account.wallPapersNotModified", + "params": [], + "type": "account.WallPapers" + }, + { + "id": "-842824308", + "predicate": "account.wallPapers", + "params": [ + { + "name": "hash", + "type": "long" + }, + { + "name": "wallpapers", + "type": "Vector" + } + ], + "type": "account.WallPapers" + }, + { + "id": "-1390068360", + "predicate": "codeSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "allow_flashcall", + "type": "flags.0?true" + }, + { + "name": "current_number", + "type": "flags.1?true" + }, + { + "name": "allow_app_hash", + "type": "flags.4?true" + }, + { + "name": "allow_missed_call", + "type": "flags.5?true" + }, + { + "name": "allow_firebase", + "type": "flags.7?true" + }, + { + "name": "unknown_number", + "type": "flags.9?true" + }, + { + "name": "logout_tokens", + "type": "flags.6?Vector" + }, + { + "name": "token", + "type": "flags.8?string" + }, + { + "name": "app_sandbox", + "type": "flags.8?Bool" + } + ], + "type": "CodeSettings" + }, + { + "id": "925826256", + "predicate": "wallPaperSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "blur", + "type": "flags.1?true" + }, + { + "name": "motion", + "type": "flags.2?true" + }, + { + "name": "background_color", + "type": "flags.0?int" + }, + { + "name": "second_background_color", + "type": "flags.4?int" + }, + { + "name": "third_background_color", + "type": "flags.5?int" + }, + { + "name": "fourth_background_color", + "type": "flags.6?int" + }, + { + "name": "intensity", + "type": "flags.3?int" + }, + { + "name": "rotation", + "type": "flags.4?int" + }, + { + "name": "emoticon", + "type": "flags.7?string" + } + ], + "type": "WallPaperSettings" + }, + { + "id": "-1163561432", + "predicate": "autoDownloadSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "disabled", + "type": "flags.0?true" + }, + { + "name": "video_preload_large", + "type": "flags.1?true" + }, + { + "name": "audio_preload_next", + "type": "flags.2?true" + }, + { + "name": "phonecalls_less_data", + "type": "flags.3?true" + }, + { + "name": "stories_preload", + "type": "flags.4?true" + }, + { + "name": "photo_size_max", + "type": "int" + }, + { + "name": "video_size_max", + "type": "long" + }, + { + "name": "file_size_max", + "type": "long" + }, + { + "name": "video_upload_maxbitrate", + "type": "int" + }, + { + "name": "small_queue_active_operations_max", + "type": "int" + }, + { + "name": "large_queue_active_operations_max", + "type": "int" + } + ], + "type": "AutoDownloadSettings" + }, + { + "id": "1674235686", + "predicate": "account.autoDownloadSettings", + "params": [ + { + "name": "low", + "type": "AutoDownloadSettings" + }, + { + "name": "medium", + "type": "AutoDownloadSettings" + }, + { + "name": "high", + "type": "AutoDownloadSettings" + } + ], + "type": "account.AutoDownloadSettings" + }, + { + "id": "-709641735", + "predicate": "emojiKeyword", + "params": [ + { + "name": "keyword", + "type": "string" + }, + { + "name": "emoticons", + "type": "Vector" + } + ], + "type": "EmojiKeyword" + }, + { + "id": "594408994", + "predicate": "emojiKeywordDeleted", + "params": [ + { + "name": "keyword", + "type": "string" + }, + { + "name": "emoticons", + "type": "Vector" + } + ], + "type": "EmojiKeyword" + }, + { + "id": "1556570557", + "predicate": "emojiKeywordsDifference", + "params": [ + { + "name": "lang_code", + "type": "string" + }, + { + "name": "from_version", + "type": "int" + }, + { + "name": "version", + "type": "int" + }, + { + "name": "keywords", + "type": "Vector" + } + ], + "type": "EmojiKeywordsDifference" + }, + { + "id": "-1519029347", + "predicate": "emojiURL", + "params": [ + { + "name": "url", + "type": "string" + } + ], + "type": "EmojiURL" + }, + { + "id": "-1275374751", + "predicate": "emojiLanguage", + "params": [ + { + "name": "lang_code", + "type": "string" + } + ], + "type": "EmojiLanguage" + }, + { + "id": "-11252123", + "predicate": "folder", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "autofill_new_broadcasts", + "type": "flags.0?true" + }, + { + "name": "autofill_public_groups", + "type": "flags.1?true" + }, + { + "name": "autofill_new_correspondents", + "type": "flags.2?true" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "photo", + "type": "flags.3?ChatPhoto" + } + ], + "type": "Folder" + }, + { + "id": "-70073706", + "predicate": "inputFolderPeer", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "folder_id", + "type": "int" + } + ], + "type": "InputFolderPeer" + }, + { + "id": "-373643672", + "predicate": "folderPeer", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "folder_id", + "type": "int" + } + ], + "type": "FolderPeer" + }, + { + "id": "-398136321", + "predicate": "messages.searchCounter", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "inexact", + "type": "flags.1?true" + }, + { + "name": "filter", + "type": "MessagesFilter" + }, + { + "name": "count", + "type": "int" + } + ], + "type": "messages.SearchCounter" + }, + { + "id": "1020666860", + "predicate": "urlAuthResultRequest", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "request_write_access", + "type": "flags.0?true" + }, + { + "name": "request_phone_number", + "type": "flags.1?true" + }, + { + "name": "match_codes_first", + "type": "flags.5?true" + }, + { + "name": "is_app", + "type": "flags.6?true" + }, + { + "name": "bot", + "type": "User" + }, + { + "name": "domain", + "type": "string" + }, + { + "name": "browser", + "type": "flags.2?string" + }, + { + "name": "platform", + "type": "flags.2?string" + }, + { + "name": "ip", + "type": "flags.2?string" + }, + { + "name": "region", + "type": "flags.2?string" + }, + { + "name": "match_codes", + "type": "flags.3?Vector" + }, + { + "name": "user_id_hint", + "type": "flags.4?long" + }, + { + "name": "verified_app_name", + "type": "flags.7?string" + } + ], + "type": "UrlAuthResult" + }, + { + "id": "1648005024", + "predicate": "urlAuthResultAccepted", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "url", + "type": "flags.0?string" + } + ], + "type": "UrlAuthResult" + }, + { + "id": "-1445536993", + "predicate": "urlAuthResultDefault", + "params": [], + "type": "UrlAuthResult" + }, + { + "id": "-1078612597", + "predicate": "channelLocationEmpty", + "params": [], + "type": "ChannelLocation" + }, + { + "id": "547062491", + "predicate": "channelLocation", + "params": [ + { + "name": "geo_point", + "type": "GeoPoint" + }, + { + "name": "address", + "type": "string" + } + ], + "type": "ChannelLocation" + }, + { + "id": "-901375139", + "predicate": "peerLocated", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "expires", + "type": "int" + }, + { + "name": "distance", + "type": "int" + } + ], + "type": "PeerLocated" + }, + { + "id": "-118740917", + "predicate": "peerSelfLocated", + "params": [ + { + "name": "expires", + "type": "int" + } + ], + "type": "PeerLocated" + }, + { + "id": "-797791052", + "predicate": "restrictionReason", + "params": [ + { + "name": "platform", + "type": "string" + }, + { + "name": "reason", + "type": "string" + }, + { + "name": "text", + "type": "string" + } + ], + "type": "RestrictionReason" + }, + { + "id": "1012306921", + "predicate": "inputTheme", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputTheme" + }, + { + "id": "-175567375", + "predicate": "inputThemeSlug", + "params": [ + { + "name": "slug", + "type": "string" + } + ], + "type": "InputTheme" + }, + { + "id": "-1609668650", + "predicate": "theme", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "creator", + "type": "flags.0?true" + }, + { + "name": "default", + "type": "flags.1?true" + }, + { + "name": "for_chat", + "type": "flags.5?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "slug", + "type": "string" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "document", + "type": "flags.2?Document" + }, + { + "name": "settings", + "type": "flags.3?Vector" + }, + { + "name": "emoticon", + "type": "flags.6?string" + }, + { + "name": "installs_count", + "type": "flags.4?int" + } + ], + "type": "Theme" + }, + { + "id": "-199313886", + "predicate": "account.themesNotModified", + "params": [], + "type": "account.Themes" + }, + { + "id": "-1707242387", + "predicate": "account.themes", + "params": [ + { + "name": "hash", + "type": "long" + }, + { + "name": "themes", + "type": "Vector" + } + ], + "type": "account.Themes" + }, + { + "id": "1654593920", + "predicate": "auth.loginToken", + "params": [ + { + "name": "expires", + "type": "int" + }, + { + "name": "token", + "type": "bytes" + } + ], + "type": "auth.LoginToken" + }, + { + "id": "110008598", + "predicate": "auth.loginTokenMigrateTo", + "params": [ + { + "name": "dc_id", + "type": "int" + }, + { + "name": "token", + "type": "bytes" + } + ], + "type": "auth.LoginToken" + }, + { + "id": "957176926", + "predicate": "auth.loginTokenSuccess", + "params": [ + { + "name": "authorization", + "type": "auth.Authorization" + } + ], + "type": "auth.LoginToken" + }, + { + "id": "1474462241", + "predicate": "account.contentSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "sensitive_enabled", + "type": "flags.0?true" + }, + { + "name": "sensitive_can_change", + "type": "flags.1?true" + } + ], + "type": "account.ContentSettings" + }, + { + "id": "-1456996667", + "predicate": "messages.inactiveChats", + "params": [ + { + "name": "dates", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.InactiveChats" + }, + { + "id": "-1012849566", + "predicate": "baseThemeClassic", + "params": [], + "type": "BaseTheme" + }, + { + "id": "-69724536", + "predicate": "baseThemeDay", + "params": [], + "type": "BaseTheme" + }, + { + "id": "-1212997976", + "predicate": "baseThemeNight", + "params": [], + "type": "BaseTheme" + }, + { + "id": "1834973166", + "predicate": "baseThemeTinted", + "params": [], + "type": "BaseTheme" + }, + { + "id": "1527845466", + "predicate": "baseThemeArctic", + "params": [], + "type": "BaseTheme" + }, + { + "id": "-1881255857", + "predicate": "inputThemeSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "message_colors_animated", + "type": "flags.2?true" + }, + { + "name": "base_theme", + "type": "BaseTheme" + }, + { + "name": "accent_color", + "type": "int" + }, + { + "name": "outbox_accent_color", + "type": "flags.3?int" + }, + { + "name": "message_colors", + "type": "flags.0?Vector" + }, + { + "name": "wallpaper", + "type": "flags.1?InputWallPaper" + }, + { + "name": "wallpaper_settings", + "type": "flags.1?WallPaperSettings" + } + ], + "type": "InputThemeSettings" + }, + { + "id": "-94849324", + "predicate": "themeSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "message_colors_animated", + "type": "flags.2?true" + }, + { + "name": "base_theme", + "type": "BaseTheme" + }, + { + "name": "accent_color", + "type": "int" + }, + { + "name": "outbox_accent_color", + "type": "flags.3?int" + }, + { + "name": "message_colors", + "type": "flags.0?Vector" + }, + { + "name": "wallpaper", + "type": "flags.1?WallPaper" + } + ], + "type": "ThemeSettings" + }, + { + "id": "1421174295", + "predicate": "webPageAttributeTheme", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "documents", + "type": "flags.0?Vector" + }, + { + "name": "settings", + "type": "flags.1?ThemeSettings" + } + ], + "type": "WebPageAttribute" + }, + { + "id": "781501415", + "predicate": "webPageAttributeStory", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "story", + "type": "flags.0?StoryItem" + } + ], + "type": "WebPageAttribute" + }, + { + "id": "1355547603", + "predicate": "webPageAttributeStickerSet", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "emojis", + "type": "flags.0?true" + }, + { + "name": "text_color", + "type": "flags.1?true" + }, + { + "name": "stickers", + "type": "Vector" + } + ], + "type": "WebPageAttribute" + }, + { + "id": "-814781000", + "predicate": "webPageAttributeUniqueStarGift", + "params": [ + { + "name": "gift", + "type": "StarGift" + } + ], + "type": "WebPageAttribute" + }, + { + "id": "835375875", + "predicate": "webPageAttributeStarGiftCollection", + "params": [ + { + "name": "icons", + "type": "Vector" + } + ], + "type": "WebPageAttribute" + }, + { + "id": "29770178", + "predicate": "webPageAttributeStarGiftAuction", + "params": [ + { + "name": "gift", + "type": "StarGift" + }, + { + "name": "end_date", + "type": "int" + } + ], + "type": "WebPageAttribute" + }, + { + "id": "2005007896", + "predicate": "webPageAttributeAiComposeTone", + "params": [ + { + "name": "emoji_id", + "type": "long" + } + ], + "type": "WebPageAttribute" + }, + { + "id": "1218005070", + "predicate": "messages.votesList", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "votes", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "next_offset", + "type": "flags.0?string" + } + ], + "type": "messages.VotesList" + }, + { + "id": "-177732982", + "predicate": "bankCardOpenUrl", + "params": [ + { + "name": "url", + "type": "string" + }, + { + "name": "name", + "type": "string" + } + ], + "type": "BankCardOpenUrl" + }, + { + "id": "1042605427", + "predicate": "payments.bankCardData", + "params": [ + { + "name": "title", + "type": "string" + }, + { + "name": "open_urls", + "type": "Vector" + } + ], + "type": "payments.BankCardData" + }, + { + "id": "-1438177711", + "predicate": "dialogFilter", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "contacts", + "type": "flags.0?true" + }, + { + "name": "non_contacts", + "type": "flags.1?true" + }, + { + "name": "groups", + "type": "flags.2?true" + }, + { + "name": "broadcasts", + "type": "flags.3?true" + }, + { + "name": "bots", + "type": "flags.4?true" + }, + { + "name": "exclude_muted", + "type": "flags.11?true" + }, + { + "name": "exclude_read", + "type": "flags.12?true" + }, + { + "name": "exclude_archived", + "type": "flags.13?true" + }, + { + "name": "title_noanimate", + "type": "flags.28?true" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "title", + "type": "TextWithEntities" + }, + { + "name": "emoticon", + "type": "flags.25?string" + }, + { + "name": "color", + "type": "flags.27?int" + }, + { + "name": "pinned_peers", + "type": "Vector" + }, + { + "name": "include_peers", + "type": "Vector" + }, + { + "name": "exclude_peers", + "type": "Vector" + } + ], + "type": "DialogFilter" + }, + { + "id": "909284270", + "predicate": "dialogFilterDefault", + "params": [], + "type": "DialogFilter" + }, + { + "id": "-1772913705", + "predicate": "dialogFilterChatlist", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "has_my_invites", + "type": "flags.26?true" + }, + { + "name": "title_noanimate", + "type": "flags.28?true" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "title", + "type": "TextWithEntities" + }, + { + "name": "emoticon", + "type": "flags.25?string" + }, + { + "name": "color", + "type": "flags.27?int" + }, + { + "name": "pinned_peers", + "type": "Vector" + }, + { + "name": "include_peers", + "type": "Vector" + } + ], + "type": "DialogFilter" + }, + { + "id": "2004110666", + "predicate": "dialogFilterSuggested", + "params": [ + { + "name": "filter", + "type": "DialogFilter" + }, + { + "name": "description", + "type": "string" + } + ], + "type": "DialogFilterSuggested" + }, + { + "id": "-1237848657", + "predicate": "statsDateRangeDays", + "params": [ + { + "name": "min_date", + "type": "int" + }, + { + "name": "max_date", + "type": "int" + } + ], + "type": "StatsDateRangeDays" + }, + { + "id": "-884757282", + "predicate": "statsAbsValueAndPrev", + "params": [ + { + "name": "current", + "type": "double" + }, + { + "name": "previous", + "type": "double" + } + ], + "type": "StatsAbsValueAndPrev" + }, + { + "id": "-875679776", + "predicate": "statsPercentValue", + "params": [ + { + "name": "part", + "type": "double" + }, + { + "name": "total", + "type": "double" + } + ], + "type": "StatsPercentValue" + }, + { + "id": "1244130093", + "predicate": "statsGraphAsync", + "params": [ + { + "name": "token", + "type": "string" + } + ], + "type": "StatsGraph" + }, + { + "id": "-1092839390", + "predicate": "statsGraphError", + "params": [ + { + "name": "error", + "type": "string" + } + ], + "type": "StatsGraph" + }, + { + "id": "-1901828938", + "predicate": "statsGraph", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "json", + "type": "DataJSON" + }, + { + "name": "zoom_token", + "type": "flags.0?string" + } + ], + "type": "StatsGraph" + }, + { + "id": "963421692", + "predicate": "stats.broadcastStats", + "params": [ + { + "name": "period", + "type": "StatsDateRangeDays" + }, + { + "name": "followers", + "type": "StatsAbsValueAndPrev" + }, + { + "name": "views_per_post", + "type": "StatsAbsValueAndPrev" + }, + { + "name": "shares_per_post", + "type": "StatsAbsValueAndPrev" + }, + { + "name": "reactions_per_post", + "type": "StatsAbsValueAndPrev" + }, + { + "name": "views_per_story", + "type": "StatsAbsValueAndPrev" + }, + { + "name": "shares_per_story", + "type": "StatsAbsValueAndPrev" + }, + { + "name": "reactions_per_story", + "type": "StatsAbsValueAndPrev" + }, + { + "name": "enabled_notifications", + "type": "StatsPercentValue" + }, + { + "name": "growth_graph", + "type": "StatsGraph" + }, + { + "name": "followers_graph", + "type": "StatsGraph" + }, + { + "name": "mute_graph", + "type": "StatsGraph" + }, + { + "name": "top_hours_graph", + "type": "StatsGraph" + }, + { + "name": "interactions_graph", + "type": "StatsGraph" + }, + { + "name": "iv_interactions_graph", + "type": "StatsGraph" + }, + { + "name": "views_by_source_graph", + "type": "StatsGraph" + }, + { + "name": "new_followers_by_source_graph", + "type": "StatsGraph" + }, + { + "name": "languages_graph", + "type": "StatsGraph" + }, + { + "name": "reactions_by_emotion_graph", + "type": "StatsGraph" + }, + { + "name": "story_interactions_graph", + "type": "StatsGraph" + }, + { + "name": "story_reactions_by_emotion_graph", + "type": "StatsGraph" + }, + { + "name": "recent_posts_interactions", + "type": "Vector" + } + ], + "type": "stats.BroadcastStats" + }, + { + "id": "-1728664459", + "predicate": "help.promoDataEmpty", + "params": [ + { + "name": "expires", + "type": "int" + } + ], + "type": "help.PromoData" + }, + { + "id": "145021050", + "predicate": "help.promoData", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "proxy", + "type": "flags.0?true" + }, + { + "name": "expires", + "type": "int" + }, + { + "name": "peer", + "type": "flags.3?Peer" + }, + { + "name": "psa_type", + "type": "flags.1?string" + }, + { + "name": "psa_message", + "type": "flags.2?string" + }, + { + "name": "pending_suggestions", + "type": "Vector" + }, + { + "name": "dismissed_suggestions", + "type": "Vector" + }, + { + "name": "custom_pending_suggestion", + "type": "flags.4?PendingSuggestion" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "help.PromoData" + }, + { + "id": "-567037804", + "predicate": "videoSize", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "type", + "type": "string" + }, + { + "name": "w", + "type": "int" + }, + { + "name": "h", + "type": "int" + }, + { + "name": "size", + "type": "int" + }, + { + "name": "video_start_ts", + "type": "flags.0?double" + } + ], + "type": "VideoSize" + }, + { + "id": "-128171716", + "predicate": "videoSizeEmojiMarkup", + "params": [ + { + "name": "emoji_id", + "type": "long" + }, + { + "name": "background_colors", + "type": "Vector" + } + ], + "type": "VideoSize" + }, + { + "id": "228623102", + "predicate": "videoSizeStickerMarkup", + "params": [ + { + "name": "stickerset", + "type": "InputStickerSet" + }, + { + "name": "sticker_id", + "type": "long" + }, + { + "name": "background_colors", + "type": "Vector" + } + ], + "type": "VideoSize" + }, + { + "id": "-1660637285", + "predicate": "statsGroupTopPoster", + "params": [ + { + "name": "user_id", + "type": "long" + }, + { + "name": "messages", + "type": "int" + }, + { + "name": "avg_chars", + "type": "int" + } + ], + "type": "StatsGroupTopPoster" + }, + { + "id": "-682079097", + "predicate": "statsGroupTopAdmin", + "params": [ + { + "name": "user_id", + "type": "long" + }, + { + "name": "deleted", + "type": "int" + }, + { + "name": "kicked", + "type": "int" + }, + { + "name": "banned", + "type": "int" + } + ], + "type": "StatsGroupTopAdmin" + }, + { + "id": "1398765469", + "predicate": "statsGroupTopInviter", + "params": [ + { + "name": "user_id", + "type": "long" + }, + { + "name": "invitations", + "type": "int" + } + ], + "type": "StatsGroupTopInviter" + }, + { + "id": "-276825834", + "predicate": "stats.megagroupStats", + "params": [ + { + "name": "period", + "type": "StatsDateRangeDays" + }, + { + "name": "members", + "type": "StatsAbsValueAndPrev" + }, + { + "name": "messages", + "type": "StatsAbsValueAndPrev" + }, + { + "name": "viewers", + "type": "StatsAbsValueAndPrev" + }, + { + "name": "posters", + "type": "StatsAbsValueAndPrev" + }, + { + "name": "growth_graph", + "type": "StatsGraph" + }, + { + "name": "members_graph", + "type": "StatsGraph" + }, + { + "name": "new_members_by_source_graph", + "type": "StatsGraph" + }, + { + "name": "languages_graph", + "type": "StatsGraph" + }, + { + "name": "messages_graph", + "type": "StatsGraph" + }, + { + "name": "actions_graph", + "type": "StatsGraph" + }, + { + "name": "top_hours_graph", + "type": "StatsGraph" + }, + { + "name": "weekdays_graph", + "type": "StatsGraph" + }, + { + "name": "top_posters", + "type": "Vector" + }, + { + "name": "top_admins", + "type": "Vector" + }, + { + "name": "top_inviters", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "stats.MegagroupStats" + }, + { + "id": "-29248689", + "predicate": "globalPrivacySettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "archive_and_mute_new_noncontact_peers", + "type": "flags.0?true" + }, + { + "name": "keep_archived_unmuted", + "type": "flags.1?true" + }, + { + "name": "keep_archived_folders", + "type": "flags.2?true" + }, + { + "name": "hide_read_marks", + "type": "flags.3?true" + }, + { + "name": "new_noncontact_peers_require_premium", + "type": "flags.4?true" + }, + { + "name": "display_gifts_button", + "type": "flags.7?true" + }, + { + "name": "noncontact_peers_paid_stars", + "type": "flags.5?long" + }, + { + "name": "disallowed_gifts", + "type": "flags.6?DisallowedGiftsSettings" + } + ], + "type": "GlobalPrivacySettings" + }, + { + "id": "1107543535", + "predicate": "help.countryCode", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "country_code", + "type": "string" + }, + { + "name": "prefixes", + "type": "flags.0?Vector" + }, + { + "name": "patterns", + "type": "flags.1?Vector" + } + ], + "type": "help.CountryCode" + }, + { + "id": "-1014526429", + "predicate": "help.country", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "hidden", + "type": "flags.0?true" + }, + { + "name": "iso2", + "type": "string" + }, + { + "name": "default_name", + "type": "string" + }, + { + "name": "name", + "type": "flags.1?string" + }, + { + "name": "country_codes", + "type": "Vector" + } + ], + "type": "help.Country" + }, + { + "id": "-1815339214", + "predicate": "help.countriesListNotModified", + "params": [], + "type": "help.CountriesList" + }, + { + "id": "-2016381538", + "predicate": "help.countriesList", + "params": [ + { + "name": "countries", + "type": "Vector" + }, + { + "name": "hash", + "type": "int" + } + ], + "type": "help.CountriesList" + }, + { + "id": "1163625789", + "predicate": "messageViews", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "views", + "type": "flags.0?int" + }, + { + "name": "forwards", + "type": "flags.1?int" + }, + { + "name": "replies", + "type": "flags.2?MessageReplies" + } + ], + "type": "MessageViews" + }, + { + "id": "-1228606141", + "predicate": "messages.messageViews", + "params": [ + { + "name": "views", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.MessageViews" + }, + { + "id": "-1506535550", + "predicate": "messages.discussionMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "messages", + "type": "Vector" + }, + { + "name": "max_id", + "type": "flags.0?int" + }, + { + "name": "read_inbox_max_id", + "type": "flags.1?int" + }, + { + "name": "read_outbox_max_id", + "type": "flags.2?int" + }, + { + "name": "unread_count", + "type": "int" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.DiscussionMessage" + }, + { + "id": "462937446", + "predicate": "messageReplyHeader", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "reply_to_scheduled", + "type": "flags.2?true" + }, + { + "name": "forum_topic", + "type": "flags.3?true" + }, + { + "name": "quote", + "type": "flags.9?true" + }, + { + "name": "reply_to_msg_id", + "type": "flags.4?int" + }, + { + "name": "reply_to_peer_id", + "type": "flags.0?Peer" + }, + { + "name": "reply_from", + "type": "flags.5?MessageFwdHeader" + }, + { + "name": "reply_media", + "type": "flags.8?MessageMedia" + }, + { + "name": "reply_to_top_id", + "type": "flags.1?int" + }, + { + "name": "quote_text", + "type": "flags.6?string" + }, + { + "name": "quote_entities", + "type": "flags.7?Vector" + }, + { + "name": "quote_offset", + "type": "flags.10?int" + }, + { + "name": "todo_item_id", + "type": "flags.11?int" + }, + { + "name": "poll_option", + "type": "flags.12?bytes" + } + ], + "type": "MessageReplyHeader" + }, + { + "id": "240843065", + "predicate": "messageReplyStoryHeader", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "story_id", + "type": "int" + } + ], + "type": "MessageReplyHeader" + }, + { + "id": "-2083123262", + "predicate": "messageReplies", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "comments", + "type": "flags.0?true" + }, + { + "name": "replies", + "type": "int" + }, + { + "name": "replies_pts", + "type": "int" + }, + { + "name": "recent_repliers", + "type": "flags.1?Vector" + }, + { + "name": "channel_id", + "type": "flags.0?long" + }, + { + "name": "max_id", + "type": "flags.2?int" + }, + { + "name": "read_max_id", + "type": "flags.3?int" + } + ], + "type": "MessageReplies" + }, + { + "id": "-386039788", + "predicate": "peerBlocked", + "params": [ + { + "name": "peer_id", + "type": "Peer" + }, + { + "name": "date", + "type": "int" + } + ], + "type": "PeerBlocked" + }, + { + "id": "2145983508", + "predicate": "stats.messageStats", + "params": [ + { + "name": "views_graph", + "type": "StatsGraph" + }, + { + "name": "reactions_by_emotion_graph", + "type": "StatsGraph" + } + ], + "type": "stats.MessageStats" + }, + { + "id": "2004925620", + "predicate": "groupCallDiscarded", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "duration", + "type": "int" + } + ], + "type": "GroupCall" + }, + { + "id": "-273500649", + "predicate": "groupCall", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "join_muted", + "type": "flags.1?true" + }, + { + "name": "can_change_join_muted", + "type": "flags.2?true" + }, + { + "name": "join_date_asc", + "type": "flags.6?true" + }, + { + "name": "schedule_start_subscribed", + "type": "flags.8?true" + }, + { + "name": "can_start_video", + "type": "flags.9?true" + }, + { + "name": "record_video_active", + "type": "flags.11?true" + }, + { + "name": "rtmp_stream", + "type": "flags.12?true" + }, + { + "name": "listeners_hidden", + "type": "flags.13?true" + }, + { + "name": "conference", + "type": "flags.14?true" + }, + { + "name": "creator", + "type": "flags.15?true" + }, + { + "name": "messages_enabled", + "type": "flags.17?true" + }, + { + "name": "can_change_messages_enabled", + "type": "flags.18?true" + }, + { + "name": "min", + "type": "flags.19?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "participants_count", + "type": "int" + }, + { + "name": "title", + "type": "flags.3?string" + }, + { + "name": "stream_dc_id", + "type": "flags.4?int" + }, + { + "name": "record_start_date", + "type": "flags.5?int" + }, + { + "name": "schedule_date", + "type": "flags.7?int" + }, + { + "name": "unmuted_video_count", + "type": "flags.10?int" + }, + { + "name": "unmuted_video_limit", + "type": "int" + }, + { + "name": "version", + "type": "int" + }, + { + "name": "invite_link", + "type": "flags.16?string" + }, + { + "name": "send_paid_messages_stars", + "type": "flags.20?long" + }, + { + "name": "default_send_as", + "type": "flags.21?Peer" + } + ], + "type": "GroupCall" + }, + { + "id": "-659913713", + "predicate": "inputGroupCall", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputGroupCall" + }, + { + "id": "-33127873", + "predicate": "inputGroupCallSlug", + "params": [ + { + "name": "slug", + "type": "string" + } + ], + "type": "InputGroupCall" + }, + { + "id": "-1945083841", + "predicate": "inputGroupCallInviteMessage", + "params": [ + { + "name": "msg_id", + "type": "int" + } + ], + "type": "InputGroupCall" + }, + { + "id": "708691884", + "predicate": "groupCallParticipant", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "muted", + "type": "flags.0?true" + }, + { + "name": "left", + "type": "flags.1?true" + }, + { + "name": "can_self_unmute", + "type": "flags.2?true" + }, + { + "name": "just_joined", + "type": "flags.4?true" + }, + { + "name": "versioned", + "type": "flags.5?true" + }, + { + "name": "min", + "type": "flags.8?true" + }, + { + "name": "muted_by_you", + "type": "flags.9?true" + }, + { + "name": "volume_by_admin", + "type": "flags.10?true" + }, + { + "name": "self", + "type": "flags.12?true" + }, + { + "name": "video_joined", + "type": "flags.15?true" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "active_date", + "type": "flags.3?int" + }, + { + "name": "source", + "type": "int" + }, + { + "name": "volume", + "type": "flags.7?int" + }, + { + "name": "about", + "type": "flags.11?string" + }, + { + "name": "raise_hand_rating", + "type": "flags.13?long" + }, + { + "name": "video", + "type": "flags.6?GroupCallParticipantVideo" + }, + { + "name": "presentation", + "type": "flags.14?GroupCallParticipantVideo" + }, + { + "name": "paid_stars_total", + "type": "flags.16?long" + } + ], + "type": "GroupCallParticipant" + }, + { + "id": "-1636664659", + "predicate": "phone.groupCall", + "params": [ + { + "name": "call", + "type": "GroupCall" + }, + { + "name": "participants", + "type": "Vector" + }, + { + "name": "participants_next_offset", + "type": "string" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "phone.GroupCall" + }, + { + "id": "-193506890", + "predicate": "phone.groupParticipants", + "params": [ + { + "name": "count", + "type": "int" + }, + { + "name": "participants", + "type": "Vector" + }, + { + "name": "next_offset", + "type": "string" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "version", + "type": "int" + } + ], + "type": "phone.GroupParticipants" + }, + { + "id": "813821341", + "predicate": "inlineQueryPeerTypeSameBotPM", + "params": [], + "type": "InlineQueryPeerType" + }, + { + "id": "-2093215828", + "predicate": "inlineQueryPeerTypePM", + "params": [], + "type": "InlineQueryPeerType" + }, + { + "id": "-681130742", + "predicate": "inlineQueryPeerTypeChat", + "params": [], + "type": "InlineQueryPeerType" + }, + { + "id": "1589952067", + "predicate": "inlineQueryPeerTypeMegagroup", + "params": [], + "type": "InlineQueryPeerType" + }, + { + "id": "1664413338", + "predicate": "inlineQueryPeerTypeBroadcast", + "params": [], + "type": "InlineQueryPeerType" + }, + { + "id": "238759180", + "predicate": "inlineQueryPeerTypeBotPM", + "params": [], + "type": "InlineQueryPeerType" + }, + { + "id": "375566091", + "predicate": "messages.historyImport", + "params": [ + { + "name": "id", + "type": "long" + } + ], + "type": "messages.HistoryImport" + }, + { + "id": "1578088377", + "predicate": "messages.historyImportParsed", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "pm", + "type": "flags.0?true" + }, + { + "name": "group", + "type": "flags.1?true" + }, + { + "name": "title", + "type": "flags.2?string" + } + ], + "type": "messages.HistoryImportParsed" + }, + { + "id": "-275956116", + "predicate": "messages.affectedFoundMessages", + "params": [ + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_count", + "type": "int" + }, + { + "name": "offset", + "type": "int" + }, + { + "name": "messages", + "type": "Vector" + } + ], + "type": "messages.AffectedFoundMessages" + }, + { + "id": "-1940201511", + "predicate": "chatInviteImporter", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "requested", + "type": "flags.0?true" + }, + { + "name": "via_chatlist", + "type": "flags.3?true" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "about", + "type": "flags.2?string" + }, + { + "name": "approved_by", + "type": "flags.1?long" + } + ], + "type": "ChatInviteImporter" + }, + { + "id": "-1111085620", + "predicate": "messages.exportedChatInvites", + "params": [ + { + "name": "count", + "type": "int" + }, + { + "name": "invites", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.ExportedChatInvites" + }, + { + "id": "410107472", + "predicate": "messages.exportedChatInvite", + "params": [ + { + "name": "invite", + "type": "ExportedChatInvite" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.ExportedChatInvite" + }, + { + "id": "572915951", + "predicate": "messages.exportedChatInviteReplaced", + "params": [ + { + "name": "invite", + "type": "ExportedChatInvite" + }, + { + "name": "new_invite", + "type": "ExportedChatInvite" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.ExportedChatInvite" + }, + { + "id": "-2118733814", + "predicate": "messages.chatInviteImporters", + "params": [ + { + "name": "count", + "type": "int" + }, + { + "name": "importers", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.ChatInviteImporters" + }, + { + "id": "-219353309", + "predicate": "chatAdminWithInvites", + "params": [ + { + "name": "admin_id", + "type": "long" + }, + { + "name": "invites_count", + "type": "int" + }, + { + "name": "revoked_invites_count", + "type": "int" + } + ], + "type": "ChatAdminWithInvites" + }, + { + "id": "-1231326505", + "predicate": "messages.chatAdminsWithInvites", + "params": [ + { + "name": "admins", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.ChatAdminsWithInvites" + }, + { + "id": "-1571952873", + "predicate": "messages.checkedHistoryImportPeer", + "params": [ + { + "name": "confirm_text", + "type": "string" + } + ], + "type": "messages.CheckedHistoryImportPeer" + }, + { + "id": "-1343921601", + "predicate": "phone.joinAsPeers", + "params": [ + { + "name": "peers", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "phone.JoinAsPeers" + }, + { + "id": "541839704", + "predicate": "phone.exportedGroupCallInvite", + "params": [ + { + "name": "link", + "type": "string" + } + ], + "type": "phone.ExportedGroupCallInvite" + }, + { + "id": "-592373577", + "predicate": "groupCallParticipantVideoSourceGroup", + "params": [ + { + "name": "semantics", + "type": "string" + }, + { + "name": "sources", + "type": "Vector" + } + ], + "type": "GroupCallParticipantVideoSourceGroup" + }, + { + "id": "1735736008", + "predicate": "groupCallParticipantVideo", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "paused", + "type": "flags.0?true" + }, + { + "name": "endpoint", + "type": "string" + }, + { + "name": "source_groups", + "type": "Vector" + }, + { + "name": "audio_source", + "type": "flags.1?int" + } + ], + "type": "GroupCallParticipantVideo" + }, + { + "id": "-2046910401", + "predicate": "stickers.suggestedShortName", + "params": [ + { + "name": "short_name", + "type": "string" + } + ], + "type": "stickers.SuggestedShortName" + }, + { + "id": "795652779", + "predicate": "botCommandScopeDefault", + "params": [], + "type": "BotCommandScope" + }, + { + "id": "1011811544", + "predicate": "botCommandScopeUsers", + "params": [], + "type": "BotCommandScope" + }, + { + "id": "1877059713", + "predicate": "botCommandScopeChats", + "params": [], + "type": "BotCommandScope" + }, + { + "id": "-1180016534", + "predicate": "botCommandScopeChatAdmins", + "params": [], + "type": "BotCommandScope" + }, + { + "id": "-610432643", + "predicate": "botCommandScopePeer", + "params": [ + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "BotCommandScope" + }, + { + "id": "1071145937", + "predicate": "botCommandScopePeerAdmins", + "params": [ + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "BotCommandScope" + }, + { + "id": "169026035", + "predicate": "botCommandScopePeerUser", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "user_id", + "type": "InputUser" + } + ], + "type": "BotCommandScope" + }, + { + "id": "-478701471", + "predicate": "account.resetPasswordFailedWait", + "params": [ + { + "name": "retry_date", + "type": "int" + } + ], + "type": "account.ResetPasswordResult" + }, + { + "id": "-370148227", + "predicate": "account.resetPasswordRequestedWait", + "params": [ + { + "name": "until_date", + "type": "int" + } + ], + "type": "account.ResetPasswordResult" + }, + { + "id": "-383330754", + "predicate": "account.resetPasswordOk", + "params": [], + "type": "account.ResetPasswordResult" + }, + { + "id": "-1008731132", + "predicate": "chatTheme", + "params": [ + { + "name": "emoticon", + "type": "string" + } + ], + "type": "ChatTheme" + }, + { + "id": "878246344", + "predicate": "chatThemeUniqueGift", + "params": [ + { + "name": "gift", + "type": "StarGift" + }, + { + "name": "theme_settings", + "type": "Vector" + } + ], + "type": "ChatTheme" + }, + { + "id": "-535699004", + "predicate": "account.chatThemesNotModified", + "params": [], + "type": "account.ChatThemes" + }, + { + "id": "-1106673293", + "predicate": "account.chatThemes", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "hash", + "type": "long" + }, + { + "name": "themes", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "next_offset", + "type": "flags.0?string" + } + ], + "type": "account.ChatThemes" + }, + { + "id": "2109703795", + "predicate": "sponsoredMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "recommended", + "type": "flags.5?true" + }, + { + "name": "can_report", + "type": "flags.12?true" + }, + { + "name": "random_id", + "type": "bytes" + }, + { + "name": "url", + "type": "string" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "entities", + "type": "flags.1?Vector" + }, + { + "name": "photo", + "type": "flags.6?Photo" + }, + { + "name": "media", + "type": "flags.14?MessageMedia" + }, + { + "name": "color", + "type": "flags.13?PeerColor" + }, + { + "name": "button_text", + "type": "string" + }, + { + "name": "sponsor_info", + "type": "flags.7?string" + }, + { + "name": "additional_info", + "type": "flags.8?string" + }, + { + "name": "min_display_duration", + "type": "flags.15?int" + }, + { + "name": "max_display_duration", + "type": "flags.15?int" + } + ], + "type": "SponsoredMessage" + }, + { + "id": "-2464403", + "predicate": "messages.sponsoredMessages", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "posts_between", + "type": "flags.0?int" + }, + { + "name": "start_delay", + "type": "flags.1?int" + }, + { + "name": "between_delay", + "type": "flags.2?int" + }, + { + "name": "messages", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.SponsoredMessages" + }, + { + "id": "406407439", + "predicate": "messages.sponsoredMessagesEmpty", + "params": [], + "type": "messages.SponsoredMessages" + }, + { + "id": "-911191137", + "predicate": "searchResultsCalendarPeriod", + "params": [ + { + "name": "date", + "type": "int" + }, + { + "name": "min_msg_id", + "type": "int" + }, + { + "name": "max_msg_id", + "type": "int" + }, + { + "name": "count", + "type": "int" + } + ], + "type": "SearchResultsCalendarPeriod" + }, + { + "id": "343859772", + "predicate": "messages.searchResultsCalendar", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "inexact", + "type": "flags.0?true" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "min_date", + "type": "int" + }, + { + "name": "min_msg_id", + "type": "int" + }, + { + "name": "offset_id_offset", + "type": "flags.1?int" + }, + { + "name": "periods", + "type": "Vector" + }, + { + "name": "messages", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.SearchResultsCalendar" + }, + { + "id": "2137295719", + "predicate": "searchResultPosition", + "params": [ + { + "name": "msg_id", + "type": "int" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "offset", + "type": "int" + } + ], + "type": "SearchResultsPosition" + }, + { + "id": "1404185519", + "predicate": "messages.searchResultsPositions", + "params": [ + { + "name": "count", + "type": "int" + }, + { + "name": "positions", + "type": "Vector" + } + ], + "type": "messages.SearchResultsPositions" + }, + { + "id": "-191450938", + "predicate": "channels.sendAsPeers", + "params": [ + { + "name": "peers", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "channels.SendAsPeers" + }, + { + "id": "997004590", + "predicate": "users.userFull", + "params": [ + { + "name": "full_user", + "type": "UserFull" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "users.UserFull" + }, + { + "id": "1753266509", + "predicate": "messages.peerSettings", + "params": [ + { + "name": "settings", + "type": "PeerSettings" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.PeerSettings" + }, + { + "id": "-1012759713", + "predicate": "auth.loggedOut", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "future_auth_token", + "type": "flags.0?bytes" + } + ], + "type": "auth.LoggedOut" + }, + { + "id": "-1546531968", + "predicate": "reactionCount", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "chosen_order", + "type": "flags.0?int" + }, + { + "name": "reaction", + "type": "Reaction" + }, + { + "name": "count", + "type": "int" + } + ], + "type": "ReactionCount" + }, + { + "id": "171155211", + "predicate": "messageReactions", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "min", + "type": "flags.0?true" + }, + { + "name": "can_see_list", + "type": "flags.2?true" + }, + { + "name": "reactions_as_tags", + "type": "flags.3?true" + }, + { + "name": "results", + "type": "Vector" + }, + { + "name": "recent_reactions", + "type": "flags.1?Vector" + }, + { + "name": "top_reactors", + "type": "flags.4?Vector" + } + ], + "type": "MessageReactions" + }, + { + "id": "834488621", + "predicate": "messages.messageReactionsList", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "reactions", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "next_offset", + "type": "flags.0?string" + } + ], + "type": "messages.MessageReactionsList" + }, + { + "id": "-1065882623", + "predicate": "availableReaction", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "inactive", + "type": "flags.0?true" + }, + { + "name": "premium", + "type": "flags.2?true" + }, + { + "name": "reaction", + "type": "string" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "static_icon", + "type": "Document" + }, + { + "name": "appear_animation", + "type": "Document" + }, + { + "name": "select_animation", + "type": "Document" + }, + { + "name": "activate_animation", + "type": "Document" + }, + { + "name": "effect_animation", + "type": "Document" + }, + { + "name": "around_animation", + "type": "flags.1?Document" + }, + { + "name": "center_icon", + "type": "flags.1?Document" + } + ], + "type": "AvailableReaction" + }, + { + "id": "-1626924713", + "predicate": "messages.availableReactionsNotModified", + "params": [], + "type": "messages.AvailableReactions" + }, + { + "id": "1989032621", + "predicate": "messages.availableReactions", + "params": [ + { + "name": "hash", + "type": "int" + }, + { + "name": "reactions", + "type": "Vector" + } + ], + "type": "messages.AvailableReactions" + }, + { + "id": "-1938180548", + "predicate": "messagePeerReaction", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "big", + "type": "flags.0?true" + }, + { + "name": "unread", + "type": "flags.1?true" + }, + { + "name": "my", + "type": "flags.2?true" + }, + { + "name": "peer_id", + "type": "Peer" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "reaction", + "type": "Reaction" + } + ], + "type": "MessagePeerReaction" + }, + { + "id": "-2132064081", + "predicate": "groupCallStreamChannel", + "params": [ + { + "name": "channel", + "type": "int" + }, + { + "name": "scale", + "type": "int" + }, + { + "name": "last_timestamp_ms", + "type": "long" + } + ], + "type": "GroupCallStreamChannel" + }, + { + "id": "-790330702", + "predicate": "phone.groupCallStreamChannels", + "params": [ + { + "name": "channels", + "type": "Vector" + } + ], + "type": "phone.GroupCallStreamChannels" + }, + { + "id": "767505458", + "predicate": "phone.groupCallStreamRtmpUrl", + "params": [ + { + "name": "url", + "type": "string" + }, + { + "name": "key", + "type": "string" + } + ], + "type": "phone.GroupCallStreamRtmpUrl" + }, + { + "id": "1165423600", + "predicate": "attachMenuBotIconColor", + "params": [ + { + "name": "name", + "type": "string" + }, + { + "name": "color", + "type": "int" + } + ], + "type": "AttachMenuBotIconColor" + }, + { + "id": "-1297663893", + "predicate": "attachMenuBotIcon", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "icon", + "type": "Document" + }, + { + "name": "colors", + "type": "flags.0?Vector" + } + ], + "type": "AttachMenuBotIcon" + }, + { + "id": "-653423106", + "predicate": "attachMenuBot", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "inactive", + "type": "flags.0?true" + }, + { + "name": "has_settings", + "type": "flags.1?true" + }, + { + "name": "request_write_access", + "type": "flags.2?true" + }, + { + "name": "show_in_attach_menu", + "type": "flags.3?true" + }, + { + "name": "show_in_side_menu", + "type": "flags.4?true" + }, + { + "name": "side_menu_disclaimer_needed", + "type": "flags.5?true" + }, + { + "name": "bot_id", + "type": "long" + }, + { + "name": "short_name", + "type": "string" + }, + { + "name": "peer_types", + "type": "flags.3?Vector" + }, + { + "name": "icons", + "type": "Vector" + } + ], + "type": "AttachMenuBot" + }, + { + "id": "-237467044", + "predicate": "attachMenuBotsNotModified", + "params": [], + "type": "AttachMenuBots" + }, + { + "id": "1011024320", + "predicate": "attachMenuBots", + "params": [ + { + "name": "hash", + "type": "long" + }, + { + "name": "bots", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "AttachMenuBots" + }, + { + "id": "-1816172929", + "predicate": "attachMenuBotsBot", + "params": [ + { + "name": "bot", + "type": "AttachMenuBot" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "AttachMenuBotsBot" + }, + { + "id": "1294139288", + "predicate": "webViewResultUrl", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "fullsize", + "type": "flags.1?true" + }, + { + "name": "fullscreen", + "type": "flags.2?true" + }, + { + "name": "query_id", + "type": "flags.0?long" + }, + { + "name": "url", + "type": "string" + } + ], + "type": "WebViewResult" + }, + { + "id": "211046684", + "predicate": "webViewMessageSent", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "msg_id", + "type": "flags.0?InputBotInlineMessageID" + } + ], + "type": "WebViewMessageSent" + }, + { + "id": "1966318984", + "predicate": "botMenuButtonDefault", + "params": [], + "type": "BotMenuButton" + }, + { + "id": "1113113093", + "predicate": "botMenuButtonCommands", + "params": [], + "type": "BotMenuButton" + }, + { + "id": "-944407322", + "predicate": "botMenuButton", + "params": [ + { + "name": "text", + "type": "string" + }, + { + "name": "url", + "type": "string" + } + ], + "type": "BotMenuButton" + }, + { + "id": "-67704655", + "predicate": "account.savedRingtonesNotModified", + "params": [], + "type": "account.SavedRingtones" + }, + { + "id": "-1041683259", + "predicate": "account.savedRingtones", + "params": [ + { + "name": "hash", + "type": "long" + }, + { + "name": "ringtones", + "type": "Vector" + } + ], + "type": "account.SavedRingtones" + }, + { + "id": "-1746354498", + "predicate": "notificationSoundDefault", + "params": [], + "type": "NotificationSound" + }, + { + "id": "1863070943", + "predicate": "notificationSoundNone", + "params": [], + "type": "NotificationSound" + }, + { + "id": "-2096391452", + "predicate": "notificationSoundLocal", + "params": [ + { + "name": "title", + "type": "string" + }, + { + "name": "data", + "type": "string" + } + ], + "type": "NotificationSound" + }, + { + "id": "-9666487", + "predicate": "notificationSoundRingtone", + "params": [ + { + "name": "id", + "type": "long" + } + ], + "type": "NotificationSound" + }, + { + "id": "-1222230163", + "predicate": "account.savedRingtone", + "params": [], + "type": "account.SavedRingtone" + }, + { + "id": "523271863", + "predicate": "account.savedRingtoneConverted", + "params": [ + { + "name": "document", + "type": "Document" + } + ], + "type": "account.SavedRingtone" + }, + { + "id": "2104224014", + "predicate": "attachMenuPeerTypeSameBotPM", + "params": [], + "type": "AttachMenuPeerType" + }, + { + "id": "-1020528102", + "predicate": "attachMenuPeerTypeBotPM", + "params": [], + "type": "AttachMenuPeerType" + }, + { + "id": "-247016673", + "predicate": "attachMenuPeerTypePM", + "params": [], + "type": "AttachMenuPeerType" + }, + { + "id": "84480319", + "predicate": "attachMenuPeerTypeChat", + "params": [], + "type": "AttachMenuPeerType" + }, + { + "id": "2080104188", + "predicate": "attachMenuPeerTypeBroadcast", + "params": [], + "type": "AttachMenuPeerType" + }, + { + "id": "-977967015", + "predicate": "inputInvoiceMessage", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + } + ], + "type": "InputInvoice" + }, + { + "id": "-1020867857", + "predicate": "inputInvoiceSlug", + "params": [ + { + "name": "slug", + "type": "string" + } + ], + "type": "InputInvoice" + }, + { + "id": "-1734841331", + "predicate": "inputInvoicePremiumGiftCode", + "params": [ + { + "name": "purpose", + "type": "InputStorePaymentPurpose" + }, + { + "name": "option", + "type": "PremiumGiftCodeOption" + } + ], + "type": "InputInvoice" + }, + { + "id": "1710230755", + "predicate": "inputInvoiceStars", + "params": [ + { + "name": "purpose", + "type": "InputStorePaymentPurpose" + } + ], + "type": "InputInvoice" + }, + { + "id": "887591921", + "predicate": "inputInvoiceChatInviteSubscription", + "params": [ + { + "name": "hash", + "type": "string" + } + ], + "type": "InputInvoice" + }, + { + "id": "-396206446", + "predicate": "inputInvoiceStarGift", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "hide_name", + "type": "flags.0?true" + }, + { + "name": "include_upgrade", + "type": "flags.2?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "gift_id", + "type": "long" + }, + { + "name": "message", + "type": "flags.1?TextWithEntities" + } + ], + "type": "InputInvoice" + }, + { + "id": "1300335965", + "predicate": "inputInvoiceStarGiftUpgrade", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "keep_original_details", + "type": "flags.0?true" + }, + { + "name": "stargift", + "type": "InputSavedStarGift" + } + ], + "type": "InputInvoice" + }, + { + "id": "1247763417", + "predicate": "inputInvoiceStarGiftTransfer", + "params": [ + { + "name": "stargift", + "type": "InputSavedStarGift" + }, + { + "name": "to_id", + "type": "InputPeer" + } + ], + "type": "InputInvoice" + }, + { + "id": "-625298705", + "predicate": "inputInvoicePremiumGiftStars", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "months", + "type": "int" + }, + { + "name": "message", + "type": "flags.0?TextWithEntities" + } + ], + "type": "InputInvoice" + }, + { + "id": "-191267262", + "predicate": "inputInvoiceBusinessBotTransferStars", + "params": [ + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "stars", + "type": "long" + } + ], + "type": "InputInvoice" + }, + { + "id": "-1012968668", + "predicate": "inputInvoiceStarGiftResale", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "ton", + "type": "flags.0?true" + }, + { + "name": "slug", + "type": "string" + }, + { + "name": "to_id", + "type": "InputPeer" + } + ], + "type": "InputInvoice" + }, + { + "id": "-1710536520", + "predicate": "inputInvoiceStarGiftPrepaidUpgrade", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "hash", + "type": "string" + } + ], + "type": "InputInvoice" + }, + { + "id": "1048049172", + "predicate": "inputInvoicePremiumAuthCode", + "params": [ + { + "name": "purpose", + "type": "InputStorePaymentPurpose" + } + ], + "type": "InputInvoice" + }, + { + "id": "153344209", + "predicate": "inputInvoiceStarGiftDropOriginalDetails", + "params": [ + { + "name": "stargift", + "type": "InputSavedStarGift" + } + ], + "type": "InputInvoice" + }, + { + "id": "516618768", + "predicate": "inputInvoiceStarGiftAuctionBid", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "hide_name", + "type": "flags.0?true" + }, + { + "name": "update_bid", + "type": "flags.2?true" + }, + { + "name": "peer", + "type": "flags.3?InputPeer" + }, + { + "name": "gift_id", + "type": "long" + }, + { + "name": "bid_amount", + "type": "long" + }, + { + "name": "message", + "type": "flags.1?TextWithEntities" + } + ], + "type": "InputInvoice" + }, + { + "id": "-1362048039", + "predicate": "payments.exportedInvoice", + "params": [ + { + "name": "url", + "type": "string" + } + ], + "type": "payments.ExportedInvoice" + }, + { + "id": "-809903785", + "predicate": "messages.transcribedAudio", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "pending", + "type": "flags.0?true" + }, + { + "name": "transcription_id", + "type": "long" + }, + { + "name": "text", + "type": "string" + }, + { + "name": "trial_remains_num", + "type": "flags.1?int" + }, + { + "name": "trial_remains_until_date", + "type": "flags.1?int" + } + ], + "type": "messages.TranscribedAudio" + }, + { + "id": "1395946908", + "predicate": "help.premiumPromo", + "params": [ + { + "name": "status_text", + "type": "string" + }, + { + "name": "status_entities", + "type": "Vector" + }, + { + "name": "video_sections", + "type": "Vector" + }, + { + "name": "videos", + "type": "Vector" + }, + { + "name": "period_options", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "help.PremiumPromo" + }, + { + "id": "-1502273946", + "predicate": "inputStorePaymentPremiumSubscription", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "restore", + "type": "flags.0?true" + }, + { + "name": "upgrade", + "type": "flags.1?true" + } + ], + "type": "InputStorePaymentPurpose" + }, + { + "id": "1634697192", + "predicate": "inputStorePaymentGiftPremium", + "params": [ + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "amount", + "type": "long" + } + ], + "type": "InputStorePaymentPurpose" + }, + { + "id": "-75955309", + "predicate": "inputStorePaymentPremiumGiftCode", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "boost_peer", + "type": "flags.0?InputPeer" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "amount", + "type": "long" + }, + { + "name": "message", + "type": "flags.1?TextWithEntities" + } + ], + "type": "InputStorePaymentPurpose" + }, + { + "id": "369444042", + "predicate": "inputStorePaymentPremiumGiveaway", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "only_new_subscribers", + "type": "flags.0?true" + }, + { + "name": "winners_are_visible", + "type": "flags.3?true" + }, + { + "name": "boost_peer", + "type": "InputPeer" + }, + { + "name": "additional_peers", + "type": "flags.1?Vector" + }, + { + "name": "countries_iso2", + "type": "flags.2?Vector" + }, + { + "name": "prize_description", + "type": "flags.4?string" + }, + { + "name": "random_id", + "type": "long" + }, + { + "name": "until_date", + "type": "int" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "amount", + "type": "long" + } + ], + "type": "InputStorePaymentPurpose" + }, + { + "id": "-106780981", + "predicate": "inputStorePaymentStarsTopup", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "stars", + "type": "long" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "amount", + "type": "long" + }, + { + "name": "spend_purpose_peer", + "type": "flags.0?InputPeer" + } + ], + "type": "InputStorePaymentPurpose" + }, + { + "id": "494149367", + "predicate": "inputStorePaymentStarsGift", + "params": [ + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "stars", + "type": "long" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "amount", + "type": "long" + } + ], + "type": "InputStorePaymentPurpose" + }, + { + "id": "1964968186", + "predicate": "inputStorePaymentStarsGiveaway", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "only_new_subscribers", + "type": "flags.0?true" + }, + { + "name": "winners_are_visible", + "type": "flags.3?true" + }, + { + "name": "stars", + "type": "long" + }, + { + "name": "boost_peer", + "type": "InputPeer" + }, + { + "name": "additional_peers", + "type": "flags.1?Vector" + }, + { + "name": "countries_iso2", + "type": "flags.2?Vector" + }, + { + "name": "prize_description", + "type": "flags.4?string" + }, + { + "name": "random_id", + "type": "long" + }, + { + "name": "until_date", + "type": "int" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "amount", + "type": "long" + }, + { + "name": "users", + "type": "int" + } + ], + "type": "InputStorePaymentPurpose" + }, + { + "id": "1069645911", + "predicate": "inputStorePaymentAuthCode", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "restore", + "type": "flags.0?true" + }, + { + "name": "phone_number", + "type": "string" + }, + { + "name": "phone_code_hash", + "type": "string" + }, + { + "name": "premium_days", + "type": "int" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "amount", + "type": "long" + } + ], + "type": "InputStorePaymentPurpose" + }, + { + "id": "-1996951013", + "predicate": "paymentFormMethod", + "params": [ + { + "name": "url", + "type": "string" + }, + { + "name": "title", + "type": "string" + } + ], + "type": "PaymentFormMethod" + }, + { + "id": "769727150", + "predicate": "emojiStatusEmpty", + "params": [], + "type": "EmojiStatus" + }, + { + "id": "-402717046", + "predicate": "emojiStatus", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "document_id", + "type": "long" + }, + { + "name": "until", + "type": "flags.0?int" + } + ], + "type": "EmojiStatus" + }, + { + "id": "1904500795", + "predicate": "emojiStatusCollectible", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "collectible_id", + "type": "long" + }, + { + "name": "document_id", + "type": "long" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "slug", + "type": "string" + }, + { + "name": "pattern_document_id", + "type": "long" + }, + { + "name": "center_color", + "type": "int" + }, + { + "name": "edge_color", + "type": "int" + }, + { + "name": "pattern_color", + "type": "int" + }, + { + "name": "text_color", + "type": "int" + }, + { + "name": "until", + "type": "flags.0?int" + } + ], + "type": "EmojiStatus" + }, + { + "id": "118758847", + "predicate": "inputEmojiStatusCollectible", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "collectible_id", + "type": "long" + }, + { + "name": "until", + "type": "flags.0?int" + } + ], + "type": "EmojiStatus" + }, + { + "id": "-796072379", + "predicate": "account.emojiStatusesNotModified", + "params": [], + "type": "account.EmojiStatuses" + }, + { + "id": "-1866176559", + "predicate": "account.emojiStatuses", + "params": [ + { + "name": "hash", + "type": "long" + }, + { + "name": "statuses", + "type": "Vector" + } + ], + "type": "account.EmojiStatuses" + }, + { + "id": "2046153753", + "predicate": "reactionEmpty", + "params": [], + "type": "Reaction" + }, + { + "id": "455247544", + "predicate": "reactionEmoji", + "params": [ + { + "name": "emoticon", + "type": "string" + } + ], + "type": "Reaction" + }, + { + "id": "-1992950669", + "predicate": "reactionCustomEmoji", + "params": [ + { + "name": "document_id", + "type": "long" + } + ], + "type": "Reaction" + }, + { + "id": "1379771627", + "predicate": "reactionPaid", + "params": [], + "type": "Reaction" + }, + { + "id": "-352570692", + "predicate": "chatReactionsNone", + "params": [], + "type": "ChatReactions" + }, + { + "id": "1385335754", + "predicate": "chatReactionsAll", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "allow_custom", + "type": "flags.0?true" + } + ], + "type": "ChatReactions" + }, + { + "id": "1713193015", + "predicate": "chatReactionsSome", + "params": [ + { + "name": "reactions", + "type": "Vector" + } + ], + "type": "ChatReactions" + }, + { + "id": "-1334846497", + "predicate": "messages.reactionsNotModified", + "params": [], + "type": "messages.Reactions" + }, + { + "id": "-352454890", + "predicate": "messages.reactions", + "params": [ + { + "name": "hash", + "type": "long" + }, + { + "name": "reactions", + "type": "Vector" + } + ], + "type": "messages.Reactions" + }, + { + "id": "1128644211", + "predicate": "emailVerifyPurposeLoginSetup", + "params": [ + { + "name": "phone_number", + "type": "string" + }, + { + "name": "phone_code_hash", + "type": "string" + } + ], + "type": "EmailVerifyPurpose" + }, + { + "id": "1383932651", + "predicate": "emailVerifyPurposeLoginChange", + "params": [], + "type": "EmailVerifyPurpose" + }, + { + "id": "-1141565819", + "predicate": "emailVerifyPurposePassport", + "params": [], + "type": "EmailVerifyPurpose" + }, + { + "id": "-1842457175", + "predicate": "emailVerificationCode", + "params": [ + { + "name": "code", + "type": "string" + } + ], + "type": "EmailVerification" + }, + { + "id": "-611279166", + "predicate": "emailVerificationGoogle", + "params": [ + { + "name": "token", + "type": "string" + } + ], + "type": "EmailVerification" + }, + { + "id": "-1764723459", + "predicate": "emailVerificationApple", + "params": [ + { + "name": "token", + "type": "string" + } + ], + "type": "EmailVerification" + }, + { + "id": "731303195", + "predicate": "account.emailVerified", + "params": [ + { + "name": "email", + "type": "string" + } + ], + "type": "account.EmailVerified" + }, + { + "id": "-507835039", + "predicate": "account.emailVerifiedLogin", + "params": [ + { + "name": "email", + "type": "string" + }, + { + "name": "sent_code", + "type": "auth.SentCode" + } + ], + "type": "account.EmailVerified" + }, + { + "id": "1596792306", + "predicate": "premiumSubscriptionOption", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "current", + "type": "flags.1?true" + }, + { + "name": "can_purchase_upgrade", + "type": "flags.2?true" + }, + { + "name": "transaction", + "type": "flags.3?string" + }, + { + "name": "months", + "type": "int" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "amount", + "type": "long" + }, + { + "name": "bot_url", + "type": "string" + }, + { + "name": "store_product", + "type": "flags.0?string" + } + ], + "type": "PremiumSubscriptionOption" + }, + { + "id": "-1206095820", + "predicate": "sendAsPeer", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "premium_required", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "Peer" + } + ], + "type": "SendAsPeer" + }, + { + "id": "-1386050360", + "predicate": "messageExtendedMediaPreview", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "w", + "type": "flags.0?int" + }, + { + "name": "h", + "type": "flags.0?int" + }, + { + "name": "thumb", + "type": "flags.1?PhotoSize" + }, + { + "name": "video_duration", + "type": "flags.2?int" + } + ], + "type": "MessageExtendedMedia" + }, + { + "id": "-297296796", + "predicate": "messageExtendedMedia", + "params": [ + { + "name": "media", + "type": "MessageMedia" + } + ], + "type": "MessageExtendedMedia" + }, + { + "id": "-50416996", + "predicate": "stickerKeyword", + "params": [ + { + "name": "document_id", + "type": "long" + }, + { + "name": "keyword", + "type": "Vector" + } + ], + "type": "StickerKeyword" + }, + { + "id": "-1274595769", + "predicate": "username", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "editable", + "type": "flags.0?true" + }, + { + "name": "active", + "type": "flags.1?true" + }, + { + "name": "username", + "type": "string" + } + ], + "type": "Username" + }, + { + "id": "37687451", + "predicate": "forumTopicDeleted", + "params": [ + { + "name": "id", + "type": "int" + } + ], + "type": "ForumTopic" + }, + { + "id": "-52766699", + "predicate": "forumTopic", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "my", + "type": "flags.1?true" + }, + { + "name": "closed", + "type": "flags.2?true" + }, + { + "name": "pinned", + "type": "flags.3?true" + }, + { + "name": "short", + "type": "flags.5?true" + }, + { + "name": "hidden", + "type": "flags.6?true" + }, + { + "name": "title_missing", + "type": "flags.7?true" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "icon_color", + "type": "int" + }, + { + "name": "icon_emoji_id", + "type": "flags.0?long" + }, + { + "name": "top_message", + "type": "int" + }, + { + "name": "read_inbox_max_id", + "type": "int" + }, + { + "name": "read_outbox_max_id", + "type": "int" + }, + { + "name": "unread_count", + "type": "int" + }, + { + "name": "unread_mentions_count", + "type": "int" + }, + { + "name": "unread_reactions_count", + "type": "int" + }, + { + "name": "unread_poll_votes_count", + "type": "int" + }, + { + "name": "from_id", + "type": "Peer" + }, + { + "name": "notify_settings", + "type": "PeerNotifySettings" + }, + { + "name": "draft", + "type": "flags.4?DraftMessage" + } + ], + "type": "ForumTopic" + }, + { + "id": "913709011", + "predicate": "messages.forumTopics", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "order_by_create_date", + "type": "flags.0?true" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "topics", + "type": "Vector" + }, + { + "name": "messages", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "pts", + "type": "int" + } + ], + "type": "messages.ForumTopics" + }, + { + "id": "1135897376", + "predicate": "defaultHistoryTTL", + "params": [ + { + "name": "period", + "type": "int" + } + ], + "type": "DefaultHistoryTTL" + }, + { + "id": "1103040667", + "predicate": "exportedContactToken", + "params": [ + { + "name": "url", + "type": "string" + }, + { + "name": "expires", + "type": "int" + } + ], + "type": "ExportedContactToken" + }, + { + "id": "1597737472", + "predicate": "requestPeerTypeUser", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "bot", + "type": "flags.0?Bool" + }, + { + "name": "premium", + "type": "flags.1?Bool" + } + ], + "type": "RequestPeerType" + }, + { + "id": "-906990053", + "predicate": "requestPeerTypeChat", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "creator", + "type": "flags.0?true" + }, + { + "name": "bot_participant", + "type": "flags.5?true" + }, + { + "name": "has_username", + "type": "flags.3?Bool" + }, + { + "name": "forum", + "type": "flags.4?Bool" + }, + { + "name": "user_admin_rights", + "type": "flags.1?ChatAdminRights" + }, + { + "name": "bot_admin_rights", + "type": "flags.2?ChatAdminRights" + } + ], + "type": "RequestPeerType" + }, + { + "id": "865857388", + "predicate": "requestPeerTypeBroadcast", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "creator", + "type": "flags.0?true" + }, + { + "name": "has_username", + "type": "flags.3?Bool" + }, + { + "name": "user_admin_rights", + "type": "flags.1?ChatAdminRights" + }, + { + "name": "bot_admin_rights", + "type": "flags.2?ChatAdminRights" + } + ], + "type": "RequestPeerType" + }, + { + "id": "1048699000", + "predicate": "requestPeerTypeCreateBot", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "bot_managed", + "type": "flags.0?true" + }, + { + "name": "suggested_name", + "type": "flags.1?string" + }, + { + "name": "suggested_username", + "type": "flags.2?string" + } + ], + "type": "RequestPeerType" + }, + { + "id": "1209970170", + "predicate": "emojiListNotModified", + "params": [], + "type": "EmojiList" + }, + { + "id": "2048790993", + "predicate": "emojiList", + "params": [ + { + "name": "hash", + "type": "long" + }, + { + "name": "document_id", + "type": "Vector" + } + ], + "type": "EmojiList" + }, + { + "id": "2056961449", + "predicate": "emojiGroup", + "params": [ + { + "name": "title", + "type": "string" + }, + { + "name": "icon_emoji_id", + "type": "long" + }, + { + "name": "emoticons", + "type": "Vector" + } + ], + "type": "EmojiGroup" + }, + { + "id": "-2133693241", + "predicate": "emojiGroupGreeting", + "params": [ + { + "name": "title", + "type": "string" + }, + { + "name": "icon_emoji_id", + "type": "long" + }, + { + "name": "emoticons", + "type": "Vector" + } + ], + "type": "EmojiGroup" + }, + { + "id": "154914612", + "predicate": "emojiGroupPremium", + "params": [ + { + "name": "title", + "type": "string" + }, + { + "name": "icon_emoji_id", + "type": "long" + } + ], + "type": "EmojiGroup" + }, + { + "id": "1874111879", + "predicate": "messages.emojiGroupsNotModified", + "params": [], + "type": "messages.EmojiGroups" + }, + { + "id": "-2011186869", + "predicate": "messages.emojiGroups", + "params": [ + { + "name": "hash", + "type": "int" + }, + { + "name": "groups", + "type": "Vector" + } + ], + "type": "messages.EmojiGroups" + }, + { + "id": "1964978502", + "predicate": "textWithEntities", + "params": [ + { + "name": "text", + "type": "string" + }, + { + "name": "entities", + "type": "Vector" + } + ], + "type": "TextWithEntities" + }, + { + "id": "870003448", + "predicate": "messages.translateResult", + "params": [ + { + "name": "result", + "type": "Vector" + } + ], + "type": "messages.TranslatedText" + }, + { + "id": "-934791986", + "predicate": "autoSaveSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "photos", + "type": "flags.0?true" + }, + { + "name": "videos", + "type": "flags.1?true" + }, + { + "name": "video_max_size", + "type": "flags.2?long" + } + ], + "type": "AutoSaveSettings" + }, + { + "id": "-2124403385", + "predicate": "autoSaveException", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "settings", + "type": "AutoSaveSettings" + } + ], + "type": "AutoSaveException" + }, + { + "id": "1279133341", + "predicate": "account.autoSaveSettings", + "params": [ + { + "name": "users_settings", + "type": "AutoSaveSettings" + }, + { + "name": "chats_settings", + "type": "AutoSaveSettings" + }, + { + "name": "broadcasts_settings", + "type": "AutoSaveSettings" + }, + { + "name": "exceptions", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "account.AutoSaveSettings" + }, + { + "id": "2094949405", + "predicate": "help.appConfigNotModified", + "params": [], + "type": "help.AppConfig" + }, + { + "id": "-585598930", + "predicate": "help.appConfig", + "params": [ + { + "name": "hash", + "type": "int" + }, + { + "name": "config", + "type": "JSONValue" + } + ], + "type": "help.AppConfig" + }, + { + "id": "-1457472134", + "predicate": "inputBotAppID", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputBotApp" + }, + { + "id": "-1869872121", + "predicate": "inputBotAppShortName", + "params": [ + { + "name": "bot_id", + "type": "InputUser" + }, + { + "name": "short_name", + "type": "string" + } + ], + "type": "InputBotApp" + }, + { + "id": "1571189943", + "predicate": "botAppNotModified", + "params": [], + "type": "BotApp" + }, + { + "id": "-1778593322", + "predicate": "botApp", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "short_name", + "type": "string" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "description", + "type": "string" + }, + { + "name": "photo", + "type": "Photo" + }, + { + "name": "document", + "type": "flags.0?Document" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "BotApp" + }, + { + "id": "-347034123", + "predicate": "messages.botApp", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "inactive", + "type": "flags.0?true" + }, + { + "name": "request_write_access", + "type": "flags.1?true" + }, + { + "name": "has_settings", + "type": "flags.2?true" + }, + { + "name": "app", + "type": "BotApp" + } + ], + "type": "messages.BotApp" + }, + { + "id": "-1250781739", + "predicate": "inlineBotWebView", + "params": [ + { + "name": "text", + "type": "string" + }, + { + "name": "url", + "type": "string" + } + ], + "type": "InlineBotWebView" + }, + { + "id": "1246753138", + "predicate": "readParticipantDate", + "params": [ + { + "name": "user_id", + "type": "long" + }, + { + "name": "date", + "type": "int" + } + ], + "type": "ReadParticipantDate" + }, + { + "id": "-203367885", + "predicate": "inputChatlistDialogFilter", + "params": [ + { + "name": "filter_id", + "type": "int" + } + ], + "type": "InputChatlist" + }, + { + "id": "206668204", + "predicate": "exportedChatlistInvite", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "url", + "type": "string" + }, + { + "name": "peers", + "type": "Vector" + } + ], + "type": "ExportedChatlistInvite" + }, + { + "id": "283567014", + "predicate": "chatlists.exportedChatlistInvite", + "params": [ + { + "name": "filter", + "type": "DialogFilter" + }, + { + "name": "invite", + "type": "ExportedChatlistInvite" + } + ], + "type": "chatlists.ExportedChatlistInvite" + }, + { + "id": "279670215", + "predicate": "chatlists.exportedInvites", + "params": [ + { + "name": "invites", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "chatlists.ExportedInvites" + }, + { + "id": "-91752871", + "predicate": "chatlists.chatlistInviteAlready", + "params": [ + { + "name": "filter_id", + "type": "int" + }, + { + "name": "missing_peers", + "type": "Vector" + }, + { + "name": "already_peers", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "chatlists.ChatlistInvite" + }, + { + "id": "-250687953", + "predicate": "chatlists.chatlistInvite", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "title_noanimate", + "type": "flags.1?true" + }, + { + "name": "title", + "type": "TextWithEntities" + }, + { + "name": "emoticon", + "type": "flags.0?string" + }, + { + "name": "peers", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "chatlists.ChatlistInvite" + }, + { + "id": "-1816295539", + "predicate": "chatlists.chatlistUpdates", + "params": [ + { + "name": "missing_peers", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "chatlists.ChatlistUpdates" + }, + { + "id": "-391678544", + "predicate": "bots.botInfo", + "params": [ + { + "name": "name", + "type": "string" + }, + { + "name": "about", + "type": "string" + }, + { + "name": "description", + "type": "string" + } + ], + "type": "bots.BotInfo" + }, + { + "id": "-1228133028", + "predicate": "messagePeerVote", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "option", + "type": "bytes" + }, + { + "name": "date", + "type": "int" + } + ], + "type": "MessagePeerVote" + }, + { + "id": "1959634180", + "predicate": "messagePeerVoteInputOption", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "date", + "type": "int" + } + ], + "type": "MessagePeerVote" + }, + { + "id": "1177089766", + "predicate": "messagePeerVoteMultiple", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "options", + "type": "Vector" + }, + { + "name": "date", + "type": "int" + } + ], + "type": "MessagePeerVote" + }, + { + "id": "-1923523370", + "predicate": "storyViews", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "has_viewers", + "type": "flags.1?true" + }, + { + "name": "views_count", + "type": "int" + }, + { + "name": "forwards_count", + "type": "flags.2?int" + }, + { + "name": "reactions", + "type": "flags.3?Vector" + }, + { + "name": "reactions_count", + "type": "flags.4?int" + }, + { + "name": "recent_viewers", + "type": "flags.0?Vector" + } + ], + "type": "StoryViews" + }, + { + "id": "1374088783", + "predicate": "storyItemDeleted", + "params": [ + { + "name": "id", + "type": "int" + } + ], + "type": "StoryItem" + }, + { + "id": "-5388013", + "predicate": "storyItemSkipped", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "close_friends", + "type": "flags.8?true" + }, + { + "name": "live", + "type": "flags.9?true" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "expire_date", + "type": "int" + } + ], + "type": "StoryItem" + }, + { + "id": "379894076", + "predicate": "storyItem", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "pinned", + "type": "flags.5?true" + }, + { + "name": "public", + "type": "flags.7?true" + }, + { + "name": "close_friends", + "type": "flags.8?true" + }, + { + "name": "min", + "type": "flags.9?true" + }, + { + "name": "noforwards", + "type": "flags.10?true" + }, + { + "name": "edited", + "type": "flags.11?true" + }, + { + "name": "contacts", + "type": "flags.12?true" + }, + { + "name": "selected_contacts", + "type": "flags.13?true" + }, + { + "name": "out", + "type": "flags.16?true" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "from_id", + "type": "flags.18?Peer" + }, + { + "name": "fwd_from", + "type": "flags.17?StoryFwdHeader" + }, + { + "name": "expire_date", + "type": "int" + }, + { + "name": "caption", + "type": "flags.0?string" + }, + { + "name": "entities", + "type": "flags.1?Vector" + }, + { + "name": "media", + "type": "MessageMedia" + }, + { + "name": "media_areas", + "type": "flags.14?Vector" + }, + { + "name": "privacy", + "type": "flags.2?Vector" + }, + { + "name": "views", + "type": "flags.3?StoryViews" + }, + { + "name": "sent_reaction", + "type": "flags.15?Reaction" + }, + { + "name": "albums", + "type": "flags.19?Vector" + }, + { + "name": "music", + "type": "flags.20?Document" + } + ], + "type": "StoryItem" + }, + { + "id": "291044926", + "predicate": "stories.allStoriesNotModified", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "state", + "type": "string" + }, + { + "name": "stealth_mode", + "type": "StoriesStealthMode" + } + ], + "type": "stories.AllStories" + }, + { + "id": "1862033025", + "predicate": "stories.allStories", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "has_more", + "type": "flags.0?true" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "state", + "type": "string" + }, + { + "name": "peer_stories", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "stealth_mode", + "type": "StoriesStealthMode" + } + ], + "type": "stories.AllStories" + }, + { + "id": "1673780490", + "predicate": "stories.stories", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "stories", + "type": "Vector" + }, + { + "name": "pinned_to_top", + "type": "flags.0?Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "stories.Stories" + }, + { + "id": "-1329730875", + "predicate": "storyView", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "blocked", + "type": "flags.0?true" + }, + { + "name": "blocked_my_stories_from", + "type": "flags.1?true" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "reaction", + "type": "flags.2?Reaction" + } + ], + "type": "StoryView" + }, + { + "id": "-1870436597", + "predicate": "storyViewPublicForward", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "blocked", + "type": "flags.0?true" + }, + { + "name": "blocked_my_stories_from", + "type": "flags.1?true" + }, + { + "name": "message", + "type": "Message" + } + ], + "type": "StoryView" + }, + { + "id": "-1116418231", + "predicate": "storyViewPublicRepost", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "blocked", + "type": "flags.0?true" + }, + { + "name": "blocked_my_stories_from", + "type": "flags.1?true" + }, + { + "name": "peer_id", + "type": "Peer" + }, + { + "name": "story", + "type": "StoryItem" + } + ], + "type": "StoryView" + }, + { + "id": "1507299269", + "predicate": "stories.storyViewsList", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "views_count", + "type": "int" + }, + { + "name": "forwards_count", + "type": "int" + }, + { + "name": "reactions_count", + "type": "int" + }, + { + "name": "views", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "next_offset", + "type": "flags.0?string" + } + ], + "type": "stories.StoryViewsList" + }, + { + "id": "-560009955", + "predicate": "stories.storyViews", + "params": [ + { + "name": "views", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "stories.StoryViews" + }, + { + "id": "1003796418", + "predicate": "inputReplyToMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "reply_to_msg_id", + "type": "int" + }, + { + "name": "top_msg_id", + "type": "flags.0?int" + }, + { + "name": "reply_to_peer_id", + "type": "flags.1?InputPeer" + }, + { + "name": "quote_text", + "type": "flags.2?string" + }, + { + "name": "quote_entities", + "type": "flags.3?Vector" + }, + { + "name": "quote_offset", + "type": "flags.4?int" + }, + { + "name": "monoforum_peer_id", + "type": "flags.5?InputPeer" + }, + { + "name": "todo_item_id", + "type": "flags.6?int" + }, + { + "name": "poll_option", + "type": "flags.7?bytes" + } + ], + "type": "InputReplyTo" + }, + { + "id": "1484862010", + "predicate": "inputReplyToStory", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "story_id", + "type": "int" + } + ], + "type": "InputReplyTo" + }, + { + "id": "1775660101", + "predicate": "inputReplyToMonoForum", + "params": [ + { + "name": "monoforum_peer_id", + "type": "InputPeer" + } + ], + "type": "InputReplyTo" + }, + { + "id": "1070138683", + "predicate": "exportedStoryLink", + "params": [ + { + "name": "link", + "type": "string" + } + ], + "type": "ExportedStoryLink" + }, + { + "id": "1898850301", + "predicate": "storiesStealthMode", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "active_until_date", + "type": "flags.0?int" + }, + { + "name": "cooldown_until_date", + "type": "flags.1?int" + } + ], + "type": "StoriesStealthMode" + }, + { + "id": "-808853502", + "predicate": "mediaAreaCoordinates", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "x", + "type": "double" + }, + { + "name": "y", + "type": "double" + }, + { + "name": "w", + "type": "double" + }, + { + "name": "h", + "type": "double" + }, + { + "name": "rotation", + "type": "double" + }, + { + "name": "radius", + "type": "flags.0?double" + } + ], + "type": "MediaAreaCoordinates" + }, + { + "id": "-1098720356", + "predicate": "mediaAreaVenue", + "params": [ + { + "name": "coordinates", + "type": "MediaAreaCoordinates" + }, + { + "name": "geo", + "type": "GeoPoint" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "address", + "type": "string" + }, + { + "name": "provider", + "type": "string" + }, + { + "name": "venue_id", + "type": "string" + }, + { + "name": "venue_type", + "type": "string" + } + ], + "type": "MediaArea" + }, + { + "id": "-1300094593", + "predicate": "inputMediaAreaVenue", + "params": [ + { + "name": "coordinates", + "type": "MediaAreaCoordinates" + }, + { + "name": "query_id", + "type": "long" + }, + { + "name": "result_id", + "type": "string" + } + ], + "type": "MediaArea" + }, + { + "id": "-891992787", + "predicate": "mediaAreaGeoPoint", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "coordinates", + "type": "MediaAreaCoordinates" + }, + { + "name": "geo", + "type": "GeoPoint" + }, + { + "name": "address", + "type": "flags.0?GeoPointAddress" + } + ], + "type": "MediaArea" + }, + { + "id": "340088945", + "predicate": "mediaAreaSuggestedReaction", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "dark", + "type": "flags.0?true" + }, + { + "name": "flipped", + "type": "flags.1?true" + }, + { + "name": "coordinates", + "type": "MediaAreaCoordinates" + }, + { + "name": "reaction", + "type": "Reaction" + } + ], + "type": "MediaArea" + }, + { + "id": "1996756655", + "predicate": "mediaAreaChannelPost", + "params": [ + { + "name": "coordinates", + "type": "MediaAreaCoordinates" + }, + { + "name": "channel_id", + "type": "long" + }, + { + "name": "msg_id", + "type": "int" + } + ], + "type": "MediaArea" + }, + { + "id": "577893055", + "predicate": "inputMediaAreaChannelPost", + "params": [ + { + "name": "coordinates", + "type": "MediaAreaCoordinates" + }, + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "msg_id", + "type": "int" + } + ], + "type": "MediaArea" + }, + { + "id": "926421125", + "predicate": "mediaAreaUrl", + "params": [ + { + "name": "coordinates", + "type": "MediaAreaCoordinates" + }, + { + "name": "url", + "type": "string" + } + ], + "type": "MediaArea" + }, + { + "id": "1235637404", + "predicate": "mediaAreaWeather", + "params": [ + { + "name": "coordinates", + "type": "MediaAreaCoordinates" + }, + { + "name": "emoji", + "type": "string" + }, + { + "name": "temperature_c", + "type": "double" + }, + { + "name": "color", + "type": "int" + } + ], + "type": "MediaArea" + }, + { + "id": "1468491885", + "predicate": "mediaAreaStarGift", + "params": [ + { + "name": "coordinates", + "type": "MediaAreaCoordinates" + }, + { + "name": "slug", + "type": "string" + } + ], + "type": "MediaArea" + }, + { + "id": "-1707742823", + "predicate": "peerStories", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "max_read_id", + "type": "flags.0?int" + }, + { + "name": "stories", + "type": "Vector" + } + ], + "type": "PeerStories" + }, + { + "id": "-890861720", + "predicate": "stories.peerStories", + "params": [ + { + "name": "stories", + "type": "PeerStories" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "stories.PeerStories" + }, + { + "id": "-44166467", + "predicate": "messages.webPage", + "params": [ + { + "name": "webpage", + "type": "WebPage" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.WebPage" + }, + { + "id": "629052971", + "predicate": "premiumGiftCodeOption", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "users", + "type": "int" + }, + { + "name": "months", + "type": "int" + }, + { + "name": "store_product", + "type": "flags.0?string" + }, + { + "name": "store_quantity", + "type": "flags.1?int" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "amount", + "type": "long" + } + ], + "type": "PremiumGiftCodeOption" + }, + { + "id": "-342343793", + "predicate": "payments.checkedGiftCode", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "via_giveaway", + "type": "flags.2?true" + }, + { + "name": "from_id", + "type": "flags.4?Peer" + }, + { + "name": "giveaway_msg_id", + "type": "flags.3?int" + }, + { + "name": "to_id", + "type": "flags.0?long" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "days", + "type": "int" + }, + { + "name": "used_date", + "type": "flags.1?int" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "payments.CheckedGiftCode" + }, + { + "id": "1130879648", + "predicate": "payments.giveawayInfo", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "participating", + "type": "flags.0?true" + }, + { + "name": "preparing_results", + "type": "flags.3?true" + }, + { + "name": "start_date", + "type": "int" + }, + { + "name": "joined_too_early_date", + "type": "flags.1?int" + }, + { + "name": "admin_disallowed_chat_id", + "type": "flags.2?long" + }, + { + "name": "disallowed_country", + "type": "flags.4?string" + } + ], + "type": "payments.GiveawayInfo" + }, + { + "id": "-512366993", + "predicate": "payments.giveawayInfoResults", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "winner", + "type": "flags.0?true" + }, + { + "name": "refunded", + "type": "flags.1?true" + }, + { + "name": "start_date", + "type": "int" + }, + { + "name": "gift_code_slug", + "type": "flags.3?string" + }, + { + "name": "stars_prize", + "type": "flags.4?long" + }, + { + "name": "finish_date", + "type": "int" + }, + { + "name": "winners_count", + "type": "int" + }, + { + "name": "activated_count", + "type": "flags.2?int" + } + ], + "type": "payments.GiveawayInfo" + }, + { + "id": "-1303143084", + "predicate": "prepaidGiveaway", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "months", + "type": "int" + }, + { + "name": "quantity", + "type": "int" + }, + { + "name": "date", + "type": "int" + } + ], + "type": "PrepaidGiveaway" + }, + { + "id": "-1700956192", + "predicate": "prepaidStarsGiveaway", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "stars", + "type": "long" + }, + { + "name": "quantity", + "type": "int" + }, + { + "name": "boosts", + "type": "int" + }, + { + "name": "date", + "type": "int" + } + ], + "type": "PrepaidGiveaway" + }, + { + "id": "1262359766", + "predicate": "boost", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "gift", + "type": "flags.1?true" + }, + { + "name": "giveaway", + "type": "flags.2?true" + }, + { + "name": "unclaimed", + "type": "flags.3?true" + }, + { + "name": "id", + "type": "string" + }, + { + "name": "user_id", + "type": "flags.0?long" + }, + { + "name": "giveaway_msg_id", + "type": "flags.2?int" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "expires", + "type": "int" + }, + { + "name": "used_gift_slug", + "type": "flags.4?string" + }, + { + "name": "multiplier", + "type": "flags.5?int" + }, + { + "name": "stars", + "type": "flags.6?long" + } + ], + "type": "Boost" + }, + { + "id": "-2030542532", + "predicate": "premium.boostsList", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "boosts", + "type": "Vector" + }, + { + "name": "next_offset", + "type": "flags.0?string" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "premium.BoostsList" + }, + { + "id": "-1001897636", + "predicate": "myBoost", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "slot", + "type": "int" + }, + { + "name": "peer", + "type": "flags.0?Peer" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "expires", + "type": "int" + }, + { + "name": "cooldown_until_date", + "type": "flags.1?int" + } + ], + "type": "MyBoost" + }, + { + "id": "-1696454430", + "predicate": "premium.myBoosts", + "params": [ + { + "name": "my_boosts", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "premium.MyBoosts" + }, + { + "id": "1230586490", + "predicate": "premium.boostsStatus", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "my_boost", + "type": "flags.2?true" + }, + { + "name": "level", + "type": "int" + }, + { + "name": "current_level_boosts", + "type": "int" + }, + { + "name": "boosts", + "type": "int" + }, + { + "name": "gift_boosts", + "type": "flags.4?int" + }, + { + "name": "next_level_boosts", + "type": "flags.0?int" + }, + { + "name": "premium_audience", + "type": "flags.1?StatsPercentValue" + }, + { + "name": "boost_url", + "type": "string" + }, + { + "name": "prepaid_giveaways", + "type": "flags.3?Vector" + }, + { + "name": "my_boost_slots", + "type": "flags.2?Vector" + } + ], + "type": "premium.BoostsStatus" + }, + { + "id": "-1205411504", + "predicate": "storyFwdHeader", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "modified", + "type": "flags.3?true" + }, + { + "name": "from", + "type": "flags.0?Peer" + }, + { + "name": "from_name", + "type": "flags.1?string" + }, + { + "name": "story_id", + "type": "flags.2?int" + } + ], + "type": "StoryFwdHeader" + }, + { + "id": "-419066241", + "predicate": "postInteractionCountersMessage", + "params": [ + { + "name": "msg_id", + "type": "int" + }, + { + "name": "views", + "type": "int" + }, + { + "name": "forwards", + "type": "int" + }, + { + "name": "reactions", + "type": "int" + } + ], + "type": "PostInteractionCounters" + }, + { + "id": "-1974989273", + "predicate": "postInteractionCountersStory", + "params": [ + { + "name": "story_id", + "type": "int" + }, + { + "name": "views", + "type": "int" + }, + { + "name": "forwards", + "type": "int" + }, + { + "name": "reactions", + "type": "int" + } + ], + "type": "PostInteractionCounters" + }, + { + "id": "1355613820", + "predicate": "stats.storyStats", + "params": [ + { + "name": "views_graph", + "type": "StatsGraph" + }, + { + "name": "reactions_by_emotion_graph", + "type": "StatsGraph" + } + ], + "type": "stats.StoryStats" + }, + { + "id": "32685898", + "predicate": "publicForwardMessage", + "params": [ + { + "name": "message", + "type": "Message" + } + ], + "type": "PublicForward" + }, + { + "id": "-302797360", + "predicate": "publicForwardStory", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "story", + "type": "StoryItem" + } + ], + "type": "PublicForward" + }, + { + "id": "-1828487648", + "predicate": "stats.publicForwards", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "forwards", + "type": "Vector" + }, + { + "name": "next_offset", + "type": "flags.0?string" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "stats.PublicForwards" + }, + { + "id": "-1253352753", + "predicate": "peerColor", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "color", + "type": "flags.0?int" + }, + { + "name": "background_emoji_id", + "type": "flags.1?long" + } + ], + "type": "PeerColor" + }, + { + "id": "-1178573926", + "predicate": "peerColorCollectible", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "collectible_id", + "type": "long" + }, + { + "name": "gift_emoji_id", + "type": "long" + }, + { + "name": "background_emoji_id", + "type": "long" + }, + { + "name": "accent_color", + "type": "int" + }, + { + "name": "colors", + "type": "Vector" + }, + { + "name": "dark_accent_color", + "type": "flags.0?int" + }, + { + "name": "dark_colors", + "type": "flags.1?Vector" + } + ], + "type": "PeerColor" + }, + { + "id": "-1192589655", + "predicate": "inputPeerColorCollectible", + "params": [ + { + "name": "collectible_id", + "type": "long" + } + ], + "type": "PeerColor" + }, + { + "id": "639736408", + "predicate": "help.peerColorSet", + "params": [ + { + "name": "colors", + "type": "Vector" + } + ], + "type": "help.PeerColorSet" + }, + { + "id": "1987928555", + "predicate": "help.peerColorProfileSet", + "params": [ + { + "name": "palette_colors", + "type": "Vector" + }, + { + "name": "bg_colors", + "type": "Vector" + }, + { + "name": "story_colors", + "type": "Vector" + } + ], + "type": "help.PeerColorSet" + }, + { + "id": "-1377014082", + "predicate": "help.peerColorOption", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "hidden", + "type": "flags.0?true" + }, + { + "name": "color_id", + "type": "int" + }, + { + "name": "colors", + "type": "flags.1?help.PeerColorSet" + }, + { + "name": "dark_colors", + "type": "flags.2?help.PeerColorSet" + }, + { + "name": "channel_min_level", + "type": "flags.3?int" + }, + { + "name": "group_min_level", + "type": "flags.4?int" + } + ], + "type": "help.PeerColorOption" + }, + { + "id": "732034510", + "predicate": "help.peerColorsNotModified", + "params": [], + "type": "help.PeerColors" + }, + { + "id": "16313608", + "predicate": "help.peerColors", + "params": [ + { + "name": "hash", + "type": "int" + }, + { + "name": "colors", + "type": "Vector" + } + ], + "type": "help.PeerColors" + }, + { + "id": "1620104917", + "predicate": "storyReaction", + "params": [ + { + "name": "peer_id", + "type": "Peer" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "reaction", + "type": "Reaction" + } + ], + "type": "StoryReaction" + }, + { + "id": "-1146411453", + "predicate": "storyReactionPublicForward", + "params": [ + { + "name": "message", + "type": "Message" + } + ], + "type": "StoryReaction" + }, + { + "id": "-808644845", + "predicate": "storyReactionPublicRepost", + "params": [ + { + "name": "peer_id", + "type": "Peer" + }, + { + "name": "story", + "type": "StoryItem" + } + ], + "type": "StoryReaction" + }, + { + "id": "-1436583780", + "predicate": "stories.storyReactionsList", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "reactions", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "next_offset", + "type": "flags.0?string" + } + ], + "type": "stories.StoryReactionsList" + }, + { + "id": "-1115174036", + "predicate": "savedDialog", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "pinned", + "type": "flags.2?true" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "top_message", + "type": "int" + } + ], + "type": "SavedDialog" + }, + { + "id": "1681948327", + "predicate": "monoForumDialog", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "unread_mark", + "type": "flags.3?true" + }, + { + "name": "nopaid_messages_exception", + "type": "flags.4?true" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "top_message", + "type": "int" + }, + { + "name": "read_inbox_max_id", + "type": "int" + }, + { + "name": "read_outbox_max_id", + "type": "int" + }, + { + "name": "unread_count", + "type": "int" + }, + { + "name": "unread_reactions_count", + "type": "int" + }, + { + "name": "draft", + "type": "flags.1?DraftMessage" + } + ], + "type": "SavedDialog" + }, + { + "id": "-130358751", + "predicate": "messages.savedDialogs", + "params": [ + { + "name": "dialogs", + "type": "Vector" + }, + { + "name": "messages", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.SavedDialogs" + }, + { + "id": "1153080793", + "predicate": "messages.savedDialogsSlice", + "params": [ + { + "name": "count", + "type": "int" + }, + { + "name": "dialogs", + "type": "Vector" + }, + { + "name": "messages", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.SavedDialogs" + }, + { + "id": "-1071681560", + "predicate": "messages.savedDialogsNotModified", + "params": [ + { + "name": "count", + "type": "int" + } + ], + "type": "messages.SavedDialogs" + }, + { + "id": "-881854424", + "predicate": "savedReactionTag", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "reaction", + "type": "Reaction" + }, + { + "name": "title", + "type": "flags.0?string" + }, + { + "name": "count", + "type": "int" + } + ], + "type": "SavedReactionTag" + }, + { + "id": "-2003084817", + "predicate": "messages.savedReactionTagsNotModified", + "params": [], + "type": "messages.SavedReactionTags" + }, + { + "id": "844731658", + "predicate": "messages.savedReactionTags", + "params": [ + { + "name": "tags", + "type": "Vector" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.SavedReactionTags" + }, + { + "id": "1001931436", + "predicate": "outboxReadDate", + "params": [ + { + "name": "date", + "type": "int" + } + ], + "type": "OutboxReadDate" + }, + { + "id": "-594852657", + "predicate": "smsjobs.eligibleToJoin", + "params": [ + { + "name": "terms_url", + "type": "string" + }, + { + "name": "monthly_sent_sms", + "type": "int" + } + ], + "type": "smsjobs.EligibilityToJoin" + }, + { + "id": "720277905", + "predicate": "smsjobs.status", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "allow_international", + "type": "flags.0?true" + }, + { + "name": "recent_sent", + "type": "int" + }, + { + "name": "recent_since", + "type": "int" + }, + { + "name": "recent_remains", + "type": "int" + }, + { + "name": "total_sent", + "type": "int" + }, + { + "name": "total_since", + "type": "int" + }, + { + "name": "last_gift_slug", + "type": "flags.1?string" + }, + { + "name": "terms_url", + "type": "string" + } + ], + "type": "smsjobs.Status" + }, + { + "id": "-425595208", + "predicate": "smsJob", + "params": [ + { + "name": "job_id", + "type": "string" + }, + { + "name": "phone_number", + "type": "string" + }, + { + "name": "text", + "type": "string" + } + ], + "type": "SmsJob" + }, + { + "id": "302717625", + "predicate": "businessWeeklyOpen", + "params": [ + { + "name": "start_minute", + "type": "int" + }, + { + "name": "end_minute", + "type": "int" + } + ], + "type": "BusinessWeeklyOpen" + }, + { + "id": "-1936543592", + "predicate": "businessWorkHours", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "open_now", + "type": "flags.0?true" + }, + { + "name": "timezone_id", + "type": "string" + }, + { + "name": "weekly_open", + "type": "Vector" + } + ], + "type": "BusinessWorkHours" + }, + { + "id": "-1403249929", + "predicate": "businessLocation", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "geo_point", + "type": "flags.0?GeoPoint" + }, + { + "name": "address", + "type": "string" + } + ], + "type": "BusinessLocation" + }, + { + "id": "1871393450", + "predicate": "inputBusinessRecipients", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "existing_chats", + "type": "flags.0?true" + }, + { + "name": "new_chats", + "type": "flags.1?true" + }, + { + "name": "contacts", + "type": "flags.2?true" + }, + { + "name": "non_contacts", + "type": "flags.3?true" + }, + { + "name": "exclude_selected", + "type": "flags.5?true" + }, + { + "name": "users", + "type": "flags.4?Vector" + } + ], + "type": "InputBusinessRecipients" + }, + { + "id": "554733559", + "predicate": "businessRecipients", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "existing_chats", + "type": "flags.0?true" + }, + { + "name": "new_chats", + "type": "flags.1?true" + }, + { + "name": "contacts", + "type": "flags.2?true" + }, + { + "name": "non_contacts", + "type": "flags.3?true" + }, + { + "name": "exclude_selected", + "type": "flags.5?true" + }, + { + "name": "users", + "type": "flags.4?Vector" + } + ], + "type": "BusinessRecipients" + }, + { + "id": "-910564679", + "predicate": "businessAwayMessageScheduleAlways", + "params": [], + "type": "BusinessAwayMessageSchedule" + }, + { + "id": "-1007487743", + "predicate": "businessAwayMessageScheduleOutsideWorkHours", + "params": [], + "type": "BusinessAwayMessageSchedule" + }, + { + "id": "-867328308", + "predicate": "businessAwayMessageScheduleCustom", + "params": [ + { + "name": "start_date", + "type": "int" + }, + { + "name": "end_date", + "type": "int" + } + ], + "type": "BusinessAwayMessageSchedule" + }, + { + "id": "26528571", + "predicate": "inputBusinessGreetingMessage", + "params": [ + { + "name": "shortcut_id", + "type": "int" + }, + { + "name": "recipients", + "type": "InputBusinessRecipients" + }, + { + "name": "no_activity_days", + "type": "int" + } + ], + "type": "InputBusinessGreetingMessage" + }, + { + "id": "-451302485", + "predicate": "businessGreetingMessage", + "params": [ + { + "name": "shortcut_id", + "type": "int" + }, + { + "name": "recipients", + "type": "BusinessRecipients" + }, + { + "name": "no_activity_days", + "type": "int" + } + ], + "type": "BusinessGreetingMessage" + }, + { + "id": "-2094959136", + "predicate": "inputBusinessAwayMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "offline_only", + "type": "flags.0?true" + }, + { + "name": "shortcut_id", + "type": "int" + }, + { + "name": "schedule", + "type": "BusinessAwayMessageSchedule" + }, + { + "name": "recipients", + "type": "InputBusinessRecipients" + } + ], + "type": "InputBusinessAwayMessage" + }, + { + "id": "-283809188", + "predicate": "businessAwayMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "offline_only", + "type": "flags.0?true" + }, + { + "name": "shortcut_id", + "type": "int" + }, + { + "name": "schedule", + "type": "BusinessAwayMessageSchedule" + }, + { + "name": "recipients", + "type": "BusinessRecipients" + } + ], + "type": "BusinessAwayMessage" + }, + { + "id": "-7173643", + "predicate": "timezone", + "params": [ + { + "name": "id", + "type": "string" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "utc_offset", + "type": "int" + } + ], + "type": "Timezone" + }, + { + "id": "-1761146676", + "predicate": "help.timezonesListNotModified", + "params": [], + "type": "help.TimezonesList" + }, + { + "id": "2071260529", + "predicate": "help.timezonesList", + "params": [ + { + "name": "timezones", + "type": "Vector" + }, + { + "name": "hash", + "type": "int" + } + ], + "type": "help.TimezonesList" + }, + { + "id": "110563371", + "predicate": "quickReply", + "params": [ + { + "name": "shortcut_id", + "type": "int" + }, + { + "name": "shortcut", + "type": "string" + }, + { + "name": "top_message", + "type": "int" + }, + { + "name": "count", + "type": "int" + } + ], + "type": "QuickReply" + }, + { + "id": "609840449", + "predicate": "inputQuickReplyShortcut", + "params": [ + { + "name": "shortcut", + "type": "string" + } + ], + "type": "InputQuickReplyShortcut" + }, + { + "id": "18418929", + "predicate": "inputQuickReplyShortcutId", + "params": [ + { + "name": "shortcut_id", + "type": "int" + } + ], + "type": "InputQuickReplyShortcut" + }, + { + "id": "-963811691", + "predicate": "messages.quickReplies", + "params": [ + { + "name": "quick_replies", + "type": "Vector" + }, + { + "name": "messages", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.QuickReplies" + }, + { + "id": "1603398491", + "predicate": "messages.quickRepliesNotModified", + "params": [], + "type": "messages.QuickReplies" + }, + { + "id": "-849058964", + "predicate": "connectedBot", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "bot_id", + "type": "long" + }, + { + "name": "recipients", + "type": "BusinessBotRecipients" + }, + { + "name": "rights", + "type": "BusinessBotRights" + } + ], + "type": "ConnectedBot" + }, + { + "id": "400029819", + "predicate": "account.connectedBots", + "params": [ + { + "name": "connected_bots", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "account.ConnectedBots" + }, + { + "id": "718878489", + "predicate": "messages.dialogFilters", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "tags_enabled", + "type": "flags.0?true" + }, + { + "name": "filters", + "type": "Vector" + } + ], + "type": "messages.DialogFilters" + }, + { + "id": "1821253126", + "predicate": "birthday", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "day", + "type": "int" + }, + { + "name": "month", + "type": "int" + }, + { + "name": "year", + "type": "flags.0?int" + } + ], + "type": "Birthday" + }, + { + "id": "-1892371723", + "predicate": "botBusinessConnection", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "disabled", + "type": "flags.1?true" + }, + { + "name": "connection_id", + "type": "string" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "dc_id", + "type": "int" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "rights", + "type": "flags.2?BusinessBotRights" + } + ], + "type": "BotBusinessConnection" + }, + { + "id": "163867085", + "predicate": "inputBusinessIntro", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "description", + "type": "string" + }, + { + "name": "sticker", + "type": "flags.0?InputDocument" + } + ], + "type": "InputBusinessIntro" + }, + { + "id": "1510606445", + "predicate": "businessIntro", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "description", + "type": "string" + }, + { + "name": "sticker", + "type": "flags.0?Document" + } + ], + "type": "BusinessIntro" + }, + { + "id": "-83926371", + "predicate": "messages.myStickers", + "params": [ + { + "name": "count", + "type": "int" + }, + { + "name": "sets", + "type": "Vector" + } + ], + "type": "messages.MyStickers" + }, + { + "id": "-476815191", + "predicate": "inputCollectibleUsername", + "params": [ + { + "name": "username", + "type": "string" + } + ], + "type": "InputCollectible" + }, + { + "id": "-1562241884", + "predicate": "inputCollectiblePhone", + "params": [ + { + "name": "phone", + "type": "string" + } + ], + "type": "InputCollectible" + }, + { + "id": "1857945489", + "predicate": "fragment.collectibleInfo", + "params": [ + { + "name": "purchase_date", + "type": "int" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "amount", + "type": "long" + }, + { + "name": "crypto_currency", + "type": "string" + }, + { + "name": "crypto_amount", + "type": "long" + }, + { + "name": "url", + "type": "string" + } + ], + "type": "fragment.CollectibleInfo" + }, + { + "id": "-991587810", + "predicate": "inputBusinessBotRecipients", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "existing_chats", + "type": "flags.0?true" + }, + { + "name": "new_chats", + "type": "flags.1?true" + }, + { + "name": "contacts", + "type": "flags.2?true" + }, + { + "name": "non_contacts", + "type": "flags.3?true" + }, + { + "name": "exclude_selected", + "type": "flags.5?true" + }, + { + "name": "users", + "type": "flags.4?Vector" + }, + { + "name": "exclude_users", + "type": "flags.6?Vector" + } + ], + "type": "InputBusinessBotRecipients" + }, + { + "id": "-1198722189", + "predicate": "businessBotRecipients", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "existing_chats", + "type": "flags.0?true" + }, + { + "name": "new_chats", + "type": "flags.1?true" + }, + { + "name": "contacts", + "type": "flags.2?true" + }, + { + "name": "non_contacts", + "type": "flags.3?true" + }, + { + "name": "exclude_selected", + "type": "flags.5?true" + }, + { + "name": "users", + "type": "flags.4?Vector" + }, + { + "name": "exclude_users", + "type": "flags.6?Vector" + } + ], + "type": "BusinessBotRecipients" + }, + { + "id": "496600883", + "predicate": "contactBirthday", + "params": [ + { + "name": "contact_id", + "type": "long" + }, + { + "name": "birthday", + "type": "Birthday" + } + ], + "type": "ContactBirthday" + }, + { + "id": "290452237", + "predicate": "contacts.contactBirthdays", + "params": [ + { + "name": "contacts", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "contacts.ContactBirthdays" + }, + { + "id": "1653379620", + "predicate": "missingInvitee", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "premium_would_allow_invite", + "type": "flags.0?true" + }, + { + "name": "premium_required_for_pm", + "type": "flags.1?true" + }, + { + "name": "user_id", + "type": "long" + } + ], + "type": "MissingInvitee" + }, + { + "id": "2136862630", + "predicate": "messages.invitedUsers", + "params": [ + { + "name": "updates", + "type": "Updates" + }, + { + "name": "missing_invitees", + "type": "Vector" + } + ], + "type": "messages.InvitedUsers" + }, + { + "id": "292003751", + "predicate": "inputBusinessChatLink", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "entities", + "type": "flags.0?Vector" + }, + { + "name": "title", + "type": "flags.1?string" + } + ], + "type": "InputBusinessChatLink" + }, + { + "id": "-1263638929", + "predicate": "businessChatLink", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "link", + "type": "string" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "entities", + "type": "flags.0?Vector" + }, + { + "name": "title", + "type": "flags.1?string" + }, + { + "name": "views", + "type": "int" + } + ], + "type": "BusinessChatLink" + }, + { + "id": "-331111727", + "predicate": "account.businessChatLinks", + "params": [ + { + "name": "links", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "account.BusinessChatLinks" + }, + { + "id": "-1708937439", + "predicate": "account.resolvedBusinessChatLinks", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "entities", + "type": "flags.0?Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "account.ResolvedBusinessChatLinks" + }, + { + "id": "-701500310", + "predicate": "requestedPeerUser", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "user_id", + "type": "long" + }, + { + "name": "first_name", + "type": "flags.0?string" + }, + { + "name": "last_name", + "type": "flags.0?string" + }, + { + "name": "username", + "type": "flags.1?string" + }, + { + "name": "photo", + "type": "flags.2?Photo" + } + ], + "type": "RequestedPeer" + }, + { + "id": "1929860175", + "predicate": "requestedPeerChat", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "chat_id", + "type": "long" + }, + { + "name": "title", + "type": "flags.0?string" + }, + { + "name": "photo", + "type": "flags.2?Photo" + } + ], + "type": "RequestedPeer" + }, + { + "id": "-1952185372", + "predicate": "requestedPeerChannel", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "channel_id", + "type": "long" + }, + { + "name": "title", + "type": "flags.0?string" + }, + { + "name": "username", + "type": "flags.1?string" + }, + { + "name": "photo", + "type": "flags.2?Photo" + } + ], + "type": "RequestedPeer" + }, + { + "id": "1124938064", + "predicate": "sponsoredMessageReportOption", + "params": [ + { + "name": "text", + "type": "string" + }, + { + "name": "option", + "type": "bytes" + } + ], + "type": "SponsoredMessageReportOption" + }, + { + "id": "-2073059774", + "predicate": "channels.sponsoredMessageReportResultChooseOption", + "params": [ + { + "name": "title", + "type": "string" + }, + { + "name": "options", + "type": "Vector" + } + ], + "type": "channels.SponsoredMessageReportResult" + }, + { + "id": "1044107055", + "predicate": "channels.sponsoredMessageReportResultAdsHidden", + "params": [], + "type": "channels.SponsoredMessageReportResult" + }, + { + "id": "-1384544183", + "predicate": "channels.sponsoredMessageReportResultReported", + "params": [], + "type": "channels.SponsoredMessageReportResult" + }, + { + "id": "-1161583078", + "predicate": "reactionNotificationsFromContacts", + "params": [], + "type": "ReactionNotificationsFrom" + }, + { + "id": "1268654752", + "predicate": "reactionNotificationsFromAll", + "params": [], + "type": "ReactionNotificationsFrom" + }, + { + "id": "1910827608", + "predicate": "reactionsNotifySettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "messages_notify_from", + "type": "flags.0?ReactionNotificationsFrom" + }, + { + "name": "stories_notify_from", + "type": "flags.1?ReactionNotificationsFrom" + }, + { + "name": "poll_votes_notify_from", + "type": "flags.2?ReactionNotificationsFrom" + }, + { + "name": "sound", + "type": "NotificationSound" + }, + { + "name": "show_previews", + "type": "Bool" + } + ], + "type": "ReactionsNotifySettings" + }, + { + "id": "-1815879042", + "predicate": "availableEffect", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "premium_required", + "type": "flags.2?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "emoticon", + "type": "string" + }, + { + "name": "static_icon_id", + "type": "flags.0?long" + }, + { + "name": "effect_sticker_id", + "type": "long" + }, + { + "name": "effect_animation_id", + "type": "flags.1?long" + } + ], + "type": "AvailableEffect" + }, + { + "id": "-772957605", + "predicate": "messages.availableEffectsNotModified", + "params": [], + "type": "messages.AvailableEffects" + }, + { + "id": "-1109696146", + "predicate": "messages.availableEffects", + "params": [ + { + "name": "hash", + "type": "int" + }, + { + "name": "effects", + "type": "Vector" + }, + { + "name": "documents", + "type": "Vector" + } + ], + "type": "messages.AvailableEffects" + }, + { + "id": "-1197736753", + "predicate": "factCheck", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "need_check", + "type": "flags.0?true" + }, + { + "name": "country", + "type": "flags.1?string" + }, + { + "name": "text", + "type": "flags.1?TextWithEntities" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "FactCheck" + }, + { + "id": "-1779253276", + "predicate": "starsTransactionPeerUnsupported", + "params": [], + "type": "StarsTransactionPeer" + }, + { + "id": "-1269320843", + "predicate": "starsTransactionPeerAppStore", + "params": [], + "type": "StarsTransactionPeer" + }, + { + "id": "2069236235", + "predicate": "starsTransactionPeerPlayMarket", + "params": [], + "type": "StarsTransactionPeer" + }, + { + "id": "621656824", + "predicate": "starsTransactionPeerPremiumBot", + "params": [], + "type": "StarsTransactionPeer" + }, + { + "id": "-382740222", + "predicate": "starsTransactionPeerFragment", + "params": [], + "type": "StarsTransactionPeer" + }, + { + "id": "-670195363", + "predicate": "starsTransactionPeer", + "params": [ + { + "name": "peer", + "type": "Peer" + } + ], + "type": "StarsTransactionPeer" + }, + { + "id": "1617438738", + "predicate": "starsTransactionPeerAds", + "params": [], + "type": "StarsTransactionPeer" + }, + { + "id": "-110658899", + "predicate": "starsTransactionPeerAPI", + "params": [], + "type": "StarsTransactionPeer" + }, + { + "id": "198776256", + "predicate": "starsTopupOption", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "extended", + "type": "flags.1?true" + }, + { + "name": "stars", + "type": "long" + }, + { + "name": "store_product", + "type": "flags.0?string" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "amount", + "type": "long" + } + ], + "type": "StarsTopupOption" + }, + { + "id": "325426864", + "predicate": "starsTransaction", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "refund", + "type": "flags.3?true" + }, + { + "name": "pending", + "type": "flags.4?true" + }, + { + "name": "failed", + "type": "flags.6?true" + }, + { + "name": "gift", + "type": "flags.10?true" + }, + { + "name": "reaction", + "type": "flags.11?true" + }, + { + "name": "stargift_upgrade", + "type": "flags.18?true" + }, + { + "name": "business_transfer", + "type": "flags.21?true" + }, + { + "name": "stargift_resale", + "type": "flags.22?true" + }, + { + "name": "posts_search", + "type": "flags.24?true" + }, + { + "name": "stargift_prepaid_upgrade", + "type": "flags.25?true" + }, + { + "name": "stargift_drop_original_details", + "type": "flags.26?true" + }, + { + "name": "phonegroup_message", + "type": "flags.27?true" + }, + { + "name": "stargift_auction_bid", + "type": "flags.28?true" + }, + { + "name": "offer", + "type": "flags.29?true" + }, + { + "name": "id", + "type": "string" + }, + { + "name": "amount", + "type": "StarsAmount" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "peer", + "type": "StarsTransactionPeer" + }, + { + "name": "title", + "type": "flags.0?string" + }, + { + "name": "description", + "type": "flags.1?string" + }, + { + "name": "photo", + "type": "flags.2?WebDocument" + }, + { + "name": "transaction_date", + "type": "flags.5?int" + }, + { + "name": "transaction_url", + "type": "flags.5?string" + }, + { + "name": "bot_payload", + "type": "flags.7?bytes" + }, + { + "name": "msg_id", + "type": "flags.8?int" + }, + { + "name": "extended_media", + "type": "flags.9?Vector" + }, + { + "name": "subscription_period", + "type": "flags.12?int" + }, + { + "name": "giveaway_post_id", + "type": "flags.13?int" + }, + { + "name": "stargift", + "type": "flags.14?StarGift" + }, + { + "name": "floodskip_number", + "type": "flags.15?int" + }, + { + "name": "starref_commission_permille", + "type": "flags.16?int" + }, + { + "name": "starref_peer", + "type": "flags.17?Peer" + }, + { + "name": "starref_amount", + "type": "flags.17?StarsAmount" + }, + { + "name": "paid_messages", + "type": "flags.19?int" + }, + { + "name": "premium_gift_months", + "type": "flags.20?int" + }, + { + "name": "ads_proceeds_from_date", + "type": "flags.23?int" + }, + { + "name": "ads_proceeds_to_date", + "type": "flags.23?int" + } + ], + "type": "StarsTransaction" + }, + { + "id": "1822222573", + "predicate": "payments.starsStatus", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "balance", + "type": "StarsAmount" + }, + { + "name": "subscriptions", + "type": "flags.1?Vector" + }, + { + "name": "subscriptions_next_offset", + "type": "flags.2?string" + }, + { + "name": "subscriptions_missing_balance", + "type": "flags.4?long" + }, + { + "name": "history", + "type": "flags.3?Vector" + }, + { + "name": "next_offset", + "type": "flags.0?string" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "payments.StarsStatus" + }, + { + "id": "-394605632", + "predicate": "foundStory", + "params": [ + { + "name": "peer", + "type": "Peer" + }, + { + "name": "story", + "type": "StoryItem" + } + ], + "type": "FoundStory" + }, + { + "id": "-488736969", + "predicate": "stories.foundStories", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "stories", + "type": "Vector" + }, + { + "name": "next_offset", + "type": "flags.0?string" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "stories.FoundStories" + }, + { + "id": "-565420653", + "predicate": "geoPointAddress", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "country_iso2", + "type": "string" + }, + { + "name": "state", + "type": "flags.0?string" + }, + { + "name": "city", + "type": "flags.1?string" + }, + { + "name": "street", + "type": "flags.2?string" + } + ], + "type": "GeoPointAddress" + }, + { + "id": "-21080943", + "predicate": "starsRevenueStatus", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "withdrawal_enabled", + "type": "flags.0?true" + }, + { + "name": "current_balance", + "type": "StarsAmount" + }, + { + "name": "available_balance", + "type": "StarsAmount" + }, + { + "name": "overall_revenue", + "type": "StarsAmount" + }, + { + "name": "next_withdrawal_at", + "type": "flags.1?int" + } + ], + "type": "StarsRevenueStatus" + }, + { + "id": "1814066038", + "predicate": "payments.starsRevenueStats", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "top_hours_graph", + "type": "flags.0?StatsGraph" + }, + { + "name": "revenue_graph", + "type": "StatsGraph" + }, + { + "name": "status", + "type": "StarsRevenueStatus" + }, + { + "name": "usd_rate", + "type": "double" + } + ], + "type": "payments.StarsRevenueStats" + }, + { + "id": "497778871", + "predicate": "payments.starsRevenueWithdrawalUrl", + "params": [ + { + "name": "url", + "type": "string" + } + ], + "type": "payments.StarsRevenueWithdrawalUrl" + }, + { + "id": "961445665", + "predicate": "payments.starsRevenueAdsAccountUrl", + "params": [ + { + "name": "url", + "type": "string" + } + ], + "type": "payments.StarsRevenueAdsAccountUrl" + }, + { + "id": "543876817", + "predicate": "inputStarsTransaction", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "refund", + "type": "flags.0?true" + }, + { + "name": "id", + "type": "string" + } + ], + "type": "InputStarsTransaction" + }, + { + "id": "1577421297", + "predicate": "starsGiftOption", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "extended", + "type": "flags.1?true" + }, + { + "name": "stars", + "type": "long" + }, + { + "name": "store_product", + "type": "flags.0?string" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "amount", + "type": "long" + } + ], + "type": "StarsGiftOption" + }, + { + "id": "428978491", + "predicate": "bots.popularAppBots", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "next_offset", + "type": "flags.0?string" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "bots.PopularAppBots" + }, + { + "id": "602479523", + "predicate": "botPreviewMedia", + "params": [ + { + "name": "date", + "type": "int" + }, + { + "name": "media", + "type": "MessageMedia" + } + ], + "type": "BotPreviewMedia" + }, + { + "id": "212278628", + "predicate": "bots.previewInfo", + "params": [ + { + "name": "media", + "type": "Vector" + }, + { + "name": "lang_codes", + "type": "Vector" + } + ], + "type": "bots.PreviewInfo" + }, + { + "id": "88173912", + "predicate": "starsSubscriptionPricing", + "params": [ + { + "name": "period", + "type": "int" + }, + { + "name": "amount", + "type": "long" + } + ], + "type": "StarsSubscriptionPricing" + }, + { + "id": "779004698", + "predicate": "starsSubscription", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "canceled", + "type": "flags.0?true" + }, + { + "name": "can_refulfill", + "type": "flags.1?true" + }, + { + "name": "missing_balance", + "type": "flags.2?true" + }, + { + "name": "bot_canceled", + "type": "flags.7?true" + }, + { + "name": "id", + "type": "string" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "until_date", + "type": "int" + }, + { + "name": "pricing", + "type": "StarsSubscriptionPricing" + }, + { + "name": "chat_invite_hash", + "type": "flags.3?string" + }, + { + "name": "title", + "type": "flags.4?string" + }, + { + "name": "photo", + "type": "flags.5?WebDocument" + }, + { + "name": "invoice_slug", + "type": "flags.6?string" + } + ], + "type": "StarsSubscription" + }, + { + "id": "1269016922", + "predicate": "messageReactor", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "top", + "type": "flags.0?true" + }, + { + "name": "my", + "type": "flags.1?true" + }, + { + "name": "anonymous", + "type": "flags.2?true" + }, + { + "name": "peer_id", + "type": "flags.3?Peer" + }, + { + "name": "count", + "type": "int" + } + ], + "type": "MessageReactor" + }, + { + "id": "-1798404822", + "predicate": "starsGiveawayOption", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "extended", + "type": "flags.0?true" + }, + { + "name": "default", + "type": "flags.1?true" + }, + { + "name": "stars", + "type": "long" + }, + { + "name": "yearly_boosts", + "type": "int" + }, + { + "name": "store_product", + "type": "flags.2?string" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "amount", + "type": "long" + }, + { + "name": "winners", + "type": "Vector" + } + ], + "type": "StarsGiveawayOption" + }, + { + "id": "1411605001", + "predicate": "starsGiveawayWinnersOption", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "default", + "type": "flags.0?true" + }, + { + "name": "users", + "type": "int" + }, + { + "name": "per_user_stars", + "type": "long" + } + ], + "type": "StarsGiveawayWinnersOption" + }, + { + "id": "825922887", + "predicate": "starGift", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "limited", + "type": "flags.0?true" + }, + { + "name": "sold_out", + "type": "flags.1?true" + }, + { + "name": "birthday", + "type": "flags.2?true" + }, + { + "name": "require_premium", + "type": "flags.7?true" + }, + { + "name": "limited_per_user", + "type": "flags.8?true" + }, + { + "name": "peer_color_available", + "type": "flags.10?true" + }, + { + "name": "auction", + "type": "flags.11?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "sticker", + "type": "Document" + }, + { + "name": "stars", + "type": "long" + }, + { + "name": "availability_remains", + "type": "flags.0?int" + }, + { + "name": "availability_total", + "type": "flags.0?int" + }, + { + "name": "availability_resale", + "type": "flags.4?long" + }, + { + "name": "convert_stars", + "type": "long" + }, + { + "name": "first_sale_date", + "type": "flags.1?int" + }, + { + "name": "last_sale_date", + "type": "flags.1?int" + }, + { + "name": "upgrade_stars", + "type": "flags.3?long" + }, + { + "name": "resell_min_stars", + "type": "flags.4?long" + }, + { + "name": "title", + "type": "flags.5?string" + }, + { + "name": "released_by", + "type": "flags.6?Peer" + }, + { + "name": "per_user_total", + "type": "flags.8?int" + }, + { + "name": "per_user_remains", + "type": "flags.8?int" + }, + { + "name": "locked_until_date", + "type": "flags.9?int" + }, + { + "name": "auction_slug", + "type": "flags.11?string" + }, + { + "name": "gifts_per_round", + "type": "flags.11?int" + }, + { + "name": "auction_start_date", + "type": "flags.11?int" + }, + { + "name": "upgrade_variants", + "type": "flags.12?int" + }, + { + "name": "background", + "type": "flags.13?StarGiftBackground" + } + ], + "type": "StarGift" + }, + { + "id": "-2047825459", + "predicate": "starGiftUnique", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "require_premium", + "type": "flags.6?true" + }, + { + "name": "resale_ton_only", + "type": "flags.7?true" + }, + { + "name": "theme_available", + "type": "flags.9?true" + }, + { + "name": "burned", + "type": "flags.14?true" + }, + { + "name": "crafted", + "type": "flags.15?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "gift_id", + "type": "long" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "slug", + "type": "string" + }, + { + "name": "num", + "type": "int" + }, + { + "name": "owner_id", + "type": "flags.0?Peer" + }, + { + "name": "owner_name", + "type": "flags.1?string" + }, + { + "name": "owner_address", + "type": "flags.2?string" + }, + { + "name": "attributes", + "type": "Vector" + }, + { + "name": "availability_issued", + "type": "int" + }, + { + "name": "availability_total", + "type": "int" + }, + { + "name": "gift_address", + "type": "flags.3?string" + }, + { + "name": "resell_amount", + "type": "flags.4?Vector" + }, + { + "name": "released_by", + "type": "flags.5?Peer" + }, + { + "name": "value_amount", + "type": "flags.8?long" + }, + { + "name": "value_currency", + "type": "flags.8?string" + }, + { + "name": "value_usd_amount", + "type": "flags.8?long" + }, + { + "name": "theme_peer", + "type": "flags.10?Peer" + }, + { + "name": "peer_color", + "type": "flags.11?PeerColor" + }, + { + "name": "host_id", + "type": "flags.12?Peer" + }, + { + "name": "offer_min_stars", + "type": "flags.13?int" + }, + { + "name": "craft_chance_permille", + "type": "flags.16?int" + } + ], + "type": "StarGift" + }, + { + "id": "-1551326360", + "predicate": "payments.starGiftsNotModified", + "params": [], + "type": "payments.StarGifts" + }, + { + "id": "785918357", + "predicate": "payments.starGifts", + "params": [ + { + "name": "hash", + "type": "int" + }, + { + "name": "gifts", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "payments.StarGifts" + }, + { + "id": "2030298073", + "predicate": "messageReportOption", + "params": [ + { + "name": "text", + "type": "string" + }, + { + "name": "option", + "type": "bytes" + } + ], + "type": "MessageReportOption" + }, + { + "id": "-253435722", + "predicate": "reportResultChooseOption", + "params": [ + { + "name": "title", + "type": "string" + }, + { + "name": "options", + "type": "Vector" + } + ], + "type": "ReportResult" + }, + { + "id": "1862904881", + "predicate": "reportResultAddComment", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "optional", + "type": "flags.0?true" + }, + { + "name": "option", + "type": "bytes" + } + ], + "type": "ReportResult" + }, + { + "id": "-1917633461", + "predicate": "reportResultReported", + "params": [], + "type": "ReportResult" + }, + { + "id": "-1899035375", + "predicate": "messages.botPreparedInlineMessage", + "params": [ + { + "name": "id", + "type": "string" + }, + { + "name": "expire_date", + "type": "int" + } + ], + "type": "messages.BotPreparedInlineMessage" + }, + { + "id": "-11046771", + "predicate": "messages.preparedInlineMessage", + "params": [ + { + "name": "query_id", + "type": "long" + }, + { + "name": "result", + "type": "BotInlineResult" + }, + { + "name": "peer_types", + "type": "Vector" + }, + { + "name": "cache_time", + "type": "int" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.PreparedInlineMessage" + }, + { + "id": "-912582320", + "predicate": "botAppSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "placeholder_path", + "type": "flags.0?bytes" + }, + { + "name": "background_color", + "type": "flags.1?int" + }, + { + "name": "background_dark_color", + "type": "flags.2?int" + }, + { + "name": "header_color", + "type": "flags.3?int" + }, + { + "name": "header_dark_color", + "type": "flags.4?int" + } + ], + "type": "BotAppSettings" + }, + { + "id": "-586389774", + "predicate": "starRefProgram", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "bot_id", + "type": "long" + }, + { + "name": "commission_permille", + "type": "int" + }, + { + "name": "duration_months", + "type": "flags.0?int" + }, + { + "name": "end_date", + "type": "flags.1?int" + }, + { + "name": "daily_revenue_per_user", + "type": "flags.2?StarsAmount" + } + ], + "type": "StarRefProgram" + }, + { + "id": "429997937", + "predicate": "connectedBotStarRef", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "revoked", + "type": "flags.1?true" + }, + { + "name": "url", + "type": "string" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "bot_id", + "type": "long" + }, + { + "name": "commission_permille", + "type": "int" + }, + { + "name": "duration_months", + "type": "flags.0?int" + }, + { + "name": "participants", + "type": "long" + }, + { + "name": "revenue", + "type": "long" + } + ], + "type": "ConnectedBotStarRef" + }, + { + "id": "-1730811363", + "predicate": "payments.connectedStarRefBots", + "params": [ + { + "name": "count", + "type": "int" + }, + { + "name": "connected_bots", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "payments.ConnectedStarRefBots" + }, + { + "id": "-1261053863", + "predicate": "payments.suggestedStarRefBots", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "suggested_bots", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "next_offset", + "type": "flags.0?string" + } + ], + "type": "payments.SuggestedStarRefBots" + }, + { + "id": "-1145654109", + "predicate": "starsAmount", + "params": [ + { + "name": "amount", + "type": "long" + }, + { + "name": "nanos", + "type": "int" + } + ], + "type": "StarsAmount" + }, + { + "id": "1957618656", + "predicate": "starsTonAmount", + "params": [ + { + "name": "amount", + "type": "long" + } + ], + "type": "StarsAmount" + }, + { + "id": "1611711796", + "predicate": "messages.foundStickersNotModified", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "next_offset", + "type": "flags.0?int" + } + ], + "type": "messages.FoundStickers" + }, + { + "id": "-2100698480", + "predicate": "messages.foundStickers", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "next_offset", + "type": "flags.0?int" + }, + { + "name": "hash", + "type": "long" + }, + { + "name": "stickers", + "type": "Vector" + } + ], + "type": "messages.FoundStickers" + }, + { + "id": "-1328716265", + "predicate": "botVerifierSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "can_modify_custom_description", + "type": "flags.1?true" + }, + { + "name": "icon", + "type": "long" + }, + { + "name": "company", + "type": "string" + }, + { + "name": "custom_description", + "type": "flags.0?string" + } + ], + "type": "BotVerifierSettings" + }, + { + "id": "-113453988", + "predicate": "botVerification", + "params": [ + { + "name": "bot_id", + "type": "long" + }, + { + "name": "icon", + "type": "long" + }, + { + "name": "description", + "type": "string" + } + ], + "type": "BotVerification" + }, + { + "id": "1448235490", + "predicate": "starGiftAttributeModel", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "crafted", + "type": "flags.0?true" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "document", + "type": "Document" + }, + { + "name": "rarity", + "type": "StarGiftAttributeRarity" + } + ], + "type": "StarGiftAttribute" + }, + { + "id": "1315997162", + "predicate": "starGiftAttributePattern", + "params": [ + { + "name": "name", + "type": "string" + }, + { + "name": "document", + "type": "Document" + }, + { + "name": "rarity", + "type": "StarGiftAttributeRarity" + } + ], + "type": "StarGiftAttribute" + }, + { + "id": "-1624963868", + "predicate": "starGiftAttributeBackdrop", + "params": [ + { + "name": "name", + "type": "string" + }, + { + "name": "backdrop_id", + "type": "int" + }, + { + "name": "center_color", + "type": "int" + }, + { + "name": "edge_color", + "type": "int" + }, + { + "name": "pattern_color", + "type": "int" + }, + { + "name": "text_color", + "type": "int" + }, + { + "name": "rarity", + "type": "StarGiftAttributeRarity" + } + ], + "type": "StarGiftAttribute" + }, + { + "id": "-524291476", + "predicate": "starGiftAttributeOriginalDetails", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "sender_id", + "type": "flags.0?Peer" + }, + { + "name": "recipient_id", + "type": "Peer" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "message", + "type": "flags.1?TextWithEntities" + } + ], + "type": "StarGiftAttribute" + }, + { + "id": "1038213101", + "predicate": "payments.starGiftUpgradePreview", + "params": [ + { + "name": "sample_attributes", + "type": "Vector" + }, + { + "name": "prices", + "type": "Vector" + }, + { + "name": "next_prices", + "type": "Vector" + } + ], + "type": "payments.StarGiftUpgradePreview" + }, + { + "id": "1658259128", + "predicate": "users.users", + "params": [ + { + "name": "users", + "type": "Vector" + } + ], + "type": "users.Users" + }, + { + "id": "828000628", + "predicate": "users.usersSlice", + "params": [ + { + "name": "count", + "type": "int" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "users.Users" + }, + { + "id": "1097619176", + "predicate": "payments.uniqueStarGift", + "params": [ + { + "name": "gift", + "type": "StarGift" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "payments.UniqueStarGift" + }, + { + "id": "-1936029524", + "predicate": "messages.webPagePreview", + "params": [ + { + "name": "media", + "type": "MessageMedia" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.WebPagePreview" + }, + { + "id": "1105150972", + "predicate": "savedStarGift", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "name_hidden", + "type": "flags.0?true" + }, + { + "name": "unsaved", + "type": "flags.5?true" + }, + { + "name": "refunded", + "type": "flags.9?true" + }, + { + "name": "can_upgrade", + "type": "flags.10?true" + }, + { + "name": "pinned_to_top", + "type": "flags.12?true" + }, + { + "name": "upgrade_separate", + "type": "flags.17?true" + }, + { + "name": "from_id", + "type": "flags.1?Peer" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "gift", + "type": "StarGift" + }, + { + "name": "message", + "type": "flags.2?TextWithEntities" + }, + { + "name": "msg_id", + "type": "flags.3?int" + }, + { + "name": "saved_id", + "type": "flags.11?long" + }, + { + "name": "convert_stars", + "type": "flags.4?long" + }, + { + "name": "upgrade_stars", + "type": "flags.6?long" + }, + { + "name": "can_export_at", + "type": "flags.7?int" + }, + { + "name": "transfer_stars", + "type": "flags.8?long" + }, + { + "name": "can_transfer_at", + "type": "flags.13?int" + }, + { + "name": "can_resell_at", + "type": "flags.14?int" + }, + { + "name": "collection_id", + "type": "flags.15?Vector" + }, + { + "name": "prepaid_upgrade_hash", + "type": "flags.16?string" + }, + { + "name": "drop_original_details_stars", + "type": "flags.18?long" + }, + { + "name": "gift_num", + "type": "flags.19?int" + }, + { + "name": "can_craft_at", + "type": "flags.20?int" + } + ], + "type": "SavedStarGift" + }, + { + "id": "-1779201615", + "predicate": "payments.savedStarGifts", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "chat_notifications_enabled", + "type": "flags.1?Bool" + }, + { + "name": "gifts", + "type": "Vector" + }, + { + "name": "next_offset", + "type": "flags.0?string" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "payments.SavedStarGifts" + }, + { + "id": "1764202389", + "predicate": "inputSavedStarGiftUser", + "params": [ + { + "name": "msg_id", + "type": "int" + } + ], + "type": "InputSavedStarGift" + }, + { + "id": "-251549057", + "predicate": "inputSavedStarGiftChat", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "saved_id", + "type": "long" + } + ], + "type": "InputSavedStarGift" + }, + { + "id": "545636920", + "predicate": "inputSavedStarGiftSlug", + "params": [ + { + "name": "slug", + "type": "string" + } + ], + "type": "InputSavedStarGift" + }, + { + "id": "-2069218660", + "predicate": "payments.starGiftWithdrawalUrl", + "params": [ + { + "name": "url", + "type": "string" + } + ], + "type": "payments.StarGiftWithdrawalUrl" + }, + { + "id": "543872158", + "predicate": "paidReactionPrivacyDefault", + "params": [], + "type": "PaidReactionPrivacy" + }, + { + "id": "520887001", + "predicate": "paidReactionPrivacyAnonymous", + "params": [], + "type": "PaidReactionPrivacy" + }, + { + "id": "-596837136", + "predicate": "paidReactionPrivacyPeer", + "params": [ + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "PaidReactionPrivacy" + }, + { + "id": "504403720", + "predicate": "account.paidMessagesRevenue", + "params": [ + { + "name": "stars_amount", + "type": "long" + } + ], + "type": "account.PaidMessagesRevenue" + }, + { + "id": "84580409", + "predicate": "requirementToContactEmpty", + "params": [], + "type": "RequirementToContact" + }, + { + "id": "-444472087", + "predicate": "requirementToContactPremium", + "params": [], + "type": "RequirementToContact" + }, + { + "id": "-1258914157", + "predicate": "requirementToContactPaidMessages", + "params": [ + { + "name": "stars_amount", + "type": "long" + } + ], + "type": "RequirementToContact" + }, + { + "id": "-1604170505", + "predicate": "businessBotRights", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "reply", + "type": "flags.0?true" + }, + { + "name": "read_messages", + "type": "flags.1?true" + }, + { + "name": "delete_sent_messages", + "type": "flags.2?true" + }, + { + "name": "delete_received_messages", + "type": "flags.3?true" + }, + { + "name": "edit_name", + "type": "flags.4?true" + }, + { + "name": "edit_bio", + "type": "flags.5?true" + }, + { + "name": "edit_profile_photo", + "type": "flags.6?true" + }, + { + "name": "edit_username", + "type": "flags.7?true" + }, + { + "name": "view_gifts", + "type": "flags.8?true" + }, + { + "name": "sell_gifts", + "type": "flags.9?true" + }, + { + "name": "change_gift_settings", + "type": "flags.10?true" + }, + { + "name": "transfer_and_upgrade_gifts", + "type": "flags.11?true" + }, + { + "name": "transfer_stars", + "type": "flags.12?true" + }, + { + "name": "manage_stories", + "type": "flags.13?true" + } + ], + "type": "BusinessBotRights" + }, + { + "id": "1911715524", + "predicate": "disallowedGiftsSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "disallow_unlimited_stargifts", + "type": "flags.0?true" + }, + { + "name": "disallow_limited_stargifts", + "type": "flags.1?true" + }, + { + "name": "disallow_unique_stargifts", + "type": "flags.2?true" + }, + { + "name": "disallow_premium_gifts", + "type": "flags.3?true" + }, + { + "name": "disallow_stargifts_from_channels", + "type": "flags.4?true" + } + ], + "type": "DisallowedGiftsSettings" + }, + { + "id": "-963180333", + "predicate": "sponsoredPeer", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "random_id", + "type": "bytes" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "sponsor_info", + "type": "flags.0?string" + }, + { + "name": "additional_info", + "type": "flags.1?string" + } + ], + "type": "SponsoredPeer" + }, + { + "id": "-365775695", + "predicate": "contacts.sponsoredPeersEmpty", + "params": [], + "type": "contacts.SponsoredPeers" + }, + { + "id": "-352114556", + "predicate": "contacts.sponsoredPeers", + "params": [ + { + "name": "peers", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "contacts.SponsoredPeers" + }, + { + "id": "1219145276", + "predicate": "starGiftAttributeIdModel", + "params": [ + { + "name": "document_id", + "type": "long" + } + ], + "type": "StarGiftAttributeId" + }, + { + "id": "1242965043", + "predicate": "starGiftAttributeIdPattern", + "params": [ + { + "name": "document_id", + "type": "long" + } + ], + "type": "StarGiftAttributeId" + }, + { + "id": "520210263", + "predicate": "starGiftAttributeIdBackdrop", + "params": [ + { + "name": "backdrop_id", + "type": "int" + } + ], + "type": "StarGiftAttributeId" + }, + { + "id": "783398488", + "predicate": "starGiftAttributeCounter", + "params": [ + { + "name": "attribute", + "type": "StarGiftAttributeId" + }, + { + "name": "count", + "type": "int" + } + ], + "type": "StarGiftAttributeCounter" + }, + { + "id": "-1803939105", + "predicate": "payments.resaleStarGifts", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "gifts", + "type": "Vector" + }, + { + "name": "next_offset", + "type": "flags.0?string" + }, + { + "name": "attributes", + "type": "flags.1?Vector" + }, + { + "name": "attributes_hash", + "type": "flags.1?long" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "counters", + "type": "flags.2?Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "payments.ResaleStarGifts" + }, + { + "id": "-1014513586", + "predicate": "stories.canSendStoryCount", + "params": [ + { + "name": "count_remains", + "type": "int" + } + ], + "type": "stories.CanSendStoryCount" + }, + { + "id": "-404214254", + "predicate": "pendingSuggestion", + "params": [ + { + "name": "suggestion", + "type": "string" + }, + { + "name": "title", + "type": "TextWithEntities" + }, + { + "name": "description", + "type": "TextWithEntities" + }, + { + "name": "url", + "type": "string" + } + ], + "type": "PendingSuggestion" + }, + { + "id": "-878074577", + "predicate": "todoItem", + "params": [ + { + "name": "id", + "type": "int" + }, + { + "name": "title", + "type": "TextWithEntities" + } + ], + "type": "TodoItem" + }, + { + "id": "1236871718", + "predicate": "todoList", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "others_can_append", + "type": "flags.0?true" + }, + { + "name": "others_can_complete", + "type": "flags.1?true" + }, + { + "name": "title", + "type": "TextWithEntities" + }, + { + "name": "list", + "type": "Vector" + } + ], + "type": "TodoList" + }, + { + "id": "572241380", + "predicate": "todoCompletion", + "params": [ + { + "name": "id", + "type": "int" + }, + { + "name": "completed_by", + "type": "Peer" + }, + { + "name": "date", + "type": "int" + } + ], + "type": "TodoCompletion" + }, + { + "id": "244201445", + "predicate": "suggestedPost", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "accepted", + "type": "flags.1?true" + }, + { + "name": "rejected", + "type": "flags.2?true" + }, + { + "name": "price", + "type": "flags.3?StarsAmount" + }, + { + "name": "schedule_date", + "type": "flags.0?int" + } + ], + "type": "SuggestedPost" + }, + { + "id": "453922567", + "predicate": "starsRating", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "level", + "type": "int" + }, + { + "name": "current_level_stars", + "type": "long" + }, + { + "name": "stars", + "type": "long" + }, + { + "name": "next_level_stars", + "type": "flags.0?long" + } + ], + "type": "StarsRating" + }, + { + "id": "-1653926992", + "predicate": "starGiftCollection", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "collection_id", + "type": "int" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "icon", + "type": "flags.0?Document" + }, + { + "name": "gifts_count", + "type": "int" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "StarGiftCollection" + }, + { + "id": "-1598402793", + "predicate": "payments.starGiftCollectionsNotModified", + "params": [], + "type": "payments.StarGiftCollections" + }, + { + "id": "-1977011469", + "predicate": "payments.starGiftCollections", + "params": [ + { + "name": "collections", + "type": "Vector" + } + ], + "type": "payments.StarGiftCollections" + }, + { + "id": "-1826262950", + "predicate": "storyAlbum", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "album_id", + "type": "int" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "icon_photo", + "type": "flags.0?Photo" + }, + { + "name": "icon_video", + "type": "flags.1?Document" + } + ], + "type": "StoryAlbum" + }, + { + "id": "1448008427", + "predicate": "stories.albumsNotModified", + "params": [], + "type": "stories.Albums" + }, + { + "id": "-1013417414", + "predicate": "stories.albums", + "params": [ + { + "name": "hash", + "type": "long" + }, + { + "name": "albums", + "type": "Vector" + } + ], + "type": "stories.Albums" + }, + { + "id": "1040931690", + "predicate": "searchPostsFlood", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "query_is_free", + "type": "flags.0?true" + }, + { + "name": "total_daily", + "type": "int" + }, + { + "name": "remains", + "type": "int" + }, + { + "name": "wait_till", + "type": "flags.1?int" + }, + { + "name": "stars_amount", + "type": "long" + } + ], + "type": "SearchPostsFlood" + }, + { + "id": "1362093126", + "predicate": "payments.uniqueStarGiftValueInfo", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "last_sale_on_fragment", + "type": "flags.1?true" + }, + { + "name": "value_is_average", + "type": "flags.6?true" + }, + { + "name": "currency", + "type": "string" + }, + { + "name": "value", + "type": "long" + }, + { + "name": "initial_sale_date", + "type": "int" + }, + { + "name": "initial_sale_stars", + "type": "long" + }, + { + "name": "initial_sale_price", + "type": "long" + }, + { + "name": "last_sale_date", + "type": "flags.0?int" + }, + { + "name": "last_sale_price", + "type": "flags.0?long" + }, + { + "name": "floor_price", + "type": "flags.2?long" + }, + { + "name": "average_price", + "type": "flags.3?long" + }, + { + "name": "listed_count", + "type": "flags.4?int" + }, + { + "name": "fragment_listed_count", + "type": "flags.5?int" + }, + { + "name": "fragment_listed_url", + "type": "flags.5?string" + } + ], + "type": "payments.UniqueStarGiftValueInfo" + }, + { + "id": "-1181952362", + "predicate": "profileTabPosts", + "params": [], + "type": "ProfileTab" + }, + { + "id": "1296815210", + "predicate": "profileTabGifts", + "params": [], + "type": "ProfileTab" + }, + { + "id": "1925597525", + "predicate": "profileTabMedia", + "params": [], + "type": "ProfileTab" + }, + { + "id": "-1422681088", + "predicate": "profileTabFiles", + "params": [], + "type": "ProfileTab" + }, + { + "id": "-1624780178", + "predicate": "profileTabMusic", + "params": [], + "type": "ProfileTab" + }, + { + "id": "-461960914", + "predicate": "profileTabVoice", + "params": [], + "type": "ProfileTab" + }, + { + "id": "-748329831", + "predicate": "profileTabLinks", + "params": [], + "type": "ProfileTab" + }, + { + "id": "-1564412267", + "predicate": "profileTabGifs", + "params": [], + "type": "ProfileTab" + }, + { + "id": "-477656412", + "predicate": "users.savedMusicNotModified", + "params": [ + { + "name": "count", + "type": "int" + } + ], + "type": "users.SavedMusic" + }, + { + "id": "883094167", + "predicate": "users.savedMusic", + "params": [ + { + "name": "count", + "type": "int" + }, + { + "name": "documents", + "type": "Vector" + } + ], + "type": "users.SavedMusic" + }, + { + "id": "1338514798", + "predicate": "account.savedMusicIdsNotModified", + "params": [], + "type": "account.SavedMusicIds" + }, + { + "id": "-1718786506", + "predicate": "account.savedMusicIds", + "params": [ + { + "name": "ids", + "type": "Vector" + } + ], + "type": "account.SavedMusicIds" + }, + { + "id": "927967149", + "predicate": "payments.checkCanSendGiftResultOk", + "params": [], + "type": "payments.CheckCanSendGiftResult" + }, + { + "id": "-706379148", + "predicate": "payments.checkCanSendGiftResultFail", + "params": [ + { + "name": "reason", + "type": "TextWithEntities" + } + ], + "type": "payments.CheckCanSendGiftResult" + }, + { + "id": "-2094627709", + "predicate": "inputChatThemeEmpty", + "params": [], + "type": "InputChatTheme" + }, + { + "id": "-918689444", + "predicate": "inputChatTheme", + "params": [ + { + "name": "emoticon", + "type": "string" + } + ], + "type": "InputChatTheme" + }, + { + "id": "-2014978076", + "predicate": "inputChatThemeUniqueGift", + "params": [ + { + "name": "slug", + "type": "string" + } + ], + "type": "InputChatTheme" + }, + { + "id": "-1712704739", + "predicate": "starGiftUpgradePrice", + "params": [ + { + "name": "date", + "type": "int" + }, + { + "name": "upgrade_stars", + "type": "long" + } + ], + "type": "StarGiftUpgradePrice" + }, + { + "id": "445316222", + "predicate": "groupCallMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "from_admin", + "type": "flags.1?true" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "from_id", + "type": "Peer" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "message", + "type": "TextWithEntities" + }, + { + "name": "paid_message_stars", + "type": "flags.0?long" + } + ], + "type": "GroupCallMessage" + }, + { + "id": "-297595771", + "predicate": "groupCallDonor", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "top", + "type": "flags.0?true" + }, + { + "name": "my", + "type": "flags.1?true" + }, + { + "name": "peer_id", + "type": "flags.3?Peer" + }, + { + "name": "stars", + "type": "long" + } + ], + "type": "GroupCallDonor" + }, + { + "id": "-1658995418", + "predicate": "phone.groupCallStars", + "params": [ + { + "name": "total_stars", + "type": "long" + }, + { + "name": "top_donors", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "phone.GroupCallStars" + }, + { + "id": "1897752877", + "predicate": "recentStory", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "live", + "type": "flags.0?true" + }, + { + "name": "max_id", + "type": "flags.1?int" + } + ], + "type": "RecentStory" + }, + { + "id": "822231244", + "predicate": "auctionBidLevel", + "params": [ + { + "name": "pos", + "type": "int" + }, + { + "name": "amount", + "type": "long" + }, + { + "name": "date", + "type": "int" + } + ], + "type": "AuctionBidLevel" + }, + { + "id": "-30197422", + "predicate": "starGiftAuctionStateNotModified", + "params": [], + "type": "StarGiftAuctionState" + }, + { + "id": "1998212710", + "predicate": "starGiftAuctionState", + "params": [ + { + "name": "version", + "type": "int" + }, + { + "name": "start_date", + "type": "int" + }, + { + "name": "end_date", + "type": "int" + }, + { + "name": "min_bid_amount", + "type": "long" + }, + { + "name": "bid_levels", + "type": "Vector" + }, + { + "name": "top_bidders", + "type": "Vector" + }, + { + "name": "next_round_at", + "type": "int" + }, + { + "name": "last_gift_num", + "type": "int" + }, + { + "name": "gifts_left", + "type": "int" + }, + { + "name": "current_round", + "type": "int" + }, + { + "name": "total_rounds", + "type": "int" + }, + { + "name": "rounds", + "type": "Vector" + } + ], + "type": "StarGiftAuctionState" + }, + { + "id": "-1758614593", + "predicate": "starGiftAuctionStateFinished", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "start_date", + "type": "int" + }, + { + "name": "end_date", + "type": "int" + }, + { + "name": "average_price", + "type": "long" + }, + { + "name": "listed_count", + "type": "flags.0?int" + }, + { + "name": "fragment_listed_count", + "type": "flags.1?int" + }, + { + "name": "fragment_listed_url", + "type": "flags.1?string" + } + ], + "type": "StarGiftAuctionState" + }, + { + "id": "787403204", + "predicate": "starGiftAuctionUserState", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "returned", + "type": "flags.1?true" + }, + { + "name": "bid_amount", + "type": "flags.0?long" + }, + { + "name": "bid_date", + "type": "flags.0?int" + }, + { + "name": "min_bid_amount", + "type": "flags.0?long" + }, + { + "name": "bid_peer", + "type": "flags.0?Peer" + }, + { + "name": "acquired_count", + "type": "int" + } + ], + "type": "StarGiftAuctionUserState" + }, + { + "id": "1798960364", + "predicate": "payments.starGiftAuctionState", + "params": [ + { + "name": "gift", + "type": "StarGift" + }, + { + "name": "state", + "type": "StarGiftAuctionState" + }, + { + "name": "user_state", + "type": "StarGiftAuctionUserState" + }, + { + "name": "timeout", + "type": "int" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + } + ], + "type": "payments.StarGiftAuctionState" + }, + { + "id": "1118831432", + "predicate": "starGiftAuctionAcquiredGift", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "name_hidden", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "Peer" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "bid_amount", + "type": "long" + }, + { + "name": "round", + "type": "int" + }, + { + "name": "pos", + "type": "int" + }, + { + "name": "message", + "type": "flags.1?TextWithEntities" + }, + { + "name": "gift_num", + "type": "flags.2?int" + } + ], + "type": "StarGiftAuctionAcquiredGift" + }, + { + "id": "2103169520", + "predicate": "payments.starGiftAuctionAcquiredGifts", + "params": [ + { + "name": "gifts", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + } + ], + "type": "payments.StarGiftAuctionAcquiredGifts" + }, + { + "id": "-753154979", + "predicate": "starGiftActiveAuctionState", + "params": [ + { + "name": "gift", + "type": "StarGift" + }, + { + "name": "state", + "type": "StarGiftAuctionState" + }, + { + "name": "user_state", + "type": "StarGiftAuctionUserState" + } + ], + "type": "StarGiftActiveAuctionState" + }, + { + "id": "-617358640", + "predicate": "payments.starGiftActiveAuctionsNotModified", + "params": [], + "type": "payments.StarGiftActiveAuctions" + }, + { + "id": "-1359565892", + "predicate": "payments.starGiftActiveAuctions", + "params": [ + { + "name": "auctions", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "chats", + "type": "Vector" + } + ], + "type": "payments.StarGiftActiveAuctions" + }, + { + "id": "48327832", + "predicate": "inputStarGiftAuction", + "params": [ + { + "name": "gift_id", + "type": "long" + } + ], + "type": "InputStarGiftAuction" + }, + { + "id": "2058715912", + "predicate": "inputStarGiftAuctionSlug", + "params": [ + { + "name": "slug", + "type": "string" + } + ], + "type": "InputStarGiftAuction" + }, + { + "id": "-1738457409", + "predicate": "passkey", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "id", + "type": "string" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "software_emoji_id", + "type": "flags.0?long" + }, + { + "name": "last_usage_date", + "type": "flags.1?int" + } + ], + "type": "Passkey" + }, + { + "id": "-119494116", + "predicate": "account.passkeys", + "params": [ + { + "name": "passkeys", + "type": "Vector" + } + ], + "type": "account.Passkeys" + }, + { + "id": "-513057567", + "predicate": "account.passkeyRegistrationOptions", + "params": [ + { + "name": "options", + "type": "DataJSON" + } + ], + "type": "account.PasskeyRegistrationOptions" + }, + { + "id": "-503089271", + "predicate": "auth.passkeyLoginOptions", + "params": [ + { + "name": "options", + "type": "DataJSON" + } + ], + "type": "auth.PasskeyLoginOptions" + }, + { + "id": "1046713180", + "predicate": "inputPasskeyResponseRegister", + "params": [ + { + "name": "client_data", + "type": "DataJSON" + }, + { + "name": "attestation_data", + "type": "bytes" + } + ], + "type": "InputPasskeyResponse" + }, + { + "id": "-1021329078", + "predicate": "inputPasskeyResponseLogin", + "params": [ + { + "name": "client_data", + "type": "DataJSON" + }, + { + "name": "authenticator_data", + "type": "bytes" + }, + { + "name": "signature", + "type": "bytes" + }, + { + "name": "user_handle", + "type": "string" + } + ], + "type": "InputPasskeyResponse" + }, + { + "id": "1009235855", + "predicate": "inputPasskeyCredentialPublicKey", + "params": [ + { + "name": "id", + "type": "string" + }, + { + "name": "raw_id", + "type": "string" + }, + { + "name": "response", + "type": "InputPasskeyResponse" + } + ], + "type": "InputPasskeyCredential" + }, + { + "id": "1528613672", + "predicate": "inputPasskeyCredentialFirebasePNV", + "params": [ + { + "name": "pnv_token", + "type": "string" + } + ], + "type": "InputPasskeyCredential" + }, + { + "id": "-1342872680", + "predicate": "starGiftBackground", + "params": [ + { + "name": "center_color", + "type": "int" + }, + { + "name": "edge_color", + "type": "int" + }, + { + "name": "text_color", + "type": "int" + } + ], + "type": "StarGiftBackground" + }, + { + "id": "984483112", + "predicate": "starGiftAuctionRound", + "params": [ + { + "name": "num", + "type": "int" + }, + { + "name": "duration", + "type": "int" + } + ], + "type": "StarGiftAuctionRound" + }, + { + "id": "178266597", + "predicate": "starGiftAuctionRoundExtendable", + "params": [ + { + "name": "num", + "type": "int" + }, + { + "name": "duration", + "type": "int" + }, + { + "name": "extend_top", + "type": "int" + }, + { + "name": "extend_window", + "type": "int" + } + ], + "type": "StarGiftAuctionRound" + }, + { + "id": "1187439471", + "predicate": "payments.starGiftUpgradeAttributes", + "params": [ + { + "name": "attributes", + "type": "Vector" + } + ], + "type": "payments.StarGiftUpgradeAttributes" + }, + { + "id": "-634726841", + "predicate": "messages.emojiGameOutcome", + "params": [ + { + "name": "seed", + "type": "bytes" + }, + { + "name": "stake_ton_amount", + "type": "long" + }, + { + "name": "ton_amount", + "type": "long" + } + ], + "type": "messages.EmojiGameOutcome" + }, + { + "id": "1508266805", + "predicate": "messages.emojiGameUnavailable", + "params": [], + "type": "messages.EmojiGameInfo" + }, + { + "id": "1155883043", + "predicate": "messages.emojiGameDiceInfo", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "game_hash", + "type": "string" + }, + { + "name": "prev_stake", + "type": "long" + }, + { + "name": "current_streak", + "type": "int" + }, + { + "name": "params", + "type": "Vector" + }, + { + "name": "plays_left", + "type": "flags.0?int" + } + ], + "type": "messages.EmojiGameInfo" + }, + { + "id": "910391095", + "predicate": "starGiftAttributeRarity", + "params": [ + { + "name": "permille", + "type": "int" + } + ], + "type": "StarGiftAttributeRarity" + }, + { + "id": "-607231095", + "predicate": "starGiftAttributeRarityUncommon", + "params": [], + "type": "StarGiftAttributeRarity" + }, + { + "id": "-259174037", + "predicate": "starGiftAttributeRarityRare", + "params": [], + "type": "StarGiftAttributeRarity" + }, + { + "id": "2029777832", + "predicate": "starGiftAttributeRarityEpic", + "params": [], + "type": "StarGiftAttributeRarity" + }, + { + "id": "-822614104", + "predicate": "starGiftAttributeRarityLegendary", + "params": [], + "type": "StarGiftAttributeRarity" + }, + { + "id": "1339896880", + "predicate": "keyboardButtonStyle", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "bg_primary", + "type": "flags.0?true" + }, + { + "name": "bg_danger", + "type": "flags.1?true" + }, + { + "name": "bg_success", + "type": "flags.2?true" + }, + { + "name": "icon", + "type": "flags.3?long" + } + ], + "type": "KeyboardButtonStyle" + }, + { + "id": "1076577429", + "predicate": "inputMessageReadMetric", + "params": [ + { + "name": "msg_id", + "type": "int" + }, + { + "name": "view_id", + "type": "long" + }, + { + "name": "time_in_view_ms", + "type": "int" + }, + { + "name": "active_time_in_view_ms", + "type": "int" + }, + { + "name": "height_to_viewport_ratio_permille", + "type": "int" + }, + { + "name": "seen_range_ratio_permille", + "type": "int" + } + ], + "type": "InputMessageReadMetric" + }, + { + "id": "1012971041", + "predicate": "bots.exportedBotToken", + "params": [ + { + "name": "token", + "type": "string" + } + ], + "type": "bots.ExportedBotToken" + }, + { + "id": "-247743273", + "predicate": "bots.requestedButton", + "params": [ + { + "name": "webapp_req_id", + "type": "string" + } + ], + "type": "bots.RequestedButton" + }, + { + "id": "-1864913414", + "predicate": "messages.composedMessageWithAI", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "result_text", + "type": "TextWithEntities" + }, + { + "name": "diff_text", + "type": "flags.0?TextWithEntities" + } + ], + "type": "messages.ComposedMessageWithAI" + }, + { + "id": "697941741", + "predicate": "stats.pollStats", + "params": [ + { + "name": "votes_graph", + "type": "StatsGraph" + } + ], + "type": "stats.PollStats" + }, + { + "id": "535407039", + "predicate": "inputAiComposeToneDefault", + "params": [ + { + "name": "tone", + "type": "string" + } + ], + "type": "InputAiComposeTone" + }, + { + "id": "125026432", + "predicate": "inputAiComposeToneID", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + } + ], + "type": "InputAiComposeTone" + }, + { + "id": "530584407", + "predicate": "inputAiComposeToneSlug", + "params": [ + { + "name": "slug", + "type": "string" + } + ], + "type": "InputAiComposeTone" + }, + { + "id": "-805945687", + "predicate": "aiComposeTone", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "creator", + "type": "flags.0?true" + }, + { + "name": "id", + "type": "long" + }, + { + "name": "access_hash", + "type": "long" + }, + { + "name": "slug", + "type": "string" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "emoji_id", + "type": "flags.1?long" + }, + { + "name": "prompt", + "type": "flags.4?string" + }, + { + "name": "installs_count", + "type": "flags.2?int" + }, + { + "name": "author_id", + "type": "flags.3?long" + }, + { + "name": "example_english", + "type": "flags.5?AiComposeToneExample" + } + ], + "type": "AiComposeTone" + }, + { + "id": "-1683135468", + "predicate": "aiComposeToneDefault", + "params": [ + { + "name": "tone", + "type": "string" + }, + { + "name": "emoji_id", + "type": "long" + }, + { + "name": "title", + "type": "string" + } + ], + "type": "AiComposeTone" + }, + { + "id": "-1040948989", + "predicate": "aicompose.tonesNotModified", + "params": [], + "type": "aicompose.Tones" + }, + { + "id": "1822232318", + "predicate": "aicompose.tones", + "params": [ + { + "name": "hash", + "type": "long" + }, + { + "name": "tones", + "type": "Vector" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "aicompose.Tones" + }, + { + "id": "-237623060", + "predicate": "aiComposeToneExample", + "params": [ + { + "name": "from", + "type": "TextWithEntities" + }, + { + "name": "to", + "type": "TextWithEntities" + } + ], + "type": "AiComposeToneExample" + }, + { + "id": "-585121901", + "predicate": "bots.accessSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "restricted", + "type": "flags.0?true" + }, + { + "name": "add_users", + "type": "flags.1?Vector" + } + ], + "type": "bots.AccessSettings" + } + ], + "methods": [ + { + "id": "-878758099", + "method": "invokeAfterMsg", + "params": [ + { + "name": "msg_id", + "type": "long" + }, + { + "name": "query", + "type": "!X" + } + ], + "type": "X" + }, + { + "id": "1036301552", + "method": "invokeAfterMsgs", + "params": [ + { + "name": "msg_ids", + "type": "Vector" + }, + { + "name": "query", + "type": "!X" + } + ], + "type": "X" + }, + { + "id": "-1043505495", + "method": "initConnection", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "api_id", + "type": "int" + }, + { + "name": "device_model", + "type": "string" + }, + { + "name": "system_version", + "type": "string" + }, + { + "name": "app_version", + "type": "string" + }, + { + "name": "system_lang_code", + "type": "string" + }, + { + "name": "lang_pack", + "type": "string" + }, + { + "name": "lang_code", + "type": "string" + }, + { + "name": "proxy", + "type": "flags.0?InputClientProxy" + }, + { + "name": "params", + "type": "flags.1?JSONValue" + }, + { + "name": "query", + "type": "!X" + } + ], + "type": "X" + }, + { + "id": "-627372787", + "method": "invokeWithLayer", + "params": [ + { + "name": "layer", + "type": "int" + }, + { + "name": "query", + "type": "!X" + } + ], + "type": "X" + }, + { + "id": "-1080796745", + "method": "invokeWithoutUpdates", + "params": [ + { + "name": "query", + "type": "!X" + } + ], + "type": "X" + }, + { + "id": "911373810", + "method": "invokeWithMessagesRange", + "params": [ + { + "name": "range", + "type": "MessageRange" + }, + { + "name": "query", + "type": "!X" + } + ], + "type": "X" + }, + { + "id": "-1398145746", + "method": "invokeWithTakeout", + "params": [ + { + "name": "takeout_id", + "type": "long" + }, + { + "name": "query", + "type": "!X" + } + ], + "type": "X" + }, + { + "id": "-584540274", + "method": "invokeWithBusinessConnection", + "params": [ + { + "name": "connection_id", + "type": "string" + }, + { + "name": "query", + "type": "!X" + } + ], + "type": "X" + }, + { + "id": "502868356", + "method": "invokeWithGooglePlayIntegrity", + "params": [ + { + "name": "nonce", + "type": "string" + }, + { + "name": "token", + "type": "string" + }, + { + "name": "query", + "type": "!X" + } + ], + "type": "X" + }, + { + "id": "229528824", + "method": "invokeWithApnsSecret", + "params": [ + { + "name": "nonce", + "type": "string" + }, + { + "name": "secret", + "type": "string" + }, + { + "name": "query", + "type": "!X" + } + ], + "type": "X" + }, + { + "id": "-1380249708", + "method": "invokeWithReCaptcha", + "params": [ + { + "name": "token", + "type": "string" + }, + { + "name": "query", + "type": "!X" + } + ], + "type": "X" + }, + { + "id": "-1502141361", + "method": "auth.sendCode", + "params": [ + { + "name": "phone_number", + "type": "string" + }, + { + "name": "api_id", + "type": "int" + }, + { + "name": "api_hash", + "type": "string" + }, + { + "name": "settings", + "type": "CodeSettings" + } + ], + "type": "auth.SentCode" + }, + { + "id": "-1429752041", + "method": "auth.signUp", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "no_joined_notifications", + "type": "flags.0?true" + }, + { + "name": "phone_number", + "type": "string" + }, + { + "name": "phone_code_hash", + "type": "string" + }, + { + "name": "first_name", + "type": "string" + }, + { + "name": "last_name", + "type": "string" + } + ], + "type": "auth.Authorization" + }, + { + "id": "-1923962543", + "method": "auth.signIn", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "phone_number", + "type": "string" + }, + { + "name": "phone_code_hash", + "type": "string" + }, + { + "name": "phone_code", + "type": "flags.0?string" + }, + { + "name": "email_verification", + "type": "flags.1?EmailVerification" + } + ], + "type": "auth.Authorization" + }, + { + "id": "1047706137", + "method": "auth.logOut", + "params": [], + "type": "auth.LoggedOut" + }, + { + "id": "-1616179942", + "method": "auth.resetAuthorizations", + "params": [], + "type": "Bool" + }, + { + "id": "-440401971", + "method": "auth.exportAuthorization", + "params": [ + { + "name": "dc_id", + "type": "int" + } + ], + "type": "auth.ExportedAuthorization" + }, + { + "id": "-1518699091", + "method": "auth.importAuthorization", + "params": [ + { + "name": "id", + "type": "long" + }, + { + "name": "bytes", + "type": "bytes" + } + ], + "type": "auth.Authorization" + }, + { + "id": "-841733627", + "method": "auth.bindTempAuthKey", + "params": [ + { + "name": "perm_auth_key_id", + "type": "long" + }, + { + "name": "nonce", + "type": "long" + }, + { + "name": "expires_at", + "type": "int" + }, + { + "name": "encrypted_message", + "type": "bytes" + } + ], + "type": "Bool" + }, + { + "id": "1738800940", + "method": "auth.importBotAuthorization", + "params": [ + { + "name": "flags", + "type": "int" + }, + { + "name": "api_id", + "type": "int" + }, + { + "name": "api_hash", + "type": "string" + }, + { + "name": "bot_auth_token", + "type": "string" + } + ], + "type": "auth.Authorization" + }, + { + "id": "-779399914", + "method": "auth.checkPassword", + "params": [ + { + "name": "password", + "type": "InputCheckPasswordSRP" + } + ], + "type": "auth.Authorization" + }, + { + "id": "-661144474", + "method": "auth.requestPasswordRecovery", + "params": [], + "type": "auth.PasswordRecovery" + }, + { + "id": "923364464", + "method": "auth.recoverPassword", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "code", + "type": "string" + }, + { + "name": "new_settings", + "type": "flags.0?account.PasswordInputSettings" + } + ], + "type": "auth.Authorization" + }, + { + "id": "-890997469", + "method": "auth.resendCode", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "phone_number", + "type": "string" + }, + { + "name": "phone_code_hash", + "type": "string" + }, + { + "name": "reason", + "type": "flags.0?string" + } + ], + "type": "auth.SentCode" + }, + { + "id": "520357240", + "method": "auth.cancelCode", + "params": [ + { + "name": "phone_number", + "type": "string" + }, + { + "name": "phone_code_hash", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "-1907842680", + "method": "auth.dropTempAuthKeys", + "params": [ + { + "name": "except_auth_keys", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "-1210022402", + "method": "auth.exportLoginToken", + "params": [ + { + "name": "api_id", + "type": "int" + }, + { + "name": "api_hash", + "type": "string" + }, + { + "name": "except_ids", + "type": "Vector" + } + ], + "type": "auth.LoginToken" + }, + { + "id": "-1783866140", + "method": "auth.importLoginToken", + "params": [ + { + "name": "token", + "type": "bytes" + } + ], + "type": "auth.LoginToken" + }, + { + "id": "-392909491", + "method": "auth.acceptLoginToken", + "params": [ + { + "name": "token", + "type": "bytes" + } + ], + "type": "Authorization" + }, + { + "id": "221691769", + "method": "auth.checkRecoveryPassword", + "params": [ + { + "name": "code", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "767062953", + "method": "auth.importWebTokenAuthorization", + "params": [ + { + "name": "api_id", + "type": "int" + }, + { + "name": "api_hash", + "type": "string" + }, + { + "name": "web_auth_token", + "type": "string" + } + ], + "type": "auth.Authorization" + }, + { + "id": "-1908857314", + "method": "auth.requestFirebaseSms", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "phone_number", + "type": "string" + }, + { + "name": "phone_code_hash", + "type": "string" + }, + { + "name": "safety_net_token", + "type": "flags.0?string" + }, + { + "name": "play_integrity_token", + "type": "flags.2?string" + }, + { + "name": "ios_push_secret", + "type": "flags.1?string" + } + ], + "type": "Bool" + }, + { + "id": "2123760019", + "method": "auth.resetLoginEmail", + "params": [ + { + "name": "phone_number", + "type": "string" + }, + { + "name": "phone_code_hash", + "type": "string" + } + ], + "type": "auth.SentCode" + }, + { + "id": "-878841866", + "method": "auth.reportMissingCode", + "params": [ + { + "name": "phone_number", + "type": "string" + }, + { + "name": "phone_code_hash", + "type": "string" + }, + { + "name": "mnc", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "1457889180", + "method": "auth.checkPaidAuth", + "params": [ + { + "name": "phone_number", + "type": "string" + }, + { + "name": "phone_code_hash", + "type": "string" + }, + { + "name": "form_id", + "type": "long" + } + ], + "type": "auth.SentCode" + }, + { + "id": "1368051895", + "method": "auth.initPasskeyLogin", + "params": [ + { + "name": "api_id", + "type": "int" + }, + { + "name": "api_hash", + "type": "string" + } + ], + "type": "auth.PasskeyLoginOptions" + }, + { + "id": "-1739084537", + "method": "auth.finishPasskeyLogin", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "credential", + "type": "InputPasskeyCredential" + }, + { + "name": "from_dc_id", + "type": "flags.0?int" + }, + { + "name": "from_auth_key_id", + "type": "flags.0?long" + } + ], + "type": "auth.Authorization" + }, + { + "id": "-326762118", + "method": "account.registerDevice", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "no_muted", + "type": "flags.0?true" + }, + { + "name": "token_type", + "type": "int" + }, + { + "name": "token", + "type": "string" + }, + { + "name": "app_sandbox", + "type": "Bool" + }, + { + "name": "secret", + "type": "bytes" + }, + { + "name": "other_uids", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "1779249670", + "method": "account.unregisterDevice", + "params": [ + { + "name": "token_type", + "type": "int" + }, + { + "name": "token", + "type": "string" + }, + { + "name": "other_uids", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "-2067899501", + "method": "account.updateNotifySettings", + "params": [ + { + "name": "peer", + "type": "InputNotifyPeer" + }, + { + "name": "settings", + "type": "InputPeerNotifySettings" + } + ], + "type": "Bool" + }, + { + "id": "313765169", + "method": "account.getNotifySettings", + "params": [ + { + "name": "peer", + "type": "InputNotifyPeer" + } + ], + "type": "PeerNotifySettings" + }, + { + "id": "-612493497", + "method": "account.resetNotifySettings", + "params": [], + "type": "Bool" + }, + { + "id": "2018596725", + "method": "account.updateProfile", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "first_name", + "type": "flags.0?string" + }, + { + "name": "last_name", + "type": "flags.1?string" + }, + { + "name": "about", + "type": "flags.2?string" + } + ], + "type": "User" + }, + { + "id": "1713919532", + "method": "account.updateStatus", + "params": [ + { + "name": "offline", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "127302966", + "method": "account.getWallPapers", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "account.WallPapers" + }, + { + "id": "-977650298", + "method": "account.reportPeer", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "reason", + "type": "ReportReason" + }, + { + "name": "message", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "655677548", + "method": "account.checkUsername", + "params": [ + { + "name": "username", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "1040964988", + "method": "account.updateUsername", + "params": [ + { + "name": "username", + "type": "string" + } + ], + "type": "User" + }, + { + "id": "-623130288", + "method": "account.getPrivacy", + "params": [ + { + "name": "key", + "type": "InputPrivacyKey" + } + ], + "type": "account.PrivacyRules" + }, + { + "id": "-906486552", + "method": "account.setPrivacy", + "params": [ + { + "name": "key", + "type": "InputPrivacyKey" + }, + { + "name": "rules", + "type": "Vector" + } + ], + "type": "account.PrivacyRules" + }, + { + "id": "-1564422284", + "method": "account.deleteAccount", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "reason", + "type": "string" + }, + { + "name": "password", + "type": "flags.0?InputCheckPasswordSRP" + } + ], + "type": "Bool" + }, + { + "id": "150761757", + "method": "account.getAccountTTL", + "params": [], + "type": "AccountDaysTTL" + }, + { + "id": "608323678", + "method": "account.setAccountTTL", + "params": [ + { + "name": "ttl", + "type": "AccountDaysTTL" + } + ], + "type": "Bool" + }, + { + "id": "-2108208411", + "method": "account.sendChangePhoneCode", + "params": [ + { + "name": "phone_number", + "type": "string" + }, + { + "name": "settings", + "type": "CodeSettings" + } + ], + "type": "auth.SentCode" + }, + { + "id": "1891839707", + "method": "account.changePhone", + "params": [ + { + "name": "phone_number", + "type": "string" + }, + { + "name": "phone_code_hash", + "type": "string" + }, + { + "name": "phone_code", + "type": "string" + } + ], + "type": "User" + }, + { + "id": "954152242", + "method": "account.updateDeviceLocked", + "params": [ + { + "name": "period", + "type": "int" + } + ], + "type": "Bool" + }, + { + "id": "-484392616", + "method": "account.getAuthorizations", + "params": [], + "type": "account.Authorizations" + }, + { + "id": "-545786948", + "method": "account.resetAuthorization", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "Bool" + }, + { + "id": "1418342645", + "method": "account.getPassword", + "params": [], + "type": "account.Password" + }, + { + "id": "-1663767815", + "method": "account.getPasswordSettings", + "params": [ + { + "name": "password", + "type": "InputCheckPasswordSRP" + } + ], + "type": "account.PasswordSettings" + }, + { + "id": "-1516564433", + "method": "account.updatePasswordSettings", + "params": [ + { + "name": "password", + "type": "InputCheckPasswordSRP" + }, + { + "name": "new_settings", + "type": "account.PasswordInputSettings" + } + ], + "type": "Bool" + }, + { + "id": "457157256", + "method": "account.sendConfirmPhoneCode", + "params": [ + { + "name": "hash", + "type": "string" + }, + { + "name": "settings", + "type": "CodeSettings" + } + ], + "type": "auth.SentCode" + }, + { + "id": "1596029123", + "method": "account.confirmPhone", + "params": [ + { + "name": "phone_code_hash", + "type": "string" + }, + { + "name": "phone_code", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "1151208273", + "method": "account.getTmpPassword", + "params": [ + { + "name": "password", + "type": "InputCheckPasswordSRP" + }, + { + "name": "period", + "type": "int" + } + ], + "type": "account.TmpPassword" + }, + { + "id": "405695855", + "method": "account.getWebAuthorizations", + "params": [], + "type": "account.WebAuthorizations" + }, + { + "id": "755087855", + "method": "account.resetWebAuthorization", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "Bool" + }, + { + "id": "1747789204", + "method": "account.resetWebAuthorizations", + "params": [], + "type": "Bool" + }, + { + "id": "-1299661699", + "method": "account.getAllSecureValues", + "params": [], + "type": "Vector" + }, + { + "id": "1936088002", + "method": "account.getSecureValue", + "params": [ + { + "name": "types", + "type": "Vector" + } + ], + "type": "Vector" + }, + { + "id": "-1986010339", + "method": "account.saveSecureValue", + "params": [ + { + "name": "value", + "type": "InputSecureValue" + }, + { + "name": "secure_secret_id", + "type": "long" + } + ], + "type": "SecureValue" + }, + { + "id": "-1199522741", + "method": "account.deleteSecureValue", + "params": [ + { + "name": "types", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "-1456907910", + "method": "account.getAuthorizationForm", + "params": [ + { + "name": "bot_id", + "type": "long" + }, + { + "name": "scope", + "type": "string" + }, + { + "name": "public_key", + "type": "string" + } + ], + "type": "account.AuthorizationForm" + }, + { + "id": "-202552205", + "method": "account.acceptAuthorization", + "params": [ + { + "name": "bot_id", + "type": "long" + }, + { + "name": "scope", + "type": "string" + }, + { + "name": "public_key", + "type": "string" + }, + { + "name": "value_hashes", + "type": "Vector" + }, + { + "name": "credentials", + "type": "SecureCredentialsEncrypted" + } + ], + "type": "Bool" + }, + { + "id": "-1516022023", + "method": "account.sendVerifyPhoneCode", + "params": [ + { + "name": "phone_number", + "type": "string" + }, + { + "name": "settings", + "type": "CodeSettings" + } + ], + "type": "auth.SentCode" + }, + { + "id": "1305716726", + "method": "account.verifyPhone", + "params": [ + { + "name": "phone_number", + "type": "string" + }, + { + "name": "phone_code_hash", + "type": "string" + }, + { + "name": "phone_code", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "-1730136133", + "method": "account.sendVerifyEmailCode", + "params": [ + { + "name": "purpose", + "type": "EmailVerifyPurpose" + }, + { + "name": "email", + "type": "string" + } + ], + "type": "account.SentEmailCode" + }, + { + "id": "53322959", + "method": "account.verifyEmail", + "params": [ + { + "name": "purpose", + "type": "EmailVerifyPurpose" + }, + { + "name": "verification", + "type": "EmailVerification" + } + ], + "type": "account.EmailVerified" + }, + { + "id": "-1896617296", + "method": "account.initTakeoutSession", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "contacts", + "type": "flags.0?true" + }, + { + "name": "message_users", + "type": "flags.1?true" + }, + { + "name": "message_chats", + "type": "flags.2?true" + }, + { + "name": "message_megagroups", + "type": "flags.3?true" + }, + { + "name": "message_channels", + "type": "flags.4?true" + }, + { + "name": "files", + "type": "flags.5?true" + }, + { + "name": "file_max_size", + "type": "flags.5?long" + } + ], + "type": "account.Takeout" + }, + { + "id": "489050862", + "method": "account.finishTakeoutSession", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "success", + "type": "flags.0?true" + } + ], + "type": "Bool" + }, + { + "id": "-1881204448", + "method": "account.confirmPasswordEmail", + "params": [ + { + "name": "code", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "2055154197", + "method": "account.resendPasswordEmail", + "params": [], + "type": "Bool" + }, + { + "id": "-1043606090", + "method": "account.cancelPasswordEmail", + "params": [], + "type": "Bool" + }, + { + "id": "-1626880216", + "method": "account.getContactSignUpNotification", + "params": [], + "type": "Bool" + }, + { + "id": "-806076575", + "method": "account.setContactSignUpNotification", + "params": [ + { + "name": "silent", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "1398240377", + "method": "account.getNotifyExceptions", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "compare_sound", + "type": "flags.1?true" + }, + { + "name": "compare_stories", + "type": "flags.2?true" + }, + { + "name": "peer", + "type": "flags.0?InputNotifyPeer" + } + ], + "type": "Updates" + }, + { + "id": "-57811990", + "method": "account.getWallPaper", + "params": [ + { + "name": "wallpaper", + "type": "InputWallPaper" + } + ], + "type": "WallPaper" + }, + { + "id": "-476410109", + "method": "account.uploadWallPaper", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "for_chat", + "type": "flags.0?true" + }, + { + "name": "file", + "type": "InputFile" + }, + { + "name": "mime_type", + "type": "string" + }, + { + "name": "settings", + "type": "WallPaperSettings" + } + ], + "type": "WallPaper" + }, + { + "id": "1817860919", + "method": "account.saveWallPaper", + "params": [ + { + "name": "wallpaper", + "type": "InputWallPaper" + }, + { + "name": "unsave", + "type": "Bool" + }, + { + "name": "settings", + "type": "WallPaperSettings" + } + ], + "type": "Bool" + }, + { + "id": "-18000023", + "method": "account.installWallPaper", + "params": [ + { + "name": "wallpaper", + "type": "InputWallPaper" + }, + { + "name": "settings", + "type": "WallPaperSettings" + } + ], + "type": "Bool" + }, + { + "id": "-1153722364", + "method": "account.resetWallPapers", + "params": [], + "type": "Bool" + }, + { + "id": "1457130303", + "method": "account.getAutoDownloadSettings", + "params": [], + "type": "account.AutoDownloadSettings" + }, + { + "id": "1995661875", + "method": "account.saveAutoDownloadSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "low", + "type": "flags.0?true" + }, + { + "name": "high", + "type": "flags.1?true" + }, + { + "name": "settings", + "type": "AutoDownloadSettings" + } + ], + "type": "Bool" + }, + { + "id": "473805619", + "method": "account.uploadTheme", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "file", + "type": "InputFile" + }, + { + "name": "thumb", + "type": "flags.0?InputFile" + }, + { + "name": "file_name", + "type": "string" + }, + { + "name": "mime_type", + "type": "string" + } + ], + "type": "Document" + }, + { + "id": "1697530880", + "method": "account.createTheme", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "slug", + "type": "string" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "document", + "type": "flags.2?InputDocument" + }, + { + "name": "settings", + "type": "flags.3?Vector" + } + ], + "type": "Theme" + }, + { + "id": "737414348", + "method": "account.updateTheme", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "format", + "type": "string" + }, + { + "name": "theme", + "type": "InputTheme" + }, + { + "name": "slug", + "type": "flags.0?string" + }, + { + "name": "title", + "type": "flags.1?string" + }, + { + "name": "document", + "type": "flags.2?InputDocument" + }, + { + "name": "settings", + "type": "flags.3?Vector" + } + ], + "type": "Theme" + }, + { + "id": "-229175188", + "method": "account.saveTheme", + "params": [ + { + "name": "theme", + "type": "InputTheme" + }, + { + "name": "unsave", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "-953697477", + "method": "account.installTheme", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "dark", + "type": "flags.0?true" + }, + { + "name": "theme", + "type": "flags.1?InputTheme" + }, + { + "name": "format", + "type": "flags.2?string" + }, + { + "name": "base_theme", + "type": "flags.3?BaseTheme" + } + ], + "type": "Bool" + }, + { + "id": "978872812", + "method": "account.getTheme", + "params": [ + { + "name": "format", + "type": "string" + }, + { + "name": "theme", + "type": "InputTheme" + } + ], + "type": "Theme" + }, + { + "id": "1913054296", + "method": "account.getThemes", + "params": [ + { + "name": "format", + "type": "string" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "account.Themes" + }, + { + "id": "-1250643605", + "method": "account.setContentSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "sensitive_enabled", + "type": "flags.0?true" + } + ], + "type": "Bool" + }, + { + "id": "-1952756306", + "method": "account.getContentSettings", + "params": [], + "type": "account.ContentSettings" + }, + { + "id": "1705865692", + "method": "account.getMultiWallPapers", + "params": [ + { + "name": "wallpapers", + "type": "Vector" + } + ], + "type": "Vector" + }, + { + "id": "-349483786", + "method": "account.getGlobalPrivacySettings", + "params": [], + "type": "GlobalPrivacySettings" + }, + { + "id": "517647042", + "method": "account.setGlobalPrivacySettings", + "params": [ + { + "name": "settings", + "type": "GlobalPrivacySettings" + } + ], + "type": "GlobalPrivacySettings" + }, + { + "id": "-91437323", + "method": "account.reportProfilePhoto", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "photo_id", + "type": "InputPhoto" + }, + { + "name": "reason", + "type": "ReportReason" + }, + { + "name": "message", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "-1828139493", + "method": "account.resetPassword", + "params": [], + "type": "account.ResetPasswordResult" + }, + { + "id": "1284770294", + "method": "account.declinePasswordReset", + "params": [], + "type": "Bool" + }, + { + "id": "-700916087", + "method": "account.getChatThemes", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "account.Themes" + }, + { + "id": "-1081501024", + "method": "account.setAuthorizationTTL", + "params": [ + { + "name": "authorization_ttl_days", + "type": "int" + } + ], + "type": "Bool" + }, + { + "id": "1089766498", + "method": "account.changeAuthorizationSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "confirmed", + "type": "flags.3?true" + }, + { + "name": "hash", + "type": "long" + }, + { + "name": "encrypted_requests_disabled", + "type": "flags.0?Bool" + }, + { + "name": "call_requests_disabled", + "type": "flags.1?Bool" + } + ], + "type": "Bool" + }, + { + "id": "-510647672", + "method": "account.getSavedRingtones", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "account.SavedRingtones" + }, + { + "id": "1038768899", + "method": "account.saveRingtone", + "params": [ + { + "name": "id", + "type": "InputDocument" + }, + { + "name": "unsave", + "type": "Bool" + } + ], + "type": "account.SavedRingtone" + }, + { + "id": "-2095414366", + "method": "account.uploadRingtone", + "params": [ + { + "name": "file", + "type": "InputFile" + }, + { + "name": "file_name", + "type": "string" + }, + { + "name": "mime_type", + "type": "string" + } + ], + "type": "Document" + }, + { + "id": "-70001045", + "method": "account.updateEmojiStatus", + "params": [ + { + "name": "emoji_status", + "type": "EmojiStatus" + } + ], + "type": "Bool" + }, + { + "id": "-696962170", + "method": "account.getDefaultEmojiStatuses", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "account.EmojiStatuses" + }, + { + "id": "257392901", + "method": "account.getRecentEmojiStatuses", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "account.EmojiStatuses" + }, + { + "id": "404757166", + "method": "account.clearRecentEmojiStatuses", + "params": [], + "type": "Bool" + }, + { + "id": "-279966037", + "method": "account.reorderUsernames", + "params": [ + { + "name": "order", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "1490465654", + "method": "account.toggleUsername", + "params": [ + { + "name": "username", + "type": "string" + }, + { + "name": "active", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "-495647960", + "method": "account.getDefaultProfilePhotoEmojis", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "EmojiList" + }, + { + "id": "-1856479058", + "method": "account.getDefaultGroupPhotoEmojis", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "EmojiList" + }, + { + "id": "-1379156774", + "method": "account.getAutoSaveSettings", + "params": [], + "type": "account.AutoSaveSettings" + }, + { + "id": "-694451359", + "method": "account.saveAutoSaveSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "users", + "type": "flags.0?true" + }, + { + "name": "chats", + "type": "flags.1?true" + }, + { + "name": "broadcasts", + "type": "flags.2?true" + }, + { + "name": "peer", + "type": "flags.3?InputPeer" + }, + { + "name": "settings", + "type": "AutoSaveSettings" + } + ], + "type": "Bool" + }, + { + "id": "1404829728", + "method": "account.deleteAutoSaveExceptions", + "params": [], + "type": "Bool" + }, + { + "id": "-896866118", + "method": "account.invalidateSignInCodes", + "params": [ + { + "name": "codes", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "1749885262", + "method": "account.updateColor", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "for_profile", + "type": "flags.1?true" + }, + { + "name": "color", + "type": "flags.2?PeerColor" + } + ], + "type": "Bool" + }, + { + "id": "-1509246514", + "method": "account.getDefaultBackgroundEmojis", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "EmojiList" + }, + { + "id": "1999087573", + "method": "account.getChannelDefaultEmojiStatuses", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "account.EmojiStatuses" + }, + { + "id": "900325589", + "method": "account.getChannelRestrictedStatusEmojis", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "EmojiList" + }, + { + "id": "1258348646", + "method": "account.updateBusinessWorkHours", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "business_work_hours", + "type": "flags.0?BusinessWorkHours" + } + ], + "type": "Bool" + }, + { + "id": "-1637149926", + "method": "account.updateBusinessLocation", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "geo_point", + "type": "flags.1?InputGeoPoint" + }, + { + "name": "address", + "type": "flags.0?string" + } + ], + "type": "Bool" + }, + { + "id": "1724755908", + "method": "account.updateBusinessGreetingMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "message", + "type": "flags.0?InputBusinessGreetingMessage" + } + ], + "type": "Bool" + }, + { + "id": "-1570078811", + "method": "account.updateBusinessAwayMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "message", + "type": "flags.0?InputBusinessAwayMessage" + } + ], + "type": "Bool" + }, + { + "id": "1721797758", + "method": "account.updateConnectedBot", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "deleted", + "type": "flags.1?true" + }, + { + "name": "rights", + "type": "flags.0?BusinessBotRights" + }, + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "recipients", + "type": "InputBusinessBotRecipients" + } + ], + "type": "Updates" + }, + { + "id": "1319421967", + "method": "account.getConnectedBots", + "params": [], + "type": "account.ConnectedBots" + }, + { + "id": "1990746736", + "method": "account.getBotBusinessConnection", + "params": [ + { + "name": "connection_id", + "type": "string" + } + ], + "type": "Updates" + }, + { + "id": "-1508585420", + "method": "account.updateBusinessIntro", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "intro", + "type": "flags.0?InputBusinessIntro" + } + ], + "type": "Bool" + }, + { + "id": "1684934807", + "method": "account.toggleConnectedBotPaused", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "paused", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "1581481689", + "method": "account.disablePeerConnectedBot", + "params": [ + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "Bool" + }, + { + "id": "-865203183", + "method": "account.updateBirthday", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "birthday", + "type": "flags.0?Birthday" + } + ], + "type": "Bool" + }, + { + "id": "-2007898482", + "method": "account.createBusinessChatLink", + "params": [ + { + "name": "link", + "type": "InputBusinessChatLink" + } + ], + "type": "BusinessChatLink" + }, + { + "id": "-1942744913", + "method": "account.editBusinessChatLink", + "params": [ + { + "name": "slug", + "type": "string" + }, + { + "name": "link", + "type": "InputBusinessChatLink" + } + ], + "type": "BusinessChatLink" + }, + { + "id": "1611085428", + "method": "account.deleteBusinessChatLink", + "params": [ + { + "name": "slug", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "1869667809", + "method": "account.getBusinessChatLinks", + "params": [], + "type": "account.BusinessChatLinks" + }, + { + "id": "1418913262", + "method": "account.resolveBusinessChatLink", + "params": [ + { + "name": "slug", + "type": "string" + } + ], + "type": "account.ResolvedBusinessChatLinks" + }, + { + "id": "-649919008", + "method": "account.updatePersonalChannel", + "params": [ + { + "name": "channel", + "type": "InputChannel" + } + ], + "type": "Bool" + }, + { + "id": "-1176919155", + "method": "account.toggleSponsoredMessages", + "params": [ + { + "name": "enabled", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "115172684", + "method": "account.getReactionsNotifySettings", + "params": [], + "type": "ReactionsNotifySettings" + }, + { + "id": "829220168", + "method": "account.setReactionsNotifySettings", + "params": [ + { + "name": "settings", + "type": "ReactionsNotifySettings" + } + ], + "type": "ReactionsNotifySettings" + }, + { + "id": "779830595", + "method": "account.getCollectibleEmojiStatuses", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "account.EmojiStatuses" + }, + { + "id": "431639143", + "method": "account.getPaidMessagesRevenue", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "parent_peer", + "type": "flags.0?InputPeer" + }, + { + "name": "user_id", + "type": "InputUser" + } + ], + "type": "account.PaidMessagesRevenue" + }, + { + "id": "-30483850", + "method": "account.toggleNoPaidMessagesException", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "refund_charged", + "type": "flags.0?true" + }, + { + "name": "require_payment", + "type": "flags.2?true" + }, + { + "name": "parent_peer", + "type": "flags.1?InputPeer" + }, + { + "name": "user_id", + "type": "InputUser" + } + ], + "type": "Bool" + }, + { + "id": "1575909552", + "method": "account.setMainProfileTab", + "params": [ + { + "name": "tab", + "type": "ProfileTab" + } + ], + "type": "Bool" + }, + { + "id": "-1301859671", + "method": "account.saveMusic", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "unsave", + "type": "flags.0?true" + }, + { + "name": "id", + "type": "InputDocument" + }, + { + "name": "after_id", + "type": "flags.1?InputDocument" + } + ], + "type": "Bool" + }, + { + "id": "-526557265", + "method": "account.getSavedMusicIds", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "account.SavedMusicIds" + }, + { + "id": "-466818615", + "method": "account.getUniqueGiftChatThemes", + "params": [ + { + "name": "offset", + "type": "string" + }, + { + "name": "limit", + "type": "int" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "account.ChatThemes" + }, + { + "id": "1117079528", + "method": "account.initPasskeyRegistration", + "params": [], + "type": "account.PasskeyRegistrationOptions" + }, + { + "id": "1437867990", + "method": "account.registerPasskey", + "params": [ + { + "name": "credential", + "type": "InputPasskeyCredential" + } + ], + "type": "Passkey" + }, + { + "id": "-367063982", + "method": "account.getPasskeys", + "params": [], + "type": "account.Passkeys" + }, + { + "id": "-172665281", + "method": "account.deletePasskey", + "params": [ + { + "name": "id", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "227648840", + "method": "users.getUsers", + "params": [ + { + "name": "id", + "type": "Vector" + } + ], + "type": "Vector" + }, + { + "id": "-1240508136", + "method": "users.getFullUser", + "params": [ + { + "name": "id", + "type": "InputUser" + } + ], + "type": "users.UserFull" + }, + { + "id": "-1865902923", + "method": "users.setSecureValueErrors", + "params": [ + { + "name": "id", + "type": "InputUser" + }, + { + "name": "errors", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "-660962397", + "method": "users.getRequirementsToContact", + "params": [ + { + "name": "id", + "type": "Vector" + } + ], + "type": "Vector" + }, + { + "id": "2022539235", + "method": "users.getSavedMusic", + "params": [ + { + "name": "id", + "type": "InputUser" + }, + { + "name": "offset", + "type": "int" + }, + { + "name": "limit", + "type": "int" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "users.SavedMusic" + }, + { + "id": "1970513129", + "method": "users.getSavedMusicByID", + "params": [ + { + "name": "id", + "type": "InputUser" + }, + { + "name": "documents", + "type": "Vector" + } + ], + "type": "users.SavedMusic" + }, + { + "id": "-61656206", + "method": "users.suggestBirthday", + "params": [ + { + "name": "id", + "type": "InputUser" + }, + { + "name": "birthday", + "type": "Birthday" + } + ], + "type": "Updates" + }, + { + "id": "2061264541", + "method": "contacts.getContactIDs", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "Vector" + }, + { + "id": "-995929106", + "method": "contacts.getStatuses", + "params": [], + "type": "Vector" + }, + { + "id": "1574346258", + "method": "contacts.getContacts", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "contacts.Contacts" + }, + { + "id": "746589157", + "method": "contacts.importContacts", + "params": [ + { + "name": "contacts", + "type": "Vector" + } + ], + "type": "contacts.ImportedContacts" + }, + { + "id": "157945344", + "method": "contacts.deleteContacts", + "params": [ + { + "name": "id", + "type": "Vector" + } + ], + "type": "Updates" + }, + { + "id": "269745566", + "method": "contacts.deleteByPhones", + "params": [ + { + "name": "phones", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "774801204", + "method": "contacts.block", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "my_stories_from", + "type": "flags.0?true" + }, + { + "name": "id", + "type": "InputPeer" + } + ], + "type": "Bool" + }, + { + "id": "-1252994264", + "method": "contacts.unblock", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "my_stories_from", + "type": "flags.0?true" + }, + { + "name": "id", + "type": "InputPeer" + } + ], + "type": "Bool" + }, + { + "id": "-1702457472", + "method": "contacts.getBlocked", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "my_stories_from", + "type": "flags.0?true" + }, + { + "name": "offset", + "type": "int" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "contacts.Blocked" + }, + { + "id": "301470424", + "method": "contacts.search", + "params": [ + { + "name": "q", + "type": "string" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "contacts.Found" + }, + { + "id": "1918565308", + "method": "contacts.resolveUsername", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "username", + "type": "string" + }, + { + "name": "referer", + "type": "flags.0?string" + } + ], + "type": "contacts.ResolvedPeer" + }, + { + "id": "-1758168906", + "method": "contacts.getTopPeers", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "correspondents", + "type": "flags.0?true" + }, + { + "name": "bots_pm", + "type": "flags.1?true" + }, + { + "name": "bots_inline", + "type": "flags.2?true" + }, + { + "name": "phone_calls", + "type": "flags.3?true" + }, + { + "name": "forward_users", + "type": "flags.4?true" + }, + { + "name": "forward_chats", + "type": "flags.5?true" + }, + { + "name": "groups", + "type": "flags.10?true" + }, + { + "name": "channels", + "type": "flags.15?true" + }, + { + "name": "bots_app", + "type": "flags.16?true" + }, + { + "name": "bots_guestchat", + "type": "flags.17?true" + }, + { + "name": "offset", + "type": "int" + }, + { + "name": "limit", + "type": "int" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "contacts.TopPeers" + }, + { + "id": "451113900", + "method": "contacts.resetTopPeerRating", + "params": [ + { + "name": "category", + "type": "TopPeerCategory" + }, + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "Bool" + }, + { + "id": "-2020263951", + "method": "contacts.resetSaved", + "params": [], + "type": "Bool" + }, + { + "id": "-2098076769", + "method": "contacts.getSaved", + "params": [], + "type": "Vector" + }, + { + "id": "-2062238246", + "method": "contacts.toggleTopPeers", + "params": [ + { + "name": "enabled", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "-642109868", + "method": "contacts.addContact", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "add_phone_privacy_exception", + "type": "flags.0?true" + }, + { + "name": "id", + "type": "InputUser" + }, + { + "name": "first_name", + "type": "string" + }, + { + "name": "last_name", + "type": "string" + }, + { + "name": "phone", + "type": "string" + }, + { + "name": "note", + "type": "flags.1?TextWithEntities" + } + ], + "type": "Updates" + }, + { + "id": "-130964977", + "method": "contacts.acceptContact", + "params": [ + { + "name": "id", + "type": "InputUser" + } + ], + "type": "Updates" + }, + { + "id": "-750207932", + "method": "contacts.getLocated", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "background", + "type": "flags.1?true" + }, + { + "name": "geo_point", + "type": "InputGeoPoint" + }, + { + "name": "self_expires", + "type": "flags.0?int" + } + ], + "type": "Updates" + }, + { + "id": "698914348", + "method": "contacts.blockFromReplies", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "delete_message", + "type": "flags.0?true" + }, + { + "name": "delete_history", + "type": "flags.1?true" + }, + { + "name": "report_spam", + "type": "flags.2?true" + }, + { + "name": "msg_id", + "type": "int" + } + ], + "type": "Updates" + }, + { + "id": "-1963375804", + "method": "contacts.resolvePhone", + "params": [ + { + "name": "phone", + "type": "string" + } + ], + "type": "contacts.ResolvedPeer" + }, + { + "id": "-127582169", + "method": "contacts.exportContactToken", + "params": [], + "type": "ExportedContactToken" + }, + { + "id": "318789512", + "method": "contacts.importContactToken", + "params": [ + { + "name": "token", + "type": "string" + } + ], + "type": "User" + }, + { + "id": "-1167653392", + "method": "contacts.editCloseFriends", + "params": [ + { + "name": "id", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "-1798939530", + "method": "contacts.setBlocked", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "my_stories_from", + "type": "flags.0?true" + }, + { + "name": "id", + "type": "Vector" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "Bool" + }, + { + "id": "-621959068", + "method": "contacts.getBirthdays", + "params": [], + "type": "contacts.ContactBirthdays" + }, + { + "id": "-1228356717", + "method": "contacts.getSponsoredPeers", + "params": [ + { + "name": "q", + "type": "string" + } + ], + "type": "contacts.SponsoredPeers" + }, + { + "id": "329212923", + "method": "contacts.updateContactNote", + "params": [ + { + "name": "id", + "type": "InputUser" + }, + { + "name": "note", + "type": "TextWithEntities" + } + ], + "type": "Bool" + }, + { + "id": "1673946374", + "method": "messages.getMessages", + "params": [ + { + "name": "id", + "type": "Vector" + } + ], + "type": "messages.Messages" + }, + { + "id": "-1594569905", + "method": "messages.getDialogs", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "exclude_pinned", + "type": "flags.0?true" + }, + { + "name": "folder_id", + "type": "flags.1?int" + }, + { + "name": "offset_date", + "type": "int" + }, + { + "name": "offset_id", + "type": "int" + }, + { + "name": "offset_peer", + "type": "InputPeer" + }, + { + "name": "limit", + "type": "int" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.Dialogs" + }, + { + "id": "1143203525", + "method": "messages.getHistory", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "offset_id", + "type": "int" + }, + { + "name": "offset_date", + "type": "int" + }, + { + "name": "add_offset", + "type": "int" + }, + { + "name": "limit", + "type": "int" + }, + { + "name": "max_id", + "type": "int" + }, + { + "name": "min_id", + "type": "int" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.Messages" + }, + { + "id": "703497338", + "method": "messages.search", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "q", + "type": "string" + }, + { + "name": "from_id", + "type": "flags.0?InputPeer" + }, + { + "name": "saved_peer_id", + "type": "flags.2?InputPeer" + }, + { + "name": "saved_reaction", + "type": "flags.3?Vector" + }, + { + "name": "top_msg_id", + "type": "flags.1?int" + }, + { + "name": "filter", + "type": "MessagesFilter" + }, + { + "name": "min_date", + "type": "int" + }, + { + "name": "max_date", + "type": "int" + }, + { + "name": "offset_id", + "type": "int" + }, + { + "name": "add_offset", + "type": "int" + }, + { + "name": "limit", + "type": "int" + }, + { + "name": "max_id", + "type": "int" + }, + { + "name": "min_id", + "type": "int" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.Messages" + }, + { + "id": "238054714", + "method": "messages.readHistory", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "max_id", + "type": "int" + } + ], + "type": "messages.AffectedMessages" + }, + { + "id": "-1332768214", + "method": "messages.deleteHistory", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "just_clear", + "type": "flags.0?true" + }, + { + "name": "revoke", + "type": "flags.1?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "max_id", + "type": "int" + }, + { + "name": "min_date", + "type": "flags.2?int" + }, + { + "name": "max_date", + "type": "flags.3?int" + } + ], + "type": "messages.AffectedHistory" + }, + { + "id": "-443640366", + "method": "messages.deleteMessages", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "revoke", + "type": "flags.0?true" + }, + { + "name": "id", + "type": "Vector" + } + ], + "type": "messages.AffectedMessages" + }, + { + "id": "94983360", + "method": "messages.receivedMessages", + "params": [ + { + "name": "max_id", + "type": "int" + } + ], + "type": "Vector" + }, + { + "id": "1486110434", + "method": "messages.setTyping", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "top_msg_id", + "type": "flags.0?int" + }, + { + "name": "action", + "type": "SendMessageAction" + } + ], + "type": "Bool" + }, + { + "id": "1415369050", + "method": "messages.sendMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "no_webpage", + "type": "flags.1?true" + }, + { + "name": "silent", + "type": "flags.5?true" + }, + { + "name": "background", + "type": "flags.6?true" + }, + { + "name": "clear_draft", + "type": "flags.7?true" + }, + { + "name": "noforwards", + "type": "flags.14?true" + }, + { + "name": "update_stickersets_order", + "type": "flags.15?true" + }, + { + "name": "invert_media", + "type": "flags.16?true" + }, + { + "name": "allow_paid_floodskip", + "type": "flags.19?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "reply_to", + "type": "flags.0?InputReplyTo" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "random_id", + "type": "long" + }, + { + "name": "reply_markup", + "type": "flags.2?ReplyMarkup" + }, + { + "name": "entities", + "type": "flags.3?Vector" + }, + { + "name": "schedule_date", + "type": "flags.10?int" + }, + { + "name": "schedule_repeat_period", + "type": "flags.24?int" + }, + { + "name": "send_as", + "type": "flags.13?InputPeer" + }, + { + "name": "quick_reply_shortcut", + "type": "flags.17?InputQuickReplyShortcut" + }, + { + "name": "effect", + "type": "flags.18?long" + }, + { + "name": "allow_paid_stars", + "type": "flags.21?long" + }, + { + "name": "suggested_post", + "type": "flags.22?SuggestedPost" + } + ], + "type": "Updates" + }, + { + "id": "53536639", + "method": "messages.sendMedia", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "silent", + "type": "flags.5?true" + }, + { + "name": "background", + "type": "flags.6?true" + }, + { + "name": "clear_draft", + "type": "flags.7?true" + }, + { + "name": "noforwards", + "type": "flags.14?true" + }, + { + "name": "update_stickersets_order", + "type": "flags.15?true" + }, + { + "name": "invert_media", + "type": "flags.16?true" + }, + { + "name": "allow_paid_floodskip", + "type": "flags.19?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "reply_to", + "type": "flags.0?InputReplyTo" + }, + { + "name": "media", + "type": "InputMedia" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "random_id", + "type": "long" + }, + { + "name": "reply_markup", + "type": "flags.2?ReplyMarkup" + }, + { + "name": "entities", + "type": "flags.3?Vector" + }, + { + "name": "schedule_date", + "type": "flags.10?int" + }, + { + "name": "schedule_repeat_period", + "type": "flags.24?int" + }, + { + "name": "send_as", + "type": "flags.13?InputPeer" + }, + { + "name": "quick_reply_shortcut", + "type": "flags.17?InputQuickReplyShortcut" + }, + { + "name": "effect", + "type": "flags.18?long" + }, + { + "name": "allow_paid_stars", + "type": "flags.21?long" + }, + { + "name": "suggested_post", + "type": "flags.22?SuggestedPost" + } + ], + "type": "Updates" + }, + { + "id": "326126204", + "method": "messages.forwardMessages", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "silent", + "type": "flags.5?true" + }, + { + "name": "background", + "type": "flags.6?true" + }, + { + "name": "with_my_score", + "type": "flags.8?true" + }, + { + "name": "drop_author", + "type": "flags.11?true" + }, + { + "name": "drop_media_captions", + "type": "flags.12?true" + }, + { + "name": "noforwards", + "type": "flags.14?true" + }, + { + "name": "allow_paid_floodskip", + "type": "flags.19?true" + }, + { + "name": "from_peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "Vector" + }, + { + "name": "random_id", + "type": "Vector" + }, + { + "name": "to_peer", + "type": "InputPeer" + }, + { + "name": "top_msg_id", + "type": "flags.9?int" + }, + { + "name": "reply_to", + "type": "flags.22?InputReplyTo" + }, + { + "name": "schedule_date", + "type": "flags.10?int" + }, + { + "name": "schedule_repeat_period", + "type": "flags.24?int" + }, + { + "name": "send_as", + "type": "flags.13?InputPeer" + }, + { + "name": "quick_reply_shortcut", + "type": "flags.17?InputQuickReplyShortcut" + }, + { + "name": "effect", + "type": "flags.18?long" + }, + { + "name": "video_timestamp", + "type": "flags.20?int" + }, + { + "name": "allow_paid_stars", + "type": "flags.21?long" + }, + { + "name": "suggested_post", + "type": "flags.23?SuggestedPost" + } + ], + "type": "Updates" + }, + { + "id": "-820669733", + "method": "messages.reportSpam", + "params": [ + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "Bool" + }, + { + "id": "-270948702", + "method": "messages.getPeerSettings", + "params": [ + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "messages.PeerSettings" + }, + { + "id": "-59199589", + "method": "messages.report", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "Vector" + }, + { + "name": "option", + "type": "bytes" + }, + { + "name": "message", + "type": "string" + } + ], + "type": "ReportResult" + }, + { + "id": "1240027791", + "method": "messages.getChats", + "params": [ + { + "name": "id", + "type": "Vector" + } + ], + "type": "messages.Chats" + }, + { + "id": "-1364194508", + "method": "messages.getFullChat", + "params": [ + { + "name": "chat_id", + "type": "long" + } + ], + "type": "messages.ChatFull" + }, + { + "id": "1937260541", + "method": "messages.editChatTitle", + "params": [ + { + "name": "chat_id", + "type": "long" + }, + { + "name": "title", + "type": "string" + } + ], + "type": "Updates" + }, + { + "id": "903730804", + "method": "messages.editChatPhoto", + "params": [ + { + "name": "chat_id", + "type": "long" + }, + { + "name": "photo", + "type": "InputChatPhoto" + } + ], + "type": "Updates" + }, + { + "id": "-876162809", + "method": "messages.addChatUser", + "params": [ + { + "name": "chat_id", + "type": "long" + }, + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "fwd_limit", + "type": "int" + } + ], + "type": "messages.InvitedUsers" + }, + { + "id": "-1575461717", + "method": "messages.deleteChatUser", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "revoke_history", + "type": "flags.0?true" + }, + { + "name": "chat_id", + "type": "long" + }, + { + "name": "user_id", + "type": "InputUser" + } + ], + "type": "Updates" + }, + { + "id": "-1831936556", + "method": "messages.createChat", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "users", + "type": "Vector" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "ttl_period", + "type": "flags.0?int" + } + ], + "type": "messages.InvitedUsers" + }, + { + "id": "651135312", + "method": "messages.getDhConfig", + "params": [ + { + "name": "version", + "type": "int" + }, + { + "name": "random_length", + "type": "int" + } + ], + "type": "messages.DhConfig" + }, + { + "id": "-162681021", + "method": "messages.requestEncryption", + "params": [ + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "random_id", + "type": "int" + }, + { + "name": "g_a", + "type": "bytes" + } + ], + "type": "EncryptedChat" + }, + { + "id": "1035731989", + "method": "messages.acceptEncryption", + "params": [ + { + "name": "peer", + "type": "InputEncryptedChat" + }, + { + "name": "g_b", + "type": "bytes" + }, + { + "name": "key_fingerprint", + "type": "long" + } + ], + "type": "EncryptedChat" + }, + { + "id": "-208425312", + "method": "messages.discardEncryption", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "delete_history", + "type": "flags.0?true" + }, + { + "name": "chat_id", + "type": "int" + } + ], + "type": "Bool" + }, + { + "id": "2031374829", + "method": "messages.setEncryptedTyping", + "params": [ + { + "name": "peer", + "type": "InputEncryptedChat" + }, + { + "name": "typing", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "2135648522", + "method": "messages.readEncryptedHistory", + "params": [ + { + "name": "peer", + "type": "InputEncryptedChat" + }, + { + "name": "max_date", + "type": "int" + } + ], + "type": "Bool" + }, + { + "id": "1157265941", + "method": "messages.sendEncrypted", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "silent", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputEncryptedChat" + }, + { + "name": "random_id", + "type": "long" + }, + { + "name": "data", + "type": "bytes" + } + ], + "type": "messages.SentEncryptedMessage" + }, + { + "id": "1431914525", + "method": "messages.sendEncryptedFile", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "silent", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputEncryptedChat" + }, + { + "name": "random_id", + "type": "long" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "file", + "type": "InputEncryptedFile" + } + ], + "type": "messages.SentEncryptedMessage" + }, + { + "id": "852769188", + "method": "messages.sendEncryptedService", + "params": [ + { + "name": "peer", + "type": "InputEncryptedChat" + }, + { + "name": "random_id", + "type": "long" + }, + { + "name": "data", + "type": "bytes" + } + ], + "type": "messages.SentEncryptedMessage" + }, + { + "id": "1436924774", + "method": "messages.receivedQueue", + "params": [ + { + "name": "max_qts", + "type": "int" + } + ], + "type": "Vector" + }, + { + "id": "1259113487", + "method": "messages.reportEncryptedSpam", + "params": [ + { + "name": "peer", + "type": "InputEncryptedChat" + } + ], + "type": "Bool" + }, + { + "id": "916930423", + "method": "messages.readMessageContents", + "params": [ + { + "name": "id", + "type": "Vector" + } + ], + "type": "messages.AffectedMessages" + }, + { + "id": "-710552671", + "method": "messages.getStickers", + "params": [ + { + "name": "emoticon", + "type": "string" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.Stickers" + }, + { + "id": "-1197432408", + "method": "messages.getAllStickers", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.AllStickers" + }, + { + "id": "1460498287", + "method": "messages.getWebPagePreview", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "entities", + "type": "flags.3?Vector" + } + ], + "type": "messages.WebPagePreview" + }, + { + "id": "-1537876336", + "method": "messages.exportChatInvite", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "legacy_revoke_permanent", + "type": "flags.2?true" + }, + { + "name": "request_needed", + "type": "flags.3?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "expire_date", + "type": "flags.0?int" + }, + { + "name": "usage_limit", + "type": "flags.1?int" + }, + { + "name": "title", + "type": "flags.4?string" + }, + { + "name": "subscription_pricing", + "type": "flags.5?StarsSubscriptionPricing" + } + ], + "type": "ExportedChatInvite" + }, + { + "id": "1051570619", + "method": "messages.checkChatInvite", + "params": [ + { + "name": "hash", + "type": "string" + } + ], + "type": "ChatInvite" + }, + { + "id": "1817183516", + "method": "messages.importChatInvite", + "params": [ + { + "name": "hash", + "type": "string" + } + ], + "type": "Updates" + }, + { + "id": "-928977804", + "method": "messages.getStickerSet", + "params": [ + { + "name": "stickerset", + "type": "InputStickerSet" + }, + { + "name": "hash", + "type": "int" + } + ], + "type": "messages.StickerSet" + }, + { + "id": "-946871200", + "method": "messages.installStickerSet", + "params": [ + { + "name": "stickerset", + "type": "InputStickerSet" + }, + { + "name": "archived", + "type": "Bool" + } + ], + "type": "messages.StickerSetInstallResult" + }, + { + "id": "-110209570", + "method": "messages.uninstallStickerSet", + "params": [ + { + "name": "stickerset", + "type": "InputStickerSet" + } + ], + "type": "Bool" + }, + { + "id": "-421563528", + "method": "messages.startBot", + "params": [ + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "random_id", + "type": "long" + }, + { + "name": "start_param", + "type": "string" + } + ], + "type": "Updates" + }, + { + "id": "1468322785", + "method": "messages.getMessagesViews", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "Vector" + }, + { + "name": "increment", + "type": "Bool" + } + ], + "type": "messages.MessageViews" + }, + { + "id": "-1470377534", + "method": "messages.editChatAdmin", + "params": [ + { + "name": "chat_id", + "type": "long" + }, + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "is_admin", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "-1568189671", + "method": "messages.migrateChat", + "params": [ + { + "name": "chat_id", + "type": "long" + } + ], + "type": "Updates" + }, + { + "id": "1271290010", + "method": "messages.searchGlobal", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "broadcasts_only", + "type": "flags.1?true" + }, + { + "name": "groups_only", + "type": "flags.2?true" + }, + { + "name": "users_only", + "type": "flags.3?true" + }, + { + "name": "folder_id", + "type": "flags.0?int" + }, + { + "name": "q", + "type": "string" + }, + { + "name": "filter", + "type": "MessagesFilter" + }, + { + "name": "min_date", + "type": "int" + }, + { + "name": "max_date", + "type": "int" + }, + { + "name": "offset_rate", + "type": "int" + }, + { + "name": "offset_peer", + "type": "InputPeer" + }, + { + "name": "offset_id", + "type": "int" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "messages.Messages" + }, + { + "id": "2016638777", + "method": "messages.reorderStickerSets", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "masks", + "type": "flags.0?true" + }, + { + "name": "emojis", + "type": "flags.1?true" + }, + { + "name": "order", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "-1309538785", + "method": "messages.getDocumentByHash", + "params": [ + { + "name": "sha256", + "type": "bytes" + }, + { + "name": "size", + "type": "long" + }, + { + "name": "mime_type", + "type": "string" + } + ], + "type": "Document" + }, + { + "id": "1559270965", + "method": "messages.getSavedGifs", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.SavedGifs" + }, + { + "id": "846868683", + "method": "messages.saveGif", + "params": [ + { + "name": "id", + "type": "InputDocument" + }, + { + "name": "unsave", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "1364105629", + "method": "messages.getInlineBotResults", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "geo_point", + "type": "flags.0?InputGeoPoint" + }, + { + "name": "query", + "type": "string" + }, + { + "name": "offset", + "type": "string" + } + ], + "type": "messages.BotResults" + }, + { + "id": "-1156406247", + "method": "messages.setInlineBotResults", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "gallery", + "type": "flags.0?true" + }, + { + "name": "private", + "type": "flags.1?true" + }, + { + "name": "query_id", + "type": "long" + }, + { + "name": "results", + "type": "Vector" + }, + { + "name": "cache_time", + "type": "int" + }, + { + "name": "next_offset", + "type": "flags.2?string" + }, + { + "name": "switch_pm", + "type": "flags.3?InlineBotSwitchPM" + }, + { + "name": "switch_webview", + "type": "flags.4?InlineBotWebView" + } + ], + "type": "Bool" + }, + { + "id": "-1060145594", + "method": "messages.sendInlineBotResult", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "silent", + "type": "flags.5?true" + }, + { + "name": "background", + "type": "flags.6?true" + }, + { + "name": "clear_draft", + "type": "flags.7?true" + }, + { + "name": "hide_via", + "type": "flags.11?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "reply_to", + "type": "flags.0?InputReplyTo" + }, + { + "name": "random_id", + "type": "long" + }, + { + "name": "query_id", + "type": "long" + }, + { + "name": "id", + "type": "string" + }, + { + "name": "schedule_date", + "type": "flags.10?int" + }, + { + "name": "send_as", + "type": "flags.13?InputPeer" + }, + { + "name": "quick_reply_shortcut", + "type": "flags.17?InputQuickReplyShortcut" + }, + { + "name": "allow_paid_stars", + "type": "flags.21?long" + } + ], + "type": "Updates" + }, + { + "id": "-39416522", + "method": "messages.getMessageEditData", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "int" + } + ], + "type": "messages.MessageEditData" + }, + { + "id": "1374175969", + "method": "messages.editMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "no_webpage", + "type": "flags.1?true" + }, + { + "name": "invert_media", + "type": "flags.16?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "message", + "type": "flags.11?string" + }, + { + "name": "media", + "type": "flags.14?InputMedia" + }, + { + "name": "reply_markup", + "type": "flags.2?ReplyMarkup" + }, + { + "name": "entities", + "type": "flags.3?Vector" + }, + { + "name": "schedule_date", + "type": "flags.15?int" + }, + { + "name": "schedule_repeat_period", + "type": "flags.18?int" + }, + { + "name": "quick_reply_shortcut_id", + "type": "flags.17?int" + } + ], + "type": "Updates" + }, + { + "id": "-2091549254", + "method": "messages.editInlineBotMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "no_webpage", + "type": "flags.1?true" + }, + { + "name": "invert_media", + "type": "flags.16?true" + }, + { + "name": "id", + "type": "InputBotInlineMessageID" + }, + { + "name": "message", + "type": "flags.11?string" + }, + { + "name": "media", + "type": "flags.14?InputMedia" + }, + { + "name": "reply_markup", + "type": "flags.2?ReplyMarkup" + }, + { + "name": "entities", + "type": "flags.3?Vector" + } + ], + "type": "Bool" + }, + { + "id": "-1824339449", + "method": "messages.getBotCallbackAnswer", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "game", + "type": "flags.1?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "data", + "type": "flags.0?bytes" + }, + { + "name": "password", + "type": "flags.2?InputCheckPasswordSRP" + } + ], + "type": "messages.BotCallbackAnswer" + }, + { + "id": "-712043766", + "method": "messages.setBotCallbackAnswer", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "alert", + "type": "flags.1?true" + }, + { + "name": "query_id", + "type": "long" + }, + { + "name": "message", + "type": "flags.0?string" + }, + { + "name": "url", + "type": "flags.2?string" + }, + { + "name": "cache_time", + "type": "int" + } + ], + "type": "Bool" + }, + { + "id": "-462373635", + "method": "messages.getPeerDialogs", + "params": [ + { + "name": "peers", + "type": "Vector" + } + ], + "type": "messages.PeerDialogs" + }, + { + "id": "1420701838", + "method": "messages.saveDraft", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "no_webpage", + "type": "flags.1?true" + }, + { + "name": "invert_media", + "type": "flags.6?true" + }, + { + "name": "reply_to", + "type": "flags.4?InputReplyTo" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "entities", + "type": "flags.3?Vector" + }, + { + "name": "media", + "type": "flags.5?InputMedia" + }, + { + "name": "effect", + "type": "flags.7?long" + }, + { + "name": "suggested_post", + "type": "flags.8?SuggestedPost" + } + ], + "type": "Bool" + }, + { + "id": "1782549861", + "method": "messages.getAllDrafts", + "params": [], + "type": "Updates" + }, + { + "id": "1685588756", + "method": "messages.getFeaturedStickers", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.FeaturedStickers" + }, + { + "id": "1527873830", + "method": "messages.readFeaturedStickers", + "params": [ + { + "name": "id", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "-1649852357", + "method": "messages.getRecentStickers", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "attached", + "type": "flags.0?true" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.RecentStickers" + }, + { + "id": "958863608", + "method": "messages.saveRecentSticker", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "attached", + "type": "flags.0?true" + }, + { + "name": "id", + "type": "InputDocument" + }, + { + "name": "unsave", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "-1986437075", + "method": "messages.clearRecentStickers", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "attached", + "type": "flags.0?true" + } + ], + "type": "Bool" + }, + { + "id": "1475442322", + "method": "messages.getArchivedStickers", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "masks", + "type": "flags.0?true" + }, + { + "name": "emojis", + "type": "flags.1?true" + }, + { + "name": "offset_id", + "type": "long" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "messages.ArchivedStickers" + }, + { + "id": "1678738104", + "method": "messages.getMaskStickers", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.AllStickers" + }, + { + "id": "-866424884", + "method": "messages.getAttachedStickers", + "params": [ + { + "name": "media", + "type": "InputStickeredMedia" + } + ], + "type": "Vector" + }, + { + "id": "-1896289088", + "method": "messages.setGameScore", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "edit_message", + "type": "flags.0?true" + }, + { + "name": "force", + "type": "flags.1?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "score", + "type": "int" + } + ], + "type": "Updates" + }, + { + "id": "363700068", + "method": "messages.setInlineGameScore", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "edit_message", + "type": "flags.0?true" + }, + { + "name": "force", + "type": "flags.1?true" + }, + { + "name": "id", + "type": "InputBotInlineMessageID" + }, + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "score", + "type": "int" + } + ], + "type": "Bool" + }, + { + "id": "-400399203", + "method": "messages.getGameHighScores", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "user_id", + "type": "InputUser" + } + ], + "type": "messages.HighScores" + }, + { + "id": "258170395", + "method": "messages.getInlineGameHighScores", + "params": [ + { + "name": "id", + "type": "InputBotInlineMessageID" + }, + { + "name": "user_id", + "type": "InputUser" + } + ], + "type": "messages.HighScores" + }, + { + "id": "-468934396", + "method": "messages.getCommonChats", + "params": [ + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "max_id", + "type": "long" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "messages.Chats" + }, + { + "id": "-1919511901", + "method": "messages.getWebPage", + "params": [ + { + "name": "url", + "type": "string" + }, + { + "name": "hash", + "type": "int" + } + ], + "type": "messages.WebPage" + }, + { + "id": "-1489903017", + "method": "messages.toggleDialogPin", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "pinned", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputDialogPeer" + } + ], + "type": "Bool" + }, + { + "id": "991616823", + "method": "messages.reorderPinnedDialogs", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "force", + "type": "flags.0?true" + }, + { + "name": "folder_id", + "type": "int" + }, + { + "name": "order", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "-692498958", + "method": "messages.getPinnedDialogs", + "params": [ + { + "name": "folder_id", + "type": "int" + } + ], + "type": "messages.PeerDialogs" + }, + { + "id": "-436833542", + "method": "messages.setBotShippingResults", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "query_id", + "type": "long" + }, + { + "name": "error", + "type": "flags.0?string" + }, + { + "name": "shipping_options", + "type": "flags.1?Vector" + } + ], + "type": "Bool" + }, + { + "id": "163765653", + "method": "messages.setBotPrecheckoutResults", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "success", + "type": "flags.1?true" + }, + { + "name": "query_id", + "type": "long" + }, + { + "name": "error", + "type": "flags.0?string" + } + ], + "type": "Bool" + }, + { + "id": "345405816", + "method": "messages.uploadMedia", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "business_connection_id", + "type": "flags.0?string" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "media", + "type": "InputMedia" + } + ], + "type": "MessageMedia" + }, + { + "id": "-1589618665", + "method": "messages.sendScreenshotNotification", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "reply_to", + "type": "InputReplyTo" + }, + { + "name": "random_id", + "type": "long" + } + ], + "type": "Updates" + }, + { + "id": "82946729", + "method": "messages.getFavedStickers", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.FavedStickers" + }, + { + "id": "-1174420133", + "method": "messages.faveSticker", + "params": [ + { + "name": "id", + "type": "InputDocument" + }, + { + "name": "unfave", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "-251140208", + "method": "messages.getUnreadMentions", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "top_msg_id", + "type": "flags.0?int" + }, + { + "name": "offset_id", + "type": "int" + }, + { + "name": "add_offset", + "type": "int" + }, + { + "name": "limit", + "type": "int" + }, + { + "name": "max_id", + "type": "int" + }, + { + "name": "min_id", + "type": "int" + } + ], + "type": "messages.Messages" + }, + { + "id": "921026381", + "method": "messages.readMentions", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "top_msg_id", + "type": "flags.0?int" + } + ], + "type": "messages.AffectedHistory" + }, + { + "id": "1881817312", + "method": "messages.getRecentLocations", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "limit", + "type": "int" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.Messages" + }, + { + "id": "469278068", + "method": "messages.sendMultiMedia", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "silent", + "type": "flags.5?true" + }, + { + "name": "background", + "type": "flags.6?true" + }, + { + "name": "clear_draft", + "type": "flags.7?true" + }, + { + "name": "noforwards", + "type": "flags.14?true" + }, + { + "name": "update_stickersets_order", + "type": "flags.15?true" + }, + { + "name": "invert_media", + "type": "flags.16?true" + }, + { + "name": "allow_paid_floodskip", + "type": "flags.19?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "reply_to", + "type": "flags.0?InputReplyTo" + }, + { + "name": "multi_media", + "type": "Vector" + }, + { + "name": "schedule_date", + "type": "flags.10?int" + }, + { + "name": "send_as", + "type": "flags.13?InputPeer" + }, + { + "name": "quick_reply_shortcut", + "type": "flags.17?InputQuickReplyShortcut" + }, + { + "name": "effect", + "type": "flags.18?long" + }, + { + "name": "allow_paid_stars", + "type": "flags.21?long" + } + ], + "type": "Updates" + }, + { + "id": "1347929239", + "method": "messages.uploadEncryptedFile", + "params": [ + { + "name": "peer", + "type": "InputEncryptedChat" + }, + { + "name": "file", + "type": "InputEncryptedFile" + } + ], + "type": "EncryptedFile" + }, + { + "id": "896555914", + "method": "messages.searchStickerSets", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "exclude_featured", + "type": "flags.0?true" + }, + { + "name": "q", + "type": "string" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.FoundStickerSets" + }, + { + "id": "486505992", + "method": "messages.getSplitRanges", + "params": [], + "type": "Vector" + }, + { + "id": "-1940912392", + "method": "messages.markDialogUnread", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "unread", + "type": "flags.0?true" + }, + { + "name": "parent_peer", + "type": "flags.1?InputPeer" + }, + { + "name": "peer", + "type": "InputDialogPeer" + } + ], + "type": "Bool" + }, + { + "id": "555754018", + "method": "messages.getDialogUnreadMarks", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "parent_peer", + "type": "flags.0?InputPeer" + } + ], + "type": "Vector" + }, + { + "id": "2119757468", + "method": "messages.clearAllDrafts", + "params": [], + "type": "Bool" + }, + { + "id": "-760547348", + "method": "messages.updatePinnedMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "silent", + "type": "flags.0?true" + }, + { + "name": "unpin", + "type": "flags.1?true" + }, + { + "name": "pm_oneside", + "type": "flags.2?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "int" + } + ], + "type": "Updates" + }, + { + "id": "283795844", + "method": "messages.sendVote", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "options", + "type": "Vector" + } + ], + "type": "Updates" + }, + { + "id": "-308026565", + "method": "messages.getPollResults", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "poll_hash", + "type": "long" + } + ], + "type": "Updates" + }, + { + "id": "1848369232", + "method": "messages.getOnlines", + "params": [ + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "ChatOnlines" + }, + { + "id": "-554301545", + "method": "messages.editChatAbout", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "about", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "-1517917375", + "method": "messages.editChatDefaultBannedRights", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "banned_rights", + "type": "ChatBannedRights" + } + ], + "type": "Updates" + }, + { + "id": "899735650", + "method": "messages.getEmojiKeywords", + "params": [ + { + "name": "lang_code", + "type": "string" + } + ], + "type": "EmojiKeywordsDifference" + }, + { + "id": "352892591", + "method": "messages.getEmojiKeywordsDifference", + "params": [ + { + "name": "lang_code", + "type": "string" + }, + { + "name": "from_version", + "type": "int" + } + ], + "type": "EmojiKeywordsDifference" + }, + { + "id": "1318675378", + "method": "messages.getEmojiKeywordsLanguages", + "params": [ + { + "name": "lang_codes", + "type": "Vector" + } + ], + "type": "Vector" + }, + { + "id": "-709817306", + "method": "messages.getEmojiURL", + "params": [ + { + "name": "lang_code", + "type": "string" + } + ], + "type": "EmojiURL" + }, + { + "id": "465367808", + "method": "messages.getSearchCounters", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "saved_peer_id", + "type": "flags.2?InputPeer" + }, + { + "name": "top_msg_id", + "type": "flags.0?int" + }, + { + "name": "filters", + "type": "Vector" + } + ], + "type": "Vector" + }, + { + "id": "-1991456356", + "method": "messages.requestUrlAuth", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "flags.1?InputPeer" + }, + { + "name": "msg_id", + "type": "flags.1?int" + }, + { + "name": "button_id", + "type": "flags.1?int" + }, + { + "name": "url", + "type": "flags.2?string" + }, + { + "name": "in_app_origin", + "type": "flags.3?string" + } + ], + "type": "UrlAuthResult" + }, + { + "id": "1738797278", + "method": "messages.acceptUrlAuth", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "write_allowed", + "type": "flags.0?true" + }, + { + "name": "share_phone_number", + "type": "flags.3?true" + }, + { + "name": "peer", + "type": "flags.1?InputPeer" + }, + { + "name": "msg_id", + "type": "flags.1?int" + }, + { + "name": "button_id", + "type": "flags.1?int" + }, + { + "name": "url", + "type": "flags.2?string" + }, + { + "name": "match_code", + "type": "flags.4?string" + } + ], + "type": "UrlAuthResult" + }, + { + "id": "1336717624", + "method": "messages.hidePeerSettingsBar", + "params": [ + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "Bool" + }, + { + "id": "-183077365", + "method": "messages.getScheduledHistory", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.Messages" + }, + { + "id": "-1111817116", + "method": "messages.getScheduledMessages", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "Vector" + } + ], + "type": "messages.Messages" + }, + { + "id": "-1120369398", + "method": "messages.sendScheduledMessages", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "Vector" + } + ], + "type": "Updates" + }, + { + "id": "1504586518", + "method": "messages.deleteScheduledMessages", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "Vector" + } + ], + "type": "Updates" + }, + { + "id": "-1200736242", + "method": "messages.getPollVotes", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "option", + "type": "flags.0?bytes" + }, + { + "name": "offset", + "type": "flags.1?string" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "messages.VotesList" + }, + { + "id": "-1257951254", + "method": "messages.toggleStickerSets", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "uninstall", + "type": "flags.0?true" + }, + { + "name": "archive", + "type": "flags.1?true" + }, + { + "name": "unarchive", + "type": "flags.2?true" + }, + { + "name": "stickersets", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "-271283063", + "method": "messages.getDialogFilters", + "params": [], + "type": "messages.DialogFilters" + }, + { + "id": "-1566780372", + "method": "messages.getSuggestedDialogFilters", + "params": [], + "type": "Vector" + }, + { + "id": "450142282", + "method": "messages.updateDialogFilter", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "filter", + "type": "flags.0?DialogFilter" + } + ], + "type": "Bool" + }, + { + "id": "-983318044", + "method": "messages.updateDialogFiltersOrder", + "params": [ + { + "name": "order", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "2127598753", + "method": "messages.getOldFeaturedStickers", + "params": [ + { + "name": "offset", + "type": "int" + }, + { + "name": "limit", + "type": "int" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.FeaturedStickers" + }, + { + "id": "584962828", + "method": "messages.getReplies", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "offset_id", + "type": "int" + }, + { + "name": "offset_date", + "type": "int" + }, + { + "name": "add_offset", + "type": "int" + }, + { + "name": "limit", + "type": "int" + }, + { + "name": "max_id", + "type": "int" + }, + { + "name": "min_id", + "type": "int" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.Messages" + }, + { + "id": "1147761405", + "method": "messages.getDiscussionMessage", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + } + ], + "type": "messages.DiscussionMessage" + }, + { + "id": "-147740172", + "method": "messages.readDiscussion", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "read_max_id", + "type": "int" + } + ], + "type": "Bool" + }, + { + "id": "103667527", + "method": "messages.unpinAllMessages", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "top_msg_id", + "type": "flags.0?int" + }, + { + "name": "saved_peer_id", + "type": "flags.1?InputPeer" + } + ], + "type": "messages.AffectedHistory" + }, + { + "id": "1540419152", + "method": "messages.deleteChat", + "params": [ + { + "name": "chat_id", + "type": "long" + } + ], + "type": "Bool" + }, + { + "id": "-104078327", + "method": "messages.deletePhoneCallHistory", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "revoke", + "type": "flags.0?true" + } + ], + "type": "messages.AffectedFoundMessages" + }, + { + "id": "1140726259", + "method": "messages.checkHistoryImport", + "params": [ + { + "name": "import_head", + "type": "string" + } + ], + "type": "messages.HistoryImportParsed" + }, + { + "id": "873008187", + "method": "messages.initHistoryImport", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "file", + "type": "InputFile" + }, + { + "name": "media_count", + "type": "int" + } + ], + "type": "messages.HistoryImport" + }, + { + "id": "713433234", + "method": "messages.uploadImportedMedia", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "import_id", + "type": "long" + }, + { + "name": "file_name", + "type": "string" + }, + { + "name": "media", + "type": "InputMedia" + } + ], + "type": "MessageMedia" + }, + { + "id": "-1271008444", + "method": "messages.startHistoryImport", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "import_id", + "type": "long" + } + ], + "type": "Bool" + }, + { + "id": "-1565154314", + "method": "messages.getExportedChatInvites", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "revoked", + "type": "flags.3?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "admin_id", + "type": "InputUser" + }, + { + "name": "offset_date", + "type": "flags.2?int" + }, + { + "name": "offset_link", + "type": "flags.2?string" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "messages.ExportedChatInvites" + }, + { + "id": "1937010524", + "method": "messages.getExportedChatInvite", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "link", + "type": "string" + } + ], + "type": "messages.ExportedChatInvite" + }, + { + "id": "-1110823051", + "method": "messages.editExportedChatInvite", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "revoked", + "type": "flags.2?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "link", + "type": "string" + }, + { + "name": "expire_date", + "type": "flags.0?int" + }, + { + "name": "usage_limit", + "type": "flags.1?int" + }, + { + "name": "request_needed", + "type": "flags.3?Bool" + }, + { + "name": "title", + "type": "flags.4?string" + } + ], + "type": "messages.ExportedChatInvite" + }, + { + "id": "1452833749", + "method": "messages.deleteRevokedExportedChatInvites", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "admin_id", + "type": "InputUser" + } + ], + "type": "Bool" + }, + { + "id": "-731601877", + "method": "messages.deleteExportedChatInvite", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "link", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "958457583", + "method": "messages.getAdminsWithInvites", + "params": [ + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "messages.ChatAdminsWithInvites" + }, + { + "id": "-553329330", + "method": "messages.getChatInviteImporters", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "requested", + "type": "flags.0?true" + }, + { + "name": "subscription_expired", + "type": "flags.3?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "link", + "type": "flags.1?string" + }, + { + "name": "q", + "type": "flags.2?string" + }, + { + "name": "offset_date", + "type": "int" + }, + { + "name": "offset_user", + "type": "InputUser" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "messages.ChatInviteImporters" + }, + { + "id": "-1207017500", + "method": "messages.setHistoryTTL", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "period", + "type": "int" + } + ], + "type": "Updates" + }, + { + "id": "1573261059", + "method": "messages.checkHistoryImportPeer", + "params": [ + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "messages.CheckedHistoryImportPeer" + }, + { + "id": "135398089", + "method": "messages.setChatTheme", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "theme", + "type": "InputChatTheme" + } + ], + "type": "Updates" + }, + { + "id": "834782287", + "method": "messages.getMessageReadParticipants", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + } + ], + "type": "Vector" + }, + { + "id": "1789130429", + "method": "messages.getSearchResultsCalendar", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "saved_peer_id", + "type": "flags.2?InputPeer" + }, + { + "name": "filter", + "type": "MessagesFilter" + }, + { + "name": "offset_id", + "type": "int" + }, + { + "name": "offset_date", + "type": "int" + } + ], + "type": "messages.SearchResultsCalendar" + }, + { + "id": "-1669386480", + "method": "messages.getSearchResultsPositions", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "saved_peer_id", + "type": "flags.2?InputPeer" + }, + { + "name": "filter", + "type": "MessagesFilter" + }, + { + "name": "offset_id", + "type": "int" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "messages.SearchResultsPositions" + }, + { + "id": "2145904661", + "method": "messages.hideChatJoinRequest", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "approved", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "user_id", + "type": "InputUser" + } + ], + "type": "Updates" + }, + { + "id": "-528091926", + "method": "messages.hideAllChatJoinRequests", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "approved", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "link", + "type": "flags.1?string" + } + ], + "type": "Updates" + }, + { + "id": "-1308091851", + "method": "messages.toggleNoForwards", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "enabled", + "type": "Bool" + }, + { + "name": "request_msg_id", + "type": "flags.0?int" + } + ], + "type": "Updates" + }, + { + "id": "-855777386", + "method": "messages.saveDefaultSendAs", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "send_as", + "type": "InputPeer" + } + ], + "type": "Bool" + }, + { + "id": "-754091820", + "method": "messages.sendReaction", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "big", + "type": "flags.1?true" + }, + { + "name": "add_to_recent", + "type": "flags.2?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "reaction", + "type": "flags.0?Vector" + } + ], + "type": "Updates" + }, + { + "id": "-1950707482", + "method": "messages.getMessagesReactions", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "Vector" + } + ], + "type": "Updates" + }, + { + "id": "1176190792", + "method": "messages.getMessageReactionsList", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "reaction", + "type": "flags.0?Reaction" + }, + { + "name": "offset", + "type": "flags.1?string" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "messages.MessageReactionsList" + }, + { + "id": "-2041895551", + "method": "messages.setChatAvailableReactions", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "available_reactions", + "type": "ChatReactions" + }, + { + "name": "reactions_limit", + "type": "flags.0?int" + }, + { + "name": "paid_enabled", + "type": "flags.1?Bool" + } + ], + "type": "Updates" + }, + { + "id": "417243308", + "method": "messages.getAvailableReactions", + "params": [ + { + "name": "hash", + "type": "int" + } + ], + "type": "messages.AvailableReactions" + }, + { + "id": "1330094102", + "method": "messages.setDefaultReaction", + "params": [ + { + "name": "reaction", + "type": "Reaction" + } + ], + "type": "Bool" + }, + { + "id": "-1511079099", + "method": "messages.translateText", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "flags.0?InputPeer" + }, + { + "name": "id", + "type": "flags.0?Vector" + }, + { + "name": "text", + "type": "flags.1?Vector" + }, + { + "name": "to_lang", + "type": "string" + }, + { + "name": "tone", + "type": "flags.2?string" + } + ], + "type": "messages.TranslatedText" + }, + { + "id": "-1115713364", + "method": "messages.getUnreadReactions", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "top_msg_id", + "type": "flags.0?int" + }, + { + "name": "saved_peer_id", + "type": "flags.1?InputPeer" + }, + { + "name": "offset_id", + "type": "int" + }, + { + "name": "add_offset", + "type": "int" + }, + { + "name": "limit", + "type": "int" + }, + { + "name": "max_id", + "type": "int" + }, + { + "name": "min_id", + "type": "int" + } + ], + "type": "messages.Messages" + }, + { + "id": "-1631301741", + "method": "messages.readReactions", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "top_msg_id", + "type": "flags.0?int" + }, + { + "name": "saved_peer_id", + "type": "flags.1?InputPeer" + } + ], + "type": "messages.AffectedHistory" + }, + { + "id": "276705696", + "method": "messages.searchSentMedia", + "params": [ + { + "name": "q", + "type": "string" + }, + { + "name": "filter", + "type": "MessagesFilter" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "messages.Messages" + }, + { + "id": "385663691", + "method": "messages.getAttachMenuBots", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "AttachMenuBots" + }, + { + "id": "1998676370", + "method": "messages.getAttachMenuBot", + "params": [ + { + "name": "bot", + "type": "InputUser" + } + ], + "type": "AttachMenuBotsBot" + }, + { + "id": "1777704297", + "method": "messages.toggleBotInAttachMenu", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "write_allowed", + "type": "flags.0?true" + }, + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "enabled", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "647873217", + "method": "messages.requestWebView", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "from_bot_menu", + "type": "flags.4?true" + }, + { + "name": "silent", + "type": "flags.5?true" + }, + { + "name": "compact", + "type": "flags.7?true" + }, + { + "name": "fullscreen", + "type": "flags.8?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "url", + "type": "flags.1?string" + }, + { + "name": "start_param", + "type": "flags.3?string" + }, + { + "name": "theme_params", + "type": "flags.2?DataJSON" + }, + { + "name": "platform", + "type": "string" + }, + { + "name": "reply_to", + "type": "flags.0?InputReplyTo" + }, + { + "name": "send_as", + "type": "flags.13?InputPeer" + } + ], + "type": "WebViewResult" + }, + { + "id": "-1328014717", + "method": "messages.prolongWebView", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "silent", + "type": "flags.5?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "query_id", + "type": "long" + }, + { + "name": "reply_to", + "type": "flags.0?InputReplyTo" + }, + { + "name": "send_as", + "type": "flags.13?InputPeer" + } + ], + "type": "Bool" + }, + { + "id": "1094336115", + "method": "messages.requestSimpleWebView", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "from_switch_webview", + "type": "flags.1?true" + }, + { + "name": "from_side_menu", + "type": "flags.2?true" + }, + { + "name": "compact", + "type": "flags.7?true" + }, + { + "name": "fullscreen", + "type": "flags.8?true" + }, + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "url", + "type": "flags.3?string" + }, + { + "name": "start_param", + "type": "flags.4?string" + }, + { + "name": "theme_params", + "type": "flags.0?DataJSON" + }, + { + "name": "platform", + "type": "string" + } + ], + "type": "WebViewResult" + }, + { + "id": "172168437", + "method": "messages.sendWebViewResultMessage", + "params": [ + { + "name": "bot_query_id", + "type": "string" + }, + { + "name": "result", + "type": "InputBotInlineResult" + } + ], + "type": "WebViewMessageSent" + }, + { + "id": "-603831608", + "method": "messages.sendWebViewData", + "params": [ + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "random_id", + "type": "long" + }, + { + "name": "button_text", + "type": "string" + }, + { + "name": "data", + "type": "string" + } + ], + "type": "Updates" + }, + { + "id": "647928393", + "method": "messages.transcribeAudio", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + } + ], + "type": "messages.TranscribedAudio" + }, + { + "id": "2132608815", + "method": "messages.rateTranscribedAudio", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "transcription_id", + "type": "long" + }, + { + "name": "good", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "-643100844", + "method": "messages.getCustomEmojiDocuments", + "params": [ + { + "name": "document_id", + "type": "Vector" + } + ], + "type": "Vector" + }, + { + "id": "-67329649", + "method": "messages.getEmojiStickers", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.AllStickers" + }, + { + "id": "248473398", + "method": "messages.getFeaturedEmojiStickers", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.FeaturedStickers" + }, + { + "id": "1063567478", + "method": "messages.reportReaction", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "reaction_peer", + "type": "InputPeer" + } + ], + "type": "Bool" + }, + { + "id": "-1149164102", + "method": "messages.getTopReactions", + "params": [ + { + "name": "limit", + "type": "int" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.Reactions" + }, + { + "id": "960896434", + "method": "messages.getRecentReactions", + "params": [ + { + "name": "limit", + "type": "int" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.Reactions" + }, + { + "id": "-1644236876", + "method": "messages.clearRecentReactions", + "params": [], + "type": "Bool" + }, + { + "id": "-2064119788", + "method": "messages.getExtendedMedia", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "Vector" + } + ], + "type": "Updates" + }, + { + "id": "-1632299963", + "method": "messages.setDefaultHistoryTTL", + "params": [ + { + "name": "period", + "type": "int" + } + ], + "type": "Bool" + }, + { + "id": "1703637384", + "method": "messages.getDefaultHistoryTTL", + "params": [], + "type": "DefaultHistoryTTL" + }, + { + "id": "1818030759", + "method": "messages.sendBotRequestedPeer", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "flags.0?int" + }, + { + "name": "webapp_req_id", + "type": "flags.1?string" + }, + { + "name": "button_id", + "type": "int" + }, + { + "name": "requested_peers", + "type": "Vector" + } + ], + "type": "Updates" + }, + { + "id": "1955122779", + "method": "messages.getEmojiGroups", + "params": [ + { + "name": "hash", + "type": "int" + } + ], + "type": "messages.EmojiGroups" + }, + { + "id": "785209037", + "method": "messages.getEmojiStatusGroups", + "params": [ + { + "name": "hash", + "type": "int" + } + ], + "type": "messages.EmojiGroups" + }, + { + "id": "564480243", + "method": "messages.getEmojiProfilePhotoGroups", + "params": [ + { + "name": "hash", + "type": "int" + } + ], + "type": "messages.EmojiGroups" + }, + { + "id": "739360983", + "method": "messages.searchCustomEmoji", + "params": [ + { + "name": "emoticon", + "type": "string" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "EmojiList" + }, + { + "id": "-461589127", + "method": "messages.togglePeerTranslations", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "disabled", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "Bool" + }, + { + "id": "889046467", + "method": "messages.getBotApp", + "params": [ + { + "name": "app", + "type": "InputBotApp" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.BotApp" + }, + { + "id": "1398901710", + "method": "messages.requestAppWebView", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "write_allowed", + "type": "flags.0?true" + }, + { + "name": "compact", + "type": "flags.7?true" + }, + { + "name": "fullscreen", + "type": "flags.8?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "app", + "type": "InputBotApp" + }, + { + "name": "start_param", + "type": "flags.1?string" + }, + { + "name": "theme_params", + "type": "flags.2?DataJSON" + }, + { + "name": "platform", + "type": "string" + } + ], + "type": "WebViewResult" + }, + { + "id": "-1879389471", + "method": "messages.setChatWallPaper", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "for_both", + "type": "flags.3?true" + }, + { + "name": "revert", + "type": "flags.4?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "wallpaper", + "type": "flags.0?InputWallPaper" + }, + { + "name": "settings", + "type": "flags.2?WallPaperSettings" + }, + { + "name": "id", + "type": "flags.1?int" + } + ], + "type": "Updates" + }, + { + "id": "-1833678516", + "method": "messages.searchEmojiStickerSets", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "exclude_featured", + "type": "flags.0?true" + }, + { + "name": "q", + "type": "string" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.FoundStickerSets" + }, + { + "id": "512883865", + "method": "messages.getSavedDialogs", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "exclude_pinned", + "type": "flags.0?true" + }, + { + "name": "parent_peer", + "type": "flags.1?InputPeer" + }, + { + "name": "offset_date", + "type": "int" + }, + { + "name": "offset_id", + "type": "int" + }, + { + "name": "offset_peer", + "type": "InputPeer" + }, + { + "name": "limit", + "type": "int" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.SavedDialogs" + }, + { + "id": "-1718964215", + "method": "messages.getSavedHistory", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "parent_peer", + "type": "flags.0?InputPeer" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "offset_id", + "type": "int" + }, + { + "name": "offset_date", + "type": "int" + }, + { + "name": "add_offset", + "type": "int" + }, + { + "name": "limit", + "type": "int" + }, + { + "name": "max_id", + "type": "int" + }, + { + "name": "min_id", + "type": "int" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.Messages" + }, + { + "id": "1304758367", + "method": "messages.deleteSavedHistory", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "parent_peer", + "type": "flags.0?InputPeer" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "max_id", + "type": "int" + }, + { + "name": "min_date", + "type": "flags.2?int" + }, + { + "name": "max_date", + "type": "flags.3?int" + } + ], + "type": "messages.AffectedHistory" + }, + { + "id": "-700607264", + "method": "messages.getPinnedSavedDialogs", + "params": [], + "type": "messages.SavedDialogs" + }, + { + "id": "-1400783906", + "method": "messages.toggleSavedDialogPin", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "pinned", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputDialogPeer" + } + ], + "type": "Bool" + }, + { + "id": "-1955502713", + "method": "messages.reorderPinnedSavedDialogs", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "force", + "type": "flags.0?true" + }, + { + "name": "order", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "909631579", + "method": "messages.getSavedReactionTags", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "flags.0?InputPeer" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.SavedReactionTags" + }, + { + "id": "1613331948", + "method": "messages.updateSavedReactionTag", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "reaction", + "type": "Reaction" + }, + { + "name": "title", + "type": "flags.0?string" + } + ], + "type": "Bool" + }, + { + "id": "-1107741656", + "method": "messages.getDefaultTagReactions", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.Reactions" + }, + { + "id": "-1941176739", + "method": "messages.getOutboxReadDate", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + } + ], + "type": "OutboxReadDate" + }, + { + "id": "-729550168", + "method": "messages.getQuickReplies", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.QuickReplies" + }, + { + "id": "1613961479", + "method": "messages.reorderQuickReplies", + "params": [ + { + "name": "order", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "-237962285", + "method": "messages.checkQuickReplyShortcut", + "params": [ + { + "name": "shortcut", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "1543519471", + "method": "messages.editQuickReplyShortcut", + "params": [ + { + "name": "shortcut_id", + "type": "int" + }, + { + "name": "shortcut", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "1019234112", + "method": "messages.deleteQuickReplyShortcut", + "params": [ + { + "name": "shortcut_id", + "type": "int" + } + ], + "type": "Bool" + }, + { + "id": "-1801153085", + "method": "messages.getQuickReplyMessages", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "shortcut_id", + "type": "int" + }, + { + "name": "id", + "type": "flags.0?Vector" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.Messages" + }, + { + "id": "1819610593", + "method": "messages.sendQuickReplyMessages", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "shortcut_id", + "type": "int" + }, + { + "name": "id", + "type": "Vector" + }, + { + "name": "random_id", + "type": "Vector" + } + ], + "type": "Updates" + }, + { + "id": "-519706352", + "method": "messages.deleteQuickReplyMessages", + "params": [ + { + "name": "shortcut_id", + "type": "int" + }, + { + "name": "id", + "type": "Vector" + } + ], + "type": "Updates" + }, + { + "id": "-47326647", + "method": "messages.toggleDialogFilterTags", + "params": [ + { + "name": "enabled", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "-793386500", + "method": "messages.getMyStickers", + "params": [ + { + "name": "offset_id", + "type": "long" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "messages.MyStickers" + }, + { + "id": "500711669", + "method": "messages.getEmojiStickerGroups", + "params": [ + { + "name": "hash", + "type": "int" + } + ], + "type": "messages.EmojiGroups" + }, + { + "id": "-559805895", + "method": "messages.getAvailableEffects", + "params": [ + { + "name": "hash", + "type": "int" + } + ], + "type": "messages.AvailableEffects" + }, + { + "id": "92925557", + "method": "messages.editFactCheck", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "text", + "type": "TextWithEntities" + } + ], + "type": "Updates" + }, + { + "id": "-774204404", + "method": "messages.deleteFactCheck", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + } + ], + "type": "Updates" + }, + { + "id": "-1177696786", + "method": "messages.getFactCheck", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "Vector" + } + ], + "type": "Vector" + }, + { + "id": "-908059013", + "method": "messages.requestMainWebView", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "compact", + "type": "flags.7?true" + }, + { + "name": "fullscreen", + "type": "flags.8?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "start_param", + "type": "flags.1?string" + }, + { + "name": "theme_params", + "type": "flags.0?DataJSON" + }, + { + "name": "platform", + "type": "string" + } + ], + "type": "WebViewResult" + }, + { + "id": "1488702288", + "method": "messages.sendPaidReaction", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "count", + "type": "int" + }, + { + "name": "random_id", + "type": "long" + }, + { + "name": "private", + "type": "flags.0?PaidReactionPrivacy" + } + ], + "type": "Updates" + }, + { + "id": "1129874869", + "method": "messages.togglePaidReactionPrivacy", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "private", + "type": "PaidReactionPrivacy" + } + ], + "type": "Bool" + }, + { + "id": "1193563562", + "method": "messages.getPaidReactionPrivacy", + "params": [], + "type": "Updates" + }, + { + "id": "647902787", + "method": "messages.viewSponsoredMessage", + "params": [ + { + "name": "random_id", + "type": "bytes" + } + ], + "type": "Bool" + }, + { + "id": "-2110454402", + "method": "messages.clickSponsoredMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "media", + "type": "flags.0?true" + }, + { + "name": "fullscreen", + "type": "flags.1?true" + }, + { + "name": "random_id", + "type": "bytes" + } + ], + "type": "Bool" + }, + { + "id": "315355332", + "method": "messages.reportSponsoredMessage", + "params": [ + { + "name": "random_id", + "type": "bytes" + }, + { + "name": "option", + "type": "bytes" + } + ], + "type": "channels.SponsoredMessageReportResult" + }, + { + "id": "1030547536", + "method": "messages.getSponsoredMessages", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "flags.0?int" + } + ], + "type": "messages.SponsoredMessages" + }, + { + "id": "-232816849", + "method": "messages.savePreparedInlineMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "result", + "type": "InputBotInlineResult" + }, + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "peer_types", + "type": "flags.0?Vector" + } + ], + "type": "messages.BotPreparedInlineMessage" + }, + { + "id": "-2055291464", + "method": "messages.getPreparedInlineMessage", + "params": [ + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "id", + "type": "string" + } + ], + "type": "messages.PreparedInlineMessage" + }, + { + "id": "699516522", + "method": "messages.searchStickers", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "emojis", + "type": "flags.0?true" + }, + { + "name": "q", + "type": "string" + }, + { + "name": "emoticon", + "type": "string" + }, + { + "name": "lang_code", + "type": "Vector" + }, + { + "name": "offset", + "type": "int" + }, + { + "name": "limit", + "type": "int" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.FoundStickers" + }, + { + "id": "1517122453", + "method": "messages.reportMessagesDelivery", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "push", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "1869585558", + "method": "messages.getSavedDialogsByID", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "parent_peer", + "type": "flags.1?InputPeer" + }, + { + "name": "ids", + "type": "Vector" + } + ], + "type": "messages.SavedDialogs" + }, + { + "id": "-1169540261", + "method": "messages.readSavedHistory", + "params": [ + { + "name": "parent_peer", + "type": "InputPeer" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "max_id", + "type": "int" + } + ], + "type": "Bool" + }, + { + "id": "-740282076", + "method": "messages.toggleTodoCompleted", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "completed", + "type": "Vector" + }, + { + "name": "incompleted", + "type": "Vector" + } + ], + "type": "Updates" + }, + { + "id": "564531287", + "method": "messages.appendTodoList", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "list", + "type": "Vector" + } + ], + "type": "Updates" + }, + { + "id": "-2130229924", + "method": "messages.toggleSuggestedPostApproval", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "reject", + "type": "flags.1?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "schedule_date", + "type": "flags.0?int" + }, + { + "name": "reject_comment", + "type": "flags.2?string" + } + ], + "type": "Updates" + }, + { + "id": "1000635391", + "method": "messages.getForumTopics", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "q", + "type": "flags.0?string" + }, + { + "name": "offset_date", + "type": "int" + }, + { + "name": "offset_id", + "type": "int" + }, + { + "name": "offset_topic", + "type": "int" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "messages.ForumTopics" + }, + { + "id": "-1358280184", + "method": "messages.getForumTopicsByID", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "topics", + "type": "Vector" + } + ], + "type": "messages.ForumTopics" + }, + { + "id": "-825487052", + "method": "messages.editForumTopic", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "topic_id", + "type": "int" + }, + { + "name": "title", + "type": "flags.0?string" + }, + { + "name": "icon_emoji_id", + "type": "flags.1?long" + }, + { + "name": "closed", + "type": "flags.2?Bool" + }, + { + "name": "hidden", + "type": "flags.3?Bool" + } + ], + "type": "Updates" + }, + { + "id": "392032849", + "method": "messages.updatePinnedForumTopic", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "topic_id", + "type": "int" + }, + { + "name": "pinned", + "type": "Bool" + } + ], + "type": "Updates" + }, + { + "id": "242762224", + "method": "messages.reorderPinnedForumTopics", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "force", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "order", + "type": "Vector" + } + ], + "type": "Updates" + }, + { + "id": "798540757", + "method": "messages.createForumTopic", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "title_missing", + "type": "flags.4?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "icon_color", + "type": "flags.0?int" + }, + { + "name": "icon_emoji_id", + "type": "flags.3?long" + }, + { + "name": "random_id", + "type": "long" + }, + { + "name": "send_as", + "type": "flags.2?InputPeer" + } + ], + "type": "Updates" + }, + { + "id": "-763269360", + "method": "messages.deleteTopicHistory", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "top_msg_id", + "type": "int" + } + ], + "type": "messages.AffectedHistory" + }, + { + "id": "-75592537", + "method": "messages.getEmojiGameInfo", + "params": [], + "type": "messages.EmojiGameInfo" + }, + { + "id": "-1413754042", + "method": "messages.summarizeText", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "to_lang", + "type": "flags.0?string" + }, + { + "name": "tone", + "type": "flags.2?string" + } + ], + "type": "TextWithEntities" + }, + { + "id": "-146556841", + "method": "messages.editChatCreator", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "password", + "type": "InputCheckPasswordSRP" + } + ], + "type": "Updates" + }, + { + "id": "998051494", + "method": "messages.getFutureChatCreatorAfterLeave", + "params": [ + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "User" + }, + { + "id": "-1609616720", + "method": "messages.editChatParticipantRank", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "participant", + "type": "InputPeer" + }, + { + "name": "rank", + "type": "string" + } + ], + "type": "Updates" + }, + { + "id": "893610940", + "method": "messages.declineUrlAuth", + "params": [ + { + "name": "url", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "-911967477", + "method": "messages.checkUrlAuthMatchCode", + "params": [ + { + "name": "url", + "type": "string" + }, + { + "name": "match_code", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "-622017143", + "method": "messages.composeMessageWithAI", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "proofread", + "type": "flags.0?true" + }, + { + "name": "emojify", + "type": "flags.3?true" + }, + { + "name": "text", + "type": "TextWithEntities" + }, + { + "name": "translate_to_lang", + "type": "flags.1?string" + }, + { + "name": "tone", + "type": "flags.2?InputAiComposeTone" + } + ], + "type": "messages.ComposedMessageWithAI" + }, + { + "id": "1080542694", + "method": "messages.reportReadMetrics", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "metrics", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "-574826471", + "method": "messages.reportMusicListen", + "params": [ + { + "name": "id", + "type": "InputDocument" + }, + { + "name": "listened_duration", + "type": "int" + } + ], + "type": "Bool" + }, + { + "id": "431770477", + "method": "messages.addPollAnswer", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "answer", + "type": "PollAnswer" + } + ], + "type": "Updates" + }, + { + "id": "-1400568411", + "method": "messages.deletePollAnswer", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "option", + "type": "bytes" + } + ], + "type": "Updates" + }, + { + "id": "1126722802", + "method": "messages.getUnreadPollVotes", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "top_msg_id", + "type": "flags.0?int" + }, + { + "name": "offset_id", + "type": "int" + }, + { + "name": "add_offset", + "type": "int" + }, + { + "name": "limit", + "type": "int" + }, + { + "name": "max_id", + "type": "int" + }, + { + "name": "min_id", + "type": "int" + } + ], + "type": "messages.Messages" + }, + { + "id": "388019416", + "method": "messages.readPollVotes", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "top_msg_id", + "type": "flags.0?int" + } + ], + "type": "messages.AffectedHistory" + }, + { + "id": "-1192163613", + "method": "messages.setBotGuestChatResult", + "params": [ + { + "name": "query_id", + "type": "long" + }, + { + "name": "result", + "type": "InputBotInlineResult" + } + ], + "type": "InputBotInlineMessageID" + }, + { + "id": "-1598550792", + "method": "messages.deleteParticipantReactions", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "participant", + "type": "InputPeer" + } + ], + "type": "Bool" + }, + { + "id": "-474482644", + "method": "messages.deleteParticipantReaction", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "participant", + "type": "InputPeer" + } + ], + "type": "Updates" + }, + { + "id": "1442515350", + "method": "messages.getPersonalChannelHistory", + "params": [ + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "limit", + "type": "int" + }, + { + "name": "max_id", + "type": "int" + }, + { + "name": "min_id", + "type": "int" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "messages.Messages" + }, + { + "id": "-304838614", + "method": "updates.getState", + "params": [], + "type": "updates.State" + }, + { + "id": "432207715", + "method": "updates.getDifference", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "pts_limit", + "type": "flags.1?int" + }, + { + "name": "pts_total_limit", + "type": "flags.0?int" + }, + { + "name": "date", + "type": "int" + }, + { + "name": "qts", + "type": "int" + }, + { + "name": "qts_limit", + "type": "flags.2?int" + } + ], + "type": "updates.Difference" + }, + { + "id": "51854712", + "method": "updates.getChannelDifference", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "force", + "type": "flags.0?true" + }, + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "filter", + "type": "ChannelMessagesFilter" + }, + { + "name": "pts", + "type": "int" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "updates.ChannelDifference" + }, + { + "id": "166207545", + "method": "photos.updateProfilePhoto", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "fallback", + "type": "flags.0?true" + }, + { + "name": "bot", + "type": "flags.1?InputUser" + }, + { + "name": "id", + "type": "InputPhoto" + } + ], + "type": "photos.Photo" + }, + { + "id": "59286453", + "method": "photos.uploadProfilePhoto", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "fallback", + "type": "flags.3?true" + }, + { + "name": "bot", + "type": "flags.5?InputUser" + }, + { + "name": "file", + "type": "flags.0?InputFile" + }, + { + "name": "video", + "type": "flags.1?InputFile" + }, + { + "name": "video_start_ts", + "type": "flags.2?double" + }, + { + "name": "video_emoji_markup", + "type": "flags.4?VideoSize" + } + ], + "type": "photos.Photo" + }, + { + "id": "-2016444625", + "method": "photos.deletePhotos", + "params": [ + { + "name": "id", + "type": "Vector" + } + ], + "type": "Vector" + }, + { + "id": "-1848823128", + "method": "photos.getUserPhotos", + "params": [ + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "offset", + "type": "int" + }, + { + "name": "max_id", + "type": "long" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "photos.Photos" + }, + { + "id": "-515093903", + "method": "photos.uploadContactProfilePhoto", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "suggest", + "type": "flags.3?true" + }, + { + "name": "save", + "type": "flags.4?true" + }, + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "file", + "type": "flags.0?InputFile" + }, + { + "name": "video", + "type": "flags.1?InputFile" + }, + { + "name": "video_start_ts", + "type": "flags.2?double" + }, + { + "name": "video_emoji_markup", + "type": "flags.5?VideoSize" + } + ], + "type": "photos.Photo" + }, + { + "id": "-1291540959", + "method": "upload.saveFilePart", + "params": [ + { + "name": "file_id", + "type": "long" + }, + { + "name": "file_part", + "type": "int" + }, + { + "name": "bytes", + "type": "bytes" + } + ], + "type": "Bool" + }, + { + "id": "-1101843010", + "method": "upload.getFile", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "precise", + "type": "flags.0?true" + }, + { + "name": "cdn_supported", + "type": "flags.1?true" + }, + { + "name": "location", + "type": "InputFileLocation" + }, + { + "name": "offset", + "type": "long" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "upload.File" + }, + { + "id": "-562337987", + "method": "upload.saveBigFilePart", + "params": [ + { + "name": "file_id", + "type": "long" + }, + { + "name": "file_part", + "type": "int" + }, + { + "name": "file_total_parts", + "type": "int" + }, + { + "name": "bytes", + "type": "bytes" + } + ], + "type": "Bool" + }, + { + "id": "619086221", + "method": "upload.getWebFile", + "params": [ + { + "name": "location", + "type": "InputWebFileLocation" + }, + { + "name": "offset", + "type": "int" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "upload.WebFile" + }, + { + "id": "962554330", + "method": "upload.getCdnFile", + "params": [ + { + "name": "file_token", + "type": "bytes" + }, + { + "name": "offset", + "type": "long" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "upload.CdnFile" + }, + { + "id": "-1691921240", + "method": "upload.reuploadCdnFile", + "params": [ + { + "name": "file_token", + "type": "bytes" + }, + { + "name": "request_token", + "type": "bytes" + } + ], + "type": "Vector" + }, + { + "id": "-1847836879", + "method": "upload.getCdnFileHashes", + "params": [ + { + "name": "file_token", + "type": "bytes" + }, + { + "name": "offset", + "type": "long" + } + ], + "type": "Vector" + }, + { + "id": "-1856595926", + "method": "upload.getFileHashes", + "params": [ + { + "name": "location", + "type": "InputFileLocation" + }, + { + "name": "offset", + "type": "long" + } + ], + "type": "Vector" + }, + { + "id": "-990308245", + "method": "help.getConfig", + "params": [], + "type": "Config" + }, + { + "id": "531836966", + "method": "help.getNearestDc", + "params": [], + "type": "NearestDc" + }, + { + "id": "1378703997", + "method": "help.getAppUpdate", + "params": [ + { + "name": "source", + "type": "string" + } + ], + "type": "help.AppUpdate" + }, + { + "id": "1295590211", + "method": "help.getInviteText", + "params": [], + "type": "help.InviteText" + }, + { + "id": "-1663104819", + "method": "help.getSupport", + "params": [], + "type": "help.Support" + }, + { + "id": "-333262899", + "method": "help.setBotUpdatesStatus", + "params": [ + { + "name": "pending_updates_count", + "type": "int" + }, + { + "name": "message", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "1375900482", + "method": "help.getCdnConfig", + "params": [], + "type": "CdnConfig" + }, + { + "id": "1036054804", + "method": "help.getRecentMeUrls", + "params": [ + { + "name": "referer", + "type": "string" + } + ], + "type": "help.RecentMeUrls" + }, + { + "id": "749019089", + "method": "help.getTermsOfServiceUpdate", + "params": [], + "type": "help.TermsOfServiceUpdate" + }, + { + "id": "-294455398", + "method": "help.acceptTermsOfService", + "params": [ + { + "name": "id", + "type": "DataJSON" + } + ], + "type": "Bool" + }, + { + "id": "1072547679", + "method": "help.getDeepLinkInfo", + "params": [ + { + "name": "path", + "type": "string" + } + ], + "type": "help.DeepLinkInfo" + }, + { + "id": "1642330196", + "method": "help.getAppConfig", + "params": [ + { + "name": "hash", + "type": "int" + } + ], + "type": "help.AppConfig" + }, + { + "id": "1862465352", + "method": "help.saveAppLog", + "params": [ + { + "name": "events", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "-966677240", + "method": "help.getPassportConfig", + "params": [ + { + "name": "hash", + "type": "int" + } + ], + "type": "help.PassportConfig" + }, + { + "id": "-748624084", + "method": "help.getSupportName", + "params": [], + "type": "help.SupportName" + }, + { + "id": "59377875", + "method": "help.getUserInfo", + "params": [ + { + "name": "user_id", + "type": "InputUser" + } + ], + "type": "help.UserInfo" + }, + { + "id": "1723407216", + "method": "help.editUserInfo", + "params": [ + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "entities", + "type": "Vector" + } + ], + "type": "help.UserInfo" + }, + { + "id": "-1063816159", + "method": "help.getPromoData", + "params": [], + "type": "help.PromoData" + }, + { + "id": "505748629", + "method": "help.hidePromoData", + "params": [ + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "Bool" + }, + { + "id": "-183649631", + "method": "help.dismissSuggestion", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "suggestion", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "1935116200", + "method": "help.getCountriesList", + "params": [ + { + "name": "lang_code", + "type": "string" + }, + { + "name": "hash", + "type": "int" + } + ], + "type": "help.CountriesList" + }, + { + "id": "-1206152236", + "method": "help.getPremiumPromo", + "params": [], + "type": "help.PremiumPromo" + }, + { + "id": "-629083089", + "method": "help.getPeerColors", + "params": [ + { + "name": "hash", + "type": "int" + } + ], + "type": "help.PeerColors" + }, + { + "id": "-1412453891", + "method": "help.getPeerProfileColors", + "params": [ + { + "name": "hash", + "type": "int" + } + ], + "type": "help.PeerColors" + }, + { + "id": "1236468288", + "method": "help.getTimezonesList", + "params": [ + { + "name": "hash", + "type": "int" + } + ], + "type": "help.TimezonesList" + }, + { + "id": "-871347913", + "method": "channels.readHistory", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "max_id", + "type": "int" + } + ], + "type": "Bool" + }, + { + "id": "-2067661490", + "method": "channels.deleteMessages", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "id", + "type": "Vector" + } + ], + "type": "messages.AffectedMessages" + }, + { + "id": "-196443371", + "method": "channels.reportSpam", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "participant", + "type": "InputPeer" + }, + { + "name": "id", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "-1383294429", + "method": "channels.getMessages", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "id", + "type": "Vector" + } + ], + "type": "messages.Messages" + }, + { + "id": "2010044880", + "method": "channels.getParticipants", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "filter", + "type": "ChannelParticipantsFilter" + }, + { + "name": "offset", + "type": "int" + }, + { + "name": "limit", + "type": "int" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "channels.ChannelParticipants" + }, + { + "id": "-1599378234", + "method": "channels.getParticipant", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "participant", + "type": "InputPeer" + } + ], + "type": "channels.ChannelParticipant" + }, + { + "id": "176122811", + "method": "channels.getChannels", + "params": [ + { + "name": "id", + "type": "Vector" + } + ], + "type": "messages.Chats" + }, + { + "id": "141781513", + "method": "channels.getFullChannel", + "params": [ + { + "name": "channel", + "type": "InputChannel" + } + ], + "type": "messages.ChatFull" + }, + { + "id": "-1862244601", + "method": "channels.createChannel", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "broadcast", + "type": "flags.0?true" + }, + { + "name": "megagroup", + "type": "flags.1?true" + }, + { + "name": "for_import", + "type": "flags.3?true" + }, + { + "name": "forum", + "type": "flags.5?true" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "about", + "type": "string" + }, + { + "name": "geo_point", + "type": "flags.2?InputGeoPoint" + }, + { + "name": "address", + "type": "flags.2?string" + }, + { + "name": "ttl_period", + "type": "flags.4?int" + } + ], + "type": "Updates" + }, + { + "id": "-1701270168", + "method": "channels.editAdmin", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "admin_rights", + "type": "ChatAdminRights" + }, + { + "name": "rank", + "type": "flags.0?string" + } + ], + "type": "Updates" + }, + { + "id": "1450044624", + "method": "channels.editTitle", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "title", + "type": "string" + } + ], + "type": "Updates" + }, + { + "id": "-248621111", + "method": "channels.editPhoto", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "photo", + "type": "InputChatPhoto" + } + ], + "type": "Updates" + }, + { + "id": "283557164", + "method": "channels.checkUsername", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "username", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "890549214", + "method": "channels.updateUsername", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "username", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "615851205", + "method": "channels.joinChannel", + "params": [ + { + "name": "channel", + "type": "InputChannel" + } + ], + "type": "Updates" + }, + { + "id": "-130635115", + "method": "channels.leaveChannel", + "params": [ + { + "name": "channel", + "type": "InputChannel" + } + ], + "type": "Updates" + }, + { + "id": "-907854508", + "method": "channels.inviteToChannel", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "messages.InvitedUsers" + }, + { + "id": "-1072619549", + "method": "channels.deleteChannel", + "params": [ + { + "name": "channel", + "type": "InputChannel" + } + ], + "type": "Updates" + }, + { + "id": "-432034325", + "method": "channels.exportMessageLink", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "grouped", + "type": "flags.0?true" + }, + { + "name": "thread", + "type": "flags.1?true" + }, + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "id", + "type": "int" + } + ], + "type": "ExportedMessageLink" + }, + { + "id": "1099781276", + "method": "channels.toggleSignatures", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "signatures_enabled", + "type": "flags.0?true" + }, + { + "name": "profiles_enabled", + "type": "flags.1?true" + }, + { + "name": "channel", + "type": "InputChannel" + } + ], + "type": "Updates" + }, + { + "id": "-122669393", + "method": "channels.getAdminedPublicChannels", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "by_location", + "type": "flags.0?true" + }, + { + "name": "check_limit", + "type": "flags.1?true" + }, + { + "name": "for_personal", + "type": "flags.2?true" + } + ], + "type": "messages.Chats" + }, + { + "id": "-1763259007", + "method": "channels.editBanned", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "participant", + "type": "InputPeer" + }, + { + "name": "banned_rights", + "type": "ChatBannedRights" + } + ], + "type": "Updates" + }, + { + "id": "870184064", + "method": "channels.getAdminLog", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "q", + "type": "string" + }, + { + "name": "events_filter", + "type": "flags.0?ChannelAdminLogEventsFilter" + }, + { + "name": "admins", + "type": "flags.1?Vector" + }, + { + "name": "max_id", + "type": "long" + }, + { + "name": "min_id", + "type": "long" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "channels.AdminLogResults" + }, + { + "id": "-359881479", + "method": "channels.setStickers", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "stickerset", + "type": "InputStickerSet" + } + ], + "type": "Bool" + }, + { + "id": "-357180360", + "method": "channels.readMessageContents", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "id", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "-1683319225", + "method": "channels.deleteHistory", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "for_everyone", + "type": "flags.0?true" + }, + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "max_id", + "type": "int" + } + ], + "type": "Updates" + }, + { + "id": "-356796084", + "method": "channels.togglePreHistoryHidden", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "enabled", + "type": "Bool" + } + ], + "type": "Updates" + }, + { + "id": "-2092831552", + "method": "channels.getLeftChannels", + "params": [ + { + "name": "offset", + "type": "int" + } + ], + "type": "messages.Chats" + }, + { + "id": "-170208392", + "method": "channels.getGroupsForDiscussion", + "params": [], + "type": "messages.Chats" + }, + { + "id": "1079520178", + "method": "channels.setDiscussionGroup", + "params": [ + { + "name": "broadcast", + "type": "InputChannel" + }, + { + "name": "group", + "type": "InputChannel" + } + ], + "type": "Bool" + }, + { + "id": "1491484525", + "method": "channels.editLocation", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "geo_point", + "type": "InputGeoPoint" + }, + { + "name": "address", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "-304832784", + "method": "channels.toggleSlowMode", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "seconds", + "type": "int" + } + ], + "type": "Updates" + }, + { + "id": "300429806", + "method": "channels.getInactiveChannels", + "params": [], + "type": "messages.InactiveChats" + }, + { + "id": "187239529", + "method": "channels.convertToGigagroup", + "params": [ + { + "name": "channel", + "type": "InputChannel" + } + ], + "type": "Updates" + }, + { + "id": "-410672065", + "method": "channels.getSendAs", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "for_paid_reactions", + "type": "flags.0?true" + }, + { + "name": "for_live_stories", + "type": "flags.1?true" + }, + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "channels.SendAsPeers" + }, + { + "id": "913655003", + "method": "channels.deleteParticipantHistory", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "participant", + "type": "InputPeer" + } + ], + "type": "messages.AffectedHistory" + }, + { + "id": "-456419968", + "method": "channels.toggleJoinToSend", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "enabled", + "type": "Bool" + } + ], + "type": "Updates" + }, + { + "id": "1277789622", + "method": "channels.toggleJoinRequest", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "enabled", + "type": "Bool" + } + ], + "type": "Updates" + }, + { + "id": "-1268978403", + "method": "channels.reorderUsernames", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "order", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "1358053637", + "method": "channels.toggleUsername", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "username", + "type": "string" + }, + { + "name": "active", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "170155475", + "method": "channels.deactivateAllUsernames", + "params": [ + { + "name": "channel", + "type": "InputChannel" + } + ], + "type": "Bool" + }, + { + "id": "1073174324", + "method": "channels.toggleForum", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "enabled", + "type": "Bool" + }, + { + "name": "tabs", + "type": "Bool" + } + ], + "type": "Updates" + }, + { + "id": "1760814315", + "method": "channels.toggleAntiSpam", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "enabled", + "type": "Bool" + } + ], + "type": "Updates" + }, + { + "id": "-1471109485", + "method": "channels.reportAntiSpamFalsePositive", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "msg_id", + "type": "int" + } + ], + "type": "Bool" + }, + { + "id": "1785624660", + "method": "channels.toggleParticipantsHidden", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "enabled", + "type": "Bool" + } + ], + "type": "Updates" + }, + { + "id": "-659933583", + "method": "channels.updateColor", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "for_profile", + "type": "flags.1?true" + }, + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "color", + "type": "flags.2?int" + }, + { + "name": "background_emoji_id", + "type": "flags.0?long" + } + ], + "type": "Updates" + }, + { + "id": "-1757889771", + "method": "channels.toggleViewForumAsMessages", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "enabled", + "type": "Bool" + } + ], + "type": "Updates" + }, + { + "id": "631707458", + "method": "channels.getChannelRecommendations", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "channel", + "type": "flags.0?InputChannel" + } + ], + "type": "messages.Chats" + }, + { + "id": "-254548312", + "method": "channels.updateEmojiStatus", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "emoji_status", + "type": "EmojiStatus" + } + ], + "type": "Updates" + }, + { + "id": "-1388733202", + "method": "channels.setBoostsToUnblockRestrictions", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "boosts", + "type": "int" + } + ], + "type": "Updates" + }, + { + "id": "1020866743", + "method": "channels.setEmojiStickers", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "stickerset", + "type": "InputStickerSet" + } + ], + "type": "Bool" + }, + { + "id": "-1696000743", + "method": "channels.restrictSponsoredMessages", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "restricted", + "type": "Bool" + } + ], + "type": "Updates" + }, + { + "id": "-221973939", + "method": "channels.searchPosts", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "hashtag", + "type": "flags.0?string" + }, + { + "name": "query", + "type": "flags.1?string" + }, + { + "name": "offset_rate", + "type": "int" + }, + { + "name": "offset_peer", + "type": "InputPeer" + }, + { + "name": "offset_id", + "type": "int" + }, + { + "name": "limit", + "type": "int" + }, + { + "name": "allow_paid_stars", + "type": "flags.2?long" + } + ], + "type": "messages.Messages" + }, + { + "id": "1259483771", + "method": "channels.updatePaidMessagesPrice", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "broadcast_messages_allowed", + "type": "flags.0?true" + }, + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "send_paid_messages_stars", + "type": "long" + } + ], + "type": "Updates" + }, + { + "id": "377471137", + "method": "channels.toggleAutotranslation", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "enabled", + "type": "Bool" + } + ], + "type": "Updates" + }, + { + "id": "-320691994", + "method": "channels.getMessageAuthor", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "id", + "type": "int" + } + ], + "type": "User" + }, + { + "id": "576090389", + "method": "channels.checkSearchPostsFlood", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "query", + "type": "flags.0?string" + } + ], + "type": "SearchPostsFlood" + }, + { + "id": "897842353", + "method": "channels.setMainProfileTab", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "tab", + "type": "ProfileTab" + } + ], + "type": "Bool" + }, + { + "id": "-1440257555", + "method": "bots.sendCustomRequest", + "params": [ + { + "name": "custom_method", + "type": "string" + }, + { + "name": "params", + "type": "DataJSON" + } + ], + "type": "DataJSON" + }, + { + "id": "-434028723", + "method": "bots.answerWebhookJSONQuery", + "params": [ + { + "name": "query_id", + "type": "long" + }, + { + "name": "data", + "type": "DataJSON" + } + ], + "type": "Bool" + }, + { + "id": "85399130", + "method": "bots.setBotCommands", + "params": [ + { + "name": "scope", + "type": "BotCommandScope" + }, + { + "name": "lang_code", + "type": "string" + }, + { + "name": "commands", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "1032708345", + "method": "bots.resetBotCommands", + "params": [ + { + "name": "scope", + "type": "BotCommandScope" + }, + { + "name": "lang_code", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "-481554986", + "method": "bots.getBotCommands", + "params": [ + { + "name": "scope", + "type": "BotCommandScope" + }, + { + "name": "lang_code", + "type": "string" + } + ], + "type": "Vector" + }, + { + "id": "1157944655", + "method": "bots.setBotMenuButton", + "params": [ + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "button", + "type": "BotMenuButton" + } + ], + "type": "Bool" + }, + { + "id": "-1671369944", + "method": "bots.getBotMenuButton", + "params": [ + { + "name": "user_id", + "type": "InputUser" + } + ], + "type": "BotMenuButton" + }, + { + "id": "2021942497", + "method": "bots.setBotBroadcastDefaultAdminRights", + "params": [ + { + "name": "admin_rights", + "type": "ChatAdminRights" + } + ], + "type": "Bool" + }, + { + "id": "-1839281686", + "method": "bots.setBotGroupDefaultAdminRights", + "params": [ + { + "name": "admin_rights", + "type": "ChatAdminRights" + } + ], + "type": "Bool" + }, + { + "id": "282013987", + "method": "bots.setBotInfo", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "bot", + "type": "flags.2?InputUser" + }, + { + "name": "lang_code", + "type": "string" + }, + { + "name": "name", + "type": "flags.3?string" + }, + { + "name": "about", + "type": "flags.0?string" + }, + { + "name": "description", + "type": "flags.1?string" + } + ], + "type": "Bool" + }, + { + "id": "-589753091", + "method": "bots.getBotInfo", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "bot", + "type": "flags.0?InputUser" + }, + { + "name": "lang_code", + "type": "string" + } + ], + "type": "bots.BotInfo" + }, + { + "id": "-1760972350", + "method": "bots.reorderUsernames", + "params": [ + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "order", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "87861619", + "method": "bots.toggleUsername", + "params": [ + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "username", + "type": "string" + }, + { + "name": "active", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "324662502", + "method": "bots.canSendMessage", + "params": [ + { + "name": "bot", + "type": "InputUser" + } + ], + "type": "Bool" + }, + { + "id": "-248323089", + "method": "bots.allowSendMessage", + "params": [ + { + "name": "bot", + "type": "InputUser" + } + ], + "type": "Updates" + }, + { + "id": "142591463", + "method": "bots.invokeWebViewCustomMethod", + "params": [ + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "custom_method", + "type": "string" + }, + { + "name": "params", + "type": "DataJSON" + } + ], + "type": "DataJSON" + }, + { + "id": "-1034878574", + "method": "bots.getPopularAppBots", + "params": [ + { + "name": "offset", + "type": "string" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "bots.PopularAppBots" + }, + { + "id": "397326170", + "method": "bots.addPreviewMedia", + "params": [ + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "lang_code", + "type": "string" + }, + { + "name": "media", + "type": "InputMedia" + } + ], + "type": "BotPreviewMedia" + }, + { + "id": "-2061148049", + "method": "bots.editPreviewMedia", + "params": [ + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "lang_code", + "type": "string" + }, + { + "name": "media", + "type": "InputMedia" + }, + { + "name": "new_media", + "type": "InputMedia" + } + ], + "type": "BotPreviewMedia" + }, + { + "id": "755054003", + "method": "bots.deletePreviewMedia", + "params": [ + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "lang_code", + "type": "string" + }, + { + "name": "media", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "-1238895702", + "method": "bots.reorderPreviewMedias", + "params": [ + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "lang_code", + "type": "string" + }, + { + "name": "order", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "1111143341", + "method": "bots.getPreviewInfo", + "params": [ + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "lang_code", + "type": "string" + } + ], + "type": "bots.PreviewInfo" + }, + { + "id": "-1566222003", + "method": "bots.getPreviewMedias", + "params": [ + { + "name": "bot", + "type": "InputUser" + } + ], + "type": "Vector" + }, + { + "id": "-308334395", + "method": "bots.updateUserEmojiStatus", + "params": [ + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "emoji_status", + "type": "EmojiStatus" + } + ], + "type": "Bool" + }, + { + "id": "115237778", + "method": "bots.toggleUserEmojiStatusPermission", + "params": [ + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "enabled", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "1342666121", + "method": "bots.checkDownloadFileParams", + "params": [ + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "file_name", + "type": "string" + }, + { + "name": "url", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "-1334764157", + "method": "bots.getAdminedBots", + "params": [], + "type": "Vector" + }, + { + "id": "2005621427", + "method": "bots.updateStarRefProgram", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "commission_permille", + "type": "int" + }, + { + "name": "duration_months", + "type": "flags.0?int" + } + ], + "type": "StarRefProgram" + }, + { + "id": "-1953898563", + "method": "bots.setCustomVerification", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "enabled", + "type": "flags.1?true" + }, + { + "name": "bot", + "type": "flags.0?InputUser" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "custom_description", + "type": "flags.2?string" + } + ], + "type": "Bool" + }, + { + "id": "-1581840363", + "method": "bots.getBotRecommendations", + "params": [ + { + "name": "bot", + "type": "InputUser" + } + ], + "type": "users.Users" + }, + { + "id": "-2014174821", + "method": "bots.checkUsername", + "params": [ + { + "name": "username", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "-441352405", + "method": "bots.createBot", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "via_deeplink", + "type": "flags.0?true" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "username", + "type": "string" + }, + { + "name": "manager_id", + "type": "InputUser" + } + ], + "type": "User" + }, + { + "id": "-1123182101", + "method": "bots.exportBotToken", + "params": [ + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "revoke", + "type": "Bool" + } + ], + "type": "bots.ExportedBotToken" + }, + { + "id": "832742238", + "method": "bots.requestWebViewButton", + "params": [ + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "button", + "type": "KeyboardButton" + } + ], + "type": "bots.RequestedButton" + }, + { + "id": "-1088047117", + "method": "bots.getRequestedWebViewButton", + "params": [ + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "webapp_req_id", + "type": "string" + } + ], + "type": "KeyboardButton" + }, + { + "id": "557339555", + "method": "bots.getAccessSettings", + "params": [ + { + "name": "bot", + "type": "InputUser" + } + ], + "type": "bots.AccessSettings" + }, + { + "id": "830553304", + "method": "bots.editAccessSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "restricted", + "type": "flags.0?true" + }, + { + "name": "bot", + "type": "InputUser" + }, + { + "name": "add_users", + "type": "flags.1?Vector" + } + ], + "type": "Bool" + }, + { + "id": "924093883", + "method": "payments.getPaymentForm", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "invoice", + "type": "InputInvoice" + }, + { + "name": "theme_params", + "type": "flags.0?DataJSON" + } + ], + "type": "payments.PaymentForm" + }, + { + "id": "611897804", + "method": "payments.getPaymentReceipt", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + } + ], + "type": "payments.PaymentReceipt" + }, + { + "id": "-1228345045", + "method": "payments.validateRequestedInfo", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "save", + "type": "flags.0?true" + }, + { + "name": "invoice", + "type": "InputInvoice" + }, + { + "name": "info", + "type": "PaymentRequestedInfo" + } + ], + "type": "payments.ValidatedRequestedInfo" + }, + { + "id": "755192367", + "method": "payments.sendPaymentForm", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "form_id", + "type": "long" + }, + { + "name": "invoice", + "type": "InputInvoice" + }, + { + "name": "requested_info_id", + "type": "flags.0?string" + }, + { + "name": "shipping_option_id", + "type": "flags.1?string" + }, + { + "name": "credentials", + "type": "InputPaymentCredentials" + }, + { + "name": "tip_amount", + "type": "flags.2?long" + } + ], + "type": "payments.PaymentResult" + }, + { + "id": "578650699", + "method": "payments.getSavedInfo", + "params": [], + "type": "payments.SavedInfo" + }, + { + "id": "-667062079", + "method": "payments.clearSavedInfo", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "credentials", + "type": "flags.0?true" + }, + { + "name": "info", + "type": "flags.1?true" + } + ], + "type": "Bool" + }, + { + "id": "779736953", + "method": "payments.getBankCardData", + "params": [ + { + "name": "number", + "type": "string" + } + ], + "type": "payments.BankCardData" + }, + { + "id": "261206117", + "method": "payments.exportInvoice", + "params": [ + { + "name": "invoice_media", + "type": "InputMedia" + } + ], + "type": "payments.ExportedInvoice" + }, + { + "id": "-2131921795", + "method": "payments.assignAppStoreTransaction", + "params": [ + { + "name": "receipt", + "type": "bytes" + }, + { + "name": "purpose", + "type": "InputStorePaymentPurpose" + } + ], + "type": "Updates" + }, + { + "id": "-537046829", + "method": "payments.assignPlayMarketTransaction", + "params": [ + { + "name": "receipt", + "type": "DataJSON" + }, + { + "name": "purpose", + "type": "InputStorePaymentPurpose" + } + ], + "type": "Updates" + }, + { + "id": "660060756", + "method": "payments.getPremiumGiftCodeOptions", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "boost_peer", + "type": "flags.0?InputPeer" + } + ], + "type": "Vector" + }, + { + "id": "-1907247935", + "method": "payments.checkGiftCode", + "params": [ + { + "name": "slug", + "type": "string" + } + ], + "type": "payments.CheckedGiftCode" + }, + { + "id": "-152934316", + "method": "payments.applyGiftCode", + "params": [ + { + "name": "slug", + "type": "string" + } + ], + "type": "Updates" + }, + { + "id": "-198994907", + "method": "payments.getGiveawayInfo", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + } + ], + "type": "payments.GiveawayInfo" + }, + { + "id": "1609928480", + "method": "payments.launchPrepaidGiveaway", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "giveaway_id", + "type": "long" + }, + { + "name": "purpose", + "type": "InputStorePaymentPurpose" + } + ], + "type": "Updates" + }, + { + "id": "-1072773165", + "method": "payments.getStarsTopupOptions", + "params": [], + "type": "Vector" + }, + { + "id": "1319744447", + "method": "payments.getStarsStatus", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "ton", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "payments.StarsStatus" + }, + { + "id": "1775912279", + "method": "payments.getStarsTransactions", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "inbound", + "type": "flags.0?true" + }, + { + "name": "outbound", + "type": "flags.1?true" + }, + { + "name": "ascending", + "type": "flags.2?true" + }, + { + "name": "ton", + "type": "flags.4?true" + }, + { + "name": "subscription_id", + "type": "flags.3?string" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "offset", + "type": "string" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "payments.StarsStatus" + }, + { + "id": "2040056084", + "method": "payments.sendStarsForm", + "params": [ + { + "name": "form_id", + "type": "long" + }, + { + "name": "invoice", + "type": "InputInvoice" + } + ], + "type": "payments.PaymentResult" + }, + { + "id": "632196938", + "method": "payments.refundStarsCharge", + "params": [ + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "charge_id", + "type": "string" + } + ], + "type": "Updates" + }, + { + "id": "-652215594", + "method": "payments.getStarsRevenueStats", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "dark", + "type": "flags.0?true" + }, + { + "name": "ton", + "type": "flags.1?true" + }, + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "payments.StarsRevenueStats" + }, + { + "id": "607378578", + "method": "payments.getStarsRevenueWithdrawalUrl", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "ton", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "amount", + "type": "flags.1?long" + }, + { + "name": "password", + "type": "InputCheckPasswordSRP" + } + ], + "type": "payments.StarsRevenueWithdrawalUrl" + }, + { + "id": "-774377531", + "method": "payments.getStarsRevenueAdsAccountUrl", + "params": [ + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "payments.StarsRevenueAdsAccountUrl" + }, + { + "id": "768218808", + "method": "payments.getStarsTransactionsByID", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "ton", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "Vector" + } + ], + "type": "payments.StarsStatus" + }, + { + "id": "-741774392", + "method": "payments.getStarsGiftOptions", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "user_id", + "type": "flags.0?InputUser" + } + ], + "type": "Vector" + }, + { + "id": "52761285", + "method": "payments.getStarsSubscriptions", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "missing_balance", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "offset", + "type": "string" + } + ], + "type": "payments.StarsStatus" + }, + { + "id": "-948500360", + "method": "payments.changeStarsSubscription", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "subscription_id", + "type": "string" + }, + { + "name": "canceled", + "type": "flags.0?Bool" + } + ], + "type": "Bool" + }, + { + "id": "-866391117", + "method": "payments.fulfillStarsSubscription", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "subscription_id", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "-1122042562", + "method": "payments.getStarsGiveawayOptions", + "params": [], + "type": "Vector" + }, + { + "id": "-1000983152", + "method": "payments.getStarGifts", + "params": [ + { + "name": "hash", + "type": "int" + } + ], + "type": "payments.StarGifts" + }, + { + "id": "707422588", + "method": "payments.saveStarGift", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "unsave", + "type": "flags.0?true" + }, + { + "name": "stargift", + "type": "InputSavedStarGift" + } + ], + "type": "Bool" + }, + { + "id": "1958676331", + "method": "payments.convertStarGift", + "params": [ + { + "name": "stargift", + "type": "InputSavedStarGift" + } + ], + "type": "Bool" + }, + { + "id": "1845102114", + "method": "payments.botCancelStarsSubscription", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "restore", + "type": "flags.0?true" + }, + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "charge_id", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "1483318611", + "method": "payments.getConnectedStarRefBots", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "offset_date", + "type": "flags.2?int" + }, + { + "name": "offset_link", + "type": "flags.2?string" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "payments.ConnectedStarRefBots" + }, + { + "id": "-1210476304", + "method": "payments.getConnectedStarRefBot", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "bot", + "type": "InputUser" + } + ], + "type": "payments.ConnectedStarRefBots" + }, + { + "id": "225134839", + "method": "payments.getSuggestedStarRefBots", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "order_by_revenue", + "type": "flags.0?true" + }, + { + "name": "order_by_date", + "type": "flags.1?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "offset", + "type": "string" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "payments.SuggestedStarRefBots" + }, + { + "id": "2127901834", + "method": "payments.connectStarRefBot", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "bot", + "type": "InputUser" + } + ], + "type": "payments.ConnectedStarRefBots" + }, + { + "id": "-453204829", + "method": "payments.editConnectedStarRefBot", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "revoked", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "link", + "type": "string" + } + ], + "type": "payments.ConnectedStarRefBots" + }, + { + "id": "-1667580751", + "method": "payments.getStarGiftUpgradePreview", + "params": [ + { + "name": "gift_id", + "type": "long" + } + ], + "type": "payments.StarGiftUpgradePreview" + }, + { + "id": "-1361648395", + "method": "payments.upgradeStarGift", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "keep_original_details", + "type": "flags.0?true" + }, + { + "name": "stargift", + "type": "InputSavedStarGift" + } + ], + "type": "Updates" + }, + { + "id": "2132285290", + "method": "payments.transferStarGift", + "params": [ + { + "name": "stargift", + "type": "InputSavedStarGift" + }, + { + "name": "to_id", + "type": "InputPeer" + } + ], + "type": "Updates" + }, + { + "id": "-1583919758", + "method": "payments.getUniqueStarGift", + "params": [ + { + "name": "slug", + "type": "string" + } + ], + "type": "payments.UniqueStarGift" + }, + { + "id": "-1558583959", + "method": "payments.getSavedStarGifts", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "exclude_unsaved", + "type": "flags.0?true" + }, + { + "name": "exclude_saved", + "type": "flags.1?true" + }, + { + "name": "exclude_unlimited", + "type": "flags.2?true" + }, + { + "name": "exclude_unique", + "type": "flags.4?true" + }, + { + "name": "sort_by_value", + "type": "flags.5?true" + }, + { + "name": "exclude_upgradable", + "type": "flags.7?true" + }, + { + "name": "exclude_unupgradable", + "type": "flags.8?true" + }, + { + "name": "peer_color_available", + "type": "flags.9?true" + }, + { + "name": "exclude_hosted", + "type": "flags.10?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "collection_id", + "type": "flags.6?int" + }, + { + "name": "offset", + "type": "string" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "payments.SavedStarGifts" + }, + { + "id": "-1269456634", + "method": "payments.getSavedStarGift", + "params": [ + { + "name": "stargift", + "type": "Vector" + } + ], + "type": "payments.SavedStarGifts" + }, + { + "id": "-798059608", + "method": "payments.getStarGiftWithdrawalUrl", + "params": [ + { + "name": "stargift", + "type": "InputSavedStarGift" + }, + { + "name": "password", + "type": "InputCheckPasswordSRP" + } + ], + "type": "payments.StarGiftWithdrawalUrl" + }, + { + "id": "1626009505", + "method": "payments.toggleChatStarGiftNotifications", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "enabled", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "Bool" + }, + { + "id": "353626032", + "method": "payments.toggleStarGiftsPinnedToTop", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "stargift", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "1339842215", + "method": "payments.canPurchaseStore", + "params": [ + { + "name": "purpose", + "type": "InputStorePaymentPurpose" + } + ], + "type": "Bool" + }, + { + "id": "2053087798", + "method": "payments.getResaleStarGifts", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "sort_by_price", + "type": "flags.1?true" + }, + { + "name": "sort_by_num", + "type": "flags.2?true" + }, + { + "name": "for_craft", + "type": "flags.4?true" + }, + { + "name": "stars_only", + "type": "flags.5?true" + }, + { + "name": "attributes_hash", + "type": "flags.0?long" + }, + { + "name": "gift_id", + "type": "long" + }, + { + "name": "attributes", + "type": "flags.3?Vector" + }, + { + "name": "offset", + "type": "string" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "payments.ResaleStarGifts" + }, + { + "id": "-306287413", + "method": "payments.updateStarGiftPrice", + "params": [ + { + "name": "stargift", + "type": "InputSavedStarGift" + }, + { + "name": "resell_amount", + "type": "StarsAmount" + } + ], + "type": "Updates" + }, + { + "id": "524947079", + "method": "payments.createStarGiftCollection", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "stargift", + "type": "Vector" + } + ], + "type": "StarGiftCollection" + }, + { + "id": "1339932391", + "method": "payments.updateStarGiftCollection", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "collection_id", + "type": "int" + }, + { + "name": "title", + "type": "flags.0?string" + }, + { + "name": "delete_stargift", + "type": "flags.1?Vector" + }, + { + "name": "add_stargift", + "type": "flags.2?Vector" + }, + { + "name": "order", + "type": "flags.3?Vector" + } + ], + "type": "StarGiftCollection" + }, + { + "id": "-1020594996", + "method": "payments.reorderStarGiftCollections", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "order", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "-1386854168", + "method": "payments.deleteStarGiftCollection", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "collection_id", + "type": "int" + } + ], + "type": "Bool" + }, + { + "id": "-1743023651", + "method": "payments.getStarGiftCollections", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "payments.StarGiftCollections" + }, + { + "id": "1130737515", + "method": "payments.getUniqueStarGiftValueInfo", + "params": [ + { + "name": "slug", + "type": "string" + } + ], + "type": "payments.UniqueStarGiftValueInfo" + }, + { + "id": "-1060835895", + "method": "payments.checkCanSendGift", + "params": [ + { + "name": "gift_id", + "type": "long" + } + ], + "type": "payments.CheckCanSendGiftResult" + }, + { + "id": "1553986774", + "method": "payments.getStarGiftAuctionState", + "params": [ + { + "name": "auction", + "type": "InputStarGiftAuction" + }, + { + "name": "version", + "type": "int" + } + ], + "type": "payments.StarGiftAuctionState" + }, + { + "id": "1805831148", + "method": "payments.getStarGiftAuctionAcquiredGifts", + "params": [ + { + "name": "gift_id", + "type": "long" + } + ], + "type": "payments.StarGiftAuctionAcquiredGifts" + }, + { + "id": "-1513074355", + "method": "payments.getStarGiftActiveAuctions", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "payments.StarGiftActiveAuctions" + }, + { + "id": "-372344804", + "method": "payments.resolveStarGiftOffer", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "decline", + "type": "flags.0?true" + }, + { + "name": "offer_msg_id", + "type": "int" + } + ], + "type": "Updates" + }, + { + "id": "-1883739327", + "method": "payments.sendStarGiftOffer", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "slug", + "type": "string" + }, + { + "name": "price", + "type": "StarsAmount" + }, + { + "name": "duration", + "type": "int" + }, + { + "name": "random_id", + "type": "long" + }, + { + "name": "allow_paid_stars", + "type": "flags.0?long" + } + ], + "type": "Updates" + }, + { + "id": "1828948824", + "method": "payments.getStarGiftUpgradeAttributes", + "params": [ + { + "name": "gift_id", + "type": "long" + } + ], + "type": "payments.StarGiftUpgradeAttributes" + }, + { + "id": "-49947392", + "method": "payments.getCraftStarGifts", + "params": [ + { + "name": "gift_id", + "type": "long" + }, + { + "name": "offset", + "type": "string" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "payments.SavedStarGifts" + }, + { + "id": "-1325832113", + "method": "payments.craftStarGift", + "params": [ + { + "name": "stargift", + "type": "Vector" + } + ], + "type": "Updates" + }, + { + "id": "-1876841625", + "method": "stickers.createStickerSet", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "masks", + "type": "flags.0?true" + }, + { + "name": "emojis", + "type": "flags.5?true" + }, + { + "name": "text_color", + "type": "flags.6?true" + }, + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "short_name", + "type": "string" + }, + { + "name": "thumb", + "type": "flags.2?InputDocument" + }, + { + "name": "stickers", + "type": "Vector" + }, + { + "name": "software", + "type": "flags.3?string" + } + ], + "type": "messages.StickerSet" + }, + { + "id": "-143257775", + "method": "stickers.removeStickerFromSet", + "params": [ + { + "name": "sticker", + "type": "InputDocument" + } + ], + "type": "messages.StickerSet" + }, + { + "id": "-4795190", + "method": "stickers.changeStickerPosition", + "params": [ + { + "name": "sticker", + "type": "InputDocument" + }, + { + "name": "position", + "type": "int" + } + ], + "type": "messages.StickerSet" + }, + { + "id": "-2041315650", + "method": "stickers.addStickerToSet", + "params": [ + { + "name": "stickerset", + "type": "InputStickerSet" + }, + { + "name": "sticker", + "type": "InputStickerSetItem" + } + ], + "type": "messages.StickerSet" + }, + { + "id": "-1486204014", + "method": "stickers.setStickerSetThumb", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "stickerset", + "type": "InputStickerSet" + }, + { + "name": "thumb", + "type": "flags.0?InputDocument" + }, + { + "name": "thumb_document_id", + "type": "flags.1?long" + } + ], + "type": "messages.StickerSet" + }, + { + "id": "676017721", + "method": "stickers.checkShortName", + "params": [ + { + "name": "short_name", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "1303364867", + "method": "stickers.suggestShortName", + "params": [ + { + "name": "title", + "type": "string" + } + ], + "type": "stickers.SuggestedShortName" + }, + { + "id": "-179077444", + "method": "stickers.changeSticker", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "sticker", + "type": "InputDocument" + }, + { + "name": "emoji", + "type": "flags.0?string" + }, + { + "name": "mask_coords", + "type": "flags.1?MaskCoords" + }, + { + "name": "keywords", + "type": "flags.2?string" + } + ], + "type": "messages.StickerSet" + }, + { + "id": "306912256", + "method": "stickers.renameStickerSet", + "params": [ + { + "name": "stickerset", + "type": "InputStickerSet" + }, + { + "name": "title", + "type": "string" + } + ], + "type": "messages.StickerSet" + }, + { + "id": "-2022685804", + "method": "stickers.deleteStickerSet", + "params": [ + { + "name": "stickerset", + "type": "InputStickerSet" + } + ], + "type": "Bool" + }, + { + "id": "1184253338", + "method": "stickers.replaceSticker", + "params": [ + { + "name": "sticker", + "type": "InputDocument" + }, + { + "name": "new_sticker", + "type": "InputStickerSetItem" + } + ], + "type": "messages.StickerSet" + }, + { + "id": "1430593449", + "method": "phone.getCallConfig", + "params": [], + "type": "DataJSON" + }, + { + "id": "1124046573", + "method": "phone.requestCall", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "video", + "type": "flags.0?true" + }, + { + "name": "user_id", + "type": "InputUser" + }, + { + "name": "random_id", + "type": "int" + }, + { + "name": "g_a_hash", + "type": "bytes" + }, + { + "name": "protocol", + "type": "PhoneCallProtocol" + } + ], + "type": "phone.PhoneCall" + }, + { + "id": "1003664544", + "method": "phone.acceptCall", + "params": [ + { + "name": "peer", + "type": "InputPhoneCall" + }, + { + "name": "g_b", + "type": "bytes" + }, + { + "name": "protocol", + "type": "PhoneCallProtocol" + } + ], + "type": "phone.PhoneCall" + }, + { + "id": "788404002", + "method": "phone.confirmCall", + "params": [ + { + "name": "peer", + "type": "InputPhoneCall" + }, + { + "name": "g_a", + "type": "bytes" + }, + { + "name": "key_fingerprint", + "type": "long" + }, + { + "name": "protocol", + "type": "PhoneCallProtocol" + } + ], + "type": "phone.PhoneCall" + }, + { + "id": "399855457", + "method": "phone.receivedCall", + "params": [ + { + "name": "peer", + "type": "InputPhoneCall" + } + ], + "type": "Bool" + }, + { + "id": "-1295269440", + "method": "phone.discardCall", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "video", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputPhoneCall" + }, + { + "name": "duration", + "type": "int" + }, + { + "name": "reason", + "type": "PhoneCallDiscardReason" + }, + { + "name": "connection_id", + "type": "long" + } + ], + "type": "Updates" + }, + { + "id": "1508562471", + "method": "phone.setCallRating", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "user_initiative", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputPhoneCall" + }, + { + "name": "rating", + "type": "int" + }, + { + "name": "comment", + "type": "string" + } + ], + "type": "Updates" + }, + { + "id": "662363518", + "method": "phone.saveCallDebug", + "params": [ + { + "name": "peer", + "type": "InputPhoneCall" + }, + { + "name": "debug", + "type": "DataJSON" + } + ], + "type": "Bool" + }, + { + "id": "-8744061", + "method": "phone.sendSignalingData", + "params": [ + { + "name": "peer", + "type": "InputPhoneCall" + }, + { + "name": "data", + "type": "bytes" + } + ], + "type": "Bool" + }, + { + "id": "1221445336", + "method": "phone.createGroupCall", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "rtmp_stream", + "type": "flags.2?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "random_id", + "type": "int" + }, + { + "name": "title", + "type": "flags.0?string" + }, + { + "name": "schedule_date", + "type": "flags.1?int" + } + ], + "type": "Updates" + }, + { + "id": "-1883951017", + "method": "phone.joinGroupCall", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "muted", + "type": "flags.0?true" + }, + { + "name": "video_stopped", + "type": "flags.2?true" + }, + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "join_as", + "type": "InputPeer" + }, + { + "name": "invite_hash", + "type": "flags.1?string" + }, + { + "name": "public_key", + "type": "flags.3?int256" + }, + { + "name": "block", + "type": "flags.3?bytes" + }, + { + "name": "params", + "type": "DataJSON" + } + ], + "type": "Updates" + }, + { + "id": "1342404601", + "method": "phone.leaveGroupCall", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "source", + "type": "int" + } + ], + "type": "Updates" + }, + { + "id": "2067345760", + "method": "phone.inviteToGroupCall", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "users", + "type": "Vector" + } + ], + "type": "Updates" + }, + { + "id": "2054648117", + "method": "phone.discardGroupCall", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + } + ], + "type": "Updates" + }, + { + "id": "-1757179150", + "method": "phone.toggleGroupCallSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "reset_invite_hash", + "type": "flags.1?true" + }, + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "join_muted", + "type": "flags.0?Bool" + }, + { + "name": "messages_enabled", + "type": "flags.2?Bool" + }, + { + "name": "send_paid_messages_stars", + "type": "flags.3?long" + } + ], + "type": "Updates" + }, + { + "id": "68699611", + "method": "phone.getGroupCall", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "phone.GroupCall" + }, + { + "id": "-984033109", + "method": "phone.getGroupParticipants", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "ids", + "type": "Vector" + }, + { + "name": "sources", + "type": "Vector" + }, + { + "name": "offset", + "type": "string" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "phone.GroupParticipants" + }, + { + "id": "-1248003721", + "method": "phone.checkGroupCall", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "sources", + "type": "Vector" + } + ], + "type": "Vector" + }, + { + "id": "-248985848", + "method": "phone.toggleGroupCallRecord", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "start", + "type": "flags.0?true" + }, + { + "name": "video", + "type": "flags.2?true" + }, + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "title", + "type": "flags.1?string" + }, + { + "name": "video_portrait", + "type": "flags.2?Bool" + } + ], + "type": "Updates" + }, + { + "id": "-1524155713", + "method": "phone.editGroupCallParticipant", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "participant", + "type": "InputPeer" + }, + { + "name": "muted", + "type": "flags.0?Bool" + }, + { + "name": "volume", + "type": "flags.1?int" + }, + { + "name": "raise_hand", + "type": "flags.2?Bool" + }, + { + "name": "video_stopped", + "type": "flags.3?Bool" + }, + { + "name": "video_paused", + "type": "flags.4?Bool" + }, + { + "name": "presentation_paused", + "type": "flags.5?Bool" + } + ], + "type": "Updates" + }, + { + "id": "480685066", + "method": "phone.editGroupCallTitle", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "title", + "type": "string" + } + ], + "type": "Updates" + }, + { + "id": "-277077702", + "method": "phone.getGroupCallJoinAs", + "params": [ + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "phone.JoinAsPeers" + }, + { + "id": "-425040769", + "method": "phone.exportGroupCallInvite", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "can_self_unmute", + "type": "flags.0?true" + }, + { + "name": "call", + "type": "InputGroupCall" + } + ], + "type": "phone.ExportedGroupCallInvite" + }, + { + "id": "563885286", + "method": "phone.toggleGroupCallStartSubscription", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "subscribed", + "type": "Bool" + } + ], + "type": "Updates" + }, + { + "id": "1451287362", + "method": "phone.startScheduledGroupCall", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + } + ], + "type": "Updates" + }, + { + "id": "1465786252", + "method": "phone.saveDefaultGroupCallJoinAs", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "join_as", + "type": "InputPeer" + } + ], + "type": "Bool" + }, + { + "id": "-873829436", + "method": "phone.joinGroupCallPresentation", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "params", + "type": "DataJSON" + } + ], + "type": "Updates" + }, + { + "id": "475058500", + "method": "phone.leaveGroupCallPresentation", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + } + ], + "type": "Updates" + }, + { + "id": "447879488", + "method": "phone.getGroupCallStreamChannels", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + } + ], + "type": "phone.GroupCallStreamChannels" + }, + { + "id": "1525991226", + "method": "phone.getGroupCallStreamRtmpUrl", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "live_story", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "revoke", + "type": "Bool" + } + ], + "type": "phone.GroupCallStreamRtmpUrl" + }, + { + "id": "1092913030", + "method": "phone.saveCallLog", + "params": [ + { + "name": "peer", + "type": "InputPhoneCall" + }, + { + "name": "file", + "type": "InputFile" + } + ], + "type": "Bool" + }, + { + "id": "2097431739", + "method": "phone.createConferenceCall", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "muted", + "type": "flags.0?true" + }, + { + "name": "video_stopped", + "type": "flags.2?true" + }, + { + "name": "join", + "type": "flags.3?true" + }, + { + "name": "random_id", + "type": "int" + }, + { + "name": "public_key", + "type": "flags.3?int256" + }, + { + "name": "block", + "type": "flags.3?bytes" + }, + { + "name": "params", + "type": "flags.3?DataJSON" + } + ], + "type": "Updates" + }, + { + "id": "-1935276763", + "method": "phone.deleteConferenceCallParticipants", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "only_left", + "type": "flags.0?true" + }, + { + "name": "kick", + "type": "flags.1?true" + }, + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "ids", + "type": "Vector" + }, + { + "name": "block", + "type": "bytes" + } + ], + "type": "Updates" + }, + { + "id": "-965732096", + "method": "phone.sendConferenceCallBroadcast", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "block", + "type": "bytes" + } + ], + "type": "Updates" + }, + { + "id": "-1124981115", + "method": "phone.inviteConferenceCallParticipant", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "video", + "type": "flags.0?true" + }, + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "user_id", + "type": "InputUser" + } + ], + "type": "Updates" + }, + { + "id": "1011325297", + "method": "phone.declineConferenceCallInvite", + "params": [ + { + "name": "msg_id", + "type": "int" + } + ], + "type": "Updates" + }, + { + "id": "-291534682", + "method": "phone.getGroupCallChainBlocks", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "sub_chain_id", + "type": "int" + }, + { + "name": "offset", + "type": "int" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "Updates" + }, + { + "id": "-1311697904", + "method": "phone.sendGroupCallMessage", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "random_id", + "type": "long" + }, + { + "name": "message", + "type": "TextWithEntities" + }, + { + "name": "allow_paid_stars", + "type": "flags.0?long" + }, + { + "name": "send_as", + "type": "flags.1?InputPeer" + } + ], + "type": "Updates" + }, + { + "id": "-441473683", + "method": "phone.sendGroupCallEncryptedMessage", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "encrypted_message", + "type": "bytes" + } + ], + "type": "Bool" + }, + { + "id": "-162573065", + "method": "phone.deleteGroupCallMessages", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "report_spam", + "type": "flags.0?true" + }, + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "messages", + "type": "Vector" + } + ], + "type": "Updates" + }, + { + "id": "499117216", + "method": "phone.deleteGroupCallParticipantMessages", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "report_spam", + "type": "flags.0?true" + }, + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "participant", + "type": "InputPeer" + } + ], + "type": "Updates" + }, + { + "id": "1868784386", + "method": "phone.getGroupCallStars", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + } + ], + "type": "phone.GroupCallStars" + }, + { + "id": "1097313745", + "method": "phone.saveDefaultSendAs", + "params": [ + { + "name": "call", + "type": "InputGroupCall" + }, + { + "name": "send_as", + "type": "InputPeer" + } + ], + "type": "Bool" + }, + { + "id": "-219008246", + "method": "langpack.getLangPack", + "params": [ + { + "name": "lang_pack", + "type": "string" + }, + { + "name": "lang_code", + "type": "string" + } + ], + "type": "LangPackDifference" + }, + { + "id": "-269862909", + "method": "langpack.getStrings", + "params": [ + { + "name": "lang_pack", + "type": "string" + }, + { + "name": "lang_code", + "type": "string" + }, + { + "name": "keys", + "type": "Vector" + } + ], + "type": "Vector" + }, + { + "id": "-845657435", + "method": "langpack.getDifference", + "params": [ + { + "name": "lang_pack", + "type": "string" + }, + { + "name": "lang_code", + "type": "string" + }, + { + "name": "from_version", + "type": "int" + } + ], + "type": "LangPackDifference" + }, + { + "id": "1120311183", + "method": "langpack.getLanguages", + "params": [ + { + "name": "lang_pack", + "type": "string" + } + ], + "type": "Vector" + }, + { + "id": "1784243458", + "method": "langpack.getLanguage", + "params": [ + { + "name": "lang_pack", + "type": "string" + }, + { + "name": "lang_code", + "type": "string" + } + ], + "type": "LangPackLanguage" + }, + { + "id": "1749536939", + "method": "folders.editPeerFolders", + "params": [ + { + "name": "folder_peers", + "type": "Vector" + } + ], + "type": "Updates" + }, + { + "id": "-1421720550", + "method": "stats.getBroadcastStats", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "dark", + "type": "flags.0?true" + }, + { + "name": "channel", + "type": "InputChannel" + } + ], + "type": "stats.BroadcastStats" + }, + { + "id": "1646092192", + "method": "stats.loadAsyncGraph", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "token", + "type": "string" + }, + { + "name": "x", + "type": "flags.0?long" + } + ], + "type": "StatsGraph" + }, + { + "id": "-589330937", + "method": "stats.getMegagroupStats", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "dark", + "type": "flags.0?true" + }, + { + "name": "channel", + "type": "InputChannel" + } + ], + "type": "stats.MegagroupStats" + }, + { + "id": "1595212100", + "method": "stats.getMessagePublicForwards", + "params": [ + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "msg_id", + "type": "int" + }, + { + "name": "offset", + "type": "string" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "stats.PublicForwards" + }, + { + "id": "-1226791947", + "method": "stats.getMessageStats", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "dark", + "type": "flags.0?true" + }, + { + "name": "channel", + "type": "InputChannel" + }, + { + "name": "msg_id", + "type": "int" + } + ], + "type": "stats.MessageStats" + }, + { + "id": "927985472", + "method": "stats.getStoryStats", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "dark", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "int" + } + ], + "type": "stats.StoryStats" + }, + { + "id": "-1505526026", + "method": "stats.getStoryPublicForwards", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "offset", + "type": "string" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "stats.PublicForwards" + }, + { + "id": "-1031931288", + "method": "stats.getPollStats", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "dark", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "msg_id", + "type": "int" + } + ], + "type": "stats.PollStats" + }, + { + "id": "-2072885362", + "method": "chatlists.exportChatlistInvite", + "params": [ + { + "name": "chatlist", + "type": "InputChatlist" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "peers", + "type": "Vector" + } + ], + "type": "chatlists.ExportedChatlistInvite" + }, + { + "id": "1906072670", + "method": "chatlists.deleteExportedInvite", + "params": [ + { + "name": "chatlist", + "type": "InputChatlist" + }, + { + "name": "slug", + "type": "string" + } + ], + "type": "Bool" + }, + { + "id": "1698543165", + "method": "chatlists.editExportedInvite", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "chatlist", + "type": "InputChatlist" + }, + { + "name": "slug", + "type": "string" + }, + { + "name": "title", + "type": "flags.1?string" + }, + { + "name": "peers", + "type": "flags.2?Vector" + } + ], + "type": "ExportedChatlistInvite" + }, + { + "id": "-838608253", + "method": "chatlists.getExportedInvites", + "params": [ + { + "name": "chatlist", + "type": "InputChatlist" + } + ], + "type": "chatlists.ExportedInvites" + }, + { + "id": "1103171583", + "method": "chatlists.checkChatlistInvite", + "params": [ + { + "name": "slug", + "type": "string" + } + ], + "type": "chatlists.ChatlistInvite" + }, + { + "id": "-1498291302", + "method": "chatlists.joinChatlistInvite", + "params": [ + { + "name": "slug", + "type": "string" + }, + { + "name": "peers", + "type": "Vector" + } + ], + "type": "Updates" + }, + { + "id": "-1992190687", + "method": "chatlists.getChatlistUpdates", + "params": [ + { + "name": "chatlist", + "type": "InputChatlist" + } + ], + "type": "chatlists.ChatlistUpdates" + }, + { + "id": "-527828747", + "method": "chatlists.joinChatlistUpdates", + "params": [ + { + "name": "chatlist", + "type": "InputChatlist" + }, + { + "name": "peers", + "type": "Vector" + } + ], + "type": "Updates" + }, + { + "id": "1726252795", + "method": "chatlists.hideChatlistUpdates", + "params": [ + { + "name": "chatlist", + "type": "InputChatlist" + } + ], + "type": "Bool" + }, + { + "id": "-37955820", + "method": "chatlists.getLeaveChatlistSuggestions", + "params": [ + { + "name": "chatlist", + "type": "InputChatlist" + } + ], + "type": "Vector" + }, + { + "id": "1962598714", + "method": "chatlists.leaveChatlist", + "params": [ + { + "name": "chatlist", + "type": "InputChatlist" + }, + { + "name": "peers", + "type": "Vector" + } + ], + "type": "Updates" + }, + { + "id": "820732912", + "method": "stories.canSendStory", + "params": [ + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "stories.CanSendStoryCount" + }, + { + "id": "-1885443944", + "method": "stories.sendStory", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "pinned", + "type": "flags.2?true" + }, + { + "name": "noforwards", + "type": "flags.4?true" + }, + { + "name": "fwd_modified", + "type": "flags.7?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "media", + "type": "InputMedia" + }, + { + "name": "media_areas", + "type": "flags.5?Vector" + }, + { + "name": "caption", + "type": "flags.0?string" + }, + { + "name": "entities", + "type": "flags.1?Vector" + }, + { + "name": "privacy_rules", + "type": "Vector" + }, + { + "name": "random_id", + "type": "long" + }, + { + "name": "period", + "type": "flags.3?int" + }, + { + "name": "fwd_from_id", + "type": "flags.6?InputPeer" + }, + { + "name": "fwd_from_story", + "type": "flags.6?int" + }, + { + "name": "albums", + "type": "flags.8?Vector" + }, + { + "name": "music", + "type": "flags.9?InputDocument" + } + ], + "type": "Updates" + }, + { + "id": "744728363", + "method": "stories.editStory", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "media", + "type": "flags.0?InputMedia" + }, + { + "name": "media_areas", + "type": "flags.3?Vector" + }, + { + "name": "caption", + "type": "flags.1?string" + }, + { + "name": "entities", + "type": "flags.1?Vector" + }, + { + "name": "privacy_rules", + "type": "flags.2?Vector" + }, + { + "name": "music", + "type": "flags.4?InputDocument" + } + ], + "type": "Updates" + }, + { + "id": "-1369842849", + "method": "stories.deleteStories", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "Vector" + } + ], + "type": "Vector" + }, + { + "id": "-1703566865", + "method": "stories.togglePinned", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "Vector" + }, + { + "name": "pinned", + "type": "Bool" + } + ], + "type": "Vector" + }, + { + "id": "-290400731", + "method": "stories.getAllStories", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "next", + "type": "flags.1?true" + }, + { + "name": "hidden", + "type": "flags.2?true" + }, + { + "name": "state", + "type": "flags.0?string" + } + ], + "type": "stories.AllStories" + }, + { + "id": "1478600156", + "method": "stories.getPinnedStories", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "offset_id", + "type": "int" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "stories.Stories" + }, + { + "id": "-1271586794", + "method": "stories.getStoriesArchive", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "offset_id", + "type": "int" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "stories.Stories" + }, + { + "id": "1467271796", + "method": "stories.getStoriesByID", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "Vector" + } + ], + "type": "stories.Stories" + }, + { + "id": "2082822084", + "method": "stories.toggleAllStoriesHidden", + "params": [ + { + "name": "hidden", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "-1521034552", + "method": "stories.readStories", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "max_id", + "type": "int" + } + ], + "type": "Vector" + }, + { + "id": "-1308456197", + "method": "stories.incrementStoryViews", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "2127707223", + "method": "stories.getStoryViewsList", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "just_contacts", + "type": "flags.0?true" + }, + { + "name": "reactions_first", + "type": "flags.2?true" + }, + { + "name": "forwards_first", + "type": "flags.3?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "q", + "type": "flags.1?string" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "offset", + "type": "string" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "stories.StoryViewsList" + }, + { + "id": "685862088", + "method": "stories.getStoriesViews", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "Vector" + } + ], + "type": "stories.StoryViews" + }, + { + "id": "2072899360", + "method": "stories.exportStoryLink", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "int" + } + ], + "type": "ExportedStoryLink" + }, + { + "id": "433646405", + "method": "stories.report", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "Vector" + }, + { + "name": "option", + "type": "bytes" + }, + { + "name": "message", + "type": "string" + } + ], + "type": "ReportResult" + }, + { + "id": "1471926630", + "method": "stories.activateStealthMode", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "past", + "type": "flags.0?true" + }, + { + "name": "future", + "type": "flags.1?true" + } + ], + "type": "Updates" + }, + { + "id": "2144810674", + "method": "stories.sendReaction", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "add_to_recent", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "story_id", + "type": "int" + }, + { + "name": "reaction", + "type": "Reaction" + } + ], + "type": "Updates" + }, + { + "id": "743103056", + "method": "stories.getPeerStories", + "params": [ + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "stories.PeerStories" + }, + { + "id": "-1688541191", + "method": "stories.getAllReadPeerStories", + "params": [], + "type": "Updates" + }, + { + "id": "2018087280", + "method": "stories.getPeerMaxIDs", + "params": [ + { + "name": "id", + "type": "Vector" + } + ], + "type": "Vector" + }, + { + "id": "-1519744160", + "method": "stories.getChatsToSend", + "params": [], + "type": "messages.Chats" + }, + { + "id": "-1123805756", + "method": "stories.togglePeerStoriesHidden", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "hidden", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "-1179482081", + "method": "stories.getStoryReactionsList", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "forwards_first", + "type": "flags.2?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "int" + }, + { + "name": "reaction", + "type": "flags.0?Reaction" + }, + { + "name": "offset", + "type": "flags.1?string" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "stories.StoryReactionsList" + }, + { + "id": "187268763", + "method": "stories.togglePinnedToTop", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "id", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "-780072697", + "method": "stories.searchPosts", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "hashtag", + "type": "flags.0?string" + }, + { + "name": "area", + "type": "flags.1?MediaArea" + }, + { + "name": "peer", + "type": "flags.2?InputPeer" + }, + { + "name": "offset", + "type": "string" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "stories.FoundStories" + }, + { + "id": "-1553754395", + "method": "stories.createAlbum", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "stories", + "type": "Vector" + } + ], + "type": "StoryAlbum" + }, + { + "id": "1582455222", + "method": "stories.updateAlbum", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "album_id", + "type": "int" + }, + { + "name": "title", + "type": "flags.0?string" + }, + { + "name": "delete_stories", + "type": "flags.1?Vector" + }, + { + "name": "add_stories", + "type": "flags.2?Vector" + }, + { + "name": "order", + "type": "flags.3?Vector" + } + ], + "type": "StoryAlbum" + }, + { + "id": "-2060059687", + "method": "stories.reorderAlbums", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "order", + "type": "Vector" + } + ], + "type": "Bool" + }, + { + "id": "-1925949744", + "method": "stories.deleteAlbum", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "album_id", + "type": "int" + } + ], + "type": "Bool" + }, + { + "id": "632548039", + "method": "stories.getAlbums", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "hash", + "type": "long" + } + ], + "type": "stories.Albums" + }, + { + "id": "-1400869535", + "method": "stories.getAlbumStories", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "album_id", + "type": "int" + }, + { + "name": "offset", + "type": "int" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "stories.Stories" + }, + { + "id": "-798372642", + "method": "stories.startLive", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "pinned", + "type": "flags.2?true" + }, + { + "name": "noforwards", + "type": "flags.4?true" + }, + { + "name": "rtmp_stream", + "type": "flags.5?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "caption", + "type": "flags.0?string" + }, + { + "name": "entities", + "type": "flags.1?Vector" + }, + { + "name": "privacy_rules", + "type": "Vector" + }, + { + "name": "random_id", + "type": "long" + }, + { + "name": "messages_enabled", + "type": "flags.6?Bool" + }, + { + "name": "send_paid_messages_stars", + "type": "flags.7?long" + } + ], + "type": "Updates" + }, + { + "id": "1626764896", + "method": "premium.getBoostsList", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "gifts", + "type": "flags.0?true" + }, + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "offset", + "type": "string" + }, + { + "name": "limit", + "type": "int" + } + ], + "type": "premium.BoostsList" + }, + { + "id": "199719754", + "method": "premium.getMyBoosts", + "params": [], + "type": "premium.MyBoosts" + }, + { + "id": "1803396934", + "method": "premium.applyBoost", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "slots", + "type": "flags.0?Vector" + }, + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "premium.MyBoosts" + }, + { + "id": "70197089", + "method": "premium.getBoostsStatus", + "params": [ + { + "name": "peer", + "type": "InputPeer" + } + ], + "type": "premium.BoostsStatus" + }, + { + "id": "965037343", + "method": "premium.getUserBoosts", + "params": [ + { + "name": "peer", + "type": "InputPeer" + }, + { + "name": "user_id", + "type": "InputUser" + } + ], + "type": "premium.BoostsList" + }, + { + "id": "249313744", + "method": "smsjobs.isEligibleToJoin", + "params": [], + "type": "smsjobs.EligibilityToJoin" + }, + { + "id": "-1488007635", + "method": "smsjobs.join", + "params": [], + "type": "Bool" + }, + { + "id": "-1734824589", + "method": "smsjobs.leave", + "params": [], + "type": "Bool" + }, + { + "id": "155164863", + "method": "smsjobs.updateSettings", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "allow_international", + "type": "flags.0?true" + } + ], + "type": "Bool" + }, + { + "id": "279353576", + "method": "smsjobs.getStatus", + "params": [], + "type": "smsjobs.Status" + }, + { + "id": "2005766191", + "method": "smsjobs.getSmsJob", + "params": [ + { + "name": "job_id", + "type": "string" + } + ], + "type": "SmsJob" + }, + { + "id": "1327415076", + "method": "smsjobs.finishJob", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "job_id", + "type": "string" + }, + { + "name": "error", + "type": "flags.0?string" + } + ], + "type": "Bool" + }, + { + "id": "-1105295942", + "method": "fragment.getCollectibleInfo", + "params": [ + { + "name": "collectible", + "type": "InputCollectible" + } + ], + "type": "fragment.CollectibleInfo" + }, + { + "id": "1252538643", + "method": "aicompose.createTone", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "display_author", + "type": "flags.0?true" + }, + { + "name": "emoji_id", + "type": "long" + }, + { + "name": "title", + "type": "string" + }, + { + "name": "prompt", + "type": "string" + } + ], + "type": "AiComposeTone" + }, + { + "id": "-1875128487", + "method": "aicompose.updateTone", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "tone", + "type": "InputAiComposeTone" + }, + { + "name": "display_author", + "type": "flags.0?Bool" + }, + { + "name": "emoji_id", + "type": "flags.1?long" + }, + { + "name": "title", + "type": "flags.2?string" + }, + { + "name": "prompt", + "type": "flags.3?string" + } + ], + "type": "AiComposeTone" + }, + { + "id": "394447793", + "method": "aicompose.saveTone", + "params": [ + { + "name": "tone", + "type": "InputAiComposeTone" + }, + { + "name": "unsave", + "type": "Bool" + } + ], + "type": "Bool" + }, + { + "id": "-583454358", + "method": "aicompose.deleteTone", + "params": [ + { + "name": "tone", + "type": "InputAiComposeTone" + } + ], + "type": "Bool" + }, + { + "id": "-1293370877", + "method": "aicompose.getTone", + "params": [ + { + "name": "tone", + "type": "InputAiComposeTone" + } + ], + "type": "aicompose.Tones" + }, + { + "id": "-1412066815", + "method": "aicompose.getTones", + "params": [ + { + "name": "hash", + "type": "long" + } + ], + "type": "aicompose.Tones" + }, + { + "id": "-776688876", + "method": "aicompose.getToneExample", + "params": [ + { + "name": "tone", + "type": "InputAiComposeTone" + }, + { + "name": "num", + "type": "int" + } + ], + "type": "AiComposeToneExample" + } + ] +} \ No newline at end of file diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225.tl b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225.tl new file mode 100644 index 0000000..2ad8d9c --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225.tl @@ -0,0 +1,2979 @@ +boolFalse#bc799737 = Bool; +boolTrue#997275b5 = Bool; + +true#3fedd339 = True; + +vector#1cb5c415 {t:Type} # [ t ] = Vector t; + +error#c4b9f9bb code:int text:string = Error; + +null#56730bcc = Null; + +inputPeerEmpty#7f3b18ea = InputPeer; +inputPeerSelf#7da07ec9 = InputPeer; +inputPeerChat#35a95cb9 chat_id:long = InputPeer; +inputPeerUser#dde8a54c user_id:long access_hash:long = InputPeer; +inputPeerChannel#27bcbbfc channel_id:long access_hash:long = InputPeer; +inputPeerUserFromMessage#a87b0a1c peer:InputPeer msg_id:int user_id:long = InputPeer; +inputPeerChannelFromMessage#bd2a0840 peer:InputPeer msg_id:int channel_id:long = InputPeer; + +inputUserEmpty#b98886cf = InputUser; +inputUserSelf#f7c1b13f = InputUser; +inputUser#f21158c6 user_id:long access_hash:long = InputUser; +inputUserFromMessage#1da448e2 peer:InputPeer msg_id:int user_id:long = InputUser; + +inputPhoneContact#6a1dc4be flags:# client_id:long phone:string first_name:string last_name:string note:flags.0?TextWithEntities = InputContact; + +inputFile#f52ff27f id:long parts:int name:string md5_checksum:string = InputFile; +inputFileBig#fa4f0bb5 id:long parts:int name:string = InputFile; +inputFileStoryDocument#62dc8b48 id:InputDocument = InputFile; + +inputMediaEmpty#9664f57f = InputMedia; +inputMediaUploadedPhoto#7d8375da flags:# spoiler:flags.2?true live_photo:flags.3?true file:InputFile stickers:flags.0?Vector ttl_seconds:flags.1?int video:flags.3?InputDocument = InputMedia; +inputMediaPhoto#e3af4434 flags:# spoiler:flags.1?true live_photo:flags.2?true id:InputPhoto ttl_seconds:flags.0?int video:flags.2?InputDocument = InputMedia; +inputMediaGeoPoint#f9c44144 geo_point:InputGeoPoint = InputMedia; +inputMediaContact#f8ab7dfb phone_number:string first_name:string last_name:string vcard:string = InputMedia; +inputMediaUploadedDocument#37c9330 flags:# nosound_video:flags.3?true force_file:flags.4?true spoiler:flags.5?true file:InputFile thumb:flags.2?InputFile mime_type:string attributes:Vector stickers:flags.0?Vector video_cover:flags.6?InputPhoto video_timestamp:flags.7?int ttl_seconds:flags.1?int = InputMedia; +inputMediaDocument#a8763ab5 flags:# spoiler:flags.2?true id:InputDocument video_cover:flags.3?InputPhoto video_timestamp:flags.4?int ttl_seconds:flags.0?int query:flags.1?string = InputMedia; +inputMediaVenue#c13d1c11 geo_point:InputGeoPoint title:string address:string provider:string venue_id:string venue_type:string = InputMedia; +inputMediaPhotoExternal#e5bbfe1a flags:# spoiler:flags.1?true url:string ttl_seconds:flags.0?int = InputMedia; +inputMediaDocumentExternal#779600f9 flags:# spoiler:flags.1?true url:string ttl_seconds:flags.0?int video_cover:flags.2?InputPhoto video_timestamp:flags.3?int = InputMedia; +inputMediaGame#d33f43f3 id:InputGame = InputMedia; +inputMediaInvoice#405fef0d flags:# title:string description:string photo:flags.0?InputWebDocument invoice:Invoice payload:bytes provider:flags.3?string provider_data:DataJSON start_param:flags.1?string extended_media:flags.2?InputMedia = InputMedia; +inputMediaGeoLive#971fa843 flags:# stopped:flags.0?true geo_point:InputGeoPoint heading:flags.2?int period:flags.1?int proximity_notification_radius:flags.3?int = InputMedia; +inputMediaPoll#883a4108 flags:# poll:Poll correct_answers:flags.0?Vector attached_media:flags.3?InputMedia solution:flags.1?string solution_entities:flags.1?Vector solution_media:flags.2?InputMedia = InputMedia; +inputMediaDice#e66fbf7b emoticon:string = InputMedia; +inputMediaStory#89fdd778 peer:InputPeer id:int = InputMedia; +inputMediaWebPage#c21b8849 flags:# force_large_media:flags.0?true force_small_media:flags.1?true optional:flags.2?true url:string = InputMedia; +inputMediaPaidMedia#c4103386 flags:# stars_amount:long extended_media:Vector payload:flags.0?string = InputMedia; +inputMediaTodo#9fc55fde todo:TodoList = InputMedia; +inputMediaStakeDice#f3a9244a game_hash:string ton_amount:long client_seed:bytes = InputMedia; + +inputChatPhotoEmpty#1ca48f57 = InputChatPhoto; +inputChatUploadedPhoto#bdcdaec0 flags:# file:flags.0?InputFile video:flags.1?InputFile video_start_ts:flags.2?double video_emoji_markup:flags.3?VideoSize = InputChatPhoto; +inputChatPhoto#8953ad37 id:InputPhoto = InputChatPhoto; + +inputGeoPointEmpty#e4c123d6 = InputGeoPoint; +inputGeoPoint#48222faf flags:# lat:double long:double accuracy_radius:flags.0?int = InputGeoPoint; + +inputPhotoEmpty#1cd7bf0d = InputPhoto; +inputPhoto#3bb3b94a id:long access_hash:long file_reference:bytes = InputPhoto; + +inputFileLocation#dfdaabe1 volume_id:long local_id:int secret:long file_reference:bytes = InputFileLocation; +inputEncryptedFileLocation#f5235d55 id:long access_hash:long = InputFileLocation; +inputDocumentFileLocation#bad07584 id:long access_hash:long file_reference:bytes thumb_size:string = InputFileLocation; +inputSecureFileLocation#cbc7ee28 id:long access_hash:long = InputFileLocation; +inputTakeoutFileLocation#29be5899 = InputFileLocation; +inputPhotoFileLocation#40181ffe id:long access_hash:long file_reference:bytes thumb_size:string = InputFileLocation; +inputPhotoLegacyFileLocation#d83466f3 id:long access_hash:long file_reference:bytes volume_id:long local_id:int secret:long = InputFileLocation; +inputPeerPhotoFileLocation#37257e99 flags:# big:flags.0?true peer:InputPeer photo_id:long = InputFileLocation; +inputStickerSetThumb#9d84f3db stickerset:InputStickerSet thumb_version:int = InputFileLocation; +inputGroupCallStream#598a92a flags:# call:InputGroupCall time_ms:long scale:int video_channel:flags.0?int video_quality:flags.0?int = InputFileLocation; + +peerUser#59511722 user_id:long = Peer; +peerChat#36c6019a chat_id:long = Peer; +peerChannel#a2a5371e channel_id:long = Peer; + +storage.fileUnknown#aa963b05 = storage.FileType; +storage.filePartial#40bc6f52 = storage.FileType; +storage.fileJpeg#7efe0e = storage.FileType; +storage.fileGif#cae1aadf = storage.FileType; +storage.filePng#a4f63c0 = storage.FileType; +storage.filePdf#ae1e508d = storage.FileType; +storage.fileMp3#528a0677 = storage.FileType; +storage.fileMov#4b09ebbc = storage.FileType; +storage.fileMp4#b3cea0e4 = storage.FileType; +storage.fileWebp#1081464c = storage.FileType; + +userEmpty#d3bc4b7a id:long = User; +user#31774388 flags:# self:flags.10?true contact:flags.11?true mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true support:flags.23?true scam:flags.24?true apply_min_photo:flags.25?true fake:flags.26?true bot_attach_menu:flags.27?true premium:flags.28?true attach_menu_enabled:flags.29?true flags2:# bot_can_edit:flags2.1?true close_friend:flags2.2?true stories_hidden:flags2.3?true stories_unavailable:flags2.4?true contact_require_premium:flags2.10?true bot_business:flags2.11?true bot_has_main_app:flags2.13?true bot_forum_view:flags2.16?true bot_forum_can_manage_topics:flags2.17?true bot_can_manage_bots:flags2.18?true bot_guestchat:flags2.19?true id:long access_hash:flags.0?long first_name:flags.1?string last_name:flags.2?string username:flags.3?string phone:flags.4?string photo:flags.5?UserProfilePhoto status:flags.6?UserStatus bot_info_version:flags.14?int restriction_reason:flags.18?Vector bot_inline_placeholder:flags.19?string lang_code:flags.22?string emoji_status:flags.30?EmojiStatus usernames:flags2.0?Vector stories_max_id:flags2.5?RecentStory color:flags2.8?PeerColor profile_color:flags2.9?PeerColor bot_active_users:flags2.12?int bot_verification_icon:flags2.14?long send_paid_messages_stars:flags2.15?long = User; + +userProfilePhotoEmpty#4f11bae1 = UserProfilePhoto; +userProfilePhoto#82d1f706 flags:# has_video:flags.0?true personal:flags.2?true photo_id:long stripped_thumb:flags.1?bytes dc_id:int = UserProfilePhoto; + +userStatusEmpty#9d05049 = UserStatus; +userStatusOnline#edb93949 expires:int = UserStatus; +userStatusOffline#8c703f was_online:int = UserStatus; +userStatusRecently#7b197dc8 flags:# by_me:flags.0?true = UserStatus; +userStatusLastWeek#541a1d1a flags:# by_me:flags.0?true = UserStatus; +userStatusLastMonth#65899777 flags:# by_me:flags.0?true = UserStatus; + +chatEmpty#29562865 id:long = Chat; +chat#41cbf256 flags:# creator:flags.0?true left:flags.2?true deactivated:flags.5?true call_active:flags.23?true call_not_empty:flags.24?true noforwards:flags.25?true id:long title:string photo:ChatPhoto participants_count:int date:int version:int migrated_to:flags.6?InputChannel admin_rights:flags.14?ChatAdminRights default_banned_rights:flags.18?ChatBannedRights = Chat; +chatForbidden#6592a1a7 id:long title:string = Chat; +channel#1c32b11c flags:# creator:flags.0?true left:flags.2?true broadcast:flags.5?true verified:flags.7?true megagroup:flags.8?true restricted:flags.9?true signatures:flags.11?true min:flags.12?true scam:flags.19?true has_link:flags.20?true has_geo:flags.21?true slowmode_enabled:flags.22?true call_active:flags.23?true call_not_empty:flags.24?true fake:flags.25?true gigagroup:flags.26?true noforwards:flags.27?true join_to_send:flags.28?true join_request:flags.29?true forum:flags.30?true flags2:# stories_hidden:flags2.1?true stories_hidden_min:flags2.2?true stories_unavailable:flags2.3?true signature_profiles:flags2.12?true autotranslation:flags2.15?true broadcast_messages_allowed:flags2.16?true monoforum:flags2.17?true forum_tabs:flags2.19?true id:long access_hash:flags.13?long title:string username:flags.6?string photo:ChatPhoto date:int restriction_reason:flags.9?Vector admin_rights:flags.14?ChatAdminRights banned_rights:flags.15?ChatBannedRights default_banned_rights:flags.18?ChatBannedRights participants_count:flags.17?int usernames:flags2.0?Vector stories_max_id:flags2.4?RecentStory color:flags2.7?PeerColor profile_color:flags2.8?PeerColor emoji_status:flags2.9?EmojiStatus level:flags2.10?int subscription_until_date:flags2.11?int bot_verification_icon:flags2.13?long send_paid_messages_stars:flags2.14?long linked_monoforum_id:flags2.18?long = Chat; +channelForbidden#17d493d5 flags:# broadcast:flags.5?true megagroup:flags.8?true monoforum:flags.10?true id:long access_hash:long title:string until_date:flags.16?int = Chat; + +chatFull#2633421b flags:# can_set_username:flags.7?true has_scheduled:flags.8?true translations_disabled:flags.19?true id:long about:string participants:ChatParticipants chat_photo:flags.2?Photo notify_settings:PeerNotifySettings exported_invite:flags.13?ExportedChatInvite bot_info:flags.3?Vector pinned_msg_id:flags.6?int folder_id:flags.11?int call:flags.12?InputGroupCall ttl_period:flags.14?int groupcall_default_join_as:flags.15?Peer theme_emoticon:flags.16?string requests_pending:flags.17?int recent_requesters:flags.17?Vector available_reactions:flags.18?ChatReactions reactions_limit:flags.20?int = ChatFull; +channelFull#e4e0b29d flags:# can_view_participants:flags.3?true can_set_username:flags.6?true can_set_stickers:flags.7?true hidden_prehistory:flags.10?true can_set_location:flags.16?true has_scheduled:flags.19?true can_view_stats:flags.20?true blocked:flags.22?true flags2:# can_delete_channel:flags2.0?true antispam:flags2.1?true participants_hidden:flags2.2?true translations_disabled:flags2.3?true stories_pinned_available:flags2.5?true view_forum_as_messages:flags2.6?true restricted_sponsored:flags2.11?true can_view_revenue:flags2.12?true paid_media_allowed:flags2.14?true can_view_stars_revenue:flags2.15?true paid_reactions_available:flags2.16?true stargifts_available:flags2.19?true paid_messages_available:flags2.20?true id:long about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:flags.23?ExportedChatInvite bot_info:Vector migrated_from_chat_id:flags.4?long migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int folder_id:flags.11?int linked_chat_id:flags.14?long location:flags.15?ChannelLocation slowmode_seconds:flags.17?int slowmode_next_send_date:flags.18?int stats_dc:flags.12?int pts:int call:flags.21?InputGroupCall ttl_period:flags.24?int pending_suggestions:flags.25?Vector groupcall_default_join_as:flags.26?Peer theme_emoticon:flags.27?string requests_pending:flags.28?int recent_requesters:flags.28?Vector default_send_as:flags.29?Peer available_reactions:flags.30?ChatReactions reactions_limit:flags2.13?int stories:flags2.4?PeerStories wallpaper:flags2.7?WallPaper boosts_applied:flags2.8?int boosts_unrestrict:flags2.9?int emojiset:flags2.10?StickerSet bot_verification:flags2.17?BotVerification stargifts_count:flags2.18?int send_paid_messages_stars:flags2.21?long main_tab:flags2.22?ProfileTab = ChatFull; + +chatParticipant#38e79fde flags:# user_id:long inviter_id:long date:int rank:flags.0?string = ChatParticipant; +chatParticipantCreator#e1f867b8 flags:# user_id:long rank:flags.0?string = ChatParticipant; +chatParticipantAdmin#360d5d2 flags:# user_id:long inviter_id:long date:int rank:flags.0?string = ChatParticipant; + +chatParticipantsForbidden#8763d3e1 flags:# chat_id:long self_participant:flags.0?ChatParticipant = ChatParticipants; +chatParticipants#3cbc93f8 chat_id:long participants:Vector version:int = ChatParticipants; + +chatPhotoEmpty#37c1011c = ChatPhoto; +chatPhoto#1c6e1c11 flags:# has_video:flags.0?true photo_id:long stripped_thumb:flags.1?bytes dc_id:int = ChatPhoto; + +messageEmpty#90a6ca84 flags:# id:int peer_id:flags.0?Peer = Message; +message#95ef6f2b flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true from_scheduled:flags.18?true legacy:flags.19?true edit_hide:flags.21?true pinned:flags.24?true noforwards:flags.26?true invert_media:flags.27?true flags2:# offline:flags2.1?true video_processing_pending:flags2.4?true paid_suggested_post_stars:flags2.8?true paid_suggested_post_ton:flags2.9?true id:int from_id:flags.8?Peer from_boosts_applied:flags.29?int from_rank:flags2.12?string peer_id:Peer saved_peer_id:flags.28?Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?long via_business_bot_id:flags2.0?long guestchat_via_from:flags2.19?Peer reply_to:flags.3?MessageReplyHeader date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector views:flags.10?int forwards:flags.10?int replies:flags.23?MessageReplies edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long reactions:flags.20?MessageReactions restriction_reason:flags.22?Vector ttl_period:flags.25?int quick_reply_shortcut_id:flags.30?int effect:flags2.2?long factcheck:flags2.3?FactCheck report_delivery_until_date:flags2.5?int paid_message_stars:flags2.6?long suggested_post:flags2.7?SuggestedPost schedule_repeat_period:flags2.10?int summary_from_language:flags2.11?string = Message; +messageService#7a800e0a flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true reactions_are_possible:flags.9?true silent:flags.13?true post:flags.14?true legacy:flags.19?true id:int from_id:flags.8?Peer peer_id:Peer saved_peer_id:flags.28?Peer reply_to:flags.3?MessageReplyHeader date:int action:MessageAction reactions:flags.20?MessageReactions ttl_period:flags.25?int = Message; + +messageMediaEmpty#3ded6320 = MessageMedia; +messageMediaPhoto#e216eb63 flags:# spoiler:flags.3?true live_photo:flags.4?true photo:flags.0?Photo ttl_seconds:flags.2?int video:flags.4?Document = MessageMedia; +messageMediaGeo#56e0d474 geo:GeoPoint = MessageMedia; +messageMediaContact#70322949 phone_number:string first_name:string last_name:string vcard:string user_id:long = MessageMedia; +messageMediaUnsupported#9f84f49e = MessageMedia; +messageMediaDocument#52d8ccd9 flags:# nopremium:flags.3?true spoiler:flags.4?true video:flags.6?true round:flags.7?true voice:flags.8?true document:flags.0?Document alt_documents:flags.5?Vector video_cover:flags.9?Photo video_timestamp:flags.10?int ttl_seconds:flags.2?int = MessageMedia; +messageMediaWebPage#ddf10c3b flags:# force_large_media:flags.0?true force_small_media:flags.1?true manual:flags.3?true safe:flags.4?true webpage:WebPage = MessageMedia; +messageMediaVenue#2ec0533f geo:GeoPoint title:string address:string provider:string venue_id:string venue_type:string = MessageMedia; +messageMediaGame#fdb19008 game:Game = MessageMedia; +messageMediaInvoice#f6a548d3 flags:# shipping_address_requested:flags.1?true test:flags.3?true title:string description:string photo:flags.0?WebDocument receipt_msg_id:flags.2?int currency:string total_amount:long start_param:string extended_media:flags.4?MessageExtendedMedia = MessageMedia; +messageMediaGeoLive#b940c666 flags:# geo:GeoPoint heading:flags.0?int period:int proximity_notification_radius:flags.1?int = MessageMedia; +messageMediaPoll#773f4e66 flags:# poll:Poll results:PollResults attached_media:flags.0?MessageMedia = MessageMedia; +messageMediaDice#8cbec07 flags:# value:int emoticon:string game_outcome:flags.0?messages.EmojiGameOutcome = MessageMedia; +messageMediaStory#68cb6283 flags:# via_mention:flags.1?true peer:Peer id:int story:flags.0?StoryItem = MessageMedia; +messageMediaGiveaway#aa073beb flags:# only_new_subscribers:flags.0?true winners_are_visible:flags.2?true channels:Vector countries_iso2:flags.1?Vector prize_description:flags.3?string quantity:int months:flags.4?int stars:flags.5?long until_date:int = MessageMedia; +messageMediaGiveawayResults#ceaa3ea1 flags:# only_new_subscribers:flags.0?true refunded:flags.2?true channel_id:long additional_peers_count:flags.3?int launch_msg_id:int winners_count:int unclaimed_count:int winners:Vector months:flags.4?int stars:flags.5?long prize_description:flags.1?string until_date:int = MessageMedia; +messageMediaPaidMedia#a8852491 stars_amount:long extended_media:Vector = MessageMedia; +messageMediaToDo#8a53b014 flags:# todo:TodoList completions:flags.0?Vector = MessageMedia; +messageMediaVideoStream#ca5cab89 flags:# rtmp_stream:flags.0?true call:InputGroupCall = MessageMedia; + +messageActionEmpty#b6aef7b0 = MessageAction; +messageActionChatCreate#bd47cbad title:string users:Vector = MessageAction; +messageActionChatEditTitle#b5a1ce5a title:string = MessageAction; +messageActionChatEditPhoto#7fcb13a8 photo:Photo = MessageAction; +messageActionChatDeletePhoto#95e3fbef = MessageAction; +messageActionChatAddUser#15cefd00 users:Vector = MessageAction; +messageActionChatDeleteUser#a43f30cc user_id:long = MessageAction; +messageActionChatJoinedByLink#31224c3 inviter_id:long = MessageAction; +messageActionChannelCreate#95d2ac92 title:string = MessageAction; +messageActionChatMigrateTo#e1037f92 channel_id:long = MessageAction; +messageActionChannelMigrateFrom#ea3948e9 title:string chat_id:long = MessageAction; +messageActionPinMessage#94bd38ed = MessageAction; +messageActionHistoryClear#9fbab604 = MessageAction; +messageActionGameScore#92a72876 game_id:long score:int = MessageAction; +messageActionPaymentSentMe#ffa00ccc flags:# recurring_init:flags.2?true recurring_used:flags.3?true currency:string total_amount:long payload:bytes info:flags.0?PaymentRequestedInfo shipping_option_id:flags.1?string charge:PaymentCharge subscription_until_date:flags.4?int = MessageAction; +messageActionPaymentSent#c624b16e flags:# recurring_init:flags.2?true recurring_used:flags.3?true currency:string total_amount:long invoice_slug:flags.0?string subscription_until_date:flags.4?int = MessageAction; +messageActionPhoneCall#80e11a7f flags:# video:flags.2?true call_id:long reason:flags.0?PhoneCallDiscardReason duration:flags.1?int = MessageAction; +messageActionScreenshotTaken#4792929b = MessageAction; +messageActionCustomAction#fae69f56 message:string = MessageAction; +messageActionBotAllowed#c516d679 flags:# attach_menu:flags.1?true from_request:flags.3?true domain:flags.0?string app:flags.2?BotApp = MessageAction; +messageActionSecureValuesSentMe#1b287353 values:Vector credentials:SecureCredentialsEncrypted = MessageAction; +messageActionSecureValuesSent#d95c6154 types:Vector = MessageAction; +messageActionContactSignUp#f3f25f76 = MessageAction; +messageActionGeoProximityReached#98e0d697 from_id:Peer to_id:Peer distance:int = MessageAction; +messageActionGroupCall#7a0d7f42 flags:# call:InputGroupCall duration:flags.0?int = MessageAction; +messageActionInviteToGroupCall#502f92f7 call:InputGroupCall users:Vector = MessageAction; +messageActionSetMessagesTTL#3c134d7b flags:# period:int auto_setting_from:flags.0?long = MessageAction; +messageActionGroupCallScheduled#b3a07661 call:InputGroupCall schedule_date:int = MessageAction; +messageActionSetChatTheme#b91bbd3a theme:ChatTheme = MessageAction; +messageActionChatJoinedByRequest#ebbca3cb = MessageAction; +messageActionWebViewDataSentMe#47dd8079 text:string data:string = MessageAction; +messageActionWebViewDataSent#b4c38cb5 text:string = MessageAction; +messageActionGiftPremium#48e91302 flags:# currency:string amount:long days:int crypto_currency:flags.0?string crypto_amount:flags.0?long message:flags.1?TextWithEntities = MessageAction; +messageActionTopicCreate#d999256 flags:# title_missing:flags.1?true title:string icon_color:int icon_emoji_id:flags.0?long = MessageAction; +messageActionTopicEdit#c0944820 flags:# title:flags.0?string icon_emoji_id:flags.1?long closed:flags.2?Bool hidden:flags.3?Bool = MessageAction; +messageActionSuggestProfilePhoto#57de635e photo:Photo = MessageAction; +messageActionRequestedPeer#31518e9b button_id:int peers:Vector = MessageAction; +messageActionSetChatWallPaper#5060a3f4 flags:# same:flags.0?true for_both:flags.1?true wallpaper:WallPaper = MessageAction; +messageActionGiftCode#31c48347 flags:# via_giveaway:flags.0?true unclaimed:flags.5?true boost_peer:flags.1?Peer days:int slug:string currency:flags.2?string amount:flags.2?long crypto_currency:flags.3?string crypto_amount:flags.3?long message:flags.4?TextWithEntities = MessageAction; +messageActionGiveawayLaunch#a80f51e4 flags:# stars:flags.0?long = MessageAction; +messageActionGiveawayResults#87e2f155 flags:# stars:flags.0?true winners_count:int unclaimed_count:int = MessageAction; +messageActionBoostApply#cc02aa6d boosts:int = MessageAction; +messageActionRequestedPeerSentMe#93b31848 button_id:int peers:Vector = MessageAction; +messageActionPaymentRefunded#41b3e202 flags:# peer:Peer currency:string total_amount:long payload:flags.0?bytes charge:PaymentCharge = MessageAction; +messageActionGiftStars#45d5b021 flags:# currency:string amount:long stars:long crypto_currency:flags.0?string crypto_amount:flags.0?long transaction_id:flags.1?string = MessageAction; +messageActionPrizeStars#b00c47a2 flags:# unclaimed:flags.0?true stars:long transaction_id:string boost_peer:Peer giveaway_msg_id:int = MessageAction; +messageActionStarGift#ea2c31d3 flags:# name_hidden:flags.0?true saved:flags.2?true converted:flags.3?true upgraded:flags.5?true refunded:flags.9?true can_upgrade:flags.10?true prepaid_upgrade:flags.13?true upgrade_separate:flags.16?true auction_acquired:flags.17?true gift:StarGift message:flags.1?TextWithEntities convert_stars:flags.4?long upgrade_msg_id:flags.5?int upgrade_stars:flags.8?long from_id:flags.11?Peer peer:flags.12?Peer saved_id:flags.12?long prepaid_upgrade_hash:flags.14?string gift_msg_id:flags.15?int to_id:flags.18?Peer gift_num:flags.19?int = MessageAction; +messageActionStarGiftUnique#e6c31522 flags:# upgrade:flags.0?true transferred:flags.1?true saved:flags.2?true refunded:flags.5?true prepaid_upgrade:flags.11?true assigned:flags.13?true from_offer:flags.14?true craft:flags.16?true gift:StarGift can_export_at:flags.3?int transfer_stars:flags.4?long from_id:flags.6?Peer peer:flags.7?Peer saved_id:flags.7?long resale_amount:flags.8?StarsAmount can_transfer_at:flags.9?int can_resell_at:flags.10?int drop_original_details_stars:flags.12?long can_craft_at:flags.15?int = MessageAction; +messageActionPaidMessagesRefunded#ac1f1fcd count:int stars:long = MessageAction; +messageActionPaidMessagesPrice#84b88578 flags:# broadcast_messages_allowed:flags.0?true stars:long = MessageAction; +messageActionConferenceCall#2ffe2f7a flags:# missed:flags.0?true active:flags.1?true video:flags.4?true call_id:long duration:flags.2?int other_participants:flags.3?Vector = MessageAction; +messageActionTodoCompletions#cc7c5c89 completed:Vector incompleted:Vector = MessageAction; +messageActionTodoAppendTasks#c7edbc83 list:Vector = MessageAction; +messageActionSuggestedPostApproval#ee7a1596 flags:# rejected:flags.0?true balance_too_low:flags.1?true reject_comment:flags.2?string schedule_date:flags.3?int price:flags.4?StarsAmount = MessageAction; +messageActionSuggestedPostSuccess#95ddcf69 price:StarsAmount = MessageAction; +messageActionSuggestedPostRefund#69f916f8 flags:# payer_initiated:flags.0?true = MessageAction; +messageActionGiftTon#a8a3c699 flags:# currency:string amount:long crypto_currency:string crypto_amount:long transaction_id:flags.0?string = MessageAction; +messageActionSuggestBirthday#2c8f2a25 birthday:Birthday = MessageAction; +messageActionStarGiftPurchaseOffer#774278d4 flags:# accepted:flags.0?true declined:flags.1?true gift:StarGift price:StarsAmount expires_at:int = MessageAction; +messageActionStarGiftPurchaseOfferDeclined#73ada76b flags:# expired:flags.0?true gift:StarGift price:StarsAmount = MessageAction; +messageActionNewCreatorPending#b07ed085 new_creator_id:long = MessageAction; +messageActionChangeCreator#e188503b new_creator_id:long = MessageAction; +messageActionNoForwardsToggle#bf7d6572 prev_value:Bool new_value:Bool = MessageAction; +messageActionNoForwardsRequest#3e2793ba flags:# expired:flags.0?true prev_value:Bool new_value:Bool = MessageAction; +messageActionPollAppendAnswer#9da1cd6c answer:PollAnswer = MessageAction; +messageActionPollDeleteAnswer#399674dc answer:PollAnswer = MessageAction; +messageActionManagedBotCreated#16605e3e bot_id:long = MessageAction; + +dialog#fc89f7f3 flags:# pinned:flags.2?true unread_mark:flags.3?true view_forum_as_messages:flags.6?true peer:Peer top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_mentions_count:int unread_reactions_count:int unread_poll_votes_count:int notify_settings:PeerNotifySettings pts:flags.0?int draft:flags.1?DraftMessage folder_id:flags.4?int ttl_period:flags.5?int = Dialog; +dialogFolder#71bd134c flags:# pinned:flags.2?true folder:Folder peer:Peer top_message:int unread_muted_peers_count:int unread_unmuted_peers_count:int unread_muted_messages_count:int unread_unmuted_messages_count:int = Dialog; + +photoEmpty#2331b22d id:long = Photo; +photo#fb197a65 flags:# has_stickers:flags.0?true id:long access_hash:long file_reference:bytes date:int sizes:Vector video_sizes:flags.1?Vector dc_id:int = Photo; + +photoSizeEmpty#e17e23c type:string = PhotoSize; +photoSize#75c78e60 type:string w:int h:int size:int = PhotoSize; +photoCachedSize#21e1ad6 type:string w:int h:int bytes:bytes = PhotoSize; +photoStrippedSize#e0b0bc2e type:string bytes:bytes = PhotoSize; +photoSizeProgressive#fa3efb95 type:string w:int h:int sizes:Vector = PhotoSize; +photoPathSize#d8214d41 type:string bytes:bytes = PhotoSize; + +geoPointEmpty#1117dd5f = GeoPoint; +geoPoint#b2a2f663 flags:# long:double lat:double access_hash:long accuracy_radius:flags.0?int = GeoPoint; + +auth.sentCode#5e002502 flags:# type:auth.SentCodeType phone_code_hash:string next_type:flags.1?auth.CodeType timeout:flags.2?int = auth.SentCode; +auth.sentCodeSuccess#2390fe44 authorization:auth.Authorization = auth.SentCode; +auth.sentCodePaymentRequired#f8827ebf store_product:string phone_code_hash:string support_email_address:string support_email_subject:string premium_days:int currency:string amount:long = auth.SentCode; + +auth.authorization#2ea2c0d4 flags:# setup_password_required:flags.1?true otherwise_relogin_days:flags.1?int tmp_sessions:flags.0?int future_auth_token:flags.2?bytes user:User = auth.Authorization; +auth.authorizationSignUpRequired#44747e9a flags:# terms_of_service:flags.0?help.TermsOfService = auth.Authorization; + +auth.exportedAuthorization#b434e2b8 id:long bytes:bytes = auth.ExportedAuthorization; + +inputNotifyPeer#b8bc5b0c peer:InputPeer = InputNotifyPeer; +inputNotifyUsers#193b4417 = InputNotifyPeer; +inputNotifyChats#4a95e84e = InputNotifyPeer; +inputNotifyBroadcasts#b1db7c7e = InputNotifyPeer; +inputNotifyForumTopic#5c467992 peer:InputPeer top_msg_id:int = InputNotifyPeer; + +inputPeerNotifySettings#cacb6ae2 flags:# show_previews:flags.0?Bool silent:flags.1?Bool mute_until:flags.2?int sound:flags.3?NotificationSound stories_muted:flags.6?Bool stories_hide_sender:flags.7?Bool stories_sound:flags.8?NotificationSound = InputPeerNotifySettings; + +peerNotifySettings#99622c0c flags:# show_previews:flags.0?Bool silent:flags.1?Bool mute_until:flags.2?int ios_sound:flags.3?NotificationSound android_sound:flags.4?NotificationSound other_sound:flags.5?NotificationSound stories_muted:flags.6?Bool stories_hide_sender:flags.7?Bool stories_ios_sound:flags.8?NotificationSound stories_android_sound:flags.9?NotificationSound stories_other_sound:flags.10?NotificationSound = PeerNotifySettings; + +peerSettings#f47741f7 flags:# report_spam:flags.0?true add_contact:flags.1?true block_contact:flags.2?true share_contact:flags.3?true need_contacts_exception:flags.4?true report_geo:flags.5?true autoarchived:flags.7?true invite_members:flags.8?true request_chat_broadcast:flags.10?true business_bot_paused:flags.11?true business_bot_can_reply:flags.12?true geo_distance:flags.6?int request_chat_title:flags.9?string request_chat_date:flags.9?int business_bot_id:flags.13?long business_bot_manage_url:flags.13?string charge_paid_message_stars:flags.14?long registration_month:flags.15?string phone_country:flags.16?string name_change_date:flags.17?int photo_change_date:flags.18?int = PeerSettings; + +wallPaper#a437c3ed id:long flags:# creator:flags.0?true default:flags.1?true pattern:flags.3?true dark:flags.4?true access_hash:long slug:string document:Document settings:flags.2?WallPaperSettings = WallPaper; +wallPaperNoFile#e0804116 id:long flags:# default:flags.1?true dark:flags.4?true settings:flags.2?WallPaperSettings = WallPaper; + +inputReportReasonSpam#58dbcab8 = ReportReason; +inputReportReasonViolence#1e22c78d = ReportReason; +inputReportReasonPornography#2e59d922 = ReportReason; +inputReportReasonChildAbuse#adf44ee3 = ReportReason; +inputReportReasonOther#c1e4a2b1 = ReportReason; +inputReportReasonCopyright#9b89f93a = ReportReason; +inputReportReasonGeoIrrelevant#dbd4feed = ReportReason; +inputReportReasonFake#f5ddd6e7 = ReportReason; +inputReportReasonIllegalDrugs#a8eb2be = ReportReason; +inputReportReasonPersonalDetails#9ec7863d = ReportReason; + +userFull#6cbe645 flags:# blocked:flags.0?true phone_calls_available:flags.4?true phone_calls_private:flags.5?true can_pin_message:flags.7?true has_scheduled:flags.12?true video_calls_available:flags.13?true voice_messages_forbidden:flags.20?true translations_disabled:flags.23?true stories_pinned_available:flags.26?true blocked_my_stories_from:flags.27?true wallpaper_overridden:flags.28?true contact_require_premium:flags.29?true read_dates_private:flags.30?true flags2:# sponsored_enabled:flags2.7?true can_view_revenue:flags2.9?true bot_can_manage_emoji_status:flags2.10?true display_gifts_button:flags2.16?true noforwards_my_enabled:flags2.23?true noforwards_peer_enabled:flags2.24?true unofficial_security_risk:flags2.26?true id:long about:flags.1?string settings:PeerSettings personal_photo:flags.21?Photo profile_photo:flags.2?Photo fallback_photo:flags.22?Photo notify_settings:PeerNotifySettings bot_info:flags.3?BotInfo pinned_msg_id:flags.6?int common_chats_count:int folder_id:flags.11?int ttl_period:flags.14?int theme:flags.15?ChatTheme private_forward_name:flags.16?string bot_group_admin_rights:flags.17?ChatAdminRights bot_broadcast_admin_rights:flags.18?ChatAdminRights wallpaper:flags.24?WallPaper stories:flags.25?PeerStories business_work_hours:flags2.0?BusinessWorkHours business_location:flags2.1?BusinessLocation business_greeting_message:flags2.2?BusinessGreetingMessage business_away_message:flags2.3?BusinessAwayMessage business_intro:flags2.4?BusinessIntro birthday:flags2.5?Birthday personal_channel_id:flags2.6?long personal_channel_message:flags2.6?int stargifts_count:flags2.8?int starref_program:flags2.11?StarRefProgram bot_verification:flags2.12?BotVerification send_paid_messages_stars:flags2.14?long disallowed_gifts:flags2.15?DisallowedGiftsSettings stars_rating:flags2.17?StarsRating stars_my_pending_rating:flags2.18?StarsRating stars_my_pending_rating_date:flags2.18?int main_tab:flags2.20?ProfileTab saved_music:flags2.21?Document note:flags2.22?TextWithEntities bot_manager_id:flags2.25?long = UserFull; + +contact#145ade0b user_id:long mutual:Bool = Contact; + +importedContact#c13e3c50 user_id:long client_id:long = ImportedContact; + +contactStatus#16d9703b user_id:long status:UserStatus = ContactStatus; + +contacts.contactsNotModified#b74ba9d2 = contacts.Contacts; +contacts.contacts#eae87e42 contacts:Vector saved_count:int users:Vector = contacts.Contacts; + +contacts.importedContacts#77d01c3b imported:Vector popular_invites:Vector retry_contacts:Vector users:Vector = contacts.ImportedContacts; + +contacts.blocked#ade1591 blocked:Vector chats:Vector users:Vector = contacts.Blocked; +contacts.blockedSlice#e1664194 count:int blocked:Vector chats:Vector users:Vector = contacts.Blocked; + +messages.dialogs#15ba6c40 dialogs:Vector messages:Vector chats:Vector users:Vector = messages.Dialogs; +messages.dialogsSlice#71e094f3 count:int dialogs:Vector messages:Vector chats:Vector users:Vector = messages.Dialogs; +messages.dialogsNotModified#f0e3e596 count:int = messages.Dialogs; + +messages.messages#1d73e7ea messages:Vector topics:Vector chats:Vector users:Vector = messages.Messages; +messages.messagesSlice#5f206716 flags:# inexact:flags.1?true count:int next_rate:flags.0?int offset_id_offset:flags.2?int search_flood:flags.3?SearchPostsFlood messages:Vector topics:Vector chats:Vector users:Vector = messages.Messages; +messages.channelMessages#c776ba4e flags:# inexact:flags.1?true pts:int count:int offset_id_offset:flags.2?int messages:Vector topics:Vector chats:Vector users:Vector = messages.Messages; +messages.messagesNotModified#74535f21 count:int = messages.Messages; + +messages.chats#64ff9fd5 chats:Vector = messages.Chats; +messages.chatsSlice#9cd81144 count:int chats:Vector = messages.Chats; + +messages.chatFull#e5d7d19c full_chat:ChatFull chats:Vector users:Vector = messages.ChatFull; + +messages.affectedHistory#b45c69d1 pts:int pts_count:int offset:int = messages.AffectedHistory; + +inputMessagesFilterEmpty#57e2f66c = MessagesFilter; +inputMessagesFilterPhotos#9609a51c = MessagesFilter; +inputMessagesFilterVideo#9fc00e65 = MessagesFilter; +inputMessagesFilterPhotoVideo#56e9f0e4 = MessagesFilter; +inputMessagesFilterDocument#9eddf188 = MessagesFilter; +inputMessagesFilterUrl#7ef0dd87 = MessagesFilter; +inputMessagesFilterGif#ffc86587 = MessagesFilter; +inputMessagesFilterVoice#50f5c392 = MessagesFilter; +inputMessagesFilterMusic#3751b49e = MessagesFilter; +inputMessagesFilterChatPhotos#3a20ecb8 = MessagesFilter; +inputMessagesFilterPhoneCalls#80c99768 flags:# missed:flags.0?true = MessagesFilter; +inputMessagesFilterRoundVoice#7a7c17a4 = MessagesFilter; +inputMessagesFilterRoundVideo#b549da53 = MessagesFilter; +inputMessagesFilterMyMentions#c1f8e69a = MessagesFilter; +inputMessagesFilterGeo#e7026d0d = MessagesFilter; +inputMessagesFilterContacts#e062db83 = MessagesFilter; +inputMessagesFilterPinned#1bb00451 = MessagesFilter; +inputMessagesFilterPoll#fa2bc90a = MessagesFilter; + +updateNewMessage#1f2b0afd message:Message pts:int pts_count:int = Update; +updateMessageID#4e90bfd6 id:int random_id:long = Update; +updateDeleteMessages#a20db0e5 messages:Vector pts:int pts_count:int = Update; +updateUserTyping#2a17bf5c flags:# user_id:long top_msg_id:flags.0?int action:SendMessageAction = Update; +updateChatUserTyping#83487af0 chat_id:long from_id:Peer action:SendMessageAction = Update; +updateChatParticipants#7761198 participants:ChatParticipants = Update; +updateUserStatus#e5bdf8de user_id:long status:UserStatus = Update; +updateUserName#a7848924 user_id:long first_name:string last_name:string usernames:Vector = Update; +updateNewAuthorization#8951abef flags:# unconfirmed:flags.0?true hash:long date:flags.0?int device:flags.0?string location:flags.0?string = Update; +updateNewEncryptedMessage#12bcbd9a message:EncryptedMessage qts:int = Update; +updateEncryptedChatTyping#1710f156 chat_id:int = Update; +updateEncryption#b4a2e88d chat:EncryptedChat date:int = Update; +updateEncryptedMessagesRead#38fe25b7 chat_id:int max_date:int date:int = Update; +updateChatParticipantAdd#3dda5451 chat_id:long user_id:long inviter_id:long date:int version:int = Update; +updateChatParticipantDelete#e32f3d77 chat_id:long user_id:long version:int = Update; +updateDcOptions#8e5e9873 dc_options:Vector = Update; +updateNotifySettings#bec268ef peer:NotifyPeer notify_settings:PeerNotifySettings = Update; +updateServiceNotification#ebe46819 flags:# popup:flags.0?true invert_media:flags.2?true inbox_date:flags.1?int type:string message:string media:MessageMedia entities:Vector = Update; +updatePrivacy#ee3b272a key:PrivacyKey rules:Vector = Update; +updateUserPhone#5492a13 user_id:long phone:string = Update; +updateReadHistoryInbox#9e84bc99 flags:# folder_id:flags.0?int peer:Peer top_msg_id:flags.1?int max_id:int still_unread_count:int pts:int pts_count:int = Update; +updateReadHistoryOutbox#2f2f21bf peer:Peer max_id:int pts:int pts_count:int = Update; +updateWebPage#7f891213 webpage:WebPage pts:int pts_count:int = Update; +updateReadMessagesContents#f8227181 flags:# messages:Vector pts:int pts_count:int date:flags.0?int = Update; +updateChannelTooLong#108d941f flags:# channel_id:long pts:flags.0?int = Update; +updateChannel#635b4c09 channel_id:long = Update; +updateNewChannelMessage#62ba04d9 message:Message pts:int pts_count:int = Update; +updateReadChannelInbox#922e6e10 flags:# folder_id:flags.0?int channel_id:long max_id:int still_unread_count:int pts:int = Update; +updateDeleteChannelMessages#c32d5b12 channel_id:long messages:Vector pts:int pts_count:int = Update; +updateChannelMessageViews#f226ac08 channel_id:long id:int views:int = Update; +updateChatParticipantAdmin#d7ca61a2 chat_id:long user_id:long is_admin:Bool version:int = Update; +updateNewStickerSet#688a30aa stickerset:messages.StickerSet = Update; +updateStickerSetsOrder#bb2d201 flags:# masks:flags.0?true emojis:flags.1?true order:Vector = Update; +updateStickerSets#31c24808 flags:# masks:flags.0?true emojis:flags.1?true = Update; +updateSavedGifs#9375341e = Update; +updateBotInlineQuery#496f379c flags:# query_id:long user_id:long query:string geo:flags.0?GeoPoint peer_type:flags.1?InlineQueryPeerType offset:string = Update; +updateBotInlineSend#12f12a07 flags:# user_id:long query:string geo:flags.0?GeoPoint id:string msg_id:flags.1?InputBotInlineMessageID = Update; +updateEditChannelMessage#1b3f4df7 message:Message pts:int pts_count:int = Update; +updateBotCallbackQuery#b9cfc48d flags:# query_id:long user_id:long peer:Peer msg_id:int chat_instance:long data:flags.0?bytes game_short_name:flags.1?string = Update; +updateEditMessage#e40370a3 message:Message pts:int pts_count:int = Update; +updateInlineBotCallbackQuery#691e9052 flags:# query_id:long user_id:long msg_id:InputBotInlineMessageID chat_instance:long data:flags.0?bytes game_short_name:flags.1?string = Update; +updateReadChannelOutbox#b75f99a9 channel_id:long max_id:int = Update; +updateDraftMessage#edfc111e flags:# peer:Peer top_msg_id:flags.0?int saved_peer_id:flags.1?Peer draft:DraftMessage = Update; +updateReadFeaturedStickers#571d2742 = Update; +updateRecentStickers#9a422c20 = Update; +updateConfig#a229dd06 = Update; +updatePtsChanged#3354678f = Update; +updateChannelWebPage#2f2ba99f channel_id:long webpage:WebPage pts:int pts_count:int = Update; +updateDialogPinned#6e6fe51c flags:# pinned:flags.0?true folder_id:flags.1?int peer:DialogPeer = Update; +updatePinnedDialogs#fa0f3ca2 flags:# folder_id:flags.1?int order:flags.0?Vector = Update; +updateBotWebhookJSON#8317c0c3 data:DataJSON = Update; +updateBotWebhookJSONQuery#9b9240a6 query_id:long data:DataJSON timeout:int = Update; +updateBotShippingQuery#b5aefd7d query_id:long user_id:long payload:bytes shipping_address:PostAddress = Update; +updateBotPrecheckoutQuery#8caa9a96 flags:# query_id:long user_id:long payload:bytes info:flags.0?PaymentRequestedInfo shipping_option_id:flags.1?string currency:string total_amount:long = Update; +updatePhoneCall#ab0f6b1e phone_call:PhoneCall = Update; +updateLangPackTooLong#46560264 lang_code:string = Update; +updateLangPack#56022f4d difference:LangPackDifference = Update; +updateFavedStickers#e511996d = Update; +updateChannelReadMessagesContents#25f324f7 flags:# channel_id:long top_msg_id:flags.0?int saved_peer_id:flags.1?Peer messages:Vector = Update; +updateContactsReset#7084a7be = Update; +updateChannelAvailableMessages#b23fc698 channel_id:long available_min_id:int = Update; +updateDialogUnreadMark#b658f23e flags:# unread:flags.0?true peer:DialogPeer saved_peer_id:flags.1?Peer = Update; +updateMessagePoll#d64c522b flags:# peer:flags.1?Peer msg_id:flags.1?int top_msg_id:flags.2?int poll_id:long poll:flags.0?Poll results:PollResults = Update; +updateChatDefaultBannedRights#54c01850 peer:Peer default_banned_rights:ChatBannedRights version:int = Update; +updateFolderPeers#19360dc0 folder_peers:Vector pts:int pts_count:int = Update; +updatePeerSettings#6a7e7366 peer:Peer settings:PeerSettings = Update; +updatePeerLocated#b4afcfb0 peers:Vector = Update; +updateNewScheduledMessage#39a51dfb message:Message = Update; +updateDeleteScheduledMessages#f2a71983 flags:# peer:Peer messages:Vector sent_messages:flags.0?Vector = Update; +updateTheme#8216fba3 theme:Theme = Update; +updateGeoLiveViewed#871fb939 peer:Peer msg_id:int = Update; +updateLoginToken#564fe691 = Update; +updateMessagePollVote#7699f014 poll_id:long peer:Peer options:Vector positions:Vector qts:int = Update; +updateDialogFilter#26ffde7d flags:# id:int filter:flags.0?DialogFilter = Update; +updateDialogFilterOrder#a5d72105 order:Vector = Update; +updateDialogFilters#3504914f = Update; +updatePhoneCallSignalingData#2661bf09 phone_call_id:long data:bytes = Update; +updateChannelMessageForwards#d29a27f4 channel_id:long id:int forwards:int = Update; +updateReadChannelDiscussionInbox#d6b19546 flags:# channel_id:long top_msg_id:int read_max_id:int broadcast_id:flags.0?long broadcast_post:flags.0?int = Update; +updateReadChannelDiscussionOutbox#695c9e7c channel_id:long top_msg_id:int read_max_id:int = Update; +updatePeerBlocked#ebe07752 flags:# blocked:flags.0?true blocked_my_stories_from:flags.1?true peer_id:Peer = Update; +updateChannelUserTyping#8c88c923 flags:# channel_id:long top_msg_id:flags.0?int from_id:Peer action:SendMessageAction = Update; +updatePinnedMessages#ed85eab5 flags:# pinned:flags.0?true peer:Peer messages:Vector pts:int pts_count:int = Update; +updatePinnedChannelMessages#5bb98608 flags:# pinned:flags.0?true channel_id:long messages:Vector pts:int pts_count:int = Update; +updateChat#f89a6a4e chat_id:long = Update; +updateGroupCallParticipants#f2ebdb4e call:InputGroupCall participants:Vector version:int = Update; +updateGroupCall#9d2216e0 flags:# live_story:flags.2?true peer:flags.1?Peer call:GroupCall = Update; +updatePeerHistoryTTL#bb9bb9a5 flags:# peer:Peer ttl_period:flags.0?int = Update; +updateChatParticipant#d087663a flags:# chat_id:long date:int actor_id:long user_id:long prev_participant:flags.0?ChatParticipant new_participant:flags.1?ChatParticipant invite:flags.2?ExportedChatInvite qts:int = Update; +updateChannelParticipant#985d3abb flags:# via_chatlist:flags.3?true channel_id:long date:int actor_id:long user_id:long prev_participant:flags.0?ChannelParticipant new_participant:flags.1?ChannelParticipant invite:flags.2?ExportedChatInvite qts:int = Update; +updateBotStopped#c4870a49 user_id:long date:int stopped:Bool qts:int = Update; +updateGroupCallConnection#b783982 flags:# presentation:flags.0?true params:DataJSON = Update; +updateBotCommands#4d712f2e peer:Peer bot_id:long commands:Vector = Update; +updatePendingJoinRequests#7063c3db peer:Peer requests_pending:int recent_requesters:Vector = Update; +updateBotChatInviteRequester#11dfa986 peer:Peer date:int user_id:long about:string invite:ExportedChatInvite qts:int = Update; +updateMessageReactions#1e297bfa flags:# peer:Peer msg_id:int top_msg_id:flags.0?int saved_peer_id:flags.1?Peer reactions:MessageReactions = Update; +updateAttachMenuBots#17b7a20b = Update; +updateWebViewResultSent#1592b79d query_id:long = Update; +updateBotMenuButton#14b85813 bot_id:long button:BotMenuButton = Update; +updateSavedRingtones#74d8be99 = Update; +updateTranscribedAudio#84cd5a flags:# pending:flags.0?true peer:Peer msg_id:int transcription_id:long text:string = Update; +updateReadFeaturedEmojiStickers#fb4c496c = Update; +updateUserEmojiStatus#28373599 user_id:long emoji_status:EmojiStatus = Update; +updateRecentEmojiStatuses#30f443db = Update; +updateRecentReactions#6f7863f4 = Update; +updateMoveStickerSetToTop#86fccf85 flags:# masks:flags.0?true emojis:flags.1?true stickerset:long = Update; +updateMessageExtendedMedia#d5a41724 peer:Peer msg_id:int extended_media:Vector = Update; +updateUser#20529438 user_id:long = Update; +updateAutoSaveSettings#ec05b097 = Update; +updateStory#75b3b798 peer:Peer story:StoryItem = Update; +updateReadStories#f74e932b peer:Peer max_id:int = Update; +updateStoryID#1bf335b9 id:int random_id:long = Update; +updateStoriesStealthMode#2c084dc1 stealth_mode:StoriesStealthMode = Update; +updateSentStoryReaction#7d627683 peer:Peer story_id:int reaction:Reaction = Update; +updateBotChatBoost#904dd49c peer:Peer boost:Boost qts:int = Update; +updateChannelViewForumAsMessages#7b68920 channel_id:long enabled:Bool = Update; +updatePeerWallpaper#ae3f101d flags:# wallpaper_overridden:flags.1?true peer:Peer wallpaper:flags.0?WallPaper = Update; +updateBotMessageReaction#ac21d3ce peer:Peer msg_id:int date:int actor:Peer old_reactions:Vector new_reactions:Vector qts:int = Update; +updateBotMessageReactions#9cb7759 peer:Peer msg_id:int date:int reactions:Vector qts:int = Update; +updateSavedDialogPinned#aeaf9e74 flags:# pinned:flags.0?true peer:DialogPeer = Update; +updatePinnedSavedDialogs#686c85a6 flags:# order:flags.0?Vector = Update; +updateSavedReactionTags#39c67432 = Update; +updateSmsJob#f16269d4 job_id:string = Update; +updateQuickReplies#f9470ab2 quick_replies:Vector = Update; +updateNewQuickReply#f53da717 quick_reply:QuickReply = Update; +updateDeleteQuickReply#53e6f1ec shortcut_id:int = Update; +updateQuickReplyMessage#3e050d0f message:Message = Update; +updateDeleteQuickReplyMessages#566fe7cd shortcut_id:int messages:Vector = Update; +updateBotBusinessConnect#8ae5c97a connection:BotBusinessConnection qts:int = Update; +updateBotNewBusinessMessage#9ddb347c flags:# connection_id:string message:Message reply_to_message:flags.0?Message qts:int = Update; +updateBotEditBusinessMessage#7df587c flags:# connection_id:string message:Message reply_to_message:flags.0?Message qts:int = Update; +updateBotDeleteBusinessMessage#a02a982e connection_id:string peer:Peer messages:Vector qts:int = Update; +updateNewStoryReaction#1824e40b story_id:int peer:Peer reaction:Reaction = Update; +updateStarsBalance#4e80a379 balance:StarsAmount = Update; +updateBusinessBotCallbackQuery#1ea2fda7 flags:# query_id:long user_id:long connection_id:string message:Message reply_to_message:flags.2?Message chat_instance:long data:flags.0?bytes = Update; +updateStarsRevenueStatus#a584b019 peer:Peer status:StarsRevenueStatus = Update; +updateBotPurchasedPaidMedia#283bd312 user_id:long payload:string qts:int = Update; +updatePaidReactionPrivacy#8b725fce private:PaidReactionPrivacy = Update; +updateSentPhoneCode#504aa18f sent_code:auth.SentCode = Update; +updateGroupCallChainBlocks#a477288f call:InputGroupCall sub_chain_id:int blocks:Vector next_offset:int = Update; +updateReadMonoForumInbox#77b0e372 channel_id:long saved_peer_id:Peer read_max_id:int = Update; +updateReadMonoForumOutbox#a4a79376 channel_id:long saved_peer_id:Peer read_max_id:int = Update; +updateMonoForumNoPaidException#9f812b08 flags:# exception:flags.0?true channel_id:long saved_peer_id:Peer = Update; +updateGroupCallMessage#d8326f0d call:InputGroupCall message:GroupCallMessage = Update; +updateGroupCallEncryptedMessage#c957a766 call:InputGroupCall from_id:Peer encrypted_message:bytes = Update; +updatePinnedForumTopic#683b2c52 flags:# pinned:flags.0?true peer:Peer topic_id:int = Update; +updatePinnedForumTopics#def143d0 flags:# peer:Peer order:flags.0?Vector = Update; +updateDeleteGroupCallMessages#3e85e92c call:InputGroupCall messages:Vector = Update; +updateStarGiftAuctionState#48e246c2 gift_id:long state:StarGiftAuctionState = Update; +updateStarGiftAuctionUserState#dc58f31e gift_id:long user_state:StarGiftAuctionUserState = Update; +updateEmojiGameInfo#fb9c547a info:messages.EmojiGameInfo = Update; +updateStarGiftCraftFail#ac072444 = Update; +updateChatParticipantRank#bd8367b9 chat_id:long user_id:long rank:string version:int = Update; +updateManagedBot#4880ed9a user_id:long bot_id:long qts:int = Update; +updateBotGuestChatQuery#cdd4093d flags:# query_id:long message:Message reference_messages:flags.0?Vector qts:int = Update; +updateAiComposeTones#8c0f91fb = Update; + +updates.state#a56c2a3e pts:int qts:int date:int seq:int unread_count:int = updates.State; + +updates.differenceEmpty#5d75a138 date:int seq:int = updates.Difference; +updates.difference#f49ca0 new_messages:Vector new_encrypted_messages:Vector other_updates:Vector chats:Vector users:Vector state:updates.State = updates.Difference; +updates.differenceSlice#a8fb1981 new_messages:Vector new_encrypted_messages:Vector other_updates:Vector chats:Vector users:Vector intermediate_state:updates.State = updates.Difference; +updates.differenceTooLong#4afe8f6d pts:int = updates.Difference; + +updatesTooLong#e317af7e = Updates; +updateShortMessage#313bc7f8 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:int user_id:long message:string pts:int pts_count:int date:int fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?long reply_to:flags.3?MessageReplyHeader entities:flags.7?Vector ttl_period:flags.25?int = Updates; +updateShortChatMessage#4d6deea5 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:int from_id:long chat_id:long message:string pts:int pts_count:int date:int fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?long reply_to:flags.3?MessageReplyHeader entities:flags.7?Vector ttl_period:flags.25?int = Updates; +updateShort#78d4dec1 update:Update date:int = Updates; +updatesCombined#725b04c3 updates:Vector users:Vector chats:Vector date:int seq_start:int seq:int = Updates; +updates#74ae4240 updates:Vector users:Vector chats:Vector date:int seq:int = Updates; +updateShortSentMessage#9015e101 flags:# out:flags.1?true id:int pts:int pts_count:int date:int media:flags.9?MessageMedia entities:flags.7?Vector ttl_period:flags.25?int = Updates; + +photos.photos#8dca6aa5 photos:Vector users:Vector = photos.Photos; +photos.photosSlice#15051f54 count:int photos:Vector users:Vector = photos.Photos; + +photos.photo#20212ca8 photo:Photo users:Vector = photos.Photo; + +upload.file#96a18d5 type:storage.FileType mtime:int bytes:bytes = upload.File; +upload.fileCdnRedirect#f18cda44 dc_id:int file_token:bytes encryption_key:bytes encryption_iv:bytes file_hashes:Vector = upload.File; + +dcOption#18b7a10d flags:# ipv6:flags.0?true media_only:flags.1?true tcpo_only:flags.2?true cdn:flags.3?true static:flags.4?true this_port_only:flags.5?true id:int ip_address:string port:int secret:flags.10?bytes = DcOption; + +config#cc1a241e flags:# default_p2p_contacts:flags.3?true preload_featured_stickers:flags.4?true revoke_pm_inbox:flags.6?true blocked_mode:flags.8?true force_try_ipv6:flags.14?true date:int expires:int test_mode:Bool this_dc:int dc_options:Vector dc_txt_domain_name:string chat_size_max:int megagroup_size_max:int forwarded_count_max:int online_update_period_ms:int offline_blur_timeout_ms:int offline_idle_timeout_ms:int online_cloud_timeout_ms:int notify_cloud_delay_ms:int notify_default_delay_ms:int push_chat_period_ms:int push_chat_limit:int edit_time_limit:int revoke_time_limit:int revoke_pm_time_limit:int rating_e_decay:int stickers_recent_limit:int channels_read_media_period:int tmp_sessions:flags.0?int call_receive_timeout_ms:int call_ring_timeout_ms:int call_connect_timeout_ms:int call_packet_timeout_ms:int me_url_prefix:string autoupdate_url_prefix:flags.7?string gif_search_username:flags.9?string venue_search_username:flags.10?string img_search_username:flags.11?string static_maps_provider:flags.12?string caption_length_max:int message_length_max:int webfile_dc_id:int suggested_lang_code:flags.2?string lang_pack_version:flags.2?int base_lang_pack_version:flags.2?int reactions_default:flags.15?Reaction autologin_token:flags.16?string = Config; + +nearestDc#8e1a1775 country:string this_dc:int nearest_dc:int = NearestDc; + +help.appUpdate#ccbbce30 flags:# can_not_skip:flags.0?true id:int version:string text:string entities:Vector document:flags.1?Document url:flags.2?string sticker:flags.3?Document = help.AppUpdate; +help.noAppUpdate#c45a6536 = help.AppUpdate; + +help.inviteText#18cb9f78 message:string = help.InviteText; + +encryptedChatEmpty#ab7ec0a0 id:int = EncryptedChat; +encryptedChatWaiting#66b25953 id:int access_hash:long date:int admin_id:long participant_id:long = EncryptedChat; +encryptedChatRequested#48f1d94c flags:# folder_id:flags.0?int id:int access_hash:long date:int admin_id:long participant_id:long g_a:bytes = EncryptedChat; +encryptedChat#61f0d4c7 id:int access_hash:long date:int admin_id:long participant_id:long g_a_or_b:bytes key_fingerprint:long = EncryptedChat; +encryptedChatDiscarded#1e1c7c45 flags:# history_deleted:flags.0?true id:int = EncryptedChat; + +inputEncryptedChat#f141b5e1 chat_id:int access_hash:long = InputEncryptedChat; + +encryptedFileEmpty#c21f497e = EncryptedFile; +encryptedFile#a8008cd8 id:long access_hash:long size:long dc_id:int key_fingerprint:int = EncryptedFile; + +inputEncryptedFileEmpty#1837c364 = InputEncryptedFile; +inputEncryptedFileUploaded#64bd0306 id:long parts:int md5_checksum:string key_fingerprint:int = InputEncryptedFile; +inputEncryptedFile#5a17b5e5 id:long access_hash:long = InputEncryptedFile; +inputEncryptedFileBigUploaded#2dc173c8 id:long parts:int key_fingerprint:int = InputEncryptedFile; + +encryptedMessage#ed18c118 random_id:long chat_id:int date:int bytes:bytes file:EncryptedFile = EncryptedMessage; +encryptedMessageService#23734b06 random_id:long chat_id:int date:int bytes:bytes = EncryptedMessage; + +messages.dhConfigNotModified#c0e24635 random:bytes = messages.DhConfig; +messages.dhConfig#2c221edd g:int p:bytes version:int random:bytes = messages.DhConfig; + +messages.sentEncryptedMessage#560f8935 date:int = messages.SentEncryptedMessage; +messages.sentEncryptedFile#9493ff32 date:int file:EncryptedFile = messages.SentEncryptedMessage; + +inputDocumentEmpty#72f0eaae = InputDocument; +inputDocument#1abfb575 id:long access_hash:long file_reference:bytes = InputDocument; + +documentEmpty#36f8c871 id:long = Document; +document#8fd4c4d8 flags:# id:long access_hash:long file_reference:bytes date:int mime_type:string size:long thumbs:flags.0?Vector video_thumbs:flags.1?Vector dc_id:int attributes:Vector = Document; + +help.support#17c6b5f6 phone_number:string user:User = help.Support; + +notifyPeer#9fd40bd8 peer:Peer = NotifyPeer; +notifyUsers#b4c83b4c = NotifyPeer; +notifyChats#c007cec3 = NotifyPeer; +notifyBroadcasts#d612e8ef = NotifyPeer; +notifyForumTopic#226e6308 peer:Peer top_msg_id:int = NotifyPeer; + +sendMessageTypingAction#16bf744e = SendMessageAction; +sendMessageCancelAction#fd5ec8f5 = SendMessageAction; +sendMessageRecordVideoAction#a187d66f = SendMessageAction; +sendMessageUploadVideoAction#e9763aec progress:int = SendMessageAction; +sendMessageRecordAudioAction#d52f73f7 = SendMessageAction; +sendMessageUploadAudioAction#f351d7ab progress:int = SendMessageAction; +sendMessageUploadPhotoAction#d1d34a26 progress:int = SendMessageAction; +sendMessageUploadDocumentAction#aa0cd9e4 progress:int = SendMessageAction; +sendMessageGeoLocationAction#176f8ba1 = SendMessageAction; +sendMessageChooseContactAction#628cbc6f = SendMessageAction; +sendMessageGamePlayAction#dd6a8f48 = SendMessageAction; +sendMessageRecordRoundAction#88f27fbc = SendMessageAction; +sendMessageUploadRoundAction#243e1c66 progress:int = SendMessageAction; +speakingInGroupCallAction#d92c2285 = SendMessageAction; +sendMessageHistoryImportAction#dbda9246 progress:int = SendMessageAction; +sendMessageChooseStickerAction#b05ac6b1 = SendMessageAction; +sendMessageEmojiInteraction#25972bcb emoticon:string msg_id:int interaction:DataJSON = SendMessageAction; +sendMessageEmojiInteractionSeen#b665902e emoticon:string = SendMessageAction; +sendMessageTextDraftAction#376d975c random_id:long text:TextWithEntities = SendMessageAction; + +contacts.found#b3134d9d my_results:Vector results:Vector chats:Vector users:Vector = contacts.Found; + +inputPrivacyKeyStatusTimestamp#4f96cb18 = InputPrivacyKey; +inputPrivacyKeyChatInvite#bdfb0426 = InputPrivacyKey; +inputPrivacyKeyPhoneCall#fabadc5f = InputPrivacyKey; +inputPrivacyKeyPhoneP2P#db9e70d2 = InputPrivacyKey; +inputPrivacyKeyForwards#a4dd4c08 = InputPrivacyKey; +inputPrivacyKeyProfilePhoto#5719bacc = InputPrivacyKey; +inputPrivacyKeyPhoneNumber#352dafa = InputPrivacyKey; +inputPrivacyKeyAddedByPhone#d1219bdd = InputPrivacyKey; +inputPrivacyKeyVoiceMessages#aee69d68 = InputPrivacyKey; +inputPrivacyKeyAbout#3823cc40 = InputPrivacyKey; +inputPrivacyKeyBirthday#d65a11cc = InputPrivacyKey; +inputPrivacyKeyStarGiftsAutoSave#e1732341 = InputPrivacyKey; +inputPrivacyKeyNoPaidMessages#bdc597b4 = InputPrivacyKey; +inputPrivacyKeySavedMusic#4dbe9226 = InputPrivacyKey; + +privacyKeyStatusTimestamp#bc2eab30 = PrivacyKey; +privacyKeyChatInvite#500e6dfa = PrivacyKey; +privacyKeyPhoneCall#3d662b7b = PrivacyKey; +privacyKeyPhoneP2P#39491cc8 = PrivacyKey; +privacyKeyForwards#69ec56a3 = PrivacyKey; +privacyKeyProfilePhoto#96151fed = PrivacyKey; +privacyKeyPhoneNumber#d19ae46d = PrivacyKey; +privacyKeyAddedByPhone#42ffd42b = PrivacyKey; +privacyKeyVoiceMessages#697f414 = PrivacyKey; +privacyKeyAbout#a486b761 = PrivacyKey; +privacyKeyBirthday#2000a518 = PrivacyKey; +privacyKeyStarGiftsAutoSave#2ca4fdf8 = PrivacyKey; +privacyKeyNoPaidMessages#17d348d2 = PrivacyKey; +privacyKeySavedMusic#ff7a571b = PrivacyKey; + +inputPrivacyValueAllowContacts#d09e07b = InputPrivacyRule; +inputPrivacyValueAllowAll#184b35ce = InputPrivacyRule; +inputPrivacyValueAllowUsers#131cc67f users:Vector = InputPrivacyRule; +inputPrivacyValueDisallowContacts#ba52007 = InputPrivacyRule; +inputPrivacyValueDisallowAll#d66b66c9 = InputPrivacyRule; +inputPrivacyValueDisallowUsers#90110467 users:Vector = InputPrivacyRule; +inputPrivacyValueAllowChatParticipants#840649cf chats:Vector = InputPrivacyRule; +inputPrivacyValueDisallowChatParticipants#e94f0f86 chats:Vector = InputPrivacyRule; +inputPrivacyValueAllowCloseFriends#2f453e49 = InputPrivacyRule; +inputPrivacyValueAllowPremium#77cdc9f1 = InputPrivacyRule; +inputPrivacyValueAllowBots#5a4fcce5 = InputPrivacyRule; +inputPrivacyValueDisallowBots#c4e57915 = InputPrivacyRule; + +privacyValueAllowContacts#fffe1bac = PrivacyRule; +privacyValueAllowAll#65427b82 = PrivacyRule; +privacyValueAllowUsers#b8905fb2 users:Vector = PrivacyRule; +privacyValueDisallowContacts#f888fa1a = PrivacyRule; +privacyValueDisallowAll#8b73e763 = PrivacyRule; +privacyValueDisallowUsers#e4621141 users:Vector = PrivacyRule; +privacyValueAllowChatParticipants#6b134e8e chats:Vector = PrivacyRule; +privacyValueDisallowChatParticipants#41c87565 chats:Vector = PrivacyRule; +privacyValueAllowCloseFriends#f7e8d89b = PrivacyRule; +privacyValueAllowPremium#ece9814b = PrivacyRule; +privacyValueAllowBots#21461b5d = PrivacyRule; +privacyValueDisallowBots#f6a5f82f = PrivacyRule; + +account.privacyRules#50a04e45 rules:Vector chats:Vector users:Vector = account.PrivacyRules; + +accountDaysTTL#b8d0afdf days:int = AccountDaysTTL; + +documentAttributeImageSize#6c37c15c w:int h:int = DocumentAttribute; +documentAttributeAnimated#11b58939 = DocumentAttribute; +documentAttributeSticker#6319d612 flags:# mask:flags.1?true alt:string stickerset:InputStickerSet mask_coords:flags.0?MaskCoords = DocumentAttribute; +documentAttributeVideo#43c57c48 flags:# round_message:flags.0?true supports_streaming:flags.1?true nosound:flags.3?true duration:double w:int h:int preload_prefix_size:flags.2?int video_start_ts:flags.4?double video_codec:flags.5?string = DocumentAttribute; +documentAttributeAudio#9852f9c6 flags:# voice:flags.10?true duration:int title:flags.0?string performer:flags.1?string waveform:flags.2?bytes = DocumentAttribute; +documentAttributeFilename#15590068 file_name:string = DocumentAttribute; +documentAttributeHasStickers#9801d2f7 = DocumentAttribute; +documentAttributeCustomEmoji#fd149899 flags:# free:flags.0?true text_color:flags.1?true alt:string stickerset:InputStickerSet = DocumentAttribute; + +messages.stickersNotModified#f1749a22 = messages.Stickers; +messages.stickers#30a6ec7e hash:long stickers:Vector = messages.Stickers; + +stickerPack#12b299d4 emoticon:string documents:Vector = StickerPack; + +messages.allStickersNotModified#e86602c3 = messages.AllStickers; +messages.allStickers#cdbbcebb hash:long sets:Vector = messages.AllStickers; + +messages.affectedMessages#84d19185 pts:int pts_count:int = messages.AffectedMessages; + +webPageEmpty#211a1788 flags:# id:long url:flags.0?string = WebPage; +webPagePending#b0d13e47 flags:# id:long url:flags.0?string date:int = WebPage; +webPage#e89c45b2 flags:# has_large_media:flags.13?true video_cover_photo:flags.14?true id:long url:string display_url:string hash:int type:flags.0?string site_name:flags.1?string title:flags.2?string description:flags.3?string photo:flags.4?Photo embed_url:flags.5?string embed_type:flags.5?string embed_width:flags.6?int embed_height:flags.6?int duration:flags.7?int author:flags.8?string document:flags.9?Document cached_page:flags.10?Page attributes:flags.12?Vector = WebPage; +webPageNotModified#7311ca11 flags:# cached_page_views:flags.0?int = WebPage; + +authorization#ad01d61d flags:# current:flags.0?true official_app:flags.1?true password_pending:flags.2?true encrypted_requests_disabled:flags.3?true call_requests_disabled:flags.4?true unconfirmed:flags.5?true hash:long device_model:string platform:string system_version:string api_id:int app_name:string app_version:string date_created:int date_active:int ip:string country:string region:string = Authorization; + +account.authorizations#4bff8ea0 authorization_ttl_days:int authorizations:Vector = account.Authorizations; + +account.password#957b50fb flags:# has_recovery:flags.0?true has_secure_values:flags.1?true has_password:flags.2?true current_algo:flags.2?PasswordKdfAlgo srp_B:flags.2?bytes srp_id:flags.2?long hint:flags.3?string email_unconfirmed_pattern:flags.4?string new_algo:PasswordKdfAlgo new_secure_algo:SecurePasswordKdfAlgo secure_random:bytes pending_reset_date:flags.5?int login_email_pattern:flags.6?string = account.Password; + +account.passwordSettings#9a5c33e5 flags:# email:flags.0?string secure_settings:flags.1?SecureSecretSettings = account.PasswordSettings; + +account.passwordInputSettings#c23727c9 flags:# new_algo:flags.0?PasswordKdfAlgo new_password_hash:flags.0?bytes hint:flags.0?string email:flags.1?string new_secure_settings:flags.2?SecureSecretSettings = account.PasswordInputSettings; + +auth.passwordRecovery#137948a5 email_pattern:string = auth.PasswordRecovery; + +receivedNotifyMessage#a384b779 id:int flags:int = ReceivedNotifyMessage; + +chatInviteExported#a22cbd96 flags:# revoked:flags.0?true permanent:flags.5?true request_needed:flags.6?true link:string admin_id:long date:int start_date:flags.4?int expire_date:flags.1?int usage_limit:flags.2?int usage:flags.3?int requested:flags.7?int subscription_expired:flags.10?int title:flags.8?string subscription_pricing:flags.9?StarsSubscriptionPricing = ExportedChatInvite; +chatInvitePublicJoinRequests#ed107ab7 = ExportedChatInvite; + +chatInviteAlready#5a686d7c chat:Chat = ChatInvite; +chatInvite#5c9d3702 flags:# channel:flags.0?true broadcast:flags.1?true public:flags.2?true megagroup:flags.3?true request_needed:flags.6?true verified:flags.7?true scam:flags.8?true fake:flags.9?true can_refulfill_subscription:flags.11?true title:string about:flags.5?string photo:Photo participants_count:int participants:flags.4?Vector color:int subscription_pricing:flags.10?StarsSubscriptionPricing subscription_form_id:flags.12?long bot_verification:flags.13?BotVerification = ChatInvite; +chatInvitePeek#61695cb0 chat:Chat expires:int = ChatInvite; + +inputStickerSetEmpty#ffb62b95 = InputStickerSet; +inputStickerSetID#9de7a269 id:long access_hash:long = InputStickerSet; +inputStickerSetShortName#861cc8a0 short_name:string = InputStickerSet; +inputStickerSetAnimatedEmoji#28703c8 = InputStickerSet; +inputStickerSetDice#e67f520e emoticon:string = InputStickerSet; +inputStickerSetAnimatedEmojiAnimations#cde3739 = InputStickerSet; +inputStickerSetPremiumGifts#c88b3b02 = InputStickerSet; +inputStickerSetEmojiGenericAnimations#4c4d4ce = InputStickerSet; +inputStickerSetEmojiDefaultStatuses#29d0f5ee = InputStickerSet; +inputStickerSetEmojiDefaultTopicIcons#44c1f8e9 = InputStickerSet; +inputStickerSetEmojiChannelDefaultStatuses#49748553 = InputStickerSet; +inputStickerSetTonGifts#1cf671a0 = InputStickerSet; + +stickerSet#2dd14edc flags:# archived:flags.1?true official:flags.2?true masks:flags.3?true emojis:flags.7?true text_color:flags.9?true channel_emoji_status:flags.10?true creator:flags.11?true installed_date:flags.0?int id:long access_hash:long title:string short_name:string thumbs:flags.4?Vector thumb_dc_id:flags.4?int thumb_version:flags.4?int thumb_document_id:flags.8?long count:int hash:int = StickerSet; + +messages.stickerSet#6e153f16 set:StickerSet packs:Vector keywords:Vector documents:Vector = messages.StickerSet; +messages.stickerSetNotModified#d3f924eb = messages.StickerSet; + +botCommand#c27ac8c7 command:string description:string = BotCommand; + +botInfo#4d8a0299 flags:# has_preview_medias:flags.6?true user_id:flags.0?long description:flags.1?string description_photo:flags.4?Photo description_document:flags.5?Document commands:flags.2?Vector menu_button:flags.3?BotMenuButton privacy_policy_url:flags.7?string app_settings:flags.8?BotAppSettings verifier_settings:flags.9?BotVerifierSettings = BotInfo; + +keyboardButton#7d170cff flags:# style:flags.10?KeyboardButtonStyle text:string = KeyboardButton; +keyboardButtonUrl#d80c25ec flags:# style:flags.10?KeyboardButtonStyle text:string url:string = KeyboardButton; +keyboardButtonCallback#e62bc960 flags:# requires_password:flags.0?true style:flags.10?KeyboardButtonStyle text:string data:bytes = KeyboardButton; +keyboardButtonRequestPhone#417efd8f flags:# style:flags.10?KeyboardButtonStyle text:string = KeyboardButton; +keyboardButtonRequestGeoLocation#aa40f94d flags:# style:flags.10?KeyboardButtonStyle text:string = KeyboardButton; +keyboardButtonSwitchInline#991399fc flags:# same_peer:flags.0?true style:flags.10?KeyboardButtonStyle text:string query:string peer_types:flags.1?Vector = KeyboardButton; +keyboardButtonGame#89c590f9 flags:# style:flags.10?KeyboardButtonStyle text:string = KeyboardButton; +keyboardButtonBuy#3fa53905 flags:# style:flags.10?KeyboardButtonStyle text:string = KeyboardButton; +keyboardButtonUrlAuth#f51006f9 flags:# style:flags.10?KeyboardButtonStyle text:string fwd_text:flags.0?string url:string button_id:int = KeyboardButton; +inputKeyboardButtonUrlAuth#68013e72 flags:# request_write_access:flags.0?true style:flags.10?KeyboardButtonStyle text:string fwd_text:flags.1?string url:string bot:InputUser = KeyboardButton; +keyboardButtonRequestPoll#7a11d782 flags:# style:flags.10?KeyboardButtonStyle quiz:flags.0?Bool text:string = KeyboardButton; +inputKeyboardButtonUserProfile#7d5e07c7 flags:# style:flags.10?KeyboardButtonStyle text:string user_id:InputUser = KeyboardButton; +keyboardButtonUserProfile#c0fd5d09 flags:# style:flags.10?KeyboardButtonStyle text:string user_id:long = KeyboardButton; +keyboardButtonWebView#e846b1a0 flags:# style:flags.10?KeyboardButtonStyle text:string url:string = KeyboardButton; +keyboardButtonSimpleWebView#e15c4370 flags:# style:flags.10?KeyboardButtonStyle text:string url:string = KeyboardButton; +keyboardButtonRequestPeer#5b0f15f5 flags:# style:flags.10?KeyboardButtonStyle text:string button_id:int peer_type:RequestPeerType max_quantity:int = KeyboardButton; +inputKeyboardButtonRequestPeer#2b78156 flags:# name_requested:flags.0?true username_requested:flags.1?true photo_requested:flags.2?true style:flags.10?KeyboardButtonStyle text:string button_id:int peer_type:RequestPeerType max_quantity:int = KeyboardButton; +keyboardButtonCopy#bcc4af10 flags:# style:flags.10?KeyboardButtonStyle text:string copy_text:string = KeyboardButton; + +keyboardButtonRow#77608b83 buttons:Vector = KeyboardButtonRow; + +replyKeyboardHide#a03e5b85 flags:# selective:flags.2?true = ReplyMarkup; +replyKeyboardForceReply#86b40b08 flags:# single_use:flags.1?true selective:flags.2?true placeholder:flags.3?string = ReplyMarkup; +replyKeyboardMarkup#85dd99d1 flags:# resize:flags.0?true single_use:flags.1?true selective:flags.2?true persistent:flags.4?true rows:Vector placeholder:flags.3?string = ReplyMarkup; +replyInlineMarkup#48a30254 rows:Vector = ReplyMarkup; + +messageEntityUnknown#bb92ba95 offset:int length:int = MessageEntity; +messageEntityMention#fa04579d offset:int length:int = MessageEntity; +messageEntityHashtag#6f635b0d offset:int length:int = MessageEntity; +messageEntityBotCommand#6cef8ac7 offset:int length:int = MessageEntity; +messageEntityUrl#6ed02538 offset:int length:int = MessageEntity; +messageEntityEmail#64e475c2 offset:int length:int = MessageEntity; +messageEntityBold#bd610bc9 offset:int length:int = MessageEntity; +messageEntityItalic#826f8b60 offset:int length:int = MessageEntity; +messageEntityCode#28a20571 offset:int length:int = MessageEntity; +messageEntityPre#73924be0 offset:int length:int language:string = MessageEntity; +messageEntityTextUrl#76a6d327 offset:int length:int url:string = MessageEntity; +messageEntityMentionName#dc7b1140 offset:int length:int user_id:long = MessageEntity; +inputMessageEntityMentionName#208e68c9 offset:int length:int user_id:InputUser = MessageEntity; +messageEntityPhone#9b69e34b offset:int length:int = MessageEntity; +messageEntityCashtag#4c4e743f offset:int length:int = MessageEntity; +messageEntityUnderline#9c4e7e8b offset:int length:int = MessageEntity; +messageEntityStrike#bf0693d4 offset:int length:int = MessageEntity; +messageEntityBankCard#761e6af4 offset:int length:int = MessageEntity; +messageEntitySpoiler#32ca960f offset:int length:int = MessageEntity; +messageEntityCustomEmoji#c8cf05f8 offset:int length:int document_id:long = MessageEntity; +messageEntityBlockquote#f1ccaaac flags:# collapsed:flags.0?true offset:int length:int = MessageEntity; +messageEntityFormattedDate#904ac7c7 flags:# relative:flags.0?true short_time:flags.1?true long_time:flags.2?true short_date:flags.3?true long_date:flags.4?true day_of_week:flags.5?true offset:int length:int date:int = MessageEntity; +messageEntityDiffInsert#71777116 offset:int length:int = MessageEntity; +messageEntityDiffReplace#c6c1e5a7 offset:int length:int old_text:string = MessageEntity; +messageEntityDiffDelete#652c1c5 offset:int length:int = MessageEntity; + +inputChannelEmpty#ee8c1e86 = InputChannel; +inputChannel#f35aec28 channel_id:long access_hash:long = InputChannel; +inputChannelFromMessage#5b934f9d peer:InputPeer msg_id:int channel_id:long = InputChannel; + +contacts.resolvedPeer#7f077ad9 peer:Peer chats:Vector users:Vector = contacts.ResolvedPeer; + +messageRange#ae30253 min_id:int max_id:int = MessageRange; + +updates.channelDifferenceEmpty#3e11affb flags:# final:flags.0?true pts:int timeout:flags.1?int = updates.ChannelDifference; +updates.channelDifferenceTooLong#a4bcc6fe flags:# final:flags.0?true timeout:flags.1?int dialog:Dialog messages:Vector chats:Vector users:Vector = updates.ChannelDifference; +updates.channelDifference#2064674e flags:# final:flags.0?true pts:int timeout:flags.1?int new_messages:Vector other_updates:Vector chats:Vector users:Vector = updates.ChannelDifference; + +channelMessagesFilterEmpty#94d42ee7 = ChannelMessagesFilter; +channelMessagesFilter#cd77d957 flags:# exclude_new_messages:flags.1?true ranges:Vector = ChannelMessagesFilter; + +channelParticipant#1bd54456 flags:# user_id:long date:int subscription_until_date:flags.0?int rank:flags.2?string = ChannelParticipant; +channelParticipantSelf#a9478a1a flags:# via_request:flags.0?true user_id:long inviter_id:long date:int subscription_until_date:flags.1?int rank:flags.2?string = ChannelParticipant; +channelParticipantCreator#2fe601d3 flags:# user_id:long admin_rights:ChatAdminRights rank:flags.0?string = ChannelParticipant; +channelParticipantAdmin#34c3bb53 flags:# can_edit:flags.0?true self:flags.1?true user_id:long inviter_id:flags.1?long promoted_by:long date:int admin_rights:ChatAdminRights rank:flags.2?string = ChannelParticipant; +channelParticipantBanned#d5f0ad91 flags:# left:flags.0?true peer:Peer kicked_by:long date:int banned_rights:ChatBannedRights rank:flags.2?string = ChannelParticipant; +channelParticipantLeft#1b03f006 peer:Peer = ChannelParticipant; + +channelParticipantsRecent#de3f3c79 = ChannelParticipantsFilter; +channelParticipantsAdmins#b4608969 = ChannelParticipantsFilter; +channelParticipantsKicked#a3b54985 q:string = ChannelParticipantsFilter; +channelParticipantsBots#b0d1865b = ChannelParticipantsFilter; +channelParticipantsBanned#1427a5e1 q:string = ChannelParticipantsFilter; +channelParticipantsSearch#656ac4b q:string = ChannelParticipantsFilter; +channelParticipantsContacts#bb6ae88d q:string = ChannelParticipantsFilter; +channelParticipantsMentions#e04b5ceb flags:# q:flags.0?string top_msg_id:flags.1?int = ChannelParticipantsFilter; + +channels.channelParticipants#9ab0feaf count:int participants:Vector chats:Vector users:Vector = channels.ChannelParticipants; +channels.channelParticipantsNotModified#f0173fe9 = channels.ChannelParticipants; + +channels.channelParticipant#dfb80317 participant:ChannelParticipant chats:Vector users:Vector = channels.ChannelParticipant; + +help.termsOfService#780a0310 flags:# popup:flags.0?true id:DataJSON text:string entities:Vector min_age_confirm:flags.1?int = help.TermsOfService; + +messages.savedGifsNotModified#e8025ca2 = messages.SavedGifs; +messages.savedGifs#84a02a0d hash:long gifs:Vector = messages.SavedGifs; + +inputBotInlineMessageMediaAuto#3380c786 flags:# invert_media:flags.3?true message:string entities:flags.1?Vector reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; +inputBotInlineMessageText#3dcd7a87 flags:# no_webpage:flags.0?true invert_media:flags.3?true message:string entities:flags.1?Vector reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; +inputBotInlineMessageMediaGeo#96929a85 flags:# geo_point:InputGeoPoint heading:flags.0?int period:flags.1?int proximity_notification_radius:flags.3?int reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; +inputBotInlineMessageMediaVenue#417bbf11 flags:# geo_point:InputGeoPoint title:string address:string provider:string venue_id:string venue_type:string reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; +inputBotInlineMessageMediaContact#a6edbffd flags:# phone_number:string first_name:string last_name:string vcard:string reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; +inputBotInlineMessageGame#4b425864 flags:# reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; +inputBotInlineMessageMediaInvoice#d7e78225 flags:# title:string description:string photo:flags.0?InputWebDocument invoice:Invoice payload:bytes provider:string provider_data:DataJSON reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; +inputBotInlineMessageMediaWebPage#bddcc510 flags:# invert_media:flags.3?true force_large_media:flags.4?true force_small_media:flags.5?true optional:flags.6?true message:string entities:flags.1?Vector url:string reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; + +inputBotInlineResult#88bf9319 flags:# id:string type:string title:flags.1?string description:flags.2?string url:flags.3?string thumb:flags.4?InputWebDocument content:flags.5?InputWebDocument send_message:InputBotInlineMessage = InputBotInlineResult; +inputBotInlineResultPhoto#a8d864a7 id:string type:string photo:InputPhoto send_message:InputBotInlineMessage = InputBotInlineResult; +inputBotInlineResultDocument#fff8fdc4 flags:# id:string type:string title:flags.1?string description:flags.2?string document:InputDocument send_message:InputBotInlineMessage = InputBotInlineResult; +inputBotInlineResultGame#4fa417f2 id:string short_name:string send_message:InputBotInlineMessage = InputBotInlineResult; + +botInlineMessageMediaAuto#764cf810 flags:# invert_media:flags.3?true message:string entities:flags.1?Vector reply_markup:flags.2?ReplyMarkup = BotInlineMessage; +botInlineMessageText#8c7f65e2 flags:# no_webpage:flags.0?true invert_media:flags.3?true message:string entities:flags.1?Vector reply_markup:flags.2?ReplyMarkup = BotInlineMessage; +botInlineMessageMediaGeo#51846fd flags:# geo:GeoPoint heading:flags.0?int period:flags.1?int proximity_notification_radius:flags.3?int reply_markup:flags.2?ReplyMarkup = BotInlineMessage; +botInlineMessageMediaVenue#8a86659c flags:# geo:GeoPoint title:string address:string provider:string venue_id:string venue_type:string reply_markup:flags.2?ReplyMarkup = BotInlineMessage; +botInlineMessageMediaContact#18d1cdc2 flags:# phone_number:string first_name:string last_name:string vcard:string reply_markup:flags.2?ReplyMarkup = BotInlineMessage; +botInlineMessageMediaInvoice#354a9b09 flags:# shipping_address_requested:flags.1?true test:flags.3?true title:string description:string photo:flags.0?WebDocument currency:string total_amount:long reply_markup:flags.2?ReplyMarkup = BotInlineMessage; +botInlineMessageMediaWebPage#809ad9a6 flags:# invert_media:flags.3?true force_large_media:flags.4?true force_small_media:flags.5?true manual:flags.7?true safe:flags.8?true message:string entities:flags.1?Vector url:string reply_markup:flags.2?ReplyMarkup = BotInlineMessage; + +botInlineResult#11965f3a flags:# id:string type:string title:flags.1?string description:flags.2?string url:flags.3?string thumb:flags.4?WebDocument content:flags.5?WebDocument send_message:BotInlineMessage = BotInlineResult; +botInlineMediaResult#17db940b flags:# id:string type:string photo:flags.0?Photo document:flags.1?Document title:flags.2?string description:flags.3?string send_message:BotInlineMessage = BotInlineResult; + +messages.botResults#e021f2f6 flags:# gallery:flags.0?true query_id:long next_offset:flags.1?string switch_pm:flags.2?InlineBotSwitchPM switch_webview:flags.3?InlineBotWebView results:Vector cache_time:int users:Vector = messages.BotResults; + +exportedMessageLink#5dab1af4 link:string html:string = ExportedMessageLink; + +messageFwdHeader#4e4df4bb flags:# imported:flags.7?true saved_out:flags.11?true from_id:flags.0?Peer from_name:flags.5?string date:int channel_post:flags.2?int post_author:flags.3?string saved_from_peer:flags.4?Peer saved_from_msg_id:flags.4?int saved_from_id:flags.8?Peer saved_from_name:flags.9?string saved_date:flags.10?int psa_type:flags.6?string = MessageFwdHeader; + +auth.codeTypeSms#72a3158c = auth.CodeType; +auth.codeTypeCall#741cd3e3 = auth.CodeType; +auth.codeTypeFlashCall#226ccefb = auth.CodeType; +auth.codeTypeMissedCall#d61ad6ee = auth.CodeType; +auth.codeTypeFragmentSms#6ed998c = auth.CodeType; + +auth.sentCodeTypeApp#3dbb5986 length:int = auth.SentCodeType; +auth.sentCodeTypeSms#c000bba2 length:int = auth.SentCodeType; +auth.sentCodeTypeCall#5353e5a7 length:int = auth.SentCodeType; +auth.sentCodeTypeFlashCall#ab03c6d9 pattern:string = auth.SentCodeType; +auth.sentCodeTypeMissedCall#82006484 prefix:string length:int = auth.SentCodeType; +auth.sentCodeTypeEmailCode#f450f59b flags:# apple_signin_allowed:flags.0?true google_signin_allowed:flags.1?true email_pattern:string length:int reset_available_period:flags.3?int reset_pending_date:flags.4?int = auth.SentCodeType; +auth.sentCodeTypeSetUpEmailRequired#a5491dea flags:# apple_signin_allowed:flags.0?true google_signin_allowed:flags.1?true = auth.SentCodeType; +auth.sentCodeTypeFragmentSms#d9565c39 url:string length:int = auth.SentCodeType; +auth.sentCodeTypeFirebaseSms#9fd736 flags:# nonce:flags.0?bytes play_integrity_project_id:flags.2?long play_integrity_nonce:flags.2?bytes receipt:flags.1?string push_timeout:flags.1?int length:int = auth.SentCodeType; +auth.sentCodeTypeSmsWord#a416ac81 flags:# beginning:flags.0?string = auth.SentCodeType; +auth.sentCodeTypeSmsPhrase#b37794af flags:# beginning:flags.0?string = auth.SentCodeType; + +messages.botCallbackAnswer#36585ea4 flags:# alert:flags.1?true has_url:flags.3?true native_ui:flags.4?true message:flags.0?string url:flags.2?string cache_time:int = messages.BotCallbackAnswer; + +messages.messageEditData#26b5dde6 flags:# caption:flags.0?true = messages.MessageEditData; + +inputBotInlineMessageID#890c3d89 dc_id:int id:long access_hash:long = InputBotInlineMessageID; +inputBotInlineMessageID64#b6d915d7 dc_id:int owner_id:long id:int access_hash:long = InputBotInlineMessageID; + +inlineBotSwitchPM#3c20629f text:string start_param:string = InlineBotSwitchPM; + +messages.peerDialogs#3371c354 dialogs:Vector messages:Vector chats:Vector users:Vector state:updates.State = messages.PeerDialogs; + +topPeer#edcdc05b peer:Peer rating:double = TopPeer; + +topPeerCategoryBotsPM#ab661b5b = TopPeerCategory; +topPeerCategoryBotsInline#148677e2 = TopPeerCategory; +topPeerCategoryCorrespondents#637b7ed = TopPeerCategory; +topPeerCategoryGroups#bd17a14a = TopPeerCategory; +topPeerCategoryChannels#161d9628 = TopPeerCategory; +topPeerCategoryPhoneCalls#1e76a78c = TopPeerCategory; +topPeerCategoryForwardUsers#a8406ca9 = TopPeerCategory; +topPeerCategoryForwardChats#fbeec0f0 = TopPeerCategory; +topPeerCategoryBotsApp#fd9e7bec = TopPeerCategory; +topPeerCategoryBotsGuestChat#6c24f3dd = TopPeerCategory; + +topPeerCategoryPeers#fb834291 category:TopPeerCategory count:int peers:Vector = TopPeerCategoryPeers; + +contacts.topPeersNotModified#de266ef5 = contacts.TopPeers; +contacts.topPeers#70b772a8 categories:Vector chats:Vector users:Vector = contacts.TopPeers; +contacts.topPeersDisabled#b52c939d = contacts.TopPeers; + +draftMessageEmpty#1b0c841a flags:# date:flags.0?int = DraftMessage; +draftMessage#96eaa5eb flags:# no_webpage:flags.1?true invert_media:flags.6?true reply_to:flags.4?InputReplyTo message:string entities:flags.3?Vector media:flags.5?InputMedia date:int effect:flags.7?long suggested_post:flags.8?SuggestedPost = DraftMessage; + +messages.featuredStickersNotModified#c6dc0c66 count:int = messages.FeaturedStickers; +messages.featuredStickers#be382906 flags:# premium:flags.0?true hash:long count:int sets:Vector unread:Vector = messages.FeaturedStickers; + +messages.recentStickersNotModified#b17f890 = messages.RecentStickers; +messages.recentStickers#88d37c56 hash:long packs:Vector stickers:Vector dates:Vector = messages.RecentStickers; + +messages.archivedStickers#4fcba9c8 count:int sets:Vector = messages.ArchivedStickers; + +messages.stickerSetInstallResultSuccess#38641628 = messages.StickerSetInstallResult; +messages.stickerSetInstallResultArchive#35e410a8 sets:Vector = messages.StickerSetInstallResult; + +stickerSetCovered#6410a5d2 set:StickerSet cover:Document = StickerSetCovered; +stickerSetMultiCovered#3407e51b set:StickerSet covers:Vector = StickerSetCovered; +stickerSetFullCovered#40d13c0e set:StickerSet packs:Vector keywords:Vector documents:Vector = StickerSetCovered; +stickerSetNoCovered#77b15d1c set:StickerSet = StickerSetCovered; + +maskCoords#aed6dbb2 n:int x:double y:double zoom:double = MaskCoords; + +inputStickeredMediaPhoto#4a992157 id:InputPhoto = InputStickeredMedia; +inputStickeredMediaDocument#438865b id:InputDocument = InputStickeredMedia; + +game#bdf9653b flags:# id:long access_hash:long short_name:string title:string description:string photo:Photo document:flags.0?Document = Game; + +inputGameID#32c3e77 id:long access_hash:long = InputGame; +inputGameShortName#c331e80a bot_id:InputUser short_name:string = InputGame; + +highScore#73a379eb pos:int user_id:long score:int = HighScore; + +messages.highScores#9a3bfd99 scores:Vector users:Vector = messages.HighScores; + +textEmpty#dc3d824f = RichText; +textPlain#744694e0 text:string = RichText; +textBold#6724abc4 text:RichText = RichText; +textItalic#d912a59c text:RichText = RichText; +textUnderline#c12622c4 text:RichText = RichText; +textStrike#9bf8bb95 text:RichText = RichText; +textFixed#6c3f19b9 text:RichText = RichText; +textUrl#3c2884c1 text:RichText url:string webpage_id:long = RichText; +textEmail#de5a0dd6 text:RichText email:string = RichText; +textConcat#7e6260d7 texts:Vector = RichText; +textSubscript#ed6a8504 text:RichText = RichText; +textSuperscript#c7fb5e01 text:RichText = RichText; +textMarked#34b8621 text:RichText = RichText; +textPhone#1ccb966a text:RichText phone:string = RichText; +textImage#81ccf4f document_id:long w:int h:int = RichText; +textAnchor#35553762 text:RichText name:string = RichText; + +pageBlockUnsupported#13567e8a = PageBlock; +pageBlockTitle#70abc3fd text:RichText = PageBlock; +pageBlockSubtitle#8ffa9a1f text:RichText = PageBlock; +pageBlockAuthorDate#baafe5e0 author:RichText published_date:int = PageBlock; +pageBlockHeader#bfd064ec text:RichText = PageBlock; +pageBlockSubheader#f12bb6e1 text:RichText = PageBlock; +pageBlockParagraph#467a0766 text:RichText = PageBlock; +pageBlockPreformatted#c070d93e text:RichText language:string = PageBlock; +pageBlockFooter#48870999 text:RichText = PageBlock; +pageBlockDivider#db20b188 = PageBlock; +pageBlockAnchor#ce0d37b0 name:string = PageBlock; +pageBlockList#e4e88011 items:Vector = PageBlock; +pageBlockBlockquote#263d7c26 text:RichText caption:RichText = PageBlock; +pageBlockPullquote#4f4456d3 text:RichText caption:RichText = PageBlock; +pageBlockPhoto#1759c560 flags:# photo_id:long caption:PageCaption url:flags.0?string webpage_id:flags.0?long = PageBlock; +pageBlockVideo#7c8fe7b6 flags:# autoplay:flags.0?true loop:flags.1?true video_id:long caption:PageCaption = PageBlock; +pageBlockCover#39f23300 cover:PageBlock = PageBlock; +pageBlockEmbed#a8718dc5 flags:# full_width:flags.0?true allow_scrolling:flags.3?true url:flags.1?string html:flags.2?string poster_photo_id:flags.4?long w:flags.5?int h:flags.5?int caption:PageCaption = PageBlock; +pageBlockEmbedPost#f259a80b url:string webpage_id:long author_photo_id:long author:string date:int blocks:Vector caption:PageCaption = PageBlock; +pageBlockCollage#65a0fa4d items:Vector caption:PageCaption = PageBlock; +pageBlockSlideshow#31f9590 items:Vector caption:PageCaption = PageBlock; +pageBlockChannel#ef1751b5 channel:Chat = PageBlock; +pageBlockAudio#804361ea audio_id:long caption:PageCaption = PageBlock; +pageBlockKicker#1e148390 text:RichText = PageBlock; +pageBlockTable#bf4dea82 flags:# bordered:flags.0?true striped:flags.1?true title:RichText rows:Vector = PageBlock; +pageBlockOrderedList#9a8ae1e1 items:Vector = PageBlock; +pageBlockDetails#76768bed flags:# open:flags.0?true blocks:Vector title:RichText = PageBlock; +pageBlockRelatedArticles#16115a96 title:RichText articles:Vector = PageBlock; +pageBlockMap#a44f3ef6 geo:GeoPoint zoom:int w:int h:int caption:PageCaption = PageBlock; + +phoneCallDiscardReasonMissed#85e42301 = PhoneCallDiscardReason; +phoneCallDiscardReasonDisconnect#e095c1a0 = PhoneCallDiscardReason; +phoneCallDiscardReasonHangup#57adc690 = PhoneCallDiscardReason; +phoneCallDiscardReasonBusy#faf7e8c9 = PhoneCallDiscardReason; +phoneCallDiscardReasonMigrateConferenceCall#9fbbf1f7 slug:string = PhoneCallDiscardReason; + +dataJSON#7d748d04 data:string = DataJSON; + +labeledPrice#cb296bf8 label:string amount:long = LabeledPrice; + +invoice#49ee584 flags:# test:flags.0?true name_requested:flags.1?true phone_requested:flags.2?true email_requested:flags.3?true shipping_address_requested:flags.4?true flexible:flags.5?true phone_to_provider:flags.6?true email_to_provider:flags.7?true recurring:flags.9?true currency:string prices:Vector max_tip_amount:flags.8?long suggested_tip_amounts:flags.8?Vector terms_url:flags.10?string subscription_period:flags.11?int = Invoice; + +paymentCharge#ea02c27e id:string provider_charge_id:string = PaymentCharge; + +postAddress#1e8caaeb street_line1:string street_line2:string city:string state:string country_iso2:string post_code:string = PostAddress; + +paymentRequestedInfo#909c3f94 flags:# name:flags.0?string phone:flags.1?string email:flags.2?string shipping_address:flags.3?PostAddress = PaymentRequestedInfo; + +paymentSavedCredentialsCard#cdc27a1f id:string title:string = PaymentSavedCredentials; + +webDocument#1c570ed1 url:string access_hash:long size:int mime_type:string attributes:Vector = WebDocument; +webDocumentNoProxy#f9c8bcc6 url:string size:int mime_type:string attributes:Vector = WebDocument; + +inputWebDocument#9bed434d url:string size:int mime_type:string attributes:Vector = InputWebDocument; + +inputWebFileLocation#c239d686 url:string access_hash:long = InputWebFileLocation; +inputWebFileGeoPointLocation#9f2221c9 geo_point:InputGeoPoint access_hash:long w:int h:int zoom:int scale:int = InputWebFileLocation; +inputWebFileAudioAlbumThumbLocation#f46fe924 flags:# small:flags.2?true document:flags.0?InputDocument title:flags.1?string performer:flags.1?string = InputWebFileLocation; + +upload.webFile#21e753bc size:int mime_type:string file_type:storage.FileType mtime:int bytes:bytes = upload.WebFile; + +payments.paymentForm#a0058751 flags:# can_save_credentials:flags.2?true password_missing:flags.3?true form_id:long bot_id:long title:string description:string photo:flags.5?WebDocument invoice:Invoice provider_id:long url:string native_provider:flags.4?string native_params:flags.4?DataJSON additional_methods:flags.6?Vector saved_info:flags.0?PaymentRequestedInfo saved_credentials:flags.1?Vector users:Vector = payments.PaymentForm; +payments.paymentFormStars#7bf6b15c flags:# form_id:long bot_id:long title:string description:string photo:flags.5?WebDocument invoice:Invoice users:Vector = payments.PaymentForm; +payments.paymentFormStarGift#b425cfe1 form_id:long invoice:Invoice = payments.PaymentForm; + +payments.validatedRequestedInfo#d1451883 flags:# id:flags.0?string shipping_options:flags.1?Vector = payments.ValidatedRequestedInfo; + +payments.paymentResult#4e5f810d updates:Updates = payments.PaymentResult; +payments.paymentVerificationNeeded#d8411139 url:string = payments.PaymentResult; + +payments.paymentReceipt#70c4fe03 flags:# date:int bot_id:long provider_id:long title:string description:string photo:flags.2?WebDocument invoice:Invoice info:flags.0?PaymentRequestedInfo shipping:flags.1?ShippingOption tip_amount:flags.3?long currency:string total_amount:long credentials_title:string users:Vector = payments.PaymentReceipt; +payments.paymentReceiptStars#dabbf83a flags:# date:int bot_id:long title:string description:string photo:flags.2?WebDocument invoice:Invoice currency:string total_amount:long transaction_id:string users:Vector = payments.PaymentReceipt; + +payments.savedInfo#fb8fe43c flags:# has_saved_credentials:flags.1?true saved_info:flags.0?PaymentRequestedInfo = payments.SavedInfo; + +inputPaymentCredentialsSaved#c10eb2cf id:string tmp_password:bytes = InputPaymentCredentials; +inputPaymentCredentials#3417d728 flags:# save:flags.0?true data:DataJSON = InputPaymentCredentials; +inputPaymentCredentialsApplePay#aa1c39f payment_data:DataJSON = InputPaymentCredentials; +inputPaymentCredentialsGooglePay#8ac32801 payment_token:DataJSON = InputPaymentCredentials; + +account.tmpPassword#db64fd34 tmp_password:bytes valid_until:int = account.TmpPassword; + +shippingOption#b6213cdf id:string title:string prices:Vector = ShippingOption; + +inputStickerSetItem#32da9e9c flags:# document:InputDocument emoji:string mask_coords:flags.0?MaskCoords keywords:flags.1?string = InputStickerSetItem; + +inputPhoneCall#1e36fded id:long access_hash:long = InputPhoneCall; + +phoneCallEmpty#5366c915 id:long = PhoneCall; +phoneCallWaiting#c5226f17 flags:# video:flags.6?true id:long access_hash:long date:int admin_id:long participant_id:long protocol:PhoneCallProtocol receive_date:flags.0?int = PhoneCall; +phoneCallRequested#14b0ed0c flags:# video:flags.6?true id:long access_hash:long date:int admin_id:long participant_id:long g_a_hash:bytes protocol:PhoneCallProtocol = PhoneCall; +phoneCallAccepted#3660c311 flags:# video:flags.6?true id:long access_hash:long date:int admin_id:long participant_id:long g_b:bytes protocol:PhoneCallProtocol = PhoneCall; +phoneCall#30535af5 flags:# p2p_allowed:flags.5?true video:flags.6?true conference_supported:flags.8?true id:long access_hash:long date:int admin_id:long participant_id:long g_a_or_b:bytes key_fingerprint:long protocol:PhoneCallProtocol connections:Vector start_date:int custom_parameters:flags.7?DataJSON = PhoneCall; +phoneCallDiscarded#50ca4de1 flags:# need_rating:flags.2?true need_debug:flags.3?true video:flags.6?true id:long reason:flags.0?PhoneCallDiscardReason duration:flags.1?int = PhoneCall; + +phoneConnection#9cc123c7 flags:# tcp:flags.0?true id:long ip:string ipv6:string port:int peer_tag:bytes = PhoneConnection; +phoneConnectionWebrtc#635fe375 flags:# turn:flags.0?true stun:flags.1?true id:long ip:string ipv6:string port:int username:string password:string = PhoneConnection; + +phoneCallProtocol#fc878fc8 flags:# udp_p2p:flags.0?true udp_reflector:flags.1?true min_layer:int max_layer:int library_versions:Vector = PhoneCallProtocol; + +phone.phoneCall#ec82e140 phone_call:PhoneCall users:Vector = phone.PhoneCall; + +upload.cdnFileReuploadNeeded#eea8e46e request_token:bytes = upload.CdnFile; +upload.cdnFile#a99fca4f bytes:bytes = upload.CdnFile; + +cdnPublicKey#c982eaba dc_id:int public_key:string = CdnPublicKey; + +cdnConfig#5725e40a public_keys:Vector = CdnConfig; + +langPackString#cad181f6 key:string value:string = LangPackString; +langPackStringPluralized#6c47ac9f flags:# key:string zero_value:flags.0?string one_value:flags.1?string two_value:flags.2?string few_value:flags.3?string many_value:flags.4?string other_value:string = LangPackString; +langPackStringDeleted#2979eeb2 key:string = LangPackString; + +langPackDifference#f385c1f6 lang_code:string from_version:int version:int strings:Vector = LangPackDifference; + +langPackLanguage#eeca5ce3 flags:# official:flags.0?true rtl:flags.2?true beta:flags.3?true name:string native_name:string lang_code:string base_lang_code:flags.1?string plural_code:string strings_count:int translated_count:int translations_url:string = LangPackLanguage; + +channelAdminLogEventActionChangeTitle#e6dfb825 prev_value:string new_value:string = ChannelAdminLogEventAction; +channelAdminLogEventActionChangeAbout#55188a2e prev_value:string new_value:string = ChannelAdminLogEventAction; +channelAdminLogEventActionChangeUsername#6a4afc38 prev_value:string new_value:string = ChannelAdminLogEventAction; +channelAdminLogEventActionChangePhoto#434bd2af prev_photo:Photo new_photo:Photo = ChannelAdminLogEventAction; +channelAdminLogEventActionToggleInvites#1b7907ae new_value:Bool = ChannelAdminLogEventAction; +channelAdminLogEventActionToggleSignatures#26ae0971 new_value:Bool = ChannelAdminLogEventAction; +channelAdminLogEventActionUpdatePinned#e9e82c18 message:Message = ChannelAdminLogEventAction; +channelAdminLogEventActionEditMessage#709b2405 prev_message:Message new_message:Message = ChannelAdminLogEventAction; +channelAdminLogEventActionDeleteMessage#42e047bb message:Message = ChannelAdminLogEventAction; +channelAdminLogEventActionParticipantJoin#183040d3 = ChannelAdminLogEventAction; +channelAdminLogEventActionParticipantLeave#f89777f2 = ChannelAdminLogEventAction; +channelAdminLogEventActionParticipantInvite#e31c34d8 participant:ChannelParticipant = ChannelAdminLogEventAction; +channelAdminLogEventActionParticipantToggleBan#e6d83d7e prev_participant:ChannelParticipant new_participant:ChannelParticipant = ChannelAdminLogEventAction; +channelAdminLogEventActionParticipantToggleAdmin#d5676710 prev_participant:ChannelParticipant new_participant:ChannelParticipant = ChannelAdminLogEventAction; +channelAdminLogEventActionChangeStickerSet#b1c3caa7 prev_stickerset:InputStickerSet new_stickerset:InputStickerSet = ChannelAdminLogEventAction; +channelAdminLogEventActionTogglePreHistoryHidden#5f5c95f1 new_value:Bool = ChannelAdminLogEventAction; +channelAdminLogEventActionDefaultBannedRights#2df5fc0a prev_banned_rights:ChatBannedRights new_banned_rights:ChatBannedRights = ChannelAdminLogEventAction; +channelAdminLogEventActionStopPoll#8f079643 message:Message = ChannelAdminLogEventAction; +channelAdminLogEventActionChangeLinkedChat#50c7ac8 prev_value:long new_value:long = ChannelAdminLogEventAction; +channelAdminLogEventActionChangeLocation#e6b76ae prev_value:ChannelLocation new_value:ChannelLocation = ChannelAdminLogEventAction; +channelAdminLogEventActionToggleSlowMode#53909779 prev_value:int new_value:int = ChannelAdminLogEventAction; +channelAdminLogEventActionStartGroupCall#23209745 call:InputGroupCall = ChannelAdminLogEventAction; +channelAdminLogEventActionDiscardGroupCall#db9f9140 call:InputGroupCall = ChannelAdminLogEventAction; +channelAdminLogEventActionParticipantMute#f92424d2 participant:GroupCallParticipant = ChannelAdminLogEventAction; +channelAdminLogEventActionParticipantUnmute#e64429c0 participant:GroupCallParticipant = ChannelAdminLogEventAction; +channelAdminLogEventActionToggleGroupCallSetting#56d6a247 join_muted:Bool = ChannelAdminLogEventAction; +channelAdminLogEventActionParticipantJoinByInvite#fe9fc158 flags:# via_chatlist:flags.0?true invite:ExportedChatInvite = ChannelAdminLogEventAction; +channelAdminLogEventActionExportedInviteDelete#5a50fca4 invite:ExportedChatInvite = ChannelAdminLogEventAction; +channelAdminLogEventActionExportedInviteRevoke#410a134e invite:ExportedChatInvite = ChannelAdminLogEventAction; +channelAdminLogEventActionExportedInviteEdit#e90ebb59 prev_invite:ExportedChatInvite new_invite:ExportedChatInvite = ChannelAdminLogEventAction; +channelAdminLogEventActionParticipantVolume#3e7f6847 participant:GroupCallParticipant = ChannelAdminLogEventAction; +channelAdminLogEventActionChangeHistoryTTL#6e941a38 prev_value:int new_value:int = ChannelAdminLogEventAction; +channelAdminLogEventActionParticipantJoinByRequest#afb6144a invite:ExportedChatInvite approved_by:long = ChannelAdminLogEventAction; +channelAdminLogEventActionToggleNoForwards#cb2ac766 new_value:Bool = ChannelAdminLogEventAction; +channelAdminLogEventActionSendMessage#278f2868 message:Message = ChannelAdminLogEventAction; +channelAdminLogEventActionChangeAvailableReactions#be4e0ef8 prev_value:ChatReactions new_value:ChatReactions = ChannelAdminLogEventAction; +channelAdminLogEventActionChangeUsernames#f04fb3a9 prev_value:Vector new_value:Vector = ChannelAdminLogEventAction; +channelAdminLogEventActionToggleForum#2cc6383 new_value:Bool = ChannelAdminLogEventAction; +channelAdminLogEventActionCreateTopic#58707d28 topic:ForumTopic = ChannelAdminLogEventAction; +channelAdminLogEventActionEditTopic#f06fe208 prev_topic:ForumTopic new_topic:ForumTopic = ChannelAdminLogEventAction; +channelAdminLogEventActionDeleteTopic#ae168909 topic:ForumTopic = ChannelAdminLogEventAction; +channelAdminLogEventActionPinTopic#5d8d353b flags:# prev_topic:flags.0?ForumTopic new_topic:flags.1?ForumTopic = ChannelAdminLogEventAction; +channelAdminLogEventActionToggleAntiSpam#64f36dfc new_value:Bool = ChannelAdminLogEventAction; +channelAdminLogEventActionChangePeerColor#5796e780 prev_value:PeerColor new_value:PeerColor = ChannelAdminLogEventAction; +channelAdminLogEventActionChangeProfilePeerColor#5e477b25 prev_value:PeerColor new_value:PeerColor = ChannelAdminLogEventAction; +channelAdminLogEventActionChangeWallpaper#31bb5d52 prev_value:WallPaper new_value:WallPaper = ChannelAdminLogEventAction; +channelAdminLogEventActionChangeEmojiStatus#3ea9feb1 prev_value:EmojiStatus new_value:EmojiStatus = ChannelAdminLogEventAction; +channelAdminLogEventActionChangeEmojiStickerSet#46d840ab prev_stickerset:InputStickerSet new_stickerset:InputStickerSet = ChannelAdminLogEventAction; +channelAdminLogEventActionToggleSignatureProfiles#60a79c79 new_value:Bool = ChannelAdminLogEventAction; +channelAdminLogEventActionParticipantSubExtend#64642db3 prev_participant:ChannelParticipant new_participant:ChannelParticipant = ChannelAdminLogEventAction; +channelAdminLogEventActionToggleAutotranslation#c517f77e new_value:Bool = ChannelAdminLogEventAction; +channelAdminLogEventActionParticipantEditRank#5806b4ec user_id:long prev_rank:string new_rank:string = ChannelAdminLogEventAction; + +channelAdminLogEvent#1fad68cd id:long date:int user_id:long action:ChannelAdminLogEventAction = ChannelAdminLogEvent; + +channels.adminLogResults#ed8af74d events:Vector chats:Vector users:Vector = channels.AdminLogResults; + +channelAdminLogEventsFilter#ea107ae4 flags:# join:flags.0?true leave:flags.1?true invite:flags.2?true ban:flags.3?true unban:flags.4?true kick:flags.5?true unkick:flags.6?true promote:flags.7?true demote:flags.8?true info:flags.9?true settings:flags.10?true pinned:flags.11?true edit:flags.12?true delete:flags.13?true group_call:flags.14?true invites:flags.15?true send:flags.16?true forums:flags.17?true sub_extend:flags.18?true edit_rank:flags.19?true = ChannelAdminLogEventsFilter; + +popularContact#5ce14175 client_id:long importers:int = PopularContact; + +messages.favedStickersNotModified#9e8fa6d3 = messages.FavedStickers; +messages.favedStickers#2cb51097 hash:long packs:Vector stickers:Vector = messages.FavedStickers; + +recentMeUrlUnknown#46e1d13d url:string = RecentMeUrl; +recentMeUrlUser#b92c09e2 url:string user_id:long = RecentMeUrl; +recentMeUrlChat#b2da71d2 url:string chat_id:long = RecentMeUrl; +recentMeUrlChatInvite#eb49081d url:string chat_invite:ChatInvite = RecentMeUrl; +recentMeUrlStickerSet#bc0a57dc url:string set:StickerSetCovered = RecentMeUrl; + +help.recentMeUrls#e0310d7 urls:Vector chats:Vector users:Vector = help.RecentMeUrls; + +inputSingleMedia#1cc6e91f flags:# media:InputMedia random_id:long message:string entities:flags.0?Vector = InputSingleMedia; + +webAuthorization#a6f8f452 hash:long bot_id:long domain:string browser:string platform:string date_created:int date_active:int ip:string region:string = WebAuthorization; + +account.webAuthorizations#ed56c9fc authorizations:Vector users:Vector = account.WebAuthorizations; + +inputMessageID#a676a322 id:int = InputMessage; +inputMessageReplyTo#bad88395 id:int = InputMessage; +inputMessagePinned#86872538 = InputMessage; +inputMessageCallbackQuery#acfa1a7e id:int query_id:long = InputMessage; + +inputDialogPeer#fcaafeb7 peer:InputPeer = InputDialogPeer; +inputDialogPeerFolder#64600527 folder_id:int = InputDialogPeer; + +dialogPeer#e56dbf05 peer:Peer = DialogPeer; +dialogPeerFolder#514519e2 folder_id:int = DialogPeer; + +messages.foundStickerSetsNotModified#d54b65d = messages.FoundStickerSets; +messages.foundStickerSets#8af09dd2 hash:long sets:Vector = messages.FoundStickerSets; + +fileHash#f39b035c offset:long limit:int hash:bytes = FileHash; + +inputClientProxy#75588b3f address:string port:int = InputClientProxy; + +help.termsOfServiceUpdateEmpty#e3309f7f expires:int = help.TermsOfServiceUpdate; +help.termsOfServiceUpdate#28ecf961 expires:int terms_of_service:help.TermsOfService = help.TermsOfServiceUpdate; + +inputSecureFileUploaded#3334b0f0 id:long parts:int md5_checksum:string file_hash:bytes secret:bytes = InputSecureFile; +inputSecureFile#5367e5be id:long access_hash:long = InputSecureFile; + +secureFileEmpty#64199744 = SecureFile; +secureFile#7d09c27e id:long access_hash:long size:long dc_id:int date:int file_hash:bytes secret:bytes = SecureFile; + +secureData#8aeabec3 data:bytes data_hash:bytes secret:bytes = SecureData; + +securePlainPhone#7d6099dd phone:string = SecurePlainData; +securePlainEmail#21ec5a5f email:string = SecurePlainData; + +secureValueTypePersonalDetails#9d2a81e3 = SecureValueType; +secureValueTypePassport#3dac6a00 = SecureValueType; +secureValueTypeDriverLicense#6e425c4 = SecureValueType; +secureValueTypeIdentityCard#a0d0744b = SecureValueType; +secureValueTypeInternalPassport#99a48f23 = SecureValueType; +secureValueTypeAddress#cbe31e26 = SecureValueType; +secureValueTypeUtilityBill#fc36954e = SecureValueType; +secureValueTypeBankStatement#89137c0d = SecureValueType; +secureValueTypeRentalAgreement#8b883488 = SecureValueType; +secureValueTypePassportRegistration#99e3806a = SecureValueType; +secureValueTypeTemporaryRegistration#ea02ec33 = SecureValueType; +secureValueTypePhone#b320aadb = SecureValueType; +secureValueTypeEmail#8e3ca7ee = SecureValueType; + +secureValue#187fa0ca flags:# type:SecureValueType data:flags.0?SecureData front_side:flags.1?SecureFile reverse_side:flags.2?SecureFile selfie:flags.3?SecureFile translation:flags.6?Vector files:flags.4?Vector plain_data:flags.5?SecurePlainData hash:bytes = SecureValue; + +inputSecureValue#db21d0a7 flags:# type:SecureValueType data:flags.0?SecureData front_side:flags.1?InputSecureFile reverse_side:flags.2?InputSecureFile selfie:flags.3?InputSecureFile translation:flags.6?Vector files:flags.4?Vector plain_data:flags.5?SecurePlainData = InputSecureValue; + +secureValueHash#ed1ecdb0 type:SecureValueType hash:bytes = SecureValueHash; + +secureValueErrorData#e8a40bd9 type:SecureValueType data_hash:bytes field:string text:string = SecureValueError; +secureValueErrorFrontSide#be3dfa type:SecureValueType file_hash:bytes text:string = SecureValueError; +secureValueErrorReverseSide#868a2aa5 type:SecureValueType file_hash:bytes text:string = SecureValueError; +secureValueErrorSelfie#e537ced6 type:SecureValueType file_hash:bytes text:string = SecureValueError; +secureValueErrorFile#7a700873 type:SecureValueType file_hash:bytes text:string = SecureValueError; +secureValueErrorFiles#666220e9 type:SecureValueType file_hash:Vector text:string = SecureValueError; +secureValueError#869d758f type:SecureValueType hash:bytes text:string = SecureValueError; +secureValueErrorTranslationFile#a1144770 type:SecureValueType file_hash:bytes text:string = SecureValueError; +secureValueErrorTranslationFiles#34636dd8 type:SecureValueType file_hash:Vector text:string = SecureValueError; + +secureCredentialsEncrypted#33f0ea47 data:bytes hash:bytes secret:bytes = SecureCredentialsEncrypted; + +account.authorizationForm#ad2e1cd8 flags:# required_types:Vector values:Vector errors:Vector users:Vector privacy_policy_url:flags.0?string = account.AuthorizationForm; + +account.sentEmailCode#811f854f email_pattern:string length:int = account.SentEmailCode; + +help.deepLinkInfoEmpty#66afa166 = help.DeepLinkInfo; +help.deepLinkInfo#6a4ee832 flags:# update_app:flags.0?true message:string entities:flags.1?Vector = help.DeepLinkInfo; + +savedPhoneContact#1142bd56 phone:string first_name:string last_name:string date:int = SavedContact; + +account.takeout#4dba4501 id:long = account.Takeout; + +passwordKdfAlgoUnknown#d45ab096 = PasswordKdfAlgo; +passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow#3a912d4a salt1:bytes salt2:bytes g:int p:bytes = PasswordKdfAlgo; + +securePasswordKdfAlgoUnknown#4a8537 = SecurePasswordKdfAlgo; +securePasswordKdfAlgoPBKDF2HMACSHA512iter100000#bbf2dda0 salt:bytes = SecurePasswordKdfAlgo; +securePasswordKdfAlgoSHA512#86471d92 salt:bytes = SecurePasswordKdfAlgo; + +secureSecretSettings#1527bcac secure_algo:SecurePasswordKdfAlgo secure_secret:bytes secure_secret_id:long = SecureSecretSettings; + +inputCheckPasswordEmpty#9880f658 = InputCheckPasswordSRP; +inputCheckPasswordSRP#d27ff082 srp_id:long A:bytes M1:bytes = InputCheckPasswordSRP; + +secureRequiredType#829d99da flags:# native_names:flags.0?true selfie_required:flags.1?true translation_required:flags.2?true type:SecureValueType = SecureRequiredType; +secureRequiredTypeOneOf#27477b4 types:Vector = SecureRequiredType; + +help.passportConfigNotModified#bfb9f457 = help.PassportConfig; +help.passportConfig#a098d6af hash:int countries_langs:DataJSON = help.PassportConfig; + +inputAppEvent#1d1b1245 time:double type:string peer:long data:JSONValue = InputAppEvent; + +jsonObjectValue#c0de1bd9 key:string value:JSONValue = JSONObjectValue; + +jsonNull#3f6d7b68 = JSONValue; +jsonBool#c7345e6a value:Bool = JSONValue; +jsonNumber#2be0dfa4 value:double = JSONValue; +jsonString#b71e767a value:string = JSONValue; +jsonArray#f7444763 value:Vector = JSONValue; +jsonObject#99c1d49d value:Vector = JSONValue; + +pageTableCell#34566b6a flags:# header:flags.0?true align_center:flags.3?true align_right:flags.4?true valign_middle:flags.5?true valign_bottom:flags.6?true text:flags.7?RichText colspan:flags.1?int rowspan:flags.2?int = PageTableCell; + +pageTableRow#e0c0c5e5 cells:Vector = PageTableRow; + +pageCaption#6f747657 text:RichText credit:RichText = PageCaption; + +pageListItemText#b92fb6cd text:RichText = PageListItem; +pageListItemBlocks#25e073fc blocks:Vector = PageListItem; + +pageListOrderedItemText#5e068047 num:string text:RichText = PageListOrderedItem; +pageListOrderedItemBlocks#98dd8936 num:string blocks:Vector = PageListOrderedItem; + +pageRelatedArticle#b390dc08 flags:# url:string webpage_id:long title:flags.0?string description:flags.1?string photo_id:flags.2?long author:flags.3?string published_date:flags.4?int = PageRelatedArticle; + +page#98657f0d flags:# part:flags.0?true rtl:flags.1?true v2:flags.2?true url:string blocks:Vector photos:Vector documents:Vector views:flags.3?int = Page; + +help.supportName#8c05f1c9 name:string = help.SupportName; + +help.userInfoEmpty#f3ae2eed = help.UserInfo; +help.userInfo#1eb3758 message:string entities:Vector author:string date:int = help.UserInfo; + +pollAnswer#4b7d786a flags:# text:TextWithEntities option:bytes media:flags.0?MessageMedia added_by:flags.1?Peer date:flags.1?int = PollAnswer; +inputPollAnswer#199fed96 flags:# text:TextWithEntities media:flags.0?InputMedia = PollAnswer; + +poll#966e2dbf id:long flags:# closed:flags.0?true public_voters:flags.1?true multiple_choice:flags.2?true quiz:flags.3?true open_answers:flags.6?true revoting_disabled:flags.7?true shuffle_answers:flags.8?true hide_results_until_close:flags.9?true creator:flags.10?true subscribers_only:flags.11?true question:TextWithEntities answers:Vector close_period:flags.4?int close_date:flags.5?int countries_iso2:flags.12?Vector hash:long = Poll; + +pollAnswerVoters#3645230a flags:# chosen:flags.0?true correct:flags.1?true option:bytes voters:flags.2?int recent_voters:flags.2?Vector = PollAnswerVoters; + +pollResults#ba7bb15e flags:# min:flags.0?true has_unread_votes:flags.6?true can_view_stats:flags.7?true results:flags.1?Vector total_voters:flags.2?int recent_voters:flags.3?Vector solution:flags.4?string solution_entities:flags.4?Vector solution_media:flags.5?MessageMedia = PollResults; + +chatOnlines#f041e250 onlines:int = ChatOnlines; + +statsURL#47a971e0 url:string = StatsURL; + +chatAdminRights#5fb224d5 flags:# change_info:flags.0?true post_messages:flags.1?true edit_messages:flags.2?true delete_messages:flags.3?true ban_users:flags.4?true invite_users:flags.5?true pin_messages:flags.7?true add_admins:flags.9?true anonymous:flags.10?true manage_call:flags.11?true other:flags.12?true manage_topics:flags.13?true post_stories:flags.14?true edit_stories:flags.15?true delete_stories:flags.16?true manage_direct_messages:flags.17?true manage_ranks:flags.18?true = ChatAdminRights; + +chatBannedRights#9f120418 flags:# view_messages:flags.0?true send_messages:flags.1?true send_media:flags.2?true send_stickers:flags.3?true send_gifs:flags.4?true send_games:flags.5?true send_inline:flags.6?true embed_links:flags.7?true send_polls:flags.8?true change_info:flags.10?true invite_users:flags.15?true pin_messages:flags.17?true manage_topics:flags.18?true send_photos:flags.19?true send_videos:flags.20?true send_roundvideos:flags.21?true send_audios:flags.22?true send_voices:flags.23?true send_docs:flags.24?true send_plain:flags.25?true edit_rank:flags.26?true send_reactions:flags.27?true until_date:int = ChatBannedRights; + +inputWallPaper#e630b979 id:long access_hash:long = InputWallPaper; +inputWallPaperSlug#72091c80 slug:string = InputWallPaper; +inputWallPaperNoFile#967a462e id:long = InputWallPaper; + +account.wallPapersNotModified#1c199183 = account.WallPapers; +account.wallPapers#cdc3858c hash:long wallpapers:Vector = account.WallPapers; + +codeSettings#ad253d78 flags:# allow_flashcall:flags.0?true current_number:flags.1?true allow_app_hash:flags.4?true allow_missed_call:flags.5?true allow_firebase:flags.7?true unknown_number:flags.9?true logout_tokens:flags.6?Vector token:flags.8?string app_sandbox:flags.8?Bool = CodeSettings; + +wallPaperSettings#372efcd0 flags:# blur:flags.1?true motion:flags.2?true background_color:flags.0?int second_background_color:flags.4?int third_background_color:flags.5?int fourth_background_color:flags.6?int intensity:flags.3?int rotation:flags.4?int emoticon:flags.7?string = WallPaperSettings; + +autoDownloadSettings#baa57628 flags:# disabled:flags.0?true video_preload_large:flags.1?true audio_preload_next:flags.2?true phonecalls_less_data:flags.3?true stories_preload:flags.4?true photo_size_max:int video_size_max:long file_size_max:long video_upload_maxbitrate:int small_queue_active_operations_max:int large_queue_active_operations_max:int = AutoDownloadSettings; + +account.autoDownloadSettings#63cacf26 low:AutoDownloadSettings medium:AutoDownloadSettings high:AutoDownloadSettings = account.AutoDownloadSettings; + +emojiKeyword#d5b3b9f9 keyword:string emoticons:Vector = EmojiKeyword; +emojiKeywordDeleted#236df622 keyword:string emoticons:Vector = EmojiKeyword; + +emojiKeywordsDifference#5cc761bd lang_code:string from_version:int version:int keywords:Vector = EmojiKeywordsDifference; + +emojiURL#a575739d url:string = EmojiURL; + +emojiLanguage#b3fb5361 lang_code:string = EmojiLanguage; + +folder#ff544e65 flags:# autofill_new_broadcasts:flags.0?true autofill_public_groups:flags.1?true autofill_new_correspondents:flags.2?true id:int title:string photo:flags.3?ChatPhoto = Folder; + +inputFolderPeer#fbd2c296 peer:InputPeer folder_id:int = InputFolderPeer; + +folderPeer#e9baa668 peer:Peer folder_id:int = FolderPeer; + +messages.searchCounter#e844ebff flags:# inexact:flags.1?true filter:MessagesFilter count:int = messages.SearchCounter; + +urlAuthResultRequest#3cd623ec flags:# request_write_access:flags.0?true request_phone_number:flags.1?true match_codes_first:flags.5?true is_app:flags.6?true bot:User domain:string browser:flags.2?string platform:flags.2?string ip:flags.2?string region:flags.2?string match_codes:flags.3?Vector user_id_hint:flags.4?long verified_app_name:flags.7?string = UrlAuthResult; +urlAuthResultAccepted#623a8fa0 flags:# url:flags.0?string = UrlAuthResult; +urlAuthResultDefault#a9d6db1f = UrlAuthResult; + +channelLocationEmpty#bfb5ad8b = ChannelLocation; +channelLocation#209b82db geo_point:GeoPoint address:string = ChannelLocation; + +peerLocated#ca461b5d peer:Peer expires:int distance:int = PeerLocated; +peerSelfLocated#f8ec284b expires:int = PeerLocated; + +restrictionReason#d072acb4 platform:string reason:string text:string = RestrictionReason; + +inputTheme#3c5693e9 id:long access_hash:long = InputTheme; +inputThemeSlug#f5890df1 slug:string = InputTheme; + +theme#a00e67d6 flags:# creator:flags.0?true default:flags.1?true for_chat:flags.5?true id:long access_hash:long slug:string title:string document:flags.2?Document settings:flags.3?Vector emoticon:flags.6?string installs_count:flags.4?int = Theme; + +account.themesNotModified#f41eb622 = account.Themes; +account.themes#9a3d8c6d hash:long themes:Vector = account.Themes; + +auth.loginToken#629f1980 expires:int token:bytes = auth.LoginToken; +auth.loginTokenMigrateTo#68e9916 dc_id:int token:bytes = auth.LoginToken; +auth.loginTokenSuccess#390d5c5e authorization:auth.Authorization = auth.LoginToken; + +account.contentSettings#57e28221 flags:# sensitive_enabled:flags.0?true sensitive_can_change:flags.1?true = account.ContentSettings; + +messages.inactiveChats#a927fec5 dates:Vector chats:Vector users:Vector = messages.InactiveChats; + +baseThemeClassic#c3a12462 = BaseTheme; +baseThemeDay#fbd81688 = BaseTheme; +baseThemeNight#b7b31ea8 = BaseTheme; +baseThemeTinted#6d5f77ee = BaseTheme; +baseThemeArctic#5b11125a = BaseTheme; + +inputThemeSettings#8fde504f flags:# message_colors_animated:flags.2?true base_theme:BaseTheme accent_color:int outbox_accent_color:flags.3?int message_colors:flags.0?Vector wallpaper:flags.1?InputWallPaper wallpaper_settings:flags.1?WallPaperSettings = InputThemeSettings; + +themeSettings#fa58b6d4 flags:# message_colors_animated:flags.2?true base_theme:BaseTheme accent_color:int outbox_accent_color:flags.3?int message_colors:flags.0?Vector wallpaper:flags.1?WallPaper = ThemeSettings; + +webPageAttributeTheme#54b56617 flags:# documents:flags.0?Vector settings:flags.1?ThemeSettings = WebPageAttribute; +webPageAttributeStory#2e94c3e7 flags:# peer:Peer id:int story:flags.0?StoryItem = WebPageAttribute; +webPageAttributeStickerSet#50cc03d3 flags:# emojis:flags.0?true text_color:flags.1?true stickers:Vector = WebPageAttribute; +webPageAttributeUniqueStarGift#cf6f6db8 gift:StarGift = WebPageAttribute; +webPageAttributeStarGiftCollection#31cad303 icons:Vector = WebPageAttribute; +webPageAttributeStarGiftAuction#1c641c2 gift:StarGift end_date:int = WebPageAttribute; +webPageAttributeAiComposeTone#7781fe18 emoji_id:long = WebPageAttribute; + +messages.votesList#4899484e flags:# count:int votes:Vector chats:Vector users:Vector next_offset:flags.0?string = messages.VotesList; + +bankCardOpenUrl#f568028a url:string name:string = BankCardOpenUrl; + +payments.bankCardData#3e24e573 title:string open_urls:Vector = payments.BankCardData; + +dialogFilter#aa472651 flags:# contacts:flags.0?true non_contacts:flags.1?true groups:flags.2?true broadcasts:flags.3?true bots:flags.4?true exclude_muted:flags.11?true exclude_read:flags.12?true exclude_archived:flags.13?true title_noanimate:flags.28?true id:int title:TextWithEntities emoticon:flags.25?string color:flags.27?int pinned_peers:Vector include_peers:Vector exclude_peers:Vector = DialogFilter; +dialogFilterDefault#363293ae = DialogFilter; +dialogFilterChatlist#96537bd7 flags:# has_my_invites:flags.26?true title_noanimate:flags.28?true id:int title:TextWithEntities emoticon:flags.25?string color:flags.27?int pinned_peers:Vector include_peers:Vector = DialogFilter; + +dialogFilterSuggested#77744d4a filter:DialogFilter description:string = DialogFilterSuggested; + +statsDateRangeDays#b637edaf min_date:int max_date:int = StatsDateRangeDays; + +statsAbsValueAndPrev#cb43acde current:double previous:double = StatsAbsValueAndPrev; + +statsPercentValue#cbce2fe0 part:double total:double = StatsPercentValue; + +statsGraphAsync#4a27eb2d token:string = StatsGraph; +statsGraphError#bedc9822 error:string = StatsGraph; +statsGraph#8ea464b6 flags:# json:DataJSON zoom_token:flags.0?string = StatsGraph; + +stats.broadcastStats#396ca5fc period:StatsDateRangeDays followers:StatsAbsValueAndPrev views_per_post:StatsAbsValueAndPrev shares_per_post:StatsAbsValueAndPrev reactions_per_post:StatsAbsValueAndPrev views_per_story:StatsAbsValueAndPrev shares_per_story:StatsAbsValueAndPrev reactions_per_story:StatsAbsValueAndPrev enabled_notifications:StatsPercentValue growth_graph:StatsGraph followers_graph:StatsGraph mute_graph:StatsGraph top_hours_graph:StatsGraph interactions_graph:StatsGraph iv_interactions_graph:StatsGraph views_by_source_graph:StatsGraph new_followers_by_source_graph:StatsGraph languages_graph:StatsGraph reactions_by_emotion_graph:StatsGraph story_interactions_graph:StatsGraph story_reactions_by_emotion_graph:StatsGraph recent_posts_interactions:Vector = stats.BroadcastStats; + +help.promoDataEmpty#98f6ac75 expires:int = help.PromoData; +help.promoData#8a4d87a flags:# proxy:flags.0?true expires:int peer:flags.3?Peer psa_type:flags.1?string psa_message:flags.2?string pending_suggestions:Vector dismissed_suggestions:Vector custom_pending_suggestion:flags.4?PendingSuggestion chats:Vector users:Vector = help.PromoData; + +videoSize#de33b094 flags:# type:string w:int h:int size:int video_start_ts:flags.0?double = VideoSize; +videoSizeEmojiMarkup#f85c413c emoji_id:long background_colors:Vector = VideoSize; +videoSizeStickerMarkup#da082fe stickerset:InputStickerSet sticker_id:long background_colors:Vector = VideoSize; + +statsGroupTopPoster#9d04af9b user_id:long messages:int avg_chars:int = StatsGroupTopPoster; + +statsGroupTopAdmin#d7584c87 user_id:long deleted:int kicked:int banned:int = StatsGroupTopAdmin; + +statsGroupTopInviter#535f779d user_id:long invitations:int = StatsGroupTopInviter; + +stats.megagroupStats#ef7ff916 period:StatsDateRangeDays members:StatsAbsValueAndPrev messages:StatsAbsValueAndPrev viewers:StatsAbsValueAndPrev posters:StatsAbsValueAndPrev growth_graph:StatsGraph members_graph:StatsGraph new_members_by_source_graph:StatsGraph languages_graph:StatsGraph messages_graph:StatsGraph actions_graph:StatsGraph top_hours_graph:StatsGraph weekdays_graph:StatsGraph top_posters:Vector top_admins:Vector top_inviters:Vector users:Vector = stats.MegagroupStats; + +globalPrivacySettings#fe41b34f flags:# archive_and_mute_new_noncontact_peers:flags.0?true keep_archived_unmuted:flags.1?true keep_archived_folders:flags.2?true hide_read_marks:flags.3?true new_noncontact_peers_require_premium:flags.4?true display_gifts_button:flags.7?true noncontact_peers_paid_stars:flags.5?long disallowed_gifts:flags.6?DisallowedGiftsSettings = GlobalPrivacySettings; + +help.countryCode#4203c5ef flags:# country_code:string prefixes:flags.0?Vector patterns:flags.1?Vector = help.CountryCode; + +help.country#c3878e23 flags:# hidden:flags.0?true iso2:string default_name:string name:flags.1?string country_codes:Vector = help.Country; + +help.countriesListNotModified#93cc1f32 = help.CountriesList; +help.countriesList#87d0759e countries:Vector hash:int = help.CountriesList; + +messageViews#455b853d flags:# views:flags.0?int forwards:flags.1?int replies:flags.2?MessageReplies = MessageViews; + +messages.messageViews#b6c4f543 views:Vector chats:Vector users:Vector = messages.MessageViews; + +messages.discussionMessage#a6341782 flags:# messages:Vector max_id:flags.0?int read_inbox_max_id:flags.1?int read_outbox_max_id:flags.2?int unread_count:int chats:Vector users:Vector = messages.DiscussionMessage; + +messageReplyHeader#1b97dd66 flags:# reply_to_scheduled:flags.2?true forum_topic:flags.3?true quote:flags.9?true reply_to_msg_id:flags.4?int reply_to_peer_id:flags.0?Peer reply_from:flags.5?MessageFwdHeader reply_media:flags.8?MessageMedia reply_to_top_id:flags.1?int quote_text:flags.6?string quote_entities:flags.7?Vector quote_offset:flags.10?int todo_item_id:flags.11?int poll_option:flags.12?bytes = MessageReplyHeader; +messageReplyStoryHeader#e5af939 peer:Peer story_id:int = MessageReplyHeader; + +messageReplies#83d60fc2 flags:# comments:flags.0?true replies:int replies_pts:int recent_repliers:flags.1?Vector channel_id:flags.0?long max_id:flags.2?int read_max_id:flags.3?int = MessageReplies; + +peerBlocked#e8fd8014 peer_id:Peer date:int = PeerBlocked; + +stats.messageStats#7fe91c14 views_graph:StatsGraph reactions_by_emotion_graph:StatsGraph = stats.MessageStats; + +groupCallDiscarded#7780bcb4 id:long access_hash:long duration:int = GroupCall; +groupCall#efb2b617 flags:# join_muted:flags.1?true can_change_join_muted:flags.2?true join_date_asc:flags.6?true schedule_start_subscribed:flags.8?true can_start_video:flags.9?true record_video_active:flags.11?true rtmp_stream:flags.12?true listeners_hidden:flags.13?true conference:flags.14?true creator:flags.15?true messages_enabled:flags.17?true can_change_messages_enabled:flags.18?true min:flags.19?true id:long access_hash:long participants_count:int title:flags.3?string stream_dc_id:flags.4?int record_start_date:flags.5?int schedule_date:flags.7?int unmuted_video_count:flags.10?int unmuted_video_limit:int version:int invite_link:flags.16?string send_paid_messages_stars:flags.20?long default_send_as:flags.21?Peer = GroupCall; + +inputGroupCall#d8aa840f id:long access_hash:long = InputGroupCall; +inputGroupCallSlug#fe06823f slug:string = InputGroupCall; +inputGroupCallInviteMessage#8c10603f msg_id:int = InputGroupCall; + +groupCallParticipant#2a3dc7ac flags:# muted:flags.0?true left:flags.1?true can_self_unmute:flags.2?true just_joined:flags.4?true versioned:flags.5?true min:flags.8?true muted_by_you:flags.9?true volume_by_admin:flags.10?true self:flags.12?true video_joined:flags.15?true peer:Peer date:int active_date:flags.3?int source:int volume:flags.7?int about:flags.11?string raise_hand_rating:flags.13?long video:flags.6?GroupCallParticipantVideo presentation:flags.14?GroupCallParticipantVideo paid_stars_total:flags.16?long = GroupCallParticipant; + +phone.groupCall#9e727aad call:GroupCall participants:Vector participants_next_offset:string chats:Vector users:Vector = phone.GroupCall; + +phone.groupParticipants#f47751b6 count:int participants:Vector next_offset:string chats:Vector users:Vector version:int = phone.GroupParticipants; + +inlineQueryPeerTypeSameBotPM#3081ed9d = InlineQueryPeerType; +inlineQueryPeerTypePM#833c0fac = InlineQueryPeerType; +inlineQueryPeerTypeChat#d766c50a = InlineQueryPeerType; +inlineQueryPeerTypeMegagroup#5ec4be43 = InlineQueryPeerType; +inlineQueryPeerTypeBroadcast#6334ee9a = InlineQueryPeerType; +inlineQueryPeerTypeBotPM#e3b2d0c = InlineQueryPeerType; + +messages.historyImport#1662af0b id:long = messages.HistoryImport; + +messages.historyImportParsed#5e0fb7b9 flags:# pm:flags.0?true group:flags.1?true title:flags.2?string = messages.HistoryImportParsed; + +messages.affectedFoundMessages#ef8d3e6c pts:int pts_count:int offset:int messages:Vector = messages.AffectedFoundMessages; + +chatInviteImporter#8c5adfd9 flags:# requested:flags.0?true via_chatlist:flags.3?true user_id:long date:int about:flags.2?string approved_by:flags.1?long = ChatInviteImporter; + +messages.exportedChatInvites#bdc62dcc count:int invites:Vector users:Vector = messages.ExportedChatInvites; + +messages.exportedChatInvite#1871be50 invite:ExportedChatInvite users:Vector = messages.ExportedChatInvite; +messages.exportedChatInviteReplaced#222600ef invite:ExportedChatInvite new_invite:ExportedChatInvite users:Vector = messages.ExportedChatInvite; + +messages.chatInviteImporters#81b6b00a count:int importers:Vector users:Vector = messages.ChatInviteImporters; + +chatAdminWithInvites#f2ecef23 admin_id:long invites_count:int revoked_invites_count:int = ChatAdminWithInvites; + +messages.chatAdminsWithInvites#b69b72d7 admins:Vector users:Vector = messages.ChatAdminsWithInvites; + +messages.checkedHistoryImportPeer#a24de717 confirm_text:string = messages.CheckedHistoryImportPeer; + +phone.joinAsPeers#afe5623f peers:Vector chats:Vector users:Vector = phone.JoinAsPeers; + +phone.exportedGroupCallInvite#204bd158 link:string = phone.ExportedGroupCallInvite; + +groupCallParticipantVideoSourceGroup#dcb118b7 semantics:string sources:Vector = GroupCallParticipantVideoSourceGroup; + +groupCallParticipantVideo#67753ac8 flags:# paused:flags.0?true endpoint:string source_groups:Vector audio_source:flags.1?int = GroupCallParticipantVideo; + +stickers.suggestedShortName#85fea03f short_name:string = stickers.SuggestedShortName; + +botCommandScopeDefault#2f6cb2ab = BotCommandScope; +botCommandScopeUsers#3c4f04d8 = BotCommandScope; +botCommandScopeChats#6fe1a881 = BotCommandScope; +botCommandScopeChatAdmins#b9aa606a = BotCommandScope; +botCommandScopePeer#db9d897d peer:InputPeer = BotCommandScope; +botCommandScopePeerAdmins#3fd863d1 peer:InputPeer = BotCommandScope; +botCommandScopePeerUser#a1321f3 peer:InputPeer user_id:InputUser = BotCommandScope; + +account.resetPasswordFailedWait#e3779861 retry_date:int = account.ResetPasswordResult; +account.resetPasswordRequestedWait#e9effc7d until_date:int = account.ResetPasswordResult; +account.resetPasswordOk#e926d63e = account.ResetPasswordResult; + +chatTheme#c3dffc04 emoticon:string = ChatTheme; +chatThemeUniqueGift#3458f9c8 gift:StarGift theme_settings:Vector = ChatTheme; + +account.chatThemesNotModified#e011e1c4 = account.ChatThemes; +account.chatThemes#be098173 flags:# hash:long themes:Vector chats:Vector users:Vector next_offset:flags.0?string = account.ChatThemes; + +sponsoredMessage#7dbf8673 flags:# recommended:flags.5?true can_report:flags.12?true random_id:bytes url:string title:string message:string entities:flags.1?Vector photo:flags.6?Photo media:flags.14?MessageMedia color:flags.13?PeerColor button_text:string sponsor_info:flags.7?string additional_info:flags.8?string min_display_duration:flags.15?int max_display_duration:flags.15?int = SponsoredMessage; + +messages.sponsoredMessages#ffda656d flags:# posts_between:flags.0?int start_delay:flags.1?int between_delay:flags.2?int messages:Vector chats:Vector users:Vector = messages.SponsoredMessages; +messages.sponsoredMessagesEmpty#1839490f = messages.SponsoredMessages; + +searchResultsCalendarPeriod#c9b0539f date:int min_msg_id:int max_msg_id:int count:int = SearchResultsCalendarPeriod; + +messages.searchResultsCalendar#147ee23c flags:# inexact:flags.0?true count:int min_date:int min_msg_id:int offset_id_offset:flags.1?int periods:Vector messages:Vector chats:Vector users:Vector = messages.SearchResultsCalendar; + +searchResultPosition#7f648b67 msg_id:int date:int offset:int = SearchResultsPosition; + +messages.searchResultsPositions#53b22baf count:int positions:Vector = messages.SearchResultsPositions; + +channels.sendAsPeers#f496b0c6 peers:Vector chats:Vector users:Vector = channels.SendAsPeers; + +users.userFull#3b6d152e full_user:UserFull chats:Vector users:Vector = users.UserFull; + +messages.peerSettings#6880b94d settings:PeerSettings chats:Vector users:Vector = messages.PeerSettings; + +auth.loggedOut#c3a2835f flags:# future_auth_token:flags.0?bytes = auth.LoggedOut; + +reactionCount#a3d1cb80 flags:# chosen_order:flags.0?int reaction:Reaction count:int = ReactionCount; + +messageReactions#a339f0b flags:# min:flags.0?true can_see_list:flags.2?true reactions_as_tags:flags.3?true results:Vector recent_reactions:flags.1?Vector top_reactors:flags.4?Vector = MessageReactions; + +messages.messageReactionsList#31bd492d flags:# count:int reactions:Vector chats:Vector users:Vector next_offset:flags.0?string = messages.MessageReactionsList; + +availableReaction#c077ec01 flags:# inactive:flags.0?true premium:flags.2?true reaction:string title:string static_icon:Document appear_animation:Document select_animation:Document activate_animation:Document effect_animation:Document around_animation:flags.1?Document center_icon:flags.1?Document = AvailableReaction; + +messages.availableReactionsNotModified#9f071957 = messages.AvailableReactions; +messages.availableReactions#768e3aad hash:int reactions:Vector = messages.AvailableReactions; + +messagePeerReaction#8c79b63c flags:# big:flags.0?true unread:flags.1?true my:flags.2?true peer_id:Peer date:int reaction:Reaction = MessagePeerReaction; + +groupCallStreamChannel#80eb48af channel:int scale:int last_timestamp_ms:long = GroupCallStreamChannel; + +phone.groupCallStreamChannels#d0e482b2 channels:Vector = phone.GroupCallStreamChannels; + +phone.groupCallStreamRtmpUrl#2dbf3432 url:string key:string = phone.GroupCallStreamRtmpUrl; + +attachMenuBotIconColor#4576f3f0 name:string color:int = AttachMenuBotIconColor; + +attachMenuBotIcon#b2a7386b flags:# name:string icon:Document colors:flags.0?Vector = AttachMenuBotIcon; + +attachMenuBot#d90d8dfe flags:# inactive:flags.0?true has_settings:flags.1?true request_write_access:flags.2?true show_in_attach_menu:flags.3?true show_in_side_menu:flags.4?true side_menu_disclaimer_needed:flags.5?true bot_id:long short_name:string peer_types:flags.3?Vector icons:Vector = AttachMenuBot; + +attachMenuBotsNotModified#f1d88a5c = AttachMenuBots; +attachMenuBots#3c4301c0 hash:long bots:Vector users:Vector = AttachMenuBots; + +attachMenuBotsBot#93bf667f bot:AttachMenuBot users:Vector = AttachMenuBotsBot; + +webViewResultUrl#4d22ff98 flags:# fullsize:flags.1?true fullscreen:flags.2?true query_id:flags.0?long url:string = WebViewResult; + +webViewMessageSent#c94511c flags:# msg_id:flags.0?InputBotInlineMessageID = WebViewMessageSent; + +botMenuButtonDefault#7533a588 = BotMenuButton; +botMenuButtonCommands#4258c205 = BotMenuButton; +botMenuButton#c7b57ce6 text:string url:string = BotMenuButton; + +account.savedRingtonesNotModified#fbf6e8b1 = account.SavedRingtones; +account.savedRingtones#c1e92cc5 hash:long ringtones:Vector = account.SavedRingtones; + +notificationSoundDefault#97e8bebe = NotificationSound; +notificationSoundNone#6f0c34df = NotificationSound; +notificationSoundLocal#830b9ae4 title:string data:string = NotificationSound; +notificationSoundRingtone#ff6c8049 id:long = NotificationSound; + +account.savedRingtone#b7263f6d = account.SavedRingtone; +account.savedRingtoneConverted#1f307eb7 document:Document = account.SavedRingtone; + +attachMenuPeerTypeSameBotPM#7d6be90e = AttachMenuPeerType; +attachMenuPeerTypeBotPM#c32bfa1a = AttachMenuPeerType; +attachMenuPeerTypePM#f146d31f = AttachMenuPeerType; +attachMenuPeerTypeChat#509113f = AttachMenuPeerType; +attachMenuPeerTypeBroadcast#7bfbdefc = AttachMenuPeerType; + +inputInvoiceMessage#c5b56859 peer:InputPeer msg_id:int = InputInvoice; +inputInvoiceSlug#c326caef slug:string = InputInvoice; +inputInvoicePremiumGiftCode#98986c0d purpose:InputStorePaymentPurpose option:PremiumGiftCodeOption = InputInvoice; +inputInvoiceStars#65f00ce3 purpose:InputStorePaymentPurpose = InputInvoice; +inputInvoiceChatInviteSubscription#34e793f1 hash:string = InputInvoice; +inputInvoiceStarGift#e8625e92 flags:# hide_name:flags.0?true include_upgrade:flags.2?true peer:InputPeer gift_id:long message:flags.1?TextWithEntities = InputInvoice; +inputInvoiceStarGiftUpgrade#4d818d5d flags:# keep_original_details:flags.0?true stargift:InputSavedStarGift = InputInvoice; +inputInvoiceStarGiftTransfer#4a5f5bd9 stargift:InputSavedStarGift to_id:InputPeer = InputInvoice; +inputInvoicePremiumGiftStars#dabab2ef flags:# user_id:InputUser months:int message:flags.0?TextWithEntities = InputInvoice; +inputInvoiceBusinessBotTransferStars#f4997e42 bot:InputUser stars:long = InputInvoice; +inputInvoiceStarGiftResale#c39f5324 flags:# ton:flags.0?true slug:string to_id:InputPeer = InputInvoice; +inputInvoiceStarGiftPrepaidUpgrade#9a0b48b8 peer:InputPeer hash:string = InputInvoice; +inputInvoicePremiumAuthCode#3e77f614 purpose:InputStorePaymentPurpose = InputInvoice; +inputInvoiceStarGiftDropOriginalDetails#923d8d1 stargift:InputSavedStarGift = InputInvoice; +inputInvoiceStarGiftAuctionBid#1ecafa10 flags:# hide_name:flags.0?true update_bid:flags.2?true peer:flags.3?InputPeer gift_id:long bid_amount:long message:flags.1?TextWithEntities = InputInvoice; + +payments.exportedInvoice#aed0cbd9 url:string = payments.ExportedInvoice; + +messages.transcribedAudio#cfb9d957 flags:# pending:flags.0?true transcription_id:long text:string trial_remains_num:flags.1?int trial_remains_until_date:flags.1?int = messages.TranscribedAudio; + +help.premiumPromo#5334759c status_text:string status_entities:Vector video_sections:Vector videos:Vector period_options:Vector users:Vector = help.PremiumPromo; + +inputStorePaymentPremiumSubscription#a6751e66 flags:# restore:flags.0?true upgrade:flags.1?true = InputStorePaymentPurpose; +inputStorePaymentGiftPremium#616f7fe8 user_id:InputUser currency:string amount:long = InputStorePaymentPurpose; +inputStorePaymentPremiumGiftCode#fb790393 flags:# users:Vector boost_peer:flags.0?InputPeer currency:string amount:long message:flags.1?TextWithEntities = InputStorePaymentPurpose; +inputStorePaymentPremiumGiveaway#160544ca flags:# only_new_subscribers:flags.0?true winners_are_visible:flags.3?true boost_peer:InputPeer additional_peers:flags.1?Vector countries_iso2:flags.2?Vector prize_description:flags.4?string random_id:long until_date:int currency:string amount:long = InputStorePaymentPurpose; +inputStorePaymentStarsTopup#f9a2a6cb flags:# stars:long currency:string amount:long spend_purpose_peer:flags.0?InputPeer = InputStorePaymentPurpose; +inputStorePaymentStarsGift#1d741ef7 user_id:InputUser stars:long currency:string amount:long = InputStorePaymentPurpose; +inputStorePaymentStarsGiveaway#751f08fa flags:# only_new_subscribers:flags.0?true winners_are_visible:flags.3?true stars:long boost_peer:InputPeer additional_peers:flags.1?Vector countries_iso2:flags.2?Vector prize_description:flags.4?string random_id:long until_date:int currency:string amount:long users:int = InputStorePaymentPurpose; +inputStorePaymentAuthCode#3fc18057 flags:# restore:flags.0?true phone_number:string phone_code_hash:string premium_days:int currency:string amount:long = InputStorePaymentPurpose; + +paymentFormMethod#88f8f21b url:string title:string = PaymentFormMethod; + +emojiStatusEmpty#2de11aae = EmojiStatus; +emojiStatus#e7ff068a flags:# document_id:long until:flags.0?int = EmojiStatus; +emojiStatusCollectible#7184603b flags:# collectible_id:long document_id:long title:string slug:string pattern_document_id:long center_color:int edge_color:int pattern_color:int text_color:int until:flags.0?int = EmojiStatus; +inputEmojiStatusCollectible#7141dbf flags:# collectible_id:long until:flags.0?int = EmojiStatus; + +account.emojiStatusesNotModified#d08ce645 = account.EmojiStatuses; +account.emojiStatuses#90c467d1 hash:long statuses:Vector = account.EmojiStatuses; + +reactionEmpty#79f5d419 = Reaction; +reactionEmoji#1b2286b8 emoticon:string = Reaction; +reactionCustomEmoji#8935fc73 document_id:long = Reaction; +reactionPaid#523da4eb = Reaction; + +chatReactionsNone#eafc32bc = ChatReactions; +chatReactionsAll#52928bca flags:# allow_custom:flags.0?true = ChatReactions; +chatReactionsSome#661d4037 reactions:Vector = ChatReactions; + +messages.reactionsNotModified#b06fdbdf = messages.Reactions; +messages.reactions#eafdf716 hash:long reactions:Vector = messages.Reactions; + +emailVerifyPurposeLoginSetup#4345be73 phone_number:string phone_code_hash:string = EmailVerifyPurpose; +emailVerifyPurposeLoginChange#527d22eb = EmailVerifyPurpose; +emailVerifyPurposePassport#bbf51685 = EmailVerifyPurpose; + +emailVerificationCode#922e55a9 code:string = EmailVerification; +emailVerificationGoogle#db909ec2 token:string = EmailVerification; +emailVerificationApple#96d074fd token:string = EmailVerification; + +account.emailVerified#2b96cd1b email:string = account.EmailVerified; +account.emailVerifiedLogin#e1bb0d61 email:string sent_code:auth.SentCode = account.EmailVerified; + +premiumSubscriptionOption#5f2d1df2 flags:# current:flags.1?true can_purchase_upgrade:flags.2?true transaction:flags.3?string months:int currency:string amount:long bot_url:string store_product:flags.0?string = PremiumSubscriptionOption; + +sendAsPeer#b81c7034 flags:# premium_required:flags.0?true peer:Peer = SendAsPeer; + +messageExtendedMediaPreview#ad628cc8 flags:# w:flags.0?int h:flags.0?int thumb:flags.1?PhotoSize video_duration:flags.2?int = MessageExtendedMedia; +messageExtendedMedia#ee479c64 media:MessageMedia = MessageExtendedMedia; + +stickerKeyword#fcfeb29c document_id:long keyword:Vector = StickerKeyword; + +username#b4073647 flags:# editable:flags.0?true active:flags.1?true username:string = Username; + +forumTopicDeleted#23f109b id:int = ForumTopic; +forumTopic#fcdad815 flags:# my:flags.1?true closed:flags.2?true pinned:flags.3?true short:flags.5?true hidden:flags.6?true title_missing:flags.7?true id:int date:int peer:Peer title:string icon_color:int icon_emoji_id:flags.0?long top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_mentions_count:int unread_reactions_count:int unread_poll_votes_count:int from_id:Peer notify_settings:PeerNotifySettings draft:flags.4?DraftMessage = ForumTopic; + +messages.forumTopics#367617d3 flags:# order_by_create_date:flags.0?true count:int topics:Vector messages:Vector chats:Vector users:Vector pts:int = messages.ForumTopics; + +defaultHistoryTTL#43b46b20 period:int = DefaultHistoryTTL; + +exportedContactToken#41bf109b url:string expires:int = ExportedContactToken; + +requestPeerTypeUser#5f3b8a00 flags:# bot:flags.0?Bool premium:flags.1?Bool = RequestPeerType; +requestPeerTypeChat#c9f06e1b flags:# creator:flags.0?true bot_participant:flags.5?true has_username:flags.3?Bool forum:flags.4?Bool user_admin_rights:flags.1?ChatAdminRights bot_admin_rights:flags.2?ChatAdminRights = RequestPeerType; +requestPeerTypeBroadcast#339bef6c flags:# creator:flags.0?true has_username:flags.3?Bool user_admin_rights:flags.1?ChatAdminRights bot_admin_rights:flags.2?ChatAdminRights = RequestPeerType; +requestPeerTypeCreateBot#3e81e078 flags:# bot_managed:flags.0?true suggested_name:flags.1?string suggested_username:flags.2?string = RequestPeerType; + +emojiListNotModified#481eadfa = EmojiList; +emojiList#7a1e11d1 hash:long document_id:Vector = EmojiList; + +emojiGroup#7a9abda9 title:string icon_emoji_id:long emoticons:Vector = EmojiGroup; +emojiGroupGreeting#80d26cc7 title:string icon_emoji_id:long emoticons:Vector = EmojiGroup; +emojiGroupPremium#93bcf34 title:string icon_emoji_id:long = EmojiGroup; + +messages.emojiGroupsNotModified#6fb4ad87 = messages.EmojiGroups; +messages.emojiGroups#881fb94b hash:int groups:Vector = messages.EmojiGroups; + +textWithEntities#751f3146 text:string entities:Vector = TextWithEntities; + +messages.translateResult#33db32f8 result:Vector = messages.TranslatedText; + +autoSaveSettings#c84834ce flags:# photos:flags.0?true videos:flags.1?true video_max_size:flags.2?long = AutoSaveSettings; + +autoSaveException#81602d47 peer:Peer settings:AutoSaveSettings = AutoSaveException; + +account.autoSaveSettings#4c3e069d users_settings:AutoSaveSettings chats_settings:AutoSaveSettings broadcasts_settings:AutoSaveSettings exceptions:Vector chats:Vector users:Vector = account.AutoSaveSettings; + +help.appConfigNotModified#7cde641d = help.AppConfig; +help.appConfig#dd18782e hash:int config:JSONValue = help.AppConfig; + +inputBotAppID#a920bd7a id:long access_hash:long = InputBotApp; +inputBotAppShortName#908c0407 bot_id:InputUser short_name:string = InputBotApp; + +botAppNotModified#5da674b7 = BotApp; +botApp#95fcd1d6 flags:# id:long access_hash:long short_name:string title:string description:string photo:Photo document:flags.0?Document hash:long = BotApp; + +messages.botApp#eb50adf5 flags:# inactive:flags.0?true request_write_access:flags.1?true has_settings:flags.2?true app:BotApp = messages.BotApp; + +inlineBotWebView#b57295d5 text:string url:string = InlineBotWebView; + +readParticipantDate#4a4ff172 user_id:long date:int = ReadParticipantDate; + +inputChatlistDialogFilter#f3e0da33 filter_id:int = InputChatlist; + +exportedChatlistInvite#c5181ac flags:# title:string url:string peers:Vector = ExportedChatlistInvite; + +chatlists.exportedChatlistInvite#10e6e3a6 filter:DialogFilter invite:ExportedChatlistInvite = chatlists.ExportedChatlistInvite; + +chatlists.exportedInvites#10ab6dc7 invites:Vector chats:Vector users:Vector = chatlists.ExportedInvites; + +chatlists.chatlistInviteAlready#fa87f659 filter_id:int missing_peers:Vector already_peers:Vector chats:Vector users:Vector = chatlists.ChatlistInvite; +chatlists.chatlistInvite#f10ece2f flags:# title_noanimate:flags.1?true title:TextWithEntities emoticon:flags.0?string peers:Vector chats:Vector users:Vector = chatlists.ChatlistInvite; + +chatlists.chatlistUpdates#93bd878d missing_peers:Vector chats:Vector users:Vector = chatlists.ChatlistUpdates; + +bots.botInfo#e8a775b0 name:string about:string description:string = bots.BotInfo; + +messagePeerVote#b6cc2d5c peer:Peer option:bytes date:int = MessagePeerVote; +messagePeerVoteInputOption#74cda504 peer:Peer date:int = MessagePeerVote; +messagePeerVoteMultiple#4628f6e6 peer:Peer options:Vector date:int = MessagePeerVote; + +storyViews#8d595cd6 flags:# has_viewers:flags.1?true views_count:int forwards_count:flags.2?int reactions:flags.3?Vector reactions_count:flags.4?int recent_viewers:flags.0?Vector = StoryViews; + +storyItemDeleted#51e6ee4f id:int = StoryItem; +storyItemSkipped#ffadc913 flags:# close_friends:flags.8?true live:flags.9?true id:int date:int expire_date:int = StoryItem; +storyItem#16a4b93c flags:# pinned:flags.5?true public:flags.7?true close_friends:flags.8?true min:flags.9?true noforwards:flags.10?true edited:flags.11?true contacts:flags.12?true selected_contacts:flags.13?true out:flags.16?true id:int date:int from_id:flags.18?Peer fwd_from:flags.17?StoryFwdHeader expire_date:int caption:flags.0?string entities:flags.1?Vector media:MessageMedia media_areas:flags.14?Vector privacy:flags.2?Vector views:flags.3?StoryViews sent_reaction:flags.15?Reaction albums:flags.19?Vector music:flags.20?Document = StoryItem; + +stories.allStoriesNotModified#1158fe3e flags:# state:string stealth_mode:StoriesStealthMode = stories.AllStories; +stories.allStories#6efc5e81 flags:# has_more:flags.0?true count:int state:string peer_stories:Vector chats:Vector users:Vector stealth_mode:StoriesStealthMode = stories.AllStories; + +stories.stories#63c3dd0a flags:# count:int stories:Vector pinned_to_top:flags.0?Vector chats:Vector users:Vector = stories.Stories; + +storyView#b0bdeac5 flags:# blocked:flags.0?true blocked_my_stories_from:flags.1?true user_id:long date:int reaction:flags.2?Reaction = StoryView; +storyViewPublicForward#9083670b flags:# blocked:flags.0?true blocked_my_stories_from:flags.1?true message:Message = StoryView; +storyViewPublicRepost#bd74cf49 flags:# blocked:flags.0?true blocked_my_stories_from:flags.1?true peer_id:Peer story:StoryItem = StoryView; + +stories.storyViewsList#59d78fc5 flags:# count:int views_count:int forwards_count:int reactions_count:int views:Vector chats:Vector users:Vector next_offset:flags.0?string = stories.StoryViewsList; + +stories.storyViews#de9eed1d views:Vector users:Vector = stories.StoryViews; + +inputReplyToMessage#3bd4b7c2 flags:# reply_to_msg_id:int top_msg_id:flags.0?int reply_to_peer_id:flags.1?InputPeer quote_text:flags.2?string quote_entities:flags.3?Vector quote_offset:flags.4?int monoforum_peer_id:flags.5?InputPeer todo_item_id:flags.6?int poll_option:flags.7?bytes = InputReplyTo; +inputReplyToStory#5881323a peer:InputPeer story_id:int = InputReplyTo; +inputReplyToMonoForum#69d66c45 monoforum_peer_id:InputPeer = InputReplyTo; + +exportedStoryLink#3fc9053b link:string = ExportedStoryLink; + +storiesStealthMode#712e27fd flags:# active_until_date:flags.0?int cooldown_until_date:flags.1?int = StoriesStealthMode; + +mediaAreaCoordinates#cfc9e002 flags:# x:double y:double w:double h:double rotation:double radius:flags.0?double = MediaAreaCoordinates; + +mediaAreaVenue#be82db9c coordinates:MediaAreaCoordinates geo:GeoPoint title:string address:string provider:string venue_id:string venue_type:string = MediaArea; +inputMediaAreaVenue#b282217f coordinates:MediaAreaCoordinates query_id:long result_id:string = MediaArea; +mediaAreaGeoPoint#cad5452d flags:# coordinates:MediaAreaCoordinates geo:GeoPoint address:flags.0?GeoPointAddress = MediaArea; +mediaAreaSuggestedReaction#14455871 flags:# dark:flags.0?true flipped:flags.1?true coordinates:MediaAreaCoordinates reaction:Reaction = MediaArea; +mediaAreaChannelPost#770416af coordinates:MediaAreaCoordinates channel_id:long msg_id:int = MediaArea; +inputMediaAreaChannelPost#2271f2bf coordinates:MediaAreaCoordinates channel:InputChannel msg_id:int = MediaArea; +mediaAreaUrl#37381085 coordinates:MediaAreaCoordinates url:string = MediaArea; +mediaAreaWeather#49a6549c coordinates:MediaAreaCoordinates emoji:string temperature_c:double color:int = MediaArea; +mediaAreaStarGift#5787686d coordinates:MediaAreaCoordinates slug:string = MediaArea; + +peerStories#9a35e999 flags:# peer:Peer max_read_id:flags.0?int stories:Vector = PeerStories; + +stories.peerStories#cae68768 stories:PeerStories chats:Vector users:Vector = stories.PeerStories; + +messages.webPage#fd5e12bd webpage:WebPage chats:Vector users:Vector = messages.WebPage; + +premiumGiftCodeOption#257e962b flags:# users:int months:int store_product:flags.0?string store_quantity:flags.1?int currency:string amount:long = PremiumGiftCodeOption; + +payments.checkedGiftCode#eb983f8f flags:# via_giveaway:flags.2?true from_id:flags.4?Peer giveaway_msg_id:flags.3?int to_id:flags.0?long date:int days:int used_date:flags.1?int chats:Vector users:Vector = payments.CheckedGiftCode; + +payments.giveawayInfo#4367daa0 flags:# participating:flags.0?true preparing_results:flags.3?true start_date:int joined_too_early_date:flags.1?int admin_disallowed_chat_id:flags.2?long disallowed_country:flags.4?string = payments.GiveawayInfo; +payments.giveawayInfoResults#e175e66f flags:# winner:flags.0?true refunded:flags.1?true start_date:int gift_code_slug:flags.3?string stars_prize:flags.4?long finish_date:int winners_count:int activated_count:flags.2?int = payments.GiveawayInfo; + +prepaidGiveaway#b2539d54 id:long months:int quantity:int date:int = PrepaidGiveaway; +prepaidStarsGiveaway#9a9d77e0 id:long stars:long quantity:int boosts:int date:int = PrepaidGiveaway; + +boost#4b3e14d6 flags:# gift:flags.1?true giveaway:flags.2?true unclaimed:flags.3?true id:string user_id:flags.0?long giveaway_msg_id:flags.2?int date:int expires:int used_gift_slug:flags.4?string multiplier:flags.5?int stars:flags.6?long = Boost; + +premium.boostsList#86f8613c flags:# count:int boosts:Vector next_offset:flags.0?string users:Vector = premium.BoostsList; + +myBoost#c448415c flags:# slot:int peer:flags.0?Peer date:int expires:int cooldown_until_date:flags.1?int = MyBoost; + +premium.myBoosts#9ae228e2 my_boosts:Vector chats:Vector users:Vector = premium.MyBoosts; + +premium.boostsStatus#4959427a flags:# my_boost:flags.2?true level:int current_level_boosts:int boosts:int gift_boosts:flags.4?int next_level_boosts:flags.0?int premium_audience:flags.1?StatsPercentValue boost_url:string prepaid_giveaways:flags.3?Vector my_boost_slots:flags.2?Vector = premium.BoostsStatus; + +storyFwdHeader#b826e150 flags:# modified:flags.3?true from:flags.0?Peer from_name:flags.1?string story_id:flags.2?int = StoryFwdHeader; + +postInteractionCountersMessage#e7058e7f msg_id:int views:int forwards:int reactions:int = PostInteractionCounters; +postInteractionCountersStory#8a480e27 story_id:int views:int forwards:int reactions:int = PostInteractionCounters; + +stats.storyStats#50cd067c views_graph:StatsGraph reactions_by_emotion_graph:StatsGraph = stats.StoryStats; + +publicForwardMessage#1f2bf4a message:Message = PublicForward; +publicForwardStory#edf3add0 peer:Peer story:StoryItem = PublicForward; + +stats.publicForwards#93037e20 flags:# count:int forwards:Vector next_offset:flags.0?string chats:Vector users:Vector = stats.PublicForwards; + +peerColor#b54b5acf flags:# color:flags.0?int background_emoji_id:flags.1?long = PeerColor; +peerColorCollectible#b9c0639a flags:# collectible_id:long gift_emoji_id:long background_emoji_id:long accent_color:int colors:Vector dark_accent_color:flags.0?int dark_colors:flags.1?Vector = PeerColor; +inputPeerColorCollectible#b8ea86a9 collectible_id:long = PeerColor; + +help.peerColorSet#26219a58 colors:Vector = help.PeerColorSet; +help.peerColorProfileSet#767d61eb palette_colors:Vector bg_colors:Vector story_colors:Vector = help.PeerColorSet; + +help.peerColorOption#adec6ebe flags:# hidden:flags.0?true color_id:int colors:flags.1?help.PeerColorSet dark_colors:flags.2?help.PeerColorSet channel_min_level:flags.3?int group_min_level:flags.4?int = help.PeerColorOption; + +help.peerColorsNotModified#2ba1f5ce = help.PeerColors; +help.peerColors#f8ed08 hash:int colors:Vector = help.PeerColors; + +storyReaction#6090d6d5 peer_id:Peer date:int reaction:Reaction = StoryReaction; +storyReactionPublicForward#bbab2643 message:Message = StoryReaction; +storyReactionPublicRepost#cfcd0f13 peer_id:Peer story:StoryItem = StoryReaction; + +stories.storyReactionsList#aa5f789c flags:# count:int reactions:Vector chats:Vector users:Vector next_offset:flags.0?string = stories.StoryReactionsList; + +savedDialog#bd87cb6c flags:# pinned:flags.2?true peer:Peer top_message:int = SavedDialog; +monoForumDialog#64407ea7 flags:# unread_mark:flags.3?true nopaid_messages_exception:flags.4?true peer:Peer top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_reactions_count:int draft:flags.1?DraftMessage = SavedDialog; + +messages.savedDialogs#f83ae221 dialogs:Vector messages:Vector chats:Vector users:Vector = messages.SavedDialogs; +messages.savedDialogsSlice#44ba9dd9 count:int dialogs:Vector messages:Vector chats:Vector users:Vector = messages.SavedDialogs; +messages.savedDialogsNotModified#c01f6fe8 count:int = messages.SavedDialogs; + +savedReactionTag#cb6ff828 flags:# reaction:Reaction title:flags.0?string count:int = SavedReactionTag; + +messages.savedReactionTagsNotModified#889b59ef = messages.SavedReactionTags; +messages.savedReactionTags#3259950a tags:Vector hash:long = messages.SavedReactionTags; + +outboxReadDate#3bb842ac date:int = OutboxReadDate; + +smsjobs.eligibleToJoin#dc8b44cf terms_url:string monthly_sent_sms:int = smsjobs.EligibilityToJoin; + +smsjobs.status#2aee9191 flags:# allow_international:flags.0?true recent_sent:int recent_since:int recent_remains:int total_sent:int total_since:int last_gift_slug:flags.1?string terms_url:string = smsjobs.Status; + +smsJob#e6a1eeb8 job_id:string phone_number:string text:string = SmsJob; + +businessWeeklyOpen#120b1ab9 start_minute:int end_minute:int = BusinessWeeklyOpen; + +businessWorkHours#8c92b098 flags:# open_now:flags.0?true timezone_id:string weekly_open:Vector = BusinessWorkHours; + +businessLocation#ac5c1af7 flags:# geo_point:flags.0?GeoPoint address:string = BusinessLocation; + +inputBusinessRecipients#6f8b32aa flags:# existing_chats:flags.0?true new_chats:flags.1?true contacts:flags.2?true non_contacts:flags.3?true exclude_selected:flags.5?true users:flags.4?Vector = InputBusinessRecipients; + +businessRecipients#21108ff7 flags:# existing_chats:flags.0?true new_chats:flags.1?true contacts:flags.2?true non_contacts:flags.3?true exclude_selected:flags.5?true users:flags.4?Vector = BusinessRecipients; + +businessAwayMessageScheduleAlways#c9b9e2b9 = BusinessAwayMessageSchedule; +businessAwayMessageScheduleOutsideWorkHours#c3f2f501 = BusinessAwayMessageSchedule; +businessAwayMessageScheduleCustom#cc4d9ecc start_date:int end_date:int = BusinessAwayMessageSchedule; + +inputBusinessGreetingMessage#194cb3b shortcut_id:int recipients:InputBusinessRecipients no_activity_days:int = InputBusinessGreetingMessage; + +businessGreetingMessage#e519abab shortcut_id:int recipients:BusinessRecipients no_activity_days:int = BusinessGreetingMessage; + +inputBusinessAwayMessage#832175e0 flags:# offline_only:flags.0?true shortcut_id:int schedule:BusinessAwayMessageSchedule recipients:InputBusinessRecipients = InputBusinessAwayMessage; + +businessAwayMessage#ef156a5c flags:# offline_only:flags.0?true shortcut_id:int schedule:BusinessAwayMessageSchedule recipients:BusinessRecipients = BusinessAwayMessage; + +timezone#ff9289f5 id:string name:string utc_offset:int = Timezone; + +help.timezonesListNotModified#970708cc = help.TimezonesList; +help.timezonesList#7b74ed71 timezones:Vector hash:int = help.TimezonesList; + +quickReply#697102b shortcut_id:int shortcut:string top_message:int count:int = QuickReply; + +inputQuickReplyShortcut#24596d41 shortcut:string = InputQuickReplyShortcut; +inputQuickReplyShortcutId#1190cf1 shortcut_id:int = InputQuickReplyShortcut; + +messages.quickReplies#c68d6695 quick_replies:Vector messages:Vector chats:Vector users:Vector = messages.QuickReplies; +messages.quickRepliesNotModified#5f91eb5b = messages.QuickReplies; + +connectedBot#cd64636c flags:# bot_id:long recipients:BusinessBotRecipients rights:BusinessBotRights = ConnectedBot; + +account.connectedBots#17d7f87b connected_bots:Vector users:Vector = account.ConnectedBots; + +messages.dialogFilters#2ad93719 flags:# tags_enabled:flags.0?true filters:Vector = messages.DialogFilters; + +birthday#6c8e1e06 flags:# day:int month:int year:flags.0?int = Birthday; + +botBusinessConnection#8f34b2f5 flags:# disabled:flags.1?true connection_id:string user_id:long dc_id:int date:int rights:flags.2?BusinessBotRights = BotBusinessConnection; + +inputBusinessIntro#9c469cd flags:# title:string description:string sticker:flags.0?InputDocument = InputBusinessIntro; + +businessIntro#5a0a066d flags:# title:string description:string sticker:flags.0?Document = BusinessIntro; + +messages.myStickers#faff629d count:int sets:Vector = messages.MyStickers; + +inputCollectibleUsername#e39460a9 username:string = InputCollectible; +inputCollectiblePhone#a2e214a4 phone:string = InputCollectible; + +fragment.collectibleInfo#6ebdff91 purchase_date:int currency:string amount:long crypto_currency:string crypto_amount:long url:string = fragment.CollectibleInfo; + +inputBusinessBotRecipients#c4e5921e flags:# existing_chats:flags.0?true new_chats:flags.1?true contacts:flags.2?true non_contacts:flags.3?true exclude_selected:flags.5?true users:flags.4?Vector exclude_users:flags.6?Vector = InputBusinessBotRecipients; + +businessBotRecipients#b88cf373 flags:# existing_chats:flags.0?true new_chats:flags.1?true contacts:flags.2?true non_contacts:flags.3?true exclude_selected:flags.5?true users:flags.4?Vector exclude_users:flags.6?Vector = BusinessBotRecipients; + +contactBirthday#1d998733 contact_id:long birthday:Birthday = ContactBirthday; + +contacts.contactBirthdays#114ff30d contacts:Vector users:Vector = contacts.ContactBirthdays; + +missingInvitee#628c9224 flags:# premium_would_allow_invite:flags.0?true premium_required_for_pm:flags.1?true user_id:long = MissingInvitee; + +messages.invitedUsers#7f5defa6 updates:Updates missing_invitees:Vector = messages.InvitedUsers; + +inputBusinessChatLink#11679fa7 flags:# message:string entities:flags.0?Vector title:flags.1?string = InputBusinessChatLink; + +businessChatLink#b4ae666f flags:# link:string message:string entities:flags.0?Vector title:flags.1?string views:int = BusinessChatLink; + +account.businessChatLinks#ec43a2d1 links:Vector chats:Vector users:Vector = account.BusinessChatLinks; + +account.resolvedBusinessChatLinks#9a23af21 flags:# peer:Peer message:string entities:flags.0?Vector chats:Vector users:Vector = account.ResolvedBusinessChatLinks; + +requestedPeerUser#d62ff46a flags:# user_id:long first_name:flags.0?string last_name:flags.0?string username:flags.1?string photo:flags.2?Photo = RequestedPeer; +requestedPeerChat#7307544f flags:# chat_id:long title:flags.0?string photo:flags.2?Photo = RequestedPeer; +requestedPeerChannel#8ba403e4 flags:# channel_id:long title:flags.0?string username:flags.1?string photo:flags.2?Photo = RequestedPeer; + +sponsoredMessageReportOption#430d3150 text:string option:bytes = SponsoredMessageReportOption; + +channels.sponsoredMessageReportResultChooseOption#846f9e42 title:string options:Vector = channels.SponsoredMessageReportResult; +channels.sponsoredMessageReportResultAdsHidden#3e3bcf2f = channels.SponsoredMessageReportResult; +channels.sponsoredMessageReportResultReported#ad798849 = channels.SponsoredMessageReportResult; + +reactionNotificationsFromContacts#bac3a61a = ReactionNotificationsFrom; +reactionNotificationsFromAll#4b9e22a0 = ReactionNotificationsFrom; + +reactionsNotifySettings#71e4ea58 flags:# messages_notify_from:flags.0?ReactionNotificationsFrom stories_notify_from:flags.1?ReactionNotificationsFrom poll_votes_notify_from:flags.2?ReactionNotificationsFrom sound:NotificationSound show_previews:Bool = ReactionsNotifySettings; + +availableEffect#93c3e27e flags:# premium_required:flags.2?true id:long emoticon:string static_icon_id:flags.0?long effect_sticker_id:long effect_animation_id:flags.1?long = AvailableEffect; + +messages.availableEffectsNotModified#d1ed9a5b = messages.AvailableEffects; +messages.availableEffects#bddb616e hash:int effects:Vector documents:Vector = messages.AvailableEffects; + +factCheck#b89bfccf flags:# need_check:flags.0?true country:flags.1?string text:flags.1?TextWithEntities hash:long = FactCheck; + +starsTransactionPeerUnsupported#95f2bfe4 = StarsTransactionPeer; +starsTransactionPeerAppStore#b457b375 = StarsTransactionPeer; +starsTransactionPeerPlayMarket#7b560a0b = StarsTransactionPeer; +starsTransactionPeerPremiumBot#250dbaf8 = StarsTransactionPeer; +starsTransactionPeerFragment#e92fd902 = StarsTransactionPeer; +starsTransactionPeer#d80da15d peer:Peer = StarsTransactionPeer; +starsTransactionPeerAds#60682812 = StarsTransactionPeer; +starsTransactionPeerAPI#f9677aad = StarsTransactionPeer; + +starsTopupOption#bd915c0 flags:# extended:flags.1?true stars:long store_product:flags.0?string currency:string amount:long = StarsTopupOption; + +starsTransaction#13659eb0 flags:# refund:flags.3?true pending:flags.4?true failed:flags.6?true gift:flags.10?true reaction:flags.11?true stargift_upgrade:flags.18?true business_transfer:flags.21?true stargift_resale:flags.22?true posts_search:flags.24?true stargift_prepaid_upgrade:flags.25?true stargift_drop_original_details:flags.26?true phonegroup_message:flags.27?true stargift_auction_bid:flags.28?true offer:flags.29?true id:string amount:StarsAmount date:int peer:StarsTransactionPeer title:flags.0?string description:flags.1?string photo:flags.2?WebDocument transaction_date:flags.5?int transaction_url:flags.5?string bot_payload:flags.7?bytes msg_id:flags.8?int extended_media:flags.9?Vector subscription_period:flags.12?int giveaway_post_id:flags.13?int stargift:flags.14?StarGift floodskip_number:flags.15?int starref_commission_permille:flags.16?int starref_peer:flags.17?Peer starref_amount:flags.17?StarsAmount paid_messages:flags.19?int premium_gift_months:flags.20?int ads_proceeds_from_date:flags.23?int ads_proceeds_to_date:flags.23?int = StarsTransaction; + +payments.starsStatus#6c9ce8ed flags:# balance:StarsAmount subscriptions:flags.1?Vector subscriptions_next_offset:flags.2?string subscriptions_missing_balance:flags.4?long history:flags.3?Vector next_offset:flags.0?string chats:Vector users:Vector = payments.StarsStatus; + +foundStory#e87acbc0 peer:Peer story:StoryItem = FoundStory; + +stories.foundStories#e2de7737 flags:# count:int stories:Vector next_offset:flags.0?string chats:Vector users:Vector = stories.FoundStories; + +geoPointAddress#de4c5d93 flags:# country_iso2:string state:flags.0?string city:flags.1?string street:flags.2?string = GeoPointAddress; + +starsRevenueStatus#febe5491 flags:# withdrawal_enabled:flags.0?true current_balance:StarsAmount available_balance:StarsAmount overall_revenue:StarsAmount next_withdrawal_at:flags.1?int = StarsRevenueStatus; + +payments.starsRevenueStats#6c207376 flags:# top_hours_graph:flags.0?StatsGraph revenue_graph:StatsGraph status:StarsRevenueStatus usd_rate:double = payments.StarsRevenueStats; + +payments.starsRevenueWithdrawalUrl#1dab80b7 url:string = payments.StarsRevenueWithdrawalUrl; + +payments.starsRevenueAdsAccountUrl#394e7f21 url:string = payments.StarsRevenueAdsAccountUrl; + +inputStarsTransaction#206ae6d1 flags:# refund:flags.0?true id:string = InputStarsTransaction; + +starsGiftOption#5e0589f1 flags:# extended:flags.1?true stars:long store_product:flags.0?string currency:string amount:long = StarsGiftOption; + +bots.popularAppBots#1991b13b flags:# next_offset:flags.0?string users:Vector = bots.PopularAppBots; + +botPreviewMedia#23e91ba3 date:int media:MessageMedia = BotPreviewMedia; + +bots.previewInfo#ca71d64 media:Vector lang_codes:Vector = bots.PreviewInfo; + +starsSubscriptionPricing#5416d58 period:int amount:long = StarsSubscriptionPricing; + +starsSubscription#2e6eab1a flags:# canceled:flags.0?true can_refulfill:flags.1?true missing_balance:flags.2?true bot_canceled:flags.7?true id:string peer:Peer until_date:int pricing:StarsSubscriptionPricing chat_invite_hash:flags.3?string title:flags.4?string photo:flags.5?WebDocument invoice_slug:flags.6?string = StarsSubscription; + +messageReactor#4ba3a95a flags:# top:flags.0?true my:flags.1?true anonymous:flags.2?true peer_id:flags.3?Peer count:int = MessageReactor; + +starsGiveawayOption#94ce852a flags:# extended:flags.0?true default:flags.1?true stars:long yearly_boosts:int store_product:flags.2?string currency:string amount:long winners:Vector = StarsGiveawayOption; + +starsGiveawayWinnersOption#54236209 flags:# default:flags.0?true users:int per_user_stars:long = StarsGiveawayWinnersOption; + +starGift#313a9547 flags:# limited:flags.0?true sold_out:flags.1?true birthday:flags.2?true require_premium:flags.7?true limited_per_user:flags.8?true peer_color_available:flags.10?true auction:flags.11?true id:long sticker:Document stars:long availability_remains:flags.0?int availability_total:flags.0?int availability_resale:flags.4?long convert_stars:long first_sale_date:flags.1?int last_sale_date:flags.1?int upgrade_stars:flags.3?long resell_min_stars:flags.4?long title:flags.5?string released_by:flags.6?Peer per_user_total:flags.8?int per_user_remains:flags.8?int locked_until_date:flags.9?int auction_slug:flags.11?string gifts_per_round:flags.11?int auction_start_date:flags.11?int upgrade_variants:flags.12?int background:flags.13?StarGiftBackground = StarGift; +starGiftUnique#85f0a9cd flags:# require_premium:flags.6?true resale_ton_only:flags.7?true theme_available:flags.9?true burned:flags.14?true crafted:flags.15?true id:long gift_id:long title:string slug:string num:int owner_id:flags.0?Peer owner_name:flags.1?string owner_address:flags.2?string attributes:Vector availability_issued:int availability_total:int gift_address:flags.3?string resell_amount:flags.4?Vector released_by:flags.5?Peer value_amount:flags.8?long value_currency:flags.8?string value_usd_amount:flags.8?long theme_peer:flags.10?Peer peer_color:flags.11?PeerColor host_id:flags.12?Peer offer_min_stars:flags.13?int craft_chance_permille:flags.16?int = StarGift; + +payments.starGiftsNotModified#a388a368 = payments.StarGifts; +payments.starGifts#2ed82995 hash:int gifts:Vector chats:Vector users:Vector = payments.StarGifts; + +messageReportOption#7903e3d9 text:string option:bytes = MessageReportOption; + +reportResultChooseOption#f0e4e0b6 title:string options:Vector = ReportResult; +reportResultAddComment#6f09ac31 flags:# optional:flags.0?true option:bytes = ReportResult; +reportResultReported#8db33c4b = ReportResult; + +messages.botPreparedInlineMessage#8ecf0511 id:string expire_date:int = messages.BotPreparedInlineMessage; + +messages.preparedInlineMessage#ff57708d query_id:long result:BotInlineResult peer_types:Vector cache_time:int users:Vector = messages.PreparedInlineMessage; + +botAppSettings#c99b1950 flags:# placeholder_path:flags.0?bytes background_color:flags.1?int background_dark_color:flags.2?int header_color:flags.3?int header_dark_color:flags.4?int = BotAppSettings; + +starRefProgram#dd0c66f2 flags:# bot_id:long commission_permille:int duration_months:flags.0?int end_date:flags.1?int daily_revenue_per_user:flags.2?StarsAmount = StarRefProgram; + +connectedBotStarRef#19a13f71 flags:# revoked:flags.1?true url:string date:int bot_id:long commission_permille:int duration_months:flags.0?int participants:long revenue:long = ConnectedBotStarRef; + +payments.connectedStarRefBots#98d5ea1d count:int connected_bots:Vector users:Vector = payments.ConnectedStarRefBots; + +payments.suggestedStarRefBots#b4d5d859 flags:# count:int suggested_bots:Vector users:Vector next_offset:flags.0?string = payments.SuggestedStarRefBots; + +starsAmount#bbb6b4a3 amount:long nanos:int = StarsAmount; +starsTonAmount#74aee3e0 amount:long = StarsAmount; + +messages.foundStickersNotModified#6010c534 flags:# next_offset:flags.0?int = messages.FoundStickers; +messages.foundStickers#82c9e290 flags:# next_offset:flags.0?int hash:long stickers:Vector = messages.FoundStickers; + +botVerifierSettings#b0cd6617 flags:# can_modify_custom_description:flags.1?true icon:long company:string custom_description:flags.0?string = BotVerifierSettings; + +botVerification#f93cd45c bot_id:long icon:long description:string = BotVerification; + +starGiftAttributeModel#565251e2 flags:# crafted:flags.0?true name:string document:Document rarity:StarGiftAttributeRarity = StarGiftAttribute; +starGiftAttributePattern#4e7085ea name:string document:Document rarity:StarGiftAttributeRarity = StarGiftAttribute; +starGiftAttributeBackdrop#9f2504e4 name:string backdrop_id:int center_color:int edge_color:int pattern_color:int text_color:int rarity:StarGiftAttributeRarity = StarGiftAttribute; +starGiftAttributeOriginalDetails#e0bff26c flags:# sender_id:flags.0?Peer recipient_id:Peer date:int message:flags.1?TextWithEntities = StarGiftAttribute; + +payments.starGiftUpgradePreview#3de1dfed sample_attributes:Vector prices:Vector next_prices:Vector = payments.StarGiftUpgradePreview; + +users.users#62d706b8 users:Vector = users.Users; +users.usersSlice#315a4974 count:int users:Vector = users.Users; + +payments.uniqueStarGift#416c56e8 gift:StarGift chats:Vector users:Vector = payments.UniqueStarGift; + +messages.webPagePreview#8c9a88ac media:MessageMedia chats:Vector users:Vector = messages.WebPagePreview; + +savedStarGift#41df43fc flags:# name_hidden:flags.0?true unsaved:flags.5?true refunded:flags.9?true can_upgrade:flags.10?true pinned_to_top:flags.12?true upgrade_separate:flags.17?true from_id:flags.1?Peer date:int gift:StarGift message:flags.2?TextWithEntities msg_id:flags.3?int saved_id:flags.11?long convert_stars:flags.4?long upgrade_stars:flags.6?long can_export_at:flags.7?int transfer_stars:flags.8?long can_transfer_at:flags.13?int can_resell_at:flags.14?int collection_id:flags.15?Vector prepaid_upgrade_hash:flags.16?string drop_original_details_stars:flags.18?long gift_num:flags.19?int can_craft_at:flags.20?int = SavedStarGift; + +payments.savedStarGifts#95f389b1 flags:# count:int chat_notifications_enabled:flags.1?Bool gifts:Vector next_offset:flags.0?string chats:Vector users:Vector = payments.SavedStarGifts; + +inputSavedStarGiftUser#69279795 msg_id:int = InputSavedStarGift; +inputSavedStarGiftChat#f101aa7f peer:InputPeer saved_id:long = InputSavedStarGift; +inputSavedStarGiftSlug#2085c238 slug:string = InputSavedStarGift; + +payments.starGiftWithdrawalUrl#84aa3a9c url:string = payments.StarGiftWithdrawalUrl; + +paidReactionPrivacyDefault#206ad49e = PaidReactionPrivacy; +paidReactionPrivacyAnonymous#1f0c1ad9 = PaidReactionPrivacy; +paidReactionPrivacyPeer#dc6cfcf0 peer:InputPeer = PaidReactionPrivacy; + +account.paidMessagesRevenue#1e109708 stars_amount:long = account.PaidMessagesRevenue; + +requirementToContactEmpty#50a9839 = RequirementToContact; +requirementToContactPremium#e581e4e9 = RequirementToContact; +requirementToContactPaidMessages#b4f67e93 stars_amount:long = RequirementToContact; + +businessBotRights#a0624cf7 flags:# reply:flags.0?true read_messages:flags.1?true delete_sent_messages:flags.2?true delete_received_messages:flags.3?true edit_name:flags.4?true edit_bio:flags.5?true edit_profile_photo:flags.6?true edit_username:flags.7?true view_gifts:flags.8?true sell_gifts:flags.9?true change_gift_settings:flags.10?true transfer_and_upgrade_gifts:flags.11?true transfer_stars:flags.12?true manage_stories:flags.13?true = BusinessBotRights; + +disallowedGiftsSettings#71f276c4 flags:# disallow_unlimited_stargifts:flags.0?true disallow_limited_stargifts:flags.1?true disallow_unique_stargifts:flags.2?true disallow_premium_gifts:flags.3?true disallow_stargifts_from_channels:flags.4?true = DisallowedGiftsSettings; + +sponsoredPeer#c69708d3 flags:# random_id:bytes peer:Peer sponsor_info:flags.0?string additional_info:flags.1?string = SponsoredPeer; + +contacts.sponsoredPeersEmpty#ea32b4b1 = contacts.SponsoredPeers; +contacts.sponsoredPeers#eb032884 peers:Vector chats:Vector users:Vector = contacts.SponsoredPeers; + +starGiftAttributeIdModel#48aaae3c document_id:long = StarGiftAttributeId; +starGiftAttributeIdPattern#4a162433 document_id:long = StarGiftAttributeId; +starGiftAttributeIdBackdrop#1f01c757 backdrop_id:int = StarGiftAttributeId; + +starGiftAttributeCounter#2eb1b658 attribute:StarGiftAttributeId count:int = StarGiftAttributeCounter; + +payments.resaleStarGifts#947a12df flags:# count:int gifts:Vector next_offset:flags.0?string attributes:flags.1?Vector attributes_hash:flags.1?long chats:Vector counters:flags.2?Vector users:Vector = payments.ResaleStarGifts; + +stories.canSendStoryCount#c387c04e count_remains:int = stories.CanSendStoryCount; + +pendingSuggestion#e7e82e12 suggestion:string title:TextWithEntities description:TextWithEntities url:string = PendingSuggestion; + +todoItem#cba9a52f id:int title:TextWithEntities = TodoItem; + +todoList#49b92a26 flags:# others_can_append:flags.0?true others_can_complete:flags.1?true title:TextWithEntities list:Vector = TodoList; + +todoCompletion#221bb5e4 id:int completed_by:Peer date:int = TodoCompletion; + +suggestedPost#e8e37e5 flags:# accepted:flags.1?true rejected:flags.2?true price:flags.3?StarsAmount schedule_date:flags.0?int = SuggestedPost; + +starsRating#1b0e4f07 flags:# level:int current_level_stars:long stars:long next_level_stars:flags.0?long = StarsRating; + +starGiftCollection#9d6b13b0 flags:# collection_id:int title:string icon:flags.0?Document gifts_count:int hash:long = StarGiftCollection; + +payments.starGiftCollectionsNotModified#a0ba4f17 = payments.StarGiftCollections; +payments.starGiftCollections#8a2932f3 collections:Vector = payments.StarGiftCollections; + +storyAlbum#9325705a flags:# album_id:int title:string icon_photo:flags.0?Photo icon_video:flags.1?Document = StoryAlbum; + +stories.albumsNotModified#564edaeb = stories.Albums; +stories.albums#c3987a3a hash:long albums:Vector = stories.Albums; + +searchPostsFlood#3e0b5b6a flags:# query_is_free:flags.0?true total_daily:int remains:int wait_till:flags.1?int stars_amount:long = SearchPostsFlood; + +payments.uniqueStarGiftValueInfo#512fe446 flags:# last_sale_on_fragment:flags.1?true value_is_average:flags.6?true currency:string value:long initial_sale_date:int initial_sale_stars:long initial_sale_price:long last_sale_date:flags.0?int last_sale_price:flags.0?long floor_price:flags.2?long average_price:flags.3?long listed_count:flags.4?int fragment_listed_count:flags.5?int fragment_listed_url:flags.5?string = payments.UniqueStarGiftValueInfo; + +profileTabPosts#b98cd696 = ProfileTab; +profileTabGifts#4d4bd46a = ProfileTab; +profileTabMedia#72c64955 = ProfileTab; +profileTabFiles#ab339c00 = ProfileTab; +profileTabMusic#9f27d26e = ProfileTab; +profileTabVoice#e477092e = ProfileTab; +profileTabLinks#d3656499 = ProfileTab; +profileTabGifs#a2c0f695 = ProfileTab; + +users.savedMusicNotModified#e3878aa4 count:int = users.SavedMusic; +users.savedMusic#34a2f297 count:int documents:Vector = users.SavedMusic; + +account.savedMusicIdsNotModified#4fc81d6e = account.SavedMusicIds; +account.savedMusicIds#998d6636 ids:Vector = account.SavedMusicIds; + +payments.checkCanSendGiftResultOk#374fa7ad = payments.CheckCanSendGiftResult; +payments.checkCanSendGiftResultFail#d5e58274 reason:TextWithEntities = payments.CheckCanSendGiftResult; + +inputChatThemeEmpty#83268483 = InputChatTheme; +inputChatTheme#c93de95c emoticon:string = InputChatTheme; +inputChatThemeUniqueGift#87e5dfe4 slug:string = InputChatTheme; + +starGiftUpgradePrice#99ea331d date:int upgrade_stars:long = StarGiftUpgradePrice; + +groupCallMessage#1a8afc7e flags:# from_admin:flags.1?true id:int from_id:Peer date:int message:TextWithEntities paid_message_stars:flags.0?long = GroupCallMessage; + +groupCallDonor#ee430c85 flags:# top:flags.0?true my:flags.1?true peer_id:flags.3?Peer stars:long = GroupCallDonor; + +phone.groupCallStars#9d1dbd26 total_stars:long top_donors:Vector chats:Vector users:Vector = phone.GroupCallStars; + +recentStory#711d692d flags:# live:flags.0?true max_id:flags.1?int = RecentStory; + +auctionBidLevel#310240cc pos:int amount:long date:int = AuctionBidLevel; + +starGiftAuctionStateNotModified#fe333952 = StarGiftAuctionState; +starGiftAuctionState#771a4e66 version:int start_date:int end_date:int min_bid_amount:long bid_levels:Vector top_bidders:Vector next_round_at:int last_gift_num:int gifts_left:int current_round:int total_rounds:int rounds:Vector = StarGiftAuctionState; +starGiftAuctionStateFinished#972dabbf flags:# start_date:int end_date:int average_price:long listed_count:flags.0?int fragment_listed_count:flags.1?int fragment_listed_url:flags.1?string = StarGiftAuctionState; + +starGiftAuctionUserState#2eeed1c4 flags:# returned:flags.1?true bid_amount:flags.0?long bid_date:flags.0?int min_bid_amount:flags.0?long bid_peer:flags.0?Peer acquired_count:int = StarGiftAuctionUserState; + +payments.starGiftAuctionState#6b39f4ec gift:StarGift state:StarGiftAuctionState user_state:StarGiftAuctionUserState timeout:int users:Vector chats:Vector = payments.StarGiftAuctionState; + +starGiftAuctionAcquiredGift#42b00348 flags:# name_hidden:flags.0?true peer:Peer date:int bid_amount:long round:int pos:int message:flags.1?TextWithEntities gift_num:flags.2?int = StarGiftAuctionAcquiredGift; + +payments.starGiftAuctionAcquiredGifts#7d5bd1f0 gifts:Vector users:Vector chats:Vector = payments.StarGiftAuctionAcquiredGifts; + +starGiftActiveAuctionState#d31bc45d gift:StarGift state:StarGiftAuctionState user_state:StarGiftAuctionUserState = StarGiftActiveAuctionState; + +payments.starGiftActiveAuctionsNotModified#db33dad0 = payments.StarGiftActiveAuctions; +payments.starGiftActiveAuctions#aef6abbc auctions:Vector users:Vector chats:Vector = payments.StarGiftActiveAuctions; + +inputStarGiftAuction#2e16c98 gift_id:long = InputStarGiftAuction; +inputStarGiftAuctionSlug#7ab58308 slug:string = InputStarGiftAuction; + +passkey#98613ebf flags:# id:string name:string date:int software_emoji_id:flags.0?long last_usage_date:flags.1?int = Passkey; + +account.passkeys#f8e0aa1c passkeys:Vector = account.Passkeys; + +account.passkeyRegistrationOptions#e16b5ce1 options:DataJSON = account.PasskeyRegistrationOptions; + +auth.passkeyLoginOptions#e2037789 options:DataJSON = auth.PasskeyLoginOptions; + +inputPasskeyResponseRegister#3e63935c client_data:DataJSON attestation_data:bytes = InputPasskeyResponse; +inputPasskeyResponseLogin#c31fc14a client_data:DataJSON authenticator_data:bytes signature:bytes user_handle:string = InputPasskeyResponse; + +inputPasskeyCredentialPublicKey#3c27b78f id:string raw_id:string response:InputPasskeyResponse = InputPasskeyCredential; +inputPasskeyCredentialFirebasePNV#5b1ccb28 pnv_token:string = InputPasskeyCredential; + +starGiftBackground#aff56398 center_color:int edge_color:int text_color:int = StarGiftBackground; + +starGiftAuctionRound#3aae0528 num:int duration:int = StarGiftAuctionRound; +starGiftAuctionRoundExtendable#aa021e5 num:int duration:int extend_top:int extend_window:int = StarGiftAuctionRound; + +payments.starGiftUpgradeAttributes#46c6e36f attributes:Vector = payments.StarGiftUpgradeAttributes; + +messages.emojiGameOutcome#da2ad647 seed:bytes stake_ton_amount:long ton_amount:long = messages.EmojiGameOutcome; + +messages.emojiGameUnavailable#59e65335 = messages.EmojiGameInfo; +messages.emojiGameDiceInfo#44e56023 flags:# game_hash:string prev_stake:long current_streak:int params:Vector plays_left:flags.0?int = messages.EmojiGameInfo; + +starGiftAttributeRarity#36437737 permille:int = StarGiftAttributeRarity; +starGiftAttributeRarityUncommon#dbce6389 = StarGiftAttributeRarity; +starGiftAttributeRarityRare#f08d516b = StarGiftAttributeRarity; +starGiftAttributeRarityEpic#78fbf3a8 = StarGiftAttributeRarity; +starGiftAttributeRarityLegendary#cef7e7a8 = StarGiftAttributeRarity; + +keyboardButtonStyle#4fdd3430 flags:# bg_primary:flags.0?true bg_danger:flags.1?true bg_success:flags.2?true icon:flags.3?long = KeyboardButtonStyle; + +inputMessageReadMetric#402b4495 msg_id:int view_id:long time_in_view_ms:int active_time_in_view_ms:int height_to_viewport_ratio_permille:int seen_range_ratio_permille:int = InputMessageReadMetric; + +bots.exportedBotToken#3c60b621 token:string = bots.ExportedBotToken; + +bots.requestedButton#f13bbcd7 webapp_req_id:string = bots.RequestedButton; + +messages.composedMessageWithAI#90d7adfa flags:# result_text:TextWithEntities diff_text:flags.0?TextWithEntities = messages.ComposedMessageWithAI; + +stats.pollStats#2999beed votes_graph:StatsGraph = stats.PollStats; + +inputAiComposeToneDefault#1fe9a9bf tone:string = InputAiComposeTone; +inputAiComposeToneID#773c080 id:long access_hash:long = InputAiComposeTone; +inputAiComposeToneSlug#1fa01357 slug:string = InputAiComposeTone; + +aiComposeTone#cff63ea9 flags:# creator:flags.0?true id:long access_hash:long slug:string title:string emoji_id:flags.1?long prompt:flags.4?string installs_count:flags.2?int author_id:flags.3?long example_english:flags.5?AiComposeToneExample = AiComposeTone; +aiComposeToneDefault#9bad6414 tone:string emoji_id:long title:string = AiComposeTone; + +aicompose.tonesNotModified#c1f46103 = aicompose.Tones; +aicompose.tones#6c9d0efe hash:long tones:Vector users:Vector = aicompose.Tones; + +aiComposeToneExample#f1d628ec from:TextWithEntities to:TextWithEntities = AiComposeToneExample; + +bots.accessSettings#dd1fbf93 flags:# restricted:flags.0?true add_users:flags.1?Vector = bots.AccessSettings; + +---functions--- + +invokeAfterMsg#cb9f372d {X:Type} msg_id:long query:!X = X; +invokeAfterMsgs#3dc4b4f0 {X:Type} msg_ids:Vector query:!X = X; +initConnection#c1cd5ea9 {X:Type} flags:# api_id:int device_model:string system_version:string app_version:string system_lang_code:string lang_pack:string lang_code:string proxy:flags.0?InputClientProxy params:flags.1?JSONValue query:!X = X; +invokeWithLayer#da9b0d0d {X:Type} layer:int query:!X = X; +invokeWithoutUpdates#bf9459b7 {X:Type} query:!X = X; +invokeWithMessagesRange#365275f2 {X:Type} range:MessageRange query:!X = X; +invokeWithTakeout#aca9fd2e {X:Type} takeout_id:long query:!X = X; +invokeWithBusinessConnection#dd289f8e {X:Type} connection_id:string query:!X = X; +invokeWithGooglePlayIntegrity#1df92984 {X:Type} nonce:string token:string query:!X = X; +invokeWithApnsSecret#0dae54f8 {X:Type} nonce:string secret:string query:!X = X; +invokeWithReCaptcha#adbb0f94 {X:Type} token:string query:!X = X; + +auth.sendCode#a677244f phone_number:string api_id:int api_hash:string settings:CodeSettings = auth.SentCode; +auth.signUp#aac7b717 flags:# no_joined_notifications:flags.0?true phone_number:string phone_code_hash:string first_name:string last_name:string = auth.Authorization; +auth.signIn#8d52a951 flags:# phone_number:string phone_code_hash:string phone_code:flags.0?string email_verification:flags.1?EmailVerification = auth.Authorization; +auth.logOut#3e72ba19 = auth.LoggedOut; +auth.resetAuthorizations#9fab0d1a = Bool; +auth.exportAuthorization#e5bfffcd dc_id:int = auth.ExportedAuthorization; +auth.importAuthorization#a57a7dad id:long bytes:bytes = auth.Authorization; +auth.bindTempAuthKey#cdd42a05 perm_auth_key_id:long nonce:long expires_at:int encrypted_message:bytes = Bool; +auth.importBotAuthorization#67a3ff2c flags:int api_id:int api_hash:string bot_auth_token:string = auth.Authorization; +auth.checkPassword#d18b4d16 password:InputCheckPasswordSRP = auth.Authorization; +auth.requestPasswordRecovery#d897bc66 = auth.PasswordRecovery; +auth.recoverPassword#37096c70 flags:# code:string new_settings:flags.0?account.PasswordInputSettings = auth.Authorization; +auth.resendCode#cae47523 flags:# phone_number:string phone_code_hash:string reason:flags.0?string = auth.SentCode; +auth.cancelCode#1f040578 phone_number:string phone_code_hash:string = Bool; +auth.dropTempAuthKeys#8e48a188 except_auth_keys:Vector = Bool; +auth.exportLoginToken#b7e085fe api_id:int api_hash:string except_ids:Vector = auth.LoginToken; +auth.importLoginToken#95ac5ce4 token:bytes = auth.LoginToken; +auth.acceptLoginToken#e894ad4d token:bytes = Authorization; +auth.checkRecoveryPassword#d36bf79 code:string = Bool; +auth.importWebTokenAuthorization#2db873a9 api_id:int api_hash:string web_auth_token:string = auth.Authorization; +auth.requestFirebaseSms#8e39261e flags:# phone_number:string phone_code_hash:string safety_net_token:flags.0?string play_integrity_token:flags.2?string ios_push_secret:flags.1?string = Bool; +auth.resetLoginEmail#7e960193 phone_number:string phone_code_hash:string = auth.SentCode; +auth.reportMissingCode#cb9deff6 phone_number:string phone_code_hash:string mnc:string = Bool; +auth.checkPaidAuth#56e59f9c phone_number:string phone_code_hash:string form_id:long = auth.SentCode; +auth.initPasskeyLogin#518ad0b7 api_id:int api_hash:string = auth.PasskeyLoginOptions; +auth.finishPasskeyLogin#9857ad07 flags:# credential:InputPasskeyCredential from_dc_id:flags.0?int from_auth_key_id:flags.0?long = auth.Authorization; + +account.registerDevice#ec86017a flags:# no_muted:flags.0?true token_type:int token:string app_sandbox:Bool secret:bytes other_uids:Vector = Bool; +account.unregisterDevice#6a0d3206 token_type:int token:string other_uids:Vector = Bool; +account.updateNotifySettings#84be5b93 peer:InputNotifyPeer settings:InputPeerNotifySettings = Bool; +account.getNotifySettings#12b3ad31 peer:InputNotifyPeer = PeerNotifySettings; +account.resetNotifySettings#db7e1747 = Bool; +account.updateProfile#78515775 flags:# first_name:flags.0?string last_name:flags.1?string about:flags.2?string = User; +account.updateStatus#6628562c offline:Bool = Bool; +account.getWallPapers#7967d36 hash:long = account.WallPapers; +account.reportPeer#c5ba3d86 peer:InputPeer reason:ReportReason message:string = Bool; +account.checkUsername#2714d86c username:string = Bool; +account.updateUsername#3e0bdd7c username:string = User; +account.getPrivacy#dadbc950 key:InputPrivacyKey = account.PrivacyRules; +account.setPrivacy#c9f81ce8 key:InputPrivacyKey rules:Vector = account.PrivacyRules; +account.deleteAccount#a2c0cf74 flags:# reason:string password:flags.0?InputCheckPasswordSRP = Bool; +account.getAccountTTL#8fc711d = AccountDaysTTL; +account.setAccountTTL#2442485e ttl:AccountDaysTTL = Bool; +account.sendChangePhoneCode#82574ae5 phone_number:string settings:CodeSettings = auth.SentCode; +account.changePhone#70c32edb phone_number:string phone_code_hash:string phone_code:string = User; +account.updateDeviceLocked#38df3532 period:int = Bool; +account.getAuthorizations#e320c158 = account.Authorizations; +account.resetAuthorization#df77f3bc hash:long = Bool; +account.getPassword#548a30f5 = account.Password; +account.getPasswordSettings#9cd4eaf9 password:InputCheckPasswordSRP = account.PasswordSettings; +account.updatePasswordSettings#a59b102f password:InputCheckPasswordSRP new_settings:account.PasswordInputSettings = Bool; +account.sendConfirmPhoneCode#1b3faa88 hash:string settings:CodeSettings = auth.SentCode; +account.confirmPhone#5f2178c3 phone_code_hash:string phone_code:string = Bool; +account.getTmpPassword#449e0b51 password:InputCheckPasswordSRP period:int = account.TmpPassword; +account.getWebAuthorizations#182e6d6f = account.WebAuthorizations; +account.resetWebAuthorization#2d01b9ef hash:long = Bool; +account.resetWebAuthorizations#682d2594 = Bool; +account.getAllSecureValues#b288bc7d = Vector; +account.getSecureValue#73665bc2 types:Vector = Vector; +account.saveSecureValue#899fe31d value:InputSecureValue secure_secret_id:long = SecureValue; +account.deleteSecureValue#b880bc4b types:Vector = Bool; +account.getAuthorizationForm#a929597a bot_id:long scope:string public_key:string = account.AuthorizationForm; +account.acceptAuthorization#f3ed4c73 bot_id:long scope:string public_key:string value_hashes:Vector credentials:SecureCredentialsEncrypted = Bool; +account.sendVerifyPhoneCode#a5a356f9 phone_number:string settings:CodeSettings = auth.SentCode; +account.verifyPhone#4dd3a7f6 phone_number:string phone_code_hash:string phone_code:string = Bool; +account.sendVerifyEmailCode#98e037bb purpose:EmailVerifyPurpose email:string = account.SentEmailCode; +account.verifyEmail#32da4cf purpose:EmailVerifyPurpose verification:EmailVerification = account.EmailVerified; +account.initTakeoutSession#8ef3eab0 flags:# contacts:flags.0?true message_users:flags.1?true message_chats:flags.2?true message_megagroups:flags.3?true message_channels:flags.4?true files:flags.5?true file_max_size:flags.5?long = account.Takeout; +account.finishTakeoutSession#1d2652ee flags:# success:flags.0?true = Bool; +account.confirmPasswordEmail#8fdf1920 code:string = Bool; +account.resendPasswordEmail#7a7f2a15 = Bool; +account.cancelPasswordEmail#c1cbd5b6 = Bool; +account.getContactSignUpNotification#9f07c728 = Bool; +account.setContactSignUpNotification#cff43f61 silent:Bool = Bool; +account.getNotifyExceptions#53577479 flags:# compare_sound:flags.1?true compare_stories:flags.2?true peer:flags.0?InputNotifyPeer = Updates; +account.getWallPaper#fc8ddbea wallpaper:InputWallPaper = WallPaper; +account.uploadWallPaper#e39a8f03 flags:# for_chat:flags.0?true file:InputFile mime_type:string settings:WallPaperSettings = WallPaper; +account.saveWallPaper#6c5a5b37 wallpaper:InputWallPaper unsave:Bool settings:WallPaperSettings = Bool; +account.installWallPaper#feed5769 wallpaper:InputWallPaper settings:WallPaperSettings = Bool; +account.resetWallPapers#bb3b9804 = Bool; +account.getAutoDownloadSettings#56da0b3f = account.AutoDownloadSettings; +account.saveAutoDownloadSettings#76f36233 flags:# low:flags.0?true high:flags.1?true settings:AutoDownloadSettings = Bool; +account.uploadTheme#1c3db333 flags:# file:InputFile thumb:flags.0?InputFile file_name:string mime_type:string = Document; +account.createTheme#652e4400 flags:# slug:string title:string document:flags.2?InputDocument settings:flags.3?Vector = Theme; +account.updateTheme#2bf40ccc flags:# format:string theme:InputTheme slug:flags.0?string title:flags.1?string document:flags.2?InputDocument settings:flags.3?Vector = Theme; +account.saveTheme#f257106c theme:InputTheme unsave:Bool = Bool; +account.installTheme#c727bb3b flags:# dark:flags.0?true theme:flags.1?InputTheme format:flags.2?string base_theme:flags.3?BaseTheme = Bool; +account.getTheme#3a5869ec format:string theme:InputTheme = Theme; +account.getThemes#7206e458 format:string hash:long = account.Themes; +account.setContentSettings#b574b16b flags:# sensitive_enabled:flags.0?true = Bool; +account.getContentSettings#8b9b4dae = account.ContentSettings; +account.getMultiWallPapers#65ad71dc wallpapers:Vector = Vector; +account.getGlobalPrivacySettings#eb2b4cf6 = GlobalPrivacySettings; +account.setGlobalPrivacySettings#1edaaac2 settings:GlobalPrivacySettings = GlobalPrivacySettings; +account.reportProfilePhoto#fa8cc6f5 peer:InputPeer photo_id:InputPhoto reason:ReportReason message:string = Bool; +account.resetPassword#9308ce1b = account.ResetPasswordResult; +account.declinePasswordReset#4c9409f6 = Bool; +account.getChatThemes#d638de89 hash:long = account.Themes; +account.setAuthorizationTTL#bf899aa0 authorization_ttl_days:int = Bool; +account.changeAuthorizationSettings#40f48462 flags:# confirmed:flags.3?true hash:long encrypted_requests_disabled:flags.0?Bool call_requests_disabled:flags.1?Bool = Bool; +account.getSavedRingtones#e1902288 hash:long = account.SavedRingtones; +account.saveRingtone#3dea5b03 id:InputDocument unsave:Bool = account.SavedRingtone; +account.uploadRingtone#831a83a2 file:InputFile file_name:string mime_type:string = Document; +account.updateEmojiStatus#fbd3de6b emoji_status:EmojiStatus = Bool; +account.getDefaultEmojiStatuses#d6753386 hash:long = account.EmojiStatuses; +account.getRecentEmojiStatuses#f578105 hash:long = account.EmojiStatuses; +account.clearRecentEmojiStatuses#18201aae = Bool; +account.reorderUsernames#ef500eab order:Vector = Bool; +account.toggleUsername#58d6b376 username:string active:Bool = Bool; +account.getDefaultProfilePhotoEmojis#e2750328 hash:long = EmojiList; +account.getDefaultGroupPhotoEmojis#915860ae hash:long = EmojiList; +account.getAutoSaveSettings#adcbbcda = account.AutoSaveSettings; +account.saveAutoSaveSettings#d69b8361 flags:# users:flags.0?true chats:flags.1?true broadcasts:flags.2?true peer:flags.3?InputPeer settings:AutoSaveSettings = Bool; +account.deleteAutoSaveExceptions#53bc0020 = Bool; +account.invalidateSignInCodes#ca8ae8ba codes:Vector = Bool; +account.updateColor#684d214e flags:# for_profile:flags.1?true color:flags.2?PeerColor = Bool; +account.getDefaultBackgroundEmojis#a60ab9ce hash:long = EmojiList; +account.getChannelDefaultEmojiStatuses#7727a7d5 hash:long = account.EmojiStatuses; +account.getChannelRestrictedStatusEmojis#35a9e0d5 hash:long = EmojiList; +account.updateBusinessWorkHours#4b00e066 flags:# business_work_hours:flags.0?BusinessWorkHours = Bool; +account.updateBusinessLocation#9e6b131a flags:# geo_point:flags.1?InputGeoPoint address:flags.0?string = Bool; +account.updateBusinessGreetingMessage#66cdafc4 flags:# message:flags.0?InputBusinessGreetingMessage = Bool; +account.updateBusinessAwayMessage#a26a7fa5 flags:# message:flags.0?InputBusinessAwayMessage = Bool; +account.updateConnectedBot#66a08c7e flags:# deleted:flags.1?true rights:flags.0?BusinessBotRights bot:InputUser recipients:InputBusinessBotRecipients = Updates; +account.getConnectedBots#4ea4c80f = account.ConnectedBots; +account.getBotBusinessConnection#76a86270 connection_id:string = Updates; +account.updateBusinessIntro#a614d034 flags:# intro:flags.0?InputBusinessIntro = Bool; +account.toggleConnectedBotPaused#646e1097 peer:InputPeer paused:Bool = Bool; +account.disablePeerConnectedBot#5e437ed9 peer:InputPeer = Bool; +account.updateBirthday#cc6e0c11 flags:# birthday:flags.0?Birthday = Bool; +account.createBusinessChatLink#8851e68e link:InputBusinessChatLink = BusinessChatLink; +account.editBusinessChatLink#8c3410af slug:string link:InputBusinessChatLink = BusinessChatLink; +account.deleteBusinessChatLink#60073674 slug:string = Bool; +account.getBusinessChatLinks#6f70dde1 = account.BusinessChatLinks; +account.resolveBusinessChatLink#5492e5ee slug:string = account.ResolvedBusinessChatLinks; +account.updatePersonalChannel#d94305e0 channel:InputChannel = Bool; +account.toggleSponsoredMessages#b9d9a38d enabled:Bool = Bool; +account.getReactionsNotifySettings#6dd654c = ReactionsNotifySettings; +account.setReactionsNotifySettings#316ce548 settings:ReactionsNotifySettings = ReactionsNotifySettings; +account.getCollectibleEmojiStatuses#2e7b4543 hash:long = account.EmojiStatuses; +account.getPaidMessagesRevenue#19ba4a67 flags:# parent_peer:flags.0?InputPeer user_id:InputUser = account.PaidMessagesRevenue; +account.toggleNoPaidMessagesException#fe2eda76 flags:# refund_charged:flags.0?true require_payment:flags.2?true parent_peer:flags.1?InputPeer user_id:InputUser = Bool; +account.setMainProfileTab#5dee78b0 tab:ProfileTab = Bool; +account.saveMusic#b26732a9 flags:# unsave:flags.0?true id:InputDocument after_id:flags.1?InputDocument = Bool; +account.getSavedMusicIds#e09d5faf hash:long = account.SavedMusicIds; +account.getUniqueGiftChatThemes#e42ce9c9 offset:string limit:int hash:long = account.ChatThemes; +account.initPasskeyRegistration#429547e8 = account.PasskeyRegistrationOptions; +account.registerPasskey#55b41fd6 credential:InputPasskeyCredential = Passkey; +account.getPasskeys#ea1f0c52 = account.Passkeys; +account.deletePasskey#f5b5563f id:string = Bool; + +users.getUsers#d91a548 id:Vector = Vector; +users.getFullUser#b60f5918 id:InputUser = users.UserFull; +users.setSecureValueErrors#90c894b5 id:InputUser errors:Vector = Bool; +users.getRequirementsToContact#d89a83a3 id:Vector = Vector; +users.getSavedMusic#788d7fe3 id:InputUser offset:int limit:int hash:long = users.SavedMusic; +users.getSavedMusicByID#7573a4e9 id:InputUser documents:Vector = users.SavedMusic; +users.suggestBirthday#fc533372 id:InputUser birthday:Birthday = Updates; + +contacts.getContactIDs#7adc669d hash:long = Vector; +contacts.getStatuses#c4a353ee = Vector; +contacts.getContacts#5dd69e12 hash:long = contacts.Contacts; +contacts.importContacts#2c800be5 contacts:Vector = contacts.ImportedContacts; +contacts.deleteContacts#96a0e00 id:Vector = Updates; +contacts.deleteByPhones#1013fd9e phones:Vector = Bool; +contacts.block#2e2e8734 flags:# my_stories_from:flags.0?true id:InputPeer = Bool; +contacts.unblock#b550d328 flags:# my_stories_from:flags.0?true id:InputPeer = Bool; +contacts.getBlocked#9a868f80 flags:# my_stories_from:flags.0?true offset:int limit:int = contacts.Blocked; +contacts.search#11f812d8 q:string limit:int = contacts.Found; +contacts.resolveUsername#725afbbc flags:# username:string referer:flags.0?string = contacts.ResolvedPeer; +contacts.getTopPeers#973478b6 flags:# correspondents:flags.0?true bots_pm:flags.1?true bots_inline:flags.2?true phone_calls:flags.3?true forward_users:flags.4?true forward_chats:flags.5?true groups:flags.10?true channels:flags.15?true bots_app:flags.16?true bots_guestchat:flags.17?true offset:int limit:int hash:long = contacts.TopPeers; +contacts.resetTopPeerRating#1ae373ac category:TopPeerCategory peer:InputPeer = Bool; +contacts.resetSaved#879537f1 = Bool; +contacts.getSaved#82f1e39f = Vector; +contacts.toggleTopPeers#8514bdda enabled:Bool = Bool; +contacts.addContact#d9ba2e54 flags:# add_phone_privacy_exception:flags.0?true id:InputUser first_name:string last_name:string phone:string note:flags.1?TextWithEntities = Updates; +contacts.acceptContact#f831a20f id:InputUser = Updates; +contacts.getLocated#d348bc44 flags:# background:flags.1?true geo_point:InputGeoPoint self_expires:flags.0?int = Updates; +contacts.blockFromReplies#29a8962c flags:# delete_message:flags.0?true delete_history:flags.1?true report_spam:flags.2?true msg_id:int = Updates; +contacts.resolvePhone#8af94344 phone:string = contacts.ResolvedPeer; +contacts.exportContactToken#f8654027 = ExportedContactToken; +contacts.importContactToken#13005788 token:string = User; +contacts.editCloseFriends#ba6705f0 id:Vector = Bool; +contacts.setBlocked#94c65c76 flags:# my_stories_from:flags.0?true id:Vector limit:int = Bool; +contacts.getBirthdays#daeda864 = contacts.ContactBirthdays; +contacts.getSponsoredPeers#b6c8c393 q:string = contacts.SponsoredPeers; +contacts.updateContactNote#139f63fb id:InputUser note:TextWithEntities = Bool; + +messages.getMessages#63c66506 id:Vector = messages.Messages; +messages.getDialogs#a0f4cb4f flags:# exclude_pinned:flags.0?true folder_id:flags.1?int offset_date:int offset_id:int offset_peer:InputPeer limit:int hash:long = messages.Dialogs; +messages.getHistory#4423e6c5 peer:InputPeer offset_id:int offset_date:int add_offset:int limit:int max_id:int min_id:int hash:long = messages.Messages; +messages.search#29ee847a flags:# peer:InputPeer q:string from_id:flags.0?InputPeer saved_peer_id:flags.2?InputPeer saved_reaction:flags.3?Vector top_msg_id:flags.1?int filter:MessagesFilter min_date:int max_date:int offset_id:int add_offset:int limit:int max_id:int min_id:int hash:long = messages.Messages; +messages.readHistory#e306d3a peer:InputPeer max_id:int = messages.AffectedMessages; +messages.deleteHistory#b08f922a flags:# just_clear:flags.0?true revoke:flags.1?true peer:InputPeer max_id:int min_date:flags.2?int max_date:flags.3?int = messages.AffectedHistory; +messages.deleteMessages#e58e95d2 flags:# revoke:flags.0?true id:Vector = messages.AffectedMessages; +messages.receivedMessages#5a954c0 max_id:int = Vector; +messages.setTyping#58943ee2 flags:# peer:InputPeer top_msg_id:flags.0?int action:SendMessageAction = Bool; +messages.sendMessage#545cd15a flags:# no_webpage:flags.1?true silent:flags.5?true background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true update_stickersets_order:flags.15?true invert_media:flags.16?true allow_paid_floodskip:flags.19?true peer:InputPeer reply_to:flags.0?InputReplyTo message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector schedule_date:flags.10?int schedule_repeat_period:flags.24?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long allow_paid_stars:flags.21?long suggested_post:flags.22?SuggestedPost = Updates; +messages.sendMedia#330e77f flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true update_stickersets_order:flags.15?true invert_media:flags.16?true allow_paid_floodskip:flags.19?true peer:InputPeer reply_to:flags.0?InputReplyTo media:InputMedia message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector schedule_date:flags.10?int schedule_repeat_period:flags.24?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long allow_paid_stars:flags.21?long suggested_post:flags.22?SuggestedPost = Updates; +messages.forwardMessages#13704a7c flags:# silent:flags.5?true background:flags.6?true with_my_score:flags.8?true drop_author:flags.11?true drop_media_captions:flags.12?true noforwards:flags.14?true allow_paid_floodskip:flags.19?true from_peer:InputPeer id:Vector random_id:Vector to_peer:InputPeer top_msg_id:flags.9?int reply_to:flags.22?InputReplyTo schedule_date:flags.10?int schedule_repeat_period:flags.24?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long video_timestamp:flags.20?int allow_paid_stars:flags.21?long suggested_post:flags.23?SuggestedPost = Updates; +messages.reportSpam#cf1592db peer:InputPeer = Bool; +messages.getPeerSettings#efd9a6a2 peer:InputPeer = messages.PeerSettings; +messages.report#fc78af9b peer:InputPeer id:Vector option:bytes message:string = ReportResult; +messages.getChats#49e9528f id:Vector = messages.Chats; +messages.getFullChat#aeb00b34 chat_id:long = messages.ChatFull; +messages.editChatTitle#73783ffd chat_id:long title:string = Updates; +messages.editChatPhoto#35ddd674 chat_id:long photo:InputChatPhoto = Updates; +messages.addChatUser#cbc6d107 chat_id:long user_id:InputUser fwd_limit:int = messages.InvitedUsers; +messages.deleteChatUser#a2185cab flags:# revoke_history:flags.0?true chat_id:long user_id:InputUser = Updates; +messages.createChat#92ceddd4 flags:# users:Vector title:string ttl_period:flags.0?int = messages.InvitedUsers; +messages.getDhConfig#26cf8950 version:int random_length:int = messages.DhConfig; +messages.requestEncryption#f64daf43 user_id:InputUser random_id:int g_a:bytes = EncryptedChat; +messages.acceptEncryption#3dbc0415 peer:InputEncryptedChat g_b:bytes key_fingerprint:long = EncryptedChat; +messages.discardEncryption#f393aea0 flags:# delete_history:flags.0?true chat_id:int = Bool; +messages.setEncryptedTyping#791451ed peer:InputEncryptedChat typing:Bool = Bool; +messages.readEncryptedHistory#7f4b690a peer:InputEncryptedChat max_date:int = Bool; +messages.sendEncrypted#44fa7a15 flags:# silent:flags.0?true peer:InputEncryptedChat random_id:long data:bytes = messages.SentEncryptedMessage; +messages.sendEncryptedFile#5559481d flags:# silent:flags.0?true peer:InputEncryptedChat random_id:long data:bytes file:InputEncryptedFile = messages.SentEncryptedMessage; +messages.sendEncryptedService#32d439a4 peer:InputEncryptedChat random_id:long data:bytes = messages.SentEncryptedMessage; +messages.receivedQueue#55a5bb66 max_qts:int = Vector; +messages.reportEncryptedSpam#4b0c8c0f peer:InputEncryptedChat = Bool; +messages.readMessageContents#36a73f77 id:Vector = messages.AffectedMessages; +messages.getStickers#d5a5d3a1 emoticon:string hash:long = messages.Stickers; +messages.getAllStickers#b8a0a1a8 hash:long = messages.AllStickers; +messages.getWebPagePreview#570d6f6f flags:# message:string entities:flags.3?Vector = messages.WebPagePreview; +messages.exportChatInvite#a455de90 flags:# legacy_revoke_permanent:flags.2?true request_needed:flags.3?true peer:InputPeer expire_date:flags.0?int usage_limit:flags.1?int title:flags.4?string subscription_pricing:flags.5?StarsSubscriptionPricing = ExportedChatInvite; +messages.checkChatInvite#3eadb1bb hash:string = ChatInvite; +messages.importChatInvite#6c50051c hash:string = Updates; +messages.getStickerSet#c8a0ec74 stickerset:InputStickerSet hash:int = messages.StickerSet; +messages.installStickerSet#c78fe460 stickerset:InputStickerSet archived:Bool = messages.StickerSetInstallResult; +messages.uninstallStickerSet#f96e55de stickerset:InputStickerSet = Bool; +messages.startBot#e6df7378 bot:InputUser peer:InputPeer random_id:long start_param:string = Updates; +messages.getMessagesViews#5784d3e1 peer:InputPeer id:Vector increment:Bool = messages.MessageViews; +messages.editChatAdmin#a85bd1c2 chat_id:long user_id:InputUser is_admin:Bool = Bool; +messages.migrateChat#a2875319 chat_id:long = Updates; +messages.searchGlobal#4bc6589a flags:# broadcasts_only:flags.1?true groups_only:flags.2?true users_only:flags.3?true folder_id:flags.0?int q:string filter:MessagesFilter min_date:int max_date:int offset_rate:int offset_peer:InputPeer offset_id:int limit:int = messages.Messages; +messages.reorderStickerSets#78337739 flags:# masks:flags.0?true emojis:flags.1?true order:Vector = Bool; +messages.getDocumentByHash#b1f2061f sha256:bytes size:long mime_type:string = Document; +messages.getSavedGifs#5cf09635 hash:long = messages.SavedGifs; +messages.saveGif#327a30cb id:InputDocument unsave:Bool = Bool; +messages.getInlineBotResults#514e999d flags:# bot:InputUser peer:InputPeer geo_point:flags.0?InputGeoPoint query:string offset:string = messages.BotResults; +messages.setInlineBotResults#bb12a419 flags:# gallery:flags.0?true private:flags.1?true query_id:long results:Vector cache_time:int next_offset:flags.2?string switch_pm:flags.3?InlineBotSwitchPM switch_webview:flags.4?InlineBotWebView = Bool; +messages.sendInlineBotResult#c0cf7646 flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true hide_via:flags.11?true peer:InputPeer reply_to:flags.0?InputReplyTo random_id:long query_id:long id:string schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut allow_paid_stars:flags.21?long = Updates; +messages.getMessageEditData#fda68d36 peer:InputPeer id:int = messages.MessageEditData; +messages.editMessage#51e842e1 flags:# no_webpage:flags.1?true invert_media:flags.16?true peer:InputPeer id:int message:flags.11?string media:flags.14?InputMedia reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector schedule_date:flags.15?int schedule_repeat_period:flags.18?int quick_reply_shortcut_id:flags.17?int = Updates; +messages.editInlineBotMessage#83557dba flags:# no_webpage:flags.1?true invert_media:flags.16?true id:InputBotInlineMessageID message:flags.11?string media:flags.14?InputMedia reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector = Bool; +messages.getBotCallbackAnswer#9342ca07 flags:# game:flags.1?true peer:InputPeer msg_id:int data:flags.0?bytes password:flags.2?InputCheckPasswordSRP = messages.BotCallbackAnswer; +messages.setBotCallbackAnswer#d58f130a flags:# alert:flags.1?true query_id:long message:flags.0?string url:flags.2?string cache_time:int = Bool; +messages.getPeerDialogs#e470bcfd peers:Vector = messages.PeerDialogs; +messages.saveDraft#54ae308e flags:# no_webpage:flags.1?true invert_media:flags.6?true reply_to:flags.4?InputReplyTo peer:InputPeer message:string entities:flags.3?Vector media:flags.5?InputMedia effect:flags.7?long suggested_post:flags.8?SuggestedPost = Bool; +messages.getAllDrafts#6a3f8d65 = Updates; +messages.getFeaturedStickers#64780b14 hash:long = messages.FeaturedStickers; +messages.readFeaturedStickers#5b118126 id:Vector = Bool; +messages.getRecentStickers#9da9403b flags:# attached:flags.0?true hash:long = messages.RecentStickers; +messages.saveRecentSticker#392718f8 flags:# attached:flags.0?true id:InputDocument unsave:Bool = Bool; +messages.clearRecentStickers#8999602d flags:# attached:flags.0?true = Bool; +messages.getArchivedStickers#57f17692 flags:# masks:flags.0?true emojis:flags.1?true offset_id:long limit:int = messages.ArchivedStickers; +messages.getMaskStickers#640f82b8 hash:long = messages.AllStickers; +messages.getAttachedStickers#cc5b67cc media:InputStickeredMedia = Vector; +messages.setGameScore#8ef8ecc0 flags:# edit_message:flags.0?true force:flags.1?true peer:InputPeer id:int user_id:InputUser score:int = Updates; +messages.setInlineGameScore#15ad9f64 flags:# edit_message:flags.0?true force:flags.1?true id:InputBotInlineMessageID user_id:InputUser score:int = Bool; +messages.getGameHighScores#e822649d peer:InputPeer id:int user_id:InputUser = messages.HighScores; +messages.getInlineGameHighScores#f635e1b id:InputBotInlineMessageID user_id:InputUser = messages.HighScores; +messages.getCommonChats#e40ca104 user_id:InputUser max_id:long limit:int = messages.Chats; +messages.getWebPage#8d9692a3 url:string hash:int = messages.WebPage; +messages.toggleDialogPin#a731e257 flags:# pinned:flags.0?true peer:InputDialogPeer = Bool; +messages.reorderPinnedDialogs#3b1adf37 flags:# force:flags.0?true folder_id:int order:Vector = Bool; +messages.getPinnedDialogs#d6b94df2 folder_id:int = messages.PeerDialogs; +messages.setBotShippingResults#e5f672fa flags:# query_id:long error:flags.0?string shipping_options:flags.1?Vector = Bool; +messages.setBotPrecheckoutResults#9c2dd95 flags:# success:flags.1?true query_id:long error:flags.0?string = Bool; +messages.uploadMedia#14967978 flags:# business_connection_id:flags.0?string peer:InputPeer media:InputMedia = MessageMedia; +messages.sendScreenshotNotification#a1405817 peer:InputPeer reply_to:InputReplyTo random_id:long = Updates; +messages.getFavedStickers#4f1aaa9 hash:long = messages.FavedStickers; +messages.faveSticker#b9ffc55b id:InputDocument unfave:Bool = Bool; +messages.getUnreadMentions#f107e790 flags:# peer:InputPeer top_msg_id:flags.0?int offset_id:int add_offset:int limit:int max_id:int min_id:int = messages.Messages; +messages.readMentions#36e5bf4d flags:# peer:InputPeer top_msg_id:flags.0?int = messages.AffectedHistory; +messages.getRecentLocations#702a40e0 peer:InputPeer limit:int hash:long = messages.Messages; +messages.sendMultiMedia#1bf89d74 flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true update_stickersets_order:flags.15?true invert_media:flags.16?true allow_paid_floodskip:flags.19?true peer:InputPeer reply_to:flags.0?InputReplyTo multi_media:Vector schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long allow_paid_stars:flags.21?long = Updates; +messages.uploadEncryptedFile#5057c497 peer:InputEncryptedChat file:InputEncryptedFile = EncryptedFile; +messages.searchStickerSets#35705b8a flags:# exclude_featured:flags.0?true q:string hash:long = messages.FoundStickerSets; +messages.getSplitRanges#1cff7e08 = Vector; +messages.markDialogUnread#8c5006f8 flags:# unread:flags.0?true parent_peer:flags.1?InputPeer peer:InputDialogPeer = Bool; +messages.getDialogUnreadMarks#21202222 flags:# parent_peer:flags.0?InputPeer = Vector; +messages.clearAllDrafts#7e58ee9c = Bool; +messages.updatePinnedMessage#d2aaf7ec flags:# silent:flags.0?true unpin:flags.1?true pm_oneside:flags.2?true peer:InputPeer id:int = Updates; +messages.sendVote#10ea6184 peer:InputPeer msg_id:int options:Vector = Updates; +messages.getPollResults#eda3e33b peer:InputPeer msg_id:int poll_hash:long = Updates; +messages.getOnlines#6e2be050 peer:InputPeer = ChatOnlines; +messages.editChatAbout#def60797 peer:InputPeer about:string = Bool; +messages.editChatDefaultBannedRights#a5866b41 peer:InputPeer banned_rights:ChatBannedRights = Updates; +messages.getEmojiKeywords#35a0e062 lang_code:string = EmojiKeywordsDifference; +messages.getEmojiKeywordsDifference#1508b6af lang_code:string from_version:int = EmojiKeywordsDifference; +messages.getEmojiKeywordsLanguages#4e9963b2 lang_codes:Vector = Vector; +messages.getEmojiURL#d5b10c26 lang_code:string = EmojiURL; +messages.getSearchCounters#1bbcf300 flags:# peer:InputPeer saved_peer_id:flags.2?InputPeer top_msg_id:flags.0?int filters:Vector = Vector; +messages.requestUrlAuth#894cc99c flags:# peer:flags.1?InputPeer msg_id:flags.1?int button_id:flags.1?int url:flags.2?string in_app_origin:flags.3?string = UrlAuthResult; +messages.acceptUrlAuth#67a3f0de flags:# write_allowed:flags.0?true share_phone_number:flags.3?true peer:flags.1?InputPeer msg_id:flags.1?int button_id:flags.1?int url:flags.2?string match_code:flags.4?string = UrlAuthResult; +messages.hidePeerSettingsBar#4facb138 peer:InputPeer = Bool; +messages.getScheduledHistory#f516760b peer:InputPeer hash:long = messages.Messages; +messages.getScheduledMessages#bdbb0464 peer:InputPeer id:Vector = messages.Messages; +messages.sendScheduledMessages#bd38850a peer:InputPeer id:Vector = Updates; +messages.deleteScheduledMessages#59ae2b16 peer:InputPeer id:Vector = Updates; +messages.getPollVotes#b86e380e flags:# peer:InputPeer id:int option:flags.0?bytes offset:flags.1?string limit:int = messages.VotesList; +messages.toggleStickerSets#b5052fea flags:# uninstall:flags.0?true archive:flags.1?true unarchive:flags.2?true stickersets:Vector = Bool; +messages.getDialogFilters#efd48c89 = messages.DialogFilters; +messages.getSuggestedDialogFilters#a29cd42c = Vector; +messages.updateDialogFilter#1ad4a04a flags:# id:int filter:flags.0?DialogFilter = Bool; +messages.updateDialogFiltersOrder#c563c1e4 order:Vector = Bool; +messages.getOldFeaturedStickers#7ed094a1 offset:int limit:int hash:long = messages.FeaturedStickers; +messages.getReplies#22ddd30c peer:InputPeer msg_id:int offset_id:int offset_date:int add_offset:int limit:int max_id:int min_id:int hash:long = messages.Messages; +messages.getDiscussionMessage#446972fd peer:InputPeer msg_id:int = messages.DiscussionMessage; +messages.readDiscussion#f731a9f4 peer:InputPeer msg_id:int read_max_id:int = Bool; +messages.unpinAllMessages#62dd747 flags:# peer:InputPeer top_msg_id:flags.0?int saved_peer_id:flags.1?InputPeer = messages.AffectedHistory; +messages.deleteChat#5bd0ee50 chat_id:long = Bool; +messages.deletePhoneCallHistory#f9cbe409 flags:# revoke:flags.0?true = messages.AffectedFoundMessages; +messages.checkHistoryImport#43fe19f3 import_head:string = messages.HistoryImportParsed; +messages.initHistoryImport#34090c3b peer:InputPeer file:InputFile media_count:int = messages.HistoryImport; +messages.uploadImportedMedia#2a862092 peer:InputPeer import_id:long file_name:string media:InputMedia = MessageMedia; +messages.startHistoryImport#b43df344 peer:InputPeer import_id:long = Bool; +messages.getExportedChatInvites#a2b5a3f6 flags:# revoked:flags.3?true peer:InputPeer admin_id:InputUser offset_date:flags.2?int offset_link:flags.2?string limit:int = messages.ExportedChatInvites; +messages.getExportedChatInvite#73746f5c peer:InputPeer link:string = messages.ExportedChatInvite; +messages.editExportedChatInvite#bdca2f75 flags:# revoked:flags.2?true peer:InputPeer link:string expire_date:flags.0?int usage_limit:flags.1?int request_needed:flags.3?Bool title:flags.4?string = messages.ExportedChatInvite; +messages.deleteRevokedExportedChatInvites#56987bd5 peer:InputPeer admin_id:InputUser = Bool; +messages.deleteExportedChatInvite#d464a42b peer:InputPeer link:string = Bool; +messages.getAdminsWithInvites#3920e6ef peer:InputPeer = messages.ChatAdminsWithInvites; +messages.getChatInviteImporters#df04dd4e flags:# requested:flags.0?true subscription_expired:flags.3?true peer:InputPeer link:flags.1?string q:flags.2?string offset_date:int offset_user:InputUser limit:int = messages.ChatInviteImporters; +messages.setHistoryTTL#b80e5fe4 peer:InputPeer period:int = Updates; +messages.checkHistoryImportPeer#5dc60f03 peer:InputPeer = messages.CheckedHistoryImportPeer; +messages.setChatTheme#81202c9 peer:InputPeer theme:InputChatTheme = Updates; +messages.getMessageReadParticipants#31c1c44f peer:InputPeer msg_id:int = Vector; +messages.getSearchResultsCalendar#6aa3f6bd flags:# peer:InputPeer saved_peer_id:flags.2?InputPeer filter:MessagesFilter offset_id:int offset_date:int = messages.SearchResultsCalendar; +messages.getSearchResultsPositions#9c7f2f10 flags:# peer:InputPeer saved_peer_id:flags.2?InputPeer filter:MessagesFilter offset_id:int limit:int = messages.SearchResultsPositions; +messages.hideChatJoinRequest#7fe7e815 flags:# approved:flags.0?true peer:InputPeer user_id:InputUser = Updates; +messages.hideAllChatJoinRequests#e085f4ea flags:# approved:flags.0?true peer:InputPeer link:flags.1?string = Updates; +messages.toggleNoForwards#b2081a35 flags:# peer:InputPeer enabled:Bool request_msg_id:flags.0?int = Updates; +messages.saveDefaultSendAs#ccfddf96 peer:InputPeer send_as:InputPeer = Bool; +messages.sendReaction#d30d78d4 flags:# big:flags.1?true add_to_recent:flags.2?true peer:InputPeer msg_id:int reaction:flags.0?Vector = Updates; +messages.getMessagesReactions#8bba90e6 peer:InputPeer id:Vector = Updates; +messages.getMessageReactionsList#461b3f48 flags:# peer:InputPeer id:int reaction:flags.0?Reaction offset:flags.1?string limit:int = messages.MessageReactionsList; +messages.setChatAvailableReactions#864b2581 flags:# peer:InputPeer available_reactions:ChatReactions reactions_limit:flags.0?int paid_enabled:flags.1?Bool = Updates; +messages.getAvailableReactions#18dea0ac hash:int = messages.AvailableReactions; +messages.setDefaultReaction#4f47a016 reaction:Reaction = Bool; +messages.translateText#a5eec345 flags:# peer:flags.0?InputPeer id:flags.0?Vector text:flags.1?Vector to_lang:string tone:flags.2?string = messages.TranslatedText; +messages.getUnreadReactions#bd7f90ac flags:# peer:InputPeer top_msg_id:flags.0?int saved_peer_id:flags.1?InputPeer offset_id:int add_offset:int limit:int max_id:int min_id:int = messages.Messages; +messages.readReactions#9ec44f93 flags:# peer:InputPeer top_msg_id:flags.0?int saved_peer_id:flags.1?InputPeer = messages.AffectedHistory; +messages.searchSentMedia#107e31a0 q:string filter:MessagesFilter limit:int = messages.Messages; +messages.getAttachMenuBots#16fcc2cb hash:long = AttachMenuBots; +messages.getAttachMenuBot#77216192 bot:InputUser = AttachMenuBotsBot; +messages.toggleBotInAttachMenu#69f59d69 flags:# write_allowed:flags.0?true bot:InputUser enabled:Bool = Bool; +messages.requestWebView#269dc2c1 flags:# from_bot_menu:flags.4?true silent:flags.5?true compact:flags.7?true fullscreen:flags.8?true peer:InputPeer bot:InputUser url:flags.1?string start_param:flags.3?string theme_params:flags.2?DataJSON platform:string reply_to:flags.0?InputReplyTo send_as:flags.13?InputPeer = WebViewResult; +messages.prolongWebView#b0d81a83 flags:# silent:flags.5?true peer:InputPeer bot:InputUser query_id:long reply_to:flags.0?InputReplyTo send_as:flags.13?InputPeer = Bool; +messages.requestSimpleWebView#413a3e73 flags:# from_switch_webview:flags.1?true from_side_menu:flags.2?true compact:flags.7?true fullscreen:flags.8?true bot:InputUser url:flags.3?string start_param:flags.4?string theme_params:flags.0?DataJSON platform:string = WebViewResult; +messages.sendWebViewResultMessage#a4314f5 bot_query_id:string result:InputBotInlineResult = WebViewMessageSent; +messages.sendWebViewData#dc0242c8 bot:InputUser random_id:long button_text:string data:string = Updates; +messages.transcribeAudio#269e9a49 peer:InputPeer msg_id:int = messages.TranscribedAudio; +messages.rateTranscribedAudio#7f1d072f peer:InputPeer msg_id:int transcription_id:long good:Bool = Bool; +messages.getCustomEmojiDocuments#d9ab0f54 document_id:Vector = Vector; +messages.getEmojiStickers#fbfca18f hash:long = messages.AllStickers; +messages.getFeaturedEmojiStickers#ecf6736 hash:long = messages.FeaturedStickers; +messages.reportReaction#3f64c076 peer:InputPeer id:int reaction_peer:InputPeer = Bool; +messages.getTopReactions#bb8125ba limit:int hash:long = messages.Reactions; +messages.getRecentReactions#39461db2 limit:int hash:long = messages.Reactions; +messages.clearRecentReactions#9dfeefb4 = Bool; +messages.getExtendedMedia#84f80814 peer:InputPeer id:Vector = Updates; +messages.setDefaultHistoryTTL#9eb51445 period:int = Bool; +messages.getDefaultHistoryTTL#658b7188 = DefaultHistoryTTL; +messages.sendBotRequestedPeer#6c5cf2a7 flags:# peer:InputPeer msg_id:flags.0?int webapp_req_id:flags.1?string button_id:int requested_peers:Vector = Updates; +messages.getEmojiGroups#7488ce5b hash:int = messages.EmojiGroups; +messages.getEmojiStatusGroups#2ecd56cd hash:int = messages.EmojiGroups; +messages.getEmojiProfilePhotoGroups#21a548f3 hash:int = messages.EmojiGroups; +messages.searchCustomEmoji#2c11c0d7 emoticon:string hash:long = EmojiList; +messages.togglePeerTranslations#e47cb579 flags:# disabled:flags.0?true peer:InputPeer = Bool; +messages.getBotApp#34fdc5c3 app:InputBotApp hash:long = messages.BotApp; +messages.requestAppWebView#53618bce flags:# write_allowed:flags.0?true compact:flags.7?true fullscreen:flags.8?true peer:InputPeer app:InputBotApp start_param:flags.1?string theme_params:flags.2?DataJSON platform:string = WebViewResult; +messages.setChatWallPaper#8ffacae1 flags:# for_both:flags.3?true revert:flags.4?true peer:InputPeer wallpaper:flags.0?InputWallPaper settings:flags.2?WallPaperSettings id:flags.1?int = Updates; +messages.searchEmojiStickerSets#92b4494c flags:# exclude_featured:flags.0?true q:string hash:long = messages.FoundStickerSets; +messages.getSavedDialogs#1e91fc99 flags:# exclude_pinned:flags.0?true parent_peer:flags.1?InputPeer offset_date:int offset_id:int offset_peer:InputPeer limit:int hash:long = messages.SavedDialogs; +messages.getSavedHistory#998ab009 flags:# parent_peer:flags.0?InputPeer peer:InputPeer offset_id:int offset_date:int add_offset:int limit:int max_id:int min_id:int hash:long = messages.Messages; +messages.deleteSavedHistory#4dc5085f flags:# parent_peer:flags.0?InputPeer peer:InputPeer max_id:int min_date:flags.2?int max_date:flags.3?int = messages.AffectedHistory; +messages.getPinnedSavedDialogs#d63d94e0 = messages.SavedDialogs; +messages.toggleSavedDialogPin#ac81bbde flags:# pinned:flags.0?true peer:InputDialogPeer = Bool; +messages.reorderPinnedSavedDialogs#8b716587 flags:# force:flags.0?true order:Vector = Bool; +messages.getSavedReactionTags#3637e05b flags:# peer:flags.0?InputPeer hash:long = messages.SavedReactionTags; +messages.updateSavedReactionTag#60297dec flags:# reaction:Reaction title:flags.0?string = Bool; +messages.getDefaultTagReactions#bdf93428 hash:long = messages.Reactions; +messages.getOutboxReadDate#8c4bfe5d peer:InputPeer msg_id:int = OutboxReadDate; +messages.getQuickReplies#d483f2a8 hash:long = messages.QuickReplies; +messages.reorderQuickReplies#60331907 order:Vector = Bool; +messages.checkQuickReplyShortcut#f1d0fbd3 shortcut:string = Bool; +messages.editQuickReplyShortcut#5c003cef shortcut_id:int shortcut:string = Bool; +messages.deleteQuickReplyShortcut#3cc04740 shortcut_id:int = Bool; +messages.getQuickReplyMessages#94a495c3 flags:# shortcut_id:int id:flags.0?Vector hash:long = messages.Messages; +messages.sendQuickReplyMessages#6c750de1 peer:InputPeer shortcut_id:int id:Vector random_id:Vector = Updates; +messages.deleteQuickReplyMessages#e105e910 shortcut_id:int id:Vector = Updates; +messages.toggleDialogFilterTags#fd2dda49 enabled:Bool = Bool; +messages.getMyStickers#d0b5e1fc offset_id:long limit:int = messages.MyStickers; +messages.getEmojiStickerGroups#1dd840f5 hash:int = messages.EmojiGroups; +messages.getAvailableEffects#dea20a39 hash:int = messages.AvailableEffects; +messages.editFactCheck#589ee75 peer:InputPeer msg_id:int text:TextWithEntities = Updates; +messages.deleteFactCheck#d1da940c peer:InputPeer msg_id:int = Updates; +messages.getFactCheck#b9cdc5ee peer:InputPeer msg_id:Vector = Vector; +messages.requestMainWebView#c9e01e7b flags:# compact:flags.7?true fullscreen:flags.8?true peer:InputPeer bot:InputUser start_param:flags.1?string theme_params:flags.0?DataJSON platform:string = WebViewResult; +messages.sendPaidReaction#58bbcb50 flags:# peer:InputPeer msg_id:int count:int random_id:long private:flags.0?PaidReactionPrivacy = Updates; +messages.togglePaidReactionPrivacy#435885b5 peer:InputPeer msg_id:int private:PaidReactionPrivacy = Bool; +messages.getPaidReactionPrivacy#472455aa = Updates; +messages.viewSponsoredMessage#269e3643 random_id:bytes = Bool; +messages.clickSponsoredMessage#8235057e flags:# media:flags.0?true fullscreen:flags.1?true random_id:bytes = Bool; +messages.reportSponsoredMessage#12cbf0c4 random_id:bytes option:bytes = channels.SponsoredMessageReportResult; +messages.getSponsoredMessages#3d6ce850 flags:# peer:InputPeer msg_id:flags.0?int = messages.SponsoredMessages; +messages.savePreparedInlineMessage#f21f7f2f flags:# result:InputBotInlineResult user_id:InputUser peer_types:flags.0?Vector = messages.BotPreparedInlineMessage; +messages.getPreparedInlineMessage#857ebdb8 bot:InputUser id:string = messages.PreparedInlineMessage; +messages.searchStickers#29b1c66a flags:# emojis:flags.0?true q:string emoticon:string lang_code:Vector offset:int limit:int hash:long = messages.FoundStickers; +messages.reportMessagesDelivery#5a6d7395 flags:# push:flags.0?true peer:InputPeer id:Vector = Bool; +messages.getSavedDialogsByID#6f6f9c96 flags:# parent_peer:flags.1?InputPeer ids:Vector = messages.SavedDialogs; +messages.readSavedHistory#ba4a3b5b parent_peer:InputPeer peer:InputPeer max_id:int = Bool; +messages.toggleTodoCompleted#d3e03124 peer:InputPeer msg_id:int completed:Vector incompleted:Vector = Updates; +messages.appendTodoList#21a61057 peer:InputPeer msg_id:int list:Vector = Updates; +messages.toggleSuggestedPostApproval#8107455c flags:# reject:flags.1?true peer:InputPeer msg_id:int schedule_date:flags.0?int reject_comment:flags.2?string = Updates; +messages.getForumTopics#3ba47bff flags:# peer:InputPeer q:flags.0?string offset_date:int offset_id:int offset_topic:int limit:int = messages.ForumTopics; +messages.getForumTopicsByID#af0a4a08 peer:InputPeer topics:Vector = messages.ForumTopics; +messages.editForumTopic#cecc1134 flags:# peer:InputPeer topic_id:int title:flags.0?string icon_emoji_id:flags.1?long closed:flags.2?Bool hidden:flags.3?Bool = Updates; +messages.updatePinnedForumTopic#175df251 peer:InputPeer topic_id:int pinned:Bool = Updates; +messages.reorderPinnedForumTopics#e7841f0 flags:# force:flags.0?true peer:InputPeer order:Vector = Updates; +messages.createForumTopic#2f98c3d5 flags:# title_missing:flags.4?true peer:InputPeer title:string icon_color:flags.0?int icon_emoji_id:flags.3?long random_id:long send_as:flags.2?InputPeer = Updates; +messages.deleteTopicHistory#d2816f10 peer:InputPeer top_msg_id:int = messages.AffectedHistory; +messages.getEmojiGameInfo#fb7e8ca7 = messages.EmojiGameInfo; +messages.summarizeText#abbbd346 flags:# peer:InputPeer id:int to_lang:flags.0?string tone:flags.2?string = TextWithEntities; +messages.editChatCreator#f743b857 peer:InputPeer user_id:InputUser password:InputCheckPasswordSRP = Updates; +messages.getFutureChatCreatorAfterLeave#3b7d0ea6 peer:InputPeer = User; +messages.editChatParticipantRank#a00f32b0 peer:InputPeer participant:InputPeer rank:string = Updates; +messages.declineUrlAuth#35436bbc url:string = Bool; +messages.checkUrlAuthMatchCode#c9a47b0b url:string match_code:string = Bool; +messages.composeMessageWithAI#daecc589 flags:# proofread:flags.0?true emojify:flags.3?true text:TextWithEntities translate_to_lang:flags.1?string tone:flags.2?InputAiComposeTone = messages.ComposedMessageWithAI; +messages.reportReadMetrics#4067c5e6 peer:InputPeer metrics:Vector = Bool; +messages.reportMusicListen#ddbcd819 id:InputDocument listened_duration:int = Bool; +messages.addPollAnswer#19bc4b6d peer:InputPeer msg_id:int answer:PollAnswer = Updates; +messages.deletePollAnswer#ac8505a5 peer:InputPeer msg_id:int option:bytes = Updates; +messages.getUnreadPollVotes#43286cf2 flags:# peer:InputPeer top_msg_id:flags.0?int offset_id:int add_offset:int limit:int max_id:int min_id:int = messages.Messages; +messages.readPollVotes#1720b4d8 flags:# peer:InputPeer top_msg_id:flags.0?int = messages.AffectedHistory; +messages.setBotGuestChatResult#b8f106e3 query_id:long result:InputBotInlineResult = InputBotInlineMessageID; +messages.deleteParticipantReactions#a0b80cf8 peer:InputPeer participant:InputPeer = Bool; +messages.deleteParticipantReaction#e3b7f82c peer:InputPeer msg_id:int participant:InputPeer = Updates; +messages.getPersonalChannelHistory#55fb0996 user_id:InputUser limit:int max_id:int min_id:int hash:long = messages.Messages; + +updates.getState#edd4882a = updates.State; +updates.getDifference#19c2f763 flags:# pts:int pts_limit:flags.1?int pts_total_limit:flags.0?int date:int qts:int qts_limit:flags.2?int = updates.Difference; +updates.getChannelDifference#3173d78 flags:# force:flags.0?true channel:InputChannel filter:ChannelMessagesFilter pts:int limit:int = updates.ChannelDifference; + +photos.updateProfilePhoto#9e82039 flags:# fallback:flags.0?true bot:flags.1?InputUser id:InputPhoto = photos.Photo; +photos.uploadProfilePhoto#388a3b5 flags:# fallback:flags.3?true bot:flags.5?InputUser file:flags.0?InputFile video:flags.1?InputFile video_start_ts:flags.2?double video_emoji_markup:flags.4?VideoSize = photos.Photo; +photos.deletePhotos#87cf7f2f id:Vector = Vector; +photos.getUserPhotos#91cd32a8 user_id:InputUser offset:int max_id:long limit:int = photos.Photos; +photos.uploadContactProfilePhoto#e14c4a71 flags:# suggest:flags.3?true save:flags.4?true user_id:InputUser file:flags.0?InputFile video:flags.1?InputFile video_start_ts:flags.2?double video_emoji_markup:flags.5?VideoSize = photos.Photo; + +upload.saveFilePart#b304a621 file_id:long file_part:int bytes:bytes = Bool; +upload.getFile#be5335be flags:# precise:flags.0?true cdn_supported:flags.1?true location:InputFileLocation offset:long limit:int = upload.File; +upload.saveBigFilePart#de7b673d file_id:long file_part:int file_total_parts:int bytes:bytes = Bool; +upload.getWebFile#24e6818d location:InputWebFileLocation offset:int limit:int = upload.WebFile; +upload.getCdnFile#395f69da file_token:bytes offset:long limit:int = upload.CdnFile; +upload.reuploadCdnFile#9b2754a8 file_token:bytes request_token:bytes = Vector; +upload.getCdnFileHashes#91dc3f31 file_token:bytes offset:long = Vector; +upload.getFileHashes#9156982a location:InputFileLocation offset:long = Vector; + +help.getConfig#c4f9186b = Config; +help.getNearestDc#1fb33026 = NearestDc; +help.getAppUpdate#522d5a7d source:string = help.AppUpdate; +help.getInviteText#4d392343 = help.InviteText; +help.getSupport#9cdf08cd = help.Support; +help.setBotUpdatesStatus#ec22cfcd pending_updates_count:int message:string = Bool; +help.getCdnConfig#52029342 = CdnConfig; +help.getRecentMeUrls#3dc0f114 referer:string = help.RecentMeUrls; +help.getTermsOfServiceUpdate#2ca51fd1 = help.TermsOfServiceUpdate; +help.acceptTermsOfService#ee72f79a id:DataJSON = Bool; +help.getDeepLinkInfo#3fedc75f path:string = help.DeepLinkInfo; +help.getAppConfig#61e3f854 hash:int = help.AppConfig; +help.saveAppLog#6f02f748 events:Vector = Bool; +help.getPassportConfig#c661ad08 hash:int = help.PassportConfig; +help.getSupportName#d360e72c = help.SupportName; +help.getUserInfo#38a08d3 user_id:InputUser = help.UserInfo; +help.editUserInfo#66b91b70 user_id:InputUser message:string entities:Vector = help.UserInfo; +help.getPromoData#c0977421 = help.PromoData; +help.hidePromoData#1e251c95 peer:InputPeer = Bool; +help.dismissSuggestion#f50dbaa1 peer:InputPeer suggestion:string = Bool; +help.getCountriesList#735787a8 lang_code:string hash:int = help.CountriesList; +help.getPremiumPromo#b81b93d4 = help.PremiumPromo; +help.getPeerColors#da80f42f hash:int = help.PeerColors; +help.getPeerProfileColors#abcfa9fd hash:int = help.PeerColors; +help.getTimezonesList#49b30240 hash:int = help.TimezonesList; + +channels.readHistory#cc104937 channel:InputChannel max_id:int = Bool; +channels.deleteMessages#84c1fd4e channel:InputChannel id:Vector = messages.AffectedMessages; +channels.reportSpam#f44a8315 channel:InputChannel participant:InputPeer id:Vector = Bool; +channels.getMessages#ad8c9a23 channel:InputChannel id:Vector = messages.Messages; +channels.getParticipants#77ced9d0 channel:InputChannel filter:ChannelParticipantsFilter offset:int limit:int hash:long = channels.ChannelParticipants; +channels.getParticipant#a0ab6cc6 channel:InputChannel participant:InputPeer = channels.ChannelParticipant; +channels.getChannels#a7f6bbb id:Vector = messages.Chats; +channels.getFullChannel#8736a09 channel:InputChannel = messages.ChatFull; +channels.createChannel#91006707 flags:# broadcast:flags.0?true megagroup:flags.1?true for_import:flags.3?true forum:flags.5?true title:string about:string geo_point:flags.2?InputGeoPoint address:flags.2?string ttl_period:flags.4?int = Updates; +channels.editAdmin#9a98ad68 flags:# channel:InputChannel user_id:InputUser admin_rights:ChatAdminRights rank:flags.0?string = Updates; +channels.editTitle#566decd0 channel:InputChannel title:string = Updates; +channels.editPhoto#f12e57c9 channel:InputChannel photo:InputChatPhoto = Updates; +channels.checkUsername#10e6bd2c channel:InputChannel username:string = Bool; +channels.updateUsername#3514b3de channel:InputChannel username:string = Bool; +channels.joinChannel#24b524c5 channel:InputChannel = Updates; +channels.leaveChannel#f836aa95 channel:InputChannel = Updates; +channels.inviteToChannel#c9e33d54 channel:InputChannel users:Vector = messages.InvitedUsers; +channels.deleteChannel#c0111fe3 channel:InputChannel = Updates; +channels.exportMessageLink#e63fadeb flags:# grouped:flags.0?true thread:flags.1?true channel:InputChannel id:int = ExportedMessageLink; +channels.toggleSignatures#418d549c flags:# signatures_enabled:flags.0?true profiles_enabled:flags.1?true channel:InputChannel = Updates; +channels.getAdminedPublicChannels#f8b036af flags:# by_location:flags.0?true check_limit:flags.1?true for_personal:flags.2?true = messages.Chats; +channels.editBanned#96e6cd81 channel:InputChannel participant:InputPeer banned_rights:ChatBannedRights = Updates; +channels.getAdminLog#33ddf480 flags:# channel:InputChannel q:string events_filter:flags.0?ChannelAdminLogEventsFilter admins:flags.1?Vector max_id:long min_id:long limit:int = channels.AdminLogResults; +channels.setStickers#ea8ca4f9 channel:InputChannel stickerset:InputStickerSet = Bool; +channels.readMessageContents#eab5dc38 channel:InputChannel id:Vector = Bool; +channels.deleteHistory#9baa9647 flags:# for_everyone:flags.0?true channel:InputChannel max_id:int = Updates; +channels.togglePreHistoryHidden#eabbb94c channel:InputChannel enabled:Bool = Updates; +channels.getLeftChannels#8341ecc0 offset:int = messages.Chats; +channels.getGroupsForDiscussion#f5dad378 = messages.Chats; +channels.setDiscussionGroup#40582bb2 broadcast:InputChannel group:InputChannel = Bool; +channels.editLocation#58e63f6d channel:InputChannel geo_point:InputGeoPoint address:string = Bool; +channels.toggleSlowMode#edd49ef0 channel:InputChannel seconds:int = Updates; +channels.getInactiveChannels#11e831ee = messages.InactiveChats; +channels.convertToGigagroup#b290c69 channel:InputChannel = Updates; +channels.getSendAs#e785a43f flags:# for_paid_reactions:flags.0?true for_live_stories:flags.1?true peer:InputPeer = channels.SendAsPeers; +channels.deleteParticipantHistory#367544db channel:InputChannel participant:InputPeer = messages.AffectedHistory; +channels.toggleJoinToSend#e4cb9580 channel:InputChannel enabled:Bool = Updates; +channels.toggleJoinRequest#4c2985b6 channel:InputChannel enabled:Bool = Updates; +channels.reorderUsernames#b45ced1d channel:InputChannel order:Vector = Bool; +channels.toggleUsername#50f24105 channel:InputChannel username:string active:Bool = Bool; +channels.deactivateAllUsernames#a245dd3 channel:InputChannel = Bool; +channels.toggleForum#3ff75734 channel:InputChannel enabled:Bool tabs:Bool = Updates; +channels.toggleAntiSpam#68f3e4eb channel:InputChannel enabled:Bool = Updates; +channels.reportAntiSpamFalsePositive#a850a693 channel:InputChannel msg_id:int = Bool; +channels.toggleParticipantsHidden#6a6e7854 channel:InputChannel enabled:Bool = Updates; +channels.updateColor#d8aa3671 flags:# for_profile:flags.1?true channel:InputChannel color:flags.2?int background_emoji_id:flags.0?long = Updates; +channels.toggleViewForumAsMessages#9738bb15 channel:InputChannel enabled:Bool = Updates; +channels.getChannelRecommendations#25a71742 flags:# channel:flags.0?InputChannel = messages.Chats; +channels.updateEmojiStatus#f0d3e6a8 channel:InputChannel emoji_status:EmojiStatus = Updates; +channels.setBoostsToUnblockRestrictions#ad399cee channel:InputChannel boosts:int = Updates; +channels.setEmojiStickers#3cd930b7 channel:InputChannel stickerset:InputStickerSet = Bool; +channels.restrictSponsoredMessages#9ae91519 channel:InputChannel restricted:Bool = Updates; +channels.searchPosts#f2c4f24d flags:# hashtag:flags.0?string query:flags.1?string offset_rate:int offset_peer:InputPeer offset_id:int limit:int allow_paid_stars:flags.2?long = messages.Messages; +channels.updatePaidMessagesPrice#4b12327b flags:# broadcast_messages_allowed:flags.0?true channel:InputChannel send_paid_messages_stars:long = Updates; +channels.toggleAutotranslation#167fc0a1 channel:InputChannel enabled:Bool = Updates; +channels.getMessageAuthor#ece2a0e6 channel:InputChannel id:int = User; +channels.checkSearchPostsFlood#22567115 flags:# query:flags.0?string = SearchPostsFlood; +channels.setMainProfileTab#3583fcb1 channel:InputChannel tab:ProfileTab = Bool; + +bots.sendCustomRequest#aa2769ed custom_method:string params:DataJSON = DataJSON; +bots.answerWebhookJSONQuery#e6213f4d query_id:long data:DataJSON = Bool; +bots.setBotCommands#517165a scope:BotCommandScope lang_code:string commands:Vector = Bool; +bots.resetBotCommands#3d8de0f9 scope:BotCommandScope lang_code:string = Bool; +bots.getBotCommands#e34c0dd6 scope:BotCommandScope lang_code:string = Vector; +bots.setBotMenuButton#4504d54f user_id:InputUser button:BotMenuButton = Bool; +bots.getBotMenuButton#9c60eb28 user_id:InputUser = BotMenuButton; +bots.setBotBroadcastDefaultAdminRights#788464e1 admin_rights:ChatAdminRights = Bool; +bots.setBotGroupDefaultAdminRights#925ec9ea admin_rights:ChatAdminRights = Bool; +bots.setBotInfo#10cf3123 flags:# bot:flags.2?InputUser lang_code:string name:flags.3?string about:flags.0?string description:flags.1?string = Bool; +bots.getBotInfo#dcd914fd flags:# bot:flags.0?InputUser lang_code:string = bots.BotInfo; +bots.reorderUsernames#9709b1c2 bot:InputUser order:Vector = Bool; +bots.toggleUsername#53ca973 bot:InputUser username:string active:Bool = Bool; +bots.canSendMessage#1359f4e6 bot:InputUser = Bool; +bots.allowSendMessage#f132e3ef bot:InputUser = Updates; +bots.invokeWebViewCustomMethod#87fc5e7 bot:InputUser custom_method:string params:DataJSON = DataJSON; +bots.getPopularAppBots#c2510192 offset:string limit:int = bots.PopularAppBots; +bots.addPreviewMedia#17aeb75a bot:InputUser lang_code:string media:InputMedia = BotPreviewMedia; +bots.editPreviewMedia#8525606f bot:InputUser lang_code:string media:InputMedia new_media:InputMedia = BotPreviewMedia; +bots.deletePreviewMedia#2d0135b3 bot:InputUser lang_code:string media:Vector = Bool; +bots.reorderPreviewMedias#b627f3aa bot:InputUser lang_code:string order:Vector = Bool; +bots.getPreviewInfo#423ab3ad bot:InputUser lang_code:string = bots.PreviewInfo; +bots.getPreviewMedias#a2a5594d bot:InputUser = Vector; +bots.updateUserEmojiStatus#ed9f30c5 user_id:InputUser emoji_status:EmojiStatus = Bool; +bots.toggleUserEmojiStatusPermission#6de6392 bot:InputUser enabled:Bool = Bool; +bots.checkDownloadFileParams#50077589 bot:InputUser file_name:string url:string = Bool; +bots.getAdminedBots#b0711d83 = Vector; +bots.updateStarRefProgram#778b5ab3 flags:# bot:InputUser commission_permille:int duration_months:flags.0?int = StarRefProgram; +bots.setCustomVerification#8b89dfbd flags:# enabled:flags.1?true bot:flags.0?InputUser peer:InputPeer custom_description:flags.2?string = Bool; +bots.getBotRecommendations#a1b70815 bot:InputUser = users.Users; +bots.checkUsername#87f2219b username:string = Bool; +bots.createBot#e5b17f2b flags:# via_deeplink:flags.0?true name:string username:string manager_id:InputUser = User; +bots.exportBotToken#bd0d99eb bot:InputUser revoke:Bool = bots.ExportedBotToken; +bots.requestWebViewButton#31a2a35e user_id:InputUser button:KeyboardButton = bots.RequestedButton; +bots.getRequestedWebViewButton#bf25b7f3 bot:InputUser webapp_req_id:string = KeyboardButton; +bots.getAccessSettings#213853a3 bot:InputUser = bots.AccessSettings; +bots.editAccessSettings#31813cd8 flags:# restricted:flags.0?true bot:InputUser add_users:flags.1?Vector = Bool; + +payments.getPaymentForm#37148dbb flags:# invoice:InputInvoice theme_params:flags.0?DataJSON = payments.PaymentForm; +payments.getPaymentReceipt#2478d1cc peer:InputPeer msg_id:int = payments.PaymentReceipt; +payments.validateRequestedInfo#b6c8f12b flags:# save:flags.0?true invoice:InputInvoice info:PaymentRequestedInfo = payments.ValidatedRequestedInfo; +payments.sendPaymentForm#2d03522f flags:# form_id:long invoice:InputInvoice requested_info_id:flags.0?string shipping_option_id:flags.1?string credentials:InputPaymentCredentials tip_amount:flags.2?long = payments.PaymentResult; +payments.getSavedInfo#227d824b = payments.SavedInfo; +payments.clearSavedInfo#d83d70c1 flags:# credentials:flags.0?true info:flags.1?true = Bool; +payments.getBankCardData#2e79d779 number:string = payments.BankCardData; +payments.exportInvoice#f91b065 invoice_media:InputMedia = payments.ExportedInvoice; +payments.assignAppStoreTransaction#80ed747d receipt:bytes purpose:InputStorePaymentPurpose = Updates; +payments.assignPlayMarketTransaction#dffd50d3 receipt:DataJSON purpose:InputStorePaymentPurpose = Updates; +payments.getPremiumGiftCodeOptions#2757ba54 flags:# boost_peer:flags.0?InputPeer = Vector; +payments.checkGiftCode#8e51b4c1 slug:string = payments.CheckedGiftCode; +payments.applyGiftCode#f6e26854 slug:string = Updates; +payments.getGiveawayInfo#f4239425 peer:InputPeer msg_id:int = payments.GiveawayInfo; +payments.launchPrepaidGiveaway#5ff58f20 peer:InputPeer giveaway_id:long purpose:InputStorePaymentPurpose = Updates; +payments.getStarsTopupOptions#c00ec7d3 = Vector; +payments.getStarsStatus#4ea9b3bf flags:# ton:flags.0?true peer:InputPeer = payments.StarsStatus; +payments.getStarsTransactions#69da4557 flags:# inbound:flags.0?true outbound:flags.1?true ascending:flags.2?true ton:flags.4?true subscription_id:flags.3?string peer:InputPeer offset:string limit:int = payments.StarsStatus; +payments.sendStarsForm#7998c914 form_id:long invoice:InputInvoice = payments.PaymentResult; +payments.refundStarsCharge#25ae8f4a user_id:InputUser charge_id:string = Updates; +payments.getStarsRevenueStats#d91ffad6 flags:# dark:flags.0?true ton:flags.1?true peer:InputPeer = payments.StarsRevenueStats; +payments.getStarsRevenueWithdrawalUrl#2433dc92 flags:# ton:flags.0?true peer:InputPeer amount:flags.1?long password:InputCheckPasswordSRP = payments.StarsRevenueWithdrawalUrl; +payments.getStarsRevenueAdsAccountUrl#d1d7efc5 peer:InputPeer = payments.StarsRevenueAdsAccountUrl; +payments.getStarsTransactionsByID#2dca16b8 flags:# ton:flags.0?true peer:InputPeer id:Vector = payments.StarsStatus; +payments.getStarsGiftOptions#d3c96bc8 flags:# user_id:flags.0?InputUser = Vector; +payments.getStarsSubscriptions#32512c5 flags:# missing_balance:flags.0?true peer:InputPeer offset:string = payments.StarsStatus; +payments.changeStarsSubscription#c7770878 flags:# peer:InputPeer subscription_id:string canceled:flags.0?Bool = Bool; +payments.fulfillStarsSubscription#cc5bebb3 peer:InputPeer subscription_id:string = Bool; +payments.getStarsGiveawayOptions#bd1efd3e = Vector; +payments.getStarGifts#c4563590 hash:int = payments.StarGifts; +payments.saveStarGift#2a2a697c flags:# unsave:flags.0?true stargift:InputSavedStarGift = Bool; +payments.convertStarGift#74bf076b stargift:InputSavedStarGift = Bool; +payments.botCancelStarsSubscription#6dfa0622 flags:# restore:flags.0?true user_id:InputUser charge_id:string = Bool; +payments.getConnectedStarRefBots#5869a553 flags:# peer:InputPeer offset_date:flags.2?int offset_link:flags.2?string limit:int = payments.ConnectedStarRefBots; +payments.getConnectedStarRefBot#b7d998f0 peer:InputPeer bot:InputUser = payments.ConnectedStarRefBots; +payments.getSuggestedStarRefBots#d6b48f7 flags:# order_by_revenue:flags.0?true order_by_date:flags.1?true peer:InputPeer offset:string limit:int = payments.SuggestedStarRefBots; +payments.connectStarRefBot#7ed5348a peer:InputPeer bot:InputUser = payments.ConnectedStarRefBots; +payments.editConnectedStarRefBot#e4fca4a3 flags:# revoked:flags.0?true peer:InputPeer link:string = payments.ConnectedStarRefBots; +payments.getStarGiftUpgradePreview#9c9abcb1 gift_id:long = payments.StarGiftUpgradePreview; +payments.upgradeStarGift#aed6e4f5 flags:# keep_original_details:flags.0?true stargift:InputSavedStarGift = Updates; +payments.transferStarGift#7f18176a stargift:InputSavedStarGift to_id:InputPeer = Updates; +payments.getUniqueStarGift#a1974d72 slug:string = payments.UniqueStarGift; +payments.getSavedStarGifts#a319e569 flags:# exclude_unsaved:flags.0?true exclude_saved:flags.1?true exclude_unlimited:flags.2?true exclude_unique:flags.4?true sort_by_value:flags.5?true exclude_upgradable:flags.7?true exclude_unupgradable:flags.8?true peer_color_available:flags.9?true exclude_hosted:flags.10?true peer:InputPeer collection_id:flags.6?int offset:string limit:int = payments.SavedStarGifts; +payments.getSavedStarGift#b455a106 stargift:Vector = payments.SavedStarGifts; +payments.getStarGiftWithdrawalUrl#d06e93a8 stargift:InputSavedStarGift password:InputCheckPasswordSRP = payments.StarGiftWithdrawalUrl; +payments.toggleChatStarGiftNotifications#60eaefa1 flags:# enabled:flags.0?true peer:InputPeer = Bool; +payments.toggleStarGiftsPinnedToTop#1513e7b0 peer:InputPeer stargift:Vector = Bool; +payments.canPurchaseStore#4fdc5ea7 purpose:InputStorePaymentPurpose = Bool; +payments.getResaleStarGifts#7a5fa236 flags:# sort_by_price:flags.1?true sort_by_num:flags.2?true for_craft:flags.4?true stars_only:flags.5?true attributes_hash:flags.0?long gift_id:long attributes:flags.3?Vector offset:string limit:int = payments.ResaleStarGifts; +payments.updateStarGiftPrice#edbe6ccb stargift:InputSavedStarGift resell_amount:StarsAmount = Updates; +payments.createStarGiftCollection#1f4a0e87 peer:InputPeer title:string stargift:Vector = StarGiftCollection; +payments.updateStarGiftCollection#4fddbee7 flags:# peer:InputPeer collection_id:int title:flags.0?string delete_stargift:flags.1?Vector add_stargift:flags.2?Vector order:flags.3?Vector = StarGiftCollection; +payments.reorderStarGiftCollections#c32af4cc peer:InputPeer order:Vector = Bool; +payments.deleteStarGiftCollection#ad5648e8 peer:InputPeer collection_id:int = Bool; +payments.getStarGiftCollections#981b91dd peer:InputPeer hash:long = payments.StarGiftCollections; +payments.getUniqueStarGiftValueInfo#4365af6b slug:string = payments.UniqueStarGiftValueInfo; +payments.checkCanSendGift#c0c4edc9 gift_id:long = payments.CheckCanSendGiftResult; +payments.getStarGiftAuctionState#5c9ff4d6 auction:InputStarGiftAuction version:int = payments.StarGiftAuctionState; +payments.getStarGiftAuctionAcquiredGifts#6ba2cbec gift_id:long = payments.StarGiftAuctionAcquiredGifts; +payments.getStarGiftActiveAuctions#a5d0514d hash:long = payments.StarGiftActiveAuctions; +payments.resolveStarGiftOffer#e9ce781c flags:# decline:flags.0?true offer_msg_id:int = Updates; +payments.sendStarGiftOffer#8fb86b41 flags:# peer:InputPeer slug:string price:StarsAmount duration:int random_id:long allow_paid_stars:flags.0?long = Updates; +payments.getStarGiftUpgradeAttributes#6d038b58 gift_id:long = payments.StarGiftUpgradeAttributes; +payments.getCraftStarGifts#fd05dd00 gift_id:long offset:string limit:int = payments.SavedStarGifts; +payments.craftStarGift#b0f9684f stargift:Vector = Updates; + +stickers.createStickerSet#9021ab67 flags:# masks:flags.0?true emojis:flags.5?true text_color:flags.6?true user_id:InputUser title:string short_name:string thumb:flags.2?InputDocument stickers:Vector software:flags.3?string = messages.StickerSet; +stickers.removeStickerFromSet#f7760f51 sticker:InputDocument = messages.StickerSet; +stickers.changeStickerPosition#ffb6d4ca sticker:InputDocument position:int = messages.StickerSet; +stickers.addStickerToSet#8653febe stickerset:InputStickerSet sticker:InputStickerSetItem = messages.StickerSet; +stickers.setStickerSetThumb#a76a5392 flags:# stickerset:InputStickerSet thumb:flags.0?InputDocument thumb_document_id:flags.1?long = messages.StickerSet; +stickers.checkShortName#284b3639 short_name:string = Bool; +stickers.suggestShortName#4dafc503 title:string = stickers.SuggestedShortName; +stickers.changeSticker#f5537ebc flags:# sticker:InputDocument emoji:flags.0?string mask_coords:flags.1?MaskCoords keywords:flags.2?string = messages.StickerSet; +stickers.renameStickerSet#124b1c00 stickerset:InputStickerSet title:string = messages.StickerSet; +stickers.deleteStickerSet#87704394 stickerset:InputStickerSet = Bool; +stickers.replaceSticker#4696459a sticker:InputDocument new_sticker:InputStickerSetItem = messages.StickerSet; + +phone.getCallConfig#55451fa9 = DataJSON; +phone.requestCall#42ff96ed flags:# video:flags.0?true user_id:InputUser random_id:int g_a_hash:bytes protocol:PhoneCallProtocol = phone.PhoneCall; +phone.acceptCall#3bd2b4a0 peer:InputPhoneCall g_b:bytes protocol:PhoneCallProtocol = phone.PhoneCall; +phone.confirmCall#2efe1722 peer:InputPhoneCall g_a:bytes key_fingerprint:long protocol:PhoneCallProtocol = phone.PhoneCall; +phone.receivedCall#17d54f61 peer:InputPhoneCall = Bool; +phone.discardCall#b2cbc1c0 flags:# video:flags.0?true peer:InputPhoneCall duration:int reason:PhoneCallDiscardReason connection_id:long = Updates; +phone.setCallRating#59ead627 flags:# user_initiative:flags.0?true peer:InputPhoneCall rating:int comment:string = Updates; +phone.saveCallDebug#277add7e peer:InputPhoneCall debug:DataJSON = Bool; +phone.sendSignalingData#ff7a9383 peer:InputPhoneCall data:bytes = Bool; +phone.createGroupCall#48cdc6d8 flags:# rtmp_stream:flags.2?true peer:InputPeer random_id:int title:flags.0?string schedule_date:flags.1?int = Updates; +phone.joinGroupCall#8fb53057 flags:# muted:flags.0?true video_stopped:flags.2?true call:InputGroupCall join_as:InputPeer invite_hash:flags.1?string public_key:flags.3?int256 block:flags.3?bytes params:DataJSON = Updates; +phone.leaveGroupCall#500377f9 call:InputGroupCall source:int = Updates; +phone.inviteToGroupCall#7b393160 call:InputGroupCall users:Vector = Updates; +phone.discardGroupCall#7a777135 call:InputGroupCall = Updates; +phone.toggleGroupCallSettings#974392f2 flags:# reset_invite_hash:flags.1?true call:InputGroupCall join_muted:flags.0?Bool messages_enabled:flags.2?Bool send_paid_messages_stars:flags.3?long = Updates; +phone.getGroupCall#41845db call:InputGroupCall limit:int = phone.GroupCall; +phone.getGroupParticipants#c558d8ab call:InputGroupCall ids:Vector sources:Vector offset:string limit:int = phone.GroupParticipants; +phone.checkGroupCall#b59cf977 call:InputGroupCall sources:Vector = Vector; +phone.toggleGroupCallRecord#f128c708 flags:# start:flags.0?true video:flags.2?true call:InputGroupCall title:flags.1?string video_portrait:flags.2?Bool = Updates; +phone.editGroupCallParticipant#a5273abf flags:# call:InputGroupCall participant:InputPeer muted:flags.0?Bool volume:flags.1?int raise_hand:flags.2?Bool video_stopped:flags.3?Bool video_paused:flags.4?Bool presentation_paused:flags.5?Bool = Updates; +phone.editGroupCallTitle#1ca6ac0a call:InputGroupCall title:string = Updates; +phone.getGroupCallJoinAs#ef7c213a peer:InputPeer = phone.JoinAsPeers; +phone.exportGroupCallInvite#e6aa647f flags:# can_self_unmute:flags.0?true call:InputGroupCall = phone.ExportedGroupCallInvite; +phone.toggleGroupCallStartSubscription#219c34e6 call:InputGroupCall subscribed:Bool = Updates; +phone.startScheduledGroupCall#5680e342 call:InputGroupCall = Updates; +phone.saveDefaultGroupCallJoinAs#575e1f8c peer:InputPeer join_as:InputPeer = Bool; +phone.joinGroupCallPresentation#cbea6bc4 call:InputGroupCall params:DataJSON = Updates; +phone.leaveGroupCallPresentation#1c50d144 call:InputGroupCall = Updates; +phone.getGroupCallStreamChannels#1ab21940 call:InputGroupCall = phone.GroupCallStreamChannels; +phone.getGroupCallStreamRtmpUrl#5af4c73a flags:# live_story:flags.0?true peer:InputPeer revoke:Bool = phone.GroupCallStreamRtmpUrl; +phone.saveCallLog#41248786 peer:InputPhoneCall file:InputFile = Bool; +phone.createConferenceCall#7d0444bb flags:# muted:flags.0?true video_stopped:flags.2?true join:flags.3?true random_id:int public_key:flags.3?int256 block:flags.3?bytes params:flags.3?DataJSON = Updates; +phone.deleteConferenceCallParticipants#8ca60525 flags:# only_left:flags.0?true kick:flags.1?true call:InputGroupCall ids:Vector block:bytes = Updates; +phone.sendConferenceCallBroadcast#c6701900 call:InputGroupCall block:bytes = Updates; +phone.inviteConferenceCallParticipant#bcf22685 flags:# video:flags.0?true call:InputGroupCall user_id:InputUser = Updates; +phone.declineConferenceCallInvite#3c479971 msg_id:int = Updates; +phone.getGroupCallChainBlocks#ee9f88a6 call:InputGroupCall sub_chain_id:int offset:int limit:int = Updates; +phone.sendGroupCallMessage#b1d11410 flags:# call:InputGroupCall random_id:long message:TextWithEntities allow_paid_stars:flags.0?long send_as:flags.1?InputPeer = Updates; +phone.sendGroupCallEncryptedMessage#e5afa56d call:InputGroupCall encrypted_message:bytes = Bool; +phone.deleteGroupCallMessages#f64f54f7 flags:# report_spam:flags.0?true call:InputGroupCall messages:Vector = Updates; +phone.deleteGroupCallParticipantMessages#1dbfeca0 flags:# report_spam:flags.0?true call:InputGroupCall participant:InputPeer = Updates; +phone.getGroupCallStars#6f636302 call:InputGroupCall = phone.GroupCallStars; +phone.saveDefaultSendAs#4167add1 call:InputGroupCall send_as:InputPeer = Bool; + +langpack.getLangPack#f2f2330a lang_pack:string lang_code:string = LangPackDifference; +langpack.getStrings#efea3803 lang_pack:string lang_code:string keys:Vector = Vector; +langpack.getDifference#cd984aa5 lang_pack:string lang_code:string from_version:int = LangPackDifference; +langpack.getLanguages#42c6978f lang_pack:string = Vector; +langpack.getLanguage#6a596502 lang_pack:string lang_code:string = LangPackLanguage; + +folders.editPeerFolders#6847d0ab folder_peers:Vector = Updates; + +stats.getBroadcastStats#ab42441a flags:# dark:flags.0?true channel:InputChannel = stats.BroadcastStats; +stats.loadAsyncGraph#621d5fa0 flags:# token:string x:flags.0?long = StatsGraph; +stats.getMegagroupStats#dcdf8607 flags:# dark:flags.0?true channel:InputChannel = stats.MegagroupStats; +stats.getMessagePublicForwards#5f150144 channel:InputChannel msg_id:int offset:string limit:int = stats.PublicForwards; +stats.getMessageStats#b6e0a3f5 flags:# dark:flags.0?true channel:InputChannel msg_id:int = stats.MessageStats; +stats.getStoryStats#374fef40 flags:# dark:flags.0?true peer:InputPeer id:int = stats.StoryStats; +stats.getStoryPublicForwards#a6437ef6 peer:InputPeer id:int offset:string limit:int = stats.PublicForwards; +stats.getPollStats#c27dfa68 flags:# dark:flags.0?true peer:InputPeer msg_id:int = stats.PollStats; + +chatlists.exportChatlistInvite#8472478e chatlist:InputChatlist title:string peers:Vector = chatlists.ExportedChatlistInvite; +chatlists.deleteExportedInvite#719c5c5e chatlist:InputChatlist slug:string = Bool; +chatlists.editExportedInvite#653db63d flags:# chatlist:InputChatlist slug:string title:flags.1?string peers:flags.2?Vector = ExportedChatlistInvite; +chatlists.getExportedInvites#ce03da83 chatlist:InputChatlist = chatlists.ExportedInvites; +chatlists.checkChatlistInvite#41c10fff slug:string = chatlists.ChatlistInvite; +chatlists.joinChatlistInvite#a6b1e39a slug:string peers:Vector = Updates; +chatlists.getChatlistUpdates#89419521 chatlist:InputChatlist = chatlists.ChatlistUpdates; +chatlists.joinChatlistUpdates#e089f8f5 chatlist:InputChatlist peers:Vector = Updates; +chatlists.hideChatlistUpdates#66e486fb chatlist:InputChatlist = Bool; +chatlists.getLeaveChatlistSuggestions#fdbcd714 chatlist:InputChatlist = Vector; +chatlists.leaveChatlist#74fae13a chatlist:InputChatlist peers:Vector = Updates; + +stories.canSendStory#30eb63f0 peer:InputPeer = stories.CanSendStoryCount; +stories.sendStory#8f9e6898 flags:# pinned:flags.2?true noforwards:flags.4?true fwd_modified:flags.7?true peer:InputPeer media:InputMedia media_areas:flags.5?Vector caption:flags.0?string entities:flags.1?Vector privacy_rules:Vector random_id:long period:flags.3?int fwd_from_id:flags.6?InputPeer fwd_from_story:flags.6?int albums:flags.8?Vector music:flags.9?InputDocument = Updates; +stories.editStory#2c63a72b flags:# peer:InputPeer id:int media:flags.0?InputMedia media_areas:flags.3?Vector caption:flags.1?string entities:flags.1?Vector privacy_rules:flags.2?Vector music:flags.4?InputDocument = Updates; +stories.deleteStories#ae59db5f peer:InputPeer id:Vector = Vector; +stories.togglePinned#9a75a1ef peer:InputPeer id:Vector pinned:Bool = Vector; +stories.getAllStories#eeb0d625 flags:# next:flags.1?true hidden:flags.2?true state:flags.0?string = stories.AllStories; +stories.getPinnedStories#5821a5dc peer:InputPeer offset_id:int limit:int = stories.Stories; +stories.getStoriesArchive#b4352016 peer:InputPeer offset_id:int limit:int = stories.Stories; +stories.getStoriesByID#5774ca74 peer:InputPeer id:Vector = stories.Stories; +stories.toggleAllStoriesHidden#7c2557c4 hidden:Bool = Bool; +stories.readStories#a556dac8 peer:InputPeer max_id:int = Vector; +stories.incrementStoryViews#b2028afb peer:InputPeer id:Vector = Bool; +stories.getStoryViewsList#7ed23c57 flags:# just_contacts:flags.0?true reactions_first:flags.2?true forwards_first:flags.3?true peer:InputPeer q:flags.1?string id:int offset:string limit:int = stories.StoryViewsList; +stories.getStoriesViews#28e16cc8 peer:InputPeer id:Vector = stories.StoryViews; +stories.exportStoryLink#7b8def20 peer:InputPeer id:int = ExportedStoryLink; +stories.report#19d8eb45 peer:InputPeer id:Vector option:bytes message:string = ReportResult; +stories.activateStealthMode#57bbd166 flags:# past:flags.0?true future:flags.1?true = Updates; +stories.sendReaction#7fd736b2 flags:# add_to_recent:flags.0?true peer:InputPeer story_id:int reaction:Reaction = Updates; +stories.getPeerStories#2c4ada50 peer:InputPeer = stories.PeerStories; +stories.getAllReadPeerStories#9b5ae7f9 = Updates; +stories.getPeerMaxIDs#78499170 id:Vector = Vector; +stories.getChatsToSend#a56a8b60 = messages.Chats; +stories.togglePeerStoriesHidden#bd0415c4 peer:InputPeer hidden:Bool = Bool; +stories.getStoryReactionsList#b9b2881f flags:# forwards_first:flags.2?true peer:InputPeer id:int reaction:flags.0?Reaction offset:flags.1?string limit:int = stories.StoryReactionsList; +stories.togglePinnedToTop#b297e9b peer:InputPeer id:Vector = Bool; +stories.searchPosts#d1810907 flags:# hashtag:flags.0?string area:flags.1?MediaArea peer:flags.2?InputPeer offset:string limit:int = stories.FoundStories; +stories.createAlbum#a36396e5 peer:InputPeer title:string stories:Vector = StoryAlbum; +stories.updateAlbum#5e5259b6 flags:# peer:InputPeer album_id:int title:flags.0?string delete_stories:flags.1?Vector add_stories:flags.2?Vector order:flags.3?Vector = StoryAlbum; +stories.reorderAlbums#8535fbd9 peer:InputPeer order:Vector = Bool; +stories.deleteAlbum#8d3456d0 peer:InputPeer album_id:int = Bool; +stories.getAlbums#25b3eac7 peer:InputPeer hash:long = stories.Albums; +stories.getAlbumStories#ac806d61 peer:InputPeer album_id:int offset:int limit:int = stories.Stories; +stories.startLive#d069ccde flags:# pinned:flags.2?true noforwards:flags.4?true rtmp_stream:flags.5?true peer:InputPeer caption:flags.0?string entities:flags.1?Vector privacy_rules:Vector random_id:long messages_enabled:flags.6?Bool send_paid_messages_stars:flags.7?long = Updates; + +premium.getBoostsList#60f67660 flags:# gifts:flags.0?true peer:InputPeer offset:string limit:int = premium.BoostsList; +premium.getMyBoosts#be77b4a = premium.MyBoosts; +premium.applyBoost#6b7da746 flags:# slots:flags.0?Vector peer:InputPeer = premium.MyBoosts; +premium.getBoostsStatus#42f1f61 peer:InputPeer = premium.BoostsStatus; +premium.getUserBoosts#39854d1f peer:InputPeer user_id:InputUser = premium.BoostsList; + +smsjobs.isEligibleToJoin#edc39d0 = smsjobs.EligibilityToJoin; +smsjobs.join#a74ece2d = Bool; +smsjobs.leave#9898ad73 = Bool; +smsjobs.updateSettings#93fa0bf flags:# allow_international:flags.0?true = Bool; +smsjobs.getStatus#10a698e8 = smsjobs.Status; +smsjobs.getSmsJob#778d902f job_id:string = SmsJob; +smsjobs.finishJob#4f1ebf24 flags:# job_id:string error:flags.0?string = Bool; + +fragment.getCollectibleInfo#be1e85ba collectible:InputCollectible = fragment.CollectibleInfo; + +aicompose.createTone#4aa83913 flags:# display_author:flags.0?true emoji_id:long title:string prompt:string = AiComposeTone; +aicompose.updateTone#903bcf59 flags:# tone:InputAiComposeTone display_author:flags.0?Bool emoji_id:flags.1?long title:flags.2?string prompt:flags.3?string = AiComposeTone; +aicompose.saveTone#1782cbb1 tone:InputAiComposeTone unsave:Bool = Bool; +aicompose.deleteTone#dd39316a tone:InputAiComposeTone = Bool; +aicompose.getTone#b2e8ba03 tone:InputAiComposeTone = aicompose.Tones; +aicompose.getTones#abd59201 hash:long = aicompose.Tones; +aicompose.getToneExample#d1b4ab14 tone:InputAiComposeTone num:int = AiComposeToneExample; + +// LAYER 225 diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map.dat b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map.dat new file mode 100644 index 0000000000000000000000000000000000000000..0c66c61322f049c568577bece2391bb8e6fa765f GIT binary patch literal 54304 zcmdsgTa08$dRFdEclD*FYr49tr>A=^o9@D1nVl&rvo2ZHW4!9=o=Zv7yY23oSOfWrL8gEL-qkgv0~3UqD=!`h!94K5!@ePeEP+5W zAg}qqi1;J^h!f}J$*P`V@H|X)M*Q*LE_(?DqP}LFd8IXgXToZZtPro$dW< zuXDRU8a^h-cU1M82JGIbJsTv$>H79=tySyn#UK^vqtR^APVOgZ+I*a>HiC09H!0ov^N^Aw`;9td#~NFtazx>>7++u zPm=Cz$P^7*)6vkfp!m!uIhq`=xA*Fs$yU;WDt(Ug+I=f&J%FxaaG3Npp+WN#7)y9h7R4iS&*MA&)@-o8L!QyC*SCa4 z3uJvTNuKnQr}vXiuerY2Z0^^#w`_d zB=hwBpxNta>aE&dXMc0MUf#Zsnop9>{aM;;uXj4NW@C4EyE-HFTXnJ8N*nL)QFE${ zx8F$`JKatKQ>eaDsD5e&d#RSY-K4gU;NclD&jh5!L2ovAK)rXg-rnDAG`F|Axqa`> zblPkm-A{%yGQfI!Yjd-{yT9$Uo=4?_qhvtcpx)Ue?`T_xEUlJrHT(Ss&2chW-`VW6 zy7g{jaU74P6oit=qhz|iwcVy@yt!XZby=EBZyyZDv#Ep0Re`ekyS;9@UfW6^sncb+tR{bsA5yxr|mG*8!)*4|EIue&+F#lu7g z!*qQ!+1{#e?d|2ZL3|){W0258M6$J?B=tt%x@CGjj~#CvzeizdeY0EJsU@4;YI@YH z@9f@g9Z!?An)ZGnF@dBvNDikoZpHiLkAMAz%J*)yM?;E`GmLlXt=r%J-mPBe*6mww z)M{Jxy}f#^Uc2@Bt?`7yMY}mosK$=6C~r=h1GM_i>$gCMsxjW)`t)^+rcvMA*{N^V zVrVedmcdfnY}9vlHXF6AfENrRaRdsrWn+7{sJcjIh)OM8Txr`GA||x&|5;n?Ztc|?TRYpExvZE}FUkyMeN=7&5^J)U#NaqH6d<*O6FtyWY)b>aTb6ip-!cn#scfK0=!A^a@z7Kp+J-A$0<*`w^ ztnvbXbjMk_&hbWVtF~LK(-^#$%bZQ?qkPFOa{BPF zv$wOoyGK0ba^ofnQFhFnf$B_<2)nK1H>^8xmwuzRyG`k3jdJ*0#%W@q<|9$IsgGf5 z60$v~5A8J?n>&>J4cN-lOc3+O%&b0JB%SRm>t^{wsAO_~g$ zQM8MC^CpSf4$~*-pyY9TG%oGuTTe~9qU5qxbN%wf4prOQ+1=T%?d`@AQazy9iQMPM z6@|}jn(OW5`U%VoA`KE7SAH}ZqHomNT~iXD%#!~MjXRD4T@!rDoU^}ZVkNu5pny=J%cQ^A> zr*Hx+k=y<_Hzc1Vf2i+l(fU$tKi^_JpVBkxC}(TtLi@Fd)U z6py;(go9*yH0r2{^{17}wSWCvuhhR(sr>F={I|b!o*AY!@ADnAluZ8y%yabjZ~xv` z{}X|Fb!);w?V5~f1K73i|H|&K|Mi{cfdjw)#S6c7BahC-=9JcVTQgc{sH`$C6m4}` zrSkj#;XnSPi>?DJz6hn_>jM3iJWIap!XCk}EF1r@`t+~u{mT*Fg7 z`ekYp^U+HRZ@Qt#q}0F6Z*owD2UMxJ!v463pN71L{<);Xr0sWkw3oGB6pOq6{Wt#j z>Ok)^r5nWMyKl|;<{o!Q`V*p47S4R5@Xhdb)Umw5xVhcJt&+QOI1Yw340XP0Y^iLZJWcCX+Likn`?a;>lU^qw zW6NkT7-ArVe>Dn!-vp>Eyr&}sg!P5kMI;ct~#7n;FI!q!^&$r`>Amn9cFsXNqKx(^GHj%Wa78z zL;-CWr@}5gM#b#HW7K8NNe&0rN9Os$E0!+I7Z5h~`>bfcW@sB}N%p(6%}-}}zWZ~t zWOA(f%V$N~*pFzwJ4;gdEk!^g3j58YiFxf6+Wtx=$*`TUveRfTiLvRLmeZuNw6(9= z`Ed>X^9sY=>scUM)^TOh$H43J!{n*sB0s0KxCDNq2c#!VQw7A6(15JQpOma77zk=v znN8nJHzL4Q)<;{93l7l-qtW|%4jl4XCbuu5Y3njHHSZj6%jz9Exo*0n84Ht%Ne{t0 z`ZMQkF26%U>~cs~j^x;tFDg5Dx#98Bqv5t=5lVgl>&98i4|ubU_+_}?noa&L{PrcI zt8{~b9wzCmuf}9o*EEOBTwTcjQu2f{o3yfKe1WmOjbcI9>MIA1`Hr<``$6wZ`p8V> zW(?0Ab+*us**q7|!+pig+nB74Un||#Z-?tfPA?4Z^ujchzi>72d(P<=ecuu!$-&;+oedKKV{l_G_|fjR2j|#<&#$L7~5d0dAUsy&7aJt zi9yedvf8g@?0=qCr=M_O1rG+2d0G~6m+QE1l+ndk^ZB}$^ph!{wUzzkw7R&JPm>N) zjFHcOUb?4g49(|EGP{V3h)v#{>|QTz&(f6UdLBOL%GzO|DWw}(U^ma~WDrTd;2ZPC z7x4BImKNql#z}NqF(*mVyk{f2FR}7=~2`np0zGP@Mq!hz<~^@6%#LR zQGe_ZguI`{;bfXzUa;-6G-RE^tMEOTwP>k_M0whrbUdAqiVEWyWPB~1Hm6ELc4maM#C{hEi}cEN>Ze#OeHl$tDs)dvG_d^7uJ_sYd}Z9 zj+IU26fV{k{KKue`GBrG^$>(Imx+5WMiD=H9QTNY{n%fJ6Xen9iFpZMB!i3JQihYQ z>%gx(z1kT*Ia(o4KA_X<$Gotn5G<-!$Q`a@^E$I$$Hs`Qb%l8;=O$;yy8Mh9(Ovnu ziB8RzQEmniUO!l&y;M5gpL8ha>CmP{NH??xuT7ab)1zeagx0pdF`D+eIGjzxvF3~8 z46#=!+7CfJkJp?}t(dXYAXh%YIU4Yu=QR)dciuh>@N%wy$%H49-rGLM`!FHBy!{yP zP_)Mp;yLMFM~El3=K)^Ay`8*$8P;#82hOLoUf>*b35jx*JHzxTHe{sVYJKX8iwac# zJM<4(cX14q4vu{Sf6MyBe4cgMd>WqFr_K5!55B51K|bkwi}W$pANyGh|DwKD#4GQk z@!r}W{_2nah|6Mg#3EcvgY+?N)2Y2S;DHaaE*AAWjz_FJ)(c_~bbF4j^^wD+(suv@ zpJU&Zv1=KAW#X8`1;1KJNBtSXP|0`}iyv1^{82k2W^Xs7v#eu~3YtYRQ{^lMpH5!K zv^zDTBT&Z8Xn+Z2bz|G346v(9Gj)Yb|>k}>~A;q8lO?X z+n-D+=0G19e?l2n5>svLxfX5ZViotbA{tlSx{WaOrd;laFxTa&~|lnAyGgC2Gv;b`t*!&gPc)JbUNy7>>ig`TIBjLAb{E0%XGc z1XSqnOZ?lV$GU>}WIOA#H~K(C%+^IXzDTm(5V9Ka@6b_z-V-|eP*&C=9A6|^?OK9a zk04X48BAF@^V)xrWV|lyscyFzqn4F1uRUbELH_?)_fN#%uzxP2n;AKlv9%J&R1|Y1 zJY>Ka_<6_>o~g=aqs=nsji2x{mgQOwt}^2r#ygy= zUWCUOPw*??$@9Z-oQ&l`i}1klrl@c7Jc0dsP5bp-y^CzkZG8heCv{Yc{2RHucdpBz z$=KZH_l^#)*Q6W9U_=Y;IBzaPyJ*~J9(X@C%scGwRHqw~HvHh6DVH{6oX{m?FB*#( z7W4s|H=c!Xd1Hcv!}^!z3v2YGH}ERf*J)lh;&p$i&zP?Quh)Naa4ph*%J3HB1-ad6 z`%M|zMe9ziXYMa~<00z}{bZiMun+K@L(OyXED80#*dD$+Lk9o=Rw}NHHY-h;RBdPw@l!CuMqfnYy$j6pgPn8lpLQR?|HhLci5vVuJrG7bYcj% zT{%v3-;uiGx(iR~IMW!fmJq-8;+yOH9LGJr+}wnuVs2fV*w~aOBVw<-iS7UO29(3h>E!oFqIqRRta5Z*fJ%Z+` zcl!NDy!asDFy3A<`M`z%vSrjgxFP!qd>HzD9&@Ne)0lqCm?&w4If9smS)bu}a+P@z zK(LmF+_+KN~lX@j|EG zGs5eakLYmF%%0QYdEc6aqk0B{4Q)9cuo30bhFD8EchrLy9A8$=#S5EM7y3&K=CVSc zZ3q9r7y%mL9!|Jl#`(~B;CkHaV$N_L{LqVgJbysmj+_E{UyP=>C!3K3a-e-|z250b zHKYHLk_q;@)t_46wJKyA=B?Qy4+z&B7p3tWJ)b4-aN@VjFEBQ#b)1Z(aor$ak?U6Y zeHwgA`WZ0qo++2H&*bUv^R(fs85;^eB_lseTh62Pr@^N4Wc)mB`xAw>)rZNRrG3lL z`_o|KGIE~A&KM6CiNmjD?EGlfO52m(SlFJj-a zIHeuS*cW=bru0NdnLMp)AC`R}5AIp%DG&c?^puD5lnyUJEs+<7_*`-D4-M>x#ZpAjcBcXIb`d_Y%j_6ZFF&^l2+wR@4X zaesuzGjOWTpUc5d-8p;>cQ6>!CmQ$^o)3?;f-pYtzNo@~FnltiQ{a+k@E*?l^3JMB zy~b$qxq3y*p4fAJiq|5a6+PaIQuNgNj86-)#nuj3e#An+#PBS#ZV~D{hA+kkuV3rE z!t7Z)a zvrew@qaJXVn*He^!%$2LVPM;3^)?WFY~o2W;l0DqkLCWK+6z)&Gw^+hP z!)HOR>a!r&O#oK4JIlIdpD2s7=+5y^n?2RYJ!g_=_&BlDwM?)T`})N(?j1jA_UYv= zscWvkfP2Tf+N+l`tNerB`lD6bDfWA;3eC6*U*kOV3d0E?TlSQ+qr)|rW&2XtPWF}3eJGIU(iHp9S^1y~=&Fo=!+%!U zFUWrsiHPs4FpL4PzZDNzpII{HEVs0C=(BbkJ)jG?t4y~|mocY_q8{S1FuKo2VJ=oljHP{k{ypyD(?$nCF*-!uHcJR`OdO`p%Y#m4XlMtH8lNEzc%|a>}}^ z6u-35KOFWxo+Vg*2R!#V;5-vqpXb=HGKCKw+FlpybHKst7he%}a1@;fguL4LCl!8Yrm2lvV^HN-T zU?5k<5Ao`D?4RJ3_InuI%dtZIJeHVooF2RC{{WueJz(4_O)~KG#9vQc zC=Pj{bFl`V)}svY2P1_#!^_JSmK0-P3G#!Z*`O8Tr8BHCJ~B9+F6dD&`nr-so0W~u zyBeIhFxYG}u%wMXB+v7mM=Vn(=QKXquk+3;cLwqA5l#$O-o+CbaU0BMt+DYune%@KVH3`GxEXfzfF)1_C6Y|;lHd~;*A3uNrQX_Hs^b$<|%Onq8V54u*YtoA9mC)LgnH+7ceJxLD-CTp1ZWa$gs==eG&4 zCacM4zz}~}k9A-TuV(wYk>QKS1N_aKBS`$PnfHDVt-;YZwUQ1K5bqTcN;`JAw=d!i zTs=+hA_&0)^9sDQhmI%IDxs_)uim<&e)radAV0T&UEKPj59rD#>fu~QAbEm)%8b#_ zpXV>{P;HVn^NWU2$s9K#l;~nT$wm*N>!Z<^DFh;b~@Vv(Px9%eM zlMg5TXr8O!e4tfTruz^#%&1Lp;`VK#4+A=! z*?8gn!W`;j>yZGi&K%?ubs3q7w=(?_{C&mQSUsF3y8-!)9iw<`@^aSu$3~p2EN=X9 zK(1_H8=i)DzfYRCbSy{ZVi4z@B&(V#asUhYT2gT+EgbjraGhk%5%aA){EN&x;O{Zq zbXJ``3b`n&LB$RBdyGkC=U#dEo|P{0@Gq*1aBqa~4yw%NU7BE!%+eR=C#}Qi@-w0y zhD79fKO zV-RS=j{KMVNQ~}khIQTU9JR;%3wV|(v7tzH2=&T27}sB>WjPwi4x7W?z&wfO#cT_g z(u=R{>0CHk02XO*Yo+%WvmnC12ToW$nYW7&ecN2L)yfnbCI~5B4MGA7a2AHwB>3U#UYUV zsMtSoxI^8*U)Tro@QL$U0SAs($usn9_Zq+(vqrQe9Avu|m90{FjmtgR?v92u@1-L= z3J?1_p)FhkkuuK1dm>qRZbeHZgWhaFA21up^Nr9ic(ik{0PaQC*Ss3m75}v{UD5ME zD|(JL_834r))D+*NuB4&=GNeiaff?xyoRFp;;0MU>GwxZ6SeNixbgQn8V{CGJsxLl z%;o6+Tn~P@znmmblQw0%mz^FBC)(dYD;BRpzQQ$L{4UdO(YGy$%(C# zys3D`YvM$tD4rGJ6nCjI%zz&B$$y#uuy61hxY?(+m$@Xrz!Td~4spx7V6-0T-3#M> z23+&(f|wfe$$6#Er{0Y|39li3{w9`>|G|tF-I{6gO?-bP6R*qYB&73a%^FGpoqI_e z%lO&xp$xs)oaD7|PNLO@TWPelpx67PeNIZ}D%G3fn<)O&!x&_;JB%`R;sYxnkb z0=zFvytIN%AAYdF5-;M=OBOZ&B;B|=+7OaRs1A5IKahHqeumru`@!;^G+J-dY*Sv( z-$|A{f&Z%IiTu&R>pn(5>5Ft(`?xzu@dmCwWd=Ni;9*hw-HP&wIdWnmf^Qq>`zyAM z<MfsMz2p;mKi|}1U@X5GMM;IEF{xwlQ3Olh2{1O2q#d3`^~CvUYQD+ID|8`G zZXHgp`KJ|EF4z0Bv98P>A!L_6y27&RaORDH(C;F?3*0gPrnTz8=kJd?N%mVeW!F5T ze)r+{@r1tqOEV7K-pbh9`4!nw4U2vQSI^A)^`YObrp>{)Pb)#(jmZIHvP&DIZ~vtA zf6=!MDH{?Z*|?Vzh3eQzh7?K_1yGI7G=i2Vleb>kJgJL<>>=)q|ADd zyD!RTzA|V%exN_sMjyb9h>&SRd+_=l5>mN(XV&;3_~iA07>u`%LvL89w$z4oihIW4 zIXa3vnwB9H!^`(t^4@p=ej;OYvk<5K-R!q!gKWH9GUaqm&vG5&ly!7|&x3=XV2p=; zE@E9T=iM@0r$1sH&IOr&*v!5aqs^=|!#ZUB$6!vPe<@cC=OViIc-QV$%)5YjX1oiW z3-gY*)Z8Jl`*_iu{ea(hxvXJSmZ|{AaHdRU!d%Aof?vQtE)=W-NZVhJ@F2gx#dpWW zxq4hHR42}vSB{-_jZ~kFwkw;=8~aio+)36K-FXuV9`{D=86M4f>-fE9dSv4O(=CD( zv;!b}MIF$MofF{ryHRI}P45Y3~=1m&<(vE;|k03xggV z<)0pp3AuOoS(JzNcjtM?7I$Y9wFc@a2P>4s_F_NA&u|@sb*R@da4hw0+@(GmO-I(A zd26GRpBQfD&#aNm9zRY}x_>;v(x`c!dLbH!KWlnV8K?Jgrc|Mka&kYuWZ)Qpf9qm5 zW^w-w_o_3p1^BL*-}+DdJ6J_HAhls{i%!x5x60hrjv#zkK;pZ#bSQ(>zN0UFUy%mRI%>^l`kav4Luyw{vdtnEic~j7+I#xv$AIyTHH@%zeYdd z@-qFm44p5E-7szy-7zlst}zXkbjR3qevY%;*Y*8k9SJzTaGknaY=Q*Wg|Q_Zr~R?? zVM5mhQ`&o0FSb$!cAwV@dCdwj|192arNQx%2kv4ruXTs@s}qSHLyA9Mf(FORT>b-^ zK2GErr^mVG@dCO<~#rEYtLO&-~84Fy{N`9{qJQYEC(I+18|oV z9A{aiUj^%auV{E%fHteD%{zqX{Skk+@rKvVuPck=MTJAL<{^+g|I`0@?}zq&B;Aal zhey1@Me2)GQ8_=xz={!%=DUh-tq0&K$`L|57)QhQR~7DbgVqJ<fZ_h=<*yL{D@=Brj;| z?rq{7qWk>0?W`XT^y4sLd;TtDx`Fog@{dI%^{V8^!6Rg#gD&^5c~Y7OCxafnw5I*O zRHOs9|E}A|-nU^J7vaf!Z%XQ*sD0j>NuiI#Z0W`4935Y$;||t)#ZyX>KNWj(+TT#^ zC&_5iq1lT-Kyf;QLjiFg)E0riy=d1!lTXl@&2vCrd+3Pbl6oh|e9F)CMTf_(#lhv( z+L-1+_N6>MX+PB8gp2hjiyJN-!JX&Fwy&xe_DKd6e{3kNgt1`N#R67?rw7mp-zk#) z5BM%C8jt8;T0ha+p*0_c*DsUyDe^(N4>atkD+UU!Y!4kT4{%XkTPMbYl2v^BRmVM7 zAo1ntQ~8U%?}7K^XuUh~jabODq`wPVk>3Rk^}XWs4NOYc>@P~!v?CzDZ!C4qwhg}- zDq%u;R|UOhuM^edJo`%gHyyqY)q`F1L2t8)rDVao#T*CDU>v94Iv2+9>ehkjtp~c% zoUK#$g3Y}OtV@Lc%Q}$n8EO9X7#qre#qsO$$vP(zYP>rw9ibPdgHKsbhE0F}4mK|0 zedPf2f8=*s9_=sgxAa-&UCQtKD}qOUTh2j4n!s_TtN8{-eae}>SMHC8{o2E! z7Y^;-z#=$`&O|dF_y}|o`u@ zMS1{Fd?z#Az##M3S~c{mBDsp*DPemQ>4tNZWxP|D>U*3qdmt{#{6()9AeT`|IgjSyz1)bXLblbooaO_;=|=f%iv`v+*j% zKYUH*+Sk?Ct5SB(wbjrI9+4-r565t!u52!SHfLQ2{Diro_J1TA9!r@xn8%Zf4H5f* zR$jjIiqb=nGuob))os!E4?12yH+jy>kvxY_ffj#H*Q-26R*;1Nz&l?x!1+RT;z)J@oBTX+`Tc%UebtW*pM!Lw)2?( zeDKM-+k3_qNTu?i@mFr}c_7r`z2zU=`N98yuj4m=-v?zY>bu=(`zYzm`gA`-!e9S* zM#<43C0qUD!}N$&*V;2&6a_Ehtx`33{?)BN`5npy>{&V#@^|SW1ID!9+5G9-%)_#N z3;kz^wV$2*;Q#y)>xKCQtdv2=|Ezq0UZ_*(4|ane_uhu?S*Ve`;2YYIm(Q4hHp&!j zx*~H#JhMLj(m(&-{|2@Pz1V#=&~t0fM2|w8yi*69xQhpT%i8}HfIBCk8ywuzeLvI} zpRtkpk@wqxSHj4;P#%W6{r$i7?;#WZgIuvU${<(XcUaLUftzirZKU_ee(LTY{!5ex zc=>ta3h=JkbqUg!tpCCD2GkOnKg1;gUEb81T3}6U3iv9T&$B-;Poe(#?19oz z$E?N$sco{5itjesCowyI&y0TWIOdD57km59w)#nzx4>&CBIw_-?-Mr^ln6V9upHd z6bWqy8Gj57{th+wcaAThQ51hbEAPIzlBeJ%I8AB_}C`oI>HB)E(!BHG`_Q~NC-NLMKL_r-H@vy;(!4yu!%5&>&jD4_3i_TtOQC z)`c9)l|K5TAx%S-on)QTTX!^}hhG$J*6aBne)AWDIB8#mR=&x(Gr5(m2>P0Q!yP>6 zxuk=JY_*cW2%4Hg+0lKe2*A%yr6=mn;XIRB@A?WrXUv- zV~;u~Pphgac;P$f?ub2VeBYCJ+3sOZCdOHXpBHnmHv&30gzZ8A$jx!A3@s6VGI#Gm z%U}PGzbg=<$2kB?e8ot+f{1)$Mf^L02ZvCQWb-FP~svkalpYCK4 zPWbLM@zy4iA3C(r!$oJpDRdyjZ_%?2o$6>;b&m?+w4JaT3bPOZI#NP3ha; zm1s|e*X#R{ecGxnt5RA|2E$XrX_cNau3E)HUZYF5KTCFsZ=+Tg!RK;Cz38G=S&81m zJLE7)delEAi()l~l&7{NwGTY)_50OPYufA$tIaB1Wt%3SOi8;0KBAPh+9MUGRoX(H zR;MFCAOmF?oIW(_@Ql}IMH_x|L;L5WWb%Z*eD;mewAbzNIm$nCmuAPx2Hj-ZJ|gxN z5d6tP$^PQS4YPV;W^C6o2kW!2)r8uO^>CvcDZPU8=>(yoog>^YhN+$_D z@l3CYR1L#q#h<6g?6_YQya`5ztWex>LT1M`XI$o@_moUu zb$4^ohQ@MQGnbdIPl{K*DRWXBbm!Bsq@LlZoD@&&?(Ru(&AWSiQoLpEd!Gb1b*qXU zPq1p6bBFA8FE)o`iSkeKXcJ5bC&vqW)","op":{"_":"vectorOp","values":[{"_":"copyOp","from":"id"}]}}},{"_":"typedOpArg","key":"peer","value":{"_":"typedOp","type":"InputPeer","op":{"_":"getInputPeerByIdOp","from":"peer"}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceWebPage","action":{"_":"callOp","method":"messages.getWebPage","args":[{"_":"typedOpArg","key":"url","value":{"_":"typedOp","type":"string","op":{"_":"copyOp","from":"url"}}},{"_":"typedOpArg","key":"hash","value":{"_":"typedOp","type":"int","op":{"_":"intLiteralOp","value":0}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceBotApp","action":{"_":"callOp","method":"messages.getBotApp","args":[{"_":"typedOpArg","key":"app","value":{"_":"typedOp","type":"InputBotApp","op":{"_":"constructorOp","constructor":"inputBotAppID","args":[{"_":"typedOpArg","key":"id","value":{"_":"typedOp","type":"long","op":{"_":"copyOp","from":"id"}}},{"_":"typedOpArg","key":"access_hash","value":{"_":"typedOp","type":"long","op":{"_":"copyOp","from":"access_hash"}}}]}}},{"_":"typedOpArg","key":"hash","value":{"_":"typedOp","type":"long","op":{"_":"longLiteralOp","value":0}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceUserFull","action":{"_":"callOp","method":"users.getFullUser","args":[{"_":"typedOpArg","key":"id","value":{"_":"typedOp","type":"InputUser","op":{"_":"getInputUserByIdOp","from":"id"}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceAdminLog","action":{"_":"callOp","method":"channels.getAdminLog","args":[{"_":"typedOpArg","key":"channel","value":{"_":"typedOp","type":"InputChannel","op":{"_":"getInputChannelByIdOp","from":"channel"}}},{"_":"typedOpArg","key":"max_id","value":{"_":"typedOp","type":"long","op":{"_":"copyOp","from":"max_id"}}},{"_":"typedOpArg","key":"min_id","value":{"_":"typedOp","type":"long","op":{"_":"copyOp","from":"max_id"}}},{"_":"typedOpArg","key":"limit","value":{"_":"typedOp","type":"int","op":{"_":"intLiteralOp","value":1}}},{"_":"typedOpArg","key":"q","value":{"_":"typedOp","type":"string","op":{"_":"stringLiteralOp","value":""}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceStoryAlbum","action":{"_":"callOp","method":"stories.getAlbums","args":[{"_":"typedOpArg","key":"peer","value":{"_":"typedOp","type":"InputPeer","op":{"_":"getInputPeerByIdOp","from":"peer"}}},{"_":"typedOpArg","key":"hash","value":{"_":"typedOp","type":"long","op":{"_":"longLiteralOp","value":0}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceBotPreviewMedia","action":{"_":"callOp","method":"bots.getPreviewMedias","args":[{"_":"typedOpArg","key":"bot","value":{"_":"typedOp","type":"InputUser","op":{"_":"getInputUserByIdOp","from":"bot"}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceBotPreviewInfo","action":{"_":"callOp","method":"bots.getPreviewInfo","args":[{"_":"typedOpArg","key":"bot","value":{"_":"typedOp","type":"InputUser","op":{"_":"getInputUserByIdOp","from":"bot"}}},{"_":"typedOpArg","key":"lang_code","value":{"_":"typedOp","type":"string","op":{"_":"copyOp","from":"lang_code"}}}]}},{"_":"refreshAction","stored_constructor":"fileSourcePaidMedia","action":{"_":"callOp","method":"messages.getExtendedMedia","args":[{"_":"typedOpArg","key":"id","value":{"_":"typedOp","type":"Vector","op":{"_":"vectorOp","values":[{"_":"copyOp","from":"id"}]}}},{"_":"typedOpArg","key":"peer","value":{"_":"typedOp","type":"InputPeer","op":{"_":"getInputPeerByIdOp","from":"peer"}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceSavedMusic","action":{"_":"callOp","method":"users.getSavedMusicByID","args":[{"_":"typedOpArg","key":"id","value":{"_":"typedOp","type":"InputUser","op":{"_":"getInputUserByIdOp","from":"user_id"}}},{"_":"typedOpArg","key":"documents","value":{"_":"typedOp","type":"Vector","op":{"_":"vectorOp","values":[{"_":"constructorOp","constructor":"inputDocument","args":[{"_":"typedOpArg","key":"id","value":{"_":"typedOp","type":"long","op":{"_":"copyOp","from":"id"}}},{"_":"typedOpArg","key":"access_hash","value":{"_":"typedOp","type":"long","op":{"_":"copyOp","from":"access_hash"}}},{"_":"typedOpArg","key":"file_reference","value":{"_":"typedOp","type":"bytes","op":{"_":"bytesLiteralOp","value":{"_":"bytes","bytes":""}}}}]}]}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceChatFull","action":{"_":"callOp","method":"messages.getFullChat","args":[{"_":"typedOpArg","key":"chat_id","value":{"_":"typedOp","type":"long","op":{"_":"copyOp","from":"chat_id"}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceChannelFull","action":{"_":"callOp","method":"channels.getFullChannel","args":[{"_":"typedOpArg","key":"channel","value":{"_":"typedOp","type":"InputChannel","op":{"_":"getInputChannelByIdOp","from":"channel"}}}]}},{"_":"refreshAction","stored_constructor":"fileSourcePremiumPromo","action":{"_":"callOp","method":"help.getPremiumPromo","args":[]}},{"_":"refreshAction","stored_constructor":"fileSourceStarsTransaction","action":{"_":"callOp","method":"payments.getStarsTransactionsByID","args":[{"_":"typedOpArg","key":"peer","value":{"_":"typedOp","type":"InputPeer","op":{"_":"getInputPeerByIdOp","from":"peer"}}},{"_":"typedOpArg","key":"ton","value":{"_":"typedOp","type":"true","op":{"_":"copyOp","from":"ton"}}},{"_":"typedOpArg","key":"id","value":{"_":"typedOp","type":"Vector","op":{"_":"vectorOp","values":[{"_":"constructorOp","constructor":"inputStarsTransaction","args":[{"_":"typedOpArg","key":"id","value":{"_":"typedOp","type":"string","op":{"_":"copyOp","from":"id"}}},{"_":"typedOpArg","key":"refund","value":{"_":"typedOp","type":"true","op":{"_":"copyOp","from":"refund"}}}]}]}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceAttachMenuBot","action":{"_":"callOp","method":"messages.getAttachMenuBot","args":[{"_":"typedOpArg","key":"bot","value":{"_":"typedOp","type":"InputUser","op":{"_":"getInputUserByIdOp","from":"bot"}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceTheme","action":{"_":"callOp","method":"account.getTheme","args":[{"_":"typedOpArg","key":"theme","value":{"_":"typedOp","type":"InputTheme","op":{"_":"constructorOp","constructor":"inputTheme","args":[{"_":"typedOpArg","key":"id","value":{"_":"typedOp","type":"long","op":{"_":"copyOp","from":"id"}}},{"_":"typedOpArg","key":"access_hash","value":{"_":"typedOp","type":"long","op":{"_":"copyOp","from":"access_hash"}}}]}}},{"_":"typedOpArg","key":"format","value":{"_":"typedOp","type":"string","op":{"_":"themeFormatLiteralOp"}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceWallPaper","action":{"_":"callOp","method":"account.getWallPaper","args":[{"_":"typedOpArg","key":"wallpaper","value":{"_":"typedOp","type":"InputWallPaper","op":{"_":"constructorOp","constructor":"inputWallPaper","args":[{"_":"typedOpArg","key":"id","value":{"_":"typedOp","type":"long","op":{"_":"copyOp","from":"id"}}},{"_":"typedOpArg","key":"access_hash","value":{"_":"typedOp","type":"long","op":{"_":"copyOp","from":"access_hash"}}}]}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceStickerSet","action":{"_":"callOp","method":"messages.getStickerSet","args":[{"_":"typedOpArg","key":"stickerset","value":{"_":"typedOp","type":"InputStickerSet","op":{"_":"copyOp","from":"stickerset"}}},{"_":"typedOpArg","key":"hash","value":{"_":"typedOp","type":"int","op":{"_":"intLiteralOp","value":0}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceSavedGifs","action":{"_":"callOp","method":"messages.getSavedGifs","args":[{"_":"typedOpArg","key":"hash","value":{"_":"typedOp","type":"long","op":{"_":"longLiteralOp","value":0}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceSavedRingtones","action":{"_":"callOp","method":"account.getSavedRingtones","args":[{"_":"typedOpArg","key":"hash","value":{"_":"typedOp","type":"long","op":{"_":"longLiteralOp","value":0}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceAvailableEffects","action":{"_":"callOp","method":"messages.getAvailableEffects","args":[{"_":"typedOpArg","key":"hash","value":{"_":"typedOp","type":"int","op":{"_":"intLiteralOp","value":0}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceAvailableReactions","action":{"_":"callOp","method":"messages.getAvailableReactions","args":[{"_":"typedOpArg","key":"hash","value":{"_":"typedOp","type":"int","op":{"_":"intLiteralOp","value":0}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceUserProfilePhoto","action":{"_":"callOp","method":"photos.getUserPhotos","args":[{"_":"typedOpArg","key":"user_id","value":{"_":"typedOp","type":"InputUser","op":{"_":"getInputUserByIdOp","from":"user_id"}}},{"_":"typedOpArg","key":"offset","value":{"_":"typedOp","type":"int","op":{"_":"intLiteralOp","value":-1}}},{"_":"typedOpArg","key":"max_id","value":{"_":"typedOp","type":"long","op":{"_":"copyOp","from":"max_id"}}},{"_":"typedOpArg","key":"limit","value":{"_":"typedOp","type":"int","op":{"_":"intLiteralOp","value":1}}}]}},{"_":"refreshAction","stored_constructor":"fileSourceDocumentByHash","action":{"_":"callOp","method":"messages.getDocumentByHash","args":[{"_":"typedOpArg","key":"sha256","value":{"_":"typedOp","type":"bytes","op":{"_":"copyOp","from":"sha256"}}},{"_":"typedOpArg","key":"size","value":{"_":"typedOp","type":"long","op":{"_":"copyOp","from":"size"}}},{"_":"typedOpArg","key":"mime_type","value":{"_":"typedOp","type":"string","op":{"_":"copyOp","from":"mime_type"}}}]}}],"skipped_incoming_sources":[{"_":"skippedSource","predicate":"messages.getSponsoredMessages","is_constructor":false,"why":"Do not store file references from sponsored messages"},{"_":"skippedSource","predicate":"help.getAppUpdate","is_constructor":false,"why":"Don't handle file references from ephemeral app update info"},{"_":"skippedSource","predicate":"help.getRecentMeUrls","is_constructor":false,"why":"Don't handle file references from recent t.me URLs"},{"_":"skippedSource","predicate":"recentMeUrlChatInvite","is_constructor":true,"why":"Do not store references based on chat invite links"},{"_":"skippedSource","predicate":"messages.checkChatInvite","is_constructor":false,"why":"Do not store references based on chat invite links"},{"_":"skippedSource","predicate":"messages.getInlineBotResults","is_constructor":false,"why":"Inline bot results are ephemeral"},{"_":"skippedSource","predicate":"messages.getPreparedInlineMessage","is_constructor":false,"why":"Inline bot results are ephemeral"},{"_":"skippedSource","predicate":"messages.uploadMedia","is_constructor":false,"why":"A freshly uploaded media file will obtain a context only once it is sent to a chat"},{"_":"skippedSource","predicate":"messages.uploadImportedMedia","is_constructor":false,"why":"A freshly uploaded media file will obtain a context only once it is sent to a chat"},{"_":"skippedSource","predicate":"updateServiceNotification","is_constructor":true,"why":"Cannot refetch service notifications"},{"_":"skippedSource","predicate":"messages.getWebPagePreview","is_constructor":false,"why":"No locations are added for the method call, as it doesn't use persistent IDs as input; the location is instead extracted from the persistent IDs in the returned WebPage object"},{"_":"skippedSource","predicate":"payments.resaleStarGifts","is_constructor":true,"why":"Contexts for star gifts are not yet implemented"},{"_":"skippedSource","predicate":"payments.starGiftUpgradePreview","is_constructor":true,"why":"Contexts for star gifts are not yet implemented"},{"_":"skippedSource","predicate":"starGift","is_constructor":true,"why":"Contexts for star gifts are not yet implemented"},{"_":"skippedSource","predicate":"starGiftUnique","is_constructor":true,"why":"Contexts for star gifts are not yet implemented"},{"_":"skippedSource","predicate":"starGiftCollection","is_constructor":true,"why":"Contexts for star gifts are not yet implemented"},{"_":"skippedSource","predicate":"payments.starGiftCollections","is_constructor":true,"why":"Contexts for star gifts are not yet implemented"},{"_":"skippedSource","predicate":"payments.starGiftUpgradeAttributes","is_constructor":true,"why":"Contexts for star gifts are not yet implemented"},{"_":"skippedSource","predicate":"messages.getCustomEmojiDocuments","is_constructor":false,"why":"Do not store file references in this context"},{"_":"skippedSource","predicate":"account.uploadTheme","is_constructor":false,"why":"A freshly uploaded theme file will obtain a context only once it is created via account.createTheme"}]} \ No newline at end of file diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map_schema.json b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map_schema.json new file mode 100644 index 0000000..7b700b5 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map_schema.json @@ -0,0 +1,713 @@ +{ + "constructors": [ + { + "id": "-1132882121", + "predicate": "boolFalse", + "params": [], + "type": "Bool" + }, + { + "id": "-1720552011", + "predicate": "boolTrue", + "params": [], + "type": "Bool" + }, + { + "id": "1072550713", + "predicate": "true", + "params": [], + "type": "True" + }, + { + "id": "481674261", + "predicate": "vector", + "params": [], + "type": "Vector t" + }, + { + "id": "1923715664", + "predicate": "fileReferenceMap", + "params": [ + { + "name": "layer", + "type": "int" + }, + { + "name": "db_schema", + "type": "string" + }, + { + "name": "db_schema_json", + "type": "string" + }, + { + "name": "traversers_incoming", + "type": "Vector" + }, + { + "name": "traversers_outgoing", + "type": "Vector" + }, + { + "name": "refresh_actions", + "type": "Vector" + }, + { + "name": "skipped_incoming_sources", + "type": "Vector" + } + ], + "type": "FileReferenceMap" + }, + { + "id": "1645615975", + "predicate": "traverseParam", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "is_flag", + "type": "flags.0?true" + }, + { + "name": "is_vector", + "type": "flags.1?true" + }, + { + "name": "type", + "type": "string" + } + ], + "type": "TraverseParam" + }, + { + "id": "-39194058", + "predicate": "traverseMethodResult", + "params": [ + { + "name": "name", + "type": "string" + }, + { + "name": "push_sources", + "type": "Vector" + }, + { + "name": "is_needed_parent", + "type": "Bool" + } + ], + "type": "TraverserIncoming" + }, + { + "id": "1850540214", + "predicate": "traverseIncomingConstructor", + "params": [ + { + "name": "type", + "type": "string" + }, + { + "name": "predicate", + "type": "string" + }, + { + "name": "params", + "type": "Vector" + }, + { + "name": "push_sources", + "type": "Vector" + }, + { + "name": "is_needed_parent", + "type": "Bool" + } + ], + "type": "TraverserIncoming" + }, + { + "id": "-1798547003", + "predicate": "traverseCommitSourceLocation", + "params": [ + { + "name": "type", + "type": "string" + }, + { + "name": "predicate", + "type": "string" + }, + { + "name": "push_sources", + "type": "Vector" + }, + { + "name": "stored_constructor", + "type": "string" + } + ], + "type": "TraverserIncoming" + }, + { + "id": "-584595818", + "predicate": "source", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "predicate", + "type": "string" + }, + { + "name": "is_constructor", + "type": "flags.0?true" + }, + { + "name": "stored_constructor", + "type": "string" + }, + { + "name": "stored_params", + "type": "Vector" + }, + { + "name": "skipped_flags", + "type": "Vector" + }, + { + "name": "needs_parent", + "type": "flags.3?string" + }, + { + "name": "parent_is_constructor", + "type": "flags.4?true" + } + ], + "type": "Source" + }, + { + "id": "1069875821", + "predicate": "traverseOutgoingConstructor", + "params": [ + { + "name": "type", + "type": "string" + }, + { + "name": "predicate", + "type": "string" + }, + { + "name": "params", + "type": "Vector" + } + ], + "type": "TraverserOutgoing" + }, + { + "id": "53213533", + "predicate": "traverseSwapLocation", + "params": [ + { + "name": "type", + "type": "string" + }, + { + "name": "predicate", + "type": "string" + }, + { + "name": "stored_constructor", + "type": "string" + } + ], + "type": "TraverserOutgoing" + }, + { + "id": "-1840974405", + "predicate": "traverseMethodCall", + "params": [ + { + "name": "name", + "type": "string" + }, + { + "name": "params", + "type": "Vector" + } + ], + "type": "TraverserOutgoing" + }, + { + "id": "492031253", + "predicate": "skippedSource", + "params": [ + { + "name": "flags", + "type": "#" + }, + { + "name": "predicate", + "type": "string" + }, + { + "name": "is_constructor", + "type": "flags.0?true" + }, + { + "name": "why", + "type": "string" + } + ], + "type": "SkippedSource" + }, + { + "id": "-723429751", + "predicate": "refreshAction", + "params": [ + { + "name": "stored_constructor", + "type": "string" + }, + { + "name": "action", + "type": "ActionOp" + } + ], + "type": "RefreshAction" + }, + { + "id": "-1395010097", + "predicate": "paramNotFlag", + "params": [], + "type": "ParamFlag" + }, + { + "id": "-117530642", + "predicate": "paramIsFlagAbortIfEmpty", + "params": [], + "type": "ParamFlag" + }, + { + "id": "539719585", + "predicate": "paramIsFlagFallback", + "params": [ + { + "name": "fallback", + "type": "TypedOp" + } + ], + "type": "ParamFlag" + }, + { + "id": "499573117", + "predicate": "paramIsFlagPassthrough", + "params": [], + "type": "ParamFlag" + }, + { + "id": "429985727", + "predicate": "pathPart", + "params": [ + { + "name": "type", + "type": "string" + }, + { + "name": "constructor", + "type": "string" + }, + { + "name": "param", + "type": "string" + }, + { + "name": "param_type", + "type": "string" + }, + { + "name": "flag", + "type": "ParamFlag" + } + ], + "type": "PathPart" + }, + { + "id": "204834466", + "predicate": "path", + "params": [ + { + "name": "parts", + "type": "Vector" + } + ], + "type": "Path" + }, + { + "id": "1492203140", + "predicate": "pathParent", + "params": [ + { + "name": "parts", + "type": "Vector" + } + ], + "type": "Path" + }, + { + "id": "1913034057", + "predicate": "extractAndStore", + "params": [ + { + "name": "from", + "type": "Path" + }, + { + "name": "to", + "type": "string" + } + ], + "type": "FieldExtractor" + }, + { + "id": "916294932", + "predicate": "extractInputStickerSetFromDocumentAttributesAndStore", + "params": [ + { + "name": "from", + "type": "Path" + }, + { + "name": "to", + "type": "string" + } + ], + "type": "FieldExtractor" + }, + { + "id": "-1050160016", + "predicate": "extractInputStickerSetFromStickerSetAndStore", + "params": [ + { + "name": "from", + "type": "Path" + }, + { + "name": "to", + "type": "string" + } + ], + "type": "FieldExtractor" + }, + { + "id": "2100494748", + "predicate": "extractPeerIdFromPeerAndStore", + "params": [ + { + "name": "from", + "type": "Path" + }, + { + "name": "to", + "type": "string" + } + ], + "type": "FieldExtractor" + }, + { + "id": "-1524969548", + "predicate": "extractPeerIdFromInputPeerAndStore", + "params": [ + { + "name": "from", + "type": "Path" + }, + { + "name": "to", + "type": "string" + } + ], + "type": "FieldExtractor" + }, + { + "id": "1450556567", + "predicate": "extractChannelIdFromChannelAndStore", + "params": [ + { + "name": "from", + "type": "Path" + }, + { + "name": "to", + "type": "string" + } + ], + "type": "FieldExtractor" + }, + { + "id": "-1235065330", + "predicate": "extractChannelIdFromInputChannelAndStore", + "params": [ + { + "name": "from", + "type": "Path" + }, + { + "name": "to", + "type": "string" + } + ], + "type": "FieldExtractor" + }, + { + "id": "1199107171", + "predicate": "extractUserIdFromUserAndStore", + "params": [ + { + "name": "from", + "type": "Path" + }, + { + "name": "to", + "type": "string" + } + ], + "type": "FieldExtractor" + }, + { + "id": "1998629422", + "predicate": "extractUserIdFromInputUserAndStore", + "params": [ + { + "name": "from", + "type": "Path" + }, + { + "name": "to", + "type": "string" + } + ], + "type": "FieldExtractor" + }, + { + "id": "-1023462525", + "predicate": "callOp", + "params": [ + { + "name": "method", + "type": "string" + }, + { + "name": "args", + "type": "Vector" + } + ], + "type": "ActionOp" + }, + { + "id": "595085800", + "predicate": "getMessageOp", + "params": [ + { + "name": "peer", + "type": "TypedOp" + }, + { + "name": "id", + "type": "TypedOp" + }, + { + "name": "from_scheduled", + "type": "TypedOp" + }, + { + "name": "quick_reply_shortcut_id", + "type": "TypedOp" + } + ], + "type": "ActionOp" + }, + { + "id": "975777986", + "predicate": "typedOpArg", + "params": [ + { + "name": "key", + "type": "string" + }, + { + "name": "value", + "type": "TypedOp" + } + ], + "type": "TypedOpArg" + }, + { + "id": "1885016300", + "predicate": "typedOp", + "params": [ + { + "name": "type", + "type": "string" + }, + { + "name": "op", + "type": "TypedOpOp" + } + ], + "type": "TypedOp" + }, + { + "id": "-191938161", + "predicate": "copyOp", + "params": [ + { + "name": "from", + "type": "string" + } + ], + "type": "TypedOpOp" + }, + { + "id": "1018459441", + "predicate": "getInputChannelByIdOp", + "params": [ + { + "name": "from", + "type": "string" + } + ], + "type": "TypedOpOp" + }, + { + "id": "-1058127066", + "predicate": "getInputUserByIdOp", + "params": [ + { + "name": "from", + "type": "string" + } + ], + "type": "TypedOpOp" + }, + { + "id": "427898704", + "predicate": "getInputPeerByIdOp", + "params": [ + { + "name": "from", + "type": "string" + } + ], + "type": "TypedOpOp" + }, + { + "id": "276794762", + "predicate": "constructorOp", + "params": [ + { + "name": "constructor", + "type": "string" + }, + { + "name": "args", + "type": "Vector" + } + ], + "type": "TypedOpOp" + }, + { + "id": "-117731470", + "predicate": "vectorOp", + "params": [ + { + "name": "values", + "type": "Vector" + } + ], + "type": "TypedOpOp" + }, + { + "id": "-872759684", + "predicate": "intLiteralOp", + "params": [ + { + "name": "value", + "type": "int" + } + ], + "type": "TypedOpOp" + }, + { + "id": "-796160710", + "predicate": "longLiteralOp", + "params": [ + { + "name": "value", + "type": "long" + } + ], + "type": "TypedOpOp" + }, + { + "id": "727116430", + "predicate": "stringLiteralOp", + "params": [ + { + "name": "value", + "type": "string" + } + ], + "type": "TypedOpOp" + }, + { + "id": "-38562396", + "predicate": "bytesLiteralOp", + "params": [ + { + "name": "value", + "type": "bytes" + } + ], + "type": "TypedOpOp" + }, + { + "id": "937457937", + "predicate": "boolLiteralOp", + "params": [ + { + "name": "value", + "type": "Bool" + } + ], + "type": "TypedOpOp" + }, + { + "id": "911336383", + "predicate": "doubleLiteralOp", + "params": [ + { + "name": "value", + "type": "double" + } + ], + "type": "TypedOpOp" + }, + { + "id": "-1907387896", + "predicate": "themeFormatLiteralOp", + "params": [], + "type": "TypedOpOp" + } + ], + "methods": [] +} \ No newline at end of file diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map_schema.tl b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map_schema.tl new file mode 100644 index 0000000..9da9731 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map_schema.tl @@ -0,0 +1,86 @@ +boolFalse#bc799737 = Bool; +boolTrue#997275b5 = Bool; +true#3fedd339 = True; + +vector#1cb5c415 {t:Type} # [ t ] = Vector t; + +// Root +fileReferenceMap#72a99250 layer:int db_schema:string db_schema_json:string traversers_incoming:Vector traversers_outgoing:Vector refresh_actions:Vector skipped_incoming_sources:Vector = FileReferenceMap; + +// Traversers (incoming) +traverseParam#62161b67 flags:# name:string is_flag:flags.0?true is_vector:flags.1?true type:string = TraverseParam; + +traverseMethodResult#fda9f236 name:string push_sources:Vector is_needed_parent:Bool = TraverserIncoming; +traverseIncomingConstructor#6e4d00b6 type:string predicate:string params:Vector push_sources:Vector is_needed_parent:Bool = TraverserIncoming; +traverseCommitSourceLocation#94cc59c5 type:string predicate:string push_sources:Vector stored_constructor:string = TraverserIncoming; + +source#dd27c696 flags:# predicate:string is_constructor:flags.0?true stored_constructor:string stored_params:Vector skipped_flags:Vector needs_parent:flags.3?string parent_is_constructor:flags.4?true = Source; + +// Traversers (outgoing) +traverseOutgoingConstructor#3fc5026d type:string predicate:string params:Vector = TraverserOutgoing; +traverseSwapLocation#032bf95d type:string predicate:string stored_constructor:string = TraverserOutgoing; +traverseMethodCall#9244f5bb name:string params:Vector = TraverserOutgoing; + +// Skipped sources +skippedSource#1d53cd15 flags:# predicate:string is_constructor:flags.0?true why:string = SkippedSource; + +// Refresh actions +refreshAction#d4e15689 stored_constructor:string action:ActionOp = RefreshAction; + +// Field extraction path +paramNotFlag#acd9d5cf = ParamFlag; +paramIsFlagAbortIfEmpty#f8fe9fee = ParamFlag; +paramIsFlagFallback#202b77a1 fallback:TypedOp = ParamFlag; +paramIsFlagPassthrough#1dc6e17d = ParamFlag; + +pathPart#19a10fbf type:string constructor:string param:string param_type:string flag:ParamFlag = PathPart; + +path#0c3586a2 parts:Vector = Path; +pathParent#58f13684 parts:Vector = Path; + +// Extractor +extractAndStore#72069549 from:Path to:string = FieldExtractor; + +extractInputStickerSetFromDocumentAttributesAndStore#369d8d14 from:Path to:string = FieldExtractor; +extractInputStickerSetFromStickerSetAndStore#c167d470 from:Path to:string = FieldExtractor; + +extractPeerIdFromPeerAndStore#7d33019c from:Path to:string = FieldExtractor; +extractPeerIdFromInputPeerAndStore#a51acfb4 from:Path to:string = FieldExtractor; + +extractChannelIdFromChannelAndStore#5675bc97 from:Path to:string = FieldExtractor; +extractChannelIdFromInputChannelAndStore#b662660e from:Path to:string = FieldExtractor; + +extractUserIdFromUserAndStore#4778ec63 from:Path to:string = FieldExtractor; +extractUserIdFromInputUserAndStore#7720aa2e from:Path to:string = FieldExtractor; + +// Actions +callOp#c2ff3383 method:string args:Vector = ActionOp; +getMessageOp#237849e8 peer:TypedOp id:TypedOp from_scheduled:TypedOp quick_reply_shortcut_id:TypedOp = ActionOp; + +// For string => TypedOp dictionaries +typedOpArg#3a2930c2 key:string value:TypedOp = TypedOpArg; + +// Typed constructors, the type is specified to simplify codegen, +// but isn't strictly necessary as it can be inferred from the TypedOpOp. +// It is fully pre-validated during the generation of the definition file. +typedOp#705b10ec type:string op:TypedOpOp = TypedOp; + +// The actual ops +copyOp#f48f418f from:string = TypedOpOp; + +getInputChannelByIdOp#3cb47531 from:string = TypedOpOp; +getInputUserByIdOp#c0ee4326 from:string = TypedOpOp; +getInputPeerByIdOp#19813750 from:string = TypedOpOp; + +// Literals & constructors (methods not allowed or needed here) +constructorOp#107f8d8a constructor:string args:Vector = TypedOpOp; + +vectorOp#f8fb8f72 values:Vector = TypedOpOp; + +intLiteralOp#cbfabe7c value:int = TypedOpOp; +longLiteralOp#d08b8d3a value:long = TypedOpOp; +stringLiteralOp#2b56ea8e value:string = TypedOpOp; +bytesLiteralOp#fdb395a4 value:bytes = TypedOpOp; +boolLiteralOp#37e07911 value:Bool = TypedOpOp; +doubleLiteralOp#3651e3bf value:double = TypedOpOp; +themeFormatLiteralOp#8e4f9208 = TypedOpOp; diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/list.json b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/list.json new file mode 100644 index 0000000..0a7724a --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/list.json @@ -0,0 +1 @@ +[18,23,25,27,33,38,40,41,42,44,45,46,51,53,55,57,62,65,66,68,70,71,72,73,75,81,82,86,89,91,95,97,98,100,102,103,104,105,109,110,111,112,113,114,117,119,120,121,129,131,135,136,139,140,142,143,144,145,146,148,150,151,152,155,158,160,161,162,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225] \ No newline at end of file diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/list_file_ref_map.json b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/list_file_ref_map.json new file mode 100644 index 0000000..8fdb225 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/list_file_ref_map.json @@ -0,0 +1 @@ +[214,215,216,217,218,219,220,221,222,223,224,225] \ No newline at end of file diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/AnnotationsBuilder.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/AnnotationsBuilder.php new file mode 100644 index 0000000..9da1b7c --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/AnnotationsBuilder.php @@ -0,0 +1,699 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto; + +use AssertionError; +use danog\ClassFinder\ClassFinder; +use danog\MadelineProto\TL\TL; +use ReflectionClass; +use ReflectionMethod; +use ReflectionNamedType; +use ReflectionType; +use ReflectionUnionType; + +/** + * @internal + */ +final class AnnotationsBuilder +{ + /** + * Reflection classes. + */ + private array $reflectionClasses = []; + /** + * Namespace. + */ + private string $namespace; + /** + * TL instance. + */ + private TL $TL; + private array $blacklist; + private array $blacklistHard; + private array $special; + public function __construct(Logger $logger, array $settings, array $reflectionClasses, string $namespace) + { + $this->reflectionClasses = $reflectionClasses; + $this->namespace = $namespace; + /** @psalm-suppress InvalidArgument */ + $this->TL = new TL(); + $this->TL->init($settings['TL']); + $this->blacklist = json_decode(file_get_contents(__DIR__.'/../docs/template/disallow.json'), true); + $this->blacklist['updates.getDifference'] = 'You cannot use this method directly, please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html), instead.'; + $this->blacklist['updates.getChannelDifference'] = 'You cannot use this method directly, please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html), instead.'; + $this->blacklist['updates.getState'] = 'You cannot use this method directly, please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html), instead.'; + $this->blacklistHard = $this->blacklist; + unset($this->blacklistHard['messages.getHistory'], $this->blacklistHard['channels.getMessages'], $this->blacklistHard['messages.getMessages'], $this->blacklistHard['updates.getDifference'], $this->blacklistHard['updates.getChannelDifference'], $this->blacklistHard['updates.getState']); + + file_put_contents(__DIR__.'/../src/Namespace/Blacklist.php', 'blacklistHard, true).'; +} + '); + $special = []; + foreach (DocsBuilder::DEFAULT_TEMPLATES as $key => $types) { + $replace = match ($key) { + 'User' => 'array|int|string', + 'InputFile' => 'mixed', + 'PhoneCall' => '\\danog\\MadelineProto\\VoIP|array', + default => 'array' + }; + foreach ($types as $type) { + $special[$type] = $replace; + } + } + $this->special = $special; + } + public function mkAnnotations(): void + { + Logger::log('Generating annotations...', Logger::NOTICE); + $this->createInternalClasses(); + } + private static function isVector(string $type): array + { + if (str_contains($type, '<')) { + return [true, str_replace(['Vector<', '>'], '', $type)]; + } + return [false, $type]; + } + private function prepareTLType(string $type, string|int|null $pow): string + { + [$isVector, $type] = self::isVector($type); + if ($isVector) { + return \is_int($pow) ? 'array|null' : 'array'; + } + $type = match ($type) { + 'string' => 'string', + 'bytes' => 'string', + 'waveform' => 'array', + 'int' => 'int', + 'long' => 'int', + 'long|string' => 'int|string', + 'int256' => 'string', + 'strlong' => 'int', + 'double' => 'float', + 'float' => 'float', + 'Bool' => 'bool', + 'true' => 'bool', + 'InputMessage' => 'array|int', + 'InputMedia' => '\\danog\\MadelineProto\\EventHandler\\Media|array|string', + 'InputCheckPasswordSRP' => 'string|array', + 'DataJSON' => 'mixed', + 'JSONValue' => 'mixed', + default => $this->special[$type] ?? 'array' + }; + if ($type === 'mixed' || !$pow) { + return $type; + } + return $type.'|null'; + } + private function prepareTLPsalmType(string $type, bool $input, int $depth = -2, array $stack = []): string + { + [$isVector, $type] = self::isVector($type); + $base = match ($type) { + 'string' => 'string', + 'bytes' => 'string', + 'waveform' => 'non-empty-list>', + 'int' => 'int', + 'int256' => 'string', + 'long' => 'int', + 'int|string' => 'int|string', + 'strlong' => 'int', + 'double' => 'float', + 'float' => 'float', + 'Bool' => 'bool', + 'true' => 'bool', + 'Updates' => 'array', + 'InputCheckPasswordSRP' => 'string|array', + 'DataJSON' => 'mixed', + 'JSONValue' => 'mixed', + default => $this->special[$type] ?? '' + }; + if ($type === 'PollResults') { + return 'array'; + } + if ($type === 'channels.AdminLogResults') { + $depth = 3; + } + if ($type === 'messages.Messages') { + $depth = 3; + } + if ($type === 'messages.Dialogs') { + $depth = 3; + } + if ($type === 'MessageMedia') { + $depth = 2; + } + if ($type === 'DecryptedMessage' || $type === 'messages.BotResults' || $type === 'InputBotInlineResult') { + $depth = 2; + } + if ($type === 'WebPage') { + $depth = 3; + } + if ($type === 'Document' || $type === 'Photo') { + $depth = 3; + } + if ($depth > 3) { + $base = 'array'; + } + if (!$base) { + $constructors = []; + foreach ($this->TL->getConstructors()->by_id as $constructor) { + if ($constructor['type'] === $type) { + $params = ["_: '{$constructor['predicate']}'"]; + foreach ($this->filterParams($constructor['params'], $constructor['type']) as $name => $param) { + if (isset($stack[$param['type']])) { + continue 2; + } + $stack[$param['type']] = true; + if ($input) { + $optional = isset($param['pow']) ? '?' : ''; + } else { + $optional = isset($param['pow']) && \is_int($param['pow']) && $param['type'] !== 'true' + ? '?' + : ''; + } + $params []= "$name$optional: ".$this->prepareTLPsalmType($param['type'], $input, $depth+1, $stack); + unset($stack[$param['type']]); + } + $params = implode(', ', $params); + $constructors []= 'array{'.$params.'}'; + } + } + if ($constructors === []) { + throw new AssertionError("No constructors for $type!"); + } + $base = implode('|', $constructors); + } + if ($type === 'InputMessage') { + $base = "int|$base"; + } + if ($type === 'InputMedia') { + $base = "\\danog\\MadelineProto\\EventHandler\\Media|string|$base"; + } + if ($isVector) { + $base = "list<$base>"; + } + return $base; + } + private function prepareTLDefault(string $type): string + { + [$isVector, $type] = self::isVector($type); + if ($isVector) { + return '[]'; + } + return match ($type) { + 'string' => "''", + 'bytes' => "''", + 'int' => '0', + 'long' => '0', + 'strlong' => '0', + 'double' => '0.0', + 'float' => '0.0', + 'Bool' => 'false', + 'true' => 'false', + 'DataJSON' => 'null', + 'JSONValue' => 'null', + default => 'null' + }; + } + private function preparePsalmDefault(string $type): string + { + [$isVector, $type] = self::isVector($type); + if ($isVector) { + return 'array'; + } + return match ($type) { + 'string' => "''", + 'bytes' => "''", + 'int' => '0', + 'long' => '0', + 'strlong' => '0', + 'double' => '0.0', + 'float' => '0.0', + 'Bool' => 'false', + 'true' => 'false', + 'DataJSON' => 'null', + 'JSONValue' => 'null', + default => 'null' + }; + } + private function prepareTLTypeDescription(string $type, string $description): string + { + [$isList, $type] = self::isVector($type); + if ($isList) { + $descriptionEnhanced = "Array of $description"; + } else { + $descriptionEnhanced = $description; + } + return match ($type) { + 'string' => $description, + 'bytes' => $description, + 'waveform' => $description, + 'int' => $description, + 'long' => $description, + 'strlong' => $description, + 'double' => $description, + 'float' => $description, + 'Bool' => $description, + 'true' => $description, + 'DataJSON' => 'Any JSON-encodable data', + 'JSONValue' => 'Any JSON-encodable data', + 'InputFile' => 'A file name or a file URL. You can also use amphp async streams, amphp HTTP response objects, and [much more](https://docs.madelineproto.xyz/docs/FILES.html#downloading-files)!', + default => $descriptionEnhanced + ? "$descriptionEnhanced @see https://docs.madelineproto.xyz/API_docs/types/$type.html" + : "@see https://docs.madelineproto.xyz/API_docs/types/$type.html" + }; + } + private function filterParams(array $params, string $type, ?string $method = null): array + { + $newParams = []; + foreach ($params as $param) { + if (\in_array($param['name'], ['flags', 'flags2', 'random_bytes'], true)) { + continue; + } + if ($param['name'] === 'random_id' && stripos($method ?? $type, 'sponsored') === false) { + continue; + } + if ($method) { + $param['description'] = str_replace(['](../', '.md'], ['](https://docs.madelineproto.xyz/API_docs/', '.html'], Lang::$lang['en']["method_{$method}_param_{$param['name']}_type_{$param['type']}"] ?? ''); + } + $param['type'] = ltrim($param['type'], '%'); + if ($param['name'] === 'data' && $type === 'messages.SentEncryptedMessage') { + $param['name'] = 'message'; + $param['type'] = 'DecryptedMessage'; + } + if ($param['name'] === 'bytes' && $type === 'EncryptedMessage') { + $param['name'] = 'decrypted_message'; + $param['type'] = 'DecryptedMessage'; + } + if ($type === 'DecryptedMessageMedia' && \in_array($param['name'], ['key', 'iv'], true)) { + continue; + } + if ($param['name'] === 'chat_id' && $method !== 'messages.discardEncryption') { + $param['type'] = 'InputPeer'; + } + if ($param['name'] === 'hash' && $param['type'] === 'long') { + $param['pow'] ??= 'optional'; + $param['type'] = 'Vector t'; + $param['subtype'] = 'int|string'; + } + if (\in_array($param['type'], ['int', 'long', 'strlong', 'string', 'bytes'], true)) { + $param['pow'] ??= 'optional'; + } + $param['array'] = isset($param['subtype']); + if ($param['array']) { + $param['subtype'] = ltrim($param['subtype'], '%'); + $param['type'] = 'Vector<'.$param['subtype'].'>'; + $param['pow'] ??= 'optional'; + } + if ($this->TL->getConstructors()->findByPredicate(lcfirst($param['type']).'Empty')) { + $param['pow'] ??= 'optional'; + } + $newParams[$param['name']] = $param; + } + uasort($newParams, static fn (array $arr1, array $arr2) => isset($arr1['pow']) <=> isset($arr2['pow'])); + return $newParams; + } + private function prepareTLParams(array $data): array + { + [ + 'params' => $params, + 'type' => $type, + 'method' => $method + ] = $data; + $params = $this->filterParams($params, $type, $method); + $contents = ''; + $signature = []; + + if (\in_array($method, ['messages.getSplitRanges', 'contacts.getSaved', 'channels.getLeftChannels'], true)) { + $contents .= " * @param int \$takeoutId Takeout ID, generated using account.initTakeoutSession, see [the takeout docs](https://core.telegram.org/api/takeout) for more info.\n"; + $signature []= "int \$takeoutId"; + } + + foreach ($params as $name => $param) { + if ($name === 'reply_to') { + $param['pow'] ??= 'yes'; + } + + $description = $this->prepareTLTypeDescription($param['type'], $param['description']); + $psalmType = $this->prepareTLPsalmType($param['type'], true); + $type = $this->prepareTLType($param['type'], $param['pow'] ?? null); + $param_var = $type.' $'.$name; + if (isset($param['pow'])) { + if (\is_int($param['pow'])) { + $param_var .= ' = null'; + $psalmDef = '|null'; + } else { + $param_var .= ' = '.$this->prepareTLDefault($param['type']); + $psalmDef = $this->preparePsalmDefault($param['type']); + if ($psalmDef === 'array') { + $psalmType .= '|'.$psalmDef; + } + } + } + $signature []= $param_var; + $contents .= " * @param {$psalmType} \${$name} {$description}\n"; + + if ($name === 'entities') { + $contents .= " * @param \\danog\\MadelineProto\\ParseMode \$parse_mode Whether to parse HTML or Markdown markup in the message\n"; + $signature []= "\\danog\\MadelineProto\\ParseMode \$parse_mode = \\danog\\MadelineProto\\ParseMode::TEXT"; + } + } + $contents .= " * @param ?int \$floodWaitLimit Can be used to specify a custom flood wait limit: if a FLOOD_WAIT_ rate limiting error is received with a waiting period bigger than this integer, an RPCErrorException will be thrown; otherwise, MadelineProto will simply wait for the specified amount of time. Defaults to the value specified in the settings: https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/RPC.html#setfloodtimeout-int-floodtimeout-self\n"; + $signature []= "?int \$floodWaitLimit = null"; + $contents .= " * @param ?string \$queueId If specified, ensures strict server-side execution order of concurrent calls with the same queue ID.\n"; + $signature []= "?string \$queueId = null"; + $contents .= " * @param ?\\Amp\\Cancellation \$cancellation Cancellation\n"; + $signature []= "?\\Amp\\Cancellation \$cancellation = null"; + + // TODO users.getUsers + if (\in_array($method, ['messages.getDialogs', 'messages.getHistory', 'messages.search', 'stories.getStoriesArchive', 'photos.getUserPhotos', 'account.getAuthorizations', 'account.getWebAuthorizations'], true)) { + $contents .= " * @param ?int \$takeoutId Optional takeout ID, generated using account.initTakeoutSession, see [the takeout docs](https://core.telegram.org/api/takeout) for more info.\n"; + $signature []= "?int \$takeoutId = null"; + } + + static $business; + if (!$business) { + $business = json_decode(file_get_contents('https://raw.githubusercontent.com/danog/rpc-db/master/core.json'), true)['business_supported']; + } + if (\in_array($method, $business, true)) { + $contents .= " * @param ?string \$businessConnectionId Business connection ID, received through an updateBotBusinessConnect update.\n"; + $signature []= "?string \$businessConnectionId = null"; + } + + return [$contents, $signature]; + } + /** + * Create internalDoc. + */ + private function createInternalClasses(): void + { + Logger::log('Creating internal classes...', Logger::NOTICE); + $internalDoc = []; + foreach ($this->TL->getMethods()->by_id as $data) { + if (!strpos($data['method'], '.')) { + continue; + } + if ($data['type'] === 'Vector t') { + $data['type'] = "Vector<{$data['subtype']}>"; + } + [$namespace, $method] = explode('.', $data['method']); + if (!\in_array($namespace, $this->TL->getMethodNamespaces(), true)) { + continue; + } + if (isset($this->blacklist[$data['method']])) { + continue; + } + + $title = str_replace(['](../', '.md'], ['](https://docs.madelineproto.xyz/API_docs/', '.html'], Lang::$lang['en']["method_{$data['method']}"] ?? ''); + $title = implode("\n * ", explode("\n", $title)); + $contents = "\n /**\n"; + $contents .= " * {$title}\n"; + $contents .= " *\n"; + [$params, $signature] = $this->prepareTLParams($data); + $contents .= $params; + $returnType = $this->prepareTLType($data['type'], $data['pow'] ?? null); + $psalmType = $this->prepareTLPsalmType($data['type'], false); + $description = $this->prepareTLTypeDescription($data['type'], ''); + $contents .= " * @return {$psalmType} {$description}\n"; + $contents .= " */\n"; + $contents .= " public function {$method}("; + $contents .= implode(', ', $signature); + $contents .= "): {$returnType};\n"; + + $internalDoc[$namespace][$method] = $contents; + } + $class = new ReflectionClass($this->reflectionClasses['MTProto']); + $methods = $class->getMethods((ReflectionMethod::IS_STATIC & ReflectionMethod::IS_PUBLIC) | ReflectionMethod::IS_PUBLIC); + $class = new ReflectionClass(Tools::class); + $methods = array_merge($methods, $class->getMethods((ReflectionMethod::IS_STATIC & ReflectionMethod::IS_PUBLIC) | ReflectionMethod::IS_PUBLIC)); + foreach ($methods as $key => $method) { + $name = $method->getName(); + if ($name == 'methodCallAsyncRead') { + unset($methods[array_search('methodCall', $methods, true)]); + } elseif (str_starts_with($name, '__')) { + unset($methods[$key]); + } elseif (stripos($name, 'async') !== false) { + if (str_contains($name, '_async')) { + unset($methods[array_search(str_ireplace('_async', '', $name), $methods, true)]); + } else { + unset($methods[array_search(str_ireplace('async', '', $name), $methods, true)]); + } + } + } + + $sortedMethods = []; + foreach ($methods as $method) { + $sortedMethods[$method->getName()] = $method; + } + ksort($sortedMethods); + $methods = array_values($sortedMethods); + + foreach ($methods as $method) { + $name = $method->getName(); + if (str_contains($method->getDocComment() ?: '', '@internal')) { + continue; + } + $static = $method->isStatic(); + if (!$static) { + $code = file_get_contents($method->getFileName()); + $code = implode("\n", \array_slice(explode("\n", $code), $method->getStartLine(), $method->getEndLine() - $method->getStartLine())); + if (!str_contains($code, '$this')) { + Logger::log("{$name} should be STATIC!", Logger::FATAL_ERROR); + } + } + if ($name === 'initDbProperties') { + continue; + } + if ($name === 'saveDbProperties') { + continue; + } + if ($name == 'methodCallAsyncRead') { + $name = 'methodCall'; + } elseif (stripos($name, 'async') !== false) { + if (str_contains($name, '_async')) { + $name = str_ireplace('_async', '', $name); + } else { + $name = str_ireplace('async', '', $name); + } + } + $name = StrTools::toCamelCase($name); + $name = str_ireplace(['mtproto', 'api'], ['MTProto', 'API'], $name); + $doc = 'final public '; + if ($static) { + $doc .= 'static '; + } + $doc .= 'function '; + $doc .= $name; + $doc .= '('; + $paramList = ''; + $hasCancellation = false; + foreach ($method->getParameters() as $param) { + if ($type = $param->getType()) { + $doc .= $this->typeToStr($type).' '; + } else { + Logger::log($name.'.'.$param->getName().' has no type!', Logger::WARNING); + } + if ($param->isVariadic()) { + $doc .= '...'; + } + if ($param->isPassedByReference()) { + $doc .= '&'; + } + $doc .= '$'; + $doc .= $param->getName(); + if ($param->isOptional() && !$param->isVariadic()) { + $doc .= ' = '; + if ($param->isDefaultValueConstant()) { + $doc .= '\\'.str_replace(['NULL', 'self'], ['null', 'danog\\MadelineProto\\MTProto'], $param->getDefaultValueConstantName()); + } else { + $doc .= str_replace('NULL', 'null', var_export($param->getDefaultValue(), true)); + } + } + $doc .= ', '; + if ($param->isVariadic()) { + $paramList .= '...'; + } + $paramList .= '$'.$param->getName(); + if ($param->getName() === 'cancellation') { + $hasCancellation = true; + } + $paramList .= ', '; + } + if (!$hasCancellation && !$static) { + Logger::log($name.'.'.$param->getName().' has no cancellation!', Logger::WARNING); + } + $type = $method->getReturnType(); + $hasReturnValue = $type !== null; + $doc = rtrim($doc, ', '); + $paramList = rtrim($paramList, ', '); + $doc .= ')'; + $async = true; + if ($hasReturnValue) { + $doc .= ': '; + $doc .= $this->typeToStr($type); + $async = false; + } + if ($method->getDeclaringClass()->getName() == Tools::class) { + $async = false; + } + if ($method->getDeclaringClass()->getName() == StrTools::class) { + $async = false; + } + if ($method->getDeclaringClass()->getName() == AsyncTools::class) { + $async = false; + } + $ret = $type && $type instanceof ReflectionNamedType && $type->getName() === 'void' ? '' : 'return'; + $doc .= "\n{\n"; + if ($async) { + $doc .= " {$ret} \$this->wrapper->getAPI()->{$name}({$paramList});\n"; + } elseif (!$static) { + $doc .= " {$ret} \$this->wrapper->getAPI()->{$name}({$paramList});\n"; + } else { + $doc .= " {$ret} \\".$method->getDeclaringClass()->getName().'::'.$name."({$paramList});\n"; + } + $doc .= "}\n"; + if (!$method->getDocComment()) { + Logger::log("{$name} has no PHPDOC!", Logger::FATAL_ERROR); + } + if (!$type) { + Logger::log("{$name} has no return type!", Logger::FATAL_ERROR); + } + $phpdoc = $method->getDocComment() ?: ''; + $internalDoc['InternalDoc'][$name] = $phpdoc; + $internalDoc['InternalDoc'][$name] .= "\n ".implode("\n ", explode("\n", $doc)); + } + foreach ($internalDoc as $namespace => $methods) { + if ($namespace === 'InternalDoc') { + $handle = fopen(__DIR__.'/../src/InternalDoc.php', 'w'); + fwrite($handle, "namespace};\n"); + fwrite($handle, "use Generator;\n"); + fwrite($handle, "use Amp\\Future;\n"); + fwrite($handle, "use Closure;\n"); + fwrite($handle, "use __PHP_Incomplete_Class;\n"); + fwrite($handle, "use Amp\\ByteStream\\WritableStream;\n"); + fwrite($handle, "use Amp\\ByteStream\\ReadableStream;\n"); + fwrite($handle, "use Amp\\ByteStream\\Pipe;\n"); + fwrite($handle, "use Amp\\Cancellation;\n"); + fwrite($handle, "use Amp\\Http\\Server\\Request as ServerRequest;\n"); + fwrite($handle, "use danog\\MadelineProto\\Broadcast\\Action;\n"); + fwrite($handle, "use danog\\MadelineProto\\MTProtoTools\\DialogId;\n"); + $had = []; + foreach (ClassFinder::getClassesInNamespace(\danog\MadelineProto\EventHandler::class, ClassFinder::RECURSIVE_MODE) as $class) { + $name = basename(str_replace('\\', '//', $class)); + if (isset($had[$name]) || $name === 'Status' || $name === 'Action') { + continue; + } + $had[$name] = true; + fwrite($handle, "use $class;\n"); + } + /** @psalm-suppress UndefinedClass */ + foreach (ClassFinder::getClassesInNamespace(\danog\MadelineProto\Ipc::class, ClassFinder::RECURSIVE_MODE) as $class) { + if (str_contains($class, 'Wrapper')) { + continue; + } + fwrite($handle, "use $class;\n"); + } + /** @psalm-suppress UndefinedClass */ + foreach (ClassFinder::getClassesInNamespace(\danog\MadelineProto\Broadcast::class, ClassFinder::RECURSIVE_MODE) as $class) { + fwrite($handle, "use $class;\n"); + } + + fwrite($handle, "\n/** @psalm-suppress PossiblyNullReference, PropertyNotSetInConstructor */\nabstract class {$namespace}\n{\nprotected APIWrapper \$wrapper;\n"); + foreach ($this->TL->getMethodNamespaces() as $namespace) { + $namespaceInterface = '\\danog\\MadelineProto\\Namespace\\'.ucfirst($namespace); + fwrite($handle, '/** @var '.$namespaceInterface.' $'.$namespace." */\n"); + fwrite($handle, 'public $'.$namespace.";\n"); + } + fwrite($handle, ' + /** + * Export APIFactory instance with the specified namespace. + * @psalm-suppress InaccessibleProperty + */ + protected function exportNamespaces(): void + { + '); + foreach ($this->TL->getMethodNamespaces() as $namespace) { + fwrite($handle, "\$this->$namespace ??= new \\danog\\MadelineProto\\Namespace\\AbstractAPI('$namespace');\n"); + fwrite($handle, "\$this->{$namespace}->setWrapper(\$this->wrapper);\n"); + } + fwrite($handle, "}\n"); + } else { + $namespace = ucfirst($namespace); + $handle = fopen(__DIR__."/../src/Namespace/$namespace.php", 'w'); + fwrite($handle, "namespace}\\Namespace;\n"); + + fwrite($handle, "\ninterface {$namespace}\n{"); + } + foreach ($methods as $contents) { + fwrite($handle, $contents); + } + fwrite($handle, "}\n"); + } + fclose($handle); + + $handle = fopen(__DIR__.'/../src/EventHandler/SimpleFilters.php', 'w'); + fwrite($handle, "namespace}\\EventHandler;\n"); + fwrite($handle, "/** @internal An internal interface used to avoid type errors when using simple filters. */\n"); + fwrite($handle, "interface SimpleFilters extends "); + /** @psalm-suppress UndefinedClass */ + fwrite($handle, implode(", ", array_map(static fn ($s) => "\\$s", ClassFinder::getClassesInNamespace(\danog\MadelineProto\EventHandler\SimpleFilter::class, ClassFinder::RECURSIVE_MODE|ClassFinder::ALLOW_INTERFACES)))); + fwrite($handle, "{}\n"); + } + + private function typeToStr(ReflectionType $type): string + { + $new = ''; + if ($type instanceof ReflectionNamedType) { + if ($type->allowsNull() && $type->getName() !== 'mixed' && $type->getName() !== 'null') { + $new .= '?'; + } + if (!$type->isBuiltin()) { + $new .= '\\'; + }; + $new .= $type->getName() === 'self' ? $this->reflectionClasses['API'] : $type->getName(); + } elseif ($type instanceof ReflectionUnionType) { + return implode('|', array_map($this->typeToStr(...), $type->getTypes())); + } + return $new; + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/DocsBuilder.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/DocsBuilder.php new file mode 100644 index 0000000..e31a9e8 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/DocsBuilder.php @@ -0,0 +1,168 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto; + +use danog\MadelineProto\DocsBuilder\Constructors; +use danog\MadelineProto\DocsBuilder\Methods; +use danog\MadelineProto\TL\TL; + +// This code was written a few years ago: it is garbage, and has to be rewritten +final class DocsBuilder +{ + public const DEFAULT_TEMPLATES = [ + 'User' => ['User', 'InputUser', 'Chat', 'InputChannel', 'Peer', 'InputPeer'], + 'ReplyMarkup' => ['ReplyMarkup'], + 'InputFile' => ['InputFile', 'InputEncryptedFile'], + 'InputEncryptedChat' => ['InputEncryptedChat'], + 'PhoneCall' => ['PhoneCall'], + 'InputPhoto' => ['InputPhoto'], + 'InputDocument' => ['InputDocument'], + 'InputMedia' => ['InputMedia'], + 'InputMessage' => ['InputMessage'], + 'KeyboardButton' => ['KeyboardButton'], + 'InputCheckPasswordSRP' => ['InputCheckPasswordSRP'], + 'Updates' => ['Updates'], + ]; + use Methods; + use Constructors; + public $td = false; + protected array $settings; + protected string $index; + protected Logger $logger; + protected TL $TL; + protected array $tdDescriptions; + public function __construct(Logger $logger, array $settings) + { + $this->logger = $logger; + set_error_handler(['\\danog\\MadelineProto\\Exception', 'ExceptionErrorHandler']); + /** @psalm-suppress InvalidArgument */ + $this->TL = new TL(null); + $this->TL->init($settings['TL']); + $this->settings = $settings; + if (!file_exists($this->settings['output_dir'])) { + mkdir($this->settings['output_dir']); + } + chdir($this->settings['output_dir']); + $this->index = $settings['readme'] ? 'README.md' : 'index.md'; + + foreach (glob($this->settings['template'].'/*') as $template) { + $this->templates[basename($template, '.md')] = file_get_contents($template); + } + } + /** + * Documentation templates. + * + */ + protected array $templates = []; + + protected static function markdownEscape(string $s): string + { + return str_replace('_', '\\_', $s); + } + public $types = []; + public $any = '*'; + public function mkDocs(): void + { + Logger::log('Generating documentation index...', Logger::NOTICE); + file_put_contents($this->index, $this->template('index', $this->settings['description'])); + + $this->mkMethods(); + $this->mkConstructors(); + foreach (glob('types/*') as $unlink) { + unlink($unlink); + } + if (file_exists('types')) { + rmdir('types'); + } + mkdir('types'); + ksort($this->types); + $index = ''; + Logger::log('Generating types documentation...', Logger::NOTICE); + foreach ($this->types as $otype => $keys) { + $type = StrTools::typeEscape($otype); + $index .= '['.self::markdownEscape($type).'](/API_docs/types/'.$type.'.md) + +'; + $constructors = ''; + foreach ($keys['constructors'] as $data) { + $predicate = $data['predicate'].(isset($data['layer']) && $data['layer'] !== '' ? '_'.$data['layer'] : ''); + $md_predicate = self::markdownEscape($predicate); + $constructors .= "[$md_predicate](/API_docs/constructors/$predicate.md) \n\n"; + } + $methods = ''; + foreach ($keys['methods'] as $data) { + $name = $data['method']; + $md_name = str_replace(['.', '_'], ['->', '\\_'], $name); + $methods .= "[\$MadelineProto->$md_name](/API_docs/methods/$name.md) \n\n"; + } + $symFile = str_replace('.', '_', $type); + $redir = $symFile !== $type ? "\nredirect_from: /API_docs/types/{$symFile}.html" : ''; + $header = ''; + if (!isset($this->settings['td'])) { + foreach (self::DEFAULT_TEMPLATES as $template => $types) { + if (\in_array($type, $types, true)) { + $header .= $this->template($template, $type); + } + } + } + if (isset($this->tdDescriptions['types'][$otype])) { + $header = "{$this->tdDescriptions['types'][$otype]}\n\n$header"; + } + $header = sprintf( + $this->templates['Type'], + $type, + $redir, + self::markdownEscape($type), + $header, + $constructors, + $methods, + ); + file_put_contents('types/'.$type.'.md', $header); + } + Logger::log('Generating types index...', Logger::NOTICE); + file_put_contents('types/'.$this->index, $this->templates['types-index'].$index); + + Logger::log('Generating additional types...', Logger::NOTICE); + foreach (['waveform', 'string', 'bytes', 'int', 'int53', 'long', 'long|string', 'int128', 'int256', 'int512', 'double', 'Bool', 'DataJSON', '!X'] as $type) { + file_put_contents("types/$type.md", $this->templates[$type]); + } + foreach (['boolFalse', 'boolTrue', 'null', 'photoStrippedSize'] as $constructor) { + file_put_contents("constructors/$constructor.md", $this->templates[$constructor]); + } + Logger::log('Done!', Logger::NOTICE); + } + public static function addToLang(string $key, string $value = '', bool $force = false): void + { + if (!isset(Lang::$lang['en'][$key]) || $force) { + Lang::$lang['en'][$key] = $value; + } + } + /** + * Get formatted template string. + * + * @param string $name Template name + * @param string ...$params Params + */ + protected function template(string $name, string ...$params): string + { + return sprintf($this->templates[$name], ...$params); + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/DocsBuilder/Constructors.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/DocsBuilder/Constructors.php new file mode 100644 index 0000000..899f250 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/DocsBuilder/Constructors.php @@ -0,0 +1,261 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\DocsBuilder; + +use danog\MadelineProto\Lang; +use danog\MadelineProto\Logger; +use danog\MadelineProto\Tools; + +use const PHP_EOL; + +/** + * @internal This garbage code needs to be thrown away completely and rewritten from scratch. + */ +trait Constructors +{ + private array $docs_constructors; + public function mkConstructors(): void + { + foreach (glob('constructors/'.$this->any) as $unlink) { + unlink($unlink); + } + if (file_exists('constructors')) { + rmdir('constructors'); + } + mkdir('constructors'); + $this->docs_constructors = []; + $this->logger->logger('Generating constructors documentation...', Logger::NOTICE); + $got = []; + foreach ($this->TL->getConstructors()->by_predicate_and_layer as $predicate => $id) { + $data = $this->TL->getConstructors()->by_id[$id]; + if (isset($got[$id])) { + $data['layer'] = ''; + } + $got[$id] = ''; + $layer = isset($data['layer']) && $data['layer'] !== '' ? '_'.$data['layer'] : ''; + $type = $data['type']; + $constructor = $data['predicate']; + $php_type = Tools::typeEscape($type); + $php_constructor = Tools::typeEscape($constructor); + if (!isset($this->types[$php_type])) { + $this->types[$php_type] = ['constructors' => [], 'methods' => []]; + } + if (!\in_array($data, $this->types[$php_type]['constructors'], true)) { + $this->types[$php_type]['constructors'][] = $data; + } + $params = ''; + foreach ($data['params'] as $param) { + if ($param['type'] === 'strlong') { + $param['type'] = 'long'; + } + if (\in_array($param['name'], ['flags', 'flags2', 'random_bytes'], true)) { + continue; + } + if ($param['name'] === 'random_id' && stripos($constructor, 'sponsored') === false) { + continue; + } + if ($param['name'] === 'peer' && $param['type'] === 'Peer') { + $param['type'] = 'long'; + } + if ($type === 'EncryptedMessage' && $param['name'] === 'bytes' && !isset($this->settings['td'])) { + $param['name'] = 'decrypted_message'; + $param['type'] = 'DecryptedMessage'; + } + $type_or_subtype = isset($param['subtype']) ? 'subtype' : 'type'; + $type_or_bare_type = ctype_upper(Tools::end(explode('.', $param[$type_or_subtype]))[0]) || \in_array($param[$type_or_subtype], ['!X', 'X', 'bytes', 'true', 'false', 'double', 'string', 'Bool', 'int53', 'int', 'long', 'int128', 'int256', 'int512'], true) ? 'types' : 'constructors'; + $param[$type_or_subtype] = str_replace(['true', 'false'], ['Bool', 'Bool'], $param[$type_or_subtype]); + if (preg_match('/%/', $param[$type_or_subtype])) { + $param[$type_or_subtype] = $this->TL->getConstructors()->findByType(str_replace('%', '', $param[$type_or_subtype]))['predicate']; + } + if (substr($param[$type_or_subtype], -1) === '>') { + $param[$type_or_subtype] = substr($param[$type_or_subtype], 0, -1); + } + $params .= "'".$param['name']."' => "; + $param[$type_or_subtype] = '['.self::markdownEscape($param[$type_or_subtype]).'](/API_docs/'.$type_or_bare_type.'/'.$param[$type_or_subtype].'.md)'; + $params .= (isset($param['subtype']) ? '\\['.$param[$type_or_subtype].'\\]' : $param[$type_or_subtype]).', '; + } + $md_constructor = self::markdownEscape($constructor.$layer); + $this->docs_constructors[$constructor] = '[$'.$md_constructor.'](/API_docs/constructors/'.$php_constructor.$layer.'.md) = \\['.$params.'\\]; + +'; + $table = empty($data['params']) ? '' : '### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +'; + if (!isset($this->TL->getDescriptionsRef()['constructors'][$constructor])) { + $this->addToLang('object_'.$constructor); + if (Lang::$lang['en']['object_'.$constructor] !== '') { + /** @psalm-suppress InvalidArrayAssignment */ + $this->TL->getDescriptionsRef()['constructors'][$constructor]['description'] = Lang::$lang['en']['object_'.$constructor]; + } + } + if (isset($this->TL->getDescriptionsRef()['constructors'][$constructor]) && !empty($data['params'])) { + $table = '### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +'; + } + $params = ''; + $lua_params = ''; + $pwr_params = ''; + $hasreplymarkup = false; + $hasentities = false; + foreach ($data['params'] as $param) { + if ($param['type'] === 'strlong') { + $param['type'] = 'long'; + } + if (\in_array($param['name'], ['flags', 'flags2', 'random_bytes'], true)) { + continue; + } + if ($param['name'] === 'random_id' && stripos($constructor, 'sponsored') === false) { + continue; + } + if ($type === 'EncryptedMessage' && $param['name'] === 'bytes' && !isset($this->settings['td'])) { + $param['name'] = 'decrypted_message'; + $param['type'] = 'DecryptedMessage'; + } + if ($param['name'] === 'peer' && $param['type'] === 'Peer') { + $param['type'] = 'long'; + } + if ($type === 'DecryptedMessageMedia' && \in_array($param['name'], ['key', 'iv'], true)) { + unset(Lang::$lang['en']['object_'.$constructor.'_param_'.$param['name'].'_type_'.$param['type']]); + continue; + } + $ptype = $param[isset($param['subtype']) ? 'subtype' : 'type']; + if (preg_match('/%/', $ptype)) { + $ptype = $this->TL->getConstructors()->findByType(str_replace('%', '', $ptype))['predicate']; + } + $type_or_bare_type = (ctype_upper(Tools::end(explode('_', $ptype))[0]) || \in_array($ptype, ['!X', 'X', 'bytes', 'true', 'false', 'double', 'string', 'Bool', 'int53', 'int', 'long', 'int128', 'int256', 'int512'], true)) && $ptype !== 'MTmessage' ? 'types' : 'constructors'; + if (substr($ptype, -1) === '>') { + $ptype = substr($ptype, 0, -1); + } + switch ($ptype) { + case 'true': + case 'false': + $ptype = 'Bool'; + } + $human_ptype = $ptype; + if (str_starts_with($type, 'Input') && \in_array($ptype, ['User', 'InputUser', 'Chat', 'InputChannel', 'Peer', 'InputPeer'], true) && !isset($this->settings['td'])) { + $human_ptype = 'Username, chat ID, Update, Message or '.$ptype; + } + if (str_starts_with($type, 'Input') && \in_array($ptype, ['InputMedia', 'InputDocument', 'InputPhoto'], true) && !isset($this->settings['td'])) { + $human_ptype = 'MessageMedia, Message, Update or '.$ptype; + } + if (\in_array($ptype, ['InputMessage'], true) && !isset($this->settings['td'])) { + $human_ptype = 'Message ID or '.$ptype; + } + if (\in_array($ptype, ['InputEncryptedChat'], true) && !isset($this->settings['td'])) { + $human_ptype = 'Secret chat ID, Update, EncryptedMessage or '.$ptype; + } + if (\in_array($ptype, ['InputFile'], true) && !isset($this->settings['td'])) { + $human_ptype = 'File path or '.$ptype; + } + if (\in_array($ptype, ['InputEncryptedFile'], true) && !isset($this->settings['td'])) { + $human_ptype = 'File path or '.$ptype; + } + $table .= '|'.self::markdownEscape($param['name']).'|'.(isset($param['subtype']) ? 'Array of ' : '').'['.self::markdownEscape($human_ptype).'](/API_docs/'.$type_or_bare_type.'/'.$ptype.'.md) | '.(isset($param['pow']) || $this->TL->getConstructors()->findByPredicate(lcfirst($param['type']).'Empty') || $data['type'] === 'InputMedia' && $param['name'] === 'mime_type' || $data['type'] === 'DocumentAttribute' && \in_array($param['name'], ['w', 'h', 'duration'], true) ? 'Optional' : 'Yes').'|'; + if (!isset($this->TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']])) { + $this->addToLang('object_'.$constructor.'_param_'.$param['name'].'_type_'.$param['type']); + if (isset($this->TL->getDescriptionsRef()['constructors'][$constructor]['description'])) { + /** @psalm-suppress InvalidArrayAssignment */ + $this->TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']] = Lang::$lang['en']['object_'.$constructor.'_param_'.$param['name'].'_type_'.$param['type']]; + } + } + if (isset($this->TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]) && $this->TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]) { + $table .= $this->TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']].'|'; + } + $table .= PHP_EOL; + $pptype = \in_array($ptype, ['string', 'bytes'], true) ? "'".$ptype."'" : $ptype; + $ppptype = \in_array($ptype, ['string'], true) ? '"'.$ptype.'"' : $ptype; + $ppptype = \in_array($ptype, ['bytes'], true) ? '{"_": "bytes", "bytes":"base64 encoded '.$ptype.'"}' : $ppptype; + $params .= ", '".$param['name']."' => "; + $params .= isset($param['subtype']) ? '['.$pptype.', '.$pptype.']' : $pptype; + $lua_params .= ', '.$param['name'].'='; + $lua_params .= isset($param['subtype']) ? '{'.$pptype.'}' : $pptype; + $pwr_params .= ', "'.$param['name'].'": '.(isset($param['subtype']) ? '['.$ppptype.']' : $ppptype); + if ($param['name'] === 'reply_markup') { + $hasreplymarkup = true; + } + if ($param['name'] === 'entities') { + $hasentities = true; + $table .= '|parse\\_mode| [string](/API_docs/types/string.md) | Whether to parse HTML or Markdown markup in the message| Optional | +'; + $params .= "parse_mode: 'string', "; + $lua_params .= "parseMode='string', "; + $pwr_params = "parseMode - string\n"; + } + } + $params = "['_' => '".$constructor."'".$params.']'; + $lua_params = "{_='".$constructor."'".$lua_params.'}'; + $pwr_params = '{"_": "'.$constructor.'"'.$pwr_params.'}'; + $description = isset($this->TL->getDescriptionsRef()['constructors'][$constructor]) ? $this->TL->getDescriptionsRef()['constructors'][$constructor]['description'] : $constructor.' attributes, type and example'; + $symFile = str_replace('.', '_', $constructor.$layer); + $redir = $symFile !== $constructor.$layer ? "\nredirect_from: /API_docs/constructors/{$symFile}.html" : ''; + $description = str_replace('"', "'", Tools::toString(rtrim(explode("\n", $description)[0], ':'))); + $header = '--- +title: "'.$constructor.'" +description: "'.$description.'" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png'.$redir.' +--- +# Constructor: '.self::markdownEscape($constructor.$layer).' +[Back to constructors index](/API_docs/constructors/index.md) + + + +'; + $table .= ' + + +'; + if (isset($this->TL->getDescriptionsRef()['constructors'][$constructor])) { + $header .= $this->TL->getDescriptionsRef()['constructors'][$constructor]['description'].PHP_EOL.PHP_EOL; + } + $type = '### Type: ['.self::markdownEscape($php_type).'](/API_docs/types/'.$php_type.'.md) + + +'; + $example = ''; + if (!isset($this->settings['td'])) { + if ($hasreplymarkup) { + $example = $this->template('reply_markup'); + } + if ($hasentities) { + $example = $this->template('parse_mode'); + } + $example .= $this->template('constructor-example', str_replace('.', '_', $constructor.$layer), $params, $lua_params); + } + file_put_contents('constructors/'.$constructor.$layer.'.md', $header.$table.$type.$example); + } + $this->logger->logger('Generating constructors index...', Logger::NOTICE); + ksort($this->docs_constructors); + $last_namespace = ''; + foreach ($this->docs_constructors as $constructor => &$value) { + $new_namespace = preg_replace('/_.*/', '', $constructor); + $br = $new_namespace != $last_namespace ? "***\n

" : ''; + $value = $br.$value; + $last_namespace = $new_namespace; + } + file_put_contents('constructors/'.$this->index, $this->template('constructors-index', implode('', $this->docs_constructors))); + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/DocsBuilder/Methods.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/DocsBuilder/Methods.php new file mode 100644 index 0000000..2cd2140 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/DocsBuilder/Methods.php @@ -0,0 +1,330 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\DocsBuilder; + +use AssertionError; +use danog\MadelineProto\API; +use danog\MadelineProto\Lang; +use danog\MadelineProto\Logger; +use danog\MadelineProto\StrTools; +use danog\MadelineProto\Tools; +use danog\PhpDoc\PhpDoc; +use danog\PhpDoc\PhpDoc\MethodDoc; +use ReflectionClass; +use ReflectionMethod; + +use const PHP_EOL; + +/** + * @internal This garbage code needs to be thrown away completely and rewritten from scratch. + */ +trait Methods +{ + private array $docs_methods; + private array $human_docs_methods; + public function mkMethods(): void + { + static $core; + if (!$core) { + $core = json_decode(file_get_contents('https://raw.githubusercontent.com/danog/rpc-db/master/core.json'), true); + } + $bot_only = $core['bot_only']; + $user_only = $core['user_only']; + $business = $core['business_supported']; + + static $errors; + if (!$errors) { + $errors = json_decode(file_get_contents('https://rpc.madelineproto.xyz/v4.json'), true); + } + $new = ['result' => []]; + foreach ($errors['result'] as $code => $suberrors) { + foreach ($suberrors as $method => $suberrors) { + if (!isset($new[$method])) { + $new[$method] = []; + } + foreach ($suberrors as $error) { + $new['result'][$method][] = [$error, $code]; + } + } + } + foreach (glob('methods/'.$this->any) as $unlink) { + unlink($unlink); + } + if (file_exists('methods')) { + rmdir('methods'); + } + mkdir('methods'); + $this->docs_methods = []; + $this->human_docs_methods = []; + $this->logger->logger('Generating methods documentation...', Logger::NOTICE); + foreach ($this->TL->getMethods()->by_id as $id => $data) { + if ($data['type'] === 'Vector t') { + $data['type'] = "Vector<{$data['subtype']}>"; + } + $method = $data['method']; + $phpMethod = StrTools::methodEscape($method); + $type = str_replace(['<', '>'], ['_of_', ''], $data['type']); + $php_type = preg_replace('/.*_of_/', '', $type); + if (!isset($this->types[$php_type])) { + $this->types[$php_type] = ['methods' => [], 'constructors' => []]; + } + if (!\in_array($data, $this->types[$php_type]['methods'], true)) { + $this->types[$php_type]['methods'][] = $data; + } + $params = ''; + foreach ($data['params'] as $param) { + if (\in_array($param['name'], ['flags', 'flags2', 'random_bytes'], true)) { + continue; + } + if ($param['name'] === 'random_id' && stripos($method, 'sponsored') === false) { + continue; + } + if ($param['name'] === 'data' && $type === 'messages_SentEncryptedMessage' && !isset($this->settings['td'])) { + $param['name'] = 'message'; + $param['type'] = 'DecryptedMessage'; + } + if ($param['name'] === 'chat_id' && $method !== 'messages.discardEncryption' && !isset($this->settings['td'])) { + $param['type'] = 'InputPeer'; + } + $type_or_subtype = isset($param['subtype']) ? 'subtype' : 'type'; + $type_or_bare_type = ctype_upper(Tools::end(explode('.', $param[$type_or_subtype]))[0]) || \in_array($param[$type_or_subtype], ['!X', 'X', 'bytes', 'true', 'false', 'double', 'string', 'Bool', 'int', 'long', 'int128', 'int256', 'int512', 'int53'], true) ? 'types' : 'constructors'; + $param[$type_or_subtype] = str_replace(['true', 'false'], ['Bool', 'Bool'], $param[$type_or_subtype]); + $param[$type_or_subtype] = '['.self::markdownEscape($param[$type_or_subtype]).'](/API_docs/'.$type_or_bare_type.'/'.$param[$type_or_subtype].'.md)'; + $param[$type_or_subtype] = '$'.$param[$type_or_subtype]; + $params .= $param['name'].': '.(isset($param['subtype']) ? '\\['.$param[$type_or_subtype].'\\]' : $param[$type_or_subtype]).', '; + } + if (!isset($this->tdDescriptions['methods'][$method])) { + $this->addToLang('method_'.$method); + if (Lang::$lang['en']['method_'.$method] !== '') { + $this->tdDescriptions['methods'][$method]['description'] = Lang::$lang['en']['method_'.$method]; + } + } + $md_method = '['.$phpMethod.'](/API_docs/methods/'.$method.'.md)'; + $this->docs_methods[$method] = '$MadelineProto->'.$md_method.'(\\['.$params.'\\]) === [$'.self::markdownEscape($type).'](/API_docs/types/'.$php_type.'.md) + +'; + $desc = StrTools::toString(trim(explode("\n", $this->tdDescriptions['methods'][$method]['description'] ?? '')[0], '.')); + if ($desc !== '') { + $desc .= ': '; + } + $this->human_docs_methods[$desc.$method] = '* '.$desc.$method.' + +'; + $params = ''; + $lua_params = ''; + $pwr_params = ''; + $json_params = ''; + $table = empty($data['params']) ? '' : '### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +'; + if (isset($this->tdDescriptions['methods'][$method]) && !empty($data['params'])) { + $table = '### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +'; + } + $hasentities = false; + $hasreplymarkup = false; + $hasmessage = false; + foreach ($data['params'] as $param) { + if (\in_array($param['name'], ['flags', 'flags2', 'random_bytes'], true)) { + continue; + } + if ($param['name'] === 'random_id' && stripos($method, 'sponsored') === false) { + continue; + } + if ($param['name'] === 'data' && $type === 'messages_SentEncryptedMessage' && !isset($this->settings['td'])) { + $param['name'] = 'message'; + $param['type'] = 'DecryptedMessage'; + } + if ($param['name'] === 'chat_id' && $method !== 'messages.discardEncryption' && !isset($this->settings['td'])) { + $param['type'] = 'InputPeer'; + } + if (!isset($this->tdDescriptions['methods'][$method]['params'][$param['name']])) { + if (isset($this->tdDescriptions['methods'][$method]['description'])) { + $this->tdDescriptions['methods'][$method]['params'][$param['name']] = Lang::$lang['en']['method_'.$method.'_param_'.$param['name'].'_type_'.$param['type']] ?? ''; + } + } + if ($param['name'] === 'hash' && ($param['type'] === 'long' || $param['type'] === 'int')) { + $param['pow'] = 'hi'; + $param['type'] = 'Vector t'; + $param['subtype'] = 'long|string'; + } + $ptype = $param[$type_or_subtype = isset($param['subtype']) ? 'subtype' : 'type']; + switch ($ptype) { + case 'true': + case 'false': + $ptype = 'Bool'; + } + $human_ptype = $ptype; + if (\in_array($ptype, ['User', 'InputUser', 'Chat', 'InputChannel', 'Peer', 'InputPeer'], true) && !isset($this->settings['td'])) { + $human_ptype = 'Username, chat ID, Update, Message or '.$ptype; + } + if (\in_array($ptype, ['InputMedia', 'InputPhoto', 'InputDocument'], true) && !isset($this->settings['td'])) { + $human_ptype = 'MessageMedia, Update, Message or '.$ptype; + } + if (\in_array($ptype, ['InputMessage'], true) && !isset($this->settings['td'])) { + $human_ptype = 'Message ID or '.$ptype; + } + if (\in_array($ptype, ['InputEncryptedChat'], true) && !isset($this->settings['td'])) { + $human_ptype = 'Secret chat ID, Update, EncryptedMessage or '.$ptype; + } + if (\in_array($ptype, ['InputFile'], true) && !isset($this->settings['td'])) { + $human_ptype = 'File path or '.$ptype; + } + if (\in_array($ptype, ['InputEncryptedFile'], true) && !isset($this->settings['td'])) { + $human_ptype = 'File path or '.$ptype; + } + $type_or_bare_type = ctype_upper(Tools::end(explode('.', $param[$type_or_subtype]))[0]) || \in_array($param[$type_or_subtype], ['!X', 'X', 'bytes', 'true', 'false', 'double', 'string', 'Bool', 'int', 'long', 'int128', 'int256', 'int512', 'int53', 'long|string'], true) ? 'types' : 'constructors'; + if (isset($this->tdDescriptions['methods'][$method])) { + $table .= '|'.self::markdownEscape($param['name']).'|'.(isset($param['subtype']) ? 'Array of ' : '').'['.self::markdownEscape($human_ptype).'](/API_docs/'.$type_or_bare_type.'/'.$ptype.'.md) | '.$this->tdDescriptions['methods'][$method]['params'][$param['name']].' | '.(isset($param['pow']) || $param['type'] === 'int' || $param['type'] === 'string' || $param['type'] === 'double' || ($id = $this->TL->getConstructors()->findByPredicate(lcfirst($param['type']).'Empty')) && $id['type'] === $param['type'] || ($id = $this->TL->getConstructors()->findByPredicate('input'.$param['type'].'Empty')) && $id['type'] === $param['type'] ? 'Optional' : 'Yes').'|'; + } else { + $table .= '|'.self::markdownEscape($param['name']).'|'.(isset($param['subtype']) ? 'Array of ' : '').'['.self::markdownEscape($human_ptype).'](/API_docs/'.$type_or_bare_type.'/'.$ptype.'.md) | '.(isset($param['pow']) || $param['type'] === 'int' || $param['type'] === 'string' || ($param['type'] === 'long' && $param['name'] === 'hash')|| ($id = $this->TL->getConstructors()->findByPredicate(lcfirst($param['type']).'Empty')) && $id['type'] === $param['type'] || ($id = $this->TL->getConstructors()->findByPredicate('input'.$param['type'].'Empty')) && $id['type'] === $param['type'] ? 'Optional' : 'Yes').'|'; + } + $table .= PHP_EOL; + $pptype = \in_array($ptype, ['string', 'bytes'], true) ? "'".$ptype."'" : '$'.$ptype; + $ppptype = \in_array($ptype, ['string'], true) ? '"'.$ptype.'"' : $ptype; + $ppptype = \in_array($ptype, ['bytes'], true) ? '{"_": "bytes", "bytes":"base64 encoded '.$ptype.'"}' : $ppptype; + $params .= $param['name'].': '; + $params .= (isset($param['subtype']) ? '['.$pptype.', '.$pptype.']' : $pptype).', '; + $json_params .= '"'.$param['name'].'": '.(isset($param['subtype']) ? '['.$ppptype.']' : $ppptype).', '; + $pwr_params .= $param['name'].' - Json encoded '.(isset($param['subtype']) ? ' array of '.$ptype : $ptype)."\n\n"; + $lua_params .= $param['name'].'='; + $lua_params .= (isset($param['subtype']) ? '{'.$pptype.'}' : $pptype).', '; + if ($param['name'] === 'reply_markup') { + $hasreplymarkup = true; + } + if ($param['name'] === 'message') { + $hasmessage = true; + } + if ($param['name'] === 'entities') { + $hasentities = true; + $table .= '|parse\\_mode| [string](/API_docs/types/string.md) | Whether to parse HTML or Markdown markup in the message| Optional | +'; + $params .= "parse_mode: 'string', "; + $lua_params .= "parseMode='string', "; + $json_params .= '"parseMode": "string"'; + $pwr_params = "parseMode - string\n"; + } + } + $description = isset($this->tdDescriptions['methods'][$method]) ? $this->tdDescriptions['methods'][$method]['description'] : $method.' parameters, return type and example'; + $symFile = str_replace('.', '_', $method); + $redir = $symFile !== $method ? "\nredirect_from: /API_docs/methods/{$symFile}.html" : ''; + $description = str_replace('"', "'", rtrim(explode("\n", $description)[0], ':')); + $header = $this->template('Method', $method, $description, $redir, self::markdownEscape($method)); + if ($this->td) { + $header .= "YOU CANNOT USE THIS METHOD IN MADELINEPROTO\n\n\n\n\n"; + } + if (\in_array($method, ['messages.getHistory', 'messages.getMessages', 'channels.getMessages'], true)) { + $header .= "# Warning: flood wait\n**Warning: this method is prone to rate limiting with flood waits, **which can lead to !!! ACCOUNT BANS !!!**, please use the [updates event handler, instead (which is 100% safe) »](/docs/UPDATES.html#async-event-driven)**\n\n"; + $header .= "# Warning: non-realtime results\n**Warning: this method is not suitable for receiving messages in real-time from chats and users, please use the [updates event handler, instead »](/docs/UPDATES.html#async-event-driven)**\n\n"; + $header .= "# Warning: this is probably NOT what you need\nYou probably need to use the [updates event handler, instead »](/docs/UPDATES.html#async-event-driven) :)\n\n"; + } + if (\in_array($method, ['updates.getDifference', 'updates.getState', 'updates.getChannelDifference'], true)) { + $header .= "# Warning: this is a low-level, complex method that **must never** be used directly.\nThe [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html) provides a high-level abstraction that **must** be used instead of this method to fetch updates.\nIf you want to fetch all users of a bot using a bot token, use [getDialogIds](https://docs.madelineproto.xyz/docs/DIALOGS.html) or the high-level [broadcast API](https://docs.madelineproto.xyz/docs/BROADCAST.html), instead.\n\n"; + } + $header .= isset($this->tdDescriptions['methods'][$method]) ? $this->tdDescriptions['methods'][$method]['description'].PHP_EOL.PHP_EOL : ''; + $table .= ' + +'; + $return = '### Return type: ['.self::markdownEscape($type).'](/API_docs/types/'.$php_type.'.md) + +'; + $canBeUsedByBots = !\in_array($method, $user_only, true); + $canBeUsedByUsers = !\in_array($method, $bot_only, true); + $supportsBusiness = \in_array($method, $business, true); + $example = ''; + if (!isset($this->settings['td'])) { + $example .= '### Can users use this method: **'.($canBeUsedByUsers ? 'YES' : 'NO')."**\n\n\n"; + $example .= '### Can bots use this method: **'.($canBeUsedByBots ? 'YES' : 'NO')."**\n\n\n"; + $example .= '### Can bots use this method over a business connection with the `businessConnectionId` flag: **'.($supportsBusiness ? 'YES' : 'NO')."**\n\n\n"; + $example .= str_replace('[]', '', $this->template('method-example', str_replace('.', '_', $type), $phpMethod, $params, $method, $lua_params)); + if ($hasreplymarkup) { + $example .= $this->template('reply_markup'); + } + if ($hasmessage) { + $example .= $this->template('chunks', self::markdownEscape($type), $php_type); + } + if ($hasentities) { + $example .= $this->template('parse_mode'); + } + if (isset($new['result'][$method])) { + $example .= '### Errors + +| Code | Type | Description | +|------|----------|---------------| +'; + foreach ($new['result'][$method] as $error) { + [$error, $code] = $error; + $example .= "|{$code}|{$error}|".$errors['human_result'][$error][0].'|'."\n"; + } + $example .= "\n\n"; + } + } + file_put_contents('methods/'.$method.'.md', $header.$table.$return.$example); + } + $this->logger->logger('Generating methods index...', Logger::NOTICE); + $reflection = new ReflectionClass(API::class); + /** @psalm-suppress UndefinedClass */ + + $phpdoc = PhpDoc::fromNamespace(\danog\MadelineProto::class); + $phpdoc->resolveAliases(); + foreach ($reflection->getMethods(ReflectionMethod::IS_PUBLIC) as $method) { + $name = $method->getName(); + if (\in_array(strtolower($name), ['update2fa', 'getdialogids', 'getdialogs', 'getfulldialogs', 'getpwrchat', 'getfullinfo', 'getinfo', 'getid', 'getself', '__magic_construct', '__construct', '__destruct', '__sleep', '__wakeup'], true)) { + continue; + } + $doc = $method->getDocComment(); + if (str_contains($doc, '@internal') || str_contains($doc, '@deprecated')) { + continue; + } + if ($doc) { + $doc = getSummary($doc); + } + if (!$doc) { + throw new AssertionError($name); + } + $doc = trim($doc, '.'); + $method = new MethodDoc($phpdoc, $method); + $anchor = $method->getSignatureAnchor(); + $this->human_docs_methods["$doc: $name"] = '* '.$doc.': '.$name.' + +'; + } + + ksort($this->docs_methods); + ksort($this->human_docs_methods); + $last_namespace = ''; + foreach ($this->docs_methods as $method => &$value) { + $new_namespace = preg_replace('/_.*/', '', $method); + $br = $new_namespace != $last_namespace ? '*** +

+' : ''; + $value = $br.$value; + $last_namespace = $new_namespace; + } + file_put_contents('methods/api_'.$this->index, $this->template('methods-api-index', $this->index, implode('', $this->docs_methods))); + file_put_contents('methods/'.$this->index, $this->template('methods-index', $this->index, implode('', $this->human_docs_methods))); + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/ActionOp.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/ActionOp.php new file mode 100644 index 0000000..2bbc4b6 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/ActionOp.php @@ -0,0 +1,26 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor; + +interface ActionOp +{ + public function build(TLContext $tl): void; + + public function normalize(array $stack, string $current, bool $ignoreFlagged): ?self; +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/BuildMode.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/BuildMode.php new file mode 100644 index 0000000..c15ad08 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/BuildMode.php @@ -0,0 +1,23 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor; + +interface BuildMode +{ +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/BuildMode/Ast.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/BuildMode/Ast.php new file mode 100644 index 0000000..597bea1 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/BuildMode/Ast.php @@ -0,0 +1,354 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor\BuildMode; + +use AssertionError; +use danog\MadelineProto\FileRefExtractor\BuildMode; +use danog\MadelineProto\FileRefExtractor\TLContext; +use danog\MadelineProto\FileRefExtractor\TLWrapper; +use danog\MadelineProto\Magic; +use danog\MadelineProto\MTProto; +use danog\MadelineProto\Settings\TLSchema; +use danog\MadelineProto\TL\TL; +use ReflectionClass; +use SebastianBergmann\Diff\Differ; +use Webmozart\Assert\Assert; + +final class Ast implements BuildMode +{ + /** @var array */ + public array $storedByPath = []; + /** @var array */ + public array $stored = []; + public int $storedFlags = 0; + + public ?string $curKey = null; + + private array $output = []; + private array $skipped = []; + private array $actions = []; + private ?string $needsParent = null; + private array $needsParentList = []; + + public function __construct( + private readonly array $blacklistedPredicates, + public readonly bool $allowUnpacking, + private array $outputSchema = [] + ) { + } + + public function getSources(): array + { + return $this->output; + } + public function getNeedsParentList(): array + { + return $this->needsParentList; + } + + public static function crc(string $schema): string + { + $clean = preg_replace(['/:bytes /', '/;/', '/#[a-f0-9]+ /', '/ [a-zA-Z0-9_]+\\:flags\\.[0-9]+\\?true/', '/[<]/', '/[>]/', '/ /', '/^ /', '/ $/', '/\\?bytes /', '/{/', '/}/'], [':string ', '', ' ', '', ' ', ' ', ' ', '', '', '?string ', '', ''], $schema); + $id = hash('crc32b', $clean); + $id = str_pad($id, 8, '0', STR_PAD_LEFT); + return $id; + } + + public function finalize( + TLWrapper $tl, + int $layer, + array $outgoingCons, + array $incomingCons, + array $incomingTraversalPairs, + array $outgoingTraversalPairs, + string $refMapFile, + string $refMapFileJson + ): void { + $locations = []; + + $fileIdCons = []; + foreach ($outgoingCons as $predicate => [$cons, $id, $fileref]) { + $fileIdCons[$cons] = true; + $locations[] = [ + '_' => 'locationOutgoing', + 'predicate' => $predicate, + 'type' => $tl->getConstructorOrMethod($predicate)['type'], + //'id_field' => $id, + //'file_reference_field' => $fileref, + 'stored_constructor' => $cons, + ]; + } + foreach ($incomingCons as $predicate => [$cons]) { + $fileIdCons[$cons] = true; + $locations[] = [ + '_' => 'locationIncoming', + 'predicate' => $predicate, + 'type' => $tl->getConstructorOrMethod($predicate)['type'], + //'id_field' => $id, + //'file_reference_field' => $fileref, + 'stored_constructor' => $cons, + ]; + } + $dbSchema = "boolFalse#bc799737 = Bool;\nboolTrue#997275b5 = Bool;\ntrue#3fedd339 = True;\nvector#1cb5c415 {t:Type} # [ t ] = Vector t;\n\n"; + foreach ($fileIdCons as $cons => $_) { + $dbSchema .= $this->stringifySchema($cons, ['id' => 'long'], "FileId")."\n"; + } + $dbSchema .= "\n"; + + foreach ($this->outputSchema as $constructor => $params) { + $dbSchema .= $this->stringifySchema($constructor, $params, "FileSource")."\n"; + } + $dbSchemaJSON = (new TL(null))->toJson($dbSchema); + + $actions = []; + foreach ($this->actions as $action) { + if ($action['action']['_'] === 'callOp') { + $action['action']['args'] = array_values($action['action']['args']); + } + $actions[] = $action; + } + $value = [ + '_' => 'fileReferenceMap', + 'layer' => $layer, + 'db_schema' => $dbSchema, + 'db_schema_json' => json_encode($dbSchemaJSON, flags: JSON_THROW_ON_ERROR), + //'locations' => $locations, + //'sources' => array_merge(...array_values($this->output)), + 'traversers_incoming' => $incomingTraversalPairs, + 'traversers_outgoing' => $outgoingTraversalPairs, + 'skipped_incoming_sources' => $this->skipped, + 'refresh_actions' => $actions, + ]; + Magic::start(false); + + $s = new TLSchema; + $s = $s->setOther(['filerefs' => __DIR__ . '/../../../src/TL_file_ref_map_schema.tl']); + $TL = new TL((new ReflectionClass(MTProto::class))->newInstanceWithoutConstructor()); + $TL->init($s); + + $json = $TL->toJson(__DIR__ . '/../../../src/TL_file_ref_map_schema.tl'); + foreach ($json['constructors'] as $constructor) { + Assert::keyNotExists($this->blacklistedPredicates, $constructor['predicate'], "{$constructor['predicate']} is blacklisted and cannot be used in the schema"); + } + foreach ($json['methods'] as $method) { + Assert::keyNotExists($this->blacklistedPredicates, $method['method'], "{$method['method']} is blacklisted and cannot be used in the schema"); + } + + $serialized = $TL->serializeObject(['type' => 'FileReferenceMap'], $value, ''); + $valueDe = $TL->deserialize($serialized, ['type' => '', 'connection' => null, 'encrypted' => true]); + if ($value != $valueDe) { + $differ = new Differ; + $sortedValue = $this->sortKeysRecursive($value); + $sortedValueDe = $this->sortKeysRecursive($valueDe); + $diff = $differ->diff( + json_encode($sortedValue, JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR), + json_encode($sortedValueDe, JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR) + ); + Assert::true(false, "Deserialized value does not match original value. Diff:\n$diff"); + } + file_put_contents($refMapFile, $serialized); + file_put_contents($refMapFileJson, json_encode($valueDe, flags: JSON_THROW_ON_ERROR)); + } + + private function stringifySchema(string $constructor, array $params, string $cType): string + { + Assert::keyNotExists($this->blacklistedPredicates, $constructor, "$constructor is blacklisted and cannot be used in the schema"); + $paramsStr = "$constructor "; + foreach ($params as $name => $type) { + Assert::notContains($type, 'InputPeer', "$constructor cannot contain InputPeer"); + Assert::notContains($type, 'InputUser', "$constructor cannot contain InputUser"); + Assert::notContains($type, 'InputChannel', "$constructor cannot contain InputChannel"); + if ($constructor !== 'fileSourceBotApp' + && $constructor !== 'fileSourceTheme' + && $constructor !== 'fileSourceWallPaper' + && $constructor !== 'fileSourceSavedMusic' + ) { + Assert::notContains($name, 'access_hash', "$constructor cannot contain an access hash"); + } + $paramsStr .= "$name:$type "; + } + $paramsStr .= "= $cType;"; + + $id = self::crc($paramsStr); + $paramsStr = substr($paramsStr, \strlen($constructor)+1); + return "$constructor#$id $paramsStr"; + } + public function addNode(TLContext $ctx, ?array $action = null, ?string $why = null): void + { + if ($action !== null) { + Assert::keyExists($action, 'stored_constructor'); + + $constructor = $action['stored_constructor']; + unset($action['stored_constructor']); + + $stored = $this->stored; + $flags = []; + if ($this->storedFlags) { + foreach ($stored as $name => ['type' => $type]) { + if (str_starts_with($type, 'flags.')) { + $flags[$name] = $type; + } + } + $stored = [ + 'flags' => ['type' => '#'], + ...$stored, + ]; + } + $skipped = []; + + if (isset($this->outputSchema[$constructor])) { + $existing = $this->outputSchema[$constructor]; + foreach ($existing as $name => $type) { + if (str_starts_with($type, 'flags.')) { + if (isset($flags[$name])) { + unset($flags[$name], $stored[$name]); + } else { + $skipped[]= $name; + } + } + } + if ($flags) { + throw new AssertionError("Have leftover flags: ".implode(' ', $flags)); + } + foreach ($existing as $name => $type) { + if (isset($stored[$name])) { + if ($stored[$name]['type'] === $type) { + unset($stored[$name]); + } else { + throw new AssertionError("Type mismatch for $constructor.$name: have {$stored[$name]['type']}, need $type"); + } + } elseif (!str_starts_with($type, 'flags.') && $name !== 'flags') { + throw new AssertionError("Missing pre-existing parameter $constructor.$name for $constructor"); + } + } + foreach ($stored as $name => ['type' => $type]) { + throw new AssertionError("Leftover parameter $constructor.$name:$type for ".$this->stringifySchema($constructor, $existing, 'FileSource')); + } + } else { + $types = []; + foreach ($stored as $name => ['type' => $type]) { + $types[$name] = $type; + } + $this->outputSchema[$constructor] = $types; + } + + if (isset($this->actions[$constructor])) { + $existingAction = $this->actions[$constructor]; + Assert::eq($constructor, $existingAction['stored_constructor']); + $existingAction = $existingAction['action']; + Assert::eq($existingAction['_'], $action['_']); + + // It's okay to fill missing params as the source of the data is always the same, + // aka the source_constructor will always be of the same type, it should have all + // needed flags, and the behavior will be consistent. + if ($action['_'] === 'getMessageOp') { + foreach (['from_scheduled', 'quick_reply_shortcut_id'] as $k) { + if (!isset($existingAction[$k]) && isset($action[$k])) { + $existingAction[$k] = $action[$k]; + } elseif (isset($existingAction[$k]) && !isset($action[$k])) { + $action[$k] = $existingAction[$k]; + } + } + } else { + Assert::eq($action['_'], 'callOp'); + foreach ($action['args'] as $k => $arg) { + Assert::string($k); + if (!isset($existingAction['args'][$arg['key']])) { + $existingAction['args'][$arg['key']] = $arg; + } + } + foreach ($existingAction['args'] as $k => $arg) { + Assert::string($k); + if (!isset($action['args'][$arg['key']])) { + $action['args'][$arg['key']] = $arg; + } + } + } + Assert::eq($existingAction, $action, "Mismatched actions for $constructor"); + + $this->actions[$constructor]['action'] = $existingAction; + } else { + $this->actions[$constructor] = [ + '_' => 'refreshAction', + 'stored_constructor' => $constructor, + 'action' => $action, + ]; + } + + $out = [ + '_' => 'source', + 'predicate' => $ctx->position, + 'is_constructor' => $ctx->isConstructor, + 'stored_constructor' => $constructor, + 'stored_params' => array_column($this->stored, 'extractor'), + 'skipped_flags' => $skipped, + 'parent_is_constructor' => false, + ]; + if ($this->needsParent !== null) { + $out['needs_parent'] = $this->needsParent; + $out['parent_is_constructor'] = $ctx->tl->isConstructor($this->needsParent); + $this->needsParentList[$this->needsParent] = true; + } + $this->output[$ctx->position][] = $out; + + $this->storedFlags = 0; + $this->stored = []; + $this->storedByPath = []; + Assert::null($why); + } elseif ($why !== null) { + $this->skipped[] = [ + '_' => 'skippedSource', + 'why' => $why, + 'predicate' => $ctx->position, + 'is_constructor' => $ctx->isConstructor, + ]; + Assert::null($action); + Assert::isEmpty($this->stored); + Assert::isEmpty($this->storedByPath); + Assert::eq($this->storedFlags, 0); + } else { + throw new AssertionError("Either 'action' or 'why' must be provided."); + } + $this->needsParent = null; + $this->curKey = null; + } + + public function getNeedsParent(): ?string + { + return $this->needsParent; + } + + public function setNeedsParent(string $needsParent): void + { + if ($this->needsParent !== null && $this->needsParent !== $needsParent) { + throw new \LogicException("Cannot change needsParent from {$this->needsParent} to {$needsParent} once it has been set."); + } + $this->needsParent = $needsParent; + } + private function sortKeysRecursive(array &$array): array + { + ksort($array); + foreach ($array as $key => $value) { + if (\is_array($value)) { + $array[$key] = $this->sortKeysRecursive($value); + } + } + return $array; + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/FieldTransformationOp.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/FieldTransformationOp.php new file mode 100644 index 0000000..5d1b599 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/FieldTransformationOp.php @@ -0,0 +1,23 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor; + +interface FieldTransformationOp extends TypedOp +{ +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/FileRefGenerator.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/FileRefGenerator.php new file mode 100644 index 0000000..d2a4202 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/FileRefGenerator.php @@ -0,0 +1,922 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor; + +use AssertionError; +use Closure; +use danog\MadelineProto\FileRefExtractor\BuildMode\Ast; +use danog\MadelineProto\FileRefExtractor\Ops\ArrayOp; +use danog\MadelineProto\FileRefExtractor\Ops\CallOp; +use danog\MadelineProto\FileRefExtractor\Ops\ConstructorOp; +use danog\MadelineProto\FileRefExtractor\Ops\CopyMethodCallOp; +use danog\MadelineProto\FileRefExtractor\Ops\CopyOp; +use danog\MadelineProto\FileRefExtractor\Ops\GetInputChannelOp; +use danog\MadelineProto\FileRefExtractor\Ops\GetInputPeerOp; +use danog\MadelineProto\FileRefExtractor\Ops\GetInputStickerSet; +use danog\MadelineProto\FileRefExtractor\Ops\GetInputUserOp; +use danog\MadelineProto\FileRefExtractor\Ops\GetMessageOp; +use danog\MadelineProto\FileRefExtractor\Ops\Noop; +use danog\MadelineProto\FileRefExtractor\Ops\PrimitiveLiteralOp; +use danog\MadelineProto\FileRefExtractor\Ops\ThemeFormatOp; +use danog\MadelineProto\Logger; +use danog\MadelineProto\Magic; +use danog\MadelineProto\Settings\TLSchema; +use danog\MadelineProto\TL\TL; +use Webmozart\Assert\Assert; + +final class FileRefGenerator +{ + public static function generate(int $layer, string $inputSchema, string $outputFile, string $outputFileJson): void + { + Magic::start(false); + $schema = new TLSchema; + + $schema->setAPISchema($inputSchema); + + $TL = new TL(null); + $TL->init($schema); + + $blacklistedPredicates = array_fill_keys(array_column($TL->getConstructors()->by_id, 'predicate'), true) + + array_fill_keys(array_column($TL->getMethods()->by_id, 'method'), true); + unset($blacklistedPredicates['boolTrue'], $blacklistedPredicates['boolFalse'], $blacklistedPredicates['true'], $blacklistedPredicates['vector']); + + $TL = new TLWrapper($TL); + $locations = []; + Logger::log("Generating file reference map for layer $layer..."); + + foreach ($TL->getConstructorsOfType('Message') as $constructor => $_) { + if ($constructor === 'messageEmpty') { + continue; + } + $locations[$constructor][] = new GetMessageOp( + new GetInputPeerOp(new Path([[$constructor, 'peer_id']])), + new CopyOp([[$constructor, 'id']]), + $constructor === 'message' ? new CopyOp([[$constructor, 'from_scheduled', Path::FLAG_PASSTHROUGH]]) : null, + $constructor === 'message' ? new CopyOp([[$constructor, 'quick_reply_shortcut_id', Path::FLAG_PASSTHROUGH]]) : null, + 'fileSourceMessage', + ); + } + + $storyMethods = []; + foreach (['stories.Stories'] as $t) { + foreach ($TL->getMethodsOfType($t) as $method => $_) { + $storyMethods[$method] = true; + $locations['storyItem'][] = new CallOp( + 'stories.getStoriesByID', + [ + 'id' => new ArrayOp(new CopyOp([['storyItem', 'id']])), + 'peer' => new GetInputPeerOp(new Path([[$method, 'peer']], true)), + ], + 'fileSourceStory' + ); + } + } + + $locations['storyViewPublicRepost'][] = new CallOp( + 'stories.getStoriesByID', + [ + 'id' => new ArrayOp(new CopyOp([['storyViewPublicRepost', 'story'], ['storyItem', 'id']])), + 'peer' => new GetInputPeerOp(new Path([['storyViewPublicRepost', 'peer_id']])), + ], + 'fileSourceStory' + ); + $locations['storyReactionPublicRepost'][] = new CallOp( + 'stories.getStoriesByID', + [ + 'id' => new ArrayOp(new CopyOp([['storyReactionPublicRepost', 'story'], ['storyItem', 'id']])), + 'peer' => new GetInputPeerOp(new Path([['storyReactionPublicRepost', 'peer_id']])), + ], + 'fileSourceStory' + ); + + $locations['storyItem'][] = new CallOp( + 'stories.getStoriesByID', + [ + 'id' => new ArrayOp(new CopyOp([['storyItem', 'id']])), + 'peer' => new GetInputPeerOp(new Path([['peerStories', 'peer']], true)), + ], + 'fileSourceStory' + ); + + foreach (['foundStory', 'publicForwardStory', 'webPageAttributeStory', 'messageMediaStory'] as $c) { + $optional = $c === 'webPageAttributeStory' || $c === 'messageMediaStory'; + $locations[$c][] = new CallOp( + 'stories.getStoriesByID', + [ + 'id' => new ArrayOp(new CopyOp([$optional ? [$c, 'story', Path::FLAG_IF_ABSENT_ABORT] : [$c, 'story'], ['storyItem', 'id']])), + 'peer' => new GetInputPeerOp(new Path([[$c, 'peer']])), + ], + 'fileSourceStory' + ); + } + + $locations['webPage'][] = CallOp::simple( + 'messages.getWebPage', + 'webPage', + ['url' => 'url', 'hash' => new PrimitiveLiteralOp('int', 0)], + 'fileSourceWebPage' + ); + + $locations['botApp'][] = CallOp::simple('messages.getBotApp', 'botApp', [ + 'app' => new ConstructorOp( + 'inputBotAppID', + [ + 'id' => new CopyOp([['botApp', 'id']]), + 'access_hash' => new CopyOp([['botApp', 'access_hash']]), + ] + ), + 'hash' => new PrimitiveLiteralOp('long', 0), + ], 'fileSourceBotApp'); + + $locations['botInfo'][] = new CallOp( + 'users.getFullUser', + ['id' => new GetInputUserOp(new Path([['botInfo', 'user_id', Path::FLAG_IF_ABSENT_ABORT]]))], + 'fileSourceUserFull' + ); + $locations['storyItem'][] = new CallOp('stories.getStoriesByID', [ + 'id' => new ArrayOp(new CopyOp([['storyItem', 'id']])), + 'peer' => new GetInputPeerOp(new Path([['storyItem', 'from_id', Path::FLAG_IF_ABSENT_ABORT]])), + ], 'fileSourceStory'); + + //$locations['messages.getSponsoredMessages'][] = new CopyMethodCallOp('messages.getSponsoredMessages', 'fileSourceSponsoredMessage'); + $locations['messages.getSponsoredMessages'][] = new Noop('Do not store file references from sponsored messages'); + + $locations['channelAdminLogEvent'][] = new CallOp( + 'channels.getAdminLog', + [ + 'channel' => new GetInputChannelOp(new Path([['channels.getAdminLog', 'channel']], true)), + 'max_id' => new CopyOp([['channelAdminLogEvent', 'id']]), + 'min_id' => new CopyOp([['channelAdminLogEvent', 'id']]), + 'limit' => new PrimitiveLiteralOp('int', 1), + 'q' => new PrimitiveLiteralOp('string', ''), + ], + 'fileSourceAdminLog' + ); + + foreach (['stories.createAlbum', 'stories.getAlbums', 'stories.updateAlbum'] as $m) { + $locations[$m][] = new CallOp('stories.getAlbums', [ + 'peer' => new GetInputPeerOp(new Path([[$m, 'peer']])), + 'hash' => new PrimitiveLiteralOp('long', 0), + ], 'fileSourceStoryAlbum'); + } + + $locations['bots.getPreviewMedias'][] = new CopyMethodCallOp('bots.getPreviewMedias', 'fileSourceBotPreviewMedia'); + $locations['bots.getPreviewInfo'][] = new CopyMethodCallOp('bots.getPreviewInfo', 'fileSourceBotPreviewInfo'); + $locations['bots.addPreviewMedia'][] = new CallOp('bots.getPreviewInfo', [ + 'bot' => new GetInputUserOp(new Path([['bots.addPreviewMedia', 'bot']])), + 'lang_code' => new CopyOp([['bots.addPreviewMedia', 'lang_code']]), + ], 'fileSourceBotPreviewInfo'); + $locations['bots.editPreviewMedia'][] = new CallOp('bots.getPreviewInfo', [ + 'bot' => new GetInputUserOp(new Path([['bots.editPreviewMedia', 'bot']])), + 'lang_code' => new CopyOp([['bots.editPreviewMedia', 'lang_code']]), + ], 'fileSourceBotPreviewInfo'); + + $locations['updateMessageExtendedMedia'][] = new CallOp( + 'messages.getExtendedMedia', + [ + 'id' => new ArrayOp(new CopyOp([['updateMessageExtendedMedia', 'msg_id']])), + 'peer' => new GetInputPeerOp(new Path([['updateMessageExtendedMedia', 'peer']])), + ], + 'fileSourcePaidMedia' + ); + $locations['userFull'][] = new CallOp( + 'users.getFullUser', + [ + 'id' => new GetInputUserOp(new Path([['userFull', 'id']])), + ], + 'fileSourceUserFull' + ); + $locations['chatFull'][] = new CallOp( + 'messages.getFullChat', + [ + 'chat_id' => new CopyOp([['chatFull', 'id']]), + ], + 'fileSourceChatFull' + ); + $locations['channelFull'][] = new CallOp( + 'channels.getFullChannel', + [ + 'channel' => new GetInputChannelOp(new Path([['channelFull', 'id']])), + ], + 'fileSourceChannelFull' + ); + $locations['help.getPremiumPromo'][] = new CopyMethodCallOp('help.getPremiumPromo', 'fileSourcePremiumPromo'); + + $locations['help.getAppUpdate'][] = new Noop("Don't handle file references from ephemeral app update info"); + $locations['help.getRecentMeUrls'][] = new Noop("Don't handle file references from recent t.me URLs"); + + $stickerMethods = [ + 'messages.getAttachedStickers' => true, + ]; + foreach ([ + 'messages.FeaturedStickers', + 'messages.StickerSet', + 'messages.ArchivedStickers', + 'messages.Stickers', + 'messages.StickerSetInstallResult', + 'messages.FoundStickerSets', + 'messages.MyStickers', + 'messages.FavedStickers', + 'messages.FoundStickers', + ] as $stickerType) { + foreach ($TL->getMethodsOfType($stickerType) as $method => $_) { + $stickerMethods[$method] = true; + } + } + + $starMethods = []; + foreach ($TL->getMethodsOfType('payments.StarsStatus') as $method => $_) { + $starMethods[$method] = true; + $locations['starsTransaction'][] = new CallOp( + 'payments.getStarsTransactionsByID', + [ + 'peer' => new GetInputPeerOp(new Path([[$method, 'peer']], true)), + ...($method === 'payments.getStarsSubscriptions' ? [] : ['ton' => new CopyOp(new Path([[$method, 'ton', Path::FLAG_PASSTHROUGH]], true))]), + 'id' => new ArrayOp(new ConstructorOp( + 'inputStarsTransaction', + [ + 'id' => new CopyOp([['starsTransaction', 'id']]), + 'refund' => new CopyOp([['starsTransaction', 'refund', Path::FLAG_PASSTHROUGH]]), + ] + )), + ], + 'fileSourceStarsTransaction' + ); + } + $locations['attachMenuBot'][] = new CallOp( + 'messages.getAttachMenuBot', + ['bot' => new GetInputUserOp(new Path([['attachMenuBot', 'bot_id']]))], + 'fileSourceAttachMenuBot' + ); + $locations['theme'][] = new CallOp( + 'account.getTheme', + [ + 'theme' => new ConstructorOp( + 'inputTheme', + [ + 'id' => new CopyOp([['theme', 'id']]), + 'access_hash' => new CopyOp([['theme', 'access_hash']]), + ] + ), + 'format' => new ThemeFormatOp(), + ], + 'fileSourceTheme' + ); + $locations['wallPaper'][] = new CallOp( + 'account.getWallPaper', + [ + 'wallpaper' => new ConstructorOp( + 'inputWallPaper', + [ + 'id' => new CopyOp([['wallPaper', 'id']]), + 'access_hash' => new CopyOp([['wallPaper', 'access_hash']]), + ] + ), + ], + 'fileSourceWallPaper' + ); + + // Multiple variations to handle references from covers in StickerSetCovered and messages.StickerSet + foreach (['stickerSetMultiCovered', 'stickerSetFullCovered'] as $c) { + $locations[$c][] = new CallOp( + 'messages.getStickerSet', + [ + 'stickerset' => new GetInputStickerSet(new Path([[$c, 'set']])), + 'hash' => new PrimitiveLiteralOp('int', 0), + ], + 'fileSourceStickerSet' + ); + } + $locations['messages.stickerSet'][] = new CallOp( + 'messages.getStickerSet', + [ + 'stickerset' => new GetInputStickerSet(new Path([['messages.stickerSet', 'set']])), + 'hash' => new PrimitiveLiteralOp('int', 0), + ], + 'fileSourceStickerSet' + ); + $locations['messages.savedGifs'][] = new CallOp('messages.getSavedGifs', ['hash' => new PrimitiveLiteralOp('long', 0)], 'fileSourceSavedGifs'); + foreach (['account.savedRingtones', 'account.savedRingtoneConverted', 'account.uploadRingtone'] as $c) { + $locations[$c][] = new CallOp('account.getSavedRingtones', ['hash' => new PrimitiveLiteralOp('long', 0)], 'fileSourceSavedRingtones'); + } + + $locations['recentMeUrlChatInvite'][] = new Noop('Do not store references based on chat invite links'); + $locations['messages.checkChatInvite'][] = new Noop('Do not store references based on chat invite links'); + + $locations['messages.availableEffects'][] = new CallOp( + 'messages.getAvailableEffects', + ['hash' => new PrimitiveLiteralOp('int', 0)], + 'fileSourceAvailableEffects' + ); + $locations['messages.availableReactions'][] = new CallOp( + 'messages.getAvailableReactions', + ['hash' => new PrimitiveLiteralOp('int', 0)], + 'fileSourceAvailableReactions' + ); + + $locations['updateMessagePoll'][] = new GetMessageOp( + new GetInputPeerOp(new Path([['updateMessagePoll', 'peer', Path::FLAG_IF_ABSENT_ABORT]])), + new CopyOp([['updateMessagePoll', 'msg_id', Path::FLAG_IF_ABSENT_ABORT]]), + null, + null, + 'fileSourceMessage', + ); + + $locations['photo'][] = new CallOp( + 'photos.getUserPhotos', + [ + 'user_id' => new GetInputUserOp(new Path([['photos.getUserPhotos', 'user_id']], true)), + 'offset' => new PrimitiveLiteralOp('int', -1), + 'max_id' => new CopyOp([['photo', 'id']]), + 'limit' => new PrimitiveLiteralOp('int', 1), + ], + 'fileSourceUserProfilePhoto' + ); + + foreach (['photos.updateProfilePhoto', 'photos.uploadProfilePhoto'] as $method) { + $locations[$method][] = new CallOp( + 'photos.getUserPhotos', + [ + 'user_id' => new GetInputUserOp(new Path( + [[ + $method, + 'bot', + new ConstructorOp( + 'inputUserSelf', + [] + ), + ]] + )), + 'offset' => new PrimitiveLiteralOp('int', -1), + 'max_id' => new CopyOp([[$method, ''], ['photos.photo', 'photo'], ['photo', 'id']]), + 'limit' => new PrimitiveLiteralOp('int', 1), + ], + 'fileSourceUserProfilePhoto' + ); + } + $locations['photos.uploadContactProfilePhoto'][] = new CallOp( + 'photos.getUserPhotos', + [ + 'user_id' => new GetInputUserOp( + new Path([['photos.uploadContactProfilePhoto', 'user_id']]), + ), + 'offset' => new PrimitiveLiteralOp('int', -1), + 'max_id' => new CopyOp([['photos.uploadContactProfilePhoto', ''], ['photos.photo', 'photo'], ['photo', 'id']]), + 'limit' => new PrimitiveLiteralOp('int', 1), + ], + 'fileSourceUserProfilePhoto' + ); + $locations['messages.getInlineBotResults'][]= new Noop('Inline bot results are ephemeral'); + $locations['messages.getPreparedInlineMessage'][]= new Noop('Inline bot results are ephemeral'); + + $locations['messages.uploadMedia'][]= new Noop('A freshly uploaded media file will obtain a context only once it is sent to a chat'); + $locations['messages.uploadImportedMedia'][]= new Noop('A freshly uploaded media file will obtain a context only once it is sent to a chat'); + + $locations['document'][] = new CallOp( + 'messages.getStickerSet', + [ + 'stickerset' => new GetInputStickerSet(new Path([['document', 'attributes']])), + 'hash' => new PrimitiveLiteralOp('int', 0), + ], + 'fileSourceStickerSet' + ); + $locations['messages.getDocumentByHash'][] = new CopyMethodCallOp('messages.getDocumentByHash', 'fileSourceDocumentByHash'); + $locations['updateServiceNotification'][] = new Noop('Cannot refetch service notifications'); + + $locations['messages.getWebPagePreview'][] = new Noop("No locations are added for the method call, as it doesn't use persistent IDs as input; the location is instead extracted from the persistent IDs in the returned WebPage object"); + + foreach (['users.getSavedMusic', 'users.getSavedMusicByID'] as $m) { + $locations['document'][] = new CallOp( + 'users.getSavedMusicByID', + [ + 'id' => new GetInputUserOp(new Path([[$m, 'id']], true, 'user_id')), + 'documents' => new ArrayOp( + new ConstructorOp( + 'inputDocument', + [ + 'id' => new CopyOp([['document', 'id']]), + 'access_hash' => new CopyOp([['document', 'access_hash']]), + 'file_reference' => new PrimitiveLiteralOp('bytes', ''), + ], + ), + ), + ], + 'fileSourceSavedMusic' + ); + } + $locations['userFull'][] = new CallOp( + 'users.getSavedMusicByID', + [ + 'id' => new GetInputUserOp(new Path([['userFull', 'id']], customName: 'user_id')), + 'documents' => new ArrayOp( + new ConstructorOp( + 'inputDocument', + [ + 'id' => new CopyOp([['userFull', 'saved_music', Path::FLAG_IF_ABSENT_ABORT], ['document', 'id']]), + 'access_hash' => new CopyOp([['userFull', 'saved_music', Path::FLAG_IF_ABSENT_ABORT], ['document', 'access_hash']]), + 'file_reference' => new PrimitiveLiteralOp('bytes', ''), + ], + ), + ), + ], + 'fileSourceSavedMusic' + ); + + // Ignore these for now + foreach (['payments.ResaleStarGifts', 'payments.StarGiftUpgradePreview', 'StarGift', 'StarGiftCollection', 'payments.StarGiftCollections', 'payments.StarGiftUpgradeAttributes'] as $type) { + foreach ($TL->getConstructorsOfType($type) as $constructor => $_) { + if ($constructor === 'payments.starGiftCollectionsNotModified') { + continue; + } + $locations[$constructor][] = new Noop('Contexts for star gifts are not yet implemented'); + } + } + + $locations['messages.getCustomEmojiDocuments'][] = new Noop("Do not store file references in this context"); + + $locations['account.uploadTheme'][] = new Noop('A freshly uploaded theme file will obtain a context only once it is created via account.createTheme'); + + $incomingList = []; + $outgoingList = $TL->tl->getMethods()->by_id; + foreach ($TL->tl->getConstructors()->by_id as $k => $constructor) { + if (str_starts_with($constructor['predicate'], 'input') + && ctype_upper(substr($constructor['predicate'], \strlen('input'), 1)) + ) { + $outgoingList[$k] = $constructor; + } else { + $incomingList[$k] = $constructor; + } + } + $recurse = static function (Closure $onStackEnd, string $type, array &$stack, array &$stackTypes, bool $incoming) use ($TL, &$recurse, $outgoingList, $incomingList): void { + if ($incoming) { + if ($type === 'Update' || $type === 'Updates') { + $onStackEnd($stack); + return; + } + if ($type === 'PeerStories') { + $onStackEnd($stack); + } + } + + $pos = \count($stack); + foreach ($incoming ? $incomingList : $outgoingList as $constructor) { + $predicate = $constructor['predicate'] ?? $constructor['method']; + if ($predicate === 'updateShortMessage' || $predicate === 'updateShortChatMessage' || $predicate === 'updateShortSentMessage') { + // Assume these are converted to message constructors by the client. + continue; + } + $isMethod = isset($constructor['method']); + $t = $constructor['type']; + $stackTypes[$t] ??= 0; + if ($stackTypes[$t] > 1) { + continue; + } + $stackTypes[$t]++; + foreach ($constructor['params'] as $param) { + if (( + $param['type'] === $type || + ( + isset($param['subtype']) + && $param['subtype'] === $type + ) + )) { + $stack[$pos] = [$predicate, $param['name'], 0]; + if (isset($param['pow'])) { + $stack[$pos][2] = Path::FLAG_IF_ABSENT_ABORT; + } + if (isset($param['subtype'])) { + $oldFlag = $stack[$pos][2] ?? 0; + $stack[$pos][2] = $oldFlag | Path::FLAG_UNPACK_ARRAY; + } + if ($isMethod) { + if (!$incoming) { + $onStackEnd($stack); + } + } else { + $recurse($onStackEnd, $t, $stack, $stackTypes, $incoming); + } + unset($stack[$pos]); + + } + } + $stackTypes[$t]--; + } + + if ($incoming) { + foreach ($TL->getMethodsOfType($type, true) as $method => $data) { + $stack[$pos] = [$method, '', 0]; + $onStackEnd($stack); + } + foreach ($TL->getMethodsOfType("Vector<$type>", true) as $method => $data) { + $stack[$pos] = [$method, '', Path::FLAG_UNPACK_ARRAY]; + $onStackEnd($stack); + } + } + unset($stack[$pos]); + }; + + $pre = [ + 'fileSourceMessage' => [ + 'flags' => '#', + 'from_scheduled' => 'flags.0?true', + 'quick_reply_shortcut_id' => 'flags.1?int', + 'peer' => 'long', + 'id' => 'int', + ], + 'fileSourceStarsTransaction' => [ + 'flags' => '#', + 'peer' => 'long', + 'id' => 'string', + 'refund' => 'flags.0?true', + 'ton' => 'flags.1?true', + ], + ]; + + $validated = []; + + $outgoingCons = [ + 'inputPhoto' => ['fileIdPhoto', 'id', 'file_reference'], + 'inputDocument' => ['fileIdDocument', 'id', 'file_reference'], + 'inputDocumentFileLocation' => ['fileIdDocument', 'id', 'file_reference'], + 'inputPhotoFileLocation' => ['fileIdPhoto', 'id', 'file_reference'], + + // Legacy + 'inputFileLocation' => false, + 'inputPhotoLegacyFileLocation' => false, + ]; + $incomingCons = [ + 'document' => ['fileIdDocument', 'id', 'file_reference'], + 'photo' => ['fileIdPhoto', 'id', 'file_reference'], + ]; + foreach ($TL->tl->getConstructors()->by_id as $constructor) { + foreach ($constructor['params'] as $param) { + if ($param['name'] === 'file_reference') { + if (isset($outgoingCons[$constructor['predicate']])) { + if ($outgoingCons[$constructor['predicate']] === false) { + continue 2; + } + [, $id, $fileref] = $outgoingCons[$constructor['predicate']]; + $params = array_column($constructor['params'], null, 'name'); + Assert::keyExists($params, $id); + Assert::keyExists($params, $fileref); + Assert::eq($params[$id]['type'], 'long'); + Assert::eq($params[$fileref]['type'], 'bytes'); + Assert::keyNotExists($params[$id], 'pow'); + Assert::keyNotExists($params[$fileref], 'pow'); + continue 2; + } + if (isset($incomingCons[$constructor['predicate']])) { + [, $id, $fileref] = $incomingCons[$constructor['predicate']]; + $params = array_column($constructor['params'], null, 'name'); + Assert::keyExists($params, $id); + Assert::keyExists($params, $fileref); + Assert::eq($params[$id]['type'], 'long'); + Assert::eq($params[$fileref]['type'], 'bytes'); + Assert::keyNotExists($params[$id], 'pow'); + Assert::keyNotExists($params[$fileref], 'pow'); + continue 2; + } + throw new AssertionError("Have file_reference for {$constructor['predicate']} but not used"); + } + } + } + + $outgoingTraversalPairsByCons = []; + foreach ($outgoingCons as $constructor => $contents) { + if ($contents === false) { + continue; + } + $type = $TL->tl->getConstructors()->findByPredicate($constructor)['type']; + $stack = [[$constructor, 'file_reference', 0]]; + $stackTypes = [$type => 1]; + + $outgoingTraversalPairs = []; + $recurse( + static function (array $stack) use (&$outgoingTraversalPairs): void { + foreach ($stack as $pair) { + if ($pair[1] === 'file_reference') { + continue; + } + $outgoingTraversalPairs[$pair[0]][$pair[1]] = $pair; + } + }, + $type, + $stack, + $stackTypes, + false, + ); + $outgoingTraversalPairsByCons[$constructor] = $outgoingTraversalPairs; + } + unset($outgoingTraversalPairs); + + $incomingTraversalPairsByCons = []; + $tmp = new Ast(blacklistedPredicates: $blacklistedPredicates, allowUnpacking: true, outputSchema: $pre); + foreach ($incomingCons as $constructor => $_) { + $type = ucfirst($constructor); + $stack = [[$constructor, 'file_reference', 0]]; + $stackTypes = [$type => 1]; + + $incomingTraversalPairs = []; + $recurse( + static function (array $stack) use ($locations, $TL, $tmp, &$incomingTraversalPairs, &$validated, $storyMethods, $starMethods, $stickerMethods): void { + $slice = []; + $hadAny = false; + $hadAnyNotNoop = false; + $tmpPairs = []; + $hadAnyWithNoFlags = false; + $skippedDueToFlags = []; + $top = end($stack)[0]; + for ($x = \count($stack)-1; $x >= 0; $x--) { + $pair = $stack[$x]; + + if ($pair[1] !== 'file_reference') { + $tmpPairs[$pair[0]][$pair[1]] = $pair; + } + + foreach ($locations[$pair[0]] ?? [] as $op) { + $normalized = $op->normalize($slice, $pair[0], false); + if ($normalized === null) { + continue; + } + if (!$normalized instanceof Noop) { + $hadAnyNotNoop = true; + } + $hadAny = true; + $normalized->build(new TLContext($TL, $tmp, $top, $TL->isConstructor($top))); + $validated[$pair[0]][spl_object_id($op)] = $op; + + $normalized = $op->normalize($slice, $pair[0], true); + if ($normalized === null) { + $skippedDueToFlags []= $op; + continue; + } + $hadAnyWithNoFlags = true; + } + $slice[] = $pair; + } + if ($hadAnyNotNoop) { + foreach ($tmpPairs as $cons => $fields) { + $incomingTraversalPairs[$cons] ??= []; + foreach ($fields as $field => $part) { + $incomingTraversalPairs[$cons][$field] = $part; + } + } + } + if (!$hadAny) { + throw new AssertionError("Uncovered path: " . json_encode($stack)); + } + if (!$hadAnyWithNoFlags && $skippedDueToFlags) { + if ($top === 'updateStory' + || $top === 'peerStories' + // The two above always have the story peer flag set. + + || isset($storyMethods[$top]) + || isset($starMethods[$top]) + + // The two above always have the story peer/all star flags set. + + || $top === 'messages.getFullChat' + || $top === 'channels.getFullChannel' + || $top === 'users.getFullUser' + // The three above are related to botInfo, ignore as we already store a context for the chat info. + + || isset($stickerMethods[$top]) + || $top === 'messages.getRecentStickers' + || $top === 'updateNewStickerSet' + // The above are covered by the GetInputStickerSet document context + + || $top === 'updateMessagePoll' + // Tmp + ) { + return; + } + foreach ($slice as [$cons]) { + if ($cons === 'webPageAttributeStory' + || $cons === 'messageMediaStory' + || $cons === 'foundStory' + || $cons === 'publicForwardStory' + || $cons === 'peerStories' + || $cons === 'storyViewPublicRepost' + || $cons === 'storyReactionPublicRepost' + ) { + // The above always have all necessary flags set + return; + } + } + var_dump($skippedDueToFlags); + throw new AssertionError("Uncovered path (didn't have at least one unflagged context): " . json_encode($stack)); + } + }, + $type, + $stack, + $stackTypes, + true, + ); + $incomingTraversalPairsByCons[$constructor] = $incomingTraversalPairs; + } + unset($incomingTraversalPairs); + + $diff = []; + foreach ($locations as $constructor => $ops) { + if (isset($validated[$constructor])) { + $d = array_udiff($ops, $validated[$constructor], static fn ($a, $b) => spl_object_id($a) <=> spl_object_id($b)); + if ($d) { + $diff[$constructor] = $d; + } + continue; + } + $diff[$constructor] = $ops; + } + if ($diff) { + var_dump($diff); + throw new AssertionError("Leftover ops!"); + } + + $output = new Ast(blacklistedPredicates: $blacklistedPredicates, allowUnpacking: false, outputSchema: $pre); + foreach ($locations as $constructor => $ops) { + foreach ($ops as $idx => $op) { + $op->build(new TLContext($TL, $output, $constructor, $TL->isConstructor($constructor))); + } + } + + $outgoingCons = array_filter($outgoingCons); + $output->finalize( + $TL, + $layer, + $outgoingCons, + $incomingCons, + self::fixupTraversalPairs($output, $TL, $incomingCons, $incomingTraversalPairsByCons, true), + self::fixupTraversalPairs($output, $TL, $outgoingCons, $outgoingTraversalPairsByCons, false), + $outputFile, + $outputFileJson + ); + + echo("OK $layer!\n".PHP_EOL); + } + + public static function fixupTraversalPairs(Ast $output, TLWrapper $TL, array $locations, array $pairsByCons, bool $isIncoming): array + { + $pairsMerged = []; + foreach ($pairsByCons as $parentCons => $pairs) { + foreach ($pairs as $cons => $fields) { + Assert::notEmpty($fields, "No fields for $cons in $parentCons"); + foreach ($fields as $field => $part) { + $pairsMerged[$cons][$field] = $part; + } + } + } + + if ($isIncoming) { + $sources = $output->getSources(); + $parents = $output->getNeedsParentList(); + } + + $fixed = []; + foreach ($locations as $predicate => [$cons]) { + if ($isIncoming) { + $fixed []= [ + '_' => 'traverseCommitSourceLocation', + 'type' => $TL->getConstructorOrMethod($predicate)['type'], + 'predicate' => $predicate, + 'stored_constructor' => $cons, + 'push_sources' => $sources[$predicate] ?? [], + ]; + unset($sources[$predicate]); + } else { + $fixed []= [ + '_' => 'traverseSwapLocation', + 'type' => $TL->getConstructorOrMethod($predicate)['type'], + 'predicate' => $predicate, + 'stored_constructor' => $cons, + ]; + } + } + + foreach ($pairsMerged as $cons => $fields) { + + $consIsConstructor = $TL->isConstructor($cons); + $order = []; + $paramTypes = []; + foreach ($TL->getConstructorOrMethod($cons)['params'] as $idx => $param) { + $order[$param['name']] = $idx; + $paramTypes[$param['name']] = $param['subtype'] ?? $param['type']; + } + + $newFields = []; + $hasReturn = false; + foreach ($fields as $field => $part) { + if ($field === '') { + $hasReturn = true; + continue; + } + $newPart = [ + '_' => 'traverseParam', + 'name' => $field, + 'type' => $paramTypes[$field], + 'is_vector' => false, + 'is_flag' => false, + ]; + if (isset($part[2])) { + if ($part[2] instanceof TypedOp) { + throw new \InvalidArgumentException('Cannot use TypedOp in traverse path'); + } elseif (\is_int($part[2])) { + if ($part[2] & Path::FLAG_UNPACK_ARRAY) { + $newPart['is_vector'] = true; + } + if ($part[2] & Path::FLAG_IF_ABSENT_ABORT) { + $newPart['is_flag'] = true; + } + if ($part[2] & Path::FLAG_PASSTHROUGH) { + $newPart['is_flag'] = true; + } + } + } + $newFields[] = $newPart; + } + usort($newFields, static fn ($a, $b) => $order[$a['name']] <=> $order[$b['name']]); + + if ($isIncoming) { + if ($consIsConstructor) { + Assert::false($hasReturn, "Constructor $cons has a return value, cannot be used in incoming traversal"); + Assert::notEmpty($newFields, "Constructor $cons does not have fields in traversal pairs but is used as a constructor"); + + $consT = $TL->getConstructorOrMethod($cons)['type']; + Assert::notEq($consT, 'Updates', "Constructor $cons has type Updates, cannot be used in incoming traversal as it is not a message/container constructor"); + + $fixed[] = [ + '_' => 'traverseIncomingConstructor', + 'predicate' => $cons, + 'type' => $consT, + 'params' => $newFields, + 'push_sources' => $sources[$cons] ?? [], + 'is_needed_parent' => isset($parents[$cons]), + ]; + unset($sources[$cons], $parents[$cons]); + + } else { + Assert::notEmpty($hasReturn, "Method $cons does not have a return value, cannot be used in incoming traversal"); + Assert::isEmpty($newFields, "Method $cons has fields in traversal pairs but is used as a method result"); + + $fixed[] = [ + '_' => 'traverseMethodResult', + 'name' => $cons, + 'push_sources' => $sources[$cons] ?? [], + 'is_needed_parent' => isset($parents[$cons]), + ]; + unset($sources[$cons], $parents[$cons]); + + } + } else { + if ($consIsConstructor) { + Assert::false($hasReturn, "Constructor $cons has a return value, cannot be used in outgoing traversal"); + Assert::notEmpty($newFields, "Constructor $cons does not have fields in traversal pairs but is used as a constructor"); + + $fixed[] = [ + '_' => 'traverseOutgoingConstructor', + 'predicate' => $cons, + 'type' => $TL->getConstructorOrMethod($cons)['type'], + 'params' => $newFields, + ]; + } else { + Assert::false($hasReturn, "Method $cons has a return value, cannot be used in outgoing traversal"); + Assert::notEmpty($newFields, "Method $cons does not have fields in traversal pairs but is used as a method call"); + + $fixed[] = [ + '_' => 'traverseMethodCall', + 'name' => $cons, + 'params' => $newFields, + ]; + } + } + } + + if ($isIncoming) { + foreach ($sources as $cons => $sourceList) { + foreach ($sourceList as $source) { + $source = json_encode($source); + throw new AssertionError("Source $source for $cons was not included in traversal pairs"); + } + } + foreach ($parents as $cons => $_) { + throw new AssertionError("Needed parent $cons was not included in traversal pairs"); + } + } + return $fixed; + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/LiteralOp.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/LiteralOp.php new file mode 100644 index 0000000..68bb828 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/LiteralOp.php @@ -0,0 +1,23 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor; + +interface LiteralOp extends TypedOp +{ +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ArrayOp.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ArrayOp.php new file mode 100644 index 0000000..fd852ce --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ArrayOp.php @@ -0,0 +1,76 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor\Ops; + +use danog\MadelineProto\FileRefExtractor\TLContext; +use danog\MadelineProto\FileRefExtractor\TypedOp; +use Webmozart\Assert\Assert; + +final readonly class ArrayOp implements TypedOp +{ + /** @var TypedOp[] */ + private readonly array $values; + public function __construct(TypedOp ...$values) + { + $this->values = $values; + } + public function normalize(array $stack, string $current, bool $ignoreFlag): ?\danog\MadelineProto\FileRefExtractor\TypedOp + { + $final = []; + $isDifferent = false; + foreach ($this->values as $value) { + $normalized = $value->normalize($stack, $current, $ignoreFlag); + if ($normalized === null) { + return null; + } + if ($normalized !== $value) { + $isDifferent = true; + } + $final[] = $normalized; + } + if ($isDifferent) { + return new self(...$final); + } + return $this; + } + + public function getType(TLContext $tl): string + { + return 'Vector<' . $this->values[0]->getType($tl) . '>'; + } + + public function build(TLContext $tl): array + { + $t = $this->values[0]->getType($tl); + $arr = []; + foreach ($this->values as $key => $value) { + $value = $value->build($tl); + Assert::eq($value['type'], $t, "Expected type '$t' at position $key but got '{$value['type']}'"); + $arr[$key] = $value['op']; + } + return [ + '_' => 'typedOp', + 'type' => $this->getType($tl), + 'op' => [ + '_' => 'vectorOp', + 'values' => $arr, + ], + ]; + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CallOp.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CallOp.php new file mode 100644 index 0000000..eb1fec6 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CallOp.php @@ -0,0 +1,85 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor\Ops; + +use danog\MadelineProto\FileRefExtractor\ActionOp; +use danog\MadelineProto\FileRefExtractor\TLContext; +use danog\MadelineProto\FileRefExtractor\TypedOp; +use Webmozart\Assert\Assert; + +final readonly class CallOp implements ActionOp +{ + /** @param TypedOp[] $args */ + public function __construct( + private readonly string $method, + private readonly array $args, + private readonly string $stored_constructor, + ) { + Assert::allIsInstanceOf($args, TypedOp::class); + } + public function normalize(array $stack, string $current, bool $ignoreFlag): ?ActionOp + { + $final = []; + $isDifferent = false; + foreach ($this->args as $from => $to) { + $normalized = $to->normalize($stack, $current, $ignoreFlag); + if ($normalized === null) { + return null; + } + if ($normalized !== $to) { + $isDifferent = true; + } + $final[$from] = $normalized; + } + if ($isDifferent) { + return new self($this->method, $final, $this->stored_constructor); + } + return $this; + } + + public static function simple(string $method, string $constructor, array $args, string $stored_constructor): self + { + $final = []; + foreach ($args as $from => $to) { + if (!$to instanceof TypedOp) { + $to = new CopyOp([[$constructor, $to]]); + } + $final[$from] = $to; + } + return new CallOp($method, $final, $stored_constructor); + } + + public function build(TLContext $tl): void + { + $final = []; + $tl->validateParams($this->method, false, $this->args); + $types = []; + foreach ($this->args as $from => $to) { + $final[$from] = ['_' => 'typedOpArg', 'key' => $from, 'value' => $tl->build($to, $from)]; + $types[$from] = $to->getType($tl); + } + + $tl->buildMode->addNode($tl, [ + '_' => 'callOp', + 'method' => $this->method, + 'args' => $final, + 'stored_constructor' => $this->stored_constructor, + ]); + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ConstructorOp.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ConstructorOp.php new file mode 100644 index 0000000..832364e --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ConstructorOp.php @@ -0,0 +1,79 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor\Ops; + +use danog\MadelineProto\FileRefExtractor\TLContext; +use danog\MadelineProto\FileRefExtractor\TypedOp; +use Webmozart\Assert\Assert; + +final readonly class ConstructorOp implements TypedOp +{ + /** @param TypedOp[] $args */ + public function __construct( + private readonly string $constructor, + private readonly array $args + ) { + Assert::allIsInstanceOf($args, TypedOp::class); + } + + public function normalize(array $stack, string $current, bool $ignoreFlag): ?\danog\MadelineProto\FileRefExtractor\TypedOp + { + $final = []; + $isDifferent = false; + foreach ($this->args as $from => $to) { + $normalized = $to->normalize($stack, $current, $ignoreFlag); + if ($normalized === null) { + return null; + } + if ($normalized !== $to) { + $isDifferent = true; + } + $final[$from] = $normalized; + } + if ($isDifferent) { + return new self($this->constructor, $final); + } + return $this; + } + public function getType(TLContext $tl): string + { + return $tl->tl->tl->getConstructors()->findByPredicate($this->constructor)['type']; + } + + public function build(TLContext $tl): array + { + $final = []; + $tl->validateParams($this->constructor, true, $this->args); + /*$orig = $tl->buildMode->curKey; + Assert::notNull($orig);*/ + foreach ($this->args as $from => $to) { + //$final[] = ['_' => 'typedOpArg', 'key' => $from, 'value' => $tl->build($to, "{$orig}_$from")]; + $final[] = ['_' => 'typedOpArg', 'key' => $from, 'value' => $tl->build($to, $from)]; + } + return [ + '_' => 'typedOp', + 'type' => $this->getType($tl), + 'op' => [ + '_' => 'constructorOp', + 'constructor' => $this->constructor, + 'args' => $final, + ], + ]; + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CopyMethodCallOp.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CopyMethodCallOp.php new file mode 100644 index 0000000..4a2f591 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CopyMethodCallOp.php @@ -0,0 +1,66 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor\Ops; + +use danog\MadelineProto\FileRefExtractor\ActionOp; +use danog\MadelineProto\FileRefExtractor\Path; +use danog\MadelineProto\FileRefExtractor\TLContext; +use Webmozart\Assert\Assert; + +final readonly class CopyMethodCallOp implements ActionOp +{ + public function __construct(private readonly string $method, private readonly string $stored_constructor) + { + } + + public function normalize(array $stack, string $current, bool $ignoreFlag): ?\danog\MadelineProto\FileRefExtractor\ActionOp + { + Assert::eq($current, $this->method); + Assert::isEmpty($stack); + return $this; + } + + public function build(TLContext $tl): void + { + Assert::eq($tl->position, $this->method, "Current constructor {$tl->position} does not match expected method {$this->method}"); + $method = $tl->tl->tl->getMethods()->findByMethod($this->method); + $args = []; + foreach ($method['params'] as $arg) { + if (isset($arg['pow'])) { + $args[$arg['name']] = new CopyOp([[$this->method, $arg['name'], Path::FLAG_PASSTHROUGH]]); + } else { + if ($arg['type'] === 'InputPeer') { + $args[$arg['name']] = new GetInputPeerOp(new Path([[$this->method, $arg['name']]])); + } elseif ($arg['type'] === 'InputUser') { + $args[$arg['name']] = new GetInputUserOp(new Path([[$this->method, $arg['name']]])); + } else { + $args[$arg['name']] = new CopyOp([[$this->method, $arg['name']]]); + } + } + } + $result = new CallOp( + $this->method, + $args, + $this->stored_constructor + ); + $result = $result->normalize([], $this->method, false); + + $result->build($tl); + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CopyOp.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CopyOp.php new file mode 100644 index 0000000..9764de6 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CopyOp.php @@ -0,0 +1,63 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor\Ops; + +use danog\MadelineProto\FileRefExtractor\FieldTransformationOp; +use danog\MadelineProto\FileRefExtractor\Path; +use danog\MadelineProto\FileRefExtractor\TLContext; +use danog\MadelineProto\FileRefExtractor\TypedOp; + +final readonly class CopyOp implements FieldTransformationOp +{ + private Path $path; + /** @param Path|list|TypedOp}> $path */ + public function __construct( + array|Path $path, + ) { + $this->path = $path instanceof Path ? $path : new Path($path); + } + + public function getType(TLContext $tl): string + { + return $this->path->getType($tl); + } + + public function normalize(array $stack, string $current, bool $ignoreFlag): ?TypedOp + { + $path = $this->path->normalize($stack, $current, $ignoreFlag); + if ($path === null) { + return null; + } + if ($path !== $this->path) { + return new self($path); + } + return $this; + } + public function build(TLContext $tl): array + { + return [ + '_' => 'typedOp', + 'type' => $this->path->getType($tl), + 'op' => [ + '_' => 'copyOp', + 'from' => $this->path->buildPath($tl, 'extractAndStore'), + ], + ]; + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputChannelOp.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputChannelOp.php new file mode 100644 index 0000000..1161ece --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputChannelOp.php @@ -0,0 +1,82 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor\Ops; + +use danog\MadelineProto\FileRefExtractor\FieldTransformationOp; +use danog\MadelineProto\FileRefExtractor\Path; +use danog\MadelineProto\FileRefExtractor\TLContext; +use Webmozart\Assert\Assert; + +final readonly class GetInputChannelOp implements FieldTransformationOp +{ + public function __construct( + private Path $path, + ) { + } + + public function normalize(array $stack, string $current, bool $ignoreFlag): ?\danog\MadelineProto\FileRefExtractor\TypedOp + { + $path = $this->path->normalize($stack, $current, $ignoreFlag); + if ($path === null) { + return null; + } + if ($path !== $this->path) { + return new self($path); + } + return $this; + } + public function getType(TLContext $tl): string + { + return 'InputChannel'; + } + + public function build(TLContext $tl): array + { + $type = $this->path->getType($tl); + if ($type === 'long') { + return [ + '_' => 'typedOp', + 'type' => $this->getType($tl), + 'op' => [ + '_' => 'getInputChannelByIdOp', + 'from' => $this->path->buildPath($tl, 'extractAndStore'), + ], + ]; + } + if ($type === 'InputChannel') { + return [ + '_' => 'typedOp', + 'type' => $this->getType($tl), + 'op' => [ + '_' => 'getInputChannelByIdOp', + 'from' => $this->path->buildPath($tl, 'extractChannelIdFromInputChannelAndStore'), + ], + ]; + } + Assert::eq($type, 'Channel', "Expected type 'Channel' at position {$this->path->path[0][0]} but got '$type'"); + return [ + '_' => 'typedOp', + 'type' => $this->getType($tl), + 'op' => [ + '_' => 'getInputChannelByIdOp', + 'from' => $this->path->buildPath($tl, 'extractChannelIdFromChannelAndStore'), + ], + ]; + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputPeerOp.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputPeerOp.php new file mode 100644 index 0000000..44f025c --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputPeerOp.php @@ -0,0 +1,73 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor\Ops; + +use danog\MadelineProto\FileRefExtractor\FieldTransformationOp; +use danog\MadelineProto\FileRefExtractor\Path; +use danog\MadelineProto\FileRefExtractor\TLContext; +use Webmozart\Assert\Assert; + +final readonly class GetInputPeerOp implements FieldTransformationOp +{ + public function __construct( + private Path $path, + ) { + } + + public function normalize(array $stack, string $current, bool $ignoreFlag): ?\danog\MadelineProto\FileRefExtractor\TypedOp + { + $path = $this->path->normalize($stack, $current, $ignoreFlag); + if ($path === null) { + return null; + } + if ($path !== $this->path) { + return new self($path); + } + return $this; + } + public function getType(TLContext $tl): string + { + return 'InputPeer'; + } + + public function build(TLContext $tl): array + { + $type = $this->path->getType($tl); + if ($type === 'InputPeer') { + return [ + '_' => 'typedOp', + 'type' => $this->getType($tl), + 'op' => [ + '_' => 'getInputPeerByIdOp', + 'from' => $this->path->buildPath($tl, 'extractPeerIdFromInputPeerAndStore'), + ], + ]; + } + Assert::eq($type, 'Peer', "Expected type 'Peer' at position {$this->path->path[0][0]} but got '$type'"); + + return [ + '_' => 'typedOp', + 'type' => $this->getType($tl), + 'op' => [ + '_' => 'getInputPeerByIdOp', + 'from' => $this->path->buildPath($tl, 'extractPeerIdFromPeerAndStore'), + ], + ]; + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputStickerSet.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputStickerSet.php new file mode 100644 index 0000000..9acfc53 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputStickerSet.php @@ -0,0 +1,76 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor\Ops; + +use danog\MadelineProto\FileRefExtractor\FieldTransformationOp; +use danog\MadelineProto\FileRefExtractor\Path; +use danog\MadelineProto\FileRefExtractor\TLContext; +use Webmozart\Assert\Assert; + +final readonly class GetInputStickerSet implements FieldTransformationOp +{ + public function __construct( + private Path $path, + ) { + } + + public function normalize(array $stack, string $current, bool $ignoreFlag): ?\danog\MadelineProto\FileRefExtractor\TypedOp + { + if ($ignoreFlag) { + return null; + } + $path = $this->path->normalize($stack, $current, $ignoreFlag); + if ($path === null) { + return null; + } + if ($path !== $this->path) { + return new self($path); + } + return $this; + } + + public function getType(TLContext $tl): string + { + return 'InputStickerSet'; + } + + public function build(TLContext $tl): array + { + $t = $this->path->getType($tl); + if ($t === 'StickerSet') { + return [ + '_' => 'typedOp', + 'type' => 'InputStickerSet', + 'op' => [ + '_' => 'copyOp', + 'from' => $this->path->buildPath($tl, 'extractInputStickerSetFromStickerSetAndStore'), + ], + ]; + } + Assert::eq($t, 'Vector'); + return [ + '_' => 'typedOp', + 'type' => $this->getType($tl), + 'op' => [ + '_' => 'copyOp', + 'from' => $this->path->buildPath($tl, 'extractInputStickerSetFromDocumentAttributesAndStore'), + ], + ]; + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputUserOp.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputUserOp.php new file mode 100644 index 0000000..8d8c476 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputUserOp.php @@ -0,0 +1,82 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor\Ops; + +use danog\MadelineProto\FileRefExtractor\FieldTransformationOp; +use danog\MadelineProto\FileRefExtractor\Path; +use danog\MadelineProto\FileRefExtractor\TLContext; +use Webmozart\Assert\Assert; + +final readonly class GetInputUserOp implements FieldTransformationOp +{ + public function __construct( + private Path $path, + ) { + } + + public function normalize(array $stack, string $current, bool $ignoreFlag): ?\danog\MadelineProto\FileRefExtractor\TypedOp + { + $path = $this->path->normalize($stack, $current, $ignoreFlag); + if ($path === null) { + return null; + } + if ($path !== $this->path) { + return new self($path); + } + return $this; + } + public function getType(TLContext $tl): string + { + return 'InputUser'; + } + + public function build(TLContext $tl): array + { + $type = $this->path->getType($tl); + if ($type === 'InputUser') { + return [ + '_' => 'typedOp', + 'type' => $this->getType($tl), + 'op' => [ + '_' => 'getInputUserByIdOp', + 'from' => $this->path->buildPath($tl, 'extractUserIdFromInputUserAndStore'), + ], + ]; + } + if ($type === 'long') { + return [ + '_' => 'typedOp', + 'type' => $this->getType($tl), + 'op' => [ + '_' => 'getInputUserByIdOp', + 'from' => $this->path->buildPath($tl, 'extractAndStore'), + ], + ]; + } + Assert::eq($type, 'User', "Expected type 'User' at position {$this->path->path[0][0]} but got '$type'"); + return [ + '_' => 'typedOp', + 'type' => $this->getType($tl), + 'op' => [ + '_' => 'getInputUserByIdOp', + 'from' => $this->path->buildPath($tl, 'extractUserIdFromUserAndStore'), + ], + ]; + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetMessageOp.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetMessageOp.php new file mode 100644 index 0000000..d262014 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetMessageOp.php @@ -0,0 +1,89 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor\Ops; + +use danog\MadelineProto\FileRefExtractor\ActionOp; +use danog\MadelineProto\FileRefExtractor\TLContext; +use danog\MadelineProto\FileRefExtractor\TypedOp; +use Webmozart\Assert\Assert; + +final readonly class GetMessageOp implements ActionOp +{ + public function __construct( + private readonly TypedOp $peer, + private readonly TypedOp $id, + private readonly ?TypedOp $fromScheduled, + private readonly ?TypedOp $quickReplyShortcutId, + private readonly string $stored_constructor + ) { + } + public function normalize(array $stack, string $current, bool $ignoreFlag): ?ActionOp + { + $peer = $this->peer->normalize($stack, $current, $ignoreFlag); + if ($peer === null) { + return null; + } + $id = $this->id->normalize($stack, $current, $ignoreFlag); + if ($id === null) { + return null; + } + $fromScheduled = $this->fromScheduled?->normalize($stack, $current, $ignoreFlag); + if ($fromScheduled === null && $this->fromScheduled !== null) { + return null; + } + $quickReplyShortcutId = $this->quickReplyShortcutId?->normalize($stack, $current, $ignoreFlag); + if ($quickReplyShortcutId === null && $this->quickReplyShortcutId !== null) { + return null; + } + if ($peer !== $this->peer || $id !== $this->id || $fromScheduled !== $this->fromScheduled || $quickReplyShortcutId !== $this->quickReplyShortcutId) { + return new self($peer, $id, $fromScheduled, $quickReplyShortcutId, $this->stored_constructor); + } + return $this; + } + public function getType(TLContext $tl): string + { + return 'messages.Messages'; + } + + public function build(TLContext $tl): void + { + Assert::eq($this->peer->getType($tl), 'InputPeer'); + Assert::eq($this->id->getType($tl), 'int'); + if ($this->fromScheduled !== null) { + Assert::eq($this->fromScheduled->getType($tl), 'true'); + } + if ($this->quickReplyShortcutId !== null) { + Assert::eq($this->quickReplyShortcutId->getType($tl), 'int'); + } + $extra = []; + if ($this->fromScheduled !== null) { + $extra['from_scheduled'] = $tl->build($this->fromScheduled, 'from_scheduled'); + } + if ($this->quickReplyShortcutId !== null) { + $extra['quick_reply_shortcut_id'] = $tl->build($this->quickReplyShortcutId, 'quick_reply_shortcut_id'); + } + $tl->buildMode->addNode($tl, [ + '_' => 'getMessageOp', + 'stored_constructor' => $this->stored_constructor, + 'peer' => $tl->build($this->peer, 'peer'), + 'id' => $tl->build($this->id, 'id'), + ...$extra, + ]); + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/Noop.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/Noop.php new file mode 100644 index 0000000..766a746 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/Noop.php @@ -0,0 +1,42 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor\Ops; + +use danog\MadelineProto\FileRefExtractor\ActionOp; +use danog\MadelineProto\FileRefExtractor\TLContext; + +final readonly class Noop implements ActionOp +{ + public function __construct(private readonly string $why) + { + } + + public function normalize(array $stack, string $current, bool $ignoreFlag): ?ActionOp + { + return $this; + } + + public function build(TLContext $tl): void + { + $tl->buildMode->addNode( + $tl, + why: $this->why, + ); + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/PrimitiveLiteralOp.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/PrimitiveLiteralOp.php new file mode 100644 index 0000000..106c2a9 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/PrimitiveLiteralOp.php @@ -0,0 +1,59 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor\Ops; + +use danog\MadelineProto\FileRefExtractor\LiteralOp; +use danog\MadelineProto\FileRefExtractor\TLContext; +use Webmozart\Assert\Assert; + +final readonly class PrimitiveLiteralOp implements LiteralOp +{ + public function __construct(private readonly string $type, private readonly mixed $value) + { + Assert::inArray($type, ['int', 'long', 'string', 'bool', 'float', 'bytes'], "Invalid type '$type' for LiteralOp"); + } + + public function normalize(array $stack, string $current, bool $ignoreFlag): ?\danog\MadelineProto\FileRefExtractor\TypedOp + { + return $this; + } + public function getType(TLContext $tl): string + { + return $this->type; + } + + public function build(TLContext $tl): array + { + return [ + '_' => 'typedOp', + 'type' => $this->getType($tl), + 'op' => [ + '_' => match ($this->type) { + 'int' => 'intLiteralOp', + 'long' => 'longLiteralOp', + 'string' => 'stringLiteralOp', + 'bool' => 'boolLiteralOp', + 'double' => 'doubleLiteralOp', + 'bytes' => 'bytesLiteralOp', + }, + 'value' => $this->value, + ], + ]; + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ThemeFormatOp.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ThemeFormatOp.php new file mode 100644 index 0000000..b225922 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ThemeFormatOp.php @@ -0,0 +1,49 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor\Ops; + +use danog\MadelineProto\FileRefExtractor\LiteralOp; +use danog\MadelineProto\FileRefExtractor\TLContext; + +final readonly class ThemeFormatOp implements LiteralOp +{ + public function __construct() + { + } + + public function normalize(array $stack, string $current, bool $ignoreFlag): ?\danog\MadelineProto\FileRefExtractor\TypedOp + { + return $this; + } + public function getType(TLContext $tl): string + { + return 'string'; + } + + public function build(TLContext $tl): array + { + return [ + '_' => 'typedOp', + 'type' => 'string', + 'op' => [ + '_' => 'themeFormatLiteralOp', + ], + ]; + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Path.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Path.php new file mode 100644 index 0000000..dab149b --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Path.php @@ -0,0 +1,288 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor; + +use AssertionError; +use danog\MadelineProto\FileRefExtractor\BuildMode\Ast; +use danog\MadelineProto\FileRefExtractor\Ops\CopyOp; +use Webmozart\Assert\Assert; + +final readonly class Path +{ + final public const FLAG_UNPACK_ARRAY = 1; + final public const FLAG_IF_ABSENT_ABORT = 2; + final public const FLAG_PASSTHROUGH = 4; + public function __construct( + /** @var list|TypedOp}> */ + public array $path, + public bool $isFromParent = false, + private ?string $customName = null, + ) { + foreach ($path as $k => $elem) { + if (\count($elem) !== 2 && \count($elem) !== 3) { + throw new \InvalidArgumentException('Invalid path part: ' . json_encode($path)); + } + if (isset($elem[2])) { + if (!$elem[2] instanceof TypedOp + && !\is_int($elem[2]) + ) { + throw new \InvalidArgumentException('Invalid path part: ' . json_encode($path)); + } + if (\is_int($elem[2])) { + if (($elem[2] & (self::FLAG_IF_ABSENT_ABORT | self::FLAG_PASSTHROUGH)) === 6) { + throw new \InvalidArgumentException('Cannot use abort and passthrough flag at the same time: ' . json_encode($path)); + } + if ($k !== \count($path) - 1 && ($elem[2] & self::FLAG_PASSTHROUGH) !== 0) { + throw new \InvalidArgumentException('Can only use passthrough flag on last element: ' . json_encode($path)); + } + } + } + } + } + + public function normalize(array $stack, string $current, bool $ignoreFlag): ?self + { + $new = []; + foreach ($this->path as $i => $part) { + if ($ignoreFlag && \array_key_exists(2, $part) && \is_int($part[2]) && ($part[2] & self::FLAG_IF_ABSENT_ABORT)) { + return null; + } + if (isset($part[2]) && $part[2] instanceof TypedOp) { + $n = $part[2]->normalize($stack, $current, $ignoreFlag); + if ($n === null) { + return null; + } + $part[2] = $n; + } + $new[$i] = $part; + } + if ($this->isFromParent) { + // From parent + if ($stack[0][0] === $this->path[0][0]) { + return new self($new, true, $this->customName); + } + return null; + } + Assert::eq($this->path[0][0], $current); + return new self( + [...$stack, ...$new], + false, + $this->customName + ); + } + + public function buildPath(TLContext $tl, string $extractor): string + { + $new = []; + $finalK = \count($this->path) - 1; + foreach ($this->path as $k => $part) { + $consType = $tl->tl->getConstructorOrMethod($part[0])['type']; + $newPart = [ + '_' => 'pathPart', + 'type' => $consType, + 'constructor' => $part[0], + 'param' => $part[1], + 'param_type' => $part[1] === '' ? $consType : $tl->tl->getParamType($part[0], $part[1]), + 'flag' => ['_' => 'paramNotFlag'], + ]; + if (isset($part[2])) { + if ($part[2] instanceof TypedOp) { + $fallback = $part[2]->build($tl); + array_walk_recursive($fallback, static function ($v): void { + if (\is_array($v) + && isset($v['_']) + && \in_array($v['_'], ['copyOp', 'getInputChannelByIdOp', 'getInputUserByIdOp', 'getInputPeerByIdOp'], true) + ) { + throw new \InvalidArgumentException("Cannot use {$v['_']} as fallback in TypedOp"); + } + }); + $newPart['flag'] = ['_' => 'paramIsFlagFallback', 'fallback' => $fallback]; + } elseif (\is_int($part[2])) { + if ($part[2] & self::FLAG_UNPACK_ARRAY) { + if ($tl->buildMode instanceof Ast && !$tl->buildMode->allowUnpacking) { + throw new AssertionError('Cannot use unpack_array flag in Ast mode with backrefs enabled'); + } + $newPart['unpack_vector'] = true; + } + if ($part[2] & self::FLAG_IF_ABSENT_ABORT) { + $newPart['flag'] = ['_' => 'paramIsFlagAbortIfEmpty']; + } + if ($part[2] & self::FLAG_PASSTHROUGH) { + Assert::eq($k, $finalK, 'Can only use passthrough flag on last element'); + $newPart['flag'] = ['_' => 'paramIsFlagPassthrough']; + } + } + } + $new []= $newPart; + } + $newPart = end($new); + + $serialized = json_encode([$extractor, $this->isFromParent, $new], flags: JSON_THROW_ON_ERROR); + if (isset($tl->buildMode->storedByPath[$serialized])) { + $name = $tl->buildMode->storedByPath[$serialized]; + } else { + $isFlag = $newPart['flag']['_'] === 'paramIsFlagPassthrough'; + $type = $this->getType($tl); + if ($extractor === 'extractAndStore') { + + } elseif ($extractor === 'extractInputStickerSetFromDocumentAttributesAndStore') { + Assert::eq($type, 'Vector'); + $type = 'InputStickerSet'; + } elseif ($extractor === 'extractInputStickerSetFromStickerSetAndStore') { + Assert::eq($type, 'StickerSet'); + $type = 'InputStickerSet'; + } elseif ($extractor === 'extractPeerIdFromPeerAndStore') { + Assert::eq($type, 'Peer'); + $type = 'long'; + } elseif ($extractor === 'extractPeerIdFromInputPeerAndStore') { + Assert::eq($type, 'InputPeer'); + $type = 'long'; + } elseif ($extractor === 'extractChannelIdFromChannelAndStore') { + Assert::eq($type, 'Channel'); + $type = 'long'; + } elseif ($extractor === 'extractChannelIdFromInputChannelAndStore') { + Assert::eq($type, 'InputChannel'); + $type = 'long'; + } elseif ($extractor === 'extractUserIdFromUserAndStore') { + Assert::eq($type, 'Channel'); + $type = 'long'; + } elseif ($extractor === 'extractUserIdFromInputUserAndStore') { + Assert::eq($type, 'InputUser'); + $type = 'long'; + } else { + throw new \InvalidArgumentException('Unknown extractor ' . $extractor); + } + if ($isFlag) { + $flag = $tl->buildMode->storedFlags++; + $type = "flags.$flag?$type"; + } + $name = $this->customName ?? $tl->buildMode->curKey; + Assert::notNull($name); + if (isset($tl->buildMode->stored[$name])) { + throw new AssertionError("Need custom name (already have $name) for ".json_encode($this->path)); + } + $tl->buildMode->stored[$name] = [ + 'type' => $type, + 'extractor' => [ + '_' => $extractor, + 'from' => ['_' => $this->isFromParent ? 'pathParent': 'path', 'parts' => $new], + 'to' => $name, + ], + ]; + $tl->buildMode->storedByPath[$serialized] = $name; + } + if ($this->isFromParent) { + $tl->buildMode->setNeedsParent($this->path[0][0]); + } + return $name; + } + public function getType(TLContext $tl): string + { + if ($this instanceof CopyOp) { + Assert::eq($tl->position, $this->path[0][0], "getTypeAtPosition: Current constructor {$tl->position} does not match expected constructor {$this->path[0][0]}"); + } + $path = $this->path; + $idx = 0; + $typeForReturn = null; + $typeForCheck = null; + do { + [$requiredConstructor, $requiredParam] = $path[$idx]; + $expectFlag = $path[$idx][2] ?? null; + + if ($typeForCheck !== null) { + $consOfType = $tl->tl->getConstructorsOfType($typeForCheck, true); + $methodsOfType = $tl->tl->getMethodsOfType($typeForCheck, true); + + if (isset($consOfType[$requiredConstructor])) { + // OK + } elseif (isset($methodsOfType[$requiredConstructor])) { + // OK + } else { + throw new AssertionError("{$requiredConstructor} is NOT a constructor of type $typeForReturn, path: ".json_encode($path)); + } + } + $constructor = $tl->tl->tl->getConstructors()->findByPredicate($requiredConstructor); + if ($constructor === false) { + $constructor = $tl->tl->tl->getMethods()->findByMethod($requiredConstructor); + } + Assert::notFalse($constructor, "Constructor or method not found for path"); + + $typeForReturn = null; + if ($requiredParam === '') { + Assert::true(isset($constructor['method']), "Expected method at position $idx in path ".json_encode($path)); + $param = $constructor; + if (isset($param['subtype'])) { + if ($expectFlag & self::FLAG_UNPACK_ARRAY) { + $typeForReturn = "Vector<{$param['subtype']}>"; + $typeForCheck = $param['subtype']; + } else { + $typeForReturn = "Vector<{$param['subtype']}>"; + $typeForCheck = "Vector<{$param['subtype']}>"; + } + } else { + $typeForReturn = $param['type']; + $typeForCheck = $param['type']; + if (\is_int($expectFlag)) { + Assert::eq($expectFlag & self::FLAG_UNPACK_ARRAY, 0, "Expected no flag array at position $idx in path ".json_encode($path)); + } + } + continue; + } + $n = $constructor['predicate'] ?? $constructor['method']; + foreach ($constructor['params'] as $param) { + if ($param['name'] === $requiredParam) { + if (isset($param['subtype'])) { + if ($expectFlag & self::FLAG_UNPACK_ARRAY) { + $typeForReturn = "Vector<{$param['subtype']}>"; + $typeForCheck = $param['subtype']; + } else { + $typeForReturn = "Vector<{$param['subtype']}>"; + $typeForCheck = "Vector<{$param['subtype']}>"; + } + } else { + $typeForReturn = $param['type']; + $typeForCheck = $param['type']; + if (\is_int($expectFlag)) { + Assert::eq($expectFlag & self::FLAG_UNPACK_ARRAY, 0, "Expected no flag array at position $idx in path ".json_encode($path)); + } + } + + if (isset($param['pow'])) { + Assert::notNull($expectFlag); + if ($expectFlag instanceof TypedOp) { + Assert::eq($typeForReturn, $expectFlag->getType($tl)); + } elseif ($expectFlag === null) { + throw new AssertionError("Got no flag at position $idx in path ".json_encode($path)); + } elseif (0 === ($expectFlag & (self::FLAG_IF_ABSENT_ABORT | self::FLAG_PASSTHROUGH))) { + throw new AssertionError("Got no relevant flags at position $idx in path ".json_encode($path)); + } + } elseif (($expectFlag & (self::FLAG_IF_ABSENT_ABORT | self::FLAG_PASSTHROUGH)) !== 0) { + throw new AssertionError("Expected no flag at position $idx, got $expectFlag in path ".json_encode($path)); + } + break; + } + } + Assert::notNull($typeForReturn, "Parameter {$requiredParam} not found in constructor or method $n"); + Assert::notNull($typeForCheck, "Parameter {$requiredParam} not found in constructor or method $n"); + } while (++$idx < \count($path)); + + return $typeForReturn; + } + +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TLContext.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TLContext.php new file mode 100644 index 0000000..d9bd7d9 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TLContext.php @@ -0,0 +1,79 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor; + +use AssertionError; +use danog\MadelineProto\FileRefExtractor\BuildMode\Ast; +use Webmozart\Assert\Assert; + +final readonly class TLContext +{ + public function __construct( + public TLWrapper $tl, + public Ast $buildMode, + public string $position, + public bool $isConstructor, + public bool $ignoreFlagged = false, + ) { + } + + public function build(TypedOp $op, string $key): array + { + $prev = $this->buildMode->curKey; + $this->buildMode->curKey = $key; + $v = $op->build($this); + $this->buildMode->curKey = $prev; + return $v; + } + + /** + * @param Op[] $params + */ + public function validateParams(string $constructor, bool $isCons, array $params): void + { + if ($isCons) { + $data = $this->tl->tl->getConstructors()->findByPredicate($constructor); + } else { + $data = $this->tl->tl->getMethods()->findByMethod($constructor); + } + Assert::notFalse($data, "Constructor or method not found for $constructor"); + foreach ($data['params'] as $param) { + if (!isset($params[$param['name']])) { + if (isset($param['pow']) || $param['name'] === 'flags') { + continue; + } + throw new AssertionError("Mandatory parameter {$param['name']} not found in constructor or method $constructor"); + } + if (isset($param['subtype'])) { + $t = "Vector<{$param['subtype']}>"; + } else { + $t = $param['type']; + } + $gotT = $params[$param['name']]->getType($this); + if ($t !== $gotT) { + throw new AssertionError("Parameter {$param['name']} in constructor or method $constructor has type $t but got $gotT"); + } + unset($params[$param['name']]); + } + if ($params) { + $extra = implode(', ', array_keys($params)); + throw new AssertionError("Extra parameters in constructor or method $constructor: $extra"); + } + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TLWrapper.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TLWrapper.php new file mode 100644 index 0000000..5ecb4bd --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TLWrapper.php @@ -0,0 +1,87 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor; + +use danog\MadelineProto\TL\TL; +use Webmozart\Assert\Assert; + +final class TLWrapper +{ + private readonly array $constructorsOfType; + private readonly array $methodsOfType; + + public function __construct( + public readonly TL $tl, + ) { + $constructorsOfType = []; + $methodsOfType = []; + foreach ($tl->getConstructors()->by_id as $constructor) { + $t = $constructor['type']; + $constructorsOfType[$t][$constructor['predicate']] = $constructor; + } + foreach ($tl->getMethods()->by_id as $method) { + $t = isset($method['subtype']) ? "Vector<{$method['subtype']}>" : $method['type']; + $methodsOfType[$t][$method['method']] = $method; + } + $this->constructorsOfType = $constructorsOfType; + $this->methodsOfType = $methodsOfType; + } + + public function getParamType(string $constructorOrMethod, string $param): string + { + foreach ($this->getConstructorOrMethod($constructorOrMethod)['params'] as $p) { + if ($p['name'] === $param) { + return $p['subtype'] ?? $p['type']; + } + } + throw new \InvalidArgumentException("No parameter of name $param found for constructor or method: $constructorOrMethod"); + } + public function getConstructorOrMethod(string $name): array + { + $constructor = $this->tl->getConstructors()->findByPredicate($name); + if ($constructor) { + return $constructor; + } + $method = $this->tl->getMethods()->findByMethod($name); + if ($method) { + return $method; + } + throw new \InvalidArgumentException("No constructor or method found with name: $name"); + } + public function isConstructor(string $constructor): bool + { + return (bool) $this->tl->getConstructors()->findByPredicate($constructor); + } + public function getConstructorsOfType(string $type, bool $ignoreEmpty = false): array + { + $t = $this->constructorsOfType[$type] ?? []; + if (!$ignoreEmpty) { + Assert::notEmpty($t, "No constructors found for type: $type"); + } + return $t; + } + public function getMethodsOfType(string $type, bool $ignoreEmpty = false): array + { + $t = $this->methodsOfType[$type] ?? []; + if (!$ignoreEmpty) { + Assert::notEmpty($t, "No methods found for type: $type"); + } + return $t; + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TypedOp.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TypedOp.php new file mode 100644 index 0000000..d11dfa8 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TypedOp.php @@ -0,0 +1,29 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\FileRefExtractor; + +interface TypedOp +{ + public function build(TLContext $tl): array; + /** + * @param list $stack + */ + public function normalize(array $stack, string $current, bool $ignoreFlag): ?self; + public function getType(TLContext $tl): string; +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/TL/Builder.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/TL/Builder.php new file mode 100644 index 0000000..6d96cf1 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/TL/Builder.php @@ -0,0 +1,559 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\TL; + +use AssertionError; +use danog\MadelineProto\Connection; +use danog\MadelineProto\Lang; +use danog\MadelineProto\MTProto; +use danog\MadelineProto\MTProtoTools\MinDatabase; +use danog\MadelineProto\MTProtoTools\PeerDatabase; +use danog\MadelineProto\MTProtoTools\ReferenceDatabase; +use danog\MadelineProto\SecurityException; +use danog\MadelineProto\Settings\TLSchema; +use ReflectionClass; +use ReflectionFunction; +use Webmozart\Assert\Assert; + +/** + * @internal + */ +class Builder +{ + /** + * TL instance. + */ + protected TL $TL; + protected readonly array $byType; + protected readonly array $idByPredicate; + protected readonly array $typeByPredicate; + protected readonly array $constructorByPredicate; + protected readonly array $methodVectorTypes; + protected readonly string $class; + protected $output; + public function __construct( + TLSchema $settings, + /** + * Output file. + */ + string $output, + /** + * Output namespace. + */ + protected string $namespace, + ) { + $this->output = fopen($output, 'w'); + $this->TL = new TL(); + $this->TL->init($settings); + + $this->class = basename($output, '.php'); + + $callbacks = []; + $callbacks []= (new ReflectionClass(MTProto::class))->newInstanceWithoutConstructor(); + $callbacks []= (new ReflectionClass(ReferenceDatabase::class))->newInstanceWithoutConstructor(); + $callbacks []= (new ReflectionClass(MinDatabase::class))->newInstanceWithoutConstructor(); + $callbacks []= (new ReflectionClass(PeerDatabase::class))->newInstanceWithoutConstructor(); + $this->TL->updateCallbacks($callbacks); + + $byType = []; + $idByPredicate = ['vector' => var_export(hex2bin('1cb5c415'), true)]; + $constructorByPredicate = []; + foreach ($this->TL->getConstructors()->by_id as $id => $constructor) { + foreach ($constructor['params'] as &$param) { + if ($constructor['predicate'] === 'photoStrippedSize' + && $param['name'] === 'bytes' + ) { + $param['name'] = 'inflated'; + $param['type'] = 'inflated'; + } + + if ($param['name'] === 'random_bytes') { + $param['type'] = 'random_bytes'; + } + + if (isset($param['subtype'])) { + $param['type'] = match ($param['type']) { + 'Vector t' => "Vector<{$param['subtype']}>", + 'vector' => "vector<{$param['subtype']}>", + }; + } + } + + if (isset($constructor['layer'])) { + $constructor['predicate'] .= '_'.$constructor['layer']; + if (!$this instanceof SecretBuilder) { + continue; + } + } + $constructor['id'] = $id; + + $constructorByPredicate[$constructor['predicate']] = $constructor; + $idByPredicate[$constructor['predicate']] = var_export($id, true); + $typeByPredicate[$constructor['predicate']] = $constructor['type']; + $byType[$constructor['type']][$id]= $constructor; + } + $this->idByPredicate = $idByPredicate; + $this->typeByPredicate = $typeByPredicate; + $this->constructorByPredicate = $constructorByPredicate; + + $methodConstructors = []; + $methodVectorTypes = []; + foreach ($this->TL->getMethods()->by_id as $c) { + ['type' => $type, 'method' => $name, 'encrypted' => $encrypted] = $c; + if (!$encrypted) { + continue; + } + // TODO + if ($type === 'X') { + continue; + } + if (isset($c['subtype'])) { + $methodVectorTypes[$name] = match ($c['type']) { + 'Vector t' => "Vector<{$c['subtype']}>", + 'vector' => "vector<{$c['subtype']}>", + }; + continue; + } + $methodConstructors = array_merge($methodConstructors, $byType[$type]); + } + + $byType['MethodResult'] = $methodConstructors; + $this->methodVectorTypes = $methodVectorTypes; + $this->byType = $byType; + } + + protected static function escapeConstructorName(array $constructor): string + { + return str_replace(['.', ' '], '___', $constructor['predicate']); + } + protected static function escapeTypeName(string $name): string + { + return str_replace(['.', ' '], '___', $name); + } + protected function needFullConstructor(string $predicate): bool + { + if (isset($this->TL->beforeConstructorDeserialization[$predicate]) + || isset($this->TL->afterConstructorDeserialization[$predicate])) { + return true; + } + return false; + } + protected static function methodFromClosure(\Closure $closure): string + { + $refl = new ReflectionFunction($closure); + return match ($refl->getClosureThis()::class) { + PeerDatabase::class => '$this->peerDatabase', + MinDatabase::class => '$this->minDatabase?', + ReferenceDatabase::class => '$this->referenceDatabase?', + MTProto::class => '$this->API', + }."->".$refl->getName(); + } + + protected function buildTypes(array $constructors, string $type): string + { + $typeMethod = "_type_".self::escapeTypeName($type); + $result = "match (stream_get_contents(\$stream, 4)) {\n"; + foreach ($constructors as ['predicate' => $predicate]) { + if ($predicate === 'gzip_packed') { + continue; + } + if ($predicate === 'jsonObjectValue') { + throw new AssertionError("Impossible!"); + } + $result .= $this->idByPredicate[$predicate]." => "; + $result .= $this->buildConstructor($predicate); + $result .= ",\n"; + } + if ($type === 'MethodResult') { + $result .= $this->idByPredicate['gzip_packed']." => ".$this->methodCall( + "deserialize$typeMethod", + 'self::gzdecode($stream), $method' + ).",\n"; + $result .= $this->idByPredicate['vector']." => match (\$method) {\n"; + foreach ($this->methodVectorTypes as $method => $type) { + $result .= var_export($method, true) . ' => '.$this->buildType($type).",\n"; + } + $result .= "},\n"; + } else { + $result .= $this->idByPredicate['gzip_packed']." => ".$this->methodCall( + "deserialize$typeMethod", + 'self::gzdecode($stream)' + ).",\n"; + } + $result .= "default => self::err(\$stream)\n"; + return $result."}\n"; + } + protected array $createdConstructors = []; + public function buildConstructor(string $predicate): string + { + $constructor = $this->constructorByPredicate[$predicate]; + Assert::notFalse($constructor, "Missing constructor $predicate"); + [ + 'flags' => $flags, + 'params' => $params, + ] = $constructor; + + if ($predicate === 'rpc_result') { + $result = "\$tmp = ['_' => '$predicate', 'req_msg_id' => \$id = {$this->buildType('long')}];\n"; + $result .= '$message = $this->connection->new_outgoing[$id]; + $method = $message->constructor; + if (isset($this->beforeMethodResponseDeserialization[$method])) { + foreach ($this->beforeMethodResponseDeserialization[$method] as $callback) { + $callback($method); + } + } + $tmp["result"] = '.$this->buildType('MethodResult').'; + if (isset($this->afterMethodResponseDeserialization[$method])) { + foreach ($this->afterMethodResponseDeserialization[$method] as $callback) { + $callback($tmp); + } + } + '; + } elseif ($flags) { + $result = $this->buildConstructorFull($predicate, $params, $flags); + } else { + $result = $this->buildConstructorShort($predicate, $params, $flags); + if (!$this->needFullConstructor($predicate)) { + return $result; + } + $result = "\$tmp = $result;\n"; + } + + $pre = ''; + foreach ($this->TL->beforeConstructorDeserialization[$predicate] ?? [] as $closure) { + $pre .= self::methodFromClosure($closure)."('$predicate');\n"; + } + $result = $pre.$result; + foreach ($this->TL->afterConstructorDeserialization[$predicate] ?? [] as $closure) { + $result .= self::methodFromClosure($closure)."(\$tmp);\n"; + } + $result .= "return \$tmp;\n"; + + $nameEscaped = self::escapeConstructorName($constructor); + if (!isset($this->createdConstructors[$predicate])) { + $this->createdConstructors[$predicate] = true; + $this->m("deserialize_$nameEscaped", $result); + } + + return $this->methodCall("deserialize_$nameEscaped"); + } + protected function buildConstructorFull(string $predicate, array $params, array $flags): string + { + $result = "\$tmp = ['_' => '$predicate'];\n"; + $flagNames = []; + foreach ($flags as ['flag' => $flag]) { + $flagNames[$flag] = true; + } + foreach ($params as $param) { + $name = $param['name']; + if (!isset($param['pow'])) { + $code = $this->buildType($param['type']); + + if (isset($flagNames[$name])) { + $result .= "\$$name = $code;\n"; + } else { + $result .= "\$tmp['$name'] = $code;\n"; + } + continue; + } + $flag = "(\${$param['flag']} & {$param['pow']}) !== 0"; + if ($param['type'] === 'true') { + $result .= "\$tmp['$name'] = $flag;\n"; + continue; + } + $code = $this->buildType($param['type']); + $result .= "if ($flag) \$tmp['$name'] = $code;\n"; + } + return $result; + } + + protected function buildConstructorShort(string $predicate, array $params = []): string + { + if ($predicate === 'dataJSON') { + return 'json_decode('.$this->buildType('string').', true, 512, \\JSON_THROW_ON_ERROR)'; + } + if ($predicate === 'jsonNull') { + return 'null'; + } + $superBare = $this->typeByPredicate[$predicate] === 'JSONValue' + || $this->typeByPredicate[$predicate] === 'Peer'; + + if ($superBare) { + $result = $this->buildType(end($params)['type']); + } else { + $result = "[\n"; + $result .= "'_' => '$predicate',\n"; + foreach ($params as $param) { + $result .= var_export($param['name'], true).' => '; + $result .= $this->buildType($param['type']).",\n"; + } + $result .= ']'; + } + + if ($predicate === 'peerChat') { + $result = "-$result"; + } elseif ($predicate === 'peerChannel') { + $result = "-1000000000000 - $result"; + } + return $result; + } + + protected array $createdVectors = []; + protected function buildVector(string $type, bool $bare, ?string $payload = null): string + { + if (!isset($this->createdVectors[$type])) { + $this->createdVectors[$type] = true; + if ($type === 'JSONObjectValue') { + $payload = '$result['.$this->buildType('string').'] = '.$this->buildType('JSONValue'); + } elseif (isset($this->byType[$type])) { + $payload = '$result []= '.$this->buildTypes($this->byType[$type], $type); + } elseif ($payload === null) { + if ($type === '%MTMessage') { + $type = 'MTmessage'; + } + $payload = '$result []= '.$this->buildConstructor($type); + } + $this->m("deserialize_type_array_of_{$this->escapeTypeName($type)}", ' + $result = []; + for ($x = unpack("V", stream_get_contents($stream, 4))[1]; $x > 0; --$x) { + '.$payload.'; + } + return $result; + ', 'array', static: $type === 'JSONValue'); + } + return $this->methodCall( + "deserialize_type_array_of_{$this->escapeTypeName($type)}", + $bare ? '$stream' : 'match(stream_get_contents($stream, 4)) { + '.$this->idByPredicate['vector'].' => $stream, + '.$this->idByPredicate['gzip_packed'].' => self::gzdecode_vector($stream) + }' + ); + } + + protected array $createdTypes = ['Object' => true]; + protected array $typeStack = []; + protected function buildType(string $type): string + { + if (str_starts_with($type, 'Vector<')) { + return $this->buildVector(str_replace(['Vector<', '>'], '', $type), false); + } + if (str_starts_with($type, 'vector<')) { + return $this->buildVector(str_replace(['vector<', '>'], '', $type), true); + } + $tmp = match ($type) { + '#' => "unpack('V', stream_get_contents(\$stream, 4))[1]", + 'int' => "unpack('l', stream_get_contents(\$stream, 4))[1]", + 'long' => "unpack('q', stream_get_contents(\$stream, 8))[1]", + 'double' => "unpack('d', stream_get_contents(\$stream, 8))[1]", + 'Bool' => 'match (stream_get_contents($stream, 4)) {'. + $this->idByPredicate['boolTrue'].' => true,'. + $this->idByPredicate['boolFalse'].' => false, default => '.$this->methodCall('err').' }', + 'strlong' => 'stream_get_contents($stream, 8)', + 'int128' => 'stream_get_contents($stream, 16)', + 'int256' => 'stream_get_contents($stream, 32)', + 'int512' => 'stream_get_contents($stream, 64)', + 'string', 'bytes', 'waveform', 'random_bytes' => + $this->methodCall("deserialize_$type"), + 'inflated' => + 'new Types\Bytes(Tools::inflateStripped('.$this->methodCall("deserialize_string").'))', + default => null + }; + if ($tmp !== null) { + return $tmp; + } + + if (!isset($this->createdTypes[$type])) { + $this->createdTypes[$type] = true; + + $this->m( + "deserialize_type_{$this->escapeTypeName($type)}", + "return {$this->buildTypes($this->byType[$type], $type)};", + static: $type === 'JSONValue' + ); + } + + $had = array_search($type, $this->typeStack, true) !== false; + $this->typeStack []= $type; + try { + if (!$had) { + return $this->buildTypes($this->byType[$type], $type); + } + return $this->methodCall("deserialize_type_{$this->escapeTypeName($type)}"); + } finally { + array_pop($this->typeStack); + } + } + + protected array $methodsCreated = []; + protected function methodCall(string $method, string $stream = '$stream'): string + { + return ($this->methodsCreated[$method] ?? true) + ? "\$this->$method($stream)" + : "self::$method($stream)"; + } + + public function m(string $methodName, string $body, string $returnType = 'mixed', bool $public = false, bool $static = false, string $extraArg = ''): void + { + if (isset($this->methodsCreated[$methodName])) { + throw new AssertionError("Already created $methodName!"); + } + + $this->methodsCreated[$methodName] = $static; + $public = $public ? 'public' : 'private'; + $static = $static ? 'static' : ''; + $this->w(" $public $static function $methodName(mixed \$stream$extraArg): $returnType {\n{$body}\n }\n"); + } + protected function w(string $data): void + { + fwrite($this->output, $data); + } + public function build(): void + { + $this->w("namespace};\n/** @internal Autogenerated using tools/TL/Builder.php */\n"); + foreach ([ + MTProto::class, + Connection::class, + PeerDatabase::class, + ReferenceDatabase::class, + MinDatabase::class, + SecurityException::class, + AssertionError::class, + Lang::class, + ] as $clazz) { + $this->w("use {$clazz};\n"); + } + + $this->w("final class {$this->class} {\n"); + + $this->w('public function __construct( + private readonly MTProto $API, + private readonly Connection $connection, + private readonly PeerDatabase $peerDatabase, + private readonly ?ReferenceDatabase $referenceDatabase, + private readonly ?MinDatabase $minDatabase, + ) {} + '); + + $this->m('err', ' + fseek($stream, -4, SEEK_CUR); + throw new AssertionError("Unexpected ID ".bin2hex(fread($stream, 4))); + ', 'never'); + + $this->m("gzdecode", " + \$res = fopen('php://memory', 'rw+b'); + fwrite(\$res, gzdecode(self::deserialize_string(\$stream))); + rewind(\$res); + return \$res; + "); + + $this->m('gzdecode_vector', " + \$res = fopen('php://memory', 'rw+b'); + fwrite(\$res, gzdecode(self::deserialize_string(\$stream))); + rewind(\$res); + return match (stream_get_contents(\$stream, 4)) { + {$this->idByPredicate['vector']} => \$stream, + default => self::err(\$stream) + }; + "); + + $block_str = ' + $l = \ord(stream_get_contents($stream, 1)); + if ($l > 254) { + throw new Exception(Lang::$current_lang["length_too_big"]); + } + if ($l === 254) { + $l = unpack("V", stream_get_contents($stream, 3).\chr(0))[1]; + $x = stream_get_contents($stream, $l); + $resto = (-$l) % 4; + $resto = $resto < 0 ? $resto + 4 : $resto; + if ($resto > 0) { + stream_get_contents($stream, $resto); + } + } else { + $x = $l ? stream_get_contents($stream, $l) : ""; + $resto = (-$l+1) % 4; + $resto = $resto < 0 ? $resto + 4 : $resto; + if ($resto > 0) { + stream_get_contents($stream, $resto); + } + }'."\n"; + + $this->m("deserialize_bytes", " + $block_str + return new Types\Bytes(\$x); + "); + $this->m("deserialize_string", " + $block_str + return \$x; + "); + $this->m("deserialize_waveform", " + $block_str + return TL::extractWaveform(\$x); + "); + + $this->m('deserialize_random_bytes', ' + $l = \ord(stream_get_contents($stream, 1)); + if ($l > 254) { + throw new Exception(Lang::$current_lang["length_too_big"]); + } + if ($l === 254) { + $l = unpack("V", stream_get_contents($stream, 3).\chr(0))[1]; + if ($l < 15) { + throw new SecurityException("Random_bytes is too small!"); + } + } else { + if ($l < 15) { + throw new SecurityException("Random_bytes is too small!"); + } + $l += 1; + } + $resto = (-$l) % 4; + $resto = $resto < 0 ? $resto + 4 : $resto; + if ($resto > 0) { + $l += $resto; + } + stream_get_contents($stream, $l); + ', 'void'); + + foreach (['int', 'long', 'double', 'strlong', 'string', 'bytes'] as $type) { + $this->buildVector($type, false, '$result []= '.$this->buildType($type)); + } + + $this->buildMain(); + + $this->w("}\n"); + } + + protected function buildMain(): void + { + $initial_constructors = array_filter( + $this->constructorByPredicate, + static fn (array $arr) => ( + $arr['type'] === 'Update' + || $arr['predicate'] === 'rpc_result' + || !$arr['encrypted'] + ) && ( + $arr['predicate'] !== 'rpc_error' + && $arr['predicate'] !== 'MTmessage' + ) + ); + + $this->m("deserialize_type_Object", "return {$this->buildTypes($initial_constructors, 'Object')};", 'mixed', true, static: false); + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/TL/SecretBuilder.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/TL/SecretBuilder.php new file mode 100644 index 0000000..52ddddc --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/TL/SecretBuilder.php @@ -0,0 +1,38 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\TL; + +/** + * @internal + */ +class SecretBuilder extends Builder +{ + protected function buildMain(): void + { + $initial_constructors = array_filter( + $this->constructorByPredicate, + static fn (array $arr) => ( + $arr['type'] === 'DecryptedMessage' + || $arr['type'] === 'DecryptedMessageMedia' + ) + ); + + $this->m("deserialize_type_Object", "return {$this->buildTypes($initial_constructors, 'Object')};", 'mixed', true, static: false); + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_docs.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_docs.php new file mode 100644 index 0000000..d880c81 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_docs.php @@ -0,0 +1,499 @@ +#!/usr/bin/env php +. + */ + +use danog\ClassFinder\ClassFinder; +use danog\MadelineProto\API; +use danog\MadelineProto\EventHandler\Message\ServiceMessage; +use danog\MadelineProto\EventHandler\Update; +use danog\MadelineProto\Lang; +use danog\MadelineProto\Logger; +use danog\MadelineProto\Magic; +use danog\MadelineProto\MTProto; +use danog\MadelineProto\RPCError\CallAlreadyAcceptedError; +use danog\MadelineProto\RPCError\CallAlreadyDeclinedError; +use danog\MadelineProto\RPCError\ChannelPrivateError; +use danog\MadelineProto\RPCError\ChatWriteForbiddenError; +use danog\MadelineProto\RPCError\DcIdInvalidError; +use danog\MadelineProto\RPCError\EncryptionAlreadyAcceptedError; +use danog\MadelineProto\RPCError\EncryptionAlreadyDeclinedError; +use danog\MadelineProto\RPCError\FileTokenInvalidError; +use danog\MadelineProto\RPCError\InputUserDeactivatedError; +use danog\MadelineProto\RPCError\MsgIdInvalidError; +use danog\MadelineProto\RPCError\PasswordHashInvalidError; +use danog\MadelineProto\RPCError\PeerIdInvalidError; +use danog\MadelineProto\RPCError\UserIsBlockedError; +use danog\MadelineProto\RPCError\UserIsBotError; +use danog\MadelineProto\Settings\Logger as SettingsLogger; +use danog\MadelineProto\Settings\TLSchema; +use danog\MadelineProto\StrTools; +use danog\MadelineProto\TL\TL; +use danog\MadelineProto\Tools; +use danog\PhpDoc\PhpDoc; +use danog\PhpDoc\PhpDoc\MethodDoc; +use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTextNode; +use PHPStan\PhpDocParser\Lexer\Lexer; +use PHPStan\PhpDocParser\Parser\ConstExprParser; +use PHPStan\PhpDocParser\Parser\PhpDocParser; +use PHPStan\PhpDocParser\Parser\TokenIterator; +use PHPStan\PhpDocParser\Parser\TypeParser; + +use function Amp\File\read; + +chdir($d=__DIR__.'/..'); + +`git checkout src/InternalDoc.php`; + +require 'vendor/autoload.php'; + +copy('https://rpc.madelineproto.xyz/v3.json', 'src/v3.json'); + +`rm -r src/RPCError/*`; +`git checkout src/RPCError/FloodWaitError.php`; +`git checkout src/RPCError/TimeoutError.php`; +`git checkout src/RPCError/FloodPremiumWaitError.php`; +`git checkout src/RPCError/RateLimitError.php`; + +$map = []; + +$whitelist = [ + EncryptionAlreadyAcceptedError::class => true, + EncryptionAlreadyDeclinedError::class => true, + CallAlreadyAcceptedError::class => true, + CallAlreadyDeclinedError::class => true, + PasswordHashInvalidError::class => true, + MsgIdInvalidError::class => true, + DcIdInvalidError::class => true, + ChannelPrivateError::class => true, + ChatWriteForbiddenError::class => true, + InputUserDeactivatedError::class => true, + PeerIdInvalidError::class => true, + UserIsBlockedError::class => true, + UserIsBotError::class => true, + FileTokenInvalidError::class => true, + \danog\MadelineProto\RPCError\RequestTokenInvalidError::class => true, + \danog\MadelineProto\RPCError\SessionPasswordNeededError::class => true, + \danog\MadelineProto\RPCError\ChannelInvalidError::class => true, + \danog\MadelineProto\RPCError\ChatForbiddenError::class => true, + \danog\MadelineProto\RPCError\UsernameInvalidError::class => true, + \danog\MadelineProto\RPCError\UsernameNotOccupiedError::class => true, +]; + +$whitelistMethods = [ + 'messages.sendMessage', + 'messages.sendMedia', +]; + +$year = date('Y'); +$errors = json_decode(file_get_contents('https://rpc.madelineproto.xyz/v4.json'), true); +foreach ($errors['result'] as $code => $sub) { + if (abs($code) === 500 || $code < 0) { + continue; + } + $code = var_export($code, true); + foreach ($sub as $err => $methods) { + $err = (string) $err; + $camel = ucfirst(StrTools::toCamelCase(strtolower($err))).'Error'; + if (!preg_match('/^\w+$/', $camel)) { + continue; + } + $class = "danog\\MadelineProto\\RPCError\\$camel"; + if (array_intersect($methods, $whitelistMethods) + && !str_contains($err, 'INVALID') + && !str_contains($err, 'TOO_LONG') + && !str_contains($err, '_EMPTY') + && $err !== 'AUTH_KEY_UNREGISTERED' + ) { + $whitelist[$class] = true; + } + + if (!isset($errors['human_result'][$err])) { + continue; + } + $human = $humanOrig = $errors['human_result'][$err]; + $err = var_export($err, true); + $human = var_export($human, true); + + $map[$err] = [$human, $code, $class]; + if (!isset($whitelist[$class])) { + continue; + } + $phpCode = <<< PHP + . + * + * @author Daniil Gentili + * @copyright 2016-$year Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + + namespace danog\MadelineProto\RPCError; + + use danog\MadelineProto\RPCErrorException; + + /** + * $humanOrig + * + * Note: this exception is part of the raw API, and thus is not covered by the backwards-compatibility promise. + * + * Always check the changelog when upgrading, and use tools like Psalm to easily upgrade your code. + */ + final class $camel extends RPCErrorException + { + protected function __construct(int \$code, string \$caller, ?\\Exception \$previous = null) { + parent::__construct($err, $human, \$code, \$caller, \$previous); + } + } + PHP; + file_put_contents("src/RPCError/$camel.php", $phpCode); + } +} + +$err = file_get_contents('src/RPCErrorException.php'); +$err = preg_replace_callback('|// Start match.*// End match|sim', static function ($matches) use ($map, $whitelist) { + $data = "return match (\$rpc) {\n"; + foreach ($map as $err => [$human, $code, $class]) { + if (isset($whitelist[$class])) { + $data .= "$err => new \\$class(\$code, \$caller, \$previous),\n"; + } else { + $data .= "$err => new self(\$rpc, $human, \$code, \$caller, \$previous),\n"; + } + } + $data .= "default => new self(\$rpc, \$msg, \$code, \$caller, \$previous)\n"; + $data .= "};\n"; + return "// Start match\n$data\n// End match"; +}, $err); +file_put_contents('src/RPCErrorException.php', $err); + +require 'tools/translator.php'; + +Magic::start(light: false); +Logger::constructorFromSettings(new SettingsLogger); +$logger = Logger::$default; +set_error_handler(['\danog\MadelineProto\Exception', 'ExceptionErrorHandler']); + +$logger->logger('Merging constructor localization...', Logger::NOTICE); +mergeExtracted(); + +$logger->logger('Loading schemas...', Logger::NOTICE); +$schemas = loadSchemas(); + +$logger->logger('Upgrading layer...', Logger::NOTICE); +$layer = maxLayer($schemas); +layerUpgrade($layer); + +$logger->logger("Initing docs (layer $layer)...", Logger::NOTICE); +$docs = [ + [ + 'TL' => (new TLSchema)->setMTProtoSchema('')->setAPISchema("$d/schemas/TL_telegram_v$layer.tl")->setSecretSchema("$d/schemas/TL_secret.tl"), + 'title' => "MadelineProto API documentation (layer $layer)", + 'description' => "MadelineProto API documentation (layer $layer)", + 'output_dir' => "$d/docs/docs/API_docs", + 'template' => "$d/docs/template", + 'readme' => false, + ], +]; + +$logger->logger('Creating annotations...', Logger::NOTICE); +$doc = new \danog\MadelineProto\AnnotationsBuilder( + $logger, + $docs[0], + [ + 'API' => API::class, + 'MTProto' => MTProto::class, + ], + 'danog\\MadelineProto' +); +$doc->mkAnnotations(); + +$logger->logger('Creating docs...', Logger::NOTICE); +foreach ($docs as $settings) { + $doc = new \danog\MadelineProto\DocsBuilder($logger, $settings); + $doc->mkDocs(); +} + +chdir(__DIR__.'/..'); + +$logger->logger('Fixing readme...', Logger::NOTICE); +$orderedfiles = []; +$order = [ + 'CREATING_A_CLIENT', + 'LOGIN', + 'FEATURES', + 'REQUIREMENTS', + 'DOCKER', + 'METRICS', + 'INSTALLATION', + 'BROADCAST', + 'UPDATES', + 'FILTERS', + 'PLUGINS', + 'DATABASE', + 'SETTINGS', + 'SELF', + 'EXCEPTIONS', + 'FLOOD_WAIT', + 'LOGGING', + 'CALLS', + 'FILES', + 'CHAT_INFO', + 'DIALOGS', + 'INLINE_BUTTONS', + 'SECRET_CHATS', + 'PROXY', + 'ASYNC', + 'FAQ', + 'UPGRADING', + 'USING_METHODS', + 'CONTRIB', + 'TEMPLATES', +]; +$index = ''; +$files = glob('docs/docs/docs/*md'); +foreach ($files as $file) { + $base = basename($file, '.md'); + if ($base === 'UPDATES_INTERNAL') { + continue; + } + $key = array_search($base, $order, true); + if ($key !== false) { + $orderedfiles[$key] = $file; + } +} +ksort($orderedfiles); + +/** @internal */ +function getSummary(string $phpdoc): string +{ + $lexer = new Lexer(); + $constExprParser = new ConstExprParser(); + $typeParser = new TypeParser($constExprParser); + $parser = new PhpDocParser( + $typeParser, + $constExprParser, + textBetweenTagsBelongsToDescription: true + ); + foreach ($parser->parse(new TokenIterator($lexer->tokenize($phpdoc)))->children as $t) { + if ($t instanceof PhpDocTextNode) { + return explode("\n", $t->text)[0]; + } + } + return ''; +} + +/** @internal */ +function printTypes(array $types, string $type, string $indent = ''): string +{ + $phpdoc = PhpDoc::fromNamespace(); + $data = ''; + foreach ($types as $class) { + if ($type === 'concretefilters' && $class === Update::class) { + continue; + } + $refl = new ReflectionClass($class); + $link = "https://docs.madelineproto.xyz/PHP/".str_replace('\\', '/', $class).'.html'; + if (!$refl->getDocComment()) { + throw new AssertionError("No documentation for $class!"); + } + $f = getSummary($refl->getDocComment()); + if ($refl->hasMethod('__construct')) { + $c = $refl->getMethod('__construct'); + if ($c->getParameters() && $type === 'attributefilters') { + $c = new MethodDoc($phpdoc, $c); + $c = $c->getSignature(); + $class .= str_replace(['__construct', '\danog\MadelineProto\EventHandler\Filter\\'], '', $c); + } + } + $data .= "$indent* [$class »]($link) - $f\n"; + if ($type !== 'concretefilters') { + continue; + } + $data .= "$indent * [Full property list »]($link#properties)\n"; + $data .= "$indent * [Full bound method list »]($link#method-list)\n"; + } + return $data; +} + +foreach ($orderedfiles as $key => $filename) { + $lines = file_get_contents($filename); + $lines = preg_replace_callback('/\<\!--\s+cut_here\s+(\S+)\s+-->.*\<\!--\s+cut_here_end\s+\1\s+--\>/sim', static function ($matches) { + [, $match] = $matches; + if ($match === "concretefilters") { + $result = ClassFinder::getClassesInNamespace( + \danog\MadelineProto::class, + ClassFinder::RECURSIVE_MODE | ClassFinder::ALLOW_ALL + ); + $result []= ServiceMessage::class; + $result = array_filter( + $result, + static fn ($class) => is_subclass_of($class, Update::class) + ); + sort($result); + $data = printTypes($result, $match); + } elseif ($match === "simplefilters") { + $result = ClassFinder::getClassesInNamespace( + \danog\MadelineProto\EventHandler\SimpleFilter::class, + ClassFinder::RECURSIVE_MODE | ClassFinder::ALLOW_ALL + ); + $data = printTypes($result, $match); + } elseif ($match === "attributefilters") { + $result = ClassFinder::getClassesInNamespace( + \danog\MadelineProto\EventHandler\Filter::class, + ClassFinder::RECURSIVE_MODE | ClassFinder::ALLOW_ALL + ); + $result = array_filter($result, static fn (string $class) => (new ReflectionClass($class))->getAttributes()); + $data = printTypes($result, $match); + } elseif ($match === "plugins") { + $result = ClassFinder::getClassesInNamespace( + \danog\MadelineProto\EventHandler\Plugin::class, + ClassFinder::RECURSIVE_MODE | ClassFinder::ALLOW_ALL + ); + $data = printTypes($result, $match); + } elseif ($match === "mtprotofilters") { + $data = " * onUpdateCustomEvent: Receives messages sent to the event handler from an API instance using the [`sendCustomEvent` »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#sendcustomevent-mixed-payload-void) method.\n"; + $data .= " * onAny: Catch-all filter, if defined catches all updates that aren't catched by any other filter.\n"; + $data .= " * [onUpdateBroadcastProgress »](https://docs.madelineproto.xyz/docs/BROADCAST.html#get-progress): Used to receive updates to an in-progress [message broadcast »](https://docs.madelineproto.xyz/docs/BROADCAST.html)"; + $TL = new TL(null); + $TL->init(new TLSchema); + foreach ($TL->getConstructors()->by_id as $cons) { + if ($cons['type'] !== 'Update') { + continue; + } + $predicate = 'on'.ucfirst($cons['predicate']); + $predicateRaw = $cons['predicate']; + $desc = explode("\n", Lang::$lang['en']["object_$predicateRaw"])[0]; + $desc = str_replace(['](../', '.md'], ['](https://docs.madelineproto.xyz/API_docs/', '.html'], $desc); + $data .= "* [$predicate »](https://docs.madelineproto.xyz/API_docs/constructors/$predicateRaw.html) - $desc\n"; + } + } else { + $data = read($match); + $data = "```php\n{$data}\n```"; + } + return "\n\n$data\n\n"; + }, $lines); + $lines = explode("\n", $lines); + while (end($lines) === '' || strpos(end($lines), 'Next')) { + unset($lines[count($lines) - 1]); + } + if ($lines[0] === '---') { + array_shift($lines); + while ($lines[0] !== '---') { + array_shift($lines); + } + array_shift($lines); + } + + preg_match('|^# (.*)|', $lines[0], $matches); + $title = $matches[1]; + $description = str_replace('"', "'", Tools::toString($lines[2])); + + array_unshift( + $lines, + '---', + 'title: "'.$title.'"', + 'description: "'.$description.'"', + 'nav_order: '.($key+4), + 'image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png', + '---' + ); + + if (isset($orderedfiles[$key + 1])) { + $nextfile = 'https://docs.madelineproto.xyz/docs/'.basename($orderedfiles[$key + 1], '.md').'.html'; + $lines[count($lines)] = "\nNext section"; + } else { + $lines[count($lines)] = "\nNext section"; + } + file_put_contents($filename, implode("\n", $lines)); + + $file = file_get_contents($filename); + + preg_match_all('|( *)\* \[(.*)\]\((.*)\)|', $file, $matches); + $file = 'https://docs.madelineproto.xyz/docs/'.basename($filename, '.md').'.html'; + $index .= "* [$title]($file) - $description\n"; + if (basename($filename) !== 'FEATURES.md') { + foreach ($matches[1] as $key => $match) { + $spaces = " $match"; + $name = $matches[2][$key]; + if ($matches[3][$key][0] === '#') { + $url = $file.$matches[3][$key]; + } elseif (substr($matches[3][$key], 0, 3) === '../') { + $url = 'https://docs.madelineproto.xyz/'.str_replace('.md', '.html', substr($matches[3][$key], 3)); + if (basename($filename) === 'FILTERS.md') { + continue; + } + } else { + $url = $matches[3][$key]; + if (basename($filename) === 'FILTERS.md') { + continue; + } + } + if (basename($filename) === 'UPDATES.md' && str_contains($url, 'Broadcast/Progress')) { + $result = ClassFinder::getClassesInNamespace( + \danog\MadelineProto::class, + ClassFinder::RECURSIVE_MODE | ClassFinder::ALLOW_ALL + ); + $result []= ServiceMessage::class; + $result = array_filter( + $result, + static fn ($class) => is_subclass_of($class, Update::class) + ); + sort($result); + $data = printTypes($result, $match, " "); + $index .= $data; + break; + } + $index .= "$spaces* [$name]($url)\n"; + if ($name === 'FULL API Documentation with descriptions') { + $spaces .= ' '; + preg_match_all('|\* (.*)|', file_get_contents('docs/docs/API_docs/methods/index.md'), $smatches); + foreach ($smatches[1] as $key => $match) { + if (str_contains($match, 'You cannot use this method directly')) { + continue; + } + if (!str_contains($match, 'href="https://docs.madelineproto.xyz')) { + $match = str_replace('href="', 'href="https://docs.madelineproto.xyz/API_docs/methods/', $match); + } + $index .= "$spaces* ".$match."\n"; + } + } + } + } +} + +$logger->logger('Fixing readme...', Logger::NOTICE); +$readme = explode('## ', file_get_contents('README.md')); +foreach ($readme as &$section) { + if (explode("\n", $section)[0] === 'Documentation') { + $section = "Documentation\n\n".$index."\n"; + } +} +$readme = implode('## ', $readme); + +file_put_contents('README.md', $readme); +file_put_contents('docs/docs/index.md', '--- +title: MadelineProto +description: Async PHP client API for the telegram MTProto protocol +nav_order: 1 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +'.$readme); + +include 'phpdoc.php'; diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_docs/layerUpgrade.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_docs/layerUpgrade.php new file mode 100644 index 0000000..58d3dec --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_docs/layerUpgrade.php @@ -0,0 +1,49 @@ + $value) { + $key = html_entity_decode($key); + if ($key === 'method_messages.sendMultiMedia_param_multi_media_type_Vector') { + $value = 'The medias to send'; + } + $key = preg_replace(['|flags\.\d+[?]|', '/Vector[<].*/'], ['', 'Vector t'], $key); + $key = str_replace('param_hash_type_int', 'param_hash_type_Vector t', $key); + $key = str_replace('param_peer_type_Peer', 'param_peer_type_long', $key); + Lang::$lang['en'][$key] = $value; + } + foreach (Lang::$lang['en'] as $key => $value) { + if ($value === '') { + unset(Lang::$lang['en'][$key]); + } + } + foreach (json_decode(file_get_contents('docs/template/disallow.json'), true) as $key => $value) { + Lang::$lang['en']["method_$key"] = $value; + } +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_docs/schemas.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_docs/schemas.php new file mode 100644 index 0000000..84bfdca --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_docs/schemas.php @@ -0,0 +1,68 @@ +request(new Request("https://api.github.com/repos/telegramdesktop/tdesktop/commits?path=Telegram/SourceFiles/mtproto/scheme/api.tl&per_page=100&page=$page"))->getBody()->buffer(); + foreach (json_decode($res, true) as $idx => $commit) { + $hash = $commit['sha']; + if ($page === 1 && $idx === 0) { + file_put_contents(getcwd().'/schemas/last', $hash); + } + if ($hash === $stored) { + break 2; + } + $last = file_get_contents("https://raw.githubusercontent.com/telegramdesktop/tdesktop/$hash/Telegram/SourceFiles/mtproto/scheme/api.tl"); + if (!preg_match("|// Layer (\d+)|i", $last, $matches)) { + continue; + } + $layer = $matches[1]; + if (isset($had[$layer])) { + continue; + } + $had[$layer] = true; + file_put_contents(getcwd()."/schemas/TL_telegram_v{$layer}.tl", $last); + echo "Stored layer $layer".PHP_EOL; + } + $page++; + } while (true); + + $res = []; + foreach (glob(getcwd().'/schemas/TL_telegram_*') as $file) { + if (str_ends_with($file, '.tl')) { + $tl = new TL(null); + file_put_contents(str_replace('.tl', '.json', $file), json_encode($tl->toJson(file_get_contents($file)), JSON_PRETTY_PRINT)); + } + preg_match("/telegram_v(\d+)/", $file, $matches); + $res[$matches[1]] = $file; + } + ksort($res); + file_put_contents(getcwd().'/schemas/list.json', json_encode(array_keys($res))); + return $res; +} + +/** + * Return max available layer number. + * + * @param array $schemas Scheme array + * @internal + * + * @return integer + */ +function maxLayer(array $schemas): int +{ + $schemas = array_keys($schemas); + return end($schemas); +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_tl.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_tl.php new file mode 100644 index 0000000..ef16c20 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_tl.php @@ -0,0 +1,15 @@ +build(); + +$builder = new SecretBuilder(new TLSchema, __DIR__.'/../src/TL/SecretTLParser.php', 'danog\\MadelineProto\\TL'); +$builder->build(); diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/fix_docs.sh b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/fix_docs.sh new file mode 100755 index 0000000..a4d53cf --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/fix_docs.sh @@ -0,0 +1,8 @@ +#!/bin/bash -e + +if which gsed &>/dev/null; then sed=gsed; else sed=sed;fi + +find docs/ -name '*.md' -exec $sed 's/\.md/\.html/g' -i {} + +$sed 's:(danog:(/PHP/danog:g' -i docs/docs/PHP/index.md + +$sed 's/long|string/long\\|string/g' docs/docs/API_docs/methods/* -i diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/fuzzer.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/fuzzer.php new file mode 100644 index 0000000..efdd59c --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/fuzzer.php @@ -0,0 +1,322 @@ +. + */ + +require 'vendor/autoload.php'; +$logger = new Logger(new SettingsLogger); + +set_error_handler(['\danog\MadelineProto\Exception', 'ExceptionErrorHandler']); + +/** + * @internal + */ +function getTLSchema(): TLSchema +{ + $layerFile = glob(__DIR__."/../src/TL_telegram_v*.tl")[0]; + return (new TLSchema)->setAPISchema($layerFile)->setSecretSchema('')->setFuzzMode(true); +} + +/** + * Get TL info of layer. + * + * @internal + * + * @return void + */ +function getTL(TLSchema $schema) +{ + $layer = new TL(); + $layer->init($schema); + + return ['methods' => $layer->getMethods(), 'constructors' => $layer->getConstructors()]; +} +$schema = getTLSchema(); +$layer = getTL($schema); +$res = ''; + +Magic::start(true); +$auth = ''; +try { + $auth = getenv('TELERPC_AUTH_TOKEN') ?: ''; +} catch (Throwable) { +} +Assert::true(preg_match('/^[a-zA-Z0-9_-]*$/', $auth) === 1, 'TELERPC_AUTH_TOKEN can only contain a-z, A-Z, 0-9, _ and -'); + +$client = HttpClientBuilder::buildDefault(); +if ($auth) { + $res = json_decode( + ( + $client + ->request(new Request('https://report-rpc-error.madelineproto.xyz/?auth='.$auth.'&cleanup=1')) + )->getBody()->buffer(), + true, + ); + Assert::true($res['ok']); + echo "Cleaned up old reports".PHP_EOL; +} else { + echo "No TELERPC_AUTH_TOKEN set, not cleaning up old reports".PHP_EOL; +} + +if ($auth) { + $layerNumber = $schema->getLayer(); + $res = json_decode( + ( + $client + ->request(new Request('https://report-rpc-error.madelineproto.xyz/?auth='.$auth.'&setLayer='.$layerNumber)) + )->getBody()->buffer(), + true, + ); + Assert::true($res['ok']); + echo "Set layer number to $layerNumber".PHP_EOL; +} else { + echo "No TELERPC_AUTH_TOKEN set, not setting layer number".PHP_EOL; +} + +$settings = new Settings; +$settings->setSchema($schema); +$settings->getLogger()->setLevel(Logger::ULTRA_VERBOSE); + +echo "Unauthed:".PHP_EOL; +$unauthed = new \danog\MadelineProto\API('fuzz_unauth.madeline'); +$unauthed->updateSettings($settings); +Assert::false($unauthed->getSelf(), "fuzz_unauth.madeline is authed!"); +$unauthed->restart(); + +echo "Bot login:".PHP_EOL; +$bot = new \danog\MadelineProto\API('fuzz_bot.madeline'); +$bot->start(); +$bot->updateSettings($settings); +Assert::true($bot->isSelfBot(), "fuzz_bot.madeline is not a bot!"); +$u = $bot->getSelf()['username']; +Assert::true($bot->getSelf()['bot_business'], "fuzz_bot.madeline ($u) is not a business bot, enable business mode in botfather!"); +$bot->restart(); + +echo "User login:".PHP_EOL; +$user = new \danog\MadelineProto\API('fuzz_user.madeline'); +$user->start(); +$user->updateSettings($settings); +Assert::true($user->isSelfUser(), "fuzz_user.madeline is not a user!"); +$user->restart(); + +$user->getSelf(); +$bot->getSelf(); + +$cId = null; + +$toggleBusiness = static function (bool $enable) use ($user, $bot, &$cId): void { + $bot->getUpdates(); + + Logger::log($enable ? "Initializing business connection..." : "Deinitializing business connection..."); + $rights = ['_' => 'businessBotRights']; + foreach ($user->getTL()->getConstructors()->findByPredicate('businessBotRights')['params'] as $param) { + if ($param['type'] === 'true') { + $rights[$param['name']] = true; + } + } + + foreach ([$enable, !$enable] as $deleted) { + $user->account->updateConnectedBot( + bot: $bot->getSelf()['username'], + deleted: $deleted, + rights: $rights, + recipients: [ + '_' => 'inputBusinessBotRecipients', + 'existing_chats' => true, + 'new_chats' => true, + 'contacts' => true, + 'non_contacts' => true, + ], + ); + } + $cId = null; + $offset = 0; + do { + foreach ($bot->getUpdates(['offset' => $offset, 'timeout' => 10.0]) as $u) { + $offset = $u['update_id'] + 1; + $u = $u['update']; + if ($u['_'] !== 'updateBotBusinessConnect') { + continue; + } + if ($u['connection']['disabled'] !== !$enable) { + continue; + } + $cId = $u['connection']['connection_id']; + break 2; + } + } while (true); + $bot->account->getBotBusinessConnection( + connection_id: $cId, + ); + $bot->setNoop(); + + Logger::log($enable ? "Initialized business connection!" : "Deinitialized business connection!"); +}; + +$toggleBusiness(true); + +function call(API $API, string $method, array $args = []): void +{ + Tools::getVar($API, 'wrapper')->getAPI()->methodCallAsyncRead($method, $args); +} + +function getCancellationReason(CancelledException $e): string +{ + return $e->getPrevious()?->getMessage() ?? $e->getMessage(); +} + +$methods = []; + +$wait = static function (bool $force = false) use (&$methods): void { + if (count($methods) >= 10 || $force) { + Logger::log("Processing ".implode(", ", array_keys($methods))); + await($methods); + Logger::log("Done!"); + Assert::isEmpty($methods, "Some methods were not processed!"); + } +}; + +foreach ($layer['methods']->by_id as $constructor) { + $name = $constructor['method']; + if (strtolower($name) === 'account.deleteaccount' + || !str_contains($name, '.')) { + continue; + } + $methods["unauthed $name"]= async(static function () use ($unauthed, $name, &$methods): void { + try { + call($unauthed, $name); + } catch (CancelledException $e) { + throw new \RuntimeException("Got cancellation for unauthed $name: ".getCancellationReason($e), previous: $e); + } catch (RPCErrorException|PTSException) { + } + unset($methods["unauthed $name"]); + }); + $wait(); +} + +$names = []; +foreach ($layer['methods']->by_id as $constructor) { + $name = $constructor['method']; + if (strtolower($name) === 'account.deleteaccount' + || strtolower($name) === 'auth.logout' + || $name === 'auth.resetAuthorizations' + || $name === 'auth.dropTempAuthKeys' + || $name === 'account.resetAuthorization' + || $name === 'account.resetPassword' + || $name === 'account.updateUsername' + || $name === 'photos.updateProfilePhoto' + || $name === 'photos.uploadProfilePhoto' + || $name === 'payments.resolveStarGiftOffer' // tmp + || !str_contains($name, '.')) { + continue; + } + $names []= $constructor['method']; +} + +foreach ($names as $name) { + $methods["bot $name"]= async(static function () use ($bot, $name, &$methods): void { + try { + call($bot, $name); + } catch (CancelledException $e) { + throw new \RuntimeException("Got cancellation for bot $name: ".getCancellationReason($e), previous: $e); + } catch (RPCErrorException|PTSException) { + } + unset($methods["bot $name"]); + }); + $methods["user $name"] = async(static function () use ($user, $name, &$methods): void { + try { + call($user, $name); + } catch (CancelledException $e) { + throw new \RuntimeException("Got cancellation for user $name: ".getCancellationReason($e), previous: $e); + } catch (RPCErrorException|PTSException) { + } + unset($methods["user $name"]); + }); + $methods["business $name"] = async(static function () use ($bot, $name, $cId, $client, $auth, &$methods): void { + $ok = true; + try { + call($bot, $name, ['businessConnectionId' => $cId]); + } catch (CancelledException $e) { + throw new \RuntimeException("Got cancellation for business $name: ".getCancellationReason($e), previous: $e); + } catch (PTSException|BusinessConnectionNotAllowedError) { + $ok = false; + } catch (RPCErrorException $e) { + echo "Got ".$e->getMessage()." for business $name".PHP_EOL; + } + + if ($ok && $auth) { + $res = json_decode( + ( + $client + ->request(new Request('https://report-rpc-error.madelineproto.xyz/?auth='.$auth.'&error=BUSINESS_CONNECTION_INVALID&method='.urlencode($name).'&code=400')) + )->getBody()->buffer(), + true, + ); + } + unset($methods["business $name"]); + }); + $methods["business invalid $name"] = async(static function () use ($bot, $name, &$methods): void { + try { + call($bot, $name, ['businessConnectionId' => '']); + } catch (CancelledException $e) { + throw new \RuntimeException("Got cancellation for business invalid $name: ".getCancellationReason($e), previous: $e); + } catch (RPCErrorException|PTSException) { + } + unset($methods["business invalid $name"]); + }); + + $wait(); +} + +$wait(true); + +$toggleBusiness(false); + +foreach ($names as $name) { + $methods["bot disconnected $name"]= async(static function () use ($bot, $name, &$methods): void { + try { + call($bot, $name); + } catch (CancelledException $e) { + throw new \RuntimeException("Got cancellation for bot disconnected $name: ".getCancellationReason($e), previous: $e); + } catch (RPCErrorException|PTSException) { + } + unset($methods["bot disconnected $name"]); + }); + + $wait(); +} + +$wait(true); + +unset($bot, $user, $unauthed, $wait, $toggleBusiness); + +// Give time for error reporting routine to finish +EventLoop::run(); diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/genDataset.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/genDataset.php new file mode 100644 index 0000000..ddf4911 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/genDataset.php @@ -0,0 +1,51 @@ + file_get_contents($line)]; +} + +file_put_contents('madeline_pre.json', json_encode($out, JSON_PRETTY_PRINT)); + +$out = []; +foreach (glob("train/*php") as $fileName) { + $file = file_get_contents($fileName); + preg_match('|^// (.+)|m', $file, $matches); + $prompt = $matches[1]; + $file = str_replace("// $prompt", '', $file); + $out []= [ + 'id' => $fileName, + 'conversations' => [ + ['from' => 'user', 'value' => $prompt], + ['from' => 'assistant', 'value' => "Sure! Here's the code: \n```\n$file\n```\n"], + ], + ]; +} + +file_put_contents('madeline_finetune.json', json_encode($out, JSON_PRETTY_PRINT)); + +file_put_contents('dataset_info.json', json_encode([ + 'madeline_finetune' => [ + 'file_name' => 'madeline_finetune.json', + "columns" => [ + "prompt" => "prompt", + "query" => "input", + "response" => "output", + "system" => "system", + "history" => "history", + ], + ], + 'madeline_pre' => [ + 'file_name' => 'madeline_pre.json', + "columns" => [ + "prompt" => "text", + ], + ], +], JSON_PRETTY_PRINT)); diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/gen_filerefmap.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/gen_filerefmap.php new file mode 100644 index 0000000..6237fcb --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/gen_filerefmap.php @@ -0,0 +1,104 @@ +toJson($schema), flags: JSON_THROW_ON_ERROR|JSON_PRETTY_PRINT); + file_put_contents(__DIR__."/../schemas/TL_telegram_v{$layer}_file_ref_map_schema.json", $f); + file_put_contents(__DIR__."/../src/TL_file_ref_map_schema.json", $f); + + copy( + __DIR__."/../src/file_ref_map.dat", + __DIR__."/../schemas/TL_telegram_v{$layer}_file_ref_map.dat" + ); + copy( + __DIR__."/../src/file_ref_map.json", + __DIR__."/../schemas/TL_telegram_v{$layer}_file_ref_map.json" + ); +} + +if (isset($argv[1])) { + if (count($argv) < 5) { + die("Usage:\n{$argv[0]} \nOR\n{$argv[0]} (no args, uses schemas in schemas folder)\n"); + } + + FileRefGenerator::generate( + (int) $argv[1], + $argv[2], + $argv[3], + $argv[4], + ); + die; +} + +$res = []; +foreach (glob(getcwd().'/schemas/TL_telegram_*_file_ref_map.json') as $file) { + preg_match("/telegram_v(\d+)/", $file, $matches); + $res[$matches[1]] = true; +} +ksort($res); + +$start = min(214, array_key_first($res)); +$end = max(array_key_last($res), $last); +/* +$res = []; +$start = 214; +*/ + +for ($layer = $start; $layer <= $end; $layer++) { + if (!isset($res[$layer])) { + generate($layer, $schema); + $res[$layer] = true; + } +} +ksort($res); + +generate($last, $schema); + +file_put_contents(getcwd().'/schemas/list_file_ref_map.json', json_encode(array_keys($res))); diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/layerdiff.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/layerdiff.php new file mode 100644 index 0000000..84afbdf --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/layerdiff.php @@ -0,0 +1,123 @@ +. + */ + +require 'vendor/autoload.php'; +$logger = new Logger(new SettingsLogger); + +set_error_handler(['\danog\MadelineProto\Exception', 'ExceptionErrorHandler']); + +if ($argc !== 3) { + die("Usage: {$argv[0]} layernumberold layernumbernew\n"); +} +/** + * Get TL info of layer. + * + * @param int $layer Layer number + * + * @internal + * + * @return void + */ +function getTL($layer) +{ + $layerFile = __DIR__."/../schemas/TL_telegram_v$layer.tl"; + $layer = new TL(); + $layer->init((new TLSchema)->setAPISchema($layerFile)->setSecretSchema('')); + + return ['methods' => $layer->getMethods(), 'constructors' => $layer->getConstructors()]; +} +/** @internal */ +function getUrl($constructor, $type) +{ + $orig = $constructor; + $constructor = Tools::markdownEscape($constructor); + + return "[$constructor](https://docs.madelineproto.xyz/API_docs/$type/$orig.html)"; +} +$old = getTL($argv[1]); +$new = getTL($argv[2]); +$res = ''; + +foreach (['methods', 'constructors'] as $type) { + $finder = $type === 'methods' ? 'findByMethod' : 'findByPredicate'; + $key = $type === 'methods' ? 'method' : 'predicate'; + + // New constructors + $res .= "\n\nNew ".ucfirst($type).":\n"; + foreach ($new[$type]->by_id as $constructor) { + $name = $constructor[$key]; + if (!$old[$type]->$finder($name)) { + $name = getUrl($name, $type); + $res .= "- $name\n"; + } + } + + // Changed constructors + $res .= "\n\nChanged ".ucfirst($type).":\n"; + foreach ($new[$type]->by_id as $constructor) { + $name = $constructor[$key]; + if ($old[$type]->$finder($name)) { + $new_args = $constructor['params']; + $old_args = $old[$type]->$finder($name)['params']; + $final_new_args = []; + $final_old_args = []; + foreach ($new_args as $arg) { + $final_new_args[$arg['name']] = $arg['type']; + } + foreach ($old_args as $arg) { + $final_old_args[$arg['name']] = $arg['type']; + } + + $url = getUrl($name, $type); + foreach ($final_new_args as $name => $ttype) { + if (!isset($final_old_args[$name]) && $name !== 'flags' && $name !== 'flags2') { + $name = Tools::markdownEscape($name); + $res .= "- Added $name param to $url\n"; + } + } + foreach ($final_old_args as $name => $ttype) { + if (!isset($final_new_args[$name]) && $name !== 'flags' && $name !== 'flags2') { + $name = Tools::markdownEscape($name); + $res .= "- Removed $name param from $url\n"; + } + } + } + } + + // Deleted constructors + $res .= "\n\nDeleted ".ucfirst($type).":\n"; + foreach ($old[$type]->by_id as $constructor) { + $name = $constructor[$key]; + if (!$new[$type]->$finder($name)) { + $name = Tools::markdownEscape($name); + $res .= "- $name\n"; + } + } +} + +$bot = new \danog\MadelineProto\API('layerdiff.madeline'); +$bot->start(); + +echo $res."\n\n"; +foreach (explode("\n\n", $res) as $chunk) { + if (!$chunk || !trim(explode(':', $chunk)[1])) { + continue; + } + $bot->messages->sendMessage(['peer' => 'danogentili', 'message' => $chunk, 'parse_mode' => 'markdown']); +} diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/makephar.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/makephar.php new file mode 100644 index 0000000..ada587d --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/makephar.php @@ -0,0 +1,80 @@ +#!/usr/bin/env php +. +*/ + +if (!isset($argv[3])) { + echo 'Usage: '.$argv[0].' inputDir output.phar ref'.PHP_EOL; + die(1); +} + +@unlink($argv[2]); + +$p = new Phar(__DIR__.'/../'.$argv[2], 0, $argv[2]); +$p->buildFromDirectory(realpath($argv[1]), '/^((?!tests).)*(\.php|\.py|\.exe|\.html|\.tl|\.json|\.dat|\.h|\.wav)$/i'); + +$p->setStub('= 2) { + \define(\MADELINE_WORKER_TYPE::class, \array_shift($arguments)); + \define(\MADELINE_WORKER_ARGS::class, $arguments); + } else { + die("MadelineProto loader: you must include this file in another PHP script, see https://docs.madelineproto.xyz for more info.".PHP_EOL); + } + \define("MADELINE_REAL_ROOT", __DIR__); + @chdir(\MADELINE_REAL_ROOT); + } +} + +Phar::interceptFileFuncs(); +Phar::mapPhar("'.$argv[2].'"); +$result = require_once "phar://'.$argv[2].'/vendor/autoload.php"; + +if (\defined("MADELINE_WORKER_TYPE") && \constant("MADELINE_WORKER_TYPE") === "madeline-ipc") { + require_once "phar://'.$argv[2].'/vendor/danog/madelineproto/src/Ipc/Runner/entry.php"; +} + +return $result; + +__HALT_COMPILER(); ?>'); diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/phar.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/phar.php new file mode 100644 index 0000000..bb83a5b --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/phar.php @@ -0,0 +1,249 @@ += 2) { + \define(\MADELINE_WORKER_TYPE::class, array_shift($arguments)); + \define(\MADELINE_WORKER_ARGS::class, $arguments); + } else { + die('MadelineProto loader: you must include this file in another PHP script, see https://docs.madelineproto.xyz for more info.'.PHP_EOL); + } + \define('MADELINE_REAL_ROOT', \dirname($backtrace[0]["file"])); + } + $this->version = (string) min(81, (int) (PHP_MAJOR_VERSION.PHP_MINOR_VERSION)); + \define('MADELINE_PHAR_GLOB', getcwd().DIRECTORY_SEPARATOR."madeline*-{$this->version}.phar"); + \define('MADELINE_PHAR_VERSION', getcwd().DIRECTORY_SEPARATOR."madeline.version"); + \define('MADELINE_RELEASE_URL', sprintf(self::RELEASE_TEMPLATE, $this->version)); + } + + /** + * Destructor. + */ + public function __destruct() + { + if ($this->lockInstaller) { + flock($this->lockInstaller, LOCK_UN); + fclose($this->lockInstaller); + $this->lockInstaller = null; + } + } + + /** + * Extract composer package versions from phar. + * + * @return array + */ + private static function extractVersions(?string $release): array + { + $release ??= ''; + $phar = "madeline-$release.phar"; + $packages = ['danog/madelineproto' => 'old']; + if (!file_exists("phar://$phar/vendor/composer/installed.json")) { + return $packages; + } + $composer = json_decode(file_get_contents("phar://$phar/vendor/composer/installed.json"), true) ?: []; + if (!isset($composer['packages'])) { + return $packages; + } + foreach ($composer['packages'] as $dep) { + $name = $dep['name']; + if (str_starts_with($name, 'phabel/transpiler')) { + $name = explode('/', $name, 3)[2]; + } + $version = $dep['version_normalized']; + if ($name === 'danog/madelineproto' && substr($version, 0, 2) === '90') { + $version = substr($version, 2); + } + $packages[$name] = $version; + } + return $packages; + } + + /** + * Report installs to composer. + */ + private static function reportComposer(?string $local_release, ?string $remote_release): void + { + $previous = self::extractVersions($local_release); + $current = self::extractVersions($remote_release); + $postData = ['downloads' => []]; + foreach ($current as $name => $version) { + if (isset($previous[$name]) && $previous[$name] === $version) { + continue; + } + $postData['downloads'][] = [ + 'name' => $name, + 'version' => $version, + 'downloaded' => false, + ]; + } + + $phpVersion = 'PHP '.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION.'.'.PHP_RELEASE_VERSION; + $opts = ['http' => + [ + 'method' => 'POST', + 'header' => [ + 'Content-Type: application/json', + sprintf( + 'User-Agent: Composer/%s (%s; %s; %s; %s%s%s; MadelineProto)', + '2.7.4', + \function_exists('php_uname') ? @php_uname('s') : 'Unknown', + \function_exists('php_uname') ? @php_uname('r') : 'Unknown', + $phpVersion, + 'cURL 8.7.1', + '; Platform-PHP '.PHP_VERSION, + getenv('CI') ? '; CI' : '' + ), + ], + 'content' => json_encode($postData), + 'timeout' => 6, + ], + ]; + @file_get_contents("https://packagist.org/downloads/", false, stream_context_create($opts)); + } + + /** + * Load phar file. + */ + private static function load(?string $release): mixed + { + if ($release === null) { + throw new \Exception('Could not download MadelineProto, please check your internet connection and PHP configuration!'); + } + $phar = "madeline-$release.phar"; + if (!self::$lock) { + self::$lock = fopen("$phar.lock", 'c'); + } + flock(self::$lock, LOCK_SH); + return require_once $phar; + } + + /** + * Unlock phar. + * + */ + public static function unlock(): void + { + flock(self::$lock, LOCK_UN); + } + + /** + * Lock installer. + */ + private function lock(string $version): bool + { + if ($this->lockInstaller) { + return true; + } + $this->lockInstaller = fopen($version, 'w'); + return flock($this->lockInstaller, LOCK_EX|LOCK_NB); + } + + /** + * Install MadelineProto. + */ + public function install() + { + if (file_exists(MADELINE_PHAR_VERSION)) { + $local_release = file_get_contents(MADELINE_PHAR_VERSION) ?: null; + } else { + touch(MADELINE_PHAR_VERSION); + $local_release = null; + } + \define('HAD_MADELINE_PHAR', !!$local_release); + + if ($local_release !== null && file_exists("madeline-$local_release.phar")) { + return self::load($local_release); + } + + $remote_release = file_get_contents(MADELINE_RELEASE_URL) ?: null; + $madeline_phar = "madeline-$remote_release.phar"; + + if (!$this->lock(MADELINE_PHAR_VERSION)) { + flock($this->lockInstaller, LOCK_EX); + return $this->install(); + } + + if (!file_exists($madeline_phar)) { + for ($x = 0; $x < 10; $x++) { + $pharTest = file_get_contents(sprintf(self::PHAR_TEMPLATE, $this->version, $remote_release.$x)); + if ($pharTest && str_contains($pharTest, $remote_release)) { + $phar = $pharTest; + unset($pharTest); + break; + } + sleep(1); + } + if (!isset($phar)) { + return self::load($local_release); + } + + self::$lock = fopen("$madeline_phar.lock", 'w'); + flock(self::$lock, LOCK_EX); + file_put_contents($madeline_phar, $phar); + unset($phar); + + self::reportComposer($local_release, $remote_release); + } + fwrite($this->lockInstaller, $remote_release); + fflush($this->lockInstaller); + return self::load($remote_release); + } +} + +return (new \danog\MadelineProto\Installer)->install(); diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/phpdoc.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/phpdoc.php new file mode 100644 index 0000000..10f4a4d --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/phpdoc.php @@ -0,0 +1,128 @@ +isTrait(); +}; + +shell_exec("rm -rf ".__DIR__.'/../docs/docs/PHP/'); + +PhpDocBuilder::fromNamespace() + ->setFilter($filter) + ->setOutput(__DIR__.'/../docs/docs/PHP/') + ->setImage("https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png") + ->addIndexFrontMatter('title', 'MadelineProto API') + ->addIndexFrontMatter('description', 'MadelineProto PHP API reference') + ->addIndexFrontMatter('has_children', 'true') + ->addIndexFrontMatter('has_toc', 'false') + ->addIndexFrontMatter('nav_order', '2') + ->addFrontMatter('parent', 'MadelineProto API') + ->run(); diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/static.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/static.php new file mode 100644 index 0000000..f080c94 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/static.php @@ -0,0 +1,55 @@ +getMethods(ReflectionMethod::IS_STATIC | ReflectionMethod::IS_PUBLIC); + +/** @internal */ +function ssort($a, $b) +{ + return strlen($b->getName())-strlen($a->getName()); +} + +usort($methods, 'ssort'); + +$find = []; +$replace = []; +$findDocs = []; +$replaceDocs = []; +foreach ($methods as $methodObj) { + $method = $methodObj->getName(); + + $find[] = "\$this->$method("; + $replace[] = "\\danog\\MadelineProto\\Tools::$method("; +} + +foreach (new RegexIterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator(realpath('.'))), '/\.php$/') as $filename) { + $filename = (string) $filename; + $new = str_replace($find, $replace, $old = file_get_contents($filename)); + do { + file_put_contents($filename, $new); + $new = str_replace($find, $replace, $old = file_get_contents($filename)); + } while ($old !== $new); +} +exit; + +foreach (new RegexIterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator(realpath('docs'))), '/\.md$/') as $filename) { + $filename = (string) $filename; + $new = str_replace($findDocs, $replaceDocs, $old = file_get_contents($filename)); + do { + file_put_contents($filename, $new); + $new = str_replace($findDocs, $replaceDocs, $old = file_get_contents($filename)); + } while ($old !== $new); +} +$filename = 'README.md'; + +$new = str_replace($findDocs, $replaceDocs, $old = file_get_contents($filename)); +do { + file_put_contents($filename, $new); + $new = str_replace($findDocs, $replaceDocs, $old = file_get_contents($filename)); +} while ($old !== $new); diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/std.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/std.php new file mode 100644 index 0000000..85dee77 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/std.php @@ -0,0 +1,100 @@ +getMethods(), $methods); +} +$methods = array_unique($methods); + +usort($methods, static fn ($a, $b) => strlen($b->getName())-strlen($a->getName())); + +$find = []; +$replace = []; +$findDocs = []; +$replaceDocs = []; +foreach ($methods as $methodObj) { + $method = $methodObj->getName(); + if (str_starts_with($method, '__') || $method === 'async') { + continue; + } + $method = Tools::fromCamelCase($method); + + $new = Tools::fromSnakeCase($method); + $new = str_ireplace(['mtproto', 'api'], ['MTProto', 'API'], $new); + $new = preg_replace('/TL$/i', 'TL', $new); + if (!in_array($method, ['discardCallAsync', 'acceptCallAsync', 'requestCallAsync'], true)) { + $new = preg_replace('/async$/i', '', $new); + } + + $findDocs []= Tools::fromCamelCase($new).'('; + $replaceDocs []= $new.'('; + + $findDocs []= $method.'('; + $replaceDocs []= $new.'('; + + $findDocs []= Tools::fromCamelCase($new).'.'; + $replaceDocs []= $new.'.'; + + $findDocs []= $method.'.'; + $replaceDocs []= $new.'.'; + + $findDocs []= Tools::fromCamelCase($new).']'; + $replaceDocs []= $new.']'; + + $findDocs []= $method.']'; + $replaceDocs []= $new.']'; + + if (method_exists((string) $methodObj->getDeclaringClass(), preg_replace('/async$/i', '', $method))) { + var_dump("Skipping $method => $new"); + continue; + } + + if (!function_exists($method)) { + $find[] = "$method"; + $replace[] = "$new"; + continue; + } + $find[] = ">$method("; + $replace[] = ">$new("; + + $find[] = ":$method("; + $replace[] = ":$new("; + + $find[] = "function $method("; + $replace[] = "function $new("; +} + +foreach (new RegexIterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator(realpath('.'))), '/\.php$/') as $filename) { + $filename = (string) $filename; + $new = str_replace($find, $replace, $old = file_get_contents($filename)); + do { + file_put_contents($filename, $new); + $new = str_replace($find, $replace, $old = file_get_contents($filename)); + } while ($old !== $new); +} +exit; + +foreach (new RegexIterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator(realpath('docs'))), '/\.md$/') as $filename) { + $filename = (string) $filename; + $new = str_replace($findDocs, $replaceDocs, $old = file_get_contents($filename)); + do { + file_put_contents($filename, $new); + $new = str_replace($findDocs, $replaceDocs, $old = file_get_contents($filename)); + } while ($old !== $new); +} +$filename = 'README.md'; + +$new = str_replace($findDocs, $replaceDocs, $old = file_get_contents($filename)); +do { + file_put_contents($filename, $new); + $new = str_replace($findDocs, $replaceDocs, $old = file_get_contents($filename)); +} while ($old !== $new); diff --git a/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/translator.php b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/translator.php new file mode 100644 index 0000000..bb90c87 --- /dev/null +++ b/resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/translator.php @@ -0,0 +1,60 @@ +. + * + * @author Daniil Gentili + * @copyright 2016-2025 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto; + +/** @internal */ +final class Lang +{ + public const PERCENTAGES = %s; + + public static int $currentPercentage = 100; + + public static array $lang = %s; + + // THIS WILL BE OVERWRITTEN BY $lang["en"] + /** @var array */ + public static array $current_lang = %s; +}'; + +$base = json_decode(file_get_contents("langs/en.json"), true); + +$langs = []; +$percentages = []; + +$res = file_get_contents("https://weblate.madelineproto.xyz/api/projects/madelineproto/languages/"); +if ($res !== false) { + $res = json_decode($res, true); + foreach ($res as ['code' => $code, 'translated_percent' => $percent]) { + $percentages[$code] = (int) $percent; + } + + foreach (glob("langs/*.json") as $lang) { + $code = basename($lang, '.json'); + $langs[$code] = array_merge($base, json_decode(file_get_contents($lang), true)); + ksort($langs[$code]); + } + + file_put_contents('src/Lang.php', sprintf($template, var_export($percentages, true), var_export($langs, true), var_export($langs['en'], true))); +} diff --git a/resources/release/source-manifest.json b/resources/release/source-manifest.json new file mode 100644 index 0000000..75aa327 --- /dev/null +++ b/resources/release/source-manifest.json @@ -0,0 +1,4967 @@ +{ + "schema_version": 1, + "description": "Pinned runtime corresponding-source inputs; application source and release identity are added from the exact reviewed Git tree during packaging.", + "composer_lock_sha256": "a6a66ad9af4ccd6ef0fa7e62f7a7e28a1ae73cf07e8545552710bc9b8477e9bf", + "origin": { + "release_tag": "v3.0.0-dev.9", + "commit": "ff2c540e2adb613742e0637a01a9f013b0bf4d48", + "source_archive_url": "https://github.com/WizardLoop/shabbat/releases/download/v3.0.0-dev.9/shabbat-3.0.0-dev.9-corresponding-source.zip", + "source_archive_sha256": "d403caf1db6c6ad6b61a8c58afddfde2e7feebfd9b6b14efb6c8556f98d17f0c", + "source_scope_sha256": "a3d4254e5f70c754b4bc7c78a8a33e4a87403c9f6062ab2c6b21ce3bdc2597cd", + "verification": "The published anonymous download matched the reviewed local archive; every reused dependency/supplement file is pinned below." + }, + "runtime_package_count": 57, + "development_packages_omitted": 26, + "runtime_packages": [ + { + "name": "amphp/amp", + "version": "v3.1.3", + "reference": "73c38b323ff8d790abf0f76c56fcc892bda4111a", + "source": "https://github.com/amphp/amp.git", + "license": [ + "MIT" + ], + "file_count": 28 + }, + { + "name": "amphp/byte-stream", + "version": "v2.1.2", + "reference": "55a6bd071aec26fa2a3e002618c20c35e3df1b46", + "source": "https://github.com/amphp/byte-stream.git", + "license": [ + "MIT" + ], + "file_count": 37 + }, + { + "name": "amphp/cache", + "version": "v2.0.1", + "reference": "46912e387e6aa94933b61ea1ead9cf7540b7797c", + "source": "https://github.com/amphp/cache.git", + "license": [ + "MIT" + ], + "file_count": 15 + }, + { + "name": "amphp/dns", + "version": "v2.4.1", + "reference": "ec5948bfafac808f410406e18bc7b52a2d4629b7", + "source": "https://github.com/amphp/dns.git", + "license": [ + "MIT" + ], + "file_count": 28 + }, + { + "name": "amphp/file", + "version": "v3.2.0", + "reference": "28b38a805d2c235bb581d24415e78a42cd03aedc", + "source": "https://github.com/amphp/file.git", + "license": [ + "MIT" + ], + "file_count": 51 + }, + { + "name": "amphp/hpack", + "version": "v3.2.2", + "reference": "291da27078e7e149a9bad4d08ff05bf7d81c89f4", + "source": "https://github.com/amphp/hpack.git", + "license": [ + "MIT" + ], + "file_count": 17 + }, + { + "name": "amphp/http", + "version": "v2.1.2", + "reference": "3680d80bd38b5d6f3c2cef2214ca6dd6cef26588", + "source": "https://github.com/amphp/http.git", + "license": [ + "MIT" + ], + "file_count": 20 + }, + { + "name": "amphp/http-client", + "version": "v5.3.6", + "reference": "ca155026acafa74a612d776a97202d53077fee86", + "source": "https://github.com/amphp/http-client.git", + "license": [ + "MIT" + ], + "file_count": 72 + }, + { + "name": "amphp/http-client-cookies", + "version": "v2.0.0", + "reference": "4124b37ffa4d15034e70d5d30e6fb9605ed6c1a7", + "source": "https://github.com/amphp/http-client-cookies.git", + "license": [ + "MIT" + ], + "file_count": 25 + }, + { + "name": "amphp/http-server", + "version": "v3.4.7", + "reference": "aa96ca38c5f822a827236543d5417d0c2a782ef0", + "source": "https://github.com/amphp/http-server.git", + "license": [ + "MIT" + ], + "file_count": 65 + }, + { + "name": "amphp/log", + "version": "v2.0.0", + "reference": "bf1562b8a18a3f30efa069ed740f412ac70a8a6c", + "source": "https://github.com/amphp/log.git", + "license": [ + "MIT" + ], + "file_count": 13 + }, + { + "name": "amphp/mysql", + "version": "v3.1.1", + "reference": "ea3a5e07dc3dddc267669337ded2a98f02d86223", + "source": "https://github.com/amphp/mysql.git", + "license": [ + "MIT" + ], + "file_count": 51 + }, + { + "name": "amphp/parallel", + "version": "v2.4.0", + "reference": "37f5b2754fadc229c00f9416bd68fb8d04529a81", + "source": "https://github.com/amphp/parallel.git", + "license": [ + "MIT" + ], + "file_count": 62 + }, + { + "name": "amphp/parser", + "version": "v1.1.1", + "reference": "3cf1f8b32a0171d4b1bed93d25617637a77cded7", + "source": "https://github.com/amphp/parser.git", + "license": [ + "MIT" + ], + "file_count": 9 + }, + { + "name": "amphp/pipeline", + "version": "v1.2.7", + "reference": "cf2d67696c2015ea7c7fd8f6ec5f8ed7c2d17c17", + "source": "https://github.com/amphp/pipeline.git", + "license": [ + "MIT" + ], + "file_count": 23 + }, + { + "name": "amphp/postgres", + "version": "v2.2.1", + "reference": "b68c4d5929d0ec1701781dbbb0bb81dd8d0a42d7", + "source": "https://github.com/amphp/postgres.git", + "license": [ + "MIT" + ], + "file_count": 53 + }, + { + "name": "amphp/process", + "version": "v2.1.0", + "reference": "583959df17d00304ad7b0b32285373f985935643", + "source": "https://github.com/amphp/process.git", + "license": [ + "MIT" + ], + "file_count": 26 + }, + { + "name": "amphp/redis", + "version": "v2.0.4", + "reference": "964bcf6c2574645058371925a3668240a622bdab", + "source": "https://github.com/amphp/redis.git", + "license": [ + "MIT" + ], + "file_count": 42 + }, + { + "name": "amphp/serialization", + "version": "v1.1.0", + "reference": "fdf2834d78cebb0205fb2672676c1b1eb84371f0", + "source": "https://github.com/amphp/serialization.git", + "license": [ + "MIT" + ], + "file_count": 12 + }, + { + "name": "amphp/socket", + "version": "v2.4.1", + "reference": "b347be5aff6b2cc025208bb4d896607eb470c018", + "source": "https://github.com/amphp/socket.git", + "license": [ + "MIT" + ], + "file_count": 43 + }, + { + "name": "amphp/sql", + "version": "v2.1.1", + "reference": "258bafe5ecf8a0491d86681f2a2af1dee2933a69", + "source": "https://github.com/amphp/sql.git", + "license": [ + "MIT" + ], + "file_count": 27 + }, + { + "name": "amphp/sql-common", + "version": "v2.0.4", + "reference": "735da17ef0a66e7139c9f7584af5c3f9827f83c0", + "source": "https://github.com/amphp/sql-common.git", + "license": [ + "MIT" + ], + "file_count": 24 + }, + { + "name": "amphp/sync", + "version": "v2.3.0", + "reference": "217097b785130d77cfcc58ff583cf26cd1770bf1", + "source": "https://github.com/amphp/sync.git", + "license": [ + "MIT" + ], + "file_count": 34 + }, + { + "name": "amphp/websocket", + "version": "v2.0.4", + "reference": "963904b6a883c4b62d9222d1d9749814fac96a3b", + "source": "https://github.com/amphp/websocket.git", + "license": [ + "MIT" + ], + "file_count": 39 + }, + { + "name": "amphp/websocket-client", + "version": "v2.0.2", + "reference": "dc033fdce0af56295a23f63ac4f579b34d470d6c", + "source": "https://github.com/amphp/websocket-client.git", + "license": [ + "MIT" + ], + "file_count": 19 + }, + { + "name": "bacon/bacon-qr-code", + "version": "v3.1.1", + "reference": "4da2233e72eeecd9be3b62e0dc2cc9ed8e2e31c2", + "source": "https://github.com/Bacon/BaconQrCode.git", + "license": [ + "BSD-2-Clause" + ], + "file_count": 65 + }, + { + "name": "danog/async-orm", + "version": "1.1.4", + "reference": "495f335d8ddb9dae8b773025911191f31c45e9ea", + "source": "https://github.com/danog/AsyncOrm.git", + "license": [ + "Apache-2.0" + ], + "file_count": 73 + }, + { + "name": "danog/better-prometheus", + "version": "0.1.1", + "reference": "74e19343be41905572290878ca9fd0ef08ba0c5e", + "source": "https://github.com/danog/better-prometheus.git", + "license": [ + "Apache-2.0" + ], + "file_count": 24 + }, + { + "name": "danog/dns-over-https", + "version": "1.0.1", + "reference": "142b8d439e7a582d66b13d9f1119820dd3110884", + "source": "https://github.com/danog/dns-over-https.git", + "license": [ + "MIT" + ], + "file_count": 20 + }, + { + "name": "danog/ipc", + "version": "1.0.1", + "reference": "505e672b76af6ec623f7ef78efb2416f62ef8e29", + "source": "https://github.com/danog/ipc.git", + "license": [ + "MIT" + ], + "file_count": 28 + }, + { + "name": "danog/libdns-json", + "version": "0.2.1", + "reference": "cd2981a386a32ff62d447a9553e203384651ba90", + "source": "https://github.com/danog/LibDNSJson.git", + "license": [ + "MIT" + ], + "file_count": 17 + }, + { + "name": "danog/loop", + "version": "1.1.1", + "reference": "83c42b26c1d8d070c56bc9c03e2e8a147b45c60f", + "source": "https://github.com/danog/loop.git", + "license": [ + "MIT" + ], + "file_count": 29 + }, + { + "name": "danog/madelineproto", + "version": "8.7.0", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "source": "https://github.com/danog/MadelineProto.git", + "license": [ + "AGPL-3.0-only" + ], + "file_count": 698 + }, + { + "name": "danog/primemodule", + "version": "1.0.13", + "reference": "e7ebfc1ea64c24186e49064cd4b76bc76c28600e", + "source": "https://github.com/danog/PrimeModule.git", + "license": [ + "AGPL-3.0-only" + ], + "file_count": 6 + }, + { + "name": "danog/telegram-entities", + "version": "1.0.5", + "reference": "19ab8a48bc4b9519c4493e2c62eb171fba8b58b4", + "source": "https://github.com/danog/telegram-entities.git", + "license": [ + "Apache-2.0" + ], + "file_count": 18 + }, + { + "name": "danog/tg-dialog-id", + "version": "2.0.0", + "reference": "d03c653b2dad43d739675c83a6e8fa14b3b43636", + "source": "https://github.com/danog/tg-dialog-id.git", + "license": [ + "Apache-2.0" + ], + "file_count": 17 + }, + { + "name": "danog/tg-file-decoder", + "version": "1.0.2", + "reference": "f4da78c28d47b658c4596249f1d6595956f3b796", + "source": "https://github.com/danog/tg-file-decoder.git", + "license": [ + "AGPL-3.0-only" + ], + "file_count": 38 + }, + { + "name": "dasprid/enum", + "version": "1.0.7", + "reference": "b5874fa9ed0043116c72162ec7f4fb50e02e7cce", + "source": "https://github.com/DASPRiD/Enum.git", + "license": [ + "BSD-2-Clause" + ], + "file_count": 13 + }, + { + "name": "daverandom/libdns", + "version": "v2.1.0", + "reference": "b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a", + "source": "https://github.com/DaveRandom/LibDNS.git", + "license": [ + "MIT" + ], + "file_count": 62 + }, + { + "name": "kelunik/certificate", + "version": "v1.1.3", + "reference": "7e00d498c264d5eb4f78c69f41c8bd6719c0199e", + "source": "https://github.com/kelunik/certificate.git", + "license": [ + "MIT" + ], + "file_count": 10 + }, + { + "name": "league/uri", + "version": "7.8.1", + "reference": "08cf38e3924d4f56238125547b5720496fac8fd4", + "source": "https://github.com/thephpleague/uri.git", + "license": [ + "MIT" + ], + "file_count": 19 + }, + { + "name": "league/uri-components", + "version": "7.8.1", + "reference": "848ff9db2f0be06229d6034b7c2e33d41b4fd675", + "source": "https://github.com/thephpleague/uri-components.git", + "license": [ + "MIT" + ], + "file_count": 22 + }, + { + "name": "league/uri-interfaces", + "version": "7.8.1", + "reference": "85d5c77c5d6d3af6c54db4a78246364908f3c928", + "source": "https://github.com/thephpleague/uri-interfaces.git", + "license": [ + "MIT" + ], + "file_count": 47 + }, + { + "name": "monolog/monolog", + "version": "3.12.1", + "reference": "d7059e4c691d05ea1222b5124bed0f961be46e15", + "source": "https://github.com/Seldaek/monolog.git", + "license": [ + "MIT" + ], + "file_count": 129 + }, + { + "name": "nikic/php-parser", + "version": "v5.9.0", + "reference": "9e33da9553fe7786f0962b35f4e4ecf01be89def", + "source": "https://github.com/nikic/PHP-Parser.git", + "license": [ + "BSD-3-Clause" + ], + "file_count": 275 + }, + { + "name": "paragonie/constant_time_encoding", + "version": "v3.1.3", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", + "source": "https://github.com/paragonie/constant_time_encoding.git", + "license": [ + "MIT" + ], + "file_count": 14 + }, + { + "name": "paragonie/random_compat", + "version": "v9.99.100", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", + "source": "https://github.com/paragonie/random_compat.git", + "license": [ + "MIT" + ], + "file_count": 9 + }, + { + "name": "phpseclib/phpseclib", + "version": "3.0.57", + "reference": "d17e0ddaeaf6f22f7e007cbb437d78792fe2a0e4", + "source": "https://github.com/phpseclib/phpseclib.git", + "license": [ + "MIT" + ], + "file_count": 344 + }, + { + "name": "promphp/prometheus_client_php", + "version": "v2.15.1", + "reference": "e153786bda5ca1d07335a2b5f477742c37195c40", + "source": "https://github.com/PromPHP/prometheus_client_php.git", + "license": [ + "Apache-2.0" + ], + "file_count": 34 + }, + { + "name": "psr/http-factory", + "version": "1.1.0", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "source": "https://github.com/php-fig/http-factory.git", + "license": [ + "MIT" + ], + "file_count": 9 + }, + { + "name": "psr/http-message", + "version": "2.0", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "source": "https://github.com/php-fig/http-message.git", + "license": [ + "MIT" + ], + "file_count": 13 + }, + { + "name": "psr/log", + "version": "3.0.2", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "source": "https://github.com/php-fig/log.git", + "license": [ + "MIT" + ], + "file_count": 11 + }, + { + "name": "revolt/event-loop", + "version": "v1.0.9", + "reference": "44061cf513e53c6200372fc935ac42271566295d", + "source": "https://github.com/revoltphp/event-loop.git", + "license": [ + "MIT" + ], + "file_count": 28 + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.43.0", + "reference": "4d5d331bf731e0aedbc6b2f5e61135b7b7996a72", + "source": "https://github.com/symfony/polyfill-mbstring.git", + "license": [ + "MIT" + ], + "file_count": 11 + }, + { + "name": "symfony/polyfill-php83", + "version": "v1.43.0", + "reference": "80ccff923a8d61f73ebe9da0aa94e25232f004ce", + "source": "https://github.com/symfony/polyfill-php83.git", + "license": [ + "MIT" + ], + "file_count": 18 + }, + { + "name": "webmozart/assert", + "version": "1.12.1", + "reference": "9be6926d8b485f55b9229203f962b51ed377ba68", + "source": "https://github.com/webmozarts/assert.git", + "license": [ + "MIT" + ], + "file_count": 8 + }, + { + "name": "wizardloop/broadcastmanager", + "version": "3.2.2", + "reference": "f2792a383416b66bb68e55f09414563e540538d6", + "source": "https://github.com/WizardLoop/BroadcastManager.git", + "license": [ + "AGPL-3.0-only" + ], + "file_count": 16 + } + ], + "files_sha256": { + "additional-source/amphp-windows-process-wrapper/.gitattributes": "e6518f1394b1372580e03c792bf6b1a51766e1da051815457fc881bf78476ecd", + "additional-source/amphp-windows-process-wrapper/.gitignore": "122661b5b5b483734ef04f7f291a24dcc786ffb0c9e92a1f35b2deb59ebb26fd", + "additional-source/amphp-windows-process-wrapper/LICENSE": "b41825e266bd6e700ef99630fee09db6338122a1d28c1d298c64cea6fc1c030c", + "additional-source/amphp-windows-process-wrapper/ProcessWrapper.sln": "5f26b1a717dda8d8b2573588ab8c87a585415538be92300e81c2e9524e347e6b", + "additional-source/amphp-windows-process-wrapper/ProcessWrapper.sln.DotSettings": "4db43cc7fbc6b8972f454e894b5a70a1cd9e214ba15c9649fb680e9cf430c8d7", + "additional-source/amphp-windows-process-wrapper/ProcessWrapper.vcxproj": "766e9040c299829a030bdaff7b450ec6781fac58ef123175b5b022598bf980f8", + "additional-source/amphp-windows-process-wrapper/ProcessWrapper.vcxproj.filters": "7eb705d68fce787832d0d26a945bd785802fefdd87ba1386cb19365e997b5ffc", + "additional-source/amphp-windows-process-wrapper/README.md": "22eb3f686641db618709bda289529feaa43c231aa725cd059731f1eef5dfe423", + "additional-source/amphp-windows-process-wrapper/resources/.gitattributes": "f9ff8e3d710fc3f6acbb095258e4746cc01d3e7d351c884ea6880455d82bae72", + "additional-source/amphp-windows-process-wrapper/resources/Icon_amphp.ico": "4d746cea582e3b984584fefccc2e6a90d39e75ec0b650ff43bfc893ea2e4eda2", + "additional-source/amphp-windows-process-wrapper/resources/ProcessWrapper.rc": "e08aa7682e9c823f4f68e47c237e4ee88b2b8b78616abb94a38ecada3508e993", + "additional-source/amphp-windows-process-wrapper/resources/resource.h": "58ff0eadb1c7e5c2a999f711ae95fbd765d6b0f718f48ab68558563ebf04f601", + "additional-source/amphp-windows-process-wrapper/src/Args.c": "b2d944379bd3af7a289aa500150f0ce27e618eb378d3f3eecf384f8a32a7d441", + "additional-source/amphp-windows-process-wrapper/src/Args.h": "f3203671d93c1fc7aec4dab123b1a96f2de525071e5f8e3bff73e96a19b4353c", + "additional-source/amphp-windows-process-wrapper/src/Encoding.h": "95e600fd81ce3830eaada2edaa2e560b9e060751f0d6518ec816ea57e682a5b9", + "additional-source/amphp-windows-process-wrapper/src/Errors.c": "c8021ac52ed123e4ece667f97048b1ecadbad122b993c1e43327db985a21c463", + "additional-source/amphp-windows-process-wrapper/src/Errors.h": "ec57545ed3bddf7710f23b8e14a21a0d5dda5f94613bf388b502fdd13932a34e", + "additional-source/amphp-windows-process-wrapper/src/ProcessWrapper.c": "f93286e07aea62ffa1d7ba20839a3bdc21ede954c7f8a6096796d9fdb229a389", + "additional-source/madelineproto-build-inputs/.gitattributes": "3bb98dfe72b07470c126ea3bf718cd1971c91d06f06c142c1a3f61576e8dc527", + "additional-source/madelineproto-build-inputs/LICENSE": "57c8ff33c9c0cfc3ef00e650a1cc910d7ee479a8bc509f6c9209a7c2a11399d6", + "additional-source/madelineproto-build-inputs/README.md": "d29b413ca8fab2fd2bd7e3758b5d1f054fe01e470b260eceb76717ad6a028d31", + "additional-source/madelineproto-build-inputs/composer.json": "18de335fb004ecfea1334bdf98d53dc2dc5045d6202723d19cfb3004b7293073", + "additional-source/madelineproto-build-inputs/docs/template/disallow.json": "8aab568b61b51b83619933be278db5b0c51218b16d0b991193173160ef752dd6", + "additional-source/madelineproto-build-inputs/extracted.json": "2b0b8ef62b64a70035a8d5d4c4b4bee60a22fa861d5b61e0b233f9f117c88534", + "additional-source/madelineproto-build-inputs/langs/ckb.json": "1828a99998116c24849c5a6672a5d00e8ea346cfb008ab50482dd0f1963d05dd", + "additional-source/madelineproto-build-inputs/langs/de.json": "ca3d163bab055381827226140568f3bef7eaac187cebd76878e0b63e9e442356", + "additional-source/madelineproto-build-inputs/langs/en.json": "33e7b63f83a7a79fe0aa7ac73d608894b2337920de3823a4d2588f30fca07484", + "additional-source/madelineproto-build-inputs/langs/fa.json": "636744c11f1b86a49a16f6c3c2f5f09dbcec9a5789dc5466240579155294f97e", + "additional-source/madelineproto-build-inputs/langs/fr.json": "d5beb79e1abd2a64f82c18965321cfe56c063c1bed4a92ebab393d9ceabdc30e", + "additional-source/madelineproto-build-inputs/langs/he.json": "b517525a26aec12a83c21d1df347cac40eaeda25c0007ca72e92139d152a12ab", + "additional-source/madelineproto-build-inputs/langs/it.json": "fa6d8fbbb95757b79142654e519209b9bb6b18ac9dfdd36970f2f999f701b4dc", + "additional-source/madelineproto-build-inputs/langs/pl.json": "613511a5d23d972281b0ddff9dfc781c6e971dd712e54f26f35baeed64f28210", + "additional-source/madelineproto-build-inputs/langs/pt.json": "8ec4534299dca265b4213fecec8aa32dd4d6a2b565a6b56e50b147c1e1cb3031", + "additional-source/madelineproto-build-inputs/langs/ru.json": "805799a38b240f788fab8ad843a2f15038fb5d20ee48a339b2dfebe130ed706d", + "additional-source/madelineproto-build-inputs/langs/uz.json": "f5c28b62e48835f02cab5646123cdf1441310c9bc1861bb0ce184f12d67f6121", + "additional-source/madelineproto-build-inputs/langs/zh_Hans.json": "b09ace620ac7e817e510f0238740b97fb9e41755c6ff0cb86798e2b55a7495af", + "additional-source/madelineproto-build-inputs/schemas/README.md": "df080ca2974e01930ef5232f2373f326477a4bd51713f8046df0d6ac2c5ea1fa", + "additional-source/madelineproto-build-inputs/schemas/TL_mtproto_v1.tl": "a68bbcfb6aea699cb394aec44008b01b915f1e8b632a1d786001ddd7c7300dcd", + "additional-source/madelineproto-build-inputs/schemas/TL_secret.tl": "899beb4c1713a65c9f09677dd93406a1e96c52b661d46dcd30ac7c0a87b0d20c", + "additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225.json": "7443a459ddf9f4b98de1121e16d35495bf4654d0e220ce6be3c53cb9ba3496d4", + "additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225.tl": "539272f5ad8992ee97b61bd134fcf3a28a41ce720e806d0e7dc0e2e408c581f9", + "additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map.dat": "6f62c4ed620c5c6182c7e23b9373402f832cfc9400de70ee37c3a7c9752f9dbb", + "additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map.json": "bbd2aa2593ccfc73638b82a7d9fe0cc116a1e97e55ce8268233ef4d13c233623", + "additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map_schema.json": "118fa46b8a12dff8e4ac1545d99f39a0c261a1cd0d375ad52adb27a70072bece", + "additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map_schema.tl": "1bb333123d34d3598b50cd5fca7445c9e0347bdfc78955dc71cf543262ac4dce", + "additional-source/madelineproto-build-inputs/schemas/list.json": "c7d92f848ad03729daf10d2ff25b9ec49f17c9562b754919f6ca8cfb93801827", + "additional-source/madelineproto-build-inputs/schemas/list_file_ref_map.json": "74c5c901f045e8e7cbbf199752a5ddf1e4de46c93a57a745697dc74db433edfe", + "additional-source/madelineproto-build-inputs/tools/AnnotationsBuilder.php": "06cfae503d18a4a4ce5c802469224d7d8c495b8ab71f61cfe6a67070682c63f1", + "additional-source/madelineproto-build-inputs/tools/DocsBuilder.php": "0b93a2da5e7c5fcd9f63fa4962805c36f8c7ad3fa22d24ee79af99814b21072d", + "additional-source/madelineproto-build-inputs/tools/DocsBuilder/Constructors.php": "9799411e24b068ebf379f36bad567704e198486d707abcf6962172d84816ef41", + "additional-source/madelineproto-build-inputs/tools/DocsBuilder/Methods.php": "75c80725b49b68650e9abe2a9971929cef3b16b0828ca9ea475f3cd1be8acf1d", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/ActionOp.php": "1499bd3053681d6aa2269839e1d55825448deb1994ba90852270ba91340087dd", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/BuildMode.php": "6cc7d671f6ada2959621969efc733c0e8fa2dce8297ed3592af0228e7111026a", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/BuildMode/Ast.php": "542f6899240f5d6d90e3d6dfd97e86ab68906854902f5f1cf3f61437a49243a4", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/FieldTransformationOp.php": "75bd3b3029b3907327fdb2bfdcb04f87eaa1582aba0bce9ed461778217fbe75a", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/FileRefGenerator.php": "7d9c84e5c51da29921e51b262ba8ab6af958b5abe95667e5bfbb279a941fb336", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/LiteralOp.php": "300fc3630eda3d03807e64f6017da0f35366a4397263097c49d2d3808fc5f3f6", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ArrayOp.php": "3b4328ba6e38eacd076104e4533a6ff7c7083effbfc204e142fbe9a767ad8925", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CallOp.php": "d76eb0ba098131a6a7166bd54c1a7cef00247742b9252821146bf4fc0ede34d1", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ConstructorOp.php": "a79c8e4edc295a749f905806492a87d5a3ae35f1fcaf2454d97724d9fc064f01", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CopyMethodCallOp.php": "4b695dd32bf8674cbd65704bf3214fcbd1811fc19df9be3e5f93c7ae6f50c5aa", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CopyOp.php": "0388255cac8c0eaf32267d2c214e628d0c9a7bd7f85c86d52e0ad145bcf61526", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputChannelOp.php": "2b3c807797e2731a45d4feeee14e94994612130d3b1d3cfff8ecc8876d215558", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputPeerOp.php": "a9bc4d8af81fdb9a78908038690568e7e94c02cab64e59fc52a10f002dbf3662", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputStickerSet.php": "7c3b0ce0b2c6b3c0bbf7c5c4ba33e7b491a1a8547e0340667e40348c0e228779", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputUserOp.php": "d5bca8ffc5aa64c4cd33bede49392c21a0a800d9002bc22de0f46176a27e6a92", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetMessageOp.php": "08e7f19fb87ef29ccd001de99a3688a5d97653e5a1c274d99a7fb71fc3d6339c", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/Noop.php": "4e6c96a3014f3bddf3c39a4c0750f6237c5266ce03df7c09c2986855ff1c0c9a", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/PrimitiveLiteralOp.php": "e030b15127b2cb9407fd72e22dfd3b514327faa0a2c08c38581f9fa2ac001937", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ThemeFormatOp.php": "e384c89147307988dbf4c2972ba1e5630f84ad2d40e067f93813d9fc03b42fae", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Path.php": "bdd3cbb15bcbb9504decec03dc1eb529f8805b5c9e73b4602eb219ebf7412b0c", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TLContext.php": "0b975a77af7981eb7b4aa45c48adf7908be6f6d23f4016122e5548624367e9f0", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TLWrapper.php": "88522ff62efa4e0fa690d1a7809726de2b3be1dd0fb14cbe2de4016172ce7987", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TypedOp.php": "7604725c49ac22576f2c285fe2c56a7ebb0b87effa7422427850aaa33e753b34", + "additional-source/madelineproto-build-inputs/tools/TL/Builder.php": "1975f182dcc5490d5576e53314018cca155b11c8ed212dd60af150cba805c3f1", + "additional-source/madelineproto-build-inputs/tools/TL/SecretBuilder.php": "6d5c40cef5c8d152686cc90ade49a759c2fc2a26b01fe4d2fee66d80406404ad", + "additional-source/madelineproto-build-inputs/tools/build_docs.php": "a1fbde122f6e0fad09f40472d791a24a7bc0d3d3606bb9682ff4e57e962cf27d", + "additional-source/madelineproto-build-inputs/tools/build_docs/layerUpgrade.php": "b80237aa3f1d43d218c3e5c5aafb5866e8269580d359ca831f0e8931e0d7e082", + "additional-source/madelineproto-build-inputs/tools/build_docs/merge.php": "45c62d5c545d01934aaf86919f95f2fa46924577379d7d9ff904af6ddab0414d", + "additional-source/madelineproto-build-inputs/tools/build_docs/schemas.php": "88b3dfa2240c876838cba20d273efea2398ff35c864aee53b7759ab71203b267", + "additional-source/madelineproto-build-inputs/tools/build_tl.php": "647a38d12bf7f9624f4600ce3c9e2a52846fd6e75b01df63ee7be11f34bcda6b", + "additional-source/madelineproto-build-inputs/tools/fix_docs.sh": "4c743f26805a1d002e9f9eeb9f6df8868c099ab6c78ed03c31a17ad968e42e47", + "additional-source/madelineproto-build-inputs/tools/fuzzer.php": "e86aec0b60cec3c906ef40ef554d5a83f020f0df83fa41a0d82140570141ad4d", + "additional-source/madelineproto-build-inputs/tools/genDataset.php": "6d487fed4569c1fa863387dc90dc9af4fa9828b026aac45f11e611d72fd9fa45", + "additional-source/madelineproto-build-inputs/tools/gen_filerefmap.php": "64c04660acb12f86e75949e31e9683867ebd3ec32bf230cc129e26163ff4dd58", + "additional-source/madelineproto-build-inputs/tools/layerdiff.php": "93a6e0de4238f7e7dbe86c33e6230be2118fa8e297f6855f39736dfb75ac2f9b", + "additional-source/madelineproto-build-inputs/tools/makephar.php": "b8f014265dd8e5ba2c9d8f2deff573cecc7b1906f274094cd52d3127ac79f9de", + "additional-source/madelineproto-build-inputs/tools/phar.php": "f765c235dadc5ff6099af2cafc1fc465dbb0c5a084c060b1853b90d0b61c0019", + "additional-source/madelineproto-build-inputs/tools/phpdoc.php": "f7bebb70a0572c2746e8f16e58f9ca5e7c3b797370c66461964d966a0eb83e6c", + "additional-source/madelineproto-build-inputs/tools/static.php": "77b36fc8ad17adf4ce1b979cccfc97c88ec8d1fbcf2e88f70af06ddd1ecb244f", + "additional-source/madelineproto-build-inputs/tools/std.php": "718e35b65340083a1f4c59e49d53e73a96b210321256a92cd6622fee88305c34", + "additional-source/madelineproto-build-inputs/tools/translator.php": "566b7f50cddda5926f9a08f4432941ad8de0aa70c2957289fafec4ddf058d4e8", + "vendor/amphp/amp/LICENSE": "84904cb068b00a937d61104d0ae336bff1aa3518c0329d13dae8b71880dc2429", + "vendor/amphp/amp/composer.json": "6c95861590fa640fe7ef3c59b285b5980d362f9befe3b35891684329344a49b6", + "vendor/amphp/amp/src/Cancellation.php": "ebf61138d631d14fbafcc7372f48c371d2f9b4281b6e49145b874e5c04843f66", + "vendor/amphp/amp/src/CancelledException.php": "4045a6fe66b076eac2deecd7f185ec2242de4e1ea831bc2a67457c6256c764c3", + "vendor/amphp/amp/src/Closable.php": "0ad2b0fd45a9f6f7113b292b1fbb3fea7d488ca1a1026826fc6b248e6c5ca352", + "vendor/amphp/amp/src/CompositeCancellation.php": "7429a984776f5406715a1b36e2475dc772797066ad8421255545664f486c3231", + "vendor/amphp/amp/src/CompositeException.php": "289b56071a4882d0dc5ecd3ea90b5c1cf29f2c036e485bcaf90e1808938a8388", + "vendor/amphp/amp/src/CompositeLengthException.php": "ab18cc343df92298340be912332b91e4bc984304bc9fe8efe4eeaa73b3753791", + "vendor/amphp/amp/src/DeferredCancellation.php": "8645b7614818764f6872c536d11bdc438016b4b58a3a78f9a5997bb06966eca8", + "vendor/amphp/amp/src/DeferredFuture.php": "88652d2b81e29f8079dbe0b553e6be15aeaf111dae5c77dd9a7c8596459d0699", + "vendor/amphp/amp/src/ForbidCloning.php": "81e71e54e3368e45ef573a098d4361173ad69e315f54761baf936c8f9c242f5b", + "vendor/amphp/amp/src/ForbidSerialization.php": "a3979e28ef4303e2234bf3b400d6e35bc96db6cf41ece074dbc6ff8603ae4c52", + "vendor/amphp/amp/src/Future.php": "62404395d4558f635a7e53f45f2c5b4348ed2b767ea10ddeac50479691f183f5", + "vendor/amphp/amp/src/Future/UnhandledFutureError.php": "19cb06f102acb3521f7339792d9ca930297187734502b29a86dd155af5383dfd", + "vendor/amphp/amp/src/Future/functions.php": "514db68044f1b4ed5d37bab7cfdd811c72ea3a316b504f61e01a533ea31db35c", + "vendor/amphp/amp/src/Internal/Cancellable.php": "efa42a3c66bd550321e9490d68046ab7736beef6d9affd84720e97c5fc45c7c6", + "vendor/amphp/amp/src/Internal/FutureIterator.php": "eb0395360f1fc593db276ce49f433159cdff4fd01d0f669f92d140b8fd527fd1", + "vendor/amphp/amp/src/Internal/FutureIteratorQueue.php": "c8349f3a4434b8069b8a5c3f78563f93beebe43bc14dffd9a2f7466ad187ee3a", + "vendor/amphp/amp/src/Internal/FutureState.php": "1f9221e33da695127c599dc1daf79c8d1368a3386a6b9a0f60c7637e88c06c33", + "vendor/amphp/amp/src/Internal/WrappedCancellation.php": "3461882687da68bf31a021caa83f156b545dbecdbb57a9c85ed21bdf21d4b18f", + "vendor/amphp/amp/src/Internal/functions.php": "95f03b30a237f0d164ca111a9650f1cd1ede61a43020d93b8838b8c3b6e98ea2", + "vendor/amphp/amp/src/Interval.php": "a58f2bbdc857f519153387b67c5477c3ec1fae7f5c145b99ef91dafc5d39aa47", + "vendor/amphp/amp/src/NullCancellation.php": "6fdef4ebce044baa2eecf3113649fdbdb3dbd68df6ff989a904f0e2167994f9e", + "vendor/amphp/amp/src/SignalCancellation.php": "6af1fadba98945eb625aa786a8ed184936c3f997d0aaefd49bebcc2d022deb34", + "vendor/amphp/amp/src/SignalException.php": "d7ad4704319fa752e7cbae95e05cb8237e78b3ad81ac2031a916a1dfa0c2761a", + "vendor/amphp/amp/src/TimeoutCancellation.php": "da2860989529bbd6d30178c4a3dae9801fb6713ff46558cb2d3581604592edd0", + "vendor/amphp/amp/src/TimeoutException.php": "b7bc3aa27117fe6867040b22d6734205289e486a0dea9a29bb650df2992396ff", + "vendor/amphp/amp/src/functions.php": "17b647d5c150955668f9d998b9ada5af99c88ebd39b10fb69ad69189937a3c34", + "vendor/amphp/byte-stream/.github/workflows/ci.yml": "0078d569a4ddbc2a99769c59407802e6e2d4ecb91e6c5f35bc0583b3b568a98d", + "vendor/amphp/byte-stream/.php-cs-fixer.dist.php": "5ce44edecab0341a80260246cecaef8e48690f3a1b6be2ddbe812ad05c83851e", + "vendor/amphp/byte-stream/LICENSE": "5054607a36e0b2c287274145c01e3358ca62e79754d947159b7ace87cdd78305", + "vendor/amphp/byte-stream/composer-require-check.json": "7c052dcddc8d79aaaba0cc5cc131eeef1ac25e0406937fec5063e9e222237e68", + "vendor/amphp/byte-stream/composer.json": "986cfcf1044bb6b9ca4c36e70af51b4552cfce6bbc1eb2ada11872388961b2be", + "vendor/amphp/byte-stream/psalm.xml": "470a18311fdda9f3acd01180f14af36f4b4566358153a76430ec93607154cf66", + "vendor/amphp/byte-stream/src/AsyncWriter.php": "f717480c1a172230ea95383b7abce6e0fd6b17d3c243b87543c2d8920e72099f", + "vendor/amphp/byte-stream/src/Base64/Base64DecodingReadableStream.php": "e2db3f5226d5ee1e50d4c5b9fcc25ee1fcf5c2c1f88612d5012993a82ad0b84b", + "vendor/amphp/byte-stream/src/Base64/Base64DecodingWritableStream.php": "17658a26fcdf8cf5fd8dc6700faf8ec69d07c17a1de8d2250b16479ddf95e98b", + "vendor/amphp/byte-stream/src/Base64/Base64EncodingReadableStream.php": "2a6aca35f245409061a1d810b370208d6a73407059f607d8511097b509dc4684", + "vendor/amphp/byte-stream/src/Base64/Base64EncodingWritableStream.php": "ee7f99da7bbf0c15eccb8a2759b932a32bd94852fa5a4d197d8400f784359855", + "vendor/amphp/byte-stream/src/BufferException.php": "43dc80e36eda19b04cad50b69715c60367a9eead0aa6de560ec5c736fa5394b1", + "vendor/amphp/byte-stream/src/BufferedReader.php": "c2ac60b46765b615902ebcefc55fd5b41ca62158af61c34d60416ad8cf4e8f9b", + "vendor/amphp/byte-stream/src/ClosedException.php": "219a7bba4df3cefacb011eacdb15d8ba3c5b3ca003636f5daa1056025d8085a3", + "vendor/amphp/byte-stream/src/Compression/CompressingReadableStream.php": "8bfb0be2def1c7884c97abece12b5d823e8efee1c85c741c2aaeee4bcd8f0dd2", + "vendor/amphp/byte-stream/src/Compression/CompressingWritableStream.php": "a510920406333d81e34f9292dc0945318d2607ee1fff106537341b7f80de3245", + "vendor/amphp/byte-stream/src/Compression/DecompressingReadableStream.php": "90a2bbb209c5395b025666f357c6dbee7be67740b181240dc6f0915a6a55c2f2", + "vendor/amphp/byte-stream/src/Compression/DecompressingWritableStream.php": "1e33a31816aced792e387aed201ebb6226d41951a1720fc0d139f67c47415012", + "vendor/amphp/byte-stream/src/Internal/ChannelParser.php": "292e69e14d85ec26ac91911f239e44a0538f6ab1a8dfbec7f6982bf1889ff10d", + "vendor/amphp/byte-stream/src/Internal/functions.php": "4c8aee76eb56639121cbd04755ff7959cd18a477a3696653973c9990c1ca86c7", + "vendor/amphp/byte-stream/src/Payload.php": "a0eed51625b642ee66b6eae49885825861cdd80c321d4a2cc8a7b2080d31530e", + "vendor/amphp/byte-stream/src/PendingReadError.php": "de9a87b42ba1f066cee5cfce428e96d523bad90b50e7ced97c99e2420c6fe35f", + "vendor/amphp/byte-stream/src/Pipe.php": "a0aa04ba0a354100c79e5cf673bf1cd69c9101ef95612aa36b984351a0413972", + "vendor/amphp/byte-stream/src/ReadableBuffer.php": "e214ee17286081ae4dfc097bdf64572a52a4186562bd48701b3517c70971a4cc", + "vendor/amphp/byte-stream/src/ReadableIterableStream.php": "d45fadc7d36a23fcbcc22b1970bd8d39fba37c7a34464def65c6debbf70293ab", + "vendor/amphp/byte-stream/src/ReadableResourceStream.php": "d889460b5fdbe74604c77f5766206b748000f7e4776f829e7ee22276fa8332d8", + "vendor/amphp/byte-stream/src/ReadableStream.php": "f82bf255eea6f1ed3d093dbcae0eaf300ee6d970d83c07cd6f130ec84f759078", + "vendor/amphp/byte-stream/src/ReadableStreamChain.php": "0240a00cbfe487b25660e5fcb293fbffde3e1a19d4cbadf5fa58e707d6bdf18f", + "vendor/amphp/byte-stream/src/ReadableStreamIteratorAggregate.php": "651421877fc57b4d3c7360b373d2c4c363bef267bede3a7517738a8d062f7fa5", + "vendor/amphp/byte-stream/src/ResourceStream.php": "15a7a5f304afefa157da1465782890af7b50ba03bab264226a1c34200fdbe45b", + "vendor/amphp/byte-stream/src/StreamChannel.php": "1db3525604fbcacef129a1df7235413f6d4676d767c9f793d74bf2b339050381", + "vendor/amphp/byte-stream/src/StreamException.php": "22f706319d8bfb4337d3818cd01178270b5aaa0aeb0f049d2deff45ace02a020", + "vendor/amphp/byte-stream/src/WritableBuffer.php": "26d4160b3803445c9db8305e09355588bf57e6e8e9a66487ff7c4720aee7df36", + "vendor/amphp/byte-stream/src/WritableIterableStream.php": "e7fd0bb47e77c099d4617eea7b029a823446f3bfa3a3d7028eaa1bc7f1095615", + "vendor/amphp/byte-stream/src/WritableResourceStream.php": "3d2a9c11020de4de3b9ddb79da46840558b99fa01b43a2d3cd307d1f1cc77b7f", + "vendor/amphp/byte-stream/src/WritableStream.php": "50722ff821de631b67f9ec6f15744aa418d369a9fe80f92f1f1dc6df0624d4f4", + "vendor/amphp/byte-stream/src/functions.php": "6d26113166455a6d4f4f8d76e76b9d9160ec0b1ece22ed18b5318057e410e2c2", + "vendor/amphp/cache/.github/workflows/ci.yml": "2942ab7c0cabc36f2cc753d14cdc9e9f85cecc9cbdd5e2c4ef78218d6d682512", + "vendor/amphp/cache/.php-cs-fixer.dist.php": "3111e6ce024060615cb967c5da8c8ba4142ea53c13cf9389c4f3766f016d235d", + "vendor/amphp/cache/LICENSE": "a6d83873b76621737538da8481d4f737fa5ffa15dd3abe6e4c3a112f6f5ea1ac", + "vendor/amphp/cache/composer-require-check.json": "0a056b512ad306d1f7798449d4232fa59377c1870a77c4919fd391e54221ced7", + "vendor/amphp/cache/composer.json": "8d8b2b08f8eda5b3c8d6f87956a57deeab0b9065227430d9c5c20756e7dfb05b", + "vendor/amphp/cache/psalm.xml": "c9ae8182dc86669b279b1f873d67dcae590da9b10e43b27e79de9c1d13975217", + "vendor/amphp/cache/src/AtomicCache.php": "a2070275541df0f02a9b6df4136bf8f4cd1774b99c8deceecb21a46f37a590c3", + "vendor/amphp/cache/src/Cache.php": "047e8fdf2a8627c04226f5cd0f0e227e9245b2b1a1056bcc74722e165d211c79", + "vendor/amphp/cache/src/CacheException.php": "f8791b72ca1f43d9daa6cf151548abefcaf8508c5b8ceef29d1a9e388e048c0e", + "vendor/amphp/cache/src/LocalCache.php": "44c1815f46a1c7951021844414ef1be389b943efb3429bb67b40b85fdf2d4335", + "vendor/amphp/cache/src/NullCache.php": "26740b0e947d54af58727b49a02aeaf220c0f155db7e8f80304b80368fdfbd8e", + "vendor/amphp/cache/src/PrefixCache.php": "5eefd610752714b58414249f6c21b84c16c3fb98f527038424bc49bfe0bc52e8", + "vendor/amphp/cache/src/SerializedCache.php": "4fb5cb8b630267c5727aaf7ecf8b58211a6e01c3e276dfd6e9315530ba568639", + "vendor/amphp/cache/src/StringCache.php": "61afc450a01c56fcca98dc715e9249de22deaa6b2150ed7f72f3549a3f7c0fb7", + "vendor/amphp/cache/src/StringCacheAdapter.php": "aa727223ef87214cb6c8fa4a28f1ad87c1dcd6e0df1eef722ba819a3b0f4c067", + "vendor/amphp/dns/.github/workflows/ci.yml": "d232ea9bdc3e0c2b7a9381b5762e6f64dd7f9bb47adfd307b099951059ba3f22", + "vendor/amphp/dns/.php-cs-fixer.dist.php": "5ce44edecab0341a80260246cecaef8e48690f3a1b6be2ddbe812ad05c83851e", + "vendor/amphp/dns/CONTRIBUTING.md": "979aef790f3cd7c4a193f858996e079eaac50e4e496b092b05b0339bb2bedbfd", + "vendor/amphp/dns/LICENSE": "93dc2b2aae85651379265cbb4906d2b054020ac9cc4ee70e5040f79751e34651", + "vendor/amphp/dns/README.md": "9f26c13424ae8b1069197eabaace5d43f183b5a4f85609d42e9ef166c7472ed9", + "vendor/amphp/dns/composer-require-check.json": "00d70055d3bf2e423b34eabf91c61ebf9e8efd16af311d5eff14469ff7add9a5", + "vendor/amphp/dns/composer.json": "97433bdf58fbe0cf392d784a299697fe66347738b41d326aa2bb11e4d846fbc0", + "vendor/amphp/dns/phpunit.xml.dist": "345c60de31100b878744261dd711c4e6972212bd24e41d39548d141c1d9db796", + "vendor/amphp/dns/psalm.xml": "c01143dd7b83c6647e7fba08fe88b19c63257b6d5c88746db51fa12536deff0e", + "vendor/amphp/dns/src/BlockingFallbackDnsResolver.php": "4404de604b2d9e3a8c8ac7910adc63db83338df9ec9fd7edabdb021c7f4acf8f", + "vendor/amphp/dns/src/DnsConfig.php": "0ac27a78710ee04d75c16823431f475fb2ce611903201634e0f369be881458ca", + "vendor/amphp/dns/src/DnsConfigException.php": "2b0a21e796e602cdc7b24f759d2e05819b292fde368bca3d9f3e8a2e4143e8be", + "vendor/amphp/dns/src/DnsConfigLoader.php": "a854753faf02cdd59046b9b450c93e721de84a0871ce4c6935f558061e4cb010", + "vendor/amphp/dns/src/DnsException.php": "20a10431ffe1de7359ab906676c8eaae9bf6ba620a41441d22476d8f3758c02a", + "vendor/amphp/dns/src/DnsRecord.php": "ceeabbae9cf16ec769f38f37d0f338fbf3446b93e5be192d591a502ad581b4f0", + "vendor/amphp/dns/src/DnsResolver.php": "a6bae009efcc1b6aaa16cb6f8ff784d79102093920474151df66da85e6b5ee34", + "vendor/amphp/dns/src/DnsTimeoutException.php": "9d3ee237b310bcd9b0185fe3f1b1ea6496d8583e521c45e11018cca785b94af1", + "vendor/amphp/dns/src/HostLoader.php": "0dce1612711b2310d2b3175662f2702cebaf9dca44251c021a2171251ea61035", + "vendor/amphp/dns/src/Internal/Socket.php": "ca1129a565f769b8a20729d9499f199afd58aeefe7579ebe1e61aa6f545ec924", + "vendor/amphp/dns/src/Internal/TcpSocket.php": "b52949012c7510b5743e0b98cd63e7679e846eef9d404c5d8ff37ac029ce3939", + "vendor/amphp/dns/src/Internal/UdpSocket.php": "ac3dd8f2b6bb1e94ca3bc51fd263012b2d4a333c6ed3c0ec8194251d8311c981", + "vendor/amphp/dns/src/InvalidNameException.php": "183ad8d2ea5ab8d23989cf1f720adb8708120a0c55a4e50fdffc7a64fa96017a", + "vendor/amphp/dns/src/MissingDnsRecordException.php": "500ba6b03026b83732325619c6552fbba99ba54bacd9d1c2837e1162c63d4b57", + "vendor/amphp/dns/src/Rfc1035StubDnsResolver.php": "2c3b608e2323215751b69afbf3f484e7fa9fb4cf059fb3eb3dc2f2d42a63b4cc", + "vendor/amphp/dns/src/StaticDnsConfigLoader.php": "8205246b22b5757bdf7ab100fb1c174f68c936686f4fbd88fe42bcec00ac43e2", + "vendor/amphp/dns/src/UnixDnsConfigLoader.php": "477885d1a7245af452752dc02b8f7ad8641e721361f12e1242deaae91c2d0cb4", + "vendor/amphp/dns/src/WindowsDnsConfigLoader.php": "f103db8dc85f185e3fa5151e3d46df0578f9352bb1cd33df7b346b822ed3c7cd", + "vendor/amphp/dns/src/functions.php": "8255d8224fb36a550e4c18f260a9d4c82fa74dbc528c59ea2467b47629dff960", + "vendor/amphp/file/.github/workflows/ci.yml": "1beb65f104a33ed7566c223aaec60ff51db268c2784b82d1b44e57dc8269d3f5", + "vendor/amphp/file/LICENSE": "75ff14768ed3b0898ea24b8ff76e9615c21d1d4e6f7ba1d258cc55cb9689ca73", + "vendor/amphp/file/composer-require-check.json": "ab36b5ceb64ac09f0bb7bc569222b4f5817ff40af536eb386dd93eb7ff911ca2", + "vendor/amphp/file/composer.json": "73f832d745fa4509184f2841319a252cf2b4af8ae1e6faed33657d743924665e", + "vendor/amphp/file/phpunit.xml.dist": "85c7327041aeffa92733b7252c5f88978957fcc4db80f89d6a05aad9450f0d27", + "vendor/amphp/file/psalm.xml": "11dd3085b07900c38ecf4f2e270583becf1967b62d551ede56f9f1a10638a8ba", + "vendor/amphp/file/src/Driver/BlockingFile.php": "78b2f4acabbe46f620a286a90604a6d8e66ba340119115100cf4e1a303eb4322", + "vendor/amphp/file/src/Driver/BlockingFilesystemDriver.php": "013c3d7f2e24c11364ea1ca32d658bd9e290aa6aafefdb9c347d4a2daba45a6b", + "vendor/amphp/file/src/Driver/EioFile.php": "6637a1af69072da37a83b6b71fdeac2677d75a0a3ff9ea6ed66a8969003f2520", + "vendor/amphp/file/src/Driver/EioFilesystemDriver.php": "fa5d4d71c5b18f019864a146b21590bd2db1ed6e5205e066420081db472cbb13", + "vendor/amphp/file/src/Driver/ParallelFile.php": "ae59ef5c597e35980d7fb8b590e0977638b51897a86699a269566623df5434bb", + "vendor/amphp/file/src/Driver/ParallelFilesystemDriver.php": "d79984b3e162270e61c3044f2bb0b0c65d670e99bbe4b8a8c904286ad15e5ecf", + "vendor/amphp/file/src/Driver/StatusCachingFile.php": "a50013fd3b4678997fa6c2d48114f2d42c2ad290cd14510fd01218dcaa766de2", + "vendor/amphp/file/src/Driver/StatusCachingFilesystemDriver.php": "0399976e2907846ea8443426921038e1eb66e4f609ec851a8ec88fae3b939cbd", + "vendor/amphp/file/src/Driver/UvFile.php": "03a74f7baf754f925c26d3c54bdd9ae37e2f9dd804b30aab930edf51478d14db", + "vendor/amphp/file/src/Driver/UvFilesystemDriver.php": "6ec6031d1ccf524008e3d370ff3d71d85bd24615728dfa910fa2c8dedfb59b3d", + "vendor/amphp/file/src/File.php": "95802ba59e9fd3344472036e9155b75c16d1fcc0e88d498b839dd9e00cd963f0", + "vendor/amphp/file/src/FileCache.php": "f97317ed938130eae66e1a0ade67a2931c207c6522693d302ddf08785afa56ac", + "vendor/amphp/file/src/FileMutex.php": "cb75694b160855f5ef7e71ad794258523f53e7ca5128ea46743152905805a44e", + "vendor/amphp/file/src/Filesystem.php": "b771ef9129ec7499d44198ddc8cb5756a9a7d3be2fe19cf8e309024b2629fb96", + "vendor/amphp/file/src/FilesystemDriver.php": "ac8e6d9f2d2b2bb3326afb17aeb6ee25278aedcf3c4941f00323de8ae65c6876", + "vendor/amphp/file/src/FilesystemException.php": "ec9813de75586fbbb0f058ec7986edcc93d1207da459c0d89fe16f7df7ac53d0", + "vendor/amphp/file/src/Internal/Cache.php": "bb9806dadbfdc0559c1174677e0a627a543e61ab23572a198638d416b5652365", + "vendor/amphp/file/src/Internal/EioPoll.php": "3e9c9985a30bb0b9abb8370b5ea368a1b37aaa9bb5e1b13471bf07eda2ecf4c0", + "vendor/amphp/file/src/Internal/FileTask.php": "d4f7bb0f7b2e8fd18297a2bfd8eda931d05f40176ee02dae4a14ebfce0198f3e", + "vendor/amphp/file/src/Internal/FileWorker.php": "b05d4c3fb8ab3e306508820eab248d2e15120c277684283681f8488ef3f809db", + "vendor/amphp/file/src/Internal/QueuedWritesFile.php": "6db075c6366396a366c6cdeb775dcd141b8c299367e6dfeddca9130901bc7459", + "vendor/amphp/file/src/Internal/UvPoll.php": "d3905b98f01dfd9c12a6f628afff2a5c3f6ea3c34b5d3b782f4cf0f23087860c", + "vendor/amphp/file/src/KeyedFileMutex.php": "22fa5a027cafab1067853ca6506adca4ac3edd8807afce56d2ba70c5f816b9f6", + "vendor/amphp/file/src/PendingOperationError.php": "4bbe24c16b71edc7f7bdc0cdda844836bd3d696eb3bd54f67b34b152450f47ab", + "vendor/amphp/file/src/Whence.php": "c0a941fd362df34bc18714d859e6e80c5c3779882a71973e00f9c8ffc63e044c", + "vendor/amphp/file/src/functions.php": "1eb2e279fd5f89dbdcabbb57089b1a56e93c3350db1a4429c9019d64cba68b05", + "vendor/amphp/file/test/AsyncFileTest.php": "b7d82c70d8fb457647b009b1d603d0d8157edfecb8cd46889691ae556d8c6b16", + "vendor/amphp/file/test/Driver/BlockingFileTest.php": "4fb1887d4182bc945a08cabaa85c99b242a42b81d7c3b7fc3e2d0124f4d309cd", + "vendor/amphp/file/test/Driver/BlockingFilesystemDriverTest.php": "e9889056ad222a0ac8ce3e4dfecdc708a13e3facea0eb07e913d5cb230e6e6f2", + "vendor/amphp/file/test/Driver/EioFileTest.php": "947542cd11214a0398670ba7119eea7502ba1b45c48e6cf6e32fcc43c52eca8c", + "vendor/amphp/file/test/Driver/EioFilesystemDriverTest.php": "a285423a4a8e860fe0cf4d0f4ba0a132900b4e3983e64efa47ab88da7b037ecc", + "vendor/amphp/file/test/Driver/ParallelFileTest.php": "e9c77247ca25e150c828abbc0692ec1740b38989e82f69fdb444c952f43152d5", + "vendor/amphp/file/test/Driver/ParallelFilesystemDriverTest.php": "4e4c767f0667b5a0cb79ad67c69c76a0f60f3698417c512fc609f46ee8fba2b7", + "vendor/amphp/file/test/Driver/StatusCachingFileTest.php": "da97d2a34c9908b1f41b97cf8779dc06f3759ad5f29860ac2e08d72369623029", + "vendor/amphp/file/test/Driver/StatusCachingFilesystemDriverTest.php": "279d80f610e0eea5afca499324e2a86b1a0e7228ee20fb998d1ae62e1c65fa4c", + "vendor/amphp/file/test/Driver/UvFileTest.php": "5e3ab54267f31270730158fbf5fe298835033b2f3700e31e3588ee2c2161a0fd", + "vendor/amphp/file/test/Driver/UvFilesystemDriverTest.php": "7fa99e27a943600036c0f11e1910d7e92524327e371c5769b78d44efe244353b", + "vendor/amphp/file/test/FileCacheTest.php": "72b40f11820158479a29041b1e71f2d678a01177769443b8e168aabdb938e302", + "vendor/amphp/file/test/FileMutexTest.php": "0b279ea8ecf78e66232e5adc8b490972e3f66f841ec2daa249f3548e6d1c156f", + "vendor/amphp/file/test/FileTest.php": "6d0064ed62dd9d74dded9712af9b747e8eb88d6633f2bfd086db7f28365831e0", + "vendor/amphp/file/test/FilesystemDriverTest.php": "bf35b3bee4bdb8091e22755800cf1cbd72d82c0b5e8d8de6fdfc360d4f40e612", + "vendor/amphp/file/test/FilesystemTest.php": "5174af323c39fab5a84e6b655b2771e506745efc4e49020f00fdffb1eb0b248e", + "vendor/amphp/file/test/Fixture.php": "a11924262f9e5b989db8c90a4e050cf5c7f259b71ea55f60818f638af7934d81", + "vendor/amphp/file/test/KeyedFileMutexTest.php": "efe505b697b15e54d42882aa369d3064ba11cfe798dab4644d8ea8a7ff087308", + "vendor/amphp/file/test/phpt/issue69.phpt": "b8c3520e7f828b8f0c4ec50942880ca31374e2b9230449e8641119459bec4b41", + "vendor/amphp/hpack/.github/dependabot.yml": "1d602d1045ad62a174430bdb482a347b1ef7768bbce2402fe53ceaaea117ede6", + "vendor/amphp/hpack/.github/workflows/ci.yml": "7ce55fe242ff0a7538199b0c783d7260fd5eaa2d443a0fd200a170561c117b14", + "vendor/amphp/hpack/.php-cs-fixer.dist.php": "5ce44edecab0341a80260246cecaef8e48690f3a1b6be2ddbe812ad05c83851e", + "vendor/amphp/hpack/LICENSE": "93dc2b2aae85651379265cbb4906d2b054020ac9cc4ee70e5040f79751e34651", + "vendor/amphp/hpack/composer.json": "644f9460d5ecc66861888e48604f9009aab0f1cb1c0ce9e2a46a60cdb91fb22e", + "vendor/amphp/hpack/examples/bench.php": "3141e4bae4f1cc22f5bbde38ceaac93afb5f39c4362a2bcb889d3a6acf38ee41", + "vendor/amphp/hpack/src/HPack.php": "5c279bd82c145cce501f55b2742ec4df9f9465a613309613e4c89789910c64f9", + "vendor/amphp/hpack/src/HPackException.php": "ea994bae2a47ed62968729e3b57aa8a833c38bc6e3171289c63f6ac4ba349691", + "vendor/amphp/hpack/src/Internal/HPackNative.php": "576a240926ea0175f7cf9040f08d89216bb658e5d9c72b8458433767806fa341", + "vendor/amphp/hpack/src/Internal/HPackNghttp2.php": "bb439d875a6cd3d3f79405a3456bdcff09709f2e193b43af57ef0eaf15c4d836", + "vendor/amphp/hpack/src/Internal/amp-hpack.h": "7bc303aa3aa01fd9534aaac405c4b93d31932eb08a3a3ef1c21291ba49e89f6c", + "vendor/amphp/hpack/src/Internal/huffman-codes.php": "37db3e2675300925292f7dc9d86bbef22f66d4992099515f32a598af19da0f35", + "vendor/amphp/hpack/src/Internal/huffman-lookup.php": "2e01ff912324658a5cd5aa4bbfec36da4d6299601899a314325ab451be74deef", + "vendor/amphp/hpack/tools/compress.php": "bd42a505f81fec9d03a436bf382eb68e8c79452c2712b1ee89c684de5388b08e", + "vendor/amphp/hpack/tools/php-fuzzer/decode-crash.php": "8a5d97bdc8a1b36b9a26821a9f580213687faeed17cb26edd335b27287356597", + "vendor/amphp/hpack/tools/php-fuzzer/decode-oracle.php": "f55c456063227fdd3b97aeb9d9ba20054db766d8918b63bd73eac63e87f73909", + "vendor/amphp/hpack/tools/php-fuzzer/decode.php": "16cbf0005439780ea7cdffdc6674f249a548f91f1bc9d7fe270f9166c4c7fdc7", + "vendor/amphp/http-client-cookies/.github/workflows/ci.yml": "bd2b521ee75b17ed38f8d95b9653b662456efe48105fdb8a2f4e71ed47f55063", + "vendor/amphp/http-client-cookies/.gitignore": "496c9e4f0bce83f3e897cc64b11c8cc8416d2dc9a91dbedc76f94b5dc77232ab", + "vendor/amphp/http-client-cookies/.php-cs-fixer.dist.php": "471c989c811a3356ce22dc6212deb1161e85f043315e558cd23d30193caa53cc", + "vendor/amphp/http-client-cookies/LICENSE": "80a36409928641ee64ab2932c9a3a3876f7e2ee0f1b886dfa7c30404d7bd3767", + "vendor/amphp/http-client-cookies/README.md": "0c2068927aa518868ac9fa9007731a864a3c2a778d74c5af3ea51427701fa9ba", + "vendor/amphp/http-client-cookies/composer-require-check.json": "e6d1f771c1c69227b618129d07de6e8715933cb3357d9c7321bc2208afb14073", + "vendor/amphp/http-client-cookies/composer.json": "6d5898a130476185784f7528ea1283512bb327aa29df175607e55c71e07580d4", + "vendor/amphp/http-client-cookies/examples/.gitignore": "e80b4861a53fb52646cfa9301011c6e5eebd444e07652ba61e7a0585f068992a", + "vendor/amphp/http-client-cookies/examples/basic.php": "f9251cbe938e966855df31d831dbf1cadcc3354f9f65dbc616ce952f20987f4e", + "vendor/amphp/http-client-cookies/phpunit.xml.dist": "345c60de31100b878744261dd711c4e6972212bd24e41d39548d141c1d9db796", + "vendor/amphp/http-client-cookies/psalm.xml": "c32e7128dde79b3bca726c86d94b329d8479dfdd999fe96f5be741050bc64e1d", + "vendor/amphp/http-client-cookies/res/public_suffix_list.dat": "069cd86c0b13b0a26815c5700f7a33a37affba84dad51a1d71a2200fc748c29c", + "vendor/amphp/http-client-cookies/src/CookieInterceptor.php": "6bba4f674a43b409b969914129a5f9aa5b8572c3505a8c445d888d9427621240", + "vendor/amphp/http-client-cookies/src/CookieJar.php": "168dfa9107cc58c619a49ceb0a357fb545904b01ab60dca0fb66f1cf4346f71d", + "vendor/amphp/http-client-cookies/src/FileCookieJar.php": "763dc67edb706ffe0b858b115ccfe0eb7b8c9f1a8238c4047a8b23844aecba1a", + "vendor/amphp/http-client-cookies/src/Internal/PublicSuffixList.php": "520358e2c1278581e7aa56e196ea0d4f38d472334200c9aac885e36f66a56942", + "vendor/amphp/http-client-cookies/src/LocalCookieJar.php": "f424cae7cf5ec09f87609f04970604bedc26ca19a20a6c52b3d580281f7ce204", + "vendor/amphp/http-client-cookies/src/NullCookieJar.php": "13eae4a1ba0052f786bc33929b12a387fbfce55572f1f2c7d300a265f2e979bf", + "vendor/amphp/http-client-cookies/test/ClientCookieTest.php": "2d1324fbbb7397b3a7946958de2e4f06096a7d68421a181922729ea3f171243b", + "vendor/amphp/http-client-cookies/test/CookieJarTest.php": "135688f86ef132b967e2028dd14c60a284d4838c55fe4ea6eb50c569f58dd2b3", + "vendor/amphp/http-client-cookies/test/CookieTest.php": "46614828eb49bc130a0b56e9b4e9e897a8b4042792d11640b4a17d698b3adada", + "vendor/amphp/http-client-cookies/test/FileCookieJarTest.php": "82cec7e39f800dfd58850f2994ea80f0fdc17780a0e2eab5e88165895f5bc927", + "vendor/amphp/http-client-cookies/test/InMemoryCookieJarTest.php": "10e9e2564f9cf385678e7c67bb4b6fa8d53f23df3e6da38ee617f8c94ec92772", + "vendor/amphp/http-client-cookies/test/Internal/PublicSuffixListTest.php": "f2fd8c69c9fb9cd302e74a4da2c707daa569cd0adfa16c4c147788311f2659cf", + "vendor/amphp/http-client-cookies/test/fixture/public_suffix_list_tests.txt": "0090eed4ba1a288f7622ff40ca3e878e492e51d565935aa2c93171738d9941f9", + "vendor/amphp/http-client/.github/workflows/ci.yml": "0e55291eb41d6418a11994fbe8127818512854408464edebacb11d3af55bc79e", + "vendor/amphp/http-client/CHANGELOG.md": "2a5e604625fa6497b9847b144cd9f6292193930c4ef97b56bf451ab7a647fc5d", + "vendor/amphp/http-client/LICENSE": "5867f0443d153c8bc1510680d5dd922ad4db2bbc7445af9dd09d849a3efd7690", + "vendor/amphp/http-client/README.md": "e6e8a28d06a775da02e3c3df7cb6429265e73b55fc284e90f76632c30c6465d7", + "vendor/amphp/http-client/composer.json": "3d853c1799abdc78473e1cdc6c177c7e36c0a989aef88317a1f4425aa7458f8d", + "vendor/amphp/http-client/psalm.xml": "9d261419ff3e77acd13650135835988d13ce81fb4e000657c05efae298eec8f0", + "vendor/amphp/http-client/src/ApplicationInterceptor.php": "f96a2b7b46bef50d8dab019053489d17fea83e9619e298408dc0b6701a6e02dc", + "vendor/amphp/http-client/src/BufferedContent.php": "9be59c9d36dc745592431d9fe86e8ff0d4dff28f23f1691032396524a7738c43", + "vendor/amphp/http-client/src/Connection/Connection.php": "48366c20b22946169e40bbb26db2dc2ccd76e5060aa0c07eefe19dc554b981b2", + "vendor/amphp/http-client/src/Connection/ConnectionFactory.php": "6c947cba9548b2b668224e9ed278176929fcaab0ae60ca1a7dfd42dddcaf5362", + "vendor/amphp/http-client/src/Connection/ConnectionLimitingPool.php": "c60cd8f9b860e363eda1b037861e215e93624798a6b5a107e42b9a5be0a1059e", + "vendor/amphp/http-client/src/Connection/ConnectionPool.php": "d7932bf4519f95bc8163c267a3a5f632bbb4022f943aae30d860dc1a21c62eef", + "vendor/amphp/http-client/src/Connection/DefaultConnectionFactory.php": "5f860fc9c93a910ad65c4b71cebd29ff57ca2aef2311147c0fc987fa59439eb9", + "vendor/amphp/http-client/src/Connection/Http1Connection.php": "c60dfec5fe9cf6454494725f2a63237feb1b620972d8f600d94fa5d1d2e79c18", + "vendor/amphp/http-client/src/Connection/Http2Connection.php": "b65648a28cdc22b26b85f5818deeb1653274447b7adef36f5628a1a5cb9931a9", + "vendor/amphp/http-client/src/Connection/HttpStream.php": "844cc5d6f1b20224cc9a9c297457e2e2c665ab378e8a67796c71458ebd1ee01f", + "vendor/amphp/http-client/src/Connection/InterceptedStream.php": "028940da9cbed6c7bfc4b26d4e7aa6747e88a2c9427181b75a5d11ca78e93be3", + "vendor/amphp/http-client/src/Connection/Internal/Http1Parser.php": "79c6fdcb7c338fc08de3bc17b1c85356211b43054e08a868313f374d54fae49c", + "vendor/amphp/http-client/src/Connection/Internal/Http2ConnectionProcessor.php": "6b4be4510f1429e21ecd21bab849aa6d7d81a02262e9663405629832d4e530db", + "vendor/amphp/http-client/src/Connection/Internal/Http2Stream.php": "e7f7f31b469e4955b13f84060a6b90aa0a2e7d4dc36c6a19cce880fb148755fc", + "vendor/amphp/http-client/src/Connection/Internal/RequestNormalizer.php": "976b7cdbe02bb6dac652fed2d151e2dfacef7e8f4ccfff1ce7daf51fff17f9ef", + "vendor/amphp/http-client/src/Connection/Stream.php": "6bc530d9e0da21cdcdf91f1bd0c84686eb1f7874d114ac90ee2486c167c04881", + "vendor/amphp/http-client/src/Connection/StreamLimitingPool.php": "1ea5f15c0010fd3f81facc426f7af436cfd105f2d716a8b35b7293ed9b2aeb14", + "vendor/amphp/http-client/src/Connection/UnlimitedConnectionPool.php": "5ea90067d896d4d9533690dd3c1975af6dd2d0ed5099412dff063f4b0d92e6be", + "vendor/amphp/http-client/src/Connection/UpgradedSocket.php": "ebb4b80ae02abfef04cb99352e5621144a4f36df1c53d6315a2e3023baf85439", + "vendor/amphp/http-client/src/DelegateHttpClient.php": "2b9e275634ab651c37722e3a977dfbf029fcf5ea3a126bef4971da4df312c327", + "vendor/amphp/http-client/src/EventListener.php": "4678534bc4b4ec1f1adb8ad838de97af9a2a335d1d68df1f659db7fab0474ad7", + "vendor/amphp/http-client/src/EventListener/LogHttpArchive.php": "f8d60c9407a5144e3b4fb45284537b4b30297e318d55efbe56ec1a1b97fecc6e", + "vendor/amphp/http-client/src/Form.php": "87a03b257bdc43f01a5758a81b09b1c6b4cc28d913e79236577dde3d61f11029", + "vendor/amphp/http-client/src/HttpClient.php": "607cec846dbc7a5b1b16fdd45ce05e5f8b8d173b28564d829622d7505bcca5ae", + "vendor/amphp/http-client/src/HttpClientBuilder.php": "b1ad1ceb95cf49e20278db514c4a222b886a36ab7cab18479251a883339ec6d6", + "vendor/amphp/http-client/src/HttpContent.php": "e47609575f0e13412b3c0517b5c6629f526bf4e6c41c306d57e4b5f1ed14ba8d", + "vendor/amphp/http-client/src/HttpException.php": "ee3d3caa24e0ca1da267169d7f14d2e3b7899be5271cb7793e151ef934c9dc2c", + "vendor/amphp/http-client/src/InterceptedHttpClient.php": "cc60aa825b6b6ce0d8b2506b44fce0cc3c4965a03513e2c6d7d1f697329e4b6e", + "vendor/amphp/http-client/src/Interceptor/AddRequestHeader.php": "353d057a9a6bc6d7187ca5abf3eade79a7167a4a8c8676dad9250f50a02dae81", + "vendor/amphp/http-client/src/Interceptor/AddResponseHeader.php": "2f1345cb481baaec534e8dc5db4fa1d627a3266371680e8a39d0774707a07bdf", + "vendor/amphp/http-client/src/Interceptor/DecompressResponse.php": "a7120c369fb5edf612db36cc744578ace4f74f4cd75d464ab4e93cbf73a69576", + "vendor/amphp/http-client/src/Interceptor/FollowRedirects.php": "3970a18c5ff9fff3e3348a08fc200c951d73ce0843db5ab2ebb947d31633ffad", + "vendor/amphp/http-client/src/Interceptor/ForbidUriUserInfo.php": "4ce4612842a2de452b4ba79494236eebd5ca31f5f7893d27680ff34d0b0f6f50", + "vendor/amphp/http-client/src/Interceptor/MatchOrigin.php": "2e78ddaafbf419eed77a27ddb80d349064978dd4994aceb990b39f3d9337e800", + "vendor/amphp/http-client/src/Interceptor/ModifyRequest.php": "8b86e8aa804f9d931fdc10880dcf841ed1121ae855b15a8744fe51fe8dae3a4e", + "vendor/amphp/http-client/src/Interceptor/ModifyResponse.php": "5ee887b08172d89d7830dad42dbd10db6d9fe19570aed620f175ff957041c415", + "vendor/amphp/http-client/src/Interceptor/RemoveRequestHeader.php": "9b429aa3a50eff7226fc5ff2965b584deb87531a66f518a5996be4b0e2ec1283", + "vendor/amphp/http-client/src/Interceptor/RemoveResponseHeader.php": "3e610dd1b2da159c76f025fcc82968482f7f7e3aa90f526b6e4dcb422c37622a", + "vendor/amphp/http-client/src/Interceptor/ResolveBaseUri.php": "790201953a098285df02143d71cae3d533658b82c0fc82e5c5a38eaf16eb221d", + "vendor/amphp/http-client/src/Interceptor/RetryRequests.php": "65aaecab678d7ff27cfc5b63a61ae68edc3b4c2e2a77a4f4f7b475c4800ed74d", + "vendor/amphp/http-client/src/Interceptor/SetRequestHeader.php": "6293e2f095a71c6a8f7a700813d2d0cf11afa73b8995cf34517e9596b056e727", + "vendor/amphp/http-client/src/Interceptor/SetRequestHeaderIfUnset.php": "cf27548bca44619f5b12def7b0c0cf4945bc27db4bedcc026c94d0edce7513b8", + "vendor/amphp/http-client/src/Interceptor/SetRequestTimeout.php": "6161e0a9e0856fdcec2e4e12ac0100fd34d0cdf3b7f30f611b2c04e9020866f7", + "vendor/amphp/http-client/src/Interceptor/SetResponseHeader.php": "292b7ea3de224828aab610758a2c09c7543a4af87a769d3a1985f326a4729759", + "vendor/amphp/http-client/src/Interceptor/SetResponseHeaderIfUnset.php": "5413697bb7c920c8161fc2897fdd39944e04a2d1dc001c7a91616ab87245792d", + "vendor/amphp/http-client/src/Interceptor/TooManyRedirectsException.php": "2a70f07e0d9ed4fc4b50a1c172232269c7d705d395ddb4851fc76c8ccb04a56b", + "vendor/amphp/http-client/src/Internal/EventInvoker.php": "bcd2e2a5a5ee4431636a22ba7bd333e10f39fa542c7d78c5dfb000af5d3228f7", + "vendor/amphp/http-client/src/Internal/FormField.php": "59b5e64570148b12c1350989b0b218a4c27ee2e25ed0469ea2cd9b2dc35cbceb", + "vendor/amphp/http-client/src/Internal/HarAttributes.php": "733654dc27b93ca83c85a590ad1f370075d3544ed302e050bff58f154297db91", + "vendor/amphp/http-client/src/Internal/Phase.php": "664b1ea96223d0df4ff57d859787bb42d498678a35472cd2ddcce23c0fadde01", + "vendor/amphp/http-client/src/Internal/ResponseBodyStream.php": "bc6bc6ecfd428249beca2a0eb0d55fbb73bee28ae0a3bf74e155e689ce00fa6f", + "vendor/amphp/http-client/src/Internal/SizeLimitingReadableStream.php": "f18f2ca02c5bc72a775a4ef28a19b2c6fd1b51f291f1f4475983074e8fc3f9bf", + "vendor/amphp/http-client/src/Internal/functions.php": "def6c2623568de1a51250e28a3dfc87ebcb3d5ca48c55b82b87982e1f0f90839", + "vendor/amphp/http-client/src/InvalidRequestException.php": "764d90909d2073fd06abb74bc420794455521f16ce796cae69d3366a4808eebd", + "vendor/amphp/http-client/src/MissingAttributeError.php": "8181b67c2a85499306d69a0eb44739510c6f6e095a49fb7aa87318101dc95326", + "vendor/amphp/http-client/src/NetworkInterceptor.php": "8b353c8b8648e267f678935a99b7351a26eacda5661709085463fc36e01090ec", + "vendor/amphp/http-client/src/ParseException.php": "43f749fd40b8dd27865b7c01f84913ce0cd099e4efc2b93a19736a0756f50de2", + "vendor/amphp/http-client/src/PooledHttpClient.php": "3f784a03537e3919c0a289736997d0eaf549dbf09fdf28a93bdb645f755e42d5", + "vendor/amphp/http-client/src/Request.php": "706e4ceca44e97f24795032e89b0136280a5280aa34cfa8e30da727c3152c366", + "vendor/amphp/http-client/src/Response.php": "4c3095fb4ef080025911ccdafa65373b0fa8b07d704c2e1f387b2228d695afee", + "vendor/amphp/http-client/src/SocketException.php": "71d5dbdec09deec2c569ec40d75d29beb406b424281d4e785bbd41ac7be866aa", + "vendor/amphp/http-client/src/StreamedContent.php": "17d6a8be22b686d070b26f13de32b459fb90b00e6365ed1657447995fc4801a5", + "vendor/amphp/http-client/src/TimeoutException.php": "67158beb4ceb2e63698f20f6c6db5fc08dece1e23d04d900885f598eec9e1495", + "vendor/amphp/http-client/src/TlsException.php": "246ee4d306391d7e9ff1a3f132cb316d85c066c55c9d288203378f8aecce5576", + "vendor/amphp/http-client/src/Trailers.php": "2f26f4da4c517fb1a2de608326ed6bd6d86fbaf153cb5e192cce2d4bceeb652d", + "vendor/amphp/http-client/src/functions.php": "180c950c416116c03f9fa3ddff11f7846088820a2a12bd73c8d6b69df06f6dfc", + "vendor/amphp/http-server/.editorconfig": "671f270c30a8444d9e9925b8b1a3ae38e0550da305a70eb954328183a3572fe0", + "vendor/amphp/http-server/.github/dependabot.yml": "6e88c6b58f0687c7136021a6d2227a31e58a35bd78ae48ad5c619bf4cff2e309", + "vendor/amphp/http-server/.github/workflows/ci.yml": "fcd42ef20a2b441a04f0d6a59a6d9d938b3a0005ac67f3b1acb3621f1e3548aa", + "vendor/amphp/http-server/.php-cs-fixer.dist.php": "5ce44edecab0341a80260246cecaef8e48690f3a1b6be2ddbe812ad05c83851e", + "vendor/amphp/http-server/LICENSE": "75ff14768ed3b0898ea24b8ff76e9615c21d1d4e6f7ba1d258cc55cb9689ca73", + "vendor/amphp/http-server/composer-require-check.json": "7c20dd437581332623e2a893205e910fcc2ba50feef3b541ce9361ecff60267a", + "vendor/amphp/http-server/composer.json": "12a8a2c066d1b87c4682bfcb8e0771e0a4910adf87be3fefed11bef691048285", + "vendor/amphp/http-server/infection.json.dist": "c939360b5afb17f8a5e4d40b365cb9b4a389b4ce78a95aeeece158974a803847", + "vendor/amphp/http-server/psalm.xml": "9adce63af31e0f07b1dfa4ebaea46cbcfe5d1e82bee58b957ae7e0ae96ad6491", + "vendor/amphp/http-server/resources/error.html": "e277e98a5c5f49b6863e24a6d37368f798587428446eff3c86782a0199041445", + "vendor/amphp/http-server/resources/internal-server-error.html": "e512d4280e7e9a825198be12ebc902c9fc083a4c0b17a1e2a375d110155f0021", + "vendor/amphp/http-server/src/ClientException.php": "a5bc32337e39a4b9d118dd55803ebc671a293e267756e4a5ca204835db7fa920", + "vendor/amphp/http-server/src/DefaultErrorHandler.php": "2c3f1f0f3e99a291754264bcf0185db1e21bcc3ca2e4816f48016c7ee6e269e5", + "vendor/amphp/http-server/src/DefaultExceptionHandler.php": "44305ecea36a3671e93a54235bf5a208ec5a72fd2a165ea5ab13f6fab7f533a1", + "vendor/amphp/http-server/src/Driver/Client.php": "264adbcd2cfa880c1a8842fefac753603812a228be44a244911bea791d0389b8", + "vendor/amphp/http-server/src/Driver/ClientFactory.php": "6e51fe01cb356f24ea9e2b50c71a71003a13b8a886993ef45a9be42203eed1c9", + "vendor/amphp/http-server/src/Driver/ConnectionLimitingClientFactory.php": "33a80e030429f0f87758c97e72faea2048969958b657ac10972c0412d9fde073", + "vendor/amphp/http-server/src/Driver/ConnectionLimitingServerSocket.php": "00211aa09e54acfbd314911fcb4e23b71b19eabb110254a2969a2b338c8ae505", + "vendor/amphp/http-server/src/Driver/ConnectionLimitingServerSocketFactory.php": "79bb058e11d93a56d573ab9cfa5516951508aa23e76c5c139b335306d0bb87ca", + "vendor/amphp/http-server/src/Driver/DefaultHttpDriverFactory.php": "7c3ad83b1aa4e2dc3d8ecaf45256f377ea4818c759daabbc8187f52259dac815", + "vendor/amphp/http-server/src/Driver/Http1Driver.php": "a859f864327791deee06c937a12c0abcade24cc886640f542f7e0cb54258ebf7", + "vendor/amphp/http-server/src/Driver/Http2Driver.php": "dd9530527376cc069df7b008992df9316dba02344e18275946e4bbfcd7560498", + "vendor/amphp/http-server/src/Driver/HttpDriver.php": "be306954333718a90833ad553fa781ff5454aa522fd585c53d56582bb8f447e7", + "vendor/amphp/http-server/src/Driver/HttpDriverFactory.php": "5312b96ba43dd56aaec4d98fdab078857ee5dc20a5e1fd13e21dd677f1d23fc8", + "vendor/amphp/http-server/src/Driver/Internal/AbstractHttpDriver.php": "ef0a3b4fd7b32495472d7ecb8c5bd11ef6f3ca3db16e3a9d0d283d0f9e749e91", + "vendor/amphp/http-server/src/Driver/Internal/Http2Stream.php": "38c041ec098b709c004dab88cdacf781befd68771b85a6806ebaf8f04e1fc32b", + "vendor/amphp/http-server/src/Driver/Internal/HttpDriverErrorHandler.php": "db5391799034efe3048f67773d2d094372fd8d8146e4862f513f97a571010be2", + "vendor/amphp/http-server/src/Driver/Internal/StreamTimeoutTracker.php": "6de548d834b4b052a465572c36094c696bfb745f025fef62d10b7377bcc09fb6", + "vendor/amphp/http-server/src/Driver/Internal/TimeoutQueue.php": "4089aa60c9fae5036ce9df17242e535c4b0797c81d6182958cdd5b63feb30a26", + "vendor/amphp/http-server/src/Driver/LoggingSocketClientFactory.php": "f125aa2c2d0bbce396ede41a9ed356c4f561bf3b044cbee39b93234069f2999c", + "vendor/amphp/http-server/src/Driver/SocketClient.php": "aef7ccc9cf7d143715db67c0454834a9537ca4b5b61224c9162efceb4311c88e", + "vendor/amphp/http-server/src/Driver/SocketClientFactory.php": "1ff2ecb0736143edbf3ebd31edbbc0a68f1aaf717a135041d2350f99d05cb3bb", + "vendor/amphp/http-server/src/Driver/UpgradedSocket.php": "05cf0f6966f12498a08725a3e032465d929930be9719c5e6e5bb4f0e35d67ade", + "vendor/amphp/http-server/src/Driver/functions.php": "b56c067442ebfd41c83cc72617cbb7a18f8213532e281cd5db16c14e67cd66ac", + "vendor/amphp/http-server/src/ErrorHandler.php": "e80c7404af88840fa27aafdce26ca26d99c364a856152629cdd13af31f2cf193", + "vendor/amphp/http-server/src/ExceptionHandler.php": "f2e6343ae47d88666c17473f4639bbd0b601c63842e3844cdd5e7b620d3a66fc", + "vendor/amphp/http-server/src/HttpErrorException.php": "2284b130e224c4bc19d4d4abb6f8bc8b80c6574b66ff3313f81ea525b26315d5", + "vendor/amphp/http-server/src/HttpServer.php": "c4550bd634aa7dd3c45bbbeecbf3510e6dcbc961a2f067d9611c95113e1417d0", + "vendor/amphp/http-server/src/HttpServerStatus.php": "065572f5ab193d01da0d34eb1c715855bcced978aeddf56423db7a1eecbc8fa7", + "vendor/amphp/http-server/src/Middleware.php": "bc6ead6e859beeed0731622191010da8f7969e215858ac4347f0a7531fb5a821", + "vendor/amphp/http-server/src/Middleware/AccessLoggerMiddleware.php": "2c267fe2ca41543b30b0b063d99efc7d33fe4ec9700f46aaffdfa399b523886d", + "vendor/amphp/http-server/src/Middleware/AllowedMethodsMiddleware.php": "a93c83a2fc78834f56fdf7d4cf908e30a2157bb8685a8aaeb7749f2d43e46ee1", + "vendor/amphp/http-server/src/Middleware/ClosureMiddleware.php": "9fd2e59ab2998d0607ccb2cd882f09ab3459c4bd2087812b64c611b1dbc62e69", + "vendor/amphp/http-server/src/Middleware/CompressionMiddleware.php": "39f8a18b4deed96c025720d5622c84aa1e3da501cf0161ab23fa2d410e3ff09c", + "vendor/amphp/http-server/src/Middleware/ConcurrencyLimitingMiddleware.php": "cd5305b95503d4aef54b22f4b82fbe6cf0b7ab96c928730620ecf2b063a5f61b", + "vendor/amphp/http-server/src/Middleware/ExceptionHandlerMiddleware.php": "d4e6c9a3424ab0db3deac8443f428a04a396457238c997259e73ee26d3a59414", + "vendor/amphp/http-server/src/Middleware/Forwarded.php": "e66faad04cee480d9b6192fdd20e4274e629a58e88c86723a21d2262d47b2ba4", + "vendor/amphp/http-server/src/Middleware/ForwardedHeaderType.php": "a22cdd13ff21e3eebfe232860d401fc9bcd1e233ca95663ff31fcf7539c08763", + "vendor/amphp/http-server/src/Middleware/ForwardedMiddleware.php": "61788a3e0a26bbb6049bce6b2ec49c1118b075735edc38ca6ea07f0d7be0fc73", + "vendor/amphp/http-server/src/Middleware/Internal/MiddlewareRequestHandler.php": "2f7e94e258fdbafc982a949cda38ca9f9330a7a33943dfc2973de697c283bb48", + "vendor/amphp/http-server/src/Middleware/functions.php": "1009786de13317257038a6a9f981065c23f3508a0cc4d93e4b3c1a5833f0d6e1", + "vendor/amphp/http-server/src/MissingAttributeError.php": "5956ce8cfe604bd914377748dbb7c33797509d270787a7a341739ab3d2136882", + "vendor/amphp/http-server/src/Push.php": "97b8eb68082eb3c39c69f4564d87dff9dc63d016f4376ab4ba2cdb1b6e64b329", + "vendor/amphp/http-server/src/Request.php": "bb4e3f7368d5e57d95d3da2f5e9d77dbf1f684f9a7d68a09c364a18e2c987de4", + "vendor/amphp/http-server/src/RequestBody.php": "734ba8eb0ab7c261b10f89bc4d13adb7018325a3cae7aa5ddc1d96a97ab73e39", + "vendor/amphp/http-server/src/RequestHandler.php": "14a46e2e471aea5431adccd17aa2c41cee60ffe469bf14166e25e46f6a97a409", + "vendor/amphp/http-server/src/RequestHandler/ClosureRequestHandler.php": "a30b258ed991b26ba4021ac8f96d94a7ddbc55e86975144edd7084e5ac6150f9", + "vendor/amphp/http-server/src/Response.php": "409f3fb4786e274820468d1c14e0ab1d0338faa1d543a22a16016580d49dfa75", + "vendor/amphp/http-server/src/SocketHttpServer.php": "7d7ba166b112aef79099bfa2c12d0a1c8e7c4ecb5fa0c7449ad30c34f758405b", + "vendor/amphp/http-server/src/Trailers.php": "f46b56e1dd38537d89abf62be8fe99072dc2762c7f2d95231a0a4fce1351b658", + "vendor/amphp/http-server/src/functions.php": "f1ade9b3a1159c06088238ee39168238ef3e8b8d151a2580203c4dc8c96a963d", + "vendor/amphp/http-server/tools/h2spec.sh": "45af9225cebb6fa0096fabaecab81c46aa45e1e81a5505dbe11ac0b50fbe7e28", + "vendor/amphp/http-server/tools/tls/local.conf": "7b3a13d4b2065bb7caca908f778ad5494d122a235270153d6cdffcca2f5c0a50", + "vendor/amphp/http-server/tools/tls/localhost.cert.pem": "a348fe395065f151eac40d8b148731cebdc2fc47cb4713ca01e6d47b8fe02d1e", + "vendor/amphp/http-server/tools/tls/regenerate.sh": "b38dda15f5076a7cd582b8279cedc21c3154b710a37eb7d06396199e5358b8da", + "vendor/amphp/http/.github/workflows/ci.yml": "aaa2c49a998c8a7873869e09383831aac4e15eb6279664c5d33035d6af6d4b47", + "vendor/amphp/http/LICENSE": "95d9a352435f98f90b68c443bc8f6378701d1b708c8f5150a13509a9ceae4379", + "vendor/amphp/http/composer.json": "aceff22c6e55fc53b6c34065644415255626dce3bded532ccb19e8d003e3c9cc", + "vendor/amphp/http/psalm.xml": "a37b321ec8ac33b68c544c25bd5a43001752158f7f79f85320fa640a33c8b079", + "vendor/amphp/http/src/Cookie/CookieAttributes.php": "03912a26a1947bc20e306e75918be059435d2f64ee372e6c19cf7bb89a22d2e3", + "vendor/amphp/http/src/Cookie/InvalidCookieException.php": "7f68f2e13437eb550b87084bc64ccc5621d57f879e6873b02c8641e09cb86476", + "vendor/amphp/http/src/Cookie/RequestCookie.php": "7b7192747b2e19d6775433e900ca60b139597c0c2074364bec0e4e84e95c473e", + "vendor/amphp/http/src/Cookie/ResponseCookie.php": "7972bb12165f339bc8e011d448e42d0f2ce82a4c517f3a156f32d2e9b7cb54a0", + "vendor/amphp/http/src/Http1/Rfc7230.php": "e0ee7ade1e93787f0480fcb1cc5c1067cd53ca6ee19bde6523ba5dfda077abd3", + "vendor/amphp/http/src/Http2/Http2ConnectionException.php": "6a9632e0bb918aa0ae3916d519e9850880ae43669eac8fe763bb1ebc03edc2b7", + "vendor/amphp/http/src/Http2/Http2Parser.php": "0c74c6f85961021fc4dbff0c6bd035dfa928134ff5294022c773d5b1942dd441", + "vendor/amphp/http/src/Http2/Http2Processor.php": "ee38490c21462743dcf935a00d10306a1ec462b1becc3c1a3f737e7e370f421f", + "vendor/amphp/http/src/Http2/Http2StreamException.php": "575387649cc847357942cb653eafbbea0dff06b35ef65c12d50e8c43f543f599", + "vendor/amphp/http/src/HttpMessage.php": "cfa06785f5b02523ca36de84ff4834e2f3ffe32cea69a85639ef8c6a850af376", + "vendor/amphp/http/src/HttpRequest.php": "fe2f99f0b66c79686b1ebd4effc3c944959e87dd8ba09331bcf38ef629512e5e", + "vendor/amphp/http/src/HttpResponse.php": "c36da844f6060208a078a54b21ec592f3ba4f4012925c23c051307842347e5fb", + "vendor/amphp/http/src/HttpStatus.php": "d00a977b62b7e48666d758449b21343796d67eb716e34bbf4604f2e32a881e86", + "vendor/amphp/http/src/Internal/constants.php": "63e9578d3f63e8a06978be383779c8cfe7d674212a7f546e9475a8a506551f45", + "vendor/amphp/http/src/InvalidHeaderException.php": "b6fa9b6e91d72da5ec300b97c6512925709199510ebdacc9f788403c86acc8e4", + "vendor/amphp/http/src/functions.php": "ddc8d6e29c4225286d69c89915ab99e1c096429c34e9f6cc14d132095503dd92", + "vendor/amphp/log/.editorconfig": "671f270c30a8444d9e9925b8b1a3ae38e0550da305a70eb954328183a3572fe0", + "vendor/amphp/log/.github/workflows/ci.yml": "c522f5d107edc45cbb72979a636ed289857b4038de27b27a2c1a0186d29cb9c1", + "vendor/amphp/log/.php-cs-fixer.dist.php": "c469aab96d273faa0ed9fb763dde309b9b6c0a65146c8555a2a715e02d69fea0", + "vendor/amphp/log/LICENSE": "fc5149c45b0b34f924ad2ceee71216358599bce2e281892ef6d87fa9acd48006", + "vendor/amphp/log/README.md": "3738d25a5e5d622687057163459391639dc6eb21c755e167f5231b947b3857a7", + "vendor/amphp/log/composer-require-check.json": "99bd890a24235208affea0e3e6a81237a14136430108359bf2820e33bdc30850", + "vendor/amphp/log/composer.json": "be97fa773c66cdf15d789c17e7fa2858d3e8f106e6a4d811fe267e912fa0981f", + "vendor/amphp/log/examples/file-log.php": "ec832af21d337d9b4fdf24d88c21e1da76b12af02964c82d6d78153852938b9a", + "vendor/amphp/log/examples/hello-world.php": "3abd2c496beed65c06b213b0eb6d9ad940fcda260f1fa8249ebad32e73a32e8e", + "vendor/amphp/log/psalm.xml": "36bf514ef35f7cf8f3462a392cbcb2ef00cd34859d7f73d1ff2d649dfb160432", + "vendor/amphp/log/src/ConsoleFormatter.php": "5e49b9400f31fb625e4cfa540ea34941eeca8d0d543ce49a38863496f2ea8e2f", + "vendor/amphp/log/src/StreamHandler.php": "308240467cf97271eea57f311dcdc1eff53587dc852e4bb8927fa815d4423281", + "vendor/amphp/log/src/functions.php": "1a9b760fa59082244398709bf3bfd860d62ff4e4e5dbd44664b120843553d83a", + "vendor/amphp/mysql/.github/workflows/bootstrap.php": "d8ee330f9472a51893179dcf4b7d552fbbaef2de78c9407d86ff91a204d039bd", + "vendor/amphp/mysql/.github/workflows/ci.yml": "fd25a75af1fa06acae04ec99b16d601724b716f1865968283ce9e298862c0bc9", + "vendor/amphp/mysql/.php-cs-fixer.dist.php": "72f324e677e5328df668fc71aa7c7e71b42f431d025f7f3e0126ae9824cc0bc0", + "vendor/amphp/mysql/LICENSE": "4daf770ec2fb0eef9a9e1c2764c6cebfacafaeb13ab6cf48c1afdab27ef7a4ca", + "vendor/amphp/mysql/README.md": "1ea4718bbe3de1778f53c4e144dc5b072096cdc0444d279e975051075cbb3b82", + "vendor/amphp/mysql/benchmarks/AbstractBench.php": "e1aa0c19a6613a32ef3eae6a565bb117d1fc704fc1f804e7f24fc3b8f179fb23", + "vendor/amphp/mysql/benchmarks/QueryBench.php": "1e6ffb4d4edf9250a12f2a1090ad1ad1a16334d364f1151334e6b69e584910de", + "vendor/amphp/mysql/composer.json": "27aaa67e1ed6c96557653fafdb8ea3ed679487344ee106ca44f2f2a5d0da0588", + "vendor/amphp/mysql/examples/1-connect.php": "7325e95344baefb82c713b25f93ac8ff6d867c4847a16f369c71d550af3bd504", + "vendor/amphp/mysql/examples/2-simple-query.php": "ed9e07ca6392464ace70f70b6786e3e4dff0a8b6a8ab495d4b1e5d73c74336bc", + "vendor/amphp/mysql/examples/3-generic-with-yield.php": "23f1fecbac234411ba221f4a8bd8e959d81c90e847908a5d8cefabbe88c27770", + "vendor/amphp/mysql/examples/4-multi-rows.php": "ac5d3176560252443281c53cc9321b2f04146ccff0333ce01fb10085e3a7aadf", + "vendor/amphp/mysql/examples/5-multi-stmts.php": "fd417075ebf62a2942c2ef815c2743dc3e69b2b5322133ae6488566b9cc65374", + "vendor/amphp/mysql/examples/6-transaction.php": "7d1971805c93522b336b2d804b4e98c84e502ae3b275cb1d450b3bb5a3bf6647", + "vendor/amphp/mysql/examples/support/bootstrap.php": "cb75e989c72a9a4e6fa1d9e062802d7a5068330f5207b67bcd4e4e4143b1c026", + "vendor/amphp/mysql/examples/support/generic-table.php": "f61b67524319dd57a44d59122a93832cda2d89369d4aaad60bb5d236fbe2b669", + "vendor/amphp/mysql/phpbench.json": "df9bcb6df3547c911f1155a6a4c85b8956a8512f3d54592cdfe91f29cbce9002", + "vendor/amphp/mysql/psalm.xml": "7ab79f3012b0718a91dbfbe339016a593ada3c788c9453b33a67e0e0c0f4ac64", + "vendor/amphp/mysql/src/Internal/ConnectionProcessor.php": "e90525560a1b655042619713ed203b2ebedc6255f6e413ac00dc858cf85962da", + "vendor/amphp/mysql/src/Internal/ConnectionState.php": "fee06fbaedddb8ae294048fc59e826b1ad3c427d7bca964d945d2c49efef6ccf", + "vendor/amphp/mysql/src/Internal/MysqlCommandResult.php": "02dc71f03c80207a639148e4b411163b344c4abfbe47dee6f9015562bd57c117", + "vendor/amphp/mysql/src/Internal/MysqlConnectionMetadata.php": "5c9bf2721f8e843fbc8c72801a47d818f9a98a4ab8a479e7040484f6e1d8a277", + "vendor/amphp/mysql/src/Internal/MysqlConnectionResult.php": "cdd116c2391c2ca405288f6ead3756ecbe9852282bd0efd2ef3ad17937aad64b", + "vendor/amphp/mysql/src/Internal/MysqlConnectionStatement.php": "9aa988eb887a773ccac66739d9cdda40a6bdf7460b1b831e5a2d2c3a3ff51596", + "vendor/amphp/mysql/src/Internal/MysqlConnectionTransaction.php": "f6ffd51a292a6094182c37ff672cf666530fff6b98f9ace441399025e070cf0f", + "vendor/amphp/mysql/src/Internal/MysqlEncodedValue.php": "bfd5a7c14b4a666655102f44ae5f2e339c1d1aac2501ff433c26e8fb6b854b86", + "vendor/amphp/mysql/src/Internal/MysqlNestableExecutor.php": "349f9224b7b17e319b9bf944e2dbb26b41c222f3c3831eaab31f84c920eac9b4", + "vendor/amphp/mysql/src/Internal/MysqlNestedTransaction.php": "2a2ae0e3a4e5436ed443f68bb8ebf74c9dc8131955770d27867bf93cb4f6fb6a", + "vendor/amphp/mysql/src/Internal/MysqlPooledResult.php": "d56d801737a75ad81c83b4bb98657e79781b10491374952f39adaed899247f3c", + "vendor/amphp/mysql/src/Internal/MysqlPooledStatement.php": "0bb9590fedf71dc6bb6226709dfa2c6db1392d5afaa1e2f13560ae089fc51889", + "vendor/amphp/mysql/src/Internal/MysqlPooledTransaction.php": "19c0cf79c16537203856dbc470b3fbe6e260876e53d3305824f15375b62ace24", + "vendor/amphp/mysql/src/Internal/MysqlResultProxy.php": "1401858a73d786b97cb61a4af4e98471658c8c9a82fe83c485d3a656eb046011", + "vendor/amphp/mysql/src/Internal/MysqlResultProxyState.php": "a7953294240748ab76b4697c1dbec0f2d2fab040eba573d92187f8e05cc8de8a", + "vendor/amphp/mysql/src/Internal/MysqlStatementCreationDelegate.php": "0a969250bf8d4927da5416f56dc80f03cf1284c4cdf0d7419d82f2dce9b8e67e", + "vendor/amphp/mysql/src/Internal/MysqlStatementPool.php": "17c2b72113fee9ff44871f648973e4a78ed71a5b51916edf0bd0dc036e0d0e15", + "vendor/amphp/mysql/src/Internal/MysqlTransactionDelegate.php": "7061791453a201ce4c2caf212247d0d45c57f6d175c77ae46d38756ecfdcb8dc", + "vendor/amphp/mysql/src/Internal/PublicKeyCache.php": "adddcb2d3f4ead5c872125daf9ac2e10282d4c4e0a3886cd9127bfff462175d7", + "vendor/amphp/mysql/src/Internal/SessionStateType.php": "2a6943ffeefe9b417b9f206372e1f6e2f3f8d1b3067af61af46f171ccd6dd6e0", + "vendor/amphp/mysql/src/MysqlColumnDefinition.php": "33ee2b55c3f9cf9360b67b98548c37e30918a2930e62ef1429fc1d8e145e031f", + "vendor/amphp/mysql/src/MysqlConfig.php": "96296cb06b6c1e92789b0596cf728af38c4066abcbb44df23645d200de0e19ac", + "vendor/amphp/mysql/src/MysqlConnection.php": "b48075ccd9f1ff78ce00e77c1aadf502ea207271796a4549727088d04f17f329", + "vendor/amphp/mysql/src/MysqlConnectionPool.php": "65874da6518d99ed1840dd82e8df9b056e8758933758b22a38a9e6fcacfc9d2d", + "vendor/amphp/mysql/src/MysqlDataType.php": "17afd5e5c2ad1521652e93b86df2ac5bd47539ce458955199b492b6eaaeaf956", + "vendor/amphp/mysql/src/MysqlExecutor.php": "354c5256664d626737b3d789cf0a37f21c464bf76684a0075ee9037e08506628", + "vendor/amphp/mysql/src/MysqlLink.php": "41c025ecab9c8567fdc673f2fcd56c55ba1296e5ea01636b7c4ebddc863f8151", + "vendor/amphp/mysql/src/MysqlResult.php": "4fb2fc9a8dbb2e9e390989d987dbc34e98e889928d826361e78421c5d2d4abd4", + "vendor/amphp/mysql/src/MysqlStatement.php": "b5575c2f4490ef88b55bca8f43a4123e53e4a9a9dccc3ce44c53019b7881ffc5", + "vendor/amphp/mysql/src/MysqlTransaction.php": "5872d0834e8fde2652c7bf13b6d9e3d8cbd2097d3ada341ba770a9dc8d169d3d", + "vendor/amphp/mysql/src/SocketMysqlConnection.php": "0c5cbd239af869bf146871e68fdeb082d77562e499a718431b7067c13613ee5b", + "vendor/amphp/mysql/src/SocketMysqlConnector.php": "416f2811ce6432c2daad43b1ac76e2faa6d560572b2e0fd1cdee1c8364ffe576", + "vendor/amphp/mysql/src/functions.php": "a2edc5f74812dfda4560a171804876a548a91d5fe515fabaeac7808f0a484417", + "vendor/amphp/parallel/.php-cs-fixer.dist.php": "471c989c811a3356ce22dc6212deb1161e85f043315e558cd23d30193caa53cc", + "vendor/amphp/parallel/.valgrindrc": "ed83645aba09224d41df0665d056e98593daeef604448c84e731a413b6af6580", + "vendor/amphp/parallel/LICENSE": "93dc2b2aae85651379265cbb4906d2b054020ac9cc4ee70e5040f79751e34651", + "vendor/amphp/parallel/README.md": "cbe59ec1a4c0fb70e85cbe2cbc74018d0bd65534c4572a291e9f7537bef66b43", + "vendor/amphp/parallel/composer-require-check.json": "097dfed52774ff01100cf75af2ae408bba7d8ab42e1e5acb8cd99e2440c6fb7d", + "vendor/amphp/parallel/composer.json": "77b4a61fd842c3151bda4ca08f980d35d5866df78c7883fae611c73c7d4af81b", + "vendor/amphp/parallel/phpdoc.dist.xml": "7bf4e9fef14f72ec884712b25f0c195c7464de88f909e4206ad88d86d00c598d", + "vendor/amphp/parallel/src/Context/Context.php": "4aedf5cb3cf0ea1bc5066f44597d0198edcdf7b6a8edbd4f0d46337233e2cf85", + "vendor/amphp/parallel/src/Context/ContextException.php": "cc61fb096764771ea89083d52bafda4f7ab35535a961ecef75aa9c2a0459652f", + "vendor/amphp/parallel/src/Context/ContextFactory.php": "99da5a14e4a77d4e8c495373b585f5da73b6452e62f805d8fdc261c1871716f3", + "vendor/amphp/parallel/src/Context/ContextPanicError.php": "65afe795b3cb82de2ce9f7a53115c66c535958fe1ef776bfa8116d8e3e295d46", + "vendor/amphp/parallel/src/Context/DefaultContextFactory.php": "b23d2b0d6259d42c89857695fd3463b1d356bd80ae04df26d4f5acde5ba45e3b", + "vendor/amphp/parallel/src/Context/ForkContext.php": "872c7abd0e87e4e40c98585da5e31e2d8ccc267bf745c2b915c7ac5c53f457df", + "vendor/amphp/parallel/src/Context/ForkContextFactory.php": "57acc5db3d4ff71a774303053a4505aa987d14743595e5364fe7f4a67173000e", + "vendor/amphp/parallel/src/Context/Internal/AbstractContext.php": "20eaa1be4d020c06c3a48f1b289d14ec6bd4d49cd7519b9f66b8ca37b21d4ab1", + "vendor/amphp/parallel/src/Context/Internal/ContextChannel.php": "49f944b1e5036511011abda6cc77da0008be344e1d3106052e64772103b0ad56", + "vendor/amphp/parallel/src/Context/Internal/ContextException.php": "fd0522f80ae7ab77716914153b00f0ac1bfd79ddfd172bb591cdb47d8d4375c5", + "vendor/amphp/parallel/src/Context/Internal/ContextMessage.php": "b4a63c120b386cb14abe64fd24b79845098d888a99d57fc77492942957d9fb91", + "vendor/amphp/parallel/src/Context/Internal/ExitFailure.php": "633c314554877f39ee3d082513195bfee7a93274dd646520c765fd74691fba90", + "vendor/amphp/parallel/src/Context/Internal/ExitResult.php": "9ccf7c74972f1bae101b63463f6284cd96310b313700eb2b5522c7468bb6cf76", + "vendor/amphp/parallel/src/Context/Internal/ExitSuccess.php": "cfda5b9577c739c99bf4afbd636705b6d01a58b4441323eb7454e69615198156", + "vendor/amphp/parallel/src/Context/Internal/ParallelHub.php": "212423a2ef2f4e4186b34dfa14b4a1e558cdfd127d0cdee3d66794e825ac7e30", + "vendor/amphp/parallel/src/Context/Internal/functions.php": "abb5242f8720e8a235db5dfb01f2873bf466b82d364f33f46cba1f555d411bbb", + "vendor/amphp/parallel/src/Context/Internal/process-runner.php": "6a33eeef36b71de40deb860de9cdb3fb14fbd0d94cf7e3b7da9cfc939191854b", + "vendor/amphp/parallel/src/Context/ProcessContext.php": "aedf97731b5bd0bd725e33e7706563ce8d3c32a533a8126520edb29d954e03e9", + "vendor/amphp/parallel/src/Context/ProcessContextFactory.php": "9cbd0b17990ac24cb5383e4c95c2160cfe322bcd0fa7e34e16a9c4de966a964e", + "vendor/amphp/parallel/src/Context/StatusError.php": "e2d459dd03d98db908e9b798d3ed8e296bdbf82e7e1a72e98fb91f3176114771", + "vendor/amphp/parallel/src/Context/ThreadContext.php": "f63c8744a736e0c809da2d8db46329aa3e6e5aef8c36af8302b452d18ef80454", + "vendor/amphp/parallel/src/Context/ThreadContextFactory.php": "1479d2a990ea43bd005811147737f69b681b187b1b586c01146acf92f52faeaf", + "vendor/amphp/parallel/src/Context/functions.php": "537fcd1ad7f1bc719d31993b96bc94336e3230005a2774ea1f59fddf4f5994e0", + "vendor/amphp/parallel/src/Ipc/IpcHub.php": "ed62b8acd8e2bf4b5e171794b98da8a07928ed1e3e780c3962e725805ac5c86e", + "vendor/amphp/parallel/src/Ipc/LocalIpcHub.php": "a8262d0185fea2c533ec4caec464192902dfa63526d3ccbbd8c7c98a70d37e44", + "vendor/amphp/parallel/src/Ipc/SocketIpcHub.php": "3fdd589db431695e1ce2f2da5005fdc21763f9c36c16e6f6adf15ffb8676a39c", + "vendor/amphp/parallel/src/Ipc/functions.php": "475107b58e3109cf91935a8b993cada5279132cefaef2c1409da79e30a09c145", + "vendor/amphp/parallel/src/Worker/ContextWorkerFactory.php": "1e90cd668f2cab4bfb4806ae5b891496e650607a341ea7936a87b95b7c683875", + "vendor/amphp/parallel/src/Worker/ContextWorkerPool.php": "894c10678cada7dfbef3ee66be1f5f155729c1467422bb47eefe43e691d6b366", + "vendor/amphp/parallel/src/Worker/DelegatingWorkerPool.php": "7072a9d857c0862919531c2a98c1d2181dd46a25200cf8639b1d82867db55d87", + "vendor/amphp/parallel/src/Worker/Execution.php": "e87c057377f7cfccd9bdb2f6efb72e73bfbc3eb5f0ff6549a8d43e4a66d5464e", + "vendor/amphp/parallel/src/Worker/Internal/ContextWorker.php": "030076d8752fd0ea51e45cbf127eb557b2a429fd940f3dfe153aead49ba3c7ed", + "vendor/amphp/parallel/src/Worker/Internal/JobCancellation.php": "56ce90bed3c2ef5c387503285e7c95783444003233a0bd3c2e7a2af830aeb1f7", + "vendor/amphp/parallel/src/Worker/Internal/JobChannel.php": "34c00cadb054d819c0183aeeb2cf4006c05bdedea9944b34f2b00caa38b606d4", + "vendor/amphp/parallel/src/Worker/Internal/JobMessage.php": "c8462c6eb799929b4c428f34e30559a1f3c5b638242bc3c0c690c13f8d578390", + "vendor/amphp/parallel/src/Worker/Internal/JobPacket.php": "6c662abfd5451e5361a60ced4b81490b7b4a02bf4921345e8cbdb6b42c8cd62a", + "vendor/amphp/parallel/src/Worker/Internal/PooledWorker.php": "374d05f75eb2a35604a3b7084d4a7d204e902b2aafb36b6cbe132afc8658845c", + "vendor/amphp/parallel/src/Worker/Internal/TaskCancelled.php": "6c290bf2624df606b0894318d3de7fc5770a9c085cae7d39f6b668530e28a1cb", + "vendor/amphp/parallel/src/Worker/Internal/TaskExceptionType.php": "c4f7046a3ad981309a6f7af7be6b6476b8ac3494835c8d21443c8d88374139fc", + "vendor/amphp/parallel/src/Worker/Internal/TaskFailure.php": "4ced7439f5737f25f4a1fe078158aab980046f6d92d8f5bab1844523654831b9", + "vendor/amphp/parallel/src/Worker/Internal/TaskResult.php": "1dfef301be0d015b1e8a89991bb955ca5415419e5d8ed07f1ce0f0ffa5fe2024", + "vendor/amphp/parallel/src/Worker/Internal/TaskSubmission.php": "fdeb3bf1b0176ad1744deb0c5e326c4b6821e622d06576d1e74f7b4ced78ae25", + "vendor/amphp/parallel/src/Worker/Internal/TaskSuccess.php": "93226022202a89f2abddd005d284d37eb22d63d4e1bc40ec3c70ed707438fc99", + "vendor/amphp/parallel/src/Worker/Internal/task-runner.php": "5edcf07830bb6f19da4861b2ab6985886fd27c55936b0ca13cc5c853e8eda589", + "vendor/amphp/parallel/src/Worker/LimitedWorkerPool.php": "9c48c3bd59f869cd48df7e1572c7e010e67fcb274695d3193e6eaede3dbcb32c", + "vendor/amphp/parallel/src/Worker/Task.php": "14712c7f1386d15c8dc4b11fdc5488f6ceaaa6447c539ce4b846c4560b210634", + "vendor/amphp/parallel/src/Worker/TaskCancelledException.php": "f487cd84192e4bcbe5c357f017b09841518a318da14e7a28c120093b8789bdd1", + "vendor/amphp/parallel/src/Worker/TaskFailureError.php": "76a9cbfc05b65b7b8c20af0c3b2c9733100386488ba85f2fd05743af5a2b14d2", + "vendor/amphp/parallel/src/Worker/TaskFailureException.php": "277530a5e19a5a6f17a6b288d3329cdcfef3b2ab272c1d7bfd0cf9d0b5bffeec", + "vendor/amphp/parallel/src/Worker/TaskFailureThrowable.php": "9e2141322a65b3174154a771efeb1fc412e6715613e0f2cd21485e4a9fb6356a", + "vendor/amphp/parallel/src/Worker/Worker.php": "c9593ab565721611b0126b3ee77cf07838ae38753eaec0a589e9309db17c7dd5", + "vendor/amphp/parallel/src/Worker/WorkerException.php": "6ceadf2e6a56a39e799dad130f82b320fff19796e07902b01519001112734c56", + "vendor/amphp/parallel/src/Worker/WorkerFactory.php": "2574bcdfc7b8e34c7935e37293444ef20e074e4f8d1bd8dfcb11e4dd6ed6cb27", + "vendor/amphp/parallel/src/Worker/WorkerPool.php": "942dc616438725b756a686f89f522a94068ad8b27ffd0043f0d03b0f7afa46ab", + "vendor/amphp/parallel/src/Worker/functions.php": "29e79c38c3e56ce5d24416b5565da31f91eecd14ffb0844f48e71b7b0b1f1290", + "vendor/amphp/parser/.editorconfig": "c505dd87a78400bd38b4f457d9c5d2eb3a8d9f07ffe3c675cdcefb4ccfc98901", + "vendor/amphp/parser/.github/workflows/ci.yml": "5bb7ffdecdce395020d8d5846d17c281441b585b62ce45194029b5ae948cbee8", + "vendor/amphp/parser/.php-cs-fixer.dist.php": "5ce44edecab0341a80260246cecaef8e48690f3a1b6be2ddbe812ad05c83851e", + "vendor/amphp/parser/LICENSE": "16ac45b95d11c9e4b805ae5392d069cab777f8085779ad3869b47030ccf47734", + "vendor/amphp/parser/README.md": "5c0a07bce4fd85d7eac5f68d83bd38fcb3f3a254e302b8a8e0d45e92460affd1", + "vendor/amphp/parser/composer.json": "bad8b9dd2faefff26f36497a8470411822e5ea791925b5221e58a9d4fb746ca1", + "vendor/amphp/parser/psalm.xml": "2529e3294c0663afa1179873530156f599c02cf3c9c15fcef795d03647205d3a", + "vendor/amphp/parser/src/InvalidDelimiterError.php": "293de7140416f34652f9b19c7e437aa5a7a25b82f8517c68580fa32a318dbbe5", + "vendor/amphp/parser/src/Parser.php": "63084f6ac45d013e1271d1edbbf5bbc1942d27533386b3d83726c10c470ab386", + "vendor/amphp/pipeline/.github/dependabot.yml": "6e88c6b58f0687c7136021a6d2227a31e58a35bd78ae48ad5c619bf4cff2e309", + "vendor/amphp/pipeline/.github/workflows/ci.yml": "4804877ff9146cf97048d2a5f4293a3588f7b744f31023c676483a0852597395", + "vendor/amphp/pipeline/.php-cs-fixer.dist.php": "5ce44edecab0341a80260246cecaef8e48690f3a1b6be2ddbe812ad05c83851e", + "vendor/amphp/pipeline/LICENSE": "dd9b5da37883d21ecc6fe466ac0a4644d8caf7ea7cd5ff17f47c5f167e131091", + "vendor/amphp/pipeline/composer-require-check.json": "7e27d88847404786870ba719a60b502554589f77c922f22b9e872b2d70fcbe5e", + "vendor/amphp/pipeline/composer.json": "71ea6470e744cdab02e235e77c9ae7c41af2697b94c0d893c09aae087eb80ae9", + "vendor/amphp/pipeline/psalm.xml": "48966b84c14ab35d1b643f32918849df60b7628df7759d916fc2aed68ea88718", + "vendor/amphp/pipeline/src/ConcurrentIterator.php": "da818dbb67621e56db434a580324f540a7e95d2b34d287c50143fbf69c5fabf6", + "vendor/amphp/pipeline/src/DisposedException.php": "4c27d10d42d1db37b163a170a51ff90e4bfd026980c4556c922b6c3d58409b56", + "vendor/amphp/pipeline/src/Internal/ConcurrentArrayIterator.php": "6607bb256f0bf31d627c7fc5f5a0f7d74e937acc65c0a0507a824376bd594134", + "vendor/amphp/pipeline/src/Internal/ConcurrentChainedIterator.php": "aed315febcff2d9711a82b251da9af67a6fd7059a7b7b162e5aa66d2da723d18", + "vendor/amphp/pipeline/src/Internal/ConcurrentClosureIterator.php": "dd954fe7d6913025a995613271b29130a9ec87f7469e11043b5d1437299a5439", + "vendor/amphp/pipeline/src/Internal/ConcurrentFlatMapIterator.php": "e9c931a90cac3edcb617eaa365044041f29dfaccf4d04f4555bfdb7bf92b8163", + "vendor/amphp/pipeline/src/Internal/ConcurrentIterableIterator.php": "3dc685fae76af252067bcd67d73f60c4ec87b3d616423e39dd8e575464964d91", + "vendor/amphp/pipeline/src/Internal/ConcurrentMergedIterator.php": "0cced999ca38423aafd8083254ef2ea8c3fc53fff498dbce640cb86388af878c", + "vendor/amphp/pipeline/src/Internal/ConcurrentQueueIterator.php": "36c3b1f410de79ceb57efacfeb744c05661e3ba79fecb57366cbe56b2622ba4d", + "vendor/amphp/pipeline/src/Internal/FlatMapOperation.php": "24361078cee8ef347be0ebea645fe24901d4fbb203ffcb33c2d3019f00eadb28", + "vendor/amphp/pipeline/src/Internal/IntermediateOperation.php": "dad967605a9863d2da7817cf2c912ac93abf866514b1a55a03ec7f235d7c8750", + "vendor/amphp/pipeline/src/Internal/QueueState.php": "3a501f439ae5524768e5c8b0bc2b85a91714a47e87e5ed5f3fdf1a7092c5ce17", + "vendor/amphp/pipeline/src/Internal/Sequence.php": "26483a81d17264fe3e1dd102c3ff441cc1becee99c46ded4ec05dc68a23faf77", + "vendor/amphp/pipeline/src/Internal/SortOperation.php": "b86333ed0eda65ad5654e4d81976e4305d7d790dcb053c8054e8a761a95b020a", + "vendor/amphp/pipeline/src/Pipeline.php": "180f0ea53e6526aecf19addbce05d11f458fa2f09dc396aa0253f60ab570f99e", + "vendor/amphp/pipeline/src/Queue.php": "d6a821c709ebc403ff60d14507259068141bd09b8c16478271c7eaee068077bb", + "vendor/amphp/postgres/.github/workflows/ci.yml": "f3fc2152ed8997b0e2891726d4489c0ba963fc0a3d5c181016f80c02a449ac94", + "vendor/amphp/postgres/.php-cs-fixer.dist.php": "4e2c3fd1f0d253b43b685fdad9e5cf68eebed9d2e115ad1e096faf7b18f159c1", + "vendor/amphp/postgres/LICENSE": "4832233a325492ffa9dc1cb5c654a53e69c00adaec7f45d50a896d9d9c77a9df", + "vendor/amphp/postgres/README.md": "372217496287c9fc2818ec8f0dfe7453c55053ad1d3529418e463ed48ab9c2af", + "vendor/amphp/postgres/composer.json": "e734389b84ece88ff26bc47686cd0b782facd7adfdc3aaef0e045ca94c98752d", + "vendor/amphp/postgres/examples/1-basic.php": "32a3192a073acef256fc2da262fcaef5464483560a343e206ba2c288b8320096", + "vendor/amphp/postgres/examples/2-transaction.php": "a806a567715394703b25d79ae794ab51ad15b2149a46959807e2b16f4c872595", + "vendor/amphp/postgres/examples/3-listen.php": "ee523f665593b9fb636fc8833cc07c59e610c934e7006a0a87b6f5bccb7b5b57", + "vendor/amphp/postgres/examples/4-multi-listen.php": "ba8f0d154f0336a06170fcbea3a088105877f50353bc54fb8653f1515be024b4", + "vendor/amphp/postgres/examples/5-bytea.php": "0df9065e47cf81a68e43cff289e7752dfb15dab531a19719fdf4a4cf8ab7b918", + "vendor/amphp/postgres/psalm.xml": "f3e895e55a2dbd85c90524ea55d30c24e2faa565b5e5783db1ebfa26f826d711", + "vendor/amphp/postgres/src/DefaultPostgresConnector.php": "e4fe613146fb4936d27a49898eae41087f6152b6dfced5cce12048a313a48cf2", + "vendor/amphp/postgres/src/Internal/AbstractHandle.php": "59be029fb60d3f21494c74ec1075fbdf5c0221e7fdfe07d1899619d600afa468", + "vendor/amphp/postgres/src/Internal/ArrayParser.php": "65ee03a24245ccd1b6c163ca6bb997bd64f7aed1d357fb0528db2db987d637ff", + "vendor/amphp/postgres/src/Internal/PgSqlHandle.php": "f1f0d086bc9671d267ce079ae3d5ef3b8c188a1003603528d1437a4fdc938c99", + "vendor/amphp/postgres/src/Internal/PgSqlResultIterator.php": "350d8ff5deb0d6344eb8bc3443fecc6c22eeada6a03fa4c0c849c8816a139e9b", + "vendor/amphp/postgres/src/Internal/PgSqlResultSet.php": "8f0850091fae7246f27630bb563544c8347c83c6904ef4c89b4b73bf7da992c1", + "vendor/amphp/postgres/src/Internal/PgSqlType.php": "66efd4cd265f78ce141f379e64ad5f48e5a168bd881e43de01150136a570b259", + "vendor/amphp/postgres/src/Internal/PostgresCommandResult.php": "4ec7c389f00d848711f1de26793355a946a007e24a7a62f6593e16108d77a0a7", + "vendor/amphp/postgres/src/Internal/PostgresConnectionListener.php": "f8b7fafe6300cb83e6efbc8331dd473fbef0854b4732f9718cff5cec4ec0225f", + "vendor/amphp/postgres/src/Internal/PostgresConnectionStatement.php": "33bc8b7dba2210439f07ceef62b3b80f5c79764a7840e12edba567eaddf9e4dd", + "vendor/amphp/postgres/src/Internal/PostgresConnectionTransaction.php": "417d5f97826eda1e6e82984e18e9a9c1343bf392eae901eb6d35839ea9815f32", + "vendor/amphp/postgres/src/Internal/PostgresHandle.php": "f06b28893f8eb5b363b42a98fb6f03c78413a6c86b456c42015cf8fb31711f81", + "vendor/amphp/postgres/src/Internal/PostgresHandleConnection.php": "3490a0a5abc96493261a81ab8e73ad3063b08f36eda0b222ee453f2300a30fa6", + "vendor/amphp/postgres/src/Internal/PostgresNestedTransaction.php": "eb534091946957b0c4e444ccd9b17ee9890c815d77a28d2611d8e92e16da3b49", + "vendor/amphp/postgres/src/Internal/PostgresPooledListener.php": "cde8d76620f71bdf223e9898c54a8acf23c7311df84a7f5c6f3fdd4e2e5dd2f0", + "vendor/amphp/postgres/src/Internal/PostgresPooledResult.php": "b7efc1997dbb1f4dcaa33d7191eed257db7f698bdac636451a0d805c0db3845a", + "vendor/amphp/postgres/src/Internal/PostgresPooledStatement.php": "9ecd9855ec8d93cf12edb5394361ef6e5a704b62f13711a28c1ca9803238f349", + "vendor/amphp/postgres/src/Internal/PostgresPooledTransaction.php": "43f9413ac9850b436e530a7db925ebb6548e786820abfcd1fc97d07c16cdbf6b", + "vendor/amphp/postgres/src/Internal/PostgresStatementPool.php": "ec698527242f9cd5a5f58a08f9543037b408a95b20cb79a19b9c98e9fad7f265", + "vendor/amphp/postgres/src/Internal/PostgresTransactionDelegate.php": "50e8724a2b72ca9fba764a74a5f12ac00d093a54cd4c2b175a4277f5db85a510", + "vendor/amphp/postgres/src/Internal/PqBufferedResultSet.php": "72d5f51dc63e3a6afa3abc6e42163ed65d3bd965ae6ef9b7588879b584d35a6b", + "vendor/amphp/postgres/src/Internal/PqHandle.php": "54487c6b76249a6a3f2cd9a3b8520cfd9f5ecf36e017b7a244e965a5a1221f5a", + "vendor/amphp/postgres/src/Internal/PqUnbufferedResultSet.php": "eae425708304e0127983d6eadec1fe7046594fcd15289e7104009cddf789f1bf", + "vendor/amphp/postgres/src/Internal/StatementStorage.php": "48a2639085c11ddc268448af55caad5bb0e0e97429ed25af13d5c81d543e0aad", + "vendor/amphp/postgres/src/Internal/functions.php": "b66f478cc6bdb8138be6ef4eead7b623ebe7dc33df93902d9bb1835255b69aa8", + "vendor/amphp/postgres/src/PgSqlConnection.php": "b58f9b0a8b4e8454a882e1ab3ed06785061f4af4abefc7ec643fb5c16f7373f7", + "vendor/amphp/postgres/src/PostgresArray.php": "15f19d5fc33a5fcfbcb674c26063224c1cd8af447bce9bf776ab40bf8385f06f", + "vendor/amphp/postgres/src/PostgresByteA.php": "867f6913c0cfe2e48e4d14c19c2382dd8eb6893a7790688df7f5840a34996b64", + "vendor/amphp/postgres/src/PostgresConfig.php": "f591fb44fdec19613e51a79ceb73f7128bd081477f46d9290d73654044d95d02", + "vendor/amphp/postgres/src/PostgresConnection.php": "3164c9cbb47d91f7a2a80b7d939f6d7f7111c74d3d2a643f1d6fcb01bb3d6497", + "vendor/amphp/postgres/src/PostgresConnectionPool.php": "991ce5cbb0c57187c3c2f7ab15d10658580b71e30a2afffcd37e71e5526ac57e", + "vendor/amphp/postgres/src/PostgresExecutor.php": "10f57e1133b3f514e9fbc7eddfcae68b2cf956850d75431ed460cc0298542313", + "vendor/amphp/postgres/src/PostgresLink.php": "7a2bd8f88b7b20c5cdbfa454b243a18099c6b1587cbd12dae14779a5fa2d39cf", + "vendor/amphp/postgres/src/PostgresListener.php": "7f681691af452f445afaf617db82dcf0b2337683636f6365c9c74f84be5c8e54", + "vendor/amphp/postgres/src/PostgresNotification.php": "cae580e8585c80f14d8e25393237c4c6f7271ff3e9ba6f96e0814268d8e99609", + "vendor/amphp/postgres/src/PostgresParseException.php": "5b1acbbed6e227c902550debc1477ef8ca7a849b9676fcb14373f460f4e8a916", + "vendor/amphp/postgres/src/PostgresQueryError.php": "2ae6d3c836ef37cc960836e3022dcd27a762cd07f15512a5f2091f3d7041d566", + "vendor/amphp/postgres/src/PostgresResult.php": "b9ee20286b821c787428bb45850edb6ab63b09c929d34a8d3e3c96b36a5ae24e", + "vendor/amphp/postgres/src/PostgresStatement.php": "c00323acefd6ecc27348a9a8c077f5a0f9b54bc41bba09f2fdd131695a5e4614", + "vendor/amphp/postgres/src/PostgresTransaction.php": "851626184fd197a1f6fd1210edd311b4814ceb0891a298412bf34bb0af8d7019", + "vendor/amphp/postgres/src/PqConnection.php": "e4a03b84f0473dd5e69c5c2ff121f788e220ba12dc0838858260dd5062d65442", + "vendor/amphp/postgres/src/functions.php": "18ca8cb08024510ccd3c9e90bce3e03e19af373b4625c99850d94ac7e35b80d0", + "vendor/amphp/process/.github/dependabot.yml": "6e88c6b58f0687c7136021a6d2227a31e58a35bd78ae48ad5c619bf4cff2e309", + "vendor/amphp/process/.github/workflows/ci.yml": "3e3e9afd3256170474a8c0561217976f5cb7d64f815c8f6f9eb47f1d94c0554b", + "vendor/amphp/process/LICENSE": "5b8738686f873967502b48ff6b52d03a2065ea124146d4db7688ff469873b373", + "vendor/amphp/process/README.md": "3d141f3ac85988a5722b218fee0b9cddac24aad20cf453bd469868725c389fce", + "vendor/amphp/process/bin/windows/ProcessWrapper.exe": "5b6e66912c92e40ecfb6ac391a2595fa2a8d8e4f93a911c7ae0248aa14ec047d", + "vendor/amphp/process/bin/windows/ProcessWrapper64.exe": "1b7c6db9c3dae3073335433e1c3f913b80ac76109b869420e1332652b0c461a2", + "vendor/amphp/process/composer-require-check.json": "b061500858555c47ff47eeae35761abf6b176ac1e7598beddb99e45b21051428", + "vendor/amphp/process/composer.json": "1c888052d7e69de87034648fb56d00e4fa5a80ddbf0889bceab40e6964e4a38b", + "vendor/amphp/process/psalm.xml": "615edbcd0336788a70d1d7728c85cefaa6f1d2d9a429213baf50f749b954e915", + "vendor/amphp/process/src/Internal/Posix/PosixHandle.php": "409427c77b607c72af988970bc07bf66c6ba4f07dbe7130f65a31928c49a2da2", + "vendor/amphp/process/src/Internal/Posix/PosixRunner.php": "9fe8eda185e3cecd8e730c8c964ae89dd31c06859b835104916915d13a270ed3", + "vendor/amphp/process/src/Internal/ProcHolder.php": "7770b69a74f59747fd1566aa557e08d2cdebffc9449a4a36eada8dae5d9a784f", + "vendor/amphp/process/src/Internal/ProcessContext.php": "ab8defce5c0a9a2ceb338277bab6173b01482e2652ea9e8d0281f103c0baf993", + "vendor/amphp/process/src/Internal/ProcessHandle.php": "cd022f9106a08c15b9d07a31ce74f98962dc3c89f4a7ed16367523089b9f2079", + "vendor/amphp/process/src/Internal/ProcessRunner.php": "0a9d9ee576b05f386cf426b9045077aa763119800918533419aec9c04901cacd", + "vendor/amphp/process/src/Internal/ProcessStatus.php": "259ecbaa64a2f0dd9b68def2a4589da12792f25615fe803c67be7148ef5630a8", + "vendor/amphp/process/src/Internal/ProcessStreams.php": "b65519c35a1edd22e3bb11dadc61230aac6adf95d3d7522ab700afb2bbeadbd7", + "vendor/amphp/process/src/Internal/Windows/HandshakeException.php": "af91615b44abe0d6fd95673d3a0411f4d78c05eb5179749ba7998c98c87308f3", + "vendor/amphp/process/src/Internal/Windows/HandshakeStatus.php": "fc2f734715f298021772c50f1ced5ce74ce8291e6bc9e48a4e42d096ab2d05d9", + "vendor/amphp/process/src/Internal/Windows/SignalCode.php": "a9ae24ec0ccf8f68d78fc956c152d1c073c6fda5ebe3c203831ca6ed36221aa0", + "vendor/amphp/process/src/Internal/Windows/SocketConnector.php": "57e758aed11be151062f2df4ded6c69dd52ecb61419bcc3c9a80b125aa8d88b5", + "vendor/amphp/process/src/Internal/Windows/WindowsHandle.php": "e0af6d1b74990c48e40d514dcae66eac9398904d1964841e5d90463384903301", + "vendor/amphp/process/src/Internal/Windows/WindowsRunner.php": "16fc26529020d0d702e168a964571f6b56f0ef2a4527876cae9783c46e4cfbb6", + "vendor/amphp/process/src/Process.php": "a4271109e400e0ebc4cd512eeb4a4921c2f311c810df16df64b7f471671d602d", + "vendor/amphp/process/src/ProcessException.php": "c2e91647ce25e8c6221102fe1d045d743a6651e7816501ae34f4c870ebc77b4e", + "vendor/amphp/process/src/functions.php": "a4aaa06af5c5151e0455735d710c271a62ec98adf1ad88b30df2d2224329c0d6", + "vendor/amphp/redis/.github/workflows/ci.yml": "ce19488bd86c5662beb6e9f1488f1ee75af2affce78cee33438ca9b7d74bdfeb", + "vendor/amphp/redis/LICENSE": "93dc2b2aae85651379265cbb4906d2b054020ac9cc4ee70e5040f79751e34651", + "vendor/amphp/redis/composer-require-check.json": "3647431132a70a60064830cecda6ff51ec36dc57219f8296dde4d84f6f684758", + "vendor/amphp/redis/composer.json": "8540d1149f1911ff7f916f7331c211daf7d9bfa3d94789fb70170376d08505e1", + "vendor/amphp/redis/psalm.xml": "cb403c2ef67bb4ef66473f909c9c307f80023638588515204ef6c2144e0f8457", + "vendor/amphp/redis/src/Command/Boundary/LexBoundary.php": "bee1550612e528e0000e674b80b1304a99df94f7337a355041454566c71ecef2", + "vendor/amphp/redis/src/Command/Boundary/ScoreBoundary.php": "a9840212ba7bb0aaf2e05e05b5776e61a839c701dcf0be2bb2f560cb686d0ae4", + "vendor/amphp/redis/src/Command/Option/RangeOptions.php": "47e38b6534f1fa6c5ccfea91f95a4173e0d6df3e6207a88e498c2ea15206d397", + "vendor/amphp/redis/src/Command/Option/SetOptions.php": "6375dec982b2c8338588070474eb77275d73bbec39bdbf608d004913dd88373d", + "vendor/amphp/redis/src/Command/Option/SortOptions.php": "3a28bf3522d9f937c1ef9e7076ca71239d0156bf96bf990f4722e41765303b48", + "vendor/amphp/redis/src/Command/RedisHyperLogLog.php": "930ea381c9dcf7218a00cea05309b675c3a12a3f190d17f910f2260a4742c552", + "vendor/amphp/redis/src/Command/RedisList.php": "f0a2405c95a7909cab44fd0c1848dd5291f60561fadedee5e34b5cdf78976ce9", + "vendor/amphp/redis/src/Command/RedisMap.php": "6b3ebc7d6a2d1c4fae8d386cce34a9d4848e2f74cdaa78ee06fb655b158fb0d5", + "vendor/amphp/redis/src/Command/RedisSet.php": "db3fecbce65adc2b6624bdacacd9b213d81c0876bc901708cd966dee3c271889", + "vendor/amphp/redis/src/Command/RedisSortedSet.php": "c1f60ab96ff455861ee2f6b64364e6b2c3ccb688fed934dc3ef4b6964d81db4f", + "vendor/amphp/redis/src/Connection/Authenticator.php": "c4aff2f7a1ef7acda32e298f812fd361aa5e5baf13f1c194a45b5d15d44bbe99", + "vendor/amphp/redis/src/Connection/DatabaseSelector.php": "802413752f1275f0400c5fc7bd40a9353f021ed60b879e59f652dab77dfea61d", + "vendor/amphp/redis/src/Connection/ReconnectingRedisLink.php": "e56134f83f7a99d8f5e408c6262b7bfd1262a1643d6a253ee3ea6b76650cfc19", + "vendor/amphp/redis/src/Connection/RedisConnection.php": "341b2e217b0b1e1793f85a382414ed4e537e6118e17170fb126eb65958a02817", + "vendor/amphp/redis/src/Connection/RedisConnectionException.php": "0d4bcc78186816e4f91e8312b064320840be2033313ee50779caab078beb9e8a", + "vendor/amphp/redis/src/Connection/RedisConnector.php": "0f5d9383b7c3be1efef019ee5b038bbf1ff0c92cb068770de6283887d951cc51", + "vendor/amphp/redis/src/Connection/RedisLink.php": "cf52a4593845d4745455ca3962d27c98930c5704a4b00563ba5bc6b985b3518e", + "vendor/amphp/redis/src/Connection/SocketRedisConnection.php": "fe111c2e00da19e6d173dc05132456e26f4f42df85fb556e4b254350bb304564", + "vendor/amphp/redis/src/Connection/SocketRedisConnector.php": "921ff311ba33edd30cd8ad3589eb4fd5784c943cc1de6fcf051166ffe6ad7c8b", + "vendor/amphp/redis/src/Internal/functions.php": "55019964314610641b985aba628f5c5f433fafd815c455b323a1b8c520c7800f", + "vendor/amphp/redis/src/Protocol/ProtocolException.php": "e90c409291f92142d234da6b7d98aa4d38b5082bd99319206912fc7e3daf98b7", + "vendor/amphp/redis/src/Protocol/QueryException.php": "e7d339a02b52fa536c43b61cac4efaf9efdc29c5d93314de640a5c9a73d1dc03", + "vendor/amphp/redis/src/Protocol/RedisError.php": "12a33368941e1d4244664d1ba0af304df087db141b03a25d397580af1345a967", + "vendor/amphp/redis/src/Protocol/RedisResponse.php": "709a4a05ef6c42a619e4a7d9e2df704ba7de3d47db9960dbd7ca389dd1300233", + "vendor/amphp/redis/src/Protocol/RedisValue.php": "5aabbee18d71ab8324a3a5f3d347ceecc7bdf5de3a252b9ab8712c2fe3b0a4e9", + "vendor/amphp/redis/src/Protocol/RespParser.php": "b859ae2520eeccaa952b91c01d28da4533e3d9853728abacd6d6ba7bf1434a80", + "vendor/amphp/redis/src/RedisCache.php": "7d65095ff554e00612190ef890d13dd2792e58b9c286cddbf3cfbcc3afed29b7", + "vendor/amphp/redis/src/RedisClient.php": "3d22a15d7a5dfb82bf249ac527158b14d9b843ea647e30f23e9285affaa5122c", + "vendor/amphp/redis/src/RedisConfig.php": "b2ca3cae3e699eb18eb6b2579d89463dd2f83ab4ed250a6dc3307ccce3f2c295", + "vendor/amphp/redis/src/RedisException.php": "9ac3f87efa7077e993c2df4e66c7d9d0be6d6feac3e183af4af6a59c3f31d757", + "vendor/amphp/redis/src/RedisSubscriber.php": "3372f2367fcbfea6441dea1bc1e411aa072eff6f6d7402709300feb75127a095", + "vendor/amphp/redis/src/RedisSubscription.php": "a3baade4752621430ae23b0f9d28dad963b1344bcdd76eff9206460f23d0f7ff", + "vendor/amphp/redis/src/Sync/RedisMutex.php": "002dc05b5a96de697baaaa8d4bf42df485aea5b62d0a41b7368c71fb523f1f3d", + "vendor/amphp/redis/src/Sync/RedisMutexException.php": "0c979665387f2c431f11f44c04a4c0b1f88933e739105701a9627c12c273b2ef", + "vendor/amphp/redis/src/Sync/RedisMutexOptions.php": "fba0961b65eab7905cce3a9ac8fcc7da06eb064cf0897afb6999301506c93d4c", + "vendor/amphp/redis/src/Sync/RedisParcel.php": "61b2ad0d54ce683ffbe777db768415da8ed0bce9601c63e49f68b4c43fd0d5c9", + "vendor/amphp/redis/src/functions.php": "e89f40b167675d8cae07279ff3d2c804211afc4267fd93756d0fab57e53c231f", + "vendor/amphp/serialization/.php-cs-fixer.dist.php": "72f324e677e5328df668fc71aa7c7e71b42f431d025f7f3e0126ae9824cc0bc0", + "vendor/amphp/serialization/LICENSE": "9cbfa9126ef8d331fdada832a7f7048fbd9723870ad79844f2e38b56398c3662", + "vendor/amphp/serialization/README.md": "07437b3c7f1df6d6e7b9e3bbcff4088ce8291a54fcc140a7f19f2a889331e53c", + "vendor/amphp/serialization/composer.json": "aa451393d3225e4616ee4e43316490b162c5a056ec59258111ff3b21a60be694", + "vendor/amphp/serialization/psalm.xml": "33b0e5ab66798537d6b5941412e89683315e0de4c83d91462489e7dd2f29cedb", + "vendor/amphp/serialization/src/CompressingSerializer.php": "66b91f6806dc29ef50315dd5a039fad62ff2bdc1d4c098b6aeeac7bf5fd01e88", + "vendor/amphp/serialization/src/JsonSerializer.php": "9a986e2833b07dfee6cea80438e175fdeae178ff77f9da84df490a3d008cb614", + "vendor/amphp/serialization/src/NativeSerializer.php": "e245a0d2377b4f31ff1752d4c27209af3468d57ecfcc46ea53c467b242fac12f", + "vendor/amphp/serialization/src/PassthroughSerializer.php": "3d2df5ce4fb16b8a48bf3a51212b8b26c8af9df211ccf47c98fffc562e600872", + "vendor/amphp/serialization/src/SerializationException.php": "57a595b58387c117c23b19fae3ea66678fed21bf9eb9283ec2289f02181fd08f", + "vendor/amphp/serialization/src/Serializer.php": "3b509a046ab0c3ccc26d49476e81eaea1f459843bc10baa59329ef78cf42e99a", + "vendor/amphp/serialization/src/functions.php": "daadb074093333d4d06486a0af52126299ff6a775f070b7bf828fdb9be3ed3e8", + "vendor/amphp/socket/.github/workflows/ci.yml": "4c1a71669137877ae92e1f2d2c4e3926f7a70754878334bb57052ede4bc899b8", + "vendor/amphp/socket/.php-cs-fixer.dist.php": "471c989c811a3356ce22dc6212deb1161e85f043315e558cd23d30193caa53cc", + "vendor/amphp/socket/LICENSE": "75ff14768ed3b0898ea24b8ff76e9615c21d1d4e6f7ba1d258cc55cb9689ca73", + "vendor/amphp/socket/README.md": "76a11e81ca26e65da08b27b512cdc0e6e4776dbb163e5b5b469a503db62ed819", + "vendor/amphp/socket/composer-require-check.json": "1490118df06a0394fae8c7cf92698fbecc67d7629b77973b8cf8c6d14c6175d0", + "vendor/amphp/socket/composer.json": "e6346cb7e5528674d6a11e47a216d879f6dba5404498384636ee68492c996a77", + "vendor/amphp/socket/psalm.xml": "0e7922c2bf8907d460f4f8ef2c43ec0ae936a3b5b4db761ebf0124231df568c2", + "vendor/amphp/socket/src/BindContext.php": "df950b39c46a0930509694d39ef825dde1b2fec47ee9efa80d3ef1ce900ed0d6", + "vendor/amphp/socket/src/Certificate.php": "ba8135e687abf0513c5282c17cd366a0843366399e18ff25e94a2177cca7e5a2", + "vendor/amphp/socket/src/CidrMatcher.php": "42d79cea9d12e31805a5bb85764aad890b176bc9d5915afda947d8dd555c5abc", + "vendor/amphp/socket/src/ClientTlsContext.php": "8d7b60d726b81e8bd1f179750e2b75ce3f4321d79daf7f357b2663928972062f", + "vendor/amphp/socket/src/ConnectContext.php": "ad4319b9e3869e9a46b39908b2a4544e28ce6d060641bf6d43416478f46e4130", + "vendor/amphp/socket/src/ConnectException.php": "ba7e9359d5c05c04c7043033f07bd59d353db91eea3fa86afc43b747a393fa8c", + "vendor/amphp/socket/src/DnsSocketConnector.php": "8ce5b47d40ba846d48be976b8d6dcadf423536abb36fdf2739d10bdcddaaff7d", + "vendor/amphp/socket/src/Internal/functions.php": "c93698787a8fbafa5839860448d9a366fb850272b252636bd3745e01c3c777c0", + "vendor/amphp/socket/src/InternetAddress.php": "ef707bfc51cee0c1a3ebccd35495a25ade578b204cb78a709029b7be4cb7a472", + "vendor/amphp/socket/src/InternetAddressVersion.php": "9cea26b649156490bbba7d366caa5d820b45e511137c66ae8bfa6dfec87f315c", + "vendor/amphp/socket/src/PendingAcceptError.php": "91de35f68f361a684a7536687baa3f0ef94061fdce6e57ffb781c1d545ae85ae", + "vendor/amphp/socket/src/PendingReceiveError.php": "2515c51e75f5414e352660ab1fa58781f060ee129ccd29e037a1da56cd14c708", + "vendor/amphp/socket/src/ResourceServerSocket.php": "0978c8163b5a0a62c0021de1ebe18fbf7e947cc13f34d2a25c237f337030bcdd", + "vendor/amphp/socket/src/ResourceServerSocketFactory.php": "755ec24484ee5c21b5d345545e2285b5a04692df46b3f5b77706205efe78719c", + "vendor/amphp/socket/src/ResourceSocket.php": "d1ee2731f707181b4c55e66958070ff534e39b57b12a3f74c0de671f82331dbd", + "vendor/amphp/socket/src/ResourceUdpSocket.php": "bd520a6a05162448a9b9ea6cf492b8af3e603223e2810780f53c74e707b97ff9", + "vendor/amphp/socket/src/RetrySocketConnector.php": "7f713ec8a5b197a42972b31403264407732e5801d04369fb06771d2068974aeb", + "vendor/amphp/socket/src/ServerSocket.php": "8b15503dcdbc080df155621c2573678b0cd87373af6d6a2e157501c951383715", + "vendor/amphp/socket/src/ServerSocketFactory.php": "82930c4f88bbd2005e0426f58e821cd75dd70ec5a98e90c8890a6d0395e40ef7", + "vendor/amphp/socket/src/ServerTlsContext.php": "85b7303f9ccd2b6ab4e39ee469f5f9086d43edeaabd016a9b129a04118ec1ecc", + "vendor/amphp/socket/src/Socket.php": "3f0370fc8fd1a1f545ccee7a40b5d3f95c4efe3a092da95d5a20dd1edb093ce7", + "vendor/amphp/socket/src/SocketAddress.php": "6874e8a0b7acd95dc581c61b184f665b4276510490b31701abfc9d83db4e26ca", + "vendor/amphp/socket/src/SocketAddress/functions.php": "d091a920f76ab1e55e06bf1a677f38baf011d89fe8f954ed899bde60c592e626", + "vendor/amphp/socket/src/SocketAddressType.php": "6bfd97ceb2f238310626b1544bc0ad22a5ac492fe4c80df3be767ea76573669d", + "vendor/amphp/socket/src/SocketConnector.php": "0d66ed410fec7aae9740fe8eb75cad01e025dc5bd108cf46e1ae7b9f6aebf746", + "vendor/amphp/socket/src/SocketException.php": "0775f935deacf83aeccc22e1608a564c6fee31c81cf882f7d78951062e8b2db7", + "vendor/amphp/socket/src/SocketPool.php": "d2191670571ec9ce0080cc46717fee5935acf644de3fb6474f768a77f0958093", + "vendor/amphp/socket/src/Socks5SocketConnector.php": "f6ecf99b094351a847c6241c35ea678a6d48975544650eb37a96352d6b3d97c9", + "vendor/amphp/socket/src/StaticSocketConnector.php": "6e4a510b2a84ed06af0c98ee71c93a67e0e554f66fc1494433947a187bd312be", + "vendor/amphp/socket/src/TlsException.php": "533c68b17bd6b178d0c6726e24c46d90777ab8306ec0f476914a6f51e860a07b", + "vendor/amphp/socket/src/TlsInfo.php": "50acdb11bb6e83fdd52ccb39d9ae90ea8ba79a5bcbf8fc353632490be63b0839", + "vendor/amphp/socket/src/TlsState.php": "573bd8350ab1645655f676b0821027fb4adc76995b4f731c17ec34a34100072f", + "vendor/amphp/socket/src/UdpSocket.php": "7d85269d7b7ca58f1f2d5443edd58e957f43698115350f0b95a51abacc2af9e4", + "vendor/amphp/socket/src/UnixAddress.php": "42375396cc10a1b5869229fc846607d71260e2f3548bbf75ed83f27f2035e5bd", + "vendor/amphp/socket/src/UnlimitedSocketPool.php": "39825227eac72080df4af094c56948c8c6a4ca2927e0c049d9ba1bff30479b8a", + "vendor/amphp/socket/src/functions.php": "774e76f324fe0d4528f1bf89e1a39505aa313f47684cfb7c9d28b2f8b1e6b838", + "vendor/amphp/sql-common/.github/workflows/ci.yml": "14b97bc8bba10a22219deec4045713d35b3c663da00d8978da5ccb1b40efbda3", + "vendor/amphp/sql-common/.gitignore": "1609afa08b8d342c7fd86b92cb8e715ef0accb8ca88265701b4a7435c578f1a1", + "vendor/amphp/sql-common/.php-cs-fixer.dist.php": "72f324e677e5328df668fc71aa7c7e71b42f431d025f7f3e0126ae9824cc0bc0", + "vendor/amphp/sql-common/LICENSE": "d1224ddb6b3741731e97eb3a734cd157a6da4b050e2a3d700ad68a9bf2407e16", + "vendor/amphp/sql-common/README.md": "b2e3097f45f26591f827a5bb123ea50cbe142447cb504deb3afc80601c677651", + "vendor/amphp/sql-common/composer.json": "857b55e2467f8eae8c4e15f69579d3e9cbc3a192e4961875718266bce2a63ca0", + "vendor/amphp/sql-common/phpunit.xml.dist": "4060dbd83908ad35b20ef761ed9c604277e2145f637ef02585fc6311475fb604", + "vendor/amphp/sql-common/psalm.xml": "57e227983fcd1d809aa66e2c86a7d7e37d6bd51edef1308db9d53670aa0bca46", + "vendor/amphp/sql-common/src/RetrySqlConnector.php": "6f91bcc1bdb38a7bf69384adb0c9001d8d449ed4c998d4edbd9a45b154af3521", + "vendor/amphp/sql-common/src/SqlCommandResult.php": "6194a317c6439eddabc491be80e1e2d7318179260a2edd3cf590abac32f0c930", + "vendor/amphp/sql-common/src/SqlCommonConnectionPool.php": "1e36f58d6cc6256c642ce5b7b4432b366131dbe193ed6331e001fc9901f11fff", + "vendor/amphp/sql-common/src/SqlConnectionTransaction.php": "c9bee46ff824036cff73f21912ff7535ae5e6d79307b0eb6196e18545d59829a", + "vendor/amphp/sql-common/src/SqlNestableTransactionExecutor.php": "02314176147494c75951dfd34c22d036f8bbb7ede183a1acb2a8fc6cbe9fbf7f", + "vendor/amphp/sql-common/src/SqlNestedTransaction.php": "20bfb9eedcac6e747ca0f02bd4aedad9c01a8182a10fe911214c8eb9f0c28f3b", + "vendor/amphp/sql-common/src/SqlPooledResult.php": "5ccce98bcbe3a32f38e8be4ae53de7c2593045cce359c58da69f05ac8f7de19e", + "vendor/amphp/sql-common/src/SqlPooledStatement.php": "7ddb4cc2e23496a5addc9a423c207f150940928a0bcda8bd352e05ace6b94e69", + "vendor/amphp/sql-common/src/SqlPooledTransaction.php": "69aea4462678da7a6fec8248a5b5ba33a28061b4837daed0ff7bcca8b0fafd72", + "vendor/amphp/sql-common/src/SqlStatementPool.php": "65ebaed5387dad18ada3047ccd3f0e78273f0395670209bc526f3b2bd72d14a8", + "vendor/amphp/sql-common/test/RetrySqlConnectorTest.php": "5692c12c8bb10c706cdf84534a7741fd9bec08acdeaa0e88fb753361c171b48a", + "vendor/amphp/sql-common/test/SqlCommonConnectionPoolTest.php": "bdde704cd3aa9ee155a8b0e4999787bdee06f4a21bb2ce93e18ef539a08b4abe", + "vendor/amphp/sql-common/test/SqlPooledResultTest.php": "d2b54ce7b7157913b1a3b11769aadfa2707a42de04cb8b175dfa517691df328c", + "vendor/amphp/sql-common/test/SqlStatementPoolTest.php": "6fbac30a5eb41aba569f01a140085bb4f5c48a4b40cb04a770128b9d1d7f9381", + "vendor/amphp/sql-common/test/Stub/StubSqlPooledResult.php": "acd9c0455470066b927e4b7bd79e23779bb37c38b0617dd265a5307e80801ab4", + "vendor/amphp/sql-common/test/Stub/StubSqlResult.php": "ba1becc59b8d9af5609aec851d3578c8450b2e8caad0444970e32f8c4bb14122", + "vendor/amphp/sql/.github/workflows/ci.yml": "85f1e6d4f07463ce8dc56692f3256e48379edd00024dc51719d43ecd6f5badef", + "vendor/amphp/sql/.gitignore": "ef2b80a00f4cdf8ca35424aa058ff5d835ca106dcc7fd12de4738db9e10ad8bc", + "vendor/amphp/sql/.php-cs-fixer.dist.php": "72f324e677e5328df668fc71aa7c7e71b42f431d025f7f3e0126ae9824cc0bc0", + "vendor/amphp/sql/.php_cs": "ffc00778467991d3476ca0773768891f77d47d5ea8d34d93aac7776611680a27", + "vendor/amphp/sql/LICENSE": "d1224ddb6b3741731e97eb3a734cd157a6da4b050e2a3d700ad68a9bf2407e16", + "vendor/amphp/sql/README.md": "dba8f0cf0a9fa92730b60d4d59b6d1a1c7c8df56764c6b16a2ec5b28d2d579b5", + "vendor/amphp/sql/composer.json": "c0a73ba7b2764a0cfd90459e957b594c6e8fa62e3e2f38087691f614a6683d8f", + "vendor/amphp/sql/phpunit.xml.dist": "ec303239253b9fde72cebac20581df41b13bf592f1438b9448a2ec8355474afb", + "vendor/amphp/sql/psalm.xml": "fbf701740a4e50c9bddeff31429bb73d924fa3deb6d28e5c53050e856d7d2995", + "vendor/amphp/sql/src/SqlConfig.php": "df0391bd9b1fa21a165862c46a62f8e62fb8fdb132958d9b0d600010b8702325", + "vendor/amphp/sql/src/SqlConnection.php": "e5737fc31f8827e68ecb14ad1d947cdc9986e8556c5228a3c4b99e1e7d4af851", + "vendor/amphp/sql/src/SqlConnectionException.php": "2bd8f8476ac68d7e8052501c47eccefb7d9e5ee2b735af9971ca058273638867", + "vendor/amphp/sql/src/SqlConnectionPool.php": "0ad8a7386b74f574c49ebc5bee906d2368191753f8403cc0cbb5f460fce524fa", + "vendor/amphp/sql/src/SqlConnector.php": "0cb934694c570e60932b0b18e2f88c68e2e0c3aa4ad4cc25d80680dcab2ede2e", + "vendor/amphp/sql/src/SqlException.php": "0c35e214f4787968b8c0d02501e699ee356009243140a323e2de2634d5c4da2c", + "vendor/amphp/sql/src/SqlExecutor.php": "83831eabdb0607c772cea3c9572e5e856857bdc56f151cfe28a89aaa847ef7ce", + "vendor/amphp/sql/src/SqlLink.php": "83f0ba973c909d225aa9a367a2d86ed62aced6cce853e8c8988e28174a30dc1b", + "vendor/amphp/sql/src/SqlQueryError.php": "213700f91ebd9e8c37370a55575e0d1e52830ade0e86c09fea5685d48def36cd", + "vendor/amphp/sql/src/SqlResult.php": "e6cdeb992ca6c6180c467eb0aab55a9cffa237e6b508095c72aca9790d5ddda6", + "vendor/amphp/sql/src/SqlStatement.php": "e38d683720b99c98e3b39feeedd7105bca7230a73fe8de2674be25c96778435e", + "vendor/amphp/sql/src/SqlTransaction.php": "8c2b6176565464bf737d9265aa4ab50dc61b34e793a844402e4eacf34c6d501d", + "vendor/amphp/sql/src/SqlTransactionError.php": "35ee0c47d10af1c8d05dddfc6a33bf2efdd72155d2a3b030e67fe8f117a84e39", + "vendor/amphp/sql/src/SqlTransactionIsolation.php": "87d9fa68c0a9f8ab8cd6cf253f348e760503f97d0b7cd1b3c359585e86b31de3", + "vendor/amphp/sql/src/SqlTransactionIsolationLevel.php": "aa2f2491e1eb5155d7f4c537a71a76cc4bcda7bc6d5c7b28a300106cb936fe14", + "vendor/amphp/sql/src/SqlTransientResource.php": "426eaf78b9979f5223953919878977e55dc1ebc15793cc4d5a8956918c15597d", + "vendor/amphp/sql/test/SqlConfigTest.php": "670061090f364788ecafa896f6d25552d9f4c33238852afe4b6de61e9d139fb7", + "vendor/amphp/sql/test/SqlQueryErrorTest.php": "692af6ec0276e3589c93e2cc208edd1f61a546776238c245430d9a8c95915399", + "vendor/amphp/sync/.github/workflows/ci.yml": "f073bbdf8eced52251e084b25584ff129dfa26ecc60042d9f0efa70f52e9eb70", + "vendor/amphp/sync/.php-cs-fixer.dist.php": "4e2c3fd1f0d253b43b685fdad9e5cf68eebed9d2e115ad1e096faf7b18f159c1", + "vendor/amphp/sync/LICENSE": "0e4919a5d6d70ae53b3291c932d055d1734172a539db060bd8c8f392a13ff0f1", + "vendor/amphp/sync/README.md": "19e1624d7a3b976ff24620881bb59b30b67301e8ad065774f4da2acd145b2724", + "vendor/amphp/sync/composer-require-check.json": "786b675a4ccc2c48721806f6414893f1ae8d244e0fe0f0d0061f8e1b80279690", + "vendor/amphp/sync/composer.json": "93630de86fc737553b6c21322a2c90beae64d1492da06097327033da41d00bbb", + "vendor/amphp/sync/psalm.xml": "db55695e1e36ad2e4474f0beca9fd7e55a11e04c62f99e8f3c6d0367f066c2be", + "vendor/amphp/sync/src/Barrier.php": "8027603c451cc8f9535661a0557c0b5a2fab775325e1899fd4c5cc46624298a3", + "vendor/amphp/sync/src/Channel.php": "b83a4c5390faec971f8b0ca5a3b089b619f632317c50791a072914d3b83098bb", + "vendor/amphp/sync/src/ChannelException.php": "6f9342be068c764be30f87f283cd916bb7093731ffab223a6ac5f1f7a68ba707", + "vendor/amphp/sync/src/Internal/ConcurrentIteratorChannel.php": "69b8d45d8de9bbd6e14792b753e17ea67ff4cda21bf7f8016da0811d103be9a5", + "vendor/amphp/sync/src/KeyedMutex.php": "13a7347b92afbb6b92bdf1af7e1b253f93a7373f3f8b91042bcb342c65006e6e", + "vendor/amphp/sync/src/KeyedSemaphore.php": "ca2e1b53b18d5ca2575c233aea1e0f624f692aaf674bf6a4f359fb3e06f9ba98", + "vendor/amphp/sync/src/LocalKeyedMutex.php": "e83e9f01c246613f4cd02bc83bb3f983edb994be6444cd0cb287a4e6752a654f", + "vendor/amphp/sync/src/LocalKeyedSemaphore.php": "7c3f51f8bb3f09aa682fce6205a66f8b7ed09cb4a5a3c62cb13456bf56f198bc", + "vendor/amphp/sync/src/LocalMutex.php": "390b1aba4a85eede0559633b289a18984c802fc40f007b5af8fcada88e5c0e5e", + "vendor/amphp/sync/src/LocalParcel.php": "5c6bc02fbd0f039e2a621202a1d6d46b7b2fd2130544fda9a83ced5e4597bf3c", + "vendor/amphp/sync/src/LocalSemaphore.php": "1767930143bc1b021d15fe441fbd43bce6aff4abc46ee6bc249801dc9f623a41", + "vendor/amphp/sync/src/Lock.php": "aaa57f62212944780d3e159b54c9a5d8f959b2eebfc62c4c0f8304adbbe1f902", + "vendor/amphp/sync/src/Mutex.php": "e71e5a270c7f6bd84c3b634de70ffe8e2bfa17def7ab4b1b808af923cf6b0111", + "vendor/amphp/sync/src/Parcel.php": "15aea63af1167dfdd9713da6e5743a3b64a4b83d4b71f403dfdd9b97bbcb1195", + "vendor/amphp/sync/src/ParcelException.php": "264ba163bb97b31f204c4d8096a919777ae2144b48539ea06c7dc31f1d4058fc", + "vendor/amphp/sync/src/PosixSemaphore.php": "96ebbdc29a337440c0624d361779f5338181c5325cf196015db940a4c4b6a7a2", + "vendor/amphp/sync/src/PrefixedKeyedMutex.php": "b07fa9f4bf48617c0bc1da93d65a91c7a980f64ca28c5bc1173643729589b7d5", + "vendor/amphp/sync/src/PrefixedKeyedSemaphore.php": "d64f23a1f2d1176468ed475c2d29a6440d953697ab51663c7898bdae1dd52ff5", + "vendor/amphp/sync/src/PriorityQueue.php": "d39e41a24c5f2fd4da5636f0c5f8e2bc8e8c619c8e1566dc943b4d16f76b7774", + "vendor/amphp/sync/src/RateLimitingSemaphore.php": "9c9d39d208a48605ca801a53675cba8ab3f282ad9f3d84a0f3400baf285d7765", + "vendor/amphp/sync/src/Semaphore.php": "1f7102de2f187532dcc70a3a6cf829a3128190eccd81d4f4a2bd6091b3201d5e", + "vendor/amphp/sync/src/SemaphoreMutex.php": "e13be6ce205c6201e53bb870b32d91bbe55c1c49d4453f7f5300afd0f3f92572", + "vendor/amphp/sync/src/SharedMemoryParcel.php": "d91f6133947448f455fdfe48c3fb4c6ec1adf3caf08a80bd56f66a73c60f7c84", + "vendor/amphp/sync/src/StaticKeyMutex.php": "ea41a04108da4d53be1dab9537c00bafa7a1637a406b7acda3b2f2e093c48a46", + "vendor/amphp/sync/src/StaticKeySemaphore.php": "8d75ae7499e83eb28573fa32ff6b3bd9e7c4b552f1eeb0a15ef7629bc1204e08", + "vendor/amphp/sync/src/SyncException.php": "3ff2d8661d6db22fcb4e537fec84f9358a599fa21980d4406a8c140e4043285b", + "vendor/amphp/sync/src/functions.php": "f5f44253cf1710637e4e383eba6677e0a4395bcbd4ddb9bc8802b231b8edc1c4", + "vendor/amphp/websocket-client/.github/workflows/ci.yml": "aaa9586b07c3b621f0ef9b3ed5efcb43877e2defa861026bf80687ac4242d177", + "vendor/amphp/websocket-client/CONTRIBUTING.md": "874c604631ebbb98eac17e9e937519c024eb5d6ca67b4c707947e5dc727a47d0", + "vendor/amphp/websocket-client/LICENSE": "0e4919a5d6d70ae53b3291c932d055d1734172a539db060bd8c8f392a13ff0f1", + "vendor/amphp/websocket-client/README.md": "5dc6d52e390c21bf536a20e4e921ab2f29630eba997f1cf129e7255dd9790b29", + "vendor/amphp/websocket-client/composer-require-check.json": "c17a664da4bf74cb18fffaf081e113d0b525d7eb925cc26f72523eefafd97c24", + "vendor/amphp/websocket-client/composer.json": "bcf167f2883ec57cd5162a6ed71b9a645d62b572379f4c67b8e057e5c37e5653", + "vendor/amphp/websocket-client/phpunit.xml.dist": "92343b2b2eb05c960e0d20ebcc845e7fec07854f8b421bd77f33a7fd9f0d3597", + "vendor/amphp/websocket-client/psalm.xml": "fb2f1588a528703a92ea583cc7fcd693a34be2615a1cc281d209d3c7b7a40f25", + "vendor/amphp/websocket-client/src/Rfc6455Connection.php": "835fb1be69f7d6aaf7b49edc2f3e2df9823425465157820816fcff4aebd35dac", + "vendor/amphp/websocket-client/src/Rfc6455ConnectionFactory.php": "6b0361f63d447d5afce71c90412ce75796710beb90db34ed3be2c5d2c95c5362", + "vendor/amphp/websocket-client/src/Rfc6455Connector.php": "885786d523313fcf0a410ae2c5cead48eae49b7b94e6f1601e2bf322f4b4702d", + "vendor/amphp/websocket-client/src/WebsocketConnectException.php": "6dc1bf7aad37027f2b4a18ac4854048a425f8c5701ffb13a9bd8853b17a1ec89", + "vendor/amphp/websocket-client/src/WebsocketConnection.php": "dd3db91a7de72b59f7bbca7026de2c007d8c605cdedfee0917fa7833dc59e0a1", + "vendor/amphp/websocket-client/src/WebsocketConnectionFactory.php": "fff28bae804e4014dfa9073ef1888d797572ebf5a1e6e63a45afefdc5b07f82b", + "vendor/amphp/websocket-client/src/WebsocketConnector.php": "859704c59a7baa6dd4d308b2873a63aa8c8a45ea59698aa75f66c8d2da8748f5", + "vendor/amphp/websocket-client/src/WebsocketHandshake.php": "ab8a0719323903c899613eb05c199bbbbdc3dd9cd71d51b80664954ac08c4a89", + "vendor/amphp/websocket-client/src/functions.php": "28091299e7e10dbe5479a79df16f8d445969ee09fbc74b546a7f80e714376efe", + "vendor/amphp/websocket-client/test-autobahn/config/fuzzingserver.json": "47af83ed79586f243c16b478c83e14306d13d5cabb018776694e6f24552ae828", + "vendor/amphp/websocket-client/test-autobahn/runner.php": "9e4a8cc4bfd4304a2b62d28af7685e1d040f20cafe5b47f85517ba10d3cebdde", + "vendor/amphp/websocket/.github/workflows/ci.yml": "a475ceb7c033f3ec52050885be54bdc14ba68d4a3ed2efe5f959b024052073a0", + "vendor/amphp/websocket/.php-cs-fixer.dist.php": "72f324e677e5328df668fc71aa7c7e71b42f431d025f7f3e0126ae9824cc0bc0", + "vendor/amphp/websocket/CONTRIBUTING.md": "979aef790f3cd7c4a193f858996e079eaac50e4e496b092b05b0339bb2bedbfd", + "vendor/amphp/websocket/LICENSE": "93dc2b2aae85651379265cbb4906d2b054020ac9cc4ee70e5040f79751e34651", + "vendor/amphp/websocket/README.md": "e4835d8a3c27f31a1e121067a25c1a6f69dabd7b8c49b1de0293e892f258ebc1", + "vendor/amphp/websocket/composer-require-check.json": "1155fb0cd3f1c5be47203df55ae47b433bc86eba620d3b6774d456fbde62ab38", + "vendor/amphp/websocket/composer.json": "9b8a42c2e8d1d6e47cdbdb62f5a1d13d5edcb387bb0cce28fc61299dc2f58dea", + "vendor/amphp/websocket/psalm.xml": "2433c73bea9c4349227c217cbe41241a648170fab1d67f8878b3c95927a3c328", + "vendor/amphp/websocket/src/Compression/Rfc7692Compression.php": "4433aed65c3a3d8b7da11ddc2bf529051aed4c20ac2758a847eb60b21c5da36b", + "vendor/amphp/websocket/src/Compression/Rfc7692CompressionFactory.php": "361dfa108a927890c31adcccd68200ee99d49415d2b1c88b90fc1926b44bca17", + "vendor/amphp/websocket/src/Compression/WebsocketCompressionContext.php": "b0a95b7ebf395cdeed0f7f8798a4e864b1ef192689eedd70e7991c630e0ea605", + "vendor/amphp/websocket/src/Compression/WebsocketCompressionContextFactory.php": "eeeed28c35044061dfebb0f20fc64b9d22feb12e61073efc3718c9ca4e9a1f04", + "vendor/amphp/websocket/src/ConstantRateLimit.php": "ec583aa5a00ccfa150bfcacb2ffac5ee8353ff9a4cd5a2ea652f35bb5653ed54", + "vendor/amphp/websocket/src/Internal/Rfc6455FrameHandler.php": "34aefda3b77e5c4ff58157d24141061ff96bd15a44f5f5bbe1880e035fef4711", + "vendor/amphp/websocket/src/Internal/WebsocketClientMetadata.php": "593f648a57e6778a0bb121b38f607c0d6027b6f51a22172f42a08620aad6aaee", + "vendor/amphp/websocket/src/Parser/Rfc6455FrameCompiler.php": "911181546b396cf4e7c00e9a6c678dae19350d81b6f6f4073f889a33da802f3e", + "vendor/amphp/websocket/src/Parser/Rfc6455FrameCompilerFactory.php": "78b0890285710e796a50d626562e446964b6772814ad070aac99c977b8fa3ea5", + "vendor/amphp/websocket/src/Parser/Rfc6455Parser.php": "bb96f8c93cac412b2d66c2bdefc38cddbf364455f01be3b8c8a9efb0d88ba327", + "vendor/amphp/websocket/src/Parser/Rfc6455ParserFactory.php": "a96d7047a1f68e212836ae3af5892fd2c16c764012a0859eb19c188b296d28dc", + "vendor/amphp/websocket/src/Parser/WebsocketFrameCompiler.php": "44886f159c3a8633580eaa430f4c971064b04cec7d8143143be24ace0b06da65", + "vendor/amphp/websocket/src/Parser/WebsocketFrameCompilerFactory.php": "60cb612d62709efcca5cdb3288d3de6cc56b6685a8584a79144f4273d35d958e", + "vendor/amphp/websocket/src/Parser/WebsocketFrameHandler.php": "63099d2b3ae2b11233b535884fd198291c2e3e39a4a1d185919b7b4203599e46", + "vendor/amphp/websocket/src/Parser/WebsocketFrameType.php": "cebffdcd37c74ce7c0e02def339cd5a578e7ad713eef1c538a1761dea2c6c7a4", + "vendor/amphp/websocket/src/Parser/WebsocketParser.php": "e5410e27c12564e02cf1bf70f41634effbc9f2fb56aac52cef119ff1ea44a7b8", + "vendor/amphp/websocket/src/Parser/WebsocketParserException.php": "d0920f8057d27953073b1fe31c3cb03d14c38a6b036bd1d4d0bbf4040fd37fba", + "vendor/amphp/websocket/src/Parser/WebsocketParserFactory.php": "17e2adbf7c5b3c7ea682f73739a3f5de33d2573f89d939227bf5234798c9ea29", + "vendor/amphp/websocket/src/PeriodicHeartbeatQueue.php": "5d6353f22b3a0a48da46fa59c10a4fd9389de91f25cc71ba6cc98ecd5edb30ed", + "vendor/amphp/websocket/src/Rfc6455Client.php": "a75a0188ed6b91af272fc0be011f67a7d348d5cdfd27c0be47f153f000fa3779", + "vendor/amphp/websocket/src/WebsocketClient.php": "8d9ce079610c9d6c12145fcff71e3eb34be2e4eec0dc79b6275b901f8560d8da", + "vendor/amphp/websocket/src/WebsocketCloseCode.php": "282aafaf23d85384483081f4be4a316ac6f76629a95335559f84e66d55073a6e", + "vendor/amphp/websocket/src/WebsocketCloseInfo.php": "228d9831817cdcc9e877d2f6e32ab97962185ac1edfcfbe0b098dbb39562464a", + "vendor/amphp/websocket/src/WebsocketClosedException.php": "1a0f6087e490a4ca6892890798eb13568fd3bb2133340adfcfddd098c0591b3b", + "vendor/amphp/websocket/src/WebsocketCount.php": "b2522f3a59e8fe849f3b030655ee75b91716a71de30a81f9b2c90e40b560781a", + "vendor/amphp/websocket/src/WebsocketException.php": "0d29573ba5c7ae6ebcebdc09ad85241ada095bc39123c5d23888856d5aac6716", + "vendor/amphp/websocket/src/WebsocketHeartbeatQueue.php": "f743a22066f12029fc1d26691b418701dd07c6712966a69bd7748244a1bfa125", + "vendor/amphp/websocket/src/WebsocketMessage.php": "0f425ab4b786a7febcf343c437842ea386e143a543e070a2b623ddcc0c53b8c9", + "vendor/amphp/websocket/src/WebsocketRateLimit.php": "e2d18d3a6c0bf235920ac586cb34f079d446436f2d51c266aada110dba33fe2a", + "vendor/amphp/websocket/src/WebsocketTimestamp.php": "bed51c8e21058ee81b1028e60f20799963d9f255433b6973f2f809963e958af3", + "vendor/amphp/websocket/src/functions.php": "9383f805a44b1bdfc81761c09b31b89989163668a2ec441b023c8c448d3a49db", + "vendor/bacon/bacon-qr-code/LICENSE": "973af1db913b076a85e09732c75df802a6b8a61a63701c38f2ce6d471c213260", + "vendor/bacon/bacon-qr-code/README.md": "7ce81554c3d49e416960376ddc223d1198f66961aa8323972f3528024f357682", + "vendor/bacon/bacon-qr-code/composer.json": "9717ae6d82f298b024fb15fc5e7088245b8f94712cec088ee50922c7b9ca7462", + "vendor/bacon/bacon-qr-code/src/Common/BitArray.php": "b9a71976ddad1bd685220362baaadfd4c082619eddc09e9b5235dad908a3eaf9", + "vendor/bacon/bacon-qr-code/src/Common/BitMatrix.php": "aa3b36d931d6da6ed452b657f8d598b8cc1e4796c685ad1c1d2b989f0d0db6ec", + "vendor/bacon/bacon-qr-code/src/Common/BitUtils.php": "a461d2b3eb45e14b54cba362fb7fbb910bc624d4ae332340a6a5a9644267a354", + "vendor/bacon/bacon-qr-code/src/Common/CharacterSetEci.php": "fd9465a40872699c7fc8ac4dd0ebb40a5a9bd1b7b7618794755cf485b06d9ce4", + "vendor/bacon/bacon-qr-code/src/Common/EcBlock.php": "4aad2525cbf8329d9d5029b0d5c57c4edeba44e50b0c5a7d5b7705ae1cad7a4d", + "vendor/bacon/bacon-qr-code/src/Common/EcBlocks.php": "b6c802eb6360b6f97dcd2c5d90036a673678ae9751d28fe6246a7c29a1902bac", + "vendor/bacon/bacon-qr-code/src/Common/ErrorCorrectionLevel.php": "b2d5665585f00612801f02726a8e62575b3c4bd8a6058ef08e71cce123cdddb2", + "vendor/bacon/bacon-qr-code/src/Common/FormatInformation.php": "8104bbcee9af16bc3e786b40c8f9d70f24efbeeee7090e9fa55ea3c73a4c8a1f", + "vendor/bacon/bacon-qr-code/src/Common/Mode.php": "92f161ed7dacf352f7dda6ed3cc3d43a30cd92879e727b8b0753978904a83a9a", + "vendor/bacon/bacon-qr-code/src/Common/ReedSolomonCodec.php": "779785ad583b98b81700b48b95730143a0e6773b14177b826f9eb625e8e67837", + "vendor/bacon/bacon-qr-code/src/Common/Version.php": "a3c97701f474a454c7186f45b9bd3dc1a161efc73ab340aa42b9e8fd94ea0d51", + "vendor/bacon/bacon-qr-code/src/Encoder/BlockPair.php": "c2c03a4e2cf405de61555712c2d6ff039d4b8929783ab2b6dff0a522e81bb333", + "vendor/bacon/bacon-qr-code/src/Encoder/ByteMatrix.php": "3565cb4e23da44e769a888d67ca3d5f92abbf6866be5c0d2d1af82e9fd47dcf4", + "vendor/bacon/bacon-qr-code/src/Encoder/Encoder.php": "89bb2beba25474ebe196fc0b2d81b8dadeaea4ce008c678a48d8e6e668f74d58", + "vendor/bacon/bacon-qr-code/src/Encoder/MaskUtil.php": "23bb47d8120aee32dffbd4854a1d63309baf64ad74c5112759f3c9a9ca9b8851", + "vendor/bacon/bacon-qr-code/src/Encoder/MatrixUtil.php": "c5764dd1f44a57b918646e0039a2a82cedb80959ff23bc536e866e56356cf5da", + "vendor/bacon/bacon-qr-code/src/Encoder/QrCode.php": "347fe94c75b0cccc86a38c371cc939072ad30bcc2b8f02872b357670ad75283f", + "vendor/bacon/bacon-qr-code/src/Exception/ExceptionInterface.php": "c834a85c399d71e0a24f3f917f6bbc587d79aed093523ab61d7dab88d14c1fbd", + "vendor/bacon/bacon-qr-code/src/Exception/InvalidArgumentException.php": "ff8d83eee797fecd35bc1735cf1c4484ca3aaaf3504e929834f2f7d9749b55e6", + "vendor/bacon/bacon-qr-code/src/Exception/OutOfBoundsException.php": "c0eeb51ad8b504ce7cac32554ce234d9757335e41fd913d65eca391088de3b91", + "vendor/bacon/bacon-qr-code/src/Exception/RuntimeException.php": "8eeb51e804157983990fdfe1e131a17876c56bb3474f8e72b97afae40bcfcb01", + "vendor/bacon/bacon-qr-code/src/Exception/UnexpectedValueException.php": "e8e1c50b55259a6f2080480d045084949b1b8a3638f584a4d83d4a5161bfa15b", + "vendor/bacon/bacon-qr-code/src/Exception/WriterException.php": "76f2109c2cbaa518c40f04c4379247391aa277048e7a715a6cd2d982ddeea32a", + "vendor/bacon/bacon-qr-code/src/Renderer/Color/Alpha.php": "33bd0ebfaa060b4991f5582f4b006a607719a9339dab61f492fb6b120a1786a9", + "vendor/bacon/bacon-qr-code/src/Renderer/Color/Cmyk.php": "6a60d03366eaefb3ee68b6d19a0e31a12d8c89ef3352e5d8f8f25190993f9376", + "vendor/bacon/bacon-qr-code/src/Renderer/Color/ColorInterface.php": "6e61824b404db2cd01bf6e0f9e89b9871ec7253d40576ae7159ea637aaaba04d", + "vendor/bacon/bacon-qr-code/src/Renderer/Color/Gray.php": "cf8af193141742cb9fde98361269a9b3c06a0280a88af331bad24cc20279df9b", + "vendor/bacon/bacon-qr-code/src/Renderer/Color/Rgb.php": "7f35a334184109c9c173904df68b20efa7988f2578675dbc78a1bc026ec1dc7f", + "vendor/bacon/bacon-qr-code/src/Renderer/Eye/CompositeEye.php": "5c88e9a6d2db31a0cb91182cbcb22f824e4be60139ef834bcf5d58191d01935c", + "vendor/bacon/bacon-qr-code/src/Renderer/Eye/EyeInterface.php": "acb3b17678c4f99b9de6c1ce8632431bd773554a4c6ade86c29a52bddf783fa2", + "vendor/bacon/bacon-qr-code/src/Renderer/Eye/ModuleEye.php": "44436985af9b5fb3c6f6b57eef60383f22bea2233ad6baac21ea826bbf64ec15", + "vendor/bacon/bacon-qr-code/src/Renderer/Eye/PointyEye.php": "3e8a735e0fa473a1a5ac386c9d5866e244c1bcfeeb10f812345173590959c3c4", + "vendor/bacon/bacon-qr-code/src/Renderer/Eye/SimpleCircleEye.php": "5eaca1de9a0c3a6642768490a134dd9870702107b01d8a623c8c9cf9cc4aaaca", + "vendor/bacon/bacon-qr-code/src/Renderer/Eye/SquareEye.php": "b4a9d7f48ada373bff0137717dd34524bc82907c6c56ee9501d2709c1e3c4450", + "vendor/bacon/bacon-qr-code/src/Renderer/GDLibRenderer.php": "98969481235e2df682491c3c3413c31376453aa01f5fc0acf89f41932dd8a6b5", + "vendor/bacon/bacon-qr-code/src/Renderer/Image/EpsImageBackEnd.php": "40ce9982f506daddd6bce63fd16b07a8ca0b4a8d2f2b5e9c60bf07f97fda3fbe", + "vendor/bacon/bacon-qr-code/src/Renderer/Image/ImageBackEndInterface.php": "c9b026d3498ae283fd3f6c255f350835f2c017a6bacd0211b2142893dfd210fa", + "vendor/bacon/bacon-qr-code/src/Renderer/Image/ImagickImageBackEnd.php": "6fccfe219064bafe1e91da34c0344bca30bfb93526e45914e6478359a0b3f43a", + "vendor/bacon/bacon-qr-code/src/Renderer/Image/SvgImageBackEnd.php": "defe57ed85c6a8bc6227ab49fcca098428f0420955b1f52efb8de58c75209cd0", + "vendor/bacon/bacon-qr-code/src/Renderer/Image/TransformationMatrix.php": "521e20fcaa6c8ce9550705e894205754c2ec76ee0c3329c3df4ca27779019524", + "vendor/bacon/bacon-qr-code/src/Renderer/ImageRenderer.php": "d5badf3f1688171b9d89eb896016a18d5d16e8a073153cf4cfeab56cad9d0766", + "vendor/bacon/bacon-qr-code/src/Renderer/Module/DotsModule.php": "f9b85b0f3f5391c12bc4f93a65e864bec222b3bbb687632a1c2e66d9989a1a69", + "vendor/bacon/bacon-qr-code/src/Renderer/Module/EdgeIterator/Edge.php": "f546451adb0671d2c781957c4fe9c47e150fa7d8f0d8d80d0559633cd830c29a", + "vendor/bacon/bacon-qr-code/src/Renderer/Module/EdgeIterator/EdgeIterator.php": "b04654ecc48e0eb2c0da1a4e57e7098129906cef74cd715a98e59ca8e08840a0", + "vendor/bacon/bacon-qr-code/src/Renderer/Module/ModuleInterface.php": "c643acaf6b2e5ce50194cacf61cff18a3b5d37513ed06e4816074ef989053eb3", + "vendor/bacon/bacon-qr-code/src/Renderer/Module/RoundnessModule.php": "84ef74b3e06c025bc144010ab2208d8986de74c683752138b9a6fe151fad50a6", + "vendor/bacon/bacon-qr-code/src/Renderer/Module/SquareModule.php": "f52f335872d741c1adf19c0b1c826a37342dd7739c06ee1a277a6fec883d39a8", + "vendor/bacon/bacon-qr-code/src/Renderer/Path/Close.php": "71cc07b11a3567f28e288d49ff75237b8cf72e854b842cd847154802e15075f9", + "vendor/bacon/bacon-qr-code/src/Renderer/Path/Curve.php": "7bae782b56b9fb3493484861d10dfa895d4dd89ab40f06872d7c23a89b2d99ef", + "vendor/bacon/bacon-qr-code/src/Renderer/Path/EllipticArc.php": "15ced4eaef0219617821f47ea880cf2f08fb51afca9eed7106effa478d4568e7", + "vendor/bacon/bacon-qr-code/src/Renderer/Path/Line.php": "db77e473da6827822d4f914d34218210ca031c50238911d606d58ae426a29910", + "vendor/bacon/bacon-qr-code/src/Renderer/Path/Move.php": "e424dcde680170c40f622b011ba2c6b17585c11007e9ea25f41ba6c2ed51af44", + "vendor/bacon/bacon-qr-code/src/Renderer/Path/OperationInterface.php": "0b41de0dadc8d189b3419f357503947f37f6a6951963272fba714dddca204c42", + "vendor/bacon/bacon-qr-code/src/Renderer/Path/Path.php": "785d89f9cce10def715e7743fdf8342339538d0b155cdf19dd7739da91361b41", + "vendor/bacon/bacon-qr-code/src/Renderer/PlainTextRenderer.php": "89b62d1ad13592f664bec50085cefa4a9980e8caf3c6641545cbab3f69c32944", + "vendor/bacon/bacon-qr-code/src/Renderer/RendererInterface.php": "4452c80c1c07d8c0a04e24f9144439d994ea939c8060fb05b723cf590c4406b0", + "vendor/bacon/bacon-qr-code/src/Renderer/RendererStyle/EyeFill.php": "ad2cf08557f5525d6ecb34de99ecc55ec8d89ebeb2a5387c20af157ba8e07552", + "vendor/bacon/bacon-qr-code/src/Renderer/RendererStyle/Fill.php": "46d12cf210f4f9921a0542b96895b44e17398e8f3f8e239fbafa6a0ad177ffb1", + "vendor/bacon/bacon-qr-code/src/Renderer/RendererStyle/Gradient.php": "2fa4d25ed8cc2be381744858dec1db04c076da72003451577c7cd9cf4df5a43b", + "vendor/bacon/bacon-qr-code/src/Renderer/RendererStyle/GradientType.php": "144a098f4f5e2a30b667b337788ad0b1c66bdcb44f5f973d736089bb6e9588d0", + "vendor/bacon/bacon-qr-code/src/Renderer/RendererStyle/RendererStyle.php": "76884084da186d5f318f67f7eaf902bd594c2b2f6afaa752c78f46010a480369", + "vendor/bacon/bacon-qr-code/src/Writer.php": "b3f968284dafcb6b010287028eacca7f4e39a7c0d2e7852309596fa9121fbeb0", + "vendor/danog/async-orm/.gitattributes": "36480fff15b5a6cd4ebf6538b1dda9cecef8bc65ec65782fcc2ea78c032b0038", + "vendor/danog/async-orm/.github/FUNDING.yml": "d32aff5b00bb9eae134a36c19ba9680f222d4aa62d4af8b1e349769fe98e85dd", + "vendor/danog/async-orm/.github/workflows/main.yml": "028942fd2573b1f032fb9b343c2133d3ab6f7f940d25c4b85117dcbbe1cbaacf", + "vendor/danog/async-orm/.gitignore": "1920173c7c1839363833a34e3ba921b51b2f73933e7cc98b85ae710599201130", + "vendor/danog/async-orm/.php-cs-fixer.dist.php": "9b6af1b5d3d4d5f1c1bc495bd5fd0d5fe6a9bb2c3fdfc546c3c074a4bc82b717", + "vendor/danog/async-orm/LICENSE": "8c6db340475136df3c1201d458fa5755698eace76e510471ecc9d857d6083dac", + "vendor/danog/async-orm/NOTICE": "3dfd6d3468a650d538cdfc3f94d42200a3517c72864c9224a78a6e86900d6fc6", + "vendor/danog/async-orm/README.md": "31e9c0779d84de5b6fb38cd4b0744655faa1392f72833b9a0f44b93853413ac0", + "vendor/danog/async-orm/composer.json": "4738ca2c0a25d4c02c51bd38617e823d52a03dfc7801d1c675eea2f0b9f5c9ed", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/Annotations/OrmMappedArray.md": "85f306d72732c8696045ffba1763e1fa46b4d179fcb4b3374821aa83cefc73c8", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/DbArray.md": "3206e68d18686144e6f8e3c9d8247fd8e9bc742ea2c8d7815aa41b6df4434fe8", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/DbArrayBuilder.md": "fe43a31501c8f8dcf8f1ea3d9ceae1ec6121fc8280585b546e3f416a679312de", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/DbAutoProperties.md": "970a4c54e892a0eef933e0f86ddd456d48c64a93da450d804a16e89a3b7a5711", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/DbObject.md": "469a9900c4070460ad6ec05a7cd3948aa63e014ea2ab0eb0e73124444656f6db", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/Driver/DriverArray.md": "9282a1383ea89d2c82bba4df2b6287f518f5a02955981dfa64d9b63e7d64a15c", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/Driver/MemoryArray.md": "29938c6d18ddb0f721323be513b5bdba2e30ecde964f6b922e6b92fa26703faa", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/Driver/SqlArray.md": "daf48a68701ca552473aa37bfa7122319be03a9c13fbad3fdaa7832b87fd72a8", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/KeyType.md": "b07fb86e977d1497a06e99156bbd90ad18985ded45b507bf881fb484594159a3", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/Serializer.md": "8ec4dc3500bb6ac42ce6e0e38882d95c4e6b967ce410dd6ee9beab1eff0e5d09", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/Serializer/Igbinary.md": "8ec77b2685f68649457e8f6366aa317d28d92279c82d998b937ab41812948555", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/Serializer/Json.md": "48c27c6fdaf87e328f1620f50dfccd0dda51c0401402402b0f9539a5d72fc635", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/Serializer/Native.md": "32567292dbe6415ab48a029ed81d069a9b69cbca7cd38ec930b45928cf35e5bf", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/Settings.md": "fb4e6ada7510b6e394b51b25f2f48e2c3899bd62843ee8ee54e197f47c83bbcb", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/Settings/DriverSettings.md": "cd01e8499f689d5e041742c37ee47da0a2d16915b6b6b98a415db4a50ecd9af2", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/Settings/MemorySettings.md": "0ddb9234bb2eb08cba8c15c21c47c6435bf06a1b9eef3ad4bda96d208e72e407", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/Settings/MysqlSettings.md": "8ae78a9fe732aa083258c3234722532e6c5feef850841b8964e7722468c5d79d", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/Settings/PostgresSettings.md": "158d5fed5eb643f8ba73558ff6b1562099425e34c9ce7a05c2f901dfa926ae88", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/Settings/RedisSettings.md": "b67b3f02f62410c48e49dd6140d92facd292ba6a60da4558e8db11c251b8eb7f", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/Settings/SqlSettings.md": "ef979909026d63875c482b2a6d0810ef64f9a5c4e8d9f0841911915ff7e0d4ce", + "vendor/danog/async-orm/docs/docs/danog/AsyncOrm/ValueType.md": "f6de7c432ff5aa449f13628db4834d3a7c1bc9eb9d13edb26bdc1413423779bf", + "vendor/danog/async-orm/docs/docs/index.md": "164b8c57ebf7a814db515a15a31b4abbad18506c042a27c8022f45ada06cb0f8", + "vendor/danog/async-orm/docs/index.md": "dbcc210d7f4962499db6d4cfa18658e26d05ee700c962a811cac911f095e22fd", + "vendor/danog/async-orm/examples/1-automatic.php": "ca260596e6e13015dff1ff85c759579c8490d455d5a7cd2c37b67bf614d4dc45", + "vendor/danog/async-orm/examples/2-manual.php": "102ed5c5623f7edb7a5d503e38507f94650a82f6bacabf1504193626aff49da9", + "vendor/danog/async-orm/infection.json5": "1f325b4ae72ceb42a53b94e19ecb4c5504e9cd1e52afc29e7141010c79f705f8", + "vendor/danog/async-orm/phpunit.xml": "463c51e87c2ceb095955ef7cefd61d1bc4f4bda98e50ec4dc114ac69edd406c8", + "vendor/danog/async-orm/psalm-baseline.xml": "78e83bbe5a4a263a78cd120fc82d3d390bb20594b912e2a12416c7bf3c6c6d21", + "vendor/danog/async-orm/psalm.xml": "3ee85cafe74c637a426f63d8e468658d2f4a12231686459205bd4976ea0e347a", + "vendor/danog/async-orm/src/Annotations/OrmMappedArray.php": "14ac7b0f9fd1adf0677817b84dfa4750f3668dc55908bb4376e9804328b1d107", + "vendor/danog/async-orm/src/DbArray.php": "316127081f5bafe1b6be1659d8cd7b4827e893aaefb599023e7daf5fab8a678f", + "vendor/danog/async-orm/src/DbArrayBuilder.php": "5b6c007c55379cba0d1618ec79d0fa8dac45e009557080d827914f1bc064b46b", + "vendor/danog/async-orm/src/DbAutoProperties.php": "8669140fab335a4fafa308bc6dd288c4f24e61489990b8d1b99dc716733ec90d", + "vendor/danog/async-orm/src/DbObject.php": "ef7980695a461ee88eddff3b6f6ef3ece908ee185f2fcd15b9b6f4e7525dcaeb", + "vendor/danog/async-orm/src/Driver/DriverArray.php": "a1cd0f23d1a51065faa64913fcba25b8310a2c06d18e543e8c13c390469c0b48", + "vendor/danog/async-orm/src/Driver/MemoryArray.php": "c357ba9a3eaa96b3a173fb2ead0a84b88b06465c9427824d6cff5d46b8316b88", + "vendor/danog/async-orm/src/Driver/SqlArray.php": "41c34876a16063f26c20485d5ba4c290d3789d1549f40d16ca06709c663557e2", + "vendor/danog/async-orm/src/Internal/Containers/CacheContainer.php": "fa631df5918d32a55b6289ec76e63b0acc4da56b478125b7834cc5dce57cae85", + "vendor/danog/async-orm/src/Internal/Containers/ObjectContainer.php": "a3216ce9bd8d2313be8c85c74e7a598fc16af079273c4db5c38f90de5694cd8e", + "vendor/danog/async-orm/src/Internal/Containers/ObjectReference.php": "5726e63e7f8981538bb73a8d06afc6fd86e7016ac400ba005509d47838d58a84", + "vendor/danog/async-orm/src/Internal/Driver/CachedArray.php": "55ff9e532a11fc4b98632eb54786e1bb1c75b68c76f86d8b877dbb5ed8fdd1fb", + "vendor/danog/async-orm/src/Internal/Driver/MysqlArray.php": "5b79fdaa23feedf62f42c453523830e89cf3780a600e7d5cf852bb7ab2a41d79", + "vendor/danog/async-orm/src/Internal/Driver/ObjectArray.php": "1e8c3a8d9d2a3b8849194b0fd5b69170e38a32f21576be8052b72c48f2c02a0b", + "vendor/danog/async-orm/src/Internal/Driver/PostgresArray.php": "97bbbc6cf1c2a72cd6ff58a64367ac783d4a2faa2be256c67319a426697be0ca", + "vendor/danog/async-orm/src/Internal/Driver/RedisArray.php": "1a68e32dfee490be4ad82655d341a977358431dc16c495f4346626c3582de12c", + "vendor/danog/async-orm/src/Internal/Serializer/BoolInt.php": "4251a6dac0b5adb32ee8ee941c01827bade100e92522c5d528677e8c333c3e7c", + "vendor/danog/async-orm/src/Internal/Serializer/BoolString.php": "c325880e05cef7bd22d01e2686cda4ddb00a4f14f3304898b275eabfd6dc5c7b", + "vendor/danog/async-orm/src/Internal/Serializer/ByteaSerializer.php": "695d985e2ef35252bc0e231e79e2ec9d0cabe3366124edc541d2ffaf63b0b2fe", + "vendor/danog/async-orm/src/Internal/Serializer/FloatString.php": "2f0d35099bb60e400c068ab0ffbbf8002df238b744467ee6fb4f7f560981d156", + "vendor/danog/async-orm/src/Internal/Serializer/IntString.php": "ece4aef51d17034359ca018fe77eb4653c75662fff5719f4afd3bd0e87c06143", + "vendor/danog/async-orm/src/Internal/Serializer/Passthrough.php": "c0da0646e9a86161b26c4ad8671a5b1d1bce343aa7b52de02a3f6a1df8b9ed5d", + "vendor/danog/async-orm/src/KeyType.php": "41d6890fc09635ee58e3a5b25a201d6338691742b0b0c2d45143f1b632337fa7", + "vendor/danog/async-orm/src/Serializer.php": "4acd42ca101b3940854e5de98c9fd20c27f7a99a3ecff2faa99f2002f5a5ffb2", + "vendor/danog/async-orm/src/Serializer/Igbinary.php": "5d884fd67e43fb25746465eef5b025641a2602dd8c909db54692864bb84b2e73", + "vendor/danog/async-orm/src/Serializer/Json.php": "1ab5754cc1f5029255674de535a86299fdbe885343761d48404029bf900cae07", + "vendor/danog/async-orm/src/Serializer/Native.php": "c864389307969ad51ee6e20c7c17726d2b46e2b68fe0a7873f663b1c772655cd", + "vendor/danog/async-orm/src/Settings.php": "e3cfd8242d03025b8211ab7f92f4bb94e638e0528c326896f5d8f35d4770beaa", + "vendor/danog/async-orm/src/Settings/DriverSettings.php": "b219d78c1d520eeae71de907668056756806d2decc0b7e18bedf7361b2505ce8", + "vendor/danog/async-orm/src/Settings/MemorySettings.php": "7f9026ee03f437bd4ccb9607e468a5d53598fcc7c281f64e2dc949f7b5864d4a", + "vendor/danog/async-orm/src/Settings/MysqlSettings.php": "f2478804fd4e6db35b74449c17a30a0f9cb777fbd66df570d5048aed6e80287b", + "vendor/danog/async-orm/src/Settings/PostgresSettings.php": "c4b8869c932124b03bcea92e1d95b6c892b52ed3ea659e5aa93cea39af426cd0", + "vendor/danog/async-orm/src/Settings/RedisSettings.php": "ee19eb08d3f343437fe3131615a63e7b116f0b51242f2888ac129bc17f487594", + "vendor/danog/async-orm/src/Settings/SqlSettings.php": "b0021e7de99cfb879f4f43fd827f08d868ec1eefb15a5ce8e7bc390dbdb12098", + "vendor/danog/async-orm/src/ValueType.php": "19b0d07851b64a9d2ea0eb4bb6376a4ebef76d3c0a906998ac4cc258de4a07c2", + "vendor/danog/better-prometheus/.github/FUNDING.yml": "d32aff5b00bb9eae134a36c19ba9680f222d4aa62d4af8b1e349769fe98e85dd", + "vendor/danog/better-prometheus/.github/workflows/jekyll-gh-pages.yml": "8028ba1bdddd05938c52b2ebd46a4c35e45aa595b5d4886731f053532c4cc0a9", + "vendor/danog/better-prometheus/.github/workflows/main.yml": "9d6e3dde9d5556c69c30aae948b9afb238787ccb8c14b0c311d911575807b10c", + "vendor/danog/better-prometheus/.gitignore": "7aaf4fcebed10e30dba385418de0e8d039fd425d784b96605b1c21f2a17aeb7e", + "vendor/danog/better-prometheus/.php-cs-fixer.dist.php": "24070f9bb5fcbf44e553dfdbe33d960f33e3016cc61e1ef8bc723843b141235e", + "vendor/danog/better-prometheus/LICENSE": "8c6db340475136df3c1201d458fa5755698eace76e510471ecc9d857d6083dac", + "vendor/danog/better-prometheus/NOTICE": "7ee673a8f098e3569a5af6f61f722bc735d340d92414a72a2dd4e35e38619eac", + "vendor/danog/better-prometheus/README.md": "c384729fbf4cbc0af29e8e1f12482d601574ea137394cb7a34bcf14d3c59605d", + "vendor/danog/better-prometheus/composer.json": "c1364655242e8957bd11c1f0ed08b3992150626f44ef2d42df647531f7f45a2e", + "vendor/danog/better-prometheus/docs/danog/BetterPrometheus/BetterCollector.md": "9a4e92aa5c17aeb27274347eb619f6c4bee5676bfb1412d7b680df50b32b8902", + "vendor/danog/better-prometheus/docs/danog/BetterPrometheus/BetterCollectorRegistry.md": "47ce1382ca3a173cca6e8f529ac978b17cc6d941d00bde96a0e8c0039506ce5e", + "vendor/danog/better-prometheus/docs/danog/BetterPrometheus/BetterCounter.md": "81ba08894b786ad48f81a9523d6eeb1ab0d8e5c772bae9b7d720c8308ce1b0a3", + "vendor/danog/better-prometheus/docs/danog/BetterPrometheus/BetterGauge.md": "8853df18d0fb31fe37d15833e8e46b3ceef6e1ef65f6c76b6ad8cfdfa63f7f9a", + "vendor/danog/better-prometheus/docs/danog/BetterPrometheus/BetterHistogram.md": "8c3d2001ee70b46f61406cda08444f780cb35837adff14bc23b54f35da066fab", + "vendor/danog/better-prometheus/docs/danog/BetterPrometheus/BetterSummary.md": "5adc577fd6be64a31cb208ef237df72587d7a5b3273f50509433206e4b159f07", + "vendor/danog/better-prometheus/docs/index.md": "3fce57f406112a3a4fd8952aea101306cb6e8b666dda18f9adf2d22dfc337bfd", + "vendor/danog/better-prometheus/examples/1-all.php": "1b66ea79dde41e1b9b56fb31a84660a543eaa003ed9201c4bbc8993df71bbbb3", + "vendor/danog/better-prometheus/lib/BetterCollector.php": "d7c08e0408d880f4b3e80f8ee728abbe436549253a51a2a61c84d0014ca6223b", + "vendor/danog/better-prometheus/lib/BetterCollectorRegistry.php": "83a35c6d769b56e310687bb184187edd95b4b47317b98a7c74bc3b0647e292da", + "vendor/danog/better-prometheus/lib/BetterCounter.php": "4060806a88a7aac67fdf14005b3f90c668d4d59ade0d32c8244564d3b4460a42", + "vendor/danog/better-prometheus/lib/BetterGauge.php": "d6b2649771b9c581e21d08657c60c6cf7b5f746a71e0e1d61bcdb336a07f5b67", + "vendor/danog/better-prometheus/lib/BetterHistogram.php": "d870cf92d8ecfaf8b3db62610ce3364e0f97046891e836ccbd9e34758b22b0e1", + "vendor/danog/better-prometheus/lib/BetterSummary.php": "64c667d9089dbb7526d4aa24d91382094510e67014b2d2460e200e36e1531cdb", + "vendor/danog/better-prometheus/psalm.xml": "5ebaa2b01fd79a7997839bdc13530effa4b760110e50a6f8d24d41d174d59314", + "vendor/danog/dns-over-https/.github/workflows/ci.yml": "91e40d9c09ec8200cde1bf237b22c7baf385d92c1ba41a4248da3b0452822385", + "vendor/danog/dns-over-https/.gitmodules": "7b14e4f1520d38491060b47535c5446448ca8324a323debb2349a102e75664c9", + "vendor/danog/dns-over-https/.php-cs-fixer.dist.php": "7dcd2b6be8dbfa9b371804e983e87ec9b7db7a17d0973e61a63d5a29dee36dd0", + "vendor/danog/dns-over-https/CONTRIBUTING.md": "979aef790f3cd7c4a193f858996e079eaac50e4e496b092b05b0339bb2bedbfd", + "vendor/danog/dns-over-https/LICENSE": "eff216d768cf4549198f24abbdb80f55fec10afb5876920291993d8d59c3aa47", + "vendor/danog/dns-over-https/Makefile": "98497c8a5babea50f6bb304a75b2cf2ad7d421b3a96dc385bb10e8500c7b72f3", + "vendor/danog/dns-over-https/README.md": "d433f048948ce8ea413efe1f3128a36dba730475580351a052f21b0fd59ad8f7", + "vendor/danog/dns-over-https/composer.json": "0d0c2d82977b42892636de71d048c4cd30b4efecfeb76a95fd436646fbef5231", + "vendor/danog/dns-over-https/docs/.gitignore": "5c29af322ccb837ab59ea245806b205294e4d61a2076b69c7fa5428e64b856d0", + "vendor/danog/dns-over-https/docs/Gemfile": "5ac3c69df09d777ef1650ea9ce7d56c714cb0a87b6dbccff2979d982345ea7c3", + "vendor/danog/dns-over-https/docs/_config.yml": "06d54826f9e65a5ba0edb1ab88d28fe11da838f591f21497d732b15078bdd40b", + "vendor/danog/dns-over-https/docs/index.md": "b2116ad1af827a26d9d479fc1c3a4d84b51cdb2168735973d2f3bda4005bdf84", + "vendor/danog/dns-over-https/lib/DoHConfig.php": "ede6d59a39ed70174086f528ba95db72f82e00382759f807d2222e7f27a29ee3", + "vendor/danog/dns-over-https/lib/DoHException.php": "9a0375347318b67758551f8bd2adab31dbe906d11650c9681a9961c942363149", + "vendor/danog/dns-over-https/lib/DoHNameserver.php": "479e819cbd925c1daec965dea8879cb7410660e56fdd3326ef11c4a10debdb6a", + "vendor/danog/dns-over-https/lib/DoHNameserverType.php": "31f0069d005c7ad5d5e9d52be2c92e8b8edcd39476f5c42d7f0b446a0dfcadd6", + "vendor/danog/dns-over-https/lib/Rfc8484StubDoHResolver.php": "be7cbb28e6f7f5d7d3f52954501da5790f85e37b81c48c47a78c8961096fb354", + "vendor/danog/dns-over-https/phpunit.xml.dist": "6cb69d48760426a3023e385aa5b87bd8f6bd4e3071c37bee8341a2e4deb28f24", + "vendor/danog/dns-over-https/psalm-baseline.xml": "5334fde90357cb8a419ad2bdccff589aa0730332eca9a9b4eea09854a511df79", + "vendor/danog/dns-over-https/psalm.xml": "1d941b70a8e9cd8335c31ce073fb83868b3f6c4044d58c64c75942914b0b5024", + "vendor/danog/ipc/.github/dependabot.yml": "380150216e6a0509993d20e2769fa4ca6800ab6c65536add10efcc88624b41ad", + "vendor/danog/ipc/.github/workflows/ci.yml": "3c02d5302f0dee3f3519022d224562b5a26fee330989e67b5395abc0387b32c4", + "vendor/danog/ipc/.gitignore": "d592d2ec4051a3912f9db5c93049475759837d419032c1b3a545727502743a5a", + "vendor/danog/ipc/.php-cs-fixer.dist.php": "7dcd2b6be8dbfa9b371804e983e87ec9b7db7a17d0973e61a63d5a29dee36dd0", + "vendor/danog/ipc/CONTRIBUTING.md": "eed3a7ac5df070d50d9d665fb7cff7680b9f1be4ef2aaa6c9bffabe52d7ccd66", + "vendor/danog/ipc/LICENSE": "21aa06129a162cf89ab5bad3bd16cb7366ccd1fd6858a294be3092f336c1a227", + "vendor/danog/ipc/README.md": "c861dcf0fdb0d8d60fda3f1011eb4ed55832733fef7eb494fb38646ce1f276b2", + "vendor/danog/ipc/composer.json": "eb648b84581cff620abfea80023297e3e427f50522d6ad41228e1f85884d1e6b", + "vendor/danog/ipc/examples/client.php": "c150fe2a1702240f059d1a8076fe42e00cb8cd61d4f42468bca70d91473ca4fc", + "vendor/danog/ipc/examples/server.php": "9348084c9e953b6dc4baea33aa32c931aa4a7b25285ed28a2f73138315bbca39", + "vendor/danog/ipc/lib/IpcServer.php": "417b1cb962bac27d105a64e417a31c1fa15850337166edd5185ed1b6f3b8cb93", + "vendor/danog/ipc/lib/IpcServerException.php": "d53adf935b4bc70a07800dec34a0a091e26d838dfe00d8b0d7399548c8890b40", + "vendor/danog/ipc/lib/PendingAcceptError.php": "e70c15b3114de37785164da67bf3331d8e00c87c386a5664755cdc787c972073", + "vendor/danog/ipc/lib/Sync/Channel.php": "0e62f12fb430702d0d7ba1c9ea951afe10f28b79c1f0067013dc0c4c59027bf9", + "vendor/danog/ipc/lib/Sync/ChannelCloseReq.php": "f9520aee209091c3471a974ba1a8db37cb5c6abf5fbdcbe96da033781a55ad35", + "vendor/danog/ipc/lib/Sync/ChannelException.php": "9281667c36fe89869dcd3d19093cd0d071f409f8a089e3aeedf27bb38c27cc52", + "vendor/danog/ipc/lib/Sync/ChannelInitAck.php": "51b4a7f7e6bb06570652f0e640756ed6b91c583c285c5087dfbf93adf7bc6d83", + "vendor/danog/ipc/lib/Sync/ChannelParser.php": "4025825d5599a96b1fc5ab67d559c62915621981366c54fb31ca7917ed456435", + "vendor/danog/ipc/lib/Sync/ChannelledSocket.php": "377badcf40f453664c885893f80bfbc2aee75ef974fa5f5072ff34c6567aafe4", + "vendor/danog/ipc/lib/Sync/PanicError.php": "e96e071026a81d12f7e5ddca66156af385455fe383718acd45fd8d251a174dd1", + "vendor/danog/ipc/lib/Sync/SerializationException.php": "18a8899fbf5fd54b3c00c8ef9954a0f1cbababb962b7c2db67f8cd9f9ddc1216", + "vendor/danog/ipc/lib/Sync/SynchronizationError.php": "f40f7f8054f108b721932887f62f6ede068c3cf07ab1da4e9a65870b49cdacb4", + "vendor/danog/ipc/lib/functions.php": "fae5820071f2a003ac6287feb7f9014e2da469fed8548c264d292b5932c0d6e9", + "vendor/danog/ipc/phpunit.xml.dist": "640f97fd6308b0cfa26bdea3b305e314d9916948ad6bbb3e69c52a6a81174349", + "vendor/danog/ipc/psalm.xml": "4961799da3607fb7698317e10f950b39856e16c02ae479ffd5b28d31bf236f81", + "vendor/danog/ipc/test/Fixtures/echoServer.php": "08df91ec3191e6a65ee55cbdd0354337b01588cc623455aad2bf463799b5e177", + "vendor/danog/ipc/test/Fixtures/server.php": "520282f145971165b56565c225d52689a4e0f626ea041122da73765db6660268", + "vendor/danog/ipc/test/IpcTest.php": "c37735cc3fa25cd51f26850e51599a94dae751ec27ea6e5814dfe3db2a55708f", + "vendor/danog/libdns-json/.gitignore": "f0bfde2d9320509f1764870e061de56c1f0bd7a45281d82ae17832a0a8957951", + "vendor/danog/libdns-json/.php-cs-fixer.dist.php": "ed3405fa9e2eec9738384e65de13a8652fe39be09f7af2e8b317fc365b6b9213", + "vendor/danog/libdns-json/.travis.yml": "21280015a3000b9ab387386a9630e9b10ce6775ecc27514c0e008527101b5e86", + "vendor/danog/libdns-json/LICENSE": "eff216d768cf4549198f24abbdb80f55fec10afb5876920291993d8d59c3aa47", + "vendor/danog/libdns-json/README.md": "ebf7397249cd162821ce770ff28377be20349c478416c7ba16d2f4ec193046c6", + "vendor/danog/libdns-json/composer.json": "d06afda1f7b7dc8c3209ebd46fab935986f75f70414208311c66b6cc6580411f", + "vendor/danog/libdns-json/examples/.gitkeep": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "vendor/danog/libdns-json/lib/JsonDecoder.php": "54d75600f8b7ae4fec1c1863c0de73e79d53980aa1c895bd6156da633698fd99", + "vendor/danog/libdns-json/lib/JsonDecoderFactory.php": "8b4f3625d613ce8758ef474064a0c7a9bb6ff81c046e762f1d823c70ce2b2731", + "vendor/danog/libdns-json/lib/QueryEncoder.php": "e53efa0e5334eb209e80474056d9c4d105db14fcedf39967e5a8c080c54539fd", + "vendor/danog/libdns-json/lib/QueryEncoderFactory.php": "3ba84da1229e2e278581ee5faaebf2e77fd28c8c19220a9b2ed690c4b046468d", + "vendor/danog/libdns-json/phpunit.xml.dist": "6cb69d48760426a3023e385aa5b87bd8f6bd4e3071c37bee8341a2e4deb28f24", + "vendor/danog/libdns-json/psalm.xml": "4961799da3607fb7698317e10f950b39856e16c02ae479ffd5b28d31bf236f81", + "vendor/danog/libdns-json/test/JsonDecoderFactoryTest.php": "cd942ba54ecc4943a7968b0fd39572fa3ffee3f45a4d5845661c3bf15e3eb9ab", + "vendor/danog/libdns-json/test/JsonDecoderTest.php": "89a9350401dc605d49e1cb8e64d73a294b12cd509ea233ac0109fc84360227bc", + "vendor/danog/libdns-json/test/QueryEncoderFactoryTest.php": "6e6971edfc5d6f3a32bb3400d7b4a40066f2cd3d6ef342dfa3cadd80ef48973f", + "vendor/danog/libdns-json/test/QueryEncoderTest.php": "fd8538accecc7381d1670eeeb4a3588e26a14ce5e7f273509564aa37a6e85a9c", + "vendor/danog/loop/.github/FUNDING.yml": "d32aff5b00bb9eae134a36c19ba9680f222d4aa62d4af8b1e349769fe98e85dd", + "vendor/danog/loop/.github/workflows/main.yml": "454c61f954a3b3f3910bcbcc52878249efcfa9f25c1a0aeff0d6251df9d75691", + "vendor/danog/loop/.gitignore": "7aaf4fcebed10e30dba385418de0e8d039fd425d784b96605b1c21f2a17aeb7e", + "vendor/danog/loop/.php-cs-fixer.dist.php": "579e3f266e1b2e456343d181cb5c54e40bb6e77dad88bfb2efcd0b7dfc0f5a48", + "vendor/danog/loop/LICENSE": "30f46fa760c0c1f5d98504008487928f496c61043c304a3fe1624e15b3a7fb77", + "vendor/danog/loop/README.md": "47059cbba7664d2d091d470015c86bc448bb2c329ab6c736e6d6af10eca9dce4", + "vendor/danog/loop/composer.json": "1e55c4a5bcf86a146f6850e162869e166082e8f8639a07e4404ef699147cedee", + "vendor/danog/loop/examples/GenericLoop.php": "fa2572c2885e8efa059639d8286d2449df792809d4e23f7cf01fc2b5e3efd13e", + "vendor/danog/loop/examples/Loop.php": "69ded3ca8ddba3ad9c5fe6981330cbb76fa05c547e585db90b54d36b9315f0c2", + "vendor/danog/loop/examples/PeriodicLoop.php": "adfbfcff8a53f030959afbb762a8934ee775f468cc709686180bcf54899cac16", + "vendor/danog/loop/infection.json5": "819676233f92c8095236063d0af7b625dd95caa027e2805ae544b3bd3af58985", + "vendor/danog/loop/lib/GenericLoop.php": "a1452b0ec5c89a04448a60acb7d39a5b8e3aafcf659fedce88d053e7a064b359", + "vendor/danog/loop/lib/Loop.php": "397ebbb77587b95a36d64e73b3cfba3a614259e978f3638ace86e1aed1f0ba3e", + "vendor/danog/loop/lib/PeriodicLoop.php": "aa96e010d9075138e8c8dbc27cc9629f7a93a446fc483888a53fbc8863b34f43", + "vendor/danog/loop/phpunit.xml.dist": "a441a63283bda2e7379129be3ea96ce93d5f91880b190b2ad9d0ba2a74b48aa8", + "vendor/danog/loop/psalm-baseline.xml": "c4a5384a824b29519780c9e8408a2b699fb5906c72ea5f60a9f2454de86586ad", + "vendor/danog/loop/psalm.xml": "ba02d0f19ab58876346aa553b34fc02636e13ba4f962ec1272ada5675d8e0db5", + "vendor/danog/loop/test/Fixtures.php": "cae6a189844181c5d433467ecef2d3bf166ddbc97466da23d37fdbc525b9fe2a", + "vendor/danog/loop/test/GenericTest.php": "d52281a3b81fc45f5c858e983a2652b01646402e7f1b02d741dd251f866276b1", + "vendor/danog/loop/test/Interfaces/BasicInterface.php": "4e97dd218da2fb9b8391dbb2b4251725894cfaacfb25f96d274c7654dcee366d", + "vendor/danog/loop/test/Interfaces/IntervalInterface.php": "84dfd4c37982cb97af9e2a3783cd98109b4d2bc6ac5c42834f7d17e09884ed77", + "vendor/danog/loop/test/Interfaces/LoggingInterface.php": "e830216823258d98651d42238ed96bbc5e3e26c4f9aa46cc7c79abf915c3012c", + "vendor/danog/loop/test/Interfaces/LoggingPauseInterface.php": "7e9435182e06b198fe7b9e6c7fe95974c31128cdb7070b3478728e7567faab1a", + "vendor/danog/loop/test/LoopTest.php": "b3dc028124755095a853bfef89547dd4031a3db5894de7184ec1ff84690239c3", + "vendor/danog/loop/test/PeriodicTest.php": "7678d3c30e81ae27f137a77ebaaf99d8e48f45436380f9d3ca928c7161dba105", + "vendor/danog/loop/test/Traits/Basic.php": "a142d1944f8f2c9e318bd18b1a846202ae271139945cc1b4fe9a152a17ff321a", + "vendor/danog/loop/test/Traits/BasicException.php": "755a1e1dc7a4f9cc7e00022cba4225974c11d2b8b9fc3b51821b93fa12def6f2", + "vendor/danog/loop/test/Traits/Logging.php": "217d614489ca869e57d13164fd28f97530373236755f724cd081706c9962f2c9", + "vendor/danog/loop/test/Traits/LoggingPause.php": "b4c61ca0bf08f42e466361560b1bf9050299342649a6007cc036da4cf77c185e", + "vendor/danog/madelineproto/.env.example": "1faa2a097db34870da700695fd27c91aafc253ef614204423c87dd2a9e7b3852", + "vendor/danog/madelineproto/.gitattributes": "3bb98dfe72b07470c126ea3bf718cd1971c91d06f06c142c1a3f61576e8dc527", + "vendor/danog/madelineproto/.github/FUNDING.yml": "d32aff5b00bb9eae134a36c19ba9680f222d4aa62d4af8b1e349769fe98e85dd", + "vendor/danog/madelineproto/.github/dependabot.yml": "35b5680e83f80194487d51ad721de08391ce8199bbdf8e453824f901a944d837", + "vendor/danog/madelineproto/.github/workflows/build-docker.yml": "9405fcb8d8df3e05c4b11f86f94254a090a00c1b42cb2aca98834ee6db2c23b4", + "vendor/danog/madelineproto/.gitignore": "8347e9181a68a2bd6cfdacb6d5d5566ea7b90263a3d3a9b242262d8dd2c7a89b", + "vendor/danog/madelineproto/.gitmodules": "0be1b15bd151a137d0eda35e859e2a44dab559f77f74f6f50b628cec212044cb", + "vendor/danog/madelineproto/.php-cs-fixer.dist.php": "e6f8a73f396da6de3ea5893d180620067666e118767d468f05756886f493809c", + "vendor/danog/madelineproto/.woodpecker/.build.yml": "eb913148d05384b111ee26730e9e1c37cfe7f0e333e8e5d892a49350afbf0d33", + "vendor/danog/madelineproto/.woodpecker/.cs.yml": "aa115de698758c205b898596a9d0cc8d3cf158653314d4bed3c571270f57a117", + "vendor/danog/madelineproto/.woodpecker/.test.yml": "de1c35389071868173af77951a4286e813e1bfcb77170e81bc65ae466c38dcfa", + "vendor/danog/madelineproto/CONTRIBUTING.md": "4b4213767922e7b3f8e7e12d4a771494309d3bce9867cbbb81a64bb737d59851", + "vendor/danog/madelineproto/LICENSE": "57c8ff33c9c0cfc3ef00e650a1cc910d7ee479a8bc509f6c9209a7c2a11399d6", + "vendor/danog/madelineproto/SECURITY.md": "0c6710a81610c0fbca17d32d52373950dbf24f83a1d5e84020486f69cbaec694", + "vendor/danog/madelineproto/composer.json": "18de335fb004ecfea1334bdf98d53dc2dc5045d6202723d19cfb3004b7293073", + "vendor/danog/madelineproto/examples/PluginBase.php": "b164638114bbb205fd87104f09aa11447e293d75b2fb493a9dd9e50150003cff", + "vendor/danog/madelineproto/examples/bot.php": "9616e412c389e07ad2a6624dfb50df71634d05f5250f3d7e9de1eb6bb39b5dad", + "vendor/danog/madelineproto/examples/combinedBot.php": "bd3b3152e0df0482d233deee69a6cc58cbc4acb75f562d6c4344cd74d312f668", + "vendor/danog/madelineproto/examples/libtgvoipbot.php": "60017993a9db0011fc67abbb42a205465dc3a3bf8b7bc5258a4f043463f65a11", + "vendor/danog/madelineproto/examples/plugins/Danogentili/OnlinePlugin.php": "9b0fa9b521334ab18f5890cf102189fc63a1a1266ed1f92c11ea2393937a3218", + "vendor/danog/madelineproto/examples/plugins/Danogentili/PingPlugin.php": "275e86e24331d00d361ef4a8948d91870aeba7d0696a63c086f8f4c921e17a61", + "vendor/danog/madelineproto/examples/secret_bot.php": "fcd1a91de925b231eb6816e75c820e5f1b91ceb1c1cd24172d00a17312ab5c98", + "vendor/danog/madelineproto/examples/simpleBot.php": "4d34e4e020e86469e71712b55aec639afe6bf231d97b4bf7ffbfcd3307b34b63", + "vendor/danog/madelineproto/examples/tgstories_dl_bot.php": "d0731578d9ecbf22b219a87ed6a4e36baf12bcc1a8c1d21d157d231e10b2f9f5", + "vendor/danog/madelineproto/phpcs.xml": "e3e8b89077a156aeab302dd2f56efc25602f2e8177c18adb485cd6bab97fd285", + "vendor/danog/madelineproto/phpunit-light.xml": "d5ac89bfa9da06f48231b7639eb91487e6bedaebc159763a8b35df17323ef63d", + "vendor/danog/madelineproto/phpunit.xml": "adca612f09807422cee08d73a0c9d3e21d3ace9f6c91b3eb75da336cb8a8584b", + "vendor/danog/madelineproto/psalm.xml": "c39941e28f120979462a033eb5306a019d1807c6b390981453cc94c54a7cdbe4", + "vendor/danog/madelineproto/src/API.php": "edc2bbd89dbb5c514345d3c7a7aae0779572ece2fefbd43bf4e9465b660d496b", + "vendor/danog/madelineproto/src/APIWrapper.php": "b5520c14bcb705c28e3e19ee1deda3707495c3f6c2d1a5fab132669f61e90d89", + "vendor/danog/madelineproto/src/AbstractAPI.php": "2ab51b33778ddfb5e72acaa548bd21077a6509d3c0b0b50bb56dfe11d6717c99", + "vendor/danog/madelineproto/src/ApiWrappers/Start.php": "a093991c5e66efe5e0f5d68ea6f1f8c85dbd9750a04f20b2acce645de2ef124d", + "vendor/danog/madelineproto/src/AsyncTools.php": "948a3d5b480afa0268bbe2f19100c2a44972442df4c86bb1b4e729e5219533fc", + "vendor/danog/madelineproto/src/BotApiFileId.php": "e3e19ce51052bf066609ef98891a33644d60475e09a865606d5a625e7a6bdca3", + "vendor/danog/madelineproto/src/Broadcast/Action.php": "61d7f9464290b43bd34e3a5bfb25a44187fdee6e74e73824335e44693644bc34", + "vendor/danog/madelineproto/src/Broadcast/Action/ActionForward.php": "2294c6633a3b748e77c96c6cb0c7cfefd947f46e5baa9c8703701974f52f5f0a", + "vendor/danog/madelineproto/src/Broadcast/Action/ActionSend.php": "e46b3db1337eec80c623d8cfddb726d2833b42facc1f201d3f054328f64f13af", + "vendor/danog/madelineproto/src/Broadcast/Broadcast.php": "e6ac6111643dc908a311a50a708036d96c581133447754848e74b169b9412ef1", + "vendor/danog/madelineproto/src/Broadcast/BroadcastCancelledException.php": "6a40a374fc83a554a58c7d04f90039d288fa91dc430bf17755f80f407bf32af5", + "vendor/danog/madelineproto/src/Broadcast/Filter.php": "a2a31eeaba56dd96aa167803005b47aeaa74c003357e691b8890ac56f6595dca", + "vendor/danog/madelineproto/src/Broadcast/InternalState.php": "a48bf1cc86352fb71eb5d419c279dfc7593b15c68c94a19830d2dc6925746699", + "vendor/danog/madelineproto/src/Broadcast/Progress.php": "f3fede2915b617d2561c20ecec71c6af781cfe78431d34883826f193379e1627", + "vendor/danog/madelineproto/src/Broadcast/Status.php": "55920995551c7dbedff78bce8df7f02302991c9e4aa803d7f7c91a6dd1cdbd6b", + "vendor/danog/madelineproto/src/Broadcast/StatusInternal.php": "d4dca162da0a7cf50952c70d609b417f17026199f1378625cc6187a49ebb9df2", + "vendor/danog/madelineproto/src/Connection.php": "bc63a62941275a5236308b78f8a313e7d124d028f9f0c70589f17f457ba926a5", + "vendor/danog/madelineproto/src/ContextConnector.php": "56c77c5965c80a7e49ad4c6e04de16e292cde52c81646ba12567f1db94c25fb1", + "vendor/danog/madelineproto/src/Conversion.php": "63ad902c3b212f8556cb54ddc3cc4be4a382717688f58f8dfdac9d2960d4733e", + "vendor/danog/madelineproto/src/DataCenter.php": "d349ac30c2f46e8f21b881eebf40db8f83b06c4f089c12730f60332059dbe602", + "vendor/danog/madelineproto/src/DataCenterConnection.php": "69b07dcb90934085dcb91a116a41b526427b71c758bb3a58f14837f04650f3de", + "vendor/danog/madelineproto/src/Db/CachedArray.php": "6fd61c3f5d0f66a8384c2141384077372a41a5b62d523d38b693e41315c70490", + "vendor/danog/madelineproto/src/Db/MemoryArray.php": "419a742b83f6312411184138b95bd0b085d944f1b956626662edea7108d9c31a", + "vendor/danog/madelineproto/src/DoHConnector.php": "3e5609af5511ddd74bc04e386f6ba923d48d3d89920da3a41285f3668d205462", + "vendor/danog/madelineproto/src/DoHWrapper.php": "9089fa53a8449d0257fc60233dcf95333517275e346814858e8722fc47f16bf5", + "vendor/danog/madelineproto/src/EventHandler.php": "6fce62b2f1d29da258f0786a988b035e5242a121b3decaf251b488820163d2a2", + "vendor/danog/madelineproto/src/EventHandler/AbstractMessage.php": "e5b1a098ee2c1d3ddcee5188b687462d1e1c52f63aaf0245a6d573b511e1f98a", + "vendor/danog/madelineproto/src/EventHandler/AbstractPoll.php": "24513c563351e26868306a0555289c4fa3b46df14ed8e80de0d5375262c4a30a", + "vendor/danog/madelineproto/src/EventHandler/AbstractPrivateMessage.php": "fffdf42d2f4bbe74edb834a8f1f03deda0791deb738566001c9dd22afc4545a3", + "vendor/danog/madelineproto/src/EventHandler/AbstractStory.php": "e2ebcc6d32c83f93ba7c15fc8416c46e21d2bface74104c332767eb2a5a584fd", + "vendor/danog/madelineproto/src/EventHandler/Action.php": "f3ee57b3a400075a3060dc063547d0c88df6ac64b127e73f28927cd672586f76", + "vendor/danog/madelineproto/src/EventHandler/Action/Cancel.php": "9ec7ac3ae6cd90a513426fb7bbfedd296a0cce6dfd2df75409345e3c3d7ba0f0", + "vendor/danog/madelineproto/src/EventHandler/Action/ChooseContact.php": "808091cce619742cfda4ed688cb018a3ff9611805e321fa896bff4208ee115c5", + "vendor/danog/madelineproto/src/EventHandler/Action/ChooseSticker.php": "afaaed7ba9e50cc2794ed9029f3876af7512a6b17b930682142388f33b5376b8", + "vendor/danog/madelineproto/src/EventHandler/Action/EmojiSeen.php": "8457f8bb2a8b0f49ac86d0e056573d98d24d294ab78c40b71236913aca6b358a", + "vendor/danog/madelineproto/src/EventHandler/Action/EmojiTap.php": "ccfca8e249694011ab7d489bec2d60f8c88362d51a14115d34143a34d3ae88eb", + "vendor/danog/madelineproto/src/EventHandler/Action/GamePlay.php": "6ca989939c22fcf9c8b051eb151c72c7831c62fcbb14882c36fb883a7624efa9", + "vendor/danog/madelineproto/src/EventHandler/Action/GeoLocation.php": "fe598b8edcb81f5758101b3971463d2ab4d10e5eeb98e3c7ea1bbc8af6b1c1eb", + "vendor/danog/madelineproto/src/EventHandler/Action/GroupCallSpeaking.php": "d24cedd73d8e5c46bb3ea6f2c9545b99bdba11a3ffeb904cf3e9a3178c5bf40d", + "vendor/danog/madelineproto/src/EventHandler/Action/HistoryImport.php": "fee3d4bb5a36849847404cb4feca29e12d8f65557217fde69da4a683d95a0c64", + "vendor/danog/madelineproto/src/EventHandler/Action/RecordAudio.php": "e57a5781190d682f4fa33dab8a112fc579b170bb9bf5e4268977aa556bbdc119", + "vendor/danog/madelineproto/src/EventHandler/Action/RecordRound.php": "37cfecbef5f50f9dbdb3c3e059c81e31849398588be05e753ec79c31dba80664", + "vendor/danog/madelineproto/src/EventHandler/Action/RecordVideo.php": "ce929a7122d470256a46688a4e128787b9539d56d9ba8b4fc0ac99d5289ded72", + "vendor/danog/madelineproto/src/EventHandler/Action/Typing.php": "65bdf4708c08a30f8ef7b961d51730e7e75ae4762b1794bcc68ecd29e99ccdb0", + "vendor/danog/madelineproto/src/EventHandler/Action/UploadAudio.php": "5e422a1cd029298c4e5456bf4c4f1c87a49740e306db624c45a1c72c8c637a21", + "vendor/danog/madelineproto/src/EventHandler/Action/UploadDocument.php": "f4d902a6aad87c4fed526fdeac46eda7eb7c43125e30ec8efa78b7614b764acb", + "vendor/danog/madelineproto/src/EventHandler/Action/UploadPhoto.php": "df86c3fd226cba984dae192d561c6c519fc7fa8ee2eedc64b59737aee477a866", + "vendor/danog/madelineproto/src/EventHandler/Action/UploadRound.php": "52ea2f19b5edd2310cdd2e589d48c19ca95a816eb200d43bdcb59ffe4ceb5a56", + "vendor/danog/madelineproto/src/EventHandler/Action/UploadVideo.php": "ab4fea1813ff4d1d2c3e2eee60bd12fc6e9ae7c5b1684283026a52cb3b0279e4", + "vendor/danog/madelineproto/src/EventHandler/Attributes/Cron.php": "8a77dad295208705c7c3997fb1973a2639f11fc45f3aa0bc0794b1eb8cb584e9", + "vendor/danog/madelineproto/src/EventHandler/Attributes/Handler.php": "337e3b172edbc198e7ac01a7b0d5ce33286d8a1d4c12eb968ff0d26ee44e261e", + "vendor/danog/madelineproto/src/EventHandler/BotApp.php": "c5d62f54dbf69993a06ec97f6e3d7cfe79768363cb179e30c804dcce3f5a4e48", + "vendor/danog/madelineproto/src/EventHandler/BotCommands.php": "08844e59367e3f572dd34cadbf0fca95b94941d9c97420d7d8aea29ba567e198", + "vendor/danog/madelineproto/src/EventHandler/CallbackQuery.php": "f2dfc34bd8358f2c139a27ed315a9ef06cf8cdaa91e016448dc339e1ec973eff", + "vendor/danog/madelineproto/src/EventHandler/Channel/ChannelParticipant.php": "1f021e48f89451976383a86004f8455de578edbfc8190e9dcfc1adab00ed5d31", + "vendor/danog/madelineproto/src/EventHandler/Channel/MessageForwards.php": "ece71e4a0ad255ef86b837b10d4a9054e58e9f8ede4cf3cdfa7e71203327c34a", + "vendor/danog/madelineproto/src/EventHandler/Channel/MessageViewsChanged.php": "a759accb35432eb7b5db76de8ac73fd9fdace2b7ce5d1d7f1ebc7420c0b9c2fd", + "vendor/danog/madelineproto/src/EventHandler/Channel/UpdateChannel.php": "20bac6c6badd00c56ec3f6108a94e4dab262c799d35c9e9d1013c92b000e0a8b", + "vendor/danog/madelineproto/src/EventHandler/ChatInvite.php": "ce6a4853525a4603ce283cb53528d41bfbefd5ca054246e8b636e6549018ea90", + "vendor/danog/madelineproto/src/EventHandler/ChatInvite/ChatInviteExported.php": "22a1566c73e9d8152f4397cc402f450c41de77751bb73722a22911e9b6e9a829", + "vendor/danog/madelineproto/src/EventHandler/ChatInvite/ChatInvitePublicJoin.php": "fc1d33fc182e5d4c23b2d54b867a3eecd22bbc7c35a3ea4c8621215977906bb3", + "vendor/danog/madelineproto/src/EventHandler/ChatInviteRequester.php": "cdb327286abca16d7b580a9f2b8995aebc968a13071efcfdde95a3dcf9331a5f", + "vendor/danog/madelineproto/src/EventHandler/ChatInviteRequester/BotChatInviteRequest.php": "5ffa87496c3f62b7d798f694bcb06f96a01487b7ae9a3748d55633673b068e16", + "vendor/danog/madelineproto/src/EventHandler/ChatInviteRequester/PendingJoinRequests.php": "913a0d3b7f6df0092bcb63e3603e9326a4d0cb02a1c9fe6fbb6dccb42085922c", + "vendor/danog/madelineproto/src/EventHandler/Command.php": "6f46d8c4a02e79169c57024b1f7337e234e88c30c5ef451f778202ba141b784c", + "vendor/danog/madelineproto/src/EventHandler/CommandType.php": "99d688b8834c1346ceca3de25d4d6b0edb210562efaffcacc15f61165a2fc45c", + "vendor/danog/madelineproto/src/EventHandler/Delete.php": "a11804a6c8a465013172968e3a029438a69138814e3e8b4a24c9b0d00f4cb68f", + "vendor/danog/madelineproto/src/EventHandler/Delete/DeleteChannelMessages.php": "937905b2a2f5d87ffe333223b6cc22eba98faefdffb7c2a178a3085dbb0ecd88", + "vendor/danog/madelineproto/src/EventHandler/Delete/DeleteMessages.php": "6c559ab99bc5009fbfcb1b8d21b6681f009f02969ead170a146394307f25101d", + "vendor/danog/madelineproto/src/EventHandler/Delete/DeleteScheduledMessages.php": "54ab9111401a0bee5d71cbb88ae7fa6e8cffa5c2e4a69b08a030203d868aeb39", + "vendor/danog/madelineproto/src/EventHandler/Filter/AbstractFilterFromSender.php": "e1a419702d9cec9970ca162f20b2898e993f60f8ba1007e88f40aec7870904ab", + "vendor/danog/madelineproto/src/EventHandler/Filter/AbstractFilterFromSenders.php": "dd8eec7e3819ad0ad6790aca38c2677c7808d75749495364baf482985a542a1e", + "vendor/danog/madelineproto/src/EventHandler/Filter/Combinator/FilterNot.php": "06bf6dd9ee01611a8a14e32cfb7cace5bf1e93e55823e27573ff5bc767aa3444", + "vendor/danog/madelineproto/src/EventHandler/Filter/Combinator/FiltersAnd.php": "ff6cfd23806637e91566d9993119b1937ae04100a9da67ba8264417d5bb218d5", + "vendor/danog/madelineproto/src/EventHandler/Filter/Combinator/FiltersOr.php": "4eecc428e55f213ee97acaf9c501aa0af69c8cc1ccf6c68f2d58376484fcfd72", + "vendor/danog/madelineproto/src/EventHandler/Filter/Filter.php": "9d6f83064104aa5b4e4f6bc46be08dd0a09d35f376150a87f2c14b7496a0396c", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterAllowAll.php": "82a60c5b930110400d6f0c065dc563fd119f36aa50acc10765eee8ab7e0749f6", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterBotCommand.php": "4f512cc09aa88d1a094ca772eb6d8f22eb0db223587296f56f358f201bd74eeb", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterButtonQueryData.php": "6e31efd4b4146f61a6b62596eebfae38c9b7e3e40f99c5af16ee8db07ca0db08", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterChannel.php": "7220d2132f569767f9a63edda73197cec482989888ceab7e75319f668e335197", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterCommand.php": "1ce3089af9e506dea68497884964631a84529ca6a7432f6015cbfbcbaa9d3b49", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterCommandCaseInsensitive.php": "b4d5272b007a5186e7f5be0699547df0fd800bff21e24f048affbe09bb9770bc", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterCommentReply.php": "ece9a5b6e5af15396c9576a3db42b4e120b1eace029bcd83e0c382c24a225e27", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterEdited.php": "be544553ca77b2aff47eac909a22221fa3d247bcfc13f377dc6c9cc21b747b5e", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterEnded.php": "33101ac08d4e37c7362b58eaad7b4e3cf797a87526b431cc78411986b5469992", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterForwarded.php": "ab2d2b563ad9c7f10322f96287b3efaecc456e1136fb78f203ac4eb3a9df7a30", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterForwardedFrom.php": "1d40cbe6ba8e2195b88dd7f536780cc0162136d7bd9ce5d6635f4da99f470a99", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterFromAdmin.php": "35d724024b506aef6e2217adc9d343ce460944ef59a5cff98edbd1851c953c89", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterFromBot.php": "f44906022b8fed9a291df9fdcbce7a2115e800269bc0f1db3eb0f94f17d6e71f", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterFromSender.php": "e9cbb315ae3f7116dcafc3ebb1aec1d8a1eb45b7595253c4fe93f824e4c6f28c", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterFromSenders.php": "65b4e0ed59e47704fa5019050c554af57ee31236ddc360077e321ae1ca0f46b2", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterGroup.php": "9790a77d5ea3a28a486d4521a637add733d8ce23a3f106f02e455c42ded81296", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterIncoming.php": "773ed7ce644115ead5f3a636b8caa05fe520bbf4c7d358400994c1980e183acb", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterMedia.php": "f144a7924d648183dcdf7b9f1ecb7289b812ef96a6cb410dc2abceed177fc819", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterMessage.php": "0af7721c4bac711b9df01ec219d31ded81de6839fd14ef1d2660374e0351a170", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterNoMedia.php": "416f70e74f3fe6fffb7545aab26520c8fe9df3e0b728d2b23e788cb6b778f6ba", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterNotEdited.php": "b48c3dbf70d10f10f06a7d814bb58f6ae6b0a8b57a7df2bfc594d9764f82a576", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterOutgoing.php": "a8aaa37001905dc49827aeeb71a072a4d04ba10368d7bbc3cf623a609b210b89", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterPeer.php": "4509a9b114fe93aeaa98ba5d9d4d44534030fcf7e2e482125282369c23db6ae2", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterPoll.php": "15da719c162a9231644def6c0bab659d350bc023182469cc8aeabcf4bbdeb053", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterPrivate.php": "7b67bb888f3a3233c9111c2a83d2842ee12d13a24828d0d3a9a4bb4c46dd3cd8", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterRegex.php": "5b0321a1f41f2586aa12960f0aee376336f0bc205ab02031127d5530023924a6", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterRegexMatchAll.php": "1302a13aec411a6de071a4769d1330d76c61a468ba85c093bec18e7a34dc98b0", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterReply.php": "8add2c4ad8d1ea61dfcabbd081e9a45c47711fdecbf5c4ac1bf5360b306dfa52", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterReplyToSelf.php": "9b3b6058cc26b703181063feffffe246538c10b7850e5859c533f9273616b702", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterRunning.php": "5524053c262489887562418d4eb2cd0e00c76cd431e0a5363e820ddd845f8ec7", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterSecret.php": "2faea566ad1803567acc08ac198577f19a51118a780a4ad768f4189ebe4987ca", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterSender.php": "53c3054df7aa708707b686a2cac7a5ffcf4c5827e2f388e1df05f9049a6d5900", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterSenders.php": "74a41ab0d199b4be7ce230debe58af35c8203f66c278a3d855f8ae45b92b94cd", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterService.php": "a19f1c3dad0433e7eb7e508ac2e9e516f15fdb6ea9ffab977d660d345be5334c", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterText.php": "067b6c7d00434e500928dde84061de2c7eb65191432fe785a4681fae73314e0e", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterTextCaseInsensitive.php": "1f15856e48dba38a21220a5503ee4b8683305fb7c1d1d108011daae272a65f4b", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterTextContains.php": "0a3f67117097a951894ce568d6fa5d616f6cc51488b866f5702754d78c104396", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterTextContainsCaseInsensitive.php": "351703466b333ad905b1b7e6ad61a50c244de8791eb9df19f0c025c0ad01b1ea", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterTextEnds.php": "d960ca5fd042557d6366862e97237962f006e8e97655f5a04395abc0e4f0abed", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterTextEndsCaseInsensitive.php": "da42675287056ed626c4e2d7a68b47d35e461f0519b8767f18b320c8a5a82945", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterTextStarts.php": "e559817a313d3bcb7b7343700e4f4dc341f7be8f7b51c92de2759abd24d3b2b6", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterTextStartsCaseInsensitive.php": "a778ccb27b87829c29669d7f0696a86dae9df3b1329d6c348a581f1801256990", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterTopic.php": "2a80dd2bb608018665400e627d593c7cdfd347ab939e1ea8ab41b0bd2babd09c", + "vendor/danog/madelineproto/src/EventHandler/Filter/FilterTopicId.php": "09b1e2096fbbee7fd65d11ad8aff43ab1a5a4895959eb55435ec8a9613d9c52e", + "vendor/danog/madelineproto/src/EventHandler/Filter/Media/FilterAudio.php": "acd2d1e66bf90acb033760c3370d1d7308a4528d9951a171dba3b5b0d9300353", + "vendor/danog/madelineproto/src/EventHandler/Filter/Media/FilterDocument.php": "79fa91420da5c32b13e0ff1db5effaae1cdd82c5aad8a0da9681e432fd4651c2", + "vendor/danog/madelineproto/src/EventHandler/Filter/Media/FilterDocumentPhoto.php": "594a844769d4537ed9987443d8ae1f709f63cc9079428bb8b00404eca166f855", + "vendor/danog/madelineproto/src/EventHandler/Filter/Media/FilterGif.php": "4e5323e77ccfa0d5ed7ee28fc53bc3876552f2b7ed8e0ad8b593fcd68a89f1fa", + "vendor/danog/madelineproto/src/EventHandler/Filter/Media/FilterPhoto.php": "ec28ab020d24e900240c5b74f82aeb94dcc1f4c4194da689699a532fe990805b", + "vendor/danog/madelineproto/src/EventHandler/Filter/Media/FilterRoundVideo.php": "2686282e80b583c931d736e388ba2838b3cd22ed5091d7207e4bb3a7b5fefe82", + "vendor/danog/madelineproto/src/EventHandler/Filter/Media/FilterSticker.php": "a0913c19c9f37d86b091ad113b45ab5db9281f305b34e1646805bfa8b6958987", + "vendor/danog/madelineproto/src/EventHandler/Filter/Media/FilterVideo.php": "e7cd3ed8b9ef7d446e599051f207398fba9d8967f608570a106d5fd323e4d115", + "vendor/danog/madelineproto/src/EventHandler/Filter/Media/FilterVoice.php": "6c6b4905482ba30644aeb5a042b56ada62275097b14af6f555ba381eaf2bb3e1", + "vendor/danog/madelineproto/src/EventHandler/Filter/Poll/FilterMultiplePoll.php": "899282c090f10e673b1f7c323fc4a310d302a129f91470fd43e6f64c92559c9f", + "vendor/danog/madelineproto/src/EventHandler/Filter/Poll/FilterQuizPoll.php": "649662ea9f1b9b0721b17a7e8aff4543b0c7c2bf85befc8734cc414979a54338", + "vendor/danog/madelineproto/src/EventHandler/Filter/Poll/FilterSinglePoll.php": "bc5bce30780e3a4b160a65bb4482578d94d50e43ecabef1488631ce254b1676d", + "vendor/danog/madelineproto/src/EventHandler/ForwardedInfo.php": "ba39c0cea58b65b65f94b720301974711c0182923937246b583c921cd09b7baf", + "vendor/danog/madelineproto/src/EventHandler/InlineQuery.php": "c983c951f2e6d3b3c0e02609279eec8f83ad07301ca624043ef3e53a81a2331c", + "vendor/danog/madelineproto/src/EventHandler/InlineQueryPeerType.php": "fa56d38851c7281621e189fde66cf6bac71f4568a462838ff888b94682651fdb", + "vendor/danog/madelineproto/src/EventHandler/Keyboard.php": "18e9a86f253c6397b1e455f9d679c3b0f8477164455c292299cb1af21ff4c89f", + "vendor/danog/madelineproto/src/EventHandler/Keyboard/InlineKeyboard.php": "413ddf481facae27c8a89cf9bfbb0eed22cccddc1a3111f3dd8203fe236842d9", + "vendor/danog/madelineproto/src/EventHandler/Keyboard/ReplyKeyboard.php": "15adecd69c87772bc5cf32cc64226930bfa8d243639cc95245635b8c2f9129fa", + "vendor/danog/madelineproto/src/EventHandler/Media.php": "572c8b3ddf6364c171a9a3df3792234bb352919f9560b40c67d087fa7c67104e", + "vendor/danog/madelineproto/src/EventHandler/Media/AbstractAudio.php": "c0c45e83810f92f9d868af81b4e06a759dd938c21382c4538eefdf6d627c9794", + "vendor/danog/madelineproto/src/EventHandler/Media/AbstractSticker.php": "b603cfa8287764506e2e9342b82829131087cbbb0e3bebd5b5cd831df382879f", + "vendor/danog/madelineproto/src/EventHandler/Media/AbstractVideo.php": "8e615c13e0e0337b543d2177c92034c7f909423754fde25319a6ae9de9509f48", + "vendor/danog/madelineproto/src/EventHandler/Media/AnimatedSticker.php": "8de8133ae615548375db2f499a2b6ea2023f2438d5f1072f0d818dc87a306134", + "vendor/danog/madelineproto/src/EventHandler/Media/Audio.php": "36c49c35b8ebdb37a276123728faa1bcfc8254d0cca9a0866fdc9b7e8e39e5c9", + "vendor/danog/madelineproto/src/EventHandler/Media/CustomEmoji.php": "f59137897770703554e944395cea96a189755f0ab68975a3a939f9f7399bb97c", + "vendor/danog/madelineproto/src/EventHandler/Media/Document.php": "b05128a1260ac59675b2bf43ce59f3fb9cffd3d4cac707baa58e1200347e1420", + "vendor/danog/madelineproto/src/EventHandler/Media/DocumentPhoto.php": "d487506d892b2f4dd2e79e60625510c058b706a5df434277a42e12e942b46b46", + "vendor/danog/madelineproto/src/EventHandler/Media/GeoPoint.php": "5633cc441e541e5e919dfa8156192587a68e578e49a496acac91172be5f2549d", + "vendor/danog/madelineproto/src/EventHandler/Media/Gif.php": "a9bfead03942681c0938897925357625d9e84b7601ed3509e08f5d17d5f934ae", + "vendor/danog/madelineproto/src/EventHandler/Media/MaskPosition.php": "1e0d27747ce30d8451c771f595b263de55fe2e03a9afaebcbb6e17cbea2b2dc5", + "vendor/danog/madelineproto/src/EventHandler/Media/MaskSticker.php": "d272228f60586e0242c1f1e88cd7f92c405ec88721a6d3ba5c7dfc532a028edc", + "vendor/danog/madelineproto/src/EventHandler/Media/MediaStory.php": "61cd2a01ea8c893ce107917482fedb7cad4d17526fd8bcb3e20b5985c0e8aa64", + "vendor/danog/madelineproto/src/EventHandler/Media/Photo.php": "b4a16b3d4f42ef872ccbe53fbb2f3b58f45c9657b2abad714803ef35b9410dc6", + "vendor/danog/madelineproto/src/EventHandler/Media/RoundVideo.php": "bd0bb9eee6542d539b15a0fadb82dd638db8f29a8c5f1255302267d6aa88b652", + "vendor/danog/madelineproto/src/EventHandler/Media/StaticSticker.php": "920dbc4307b7b8a64e2ff7bdcb80c1afd6458360828520bfa11703e94b70a53a", + "vendor/danog/madelineproto/src/EventHandler/Media/Sticker.php": "3ed473a4cd6d50cdaa3d6d0c13086f3174bfbfee8d0f42927c449b9fbc23c02d", + "vendor/danog/madelineproto/src/EventHandler/Media/Video.php": "da9d42ec8371a722f5ad98c94f0202fd804f1cb7d645319a0a1913b64937e2ba", + "vendor/danog/madelineproto/src/EventHandler/Media/VideoSticker.php": "d016bf1b1e472ed1b23c24a0a480fa75c7a616a61f7494aeb5e90eecf682262e", + "vendor/danog/madelineproto/src/EventHandler/Media/Voice.php": "afa6951a74f05d3b3368f5597685b7be60e807c20768f50cfa5169959ccb2be3", + "vendor/danog/madelineproto/src/EventHandler/Message.php": "82721091fd2f24202189cfcea68beaa44e82e19add53c910730a747c76029892", + "vendor/danog/madelineproto/src/EventHandler/Message/ChannelMessage.php": "33c804443bced8799c2c99e9aa76101bed37c4be78139b3df8854e4db311745a", + "vendor/danog/madelineproto/src/EventHandler/Message/CommentReply.php": "08877ad31f6a5df44969e7665c2cfb62d91a080f2103f74d3a91022b1952e33b", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/BankCard.php": "c93f54121f39e4412d1f7ccfcb12dd3bca9a97fac0c31b2d9f280ec527fbc308", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/Blockquote.php": "1c0be700302ecbb17981bd04ae6da75d406cc55ac7d3bd71bedcceae2dc37719", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/Bold.php": "5e6994096a1d9b74bbbdcfc47712bd1e19264455a14fd01a0898c4d09617261a", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/BotCommand.php": "e8e7226abd47b05b68f86dfd694f934b2fcefd7fcadb99ea9e63dd1826f08a6d", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/Cashtag.php": "11776efda0057478f17eb452c089d4b37994cef88b6b2027dc84af1d2375f012", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/Code.php": "bb8bb1a0df6694b1d309dc4812ea4b9d9081eecdd54a1c184a8df90ac7cf70fb", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/CustomEmoji.php": "62fafd02dab4171a51ab0f6523bd232a32ed00a78dc41a935975ffbb8f9219b9", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/Email.php": "f5037eaa2246623b5a72fe9665d04e5c9e0568250cb51b33ac7561153b666202", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/FormattedDate.php": "ffe03d0d78215bc42968cd836c25b1f8a602f161fb55eba189b4102d9b99d5e5", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/Hashtag.php": "866d83025c2419f6268c3091c043a06ad70c5a5a6779df6d662b67c44effc412", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/InputMentionName.php": "20f1508fedf9b33a9404ba86f4e74dcc894b86687f67a8e75513ab4ecb05a4f1", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/Italic.php": "f94164c2b9bac248c1a734236704c1614cb6142200718c255132cfe6b425cc3f", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/Mention.php": "251461e1f072f74677ef26afffde05b9b822975080099b58660f05872e9f3669", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/MentionName.php": "ee961c228d93192f5ec7efc75f22e2cfc89101816c32511b0d39ee345c7fd36c", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/MessageEntity.php": "b265ed707326e1d71c7a8bdf8291f0b8c94a153b98a2c4c45c776fec3b374005", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/Phone.php": "b497f2acd0e71c0601e358b6a1b6870932c9a437444e140aeb4298b5995aca91", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/Pre.php": "e2cc627cb92b25245c19a51f5a4e4e10a30acee467c935daf086fdd3a941d120", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/Spoiler.php": "b67d0c7d2a671e12914e6a2a4360dde8be4cb61c52603d2ec19899aceee1b66f", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/Strike.php": "f67fda78a6db5c41b821ae381482c4ae5f9c9f8e618e305c7d54d243985ba627", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/TextUrl.php": "c46d0932a20a2497975004f3d33072052c9d09f40f003d64648b583d22dde407", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/TextWithEntities.php": "a26901f4778d333552f6bf619b72204f3dcc7d8510f9a9504a518d34a542b77d", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/Underline.php": "996af0f8fa1e46ba8c7a43299ccb6b4cf9eaed8a32b7d2e0c0cefff099036648", + "vendor/danog/madelineproto/src/EventHandler/Message/Entities/Url.php": "3f5ac586502da29d34f9826c9506d570007504dbd47ddf3e5a7605f75d0f2870", + "vendor/danog/madelineproto/src/EventHandler/Message/GroupMessage.php": "a1b562b9fc6c0b2cc50255324128673dcd9f8ec2ea1c2fc8c44691a309e32f7c", + "vendor/danog/madelineproto/src/EventHandler/Message/PrivateMessage.php": "abccbee2e30b6684d4e258194b8bd6426dc9d5e3ba358f5fe9b98ed667ce6359", + "vendor/danog/madelineproto/src/EventHandler/Message/ReportReason.php": "5e93e74ec812284db1fd2046a10853a48217e465460b943fa74259a18914ac11", + "vendor/danog/madelineproto/src/EventHandler/Message/SecretMessage.php": "4d984a933e91786babd8234af8306dd5ac9bdf3ac28ca42455f8eafa25ff17b4", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogBotAllowed.php": "14dc96f42cb5577c1378f19888848e7a8ded34751ee0a49fcfd2d7bf3709e966", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogChannelCreated.php": "11353915336616d46b52f575f13a720209c5c26d3ff411fa4d0608b41f3f459c", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogChannelMigrateFrom.php": "3426b67cc626feb9902149a70e7acc060030b520f97981645c2d83f08704d7e1", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogChatJoinedByLink.php": "4c0f8bc1b5cca029d469a9af12da6610d1f473547b27af173292ff96704bfb2b", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogChatMigrateTo.php": "0f4f38948ccb68ad9e1e9d3fa19ec5406db1e09040517700ebc27971c767d208", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogContactSignUp.php": "725bfd42be96514458dad7f4cc8a896740e24d69cc9fa5765585e3a2a1446478", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogCreated.php": "5068ba611a253590b1b547353d39988c8e801c8fdfbba423eba1576302065603", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogDeleteMessages.php": "137ade12969daa05efb30598cb2e666ccc5a12a0e6da28641b39b2ec5c8e8f07", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogGameScore.php": "14b7f555e01c231e80096381458ffe0e1f6c0e983c607d6ccba2037c40b812aa", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogGeoProximityReached.php": "34764271b4820898748bbbb372cd9d9e3f858c60a19da901f9496c12c69fbf76", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogGiftPremium.php": "6cd1475dca61ad50da59dc9f87392e0fbb70ade3b6f4d905530e8b211c699c75", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogGiftStars.php": "12a8444bbd4294c72da9fbe0b1806f6829ffdae9f346ee75c1c37322239418da", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogGroupCall.php": "e476e148e1c8c68dcc537cf8a8252eaa49f93381b2c2359e9ab444d32988e399", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogGroupCall/GroupCall.php": "ced8fd9fb4a6ea50ad804101cee1983a90f06c8813f921cce9c608c679f5acf6", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogGroupCall/GroupCallInvited.php": "0fbe56022b4868c091a51f6660d7d7f5a169fe722748afa5484b794c04bef5fa", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogGroupCall/GroupCallScheduled.php": "af3c6a8e770cd70fb281db24b516abb3bfb7b2c3673830fe813fcd4234fd78a7", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogHistoryCleared.php": "712dc2e068cafab029d39043fe9154264c8ab298093b7b2b13d41fbf06f3376e", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogMemberJoinedByRequest.php": "48438023244fc6104f041cf9c527299571f5026292382377138e4738951e749e", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogMemberLeft.php": "121cc1fbc74c762f6204a79e56d7b49f46fb0ac2524acdf0e1d95094d55f8ec9", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogMembersJoined.php": "ac11d492b35a476cf898001352d7929d96669a6da6239e8b0fc99b11b4058692", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogMessagePinned.php": "8022872090d60a2904bafffebd5bec413ce3c4c8ea87baa9ea23bd4ec5e847bd", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogNoForwardRequest.php": "ef2f052c6e328f11749f88f8c9cc4570730bd0eeaa3faa41213d037fe48480aa", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogNoForwardToggle.php": "6886f947a7a4790bf4f86f90e79b333b74cd02ebdd2966341ac2103d168662b4", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogPaymentSent.php": "3e9cd6042840304b93169b71b1afc281b2dc2f48c4317f63da108b9ec7c756af", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogPaymentSentMe.php": "4ef0f56de82db27cbae0371a437339450d339d6688c554ea862008e4d40839a9", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogPeerRequested.php": "a9513102345febcd4f9d1704800431ac796b2785e7643349aebd538c4cdff127", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogPhoneCall.php": "b9f52ad760592b86d3657a0d7cc950985e403ae5b48838fb96024c5dd52ad33e", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogPhotoChanged.php": "5e39ab5bb3a2e9b565caaeff880b538e46b49d47092dd7b7e1299d83bf800773", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogReadMessages.php": "10fa943108b506e90563d6d638ca36418ff12d1a4c4b6673dd83cc2a3e9c711b", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogScreenshotTaken.php": "83684d7ff89fa8788a528ccdc5de9ca837d8195d337ba568f9904f40d7b863c9", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogSetChatTheme.php": "14450f40b3abbbcbe1444b4d922550641381319d7bfb89cd64f082627fe03fe6", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogSetChatWallPaper.php": "536d46ba10a5f15b0e40d274a17445cb1cecf4700f986543916ed6f6493f56b0", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogSetTTL.php": "447685f4431cb5a2b7e12a062e85b6bcb184809456e417ba6e7eafcfa049e8a8", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogStarGift.php": "263889ef7a761102bf5b54d5e8cc9d705b2c112cdf125ec31e015fe7fe658f78", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogSuggestProfilePhoto.php": "b6751def82a03d9ef779a7d6903c4fee7b782270867a9a18ce57aa4d97aeb091", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogTitleChanged.php": "f8c68899db2ae4e1cf8ee7c5ad1515826939e0c8eb4753a7ed34b868660e4182", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogTopicCreated.php": "96c957516a9a151fea7b38cfde74e7a306ff20be531bebaac4297eddbb26b588", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogTopicEdited.php": "ee856c443fcac7e657dfac1425c5e7e083f45717c94056a189e42bf33822e883", + "vendor/danog/madelineproto/src/EventHandler/Message/Service/DialogWebView.php": "10e73e369e11faeb1ba5a9dad71b92a414022757ea61b414200681580fdc2e72", + "vendor/danog/madelineproto/src/EventHandler/Message/ServiceMessage.php": "becc5168a5642cfc43d9db973503f4cffd5f8c529e8c406fa324a016738ae66b", + "vendor/danog/madelineproto/src/EventHandler/Participant.php": "e7c5ddbe5e2b6c029c47c674b97c54f5342f6114dcccc7cac3609c9c0bb29c72", + "vendor/danog/madelineproto/src/EventHandler/Participant/Admin.php": "bc7c82fdfd82abe800d39cf6a69548714915749d10a1ed5586dc23081f0f823f", + "vendor/danog/madelineproto/src/EventHandler/Participant/Banned.php": "b4a20b67d5383f061544ba4aa6b8807f7ed7d7f6765e639187ac8628389619f8", + "vendor/danog/madelineproto/src/EventHandler/Participant/Creator.php": "6d7657b46d8913b7d00723e92bb10d8ef5914ad61c1a62469c23d088b7be943a", + "vendor/danog/madelineproto/src/EventHandler/Participant/Left.php": "842fd7b2f9788d0f978400c8d288632ba36f39cf365531c288bd4543a4dc3a23", + "vendor/danog/madelineproto/src/EventHandler/Participant/Member.php": "80fbc76ff090a87581aa3ccd24dd09bb55881d3cbb648cbe1d4a7693bede29a0", + "vendor/danog/madelineproto/src/EventHandler/Participant/MySelf.php": "97262988e3d72155f1dfac3062bd45a7a6111aa9010e7ccb83226931dc3d806a", + "vendor/danog/madelineproto/src/EventHandler/Participant/Rights.php": "ca2d81dd7569b2b8b85b10aabc2b7eae52e0d39b4e2a58968578bb60e80d79e7", + "vendor/danog/madelineproto/src/EventHandler/Participant/Rights/Admin.php": "74137748084ce1fcda88e7e6e99bc4c5ac3f75ceb1908b988655ec54f179122a", + "vendor/danog/madelineproto/src/EventHandler/Participant/Rights/Banned.php": "08679b400e6caf30c65c70258f543857bfe1371264bfbea0acfad0bd3dc1dd74", + "vendor/danog/madelineproto/src/EventHandler/Payments/Payment.php": "efca967c9d1661c951276a4390925ebef6af056848a6c79ba673c64a564b1d7a", + "vendor/danog/madelineproto/src/EventHandler/Payments/PaymentCharge.php": "2b571920a37ecc0023e7461a9bbb09856ac4cb6a77f84b567a5d0f17c99e2332", + "vendor/danog/madelineproto/src/EventHandler/Payments/PaymentRequestedInfo.php": "aaf68321abf42ed4a08b419bfb2cbe087775f9dba7df82eef399423a2738d58a", + "vendor/danog/madelineproto/src/EventHandler/Payments/StarGift.php": "329b48a40d2077bd1cd4d3eae624acbd698dd2782e92a3787ac0266cc7923af5", + "vendor/danog/madelineproto/src/EventHandler/Pinned.php": "465439c7c776bcb4d0db39c21eaeec90fd3f9459553f2c3342945eabbfb741d4", + "vendor/danog/madelineproto/src/EventHandler/Pinned/PinnedChannelMessages.php": "f9a13834a1fef1397574540e8d0a941fe1755c8428f1d0ebaabd9ffb479d931e", + "vendor/danog/madelineproto/src/EventHandler/Pinned/PinnedGroupMessages.php": "68da033eacf3ee4a6193c878529590f49185a00a0d5a208877a5a8f0019ecf27", + "vendor/danog/madelineproto/src/EventHandler/Pinned/PinnedPrivateMessages.php": "9a269d8fcd872184b4ef314bfbe8dfb80f1063830df70ceb967c343f424e9e48", + "vendor/danog/madelineproto/src/EventHandler/Plugin/RestartPlugin.php": "1eb1e97008011f51511cc781f477dd9460b3a4c913d17dfdeb5976d16d79bd54", + "vendor/danog/madelineproto/src/EventHandler/Poll/MultiplePoll.php": "bdd84eb7a9a1f1c11487819d09876ba159d139ff42ee85248fde297073822144", + "vendor/danog/madelineproto/src/EventHandler/Poll/PollAnswer.php": "ea779965046d5b45ce8c16220d4171f8fe33357224c7dd47a3a3977f34ad84bb", + "vendor/danog/madelineproto/src/EventHandler/Poll/QuizPoll.php": "7c8e360ed85934f36d86c5b27d61283d1233f90ce75239b66450714223eb4366", + "vendor/danog/madelineproto/src/EventHandler/Poll/SinglePoll.php": "70678587dcc9f6489e0df4ee06361b66d41a8edcdc83d3988ea1b6e286bca3cd", + "vendor/danog/madelineproto/src/EventHandler/Privacy.php": "a6e04d403e21db0bc8e0eba162cee24b705f08bba0eb3d2ba6bfd4f6fd79a2c1", + "vendor/danog/madelineproto/src/EventHandler/Privacy/Rule.php": "badf96efcbc2ca0d825aeb491e8c4e309173695b7b4e2bf19dd554b9edb2071b", + "vendor/danog/madelineproto/src/EventHandler/Privacy/RuleDestination.php": "6acdd350d6f7373926afce614e23d1723f6c850acad338b613f42bd562d02085", + "vendor/danog/madelineproto/src/EventHandler/Privacy/RuleDestination/AllowAll.php": "1b93d5343640b561d9ff9b5e960589667f0e1967411003ab3d3f8bc6076e3126", + "vendor/danog/madelineproto/src/EventHandler/Privacy/RuleDestination/AllowChatParticipants.php": "602eaeba177f950967c83eefc34a7d07bb6b69846b59da1e595408d9a881f75d", + "vendor/danog/madelineproto/src/EventHandler/Privacy/RuleDestination/AllowCloseFriends.php": "4be9c6a618ba5d3212c219e4b5449c9d91e2257d198fd18c2cce43da1f914451", + "vendor/danog/madelineproto/src/EventHandler/Privacy/RuleDestination/AllowContacts.php": "7ca7bc931e9abc5d9bfd53ebe55926c192dfa89344e65dad42574c845c238c1f", + "vendor/danog/madelineproto/src/EventHandler/Privacy/RuleDestination/AllowUsers.php": "4466d6372076dfbb23035185b4451dba6ca99179b11348ec6c560e9d209d0d1e", + "vendor/danog/madelineproto/src/EventHandler/Privacy/RuleDestination/DisallowAll.php": "125d24bc07b0ffef9323afe0226e622f8a2e59d4a58573bde3999a0918170ee0", + "vendor/danog/madelineproto/src/EventHandler/Privacy/RuleDestination/DisallowChatParticipants.php": "33a998f1d4ef266a3b379d7f789526423686d7232e2b5e39fe8f65ae21d3badb", + "vendor/danog/madelineproto/src/EventHandler/Privacy/RuleDestination/DisallowContacts.php": "625b06bf77c4c9b0c8ceb19a3991a60f11e82746a1941b27cf49785be515924f", + "vendor/danog/madelineproto/src/EventHandler/Privacy/RuleDestination/DisallowUsers.php": "2185cd548090b88fb5f096c6f41df8f9a96f026d912feafde7ccae90e85a02d6", + "vendor/danog/madelineproto/src/EventHandler/Query/ButtonQuery.php": "e019ce684ba3641ad3f988ab3746811ef7e05c8d98be174a73e37c2a7709c6bd", + "vendor/danog/madelineproto/src/EventHandler/Query/ChatButtonQuery.php": "dd523a64280e4a5c5e08133880d7ac3247c62b3c0c284f0c549d4181dabd6ba2", + "vendor/danog/madelineproto/src/EventHandler/Query/ChatGameQuery.php": "94e28cd15d2555f774a78f85bbeb0e80e6f1d64a5a0552edca03bb8346dbb855", + "vendor/danog/madelineproto/src/EventHandler/Query/ChatTrait.php": "af060a6047bc6da5318917b14ada92b56f39471d8eeefa8191def3c3e29dcfbd", + "vendor/danog/madelineproto/src/EventHandler/Query/GameQuery.php": "ede81ad595b83981c10f4c6d171b1de0a2463c990634e7d5fdee9b0bc7ba9e17", + "vendor/danog/madelineproto/src/EventHandler/Query/InlineButtonQuery.php": "e6494a785e8d6a5c08b360fd432cb7873bca899c019d61326b5b0527dcf62969", + "vendor/danog/madelineproto/src/EventHandler/Query/InlineGameQuery.php": "c2f700018983848186937ff2025411e1be43b4f6f9a35b0cc9e6134fc837bf82", + "vendor/danog/madelineproto/src/EventHandler/Query/InlineTrait.php": "9241f5ad772e6209c9ebd4acc52b3d720d375f30603e8693a8b827a86ec637de", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/Ended.php": "d07a6ac0de41f64337ebaec512d805952b7023ba6c4e636d02a91766892afa81", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/FromAdmin.php": "0b8d793c889e8c074167ca35fa2f9991f3f9718b966533dd22f5d65dfce12548", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/FromAdminOrOutgoing.php": "39806aabd7832edcdd9ce71fe0ebff729a59ab21c92cdf25dc5c1010bbbbe51c", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/HasAudio.php": "93d7aebc2bd49d62c8d4d441d7553687ce274edc661b42e955012ce090a62ccf", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/HasDocument.php": "65bf88cf8e8481babb1ccf35be6c53e7da5c6296b4231107b2d88160f06d058a", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/HasDocumentPhoto.php": "e8e6cbbfc5e81bc575833f0c56b5ae8db7b60879f188983934a3cc5fe7a7d9f2", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/HasGif.php": "fecb79c4ec8a0be81702e6124c04b29f526dfcd1784cb0702d1a16cb79ce6a5f", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/HasMedia.php": "08e0d1373ac443adb0b3b440a0e7882670fd4c936f3d3c8bc2c946829220d4db", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/HasMultiplePoll.php": "51ff65f4e048ba37538cf4926b6478cd3730f2907938f822dd84928147e8c77e", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/HasNoMedia.php": "e6482de714d0491efe0e5e31ae650a0e8078551d3141186abb7e8a9e91aedbf2", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/HasPhoto.php": "eaedfb749e22222b855a56e8417851e7a6906b4dcc31185d91063f1ab2d8b2d2", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/HasPoll.php": "db2226532d1c964c5544fc7cca982472b15bdf45adf33546942286e89cf4b965", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/HasQuizPoll.php": "f75d09584d56f98624dd23bec52fd7588fe9f2bbfb11859b9212fe4897bf2106", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/HasRoundVideo.php": "c827dfabb81d4af5f709019c749f40b42dc0bc984ff7dc59209ff4bdf004bb23", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/HasSinglePoll.php": "f59feeb8c176b5d7d60ada34dede9daa6568421ba95fd0c42678cbd447e54b60", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/HasSticker.php": "b17ed98aad23ca43fec08b3d5eacab3a764295e480bd8e90a498a8198b467aaf", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/HasTopic.php": "b0c7498d45b3be72997a17e04119dd0e5fb739af8849efb14e77da2e22fd2800", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/HasVideo.php": "676ae4196799a4b7591d1000cdb52301bcc1f2f505473bbb1f1f7f5088293dd4", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/HasVoice.php": "287c7744f90ab0c9a83ab3fd4f7e59c9df4c111f7415518362220203a6f772c7", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/Incoming.php": "edf7d998c2d16c87c6a5c9547b807893715377aefbd2283ecab3aa442717b95a", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/IsEdited.php": "ea08815dd76aae89b88ebfd1ff82cd9a9e271d7efac191b660122054e88b9521", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/IsForwarded.php": "b57877b836e329fb2fe678c28a5344047fed697840bc207199c7f65e45b4455a", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/IsNotEdited.php": "9ea96b0c2a03188e672c5e9f0b6ab85714736a49fc06c2c9a9383c28d18beecb", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/IsReply.php": "d523980766a6e013650d7e6e96498b218f5c7c925eab6faa19b1711af6afcd2d", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/IsReplyToSelf.php": "1a0eb3c8449ec90f782bb588eedffa5abcb8b6c01e1d24b702908db16ae831db", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/Outgoing.php": "5fc83fd4afb4fd8c779565c19fab47cde35a73652c75594c741fc0133fea2b83", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilter/Running.php": "85d7a18e4845d3646660bbe64e3020d9f3c76dd12fc8ff0a4e3a5f96fcc9133c", + "vendor/danog/madelineproto/src/EventHandler/SimpleFilters.php": "aa4d15bcce5eb85a0dd8bcc321391ebc3c8a4f6abac1d70ab8939560b1904839", + "vendor/danog/madelineproto/src/EventHandler/Story/Story.php": "159b8eb141b8d72b4de7ece000f6f877b0218617bf2f72181dad0115f9e2b728", + "vendor/danog/madelineproto/src/EventHandler/Story/StoryDeleted.php": "b3ed39b6c46348588828a497af6520cc2be19e6e25662177421fd57eb02e2a11", + "vendor/danog/madelineproto/src/EventHandler/Story/StoryReaction.php": "82c02608a6701925fa9cb34d867067b723e46f2c95713ef50db0b39ffc8616e2", + "vendor/danog/madelineproto/src/EventHandler/Topic/IconColor.php": "4d0fad8a45ba163bd209720e6ce744d62e8c58901ebc72eacab9be5864a83ca9", + "vendor/danog/madelineproto/src/EventHandler/Typing.php": "8659f7f1c77a6a2b681b83d197ae999adf878d994cf7def3a66f455dfc17157f", + "vendor/danog/madelineproto/src/EventHandler/Typing/ChatUserTyping.php": "3a85e506ce867e68d462434ee40337b829a9b9dadcc0011fcd1adc2cb743c771", + "vendor/danog/madelineproto/src/EventHandler/Typing/SecretUserTyping.php": "5be8fba82cada149f68a31ae87292376c68568da841c5a4dfabfb6a780e220f0", + "vendor/danog/madelineproto/src/EventHandler/Typing/SupergroupUserTyping.php": "e9523f390ef45436bbfc9ff423ea4ae191fd206c12ad14c97d2ee3db01a2bce5", + "vendor/danog/madelineproto/src/EventHandler/Typing/UserTyping.php": "d8d4c72ba4f3bbbabebeb52576667994195c7f64f0e46097cd482ce53d70c5dd", + "vendor/danog/madelineproto/src/EventHandler/Update.php": "c6c9bd4fb881d748c47c8773a45b434234e4443d063976f59caab9d87ac45531", + "vendor/danog/madelineproto/src/EventHandler/User/Blocked.php": "4a956683f63356b383386af9debe3b375a81598cf086162d3cd5b09f5e105580", + "vendor/danog/madelineproto/src/EventHandler/User/BotStopped.php": "b3123ec601d6f79f4c47bc9b94c3b3c94b3c172bed67ede9fe64b9a1dcc9f03e", + "vendor/danog/madelineproto/src/EventHandler/User/Phone.php": "cb1de562022923dc389427fe896c1d021c6d5853f8bef1dc372a98b78604a543", + "vendor/danog/madelineproto/src/EventHandler/User/Status.php": "b011bc6f459664c357023d6fa332799d974185e355ac62f9df4e6c378fd7a7b5", + "vendor/danog/madelineproto/src/EventHandler/User/Status/Emoji.php": "f59b400eb90bc2a460beadeb7eaabae7adec74e817bf237e411ce34ac9561fa6", + "vendor/danog/madelineproto/src/EventHandler/User/Status/EmptyStatus.php": "6b6487d6196cf77b4ec01efb4539e14600e42d1898b8ac93b40e7a2516aac6bd", + "vendor/danog/madelineproto/src/EventHandler/User/Status/LastMonth.php": "0e48e833de0e8c2ff2b1cee905793320148d312924dd036b870fe48775cb04c4", + "vendor/danog/madelineproto/src/EventHandler/User/Status/LastWeek.php": "8abe36573041dc0a95246460c78e4f22d2bf023f6294ec459f6a0027eafc992e", + "vendor/danog/madelineproto/src/EventHandler/User/Status/Offline.php": "445fa725cc0a8beb05e01cd50decc7d87915bc69d04747d5a8e00d9aaad53962", + "vendor/danog/madelineproto/src/EventHandler/User/Status/Online.php": "48822d7ea5469230c5df61d22062fa03ee575079b15d9b38658c631ce8d9562c", + "vendor/danog/madelineproto/src/EventHandler/User/Status/Recently.php": "b8870f82ab61882a2fc76e7eba6a3bfd360bf7173728a81bcc62a85e3cb0c311", + "vendor/danog/madelineproto/src/EventHandler/User/Username.php": "b051b717ca3fb7616360a24ef407d9e8d0f0dcec6b2afacf750f7f1cfec791c4", + "vendor/danog/madelineproto/src/EventHandler/User/UsernameInfo.php": "b2d36d5e031935890e29783aaba11034a3bc44f9d4e587867785d412cd1f2b88", + "vendor/danog/madelineproto/src/EventHandler/Wallpaper.php": "e4f735db493ccc92b94c4b4e18024df714bbd63afb1bbc9e4ab70c572eefe772", + "vendor/danog/madelineproto/src/EventHandler/Wallpaper/WallpaperSettings.php": "001fab76c9188661e412a74722ad3578621c578f359e82553bc1824d2b6e9c2a", + "vendor/danog/madelineproto/src/EventHandlerIssue.php": "ef8fda186e4e78642c243dd9ba7ff08e43f435adb384ed4a44bee955fa546bf8", + "vendor/danog/madelineproto/src/Exception.php": "74f7101d13e5ae4b6ae1937e86ed22f23590667a85f7402e504e886602abc0bd", + "vendor/danog/madelineproto/src/FileCallback.php": "94a98c50a97d7a30887851635d7bc65e2a250424ab0f4b1d816f0b10e89d52ed", + "vendor/danog/madelineproto/src/FileCallbackInterface.php": "275af4901e4c4e664e732eeeafc686bfc0a1da3b1b31c48ae2a97fc17c85d65a", + "vendor/danog/madelineproto/src/FileRedirect.php": "438a38c28840753d4a18607344a07fbb3764c21b733b0cd1310b9d5b9e7641f3", + "vendor/danog/madelineproto/src/GarbageCollector.php": "cb8c2d04e313f592730dc569ddf3c09fe70e8eeb2d82a601dca9f664aeb7250b", + "vendor/danog/madelineproto/src/InternalDoc.php": "f59e0c2e3c08cdc44fb3bfc5c6bd18fd7eaa4997f44213550fc5f016aaac9ee0", + "vendor/danog/madelineproto/src/Ipc/AbstractServer.php": "d0db5a56efa9420be7c6f63a1facf1965dc831b5a4878d984ee9f1d377e4100f", + "vendor/danog/madelineproto/src/Ipc/Client.php": "82b960bc6b406ac8db9f64640f28dac4f53d60856a988c549db5ee37b78f6411", + "vendor/danog/madelineproto/src/Ipc/ClientAbstract.php": "bf48579d45ae221f9b22997dcbb64ce357de5fd3eed73dc95d7fe6324e7a8af7", + "vendor/danog/madelineproto/src/Ipc/EventHandlerProxy.php": "082877c6f456df644e8390dad9524c7c9243303d940c7ad3e72fc1d169110cb5", + "vendor/danog/madelineproto/src/Ipc/ExitFailure.php": "93d996252d4569cca46cd39f2129e62775458ec4a9d72601243340afefb03201", + "vendor/danog/madelineproto/src/Ipc/IpcCapable.php": "327222907ff5d2f3ad0fcf33554e914a66924968874bdd2bd3b6fc315576aa48", + "vendor/danog/madelineproto/src/Ipc/IpcState.php": "4fe9cd55af338d74b08bb8e4c69adcc342d5bdef62cc4acde714b27825ce73fc", + "vendor/danog/madelineproto/src/Ipc/Runner/ProcessRunner.php": "dc1ecd16054d9883afda9b2cfc8223f7f836781b57fa2b7eb9f329f0b28b7531", + "vendor/danog/madelineproto/src/Ipc/Runner/RunnerAbstract.php": "962f0e219997b63a878b29f2562a0ef6c83cc89b888fbd8059a67ddb35df856b", + "vendor/danog/madelineproto/src/Ipc/Runner/WebRunner.php": "ad19cacecbb6b1521bbf91130acf2b636eb4c7cb3e03fdcb9ec3d5510bef23d1", + "vendor/danog/madelineproto/src/Ipc/Runner/entry.php": "66f60e1e640e4af1c984e4a531b04391a571819d759e6cf4210cf1852f9d6898", + "vendor/danog/madelineproto/src/Ipc/Server.php": "97a5bec28abf8e47acfea4aaa01aee67143f29b08b87a455ebd091e4c8124120", + "vendor/danog/madelineproto/src/Ipc/ServerCallback.php": "8e4d1f0bdcdf58ce8c41531449cc4d5d236b07dd2612a13e56d7df5f46cc2fd8", + "vendor/danog/madelineproto/src/Ipc/Wrapper.php": "132832ca3e76d018db53560cc82c7686ebc395dd2e5e9567c71b23f048715c9d", + "vendor/danog/madelineproto/src/Ipc/Wrapper/Cancellation.php": "103f1e7abf8da1b22ca37737878ab20c1b905a42bf8f87d31237af702692d7b0", + "vendor/danog/madelineproto/src/Ipc/Wrapper/CancellationInner.php": "64ce91b3139af05b793435f821c7f7362028aec55a748b539e758dd156d1eb4a", + "vendor/danog/madelineproto/src/Ipc/Wrapper/ClosableTrait.php": "c29e65d1a89afcce2f544e4c6f8db942c464e305e9202e67fe6d648560945113", + "vendor/danog/madelineproto/src/Ipc/Wrapper/FileCallback.php": "aea2afdd373e6fa2a403b5e7c45fdf13ae832e016787215fc0d907de70724418", + "vendor/danog/madelineproto/src/Ipc/Wrapper/Obj.php": "3e982c0a22fe4c158de95003e410cf39654eb12868b1b6f6a3d58e589cc4cdcb", + "vendor/danog/madelineproto/src/Ipc/Wrapper/ReadableStream.php": "3a915cd42f2ddadd501d6e1422d1068351f97c98fd45b5876d6c0ac38aa46779", + "vendor/danog/madelineproto/src/Ipc/Wrapper/SeekableReadableStream.php": "c7907c2dcb617a88a3cfbbba42d6b4c7cce414867355f583bc6cd17a92c5bf50", + "vendor/danog/madelineproto/src/Ipc/Wrapper/SeekableTrait.php": "79c6e4e172532d80c4977a82e91af68affd266583e1248d49ed397dc76898451", + "vendor/danog/madelineproto/src/Ipc/Wrapper/SeekableWritableStream.php": "4c4a772c96286af4e7b5a1708e2d8eb68dfc2b9f7e5b6c9872a99a0883313f2c", + "vendor/danog/madelineproto/src/Ipc/Wrapper/WrapMethodTrait.php": "2737a280ffa4cbaedb3787c4deed96629ff5b0b5c3ca3573ae097e37efa4416b", + "vendor/danog/madelineproto/src/Ipc/Wrapper/WrappedCancellation.php": "023927ae71442ccfca600d11f78246e9816c1fa740b21ee8e8990b4275348682", + "vendor/danog/madelineproto/src/Ipc/Wrapper/WritableStream.php": "a8cb66e498b03df697c629601b4d8006911c3e742861c1bd07082ed40d2ec502", + "vendor/danog/madelineproto/src/Lang.php": "b96dc25a22e527c14e57f29e3f644513692240d8cf13a7dd1bb29f1ab0df5fed", + "vendor/danog/madelineproto/src/LegacyMigrator.php": "3e317635c40fdeb46c58097f3b1e876ec491be9e3dc45a375442cbaa23e27aea", + "vendor/danog/madelineproto/src/LightState.php": "879da8958633851ba123220ab0f17292fd7cad86e911f7c655cff0fdb322c739", + "vendor/danog/madelineproto/src/LocalFile.php": "cb92b88005a789d3923f617a776c6c1c43c090d684155fb26171809d0a21c18b", + "vendor/danog/madelineproto/src/Logger.php": "a090bb4e7e5e20c70dc64f9a4fe72d005d65f624da66e554bc91419b21822f46", + "vendor/danog/madelineproto/src/LoggerGetter.php": "8705777a1a56e2fe297a41c63464b5510cbf2a5a8a5a2b847ce37dac83d89d7e", + "vendor/danog/madelineproto/src/Loop/APILoop.php": "3d74d1ddd11b762e95043425f46ba566d2a41f42f863b2a5aa6ab3876854d94f", + "vendor/danog/madelineproto/src/Loop/Connection/CleanupLoop.php": "37aa67dcf47a77b737c4ecbb229d4e254ff400b5a04442e9ae2fbf3782d2c3ae", + "vendor/danog/madelineproto/src/Loop/Connection/Common.php": "756e2c2a7bf65af82a42639c195a967923e5dd7f91449a1b03e4850ff2be6d1f", + "vendor/danog/madelineproto/src/Loop/Connection/PingLoop.php": "02afaeb6db5c697e43d5c87474d1969c9a2d768c68aa500684db320fe9c4d8e1", + "vendor/danog/madelineproto/src/Loop/Connection/ReadLoop.php": "bf25c628d14354ad00234e6a2238f604f8da4aa80a99ff22d0f50f35a77dee81", + "vendor/danog/madelineproto/src/Loop/Connection/WriteLoop.php": "ba93ed108e41249c2e80dea621c842f4f57817291a286f6f00037e20ec30dca7", + "vendor/danog/madelineproto/src/Loop/Generic/PeriodicLoopInternal.php": "3f452ba7e088e03f2c98d50bfe817f16b2b515caebaebdc9ac3d4818e5b42f89", + "vendor/danog/madelineproto/src/Loop/InternalLoop.php": "1ca7f36d24851ead0c18a374ee07b4ee79537a11249cca0915e516e26866a6a8", + "vendor/danog/madelineproto/src/Loop/LoggerLoop.php": "0166b7844c9611cb37745d9069cc5dc3218b704e2b390113d2c14ab617bdb0b9", + "vendor/danog/madelineproto/src/Loop/Secret/SecretFeedLoop.php": "39442379af5699bbf75efa943c91bfeb1eea24a5e48cd11208e1e78b1e005f05", + "vendor/danog/madelineproto/src/Loop/Update/FeedLoop.php": "77106256dc35a53eaca919db9e963821291a3761cdf8fc9afab03a6900cb0622", + "vendor/danog/madelineproto/src/Loop/Update/SeqLoop.php": "c5e39d801b16ad19e4339c16205df1b3458332e310db0c00d2eaa528786f6f89", + "vendor/danog/madelineproto/src/Loop/Update/UpdateLoop.php": "8f6cb1a483c879024bddea289e90d4bf2d71dd15716102bc83a1f34a243782e4", + "vendor/danog/madelineproto/src/Loop/VoIP/DjLoop.php": "5de40dfd90ff6df761c4c61e780d893e349d856aec20c7a910fc4d74171b321a", + "vendor/danog/madelineproto/src/Loop/VoIPLoop.php": "8bcfb5fc9e35fb7c37bd80d302e52382262bdfa943c4e451ad48b35f83e85c13", + "vendor/danog/madelineproto/src/MTProto.php": "4538b6e4683d2035e9e21f061a0535976799cd3a557e3bc0e7a869ad63bd62bc", + "vendor/danog/madelineproto/src/MTProto/AuthKey.php": "cdf652428537a163c96fff2e4ba2cfdf818f56f8ac937d89473dbf8bda350916", + "vendor/danog/madelineproto/src/MTProto/ConnectionState.php": "7c6299cb3daa1f91cebb3f90c89b9d17c79e3a31cdab7756575d61c04ead9cc4", + "vendor/danog/madelineproto/src/MTProto/Container.php": "155c49a5622c92b6f9c1f31432b9963046d0a045debcb2dd337b681e0f0f1171", + "vendor/danog/madelineproto/src/MTProto/LinkedList.php": "270d5d43bc8ff6b771c5cf321e0c8ffbb8e9515e1aa952bd21cf472607b7e1ba", + "vendor/danog/madelineproto/src/MTProto/LoginState.php": "892ccbcafa6871b34e3672e353c251ab6072bdbfb619075b8bab6979a4b20d91", + "vendor/danog/madelineproto/src/MTProto/MTProtoIncomingMessage.php": "3c6ab4e4809ea189bb98b6f1822f81ff9cb674a158e26e6567bcf3fb0e72b7d6", + "vendor/danog/madelineproto/src/MTProto/MTProtoMessage.php": "90e9f8f04971ddc8956c45bf43ff235bb906ccfdbceda6a5b820e7a58d359e8c", + "vendor/danog/madelineproto/src/MTProto/MTProtoOutgoingMessage.php": "5c58d37d3e1c1ecbc513da5343aafbf21da9989d222f87fab4aa5598586b14a2", + "vendor/danog/madelineproto/src/MTProto/NewAuthKey.php": "9a142067e8e52d26d101d02e443b44e7679b727701ed6ae6616aad4a5673394b", + "vendor/danog/madelineproto/src/MTProto/PermAuthKey.php": "f8fa0ff2bb98c057820ccc02a368472a904ebd23a4cfc19829b5a5c447ce4d19", + "vendor/danog/madelineproto/src/MTProto/SpecialMethodType.php": "3b65d05d72dd107d11cd2dbf314a924aa5f472287633ece8e8ee0184301ec340", + "vendor/danog/madelineproto/src/MTProto/TempAuthKey.php": "9872f9a5f93f58a4cd6f54d6b8f089441d4f551f6280a6763be0e30b6bd8469d", + "vendor/danog/madelineproto/src/MTProtoSession/AuthKeyHandler.php": "273d744aaa89f45c1ed33622fe92a881cb5bf9a3aea03082095d56f80c09aab0", + "vendor/danog/madelineproto/src/MTProtoSession/CallHandler.php": "b40689d8245005c433d97e5edf3869291259599460ddcb2d8eefd2688dca8dd0", + "vendor/danog/madelineproto/src/MTProtoSession/MsgIdHandler.php": "1c42f9dbe8db2d4165b3334e67d6fe79196911858785e74ceb80c798add6d0fc", + "vendor/danog/madelineproto/src/MTProtoSession/Reliable.php": "890420d017436f022220538298c9934548e41f04968bed800483c042022585fe", + "vendor/danog/madelineproto/src/MTProtoSession/ResponseHandler.php": "693bf07d81e677f2903e0238fd87849ac3406a49bfedccddc8df95d3ee7119be", + "vendor/danog/madelineproto/src/MTProtoSession/SeqNoHandler.php": "c786d76fd695963064f192adb4d9b45e958d4f51ba286161f43419f7d2f9d35a", + "vendor/danog/madelineproto/src/MTProtoSession/Session.php": "32227a5ed18d5066db105439274a3d311e08cb0e06184c8a082fe149046c0e83", + "vendor/danog/madelineproto/src/MTProtoTools/AuthKeyHandler.php": "f9c05dd42237d2da10a14fffed0ca9e047a0ab2a310d6ca49b9cf96f71fbef8c", + "vendor/danog/madelineproto/src/MTProtoTools/CallHandler.php": "c734488b7c47cdc7c6d8401f47412a189ff82e582afa21eb9fe38973e6b51b7b", + "vendor/danog/madelineproto/src/MTProtoTools/CombinedUpdatesState.php": "1469e2c957e10f317849cfa2c0f5b36253f01b393c234c17b5e9a9816840ee09", + "vendor/danog/madelineproto/src/MTProtoTools/Crypt.php": "f58b3d20f0e1ce0a2868406b32ecbb13e843351692fa1488976de2f1ac4b0b72", + "vendor/danog/madelineproto/src/MTProtoTools/Crypt/IGE.php": "b3862278d3300cc940f34f088b88aadd5021f77dfbb30057b7570242601dca82", + "vendor/danog/madelineproto/src/MTProtoTools/Crypt/IGEOpenssl.php": "adc0a6ac65a44485522d4b3811a23cdd3cb05371cd14fd61f6d822efd8341a65", + "vendor/danog/madelineproto/src/MTProtoTools/Crypt/IGEPhpseclib.php": "bcb35d5c9ccc835173591217976c179753065e6abc80768b80a3c15181147196", + "vendor/danog/madelineproto/src/MTProtoTools/DialogId.php": "4356a26fd081dda2cbcbfd8fab1c44ff96d7e3d7486ac3b36d54af97d67ee187", + "vendor/danog/madelineproto/src/MTProtoTools/FileServer.php": "7ad3bcf3f8530ab585c834254a11bcc52c4e8b77d60698c48275addadd2953e9", + "vendor/danog/madelineproto/src/MTProtoTools/Files.php": "02213ee08d4504a180a5cf938248d0d3b29c262a1366c51e3c612ee79cad3dc5", + "vendor/danog/madelineproto/src/MTProtoTools/FilesAbstraction.php": "58039a41839bd29743b3b02e985cfb8040aed100da990433a39ad77bf05739f7", + "vendor/danog/madelineproto/src/MTProtoTools/FilesLogic.php": "b6eac2f0aa25d68c5361c4d97a85fa39458f5a22ad27fe8d975ef0b2214dfd94", + "vendor/danog/madelineproto/src/MTProtoTools/MinDatabase.php": "bd9d538d1e1c451f5fed387b4db08c9742bca382d57055c3cfbfdf86d284ddf0", + "vendor/danog/madelineproto/src/MTProtoTools/PasswordCalculator.php": "a13a5fe8e7451c0628d201e0f58414f0249be37b066d237040d1cf92406a39c1", + "vendor/danog/madelineproto/src/MTProtoTools/PeerDatabase.php": "26680a32407ab039381dac28885f1b3c44b6cbb74fdf770ccec4f334ef1ae0a1", + "vendor/danog/madelineproto/src/MTProtoTools/PeerHandler.php": "8188777fc376f2b3cca39963d79f85239fc84141f978128ea2bb591f03891928", + "vendor/danog/madelineproto/src/MTProtoTools/ReferenceDatabase.php": "e65359581891e8992e15bea005a73fd95dc448fd686767da9f9d1f302dc3386d", + "vendor/danog/madelineproto/src/MTProtoTools/ResponseInfo.php": "cb5abea720ba648fddb9d793e06daa48be82f5952de2d3e05079cf559206e4b6", + "vendor/danog/madelineproto/src/MTProtoTools/UpdateHandler.php": "d31eb65c71323b169249ba2d7b5b3841db962c31ff98bfd0d831a7d23f24c984", + "vendor/danog/madelineproto/src/MTProtoTools/UpdatesState.php": "1fce590549d17c1345a7f59e63f5899427f39e59111b8ca4e9cae1c1c5900a93", + "vendor/danog/madelineproto/src/Magic.php": "c34e930b80eb563661e69d4f892bbb256f2d63c221140fd4aa0bc2b15e8f0be7", + "vendor/danog/madelineproto/src/MyTelegramOrgWrapper.php": "0e755b9dcd49cbc6ca993e05c7b826eea513409a38c0173c5fdb25b247601885", + "vendor/danog/madelineproto/src/Namespace/AbstractAPI.php": "00b85f80e2df773ba99ad94c1f0d13011b71c85a822e71c92b85607ab0c4df8e", + "vendor/danog/madelineproto/src/Namespace/Account.php": "6201a4e32548be7c2233f427232b7b45764de94ae371af63ffe1d2a4f73fcd49", + "vendor/danog/madelineproto/src/Namespace/Aicompose.php": "9515c8c48a473e11892658717e89069d6839aae065d50f20f6074b9ede619149", + "vendor/danog/madelineproto/src/Namespace/Auth.php": "25aa7b74193448d37c3064b5f40f5b95aad7ceef24a246609828dd6b091a637f", + "vendor/danog/madelineproto/src/Namespace/Blacklist.php": "a7e61276df0834ea48878115c65e6bf7f237ae83a3d5a8f7d8084f386adc6d49", + "vendor/danog/madelineproto/src/Namespace/Bots.php": "64a00b544f1ec5527ff4a6122f60cc84beda25abbf9ec0dd0c3fba62ca6c3ae6", + "vendor/danog/madelineproto/src/Namespace/Channels.php": "64b4f05b87ccf7a6b0a38b36c51ba23891439ad272bfe58f511f0b9d0f7bac97", + "vendor/danog/madelineproto/src/Namespace/Chatlists.php": "3643e81996742a8f7285d6670190b386077aeeff407aaa295c42a6168ea84642", + "vendor/danog/madelineproto/src/Namespace/Contacts.php": "39c1b3223248038914983108bcf96d7f524b793955fc4271b35e25a97f363902", + "vendor/danog/madelineproto/src/Namespace/Folders.php": "382c630c252ba4deca5f89336f21b6721bfd7d3f2d66c822367cab2081efc8d7", + "vendor/danog/madelineproto/src/Namespace/Fragment.php": "f17de103e1667a305bacad4e737f35510b280e61ed44128832debe0015886f1b", + "vendor/danog/madelineproto/src/Namespace/Help.php": "fbee01ac7212485bab74909d36f2512bb3a42c0d1378f979ffa265655706caa7", + "vendor/danog/madelineproto/src/Namespace/Langpack.php": "621c4fe7897ee26ea3215d4b1d4fb4aaabaa52c6ecc0a5f0c46386f5b7e70bf3", + "vendor/danog/madelineproto/src/Namespace/Messages.php": "434f8d2b9d334561c7bf6c421ce0b6506b227dae15a47c3b4769ab510be5b838", + "vendor/danog/madelineproto/src/Namespace/Payments.php": "151f4dbd216d51dafc96ab6c36f031b19e2246bd1f3ec3072dd1bce6d5e66754", + "vendor/danog/madelineproto/src/Namespace/Phone.php": "257406a0bb07534d8d3d0cea8358c06dabab1559b38a1408504558ba0c449e9f", + "vendor/danog/madelineproto/src/Namespace/Photos.php": "232cf0fd0ad95757a893b2780e6b2133db43ee861ce58b87b5126cb56ccd458a", + "vendor/danog/madelineproto/src/Namespace/Premium.php": "62891af5c6cd2cfcb11b0862aa1437ff8cd7738be692f38cd154aeaecbed6542", + "vendor/danog/madelineproto/src/Namespace/Smsjobs.php": "e366cf1945f8583796d6914a826af397703346d23bd8c4e441f158d8d8b0ec55", + "vendor/danog/madelineproto/src/Namespace/Stats.php": "e0bfabe80ada950fe9bd4d2d14fb8b0427d2f60307cf87822d1f0daee59a0c52", + "vendor/danog/madelineproto/src/Namespace/Stickers.php": "696c3a0d22868eadf5450e47a1f39a37b23da840d0761caf570e7f9b572da741", + "vendor/danog/madelineproto/src/Namespace/Stories.php": "9f1cf8e168279a71d1424f423748c3c49e29bae476c2c2132bdc742907580206", + "vendor/danog/madelineproto/src/Namespace/Updates.php": "ae0389c0b4815dc5165987b977007a31e18e263fb8e0ea147cfa4c08b24b3e86", + "vendor/danog/madelineproto/src/Namespace/Upload.php": "878f9548c5b8d9ae3bee94a44c3e34903b1f871d984136886c36d8d12d56dbc2", + "vendor/danog/madelineproto/src/Namespace/Users.php": "d5aa730132bd24715b34f948c84455810b1eb15942c460882585d7148a9dfa87", + "vendor/danog/madelineproto/src/NothingInTheSocketException.php": "48b317474f34f82c45b35225d965c39f6eaeeba8ea617ac9520ffb8fd6281b33", + "vendor/danog/madelineproto/src/Ogg.php": "909d6b5f41fef95c9a930f671ae635721ec5647c0d514e0b352de1da96358abd", + "vendor/danog/madelineproto/src/OggWriter.php": "7578f9b60ee6f0e6450f35f2434ec1bffd91ae6ab123fc9bf434aa7943183648", + "vendor/danog/madelineproto/src/PTSException.php": "873023e1823c53bc200bdcfb229bf036d22d77871f88df51031c90c9b22fdc52", + "vendor/danog/madelineproto/src/ParseMode.php": "778ba1b78c86bd463e91ab5d3fbc536115a434d2952ec8dd8f89b8d3b4d32d8e", + "vendor/danog/madelineproto/src/PeerNotInDbException.php": "46e4a0be5ae63fd0f234fb0c5ad8eb61ab7f9c6aa901449f2ba633d63bfdd23e", + "vendor/danog/madelineproto/src/PluginEventHandler.php": "8bcd138a8af739d9c5c8b05d37f5ed5cfefef0cb6bc6656ab438e7a5da3d6e6d", + "vendor/danog/madelineproto/src/PsrLogger.php": "94dc2f449a526b63a7768c68066900cb97519931f0096254a6e7b79453e81a94", + "vendor/danog/madelineproto/src/RPCError/AllowPaymentRequiredError.php": "a2027dea005fd6af95e52a95780766f625c3dc5f5e2d98e52c37e1af8a1e7bd2", + "vendor/danog/madelineproto/src/RPCError/BalanceTooLowError.php": "bd087bf4bb8cadc24bbf9ae6eb99f23612f63de753b4deca2ed22fd83f4123f6", + "vendor/danog/madelineproto/src/RPCError/BotGamesDisabledError.php": "1d8db79e265e7803ea030199fa60fc644f05cc6e32ab7ea5b183c4645fe37f48", + "vendor/danog/madelineproto/src/RPCError/BotPaymentsDisabledError.php": "97db9ba3be4bb0751515310bcd70c8e32c6df8a71832322cdcedfe62e10e968e", + "vendor/danog/madelineproto/src/RPCError/BroadcastPublicVotersForbiddenError.php": "d58925a6bf8d6f618b1f81f2b35bfadf60a865dc25a26873f9cbc4089d8dcbc3", + "vendor/danog/madelineproto/src/RPCError/BusinessConnectionNotAllowedError.php": "31f9e546d4d1a2ff612d88e626892dbfaff17da333f2b2d2b21970789e9472b4", + "vendor/danog/madelineproto/src/RPCError/BusinessPeerUsageMissingError.php": "dd03eeaa4697ed16cfbc218ba75586d4bf626a20f21ea77e55c9f8730612880c", + "vendor/danog/madelineproto/src/RPCError/ButtonUserPrivacyRestrictedError.php": "c791370625c33aaa4ec89815887556a0277759c3edf8a306da7e2256e49d8d2b", + "vendor/danog/madelineproto/src/RPCError/CallAlreadyAcceptedError.php": "d06c44aa66f52b8bc2fc8272affd590d00b8009592b16c705d36a3dc8ea11b24", + "vendor/danog/madelineproto/src/RPCError/CallAlreadyDeclinedError.php": "4ae674aabb8c3d364a6a833cf28433e26ad3c05ae652903abda2686c6b6b67e6", + "vendor/danog/madelineproto/src/RPCError/ChannelInvalidError.php": "46b24b657ad4a98162ff06d30ce9648be02d1ed157fdc0471dec733f5031b17f", + "vendor/danog/madelineproto/src/RPCError/ChannelMonoforumUnsupportedError.php": "2b2fbc6fde6d18f4adee145d7c6af6421714273ba0fbac96a6ff97b4ebc2e926", + "vendor/danog/madelineproto/src/RPCError/ChannelPrivateError.php": "527aabbbe977b6f6422244c91fb2acc093daa57047bcf50867e0237a7f871dd2", + "vendor/danog/madelineproto/src/RPCError/ChatAdminRequiredError.php": "ba58c8684be3e282d34a55ac1588f035608977a5c5f9cafa8b498015e3dea87d", + "vendor/danog/madelineproto/src/RPCError/ChatForbiddenError.php": "65188b42804d44a76fe01f94b2e089784471c14cd1872ab647d9c1071ef8f1e2", + "vendor/danog/madelineproto/src/RPCError/ChatForwardsRestrictedError.php": "1c8dedba29bdbb6ad123fae203223c8a4d00ccc2ee8b52006fe28356ff6c8aef", + "vendor/danog/madelineproto/src/RPCError/ChatGuestSendForbiddenError.php": "e2b27699cbea52603cfa75d58a756b6a3fab8d5bbe54164d2ffeba26bd4bf4bb", + "vendor/danog/madelineproto/src/RPCError/ChatRestrictedError.php": "9c4a4b475477614ce7b82389b2c742fb655d9ad09722398b5b013da9b17719df", + "vendor/danog/madelineproto/src/RPCError/ChatSendAudiosForbiddenError.php": "357d152fb3da84b44340be9acf68c831eb3943015773f255fd52c574b9fefdaa", + "vendor/danog/madelineproto/src/RPCError/ChatSendDocsForbiddenError.php": "8a279ea58a6588284d772d2c3f724935331e157043064a19dab87d26f42dfdec", + "vendor/danog/madelineproto/src/RPCError/ChatSendGifsForbiddenError.php": "61805905bfb31a2c5a984a06cf2bdf76b02aa2e0e35d83ae5c2041079259b26a", + "vendor/danog/madelineproto/src/RPCError/ChatSendMediaForbiddenError.php": "1f25dc4f6716fb3323363566b0c8dbda99674fe88b37352baf753cf40b4581fb", + "vendor/danog/madelineproto/src/RPCError/ChatSendPhotosForbiddenError.php": "a92d49d0ed0544b0f0ec0f223f252b4a00730d3fe727578f4b4bdaff16d693f9", + "vendor/danog/madelineproto/src/RPCError/ChatSendPlainForbiddenError.php": "63b338bc1234f591521b9e117c7fbf51e696d31f234e7f1ec6f180586a21bc11", + "vendor/danog/madelineproto/src/RPCError/ChatSendPollForbiddenError.php": "28bf608d1a676d8151c37b47be93fcd0d0d305b6fe10313386ae92f7fc190fba", + "vendor/danog/madelineproto/src/RPCError/ChatSendRoundvideosForbiddenError.php": "5f39c95c4eb6271fdd3a5d1c0bc0aca5fc0314984b9e5d02b7cc511cf2ec16e8", + "vendor/danog/madelineproto/src/RPCError/ChatSendStickersForbiddenError.php": "1e28f17ace31206b6abf3c26204b846e2e36737002b304bdf42084d05116d291", + "vendor/danog/madelineproto/src/RPCError/ChatSendVideosForbiddenError.php": "655fe6392abca7ca44e309cb77d94643661bd367d31757b21f7e5665d7f1ebeb", + "vendor/danog/madelineproto/src/RPCError/ChatSendVoicesForbiddenError.php": "f15b0f421420e9fb7cfce505368cb74cc6a912767f9bfa35dbd568bc4d443f7f", + "vendor/danog/madelineproto/src/RPCError/ChatWriteForbiddenError.php": "6311794e483ed57be718121626d79931eceea97544b514e58c81aa5b2c69a0f0", + "vendor/danog/madelineproto/src/RPCError/DcIdInvalidError.php": "73dc875a7ea6742f8379eafa84739023f09ab636a2c870ef535565e102d49b8d", + "vendor/danog/madelineproto/src/RPCError/EncryptionAlreadyAcceptedError.php": "093346557991036d5ae1d19e8df079b0a42ca3911e517ee860abbcd1dc54bfd7", + "vendor/danog/madelineproto/src/RPCError/EncryptionAlreadyDeclinedError.php": "beb0ec94dcd3da9e849d3752fe9d39c4c9522879292fd7447127de8f195939e1", + "vendor/danog/madelineproto/src/RPCError/EncryptionDeclinedError.php": "e4d114b6ac8c7c8797089b2a0ad09a8d2bd9ab7f8bf57df0a55f117552fbb751", + "vendor/danog/madelineproto/src/RPCError/FileReferenceExpiredError.php": "e9a0c84ac1137bdf2a0224287d0c5a2811a6b87558afa3a62e476624d792f839", + "vendor/danog/madelineproto/src/RPCError/FileTokenInvalidError.php": "93951fd0007c6e6e26241e4cfbf9b27b45f698fc2fa572aa53ba951fd34186c0", + "vendor/danog/madelineproto/src/RPCError/FloodPremiumWaitError.php": "c4ceaaae24a3d714190d7266ae805cf168e0d9c6eb97c45495e8bc9ad88695da", + "vendor/danog/madelineproto/src/RPCError/FloodWaitError.php": "b598cbc96f87461d001de438ae0482d493ab085040e0b6a854cf922b734bb06d", + "vendor/danog/madelineproto/src/RPCError/FromMessageBotDisabledError.php": "91687216672f9e844feb3acfb373899a71457208a0373d47a7597800f042f267", + "vendor/danog/madelineproto/src/RPCError/ImageProcessFailedError.php": "5e10edded27553fe9cfb106928687352f23aa263745660be6b2b38e40fe45e32", + "vendor/danog/madelineproto/src/RPCError/InputUserDeactivatedError.php": "1d027677ca26a40be438afd8a9875de721d4a124fb7d7b8735c89e6f436f5bc6", + "vendor/danog/madelineproto/src/RPCError/MsgIdInvalidError.php": "f34b7544e8c1e6963232ddbf658fbd7b3eb1c1dbfc0a5105228eb31f1362932f", + "vendor/danog/madelineproto/src/RPCError/PasswordHashInvalidError.php": "e09b30d163955d0c449e0ece25d4405d98e4d8ede8bb7012722ec0454a92c62c", + "vendor/danog/madelineproto/src/RPCError/PaymentUnsupportedError.php": "a526b7c350d36ed907f5f4c11ce01efa91dd15598069427a91ccc12bb213a35c", + "vendor/danog/madelineproto/src/RPCError/PeerIdInvalidError.php": "e34fe32c4c020cf9f4d9f146577516e3de7bf90b7921a74b72195acebb3a03ff", + "vendor/danog/madelineproto/src/RPCError/PinnedDialogsTooMuchError.php": "62fa919934e5713e6affeaffa78cbdc1996a4bef07be7b0c59ec05ed5b82e3ae", + "vendor/danog/madelineproto/src/RPCError/PollOptionDuplicateError.php": "bf24da52f0430968b9798e114da915eef4e4b42db72df0f07f4043f71076f157", + "vendor/danog/madelineproto/src/RPCError/PremiumAccountRequiredError.php": "ef0c402fed98a40a65908507415037df7e5c8338c95219f749daa987eb6bde81", + "vendor/danog/madelineproto/src/RPCError/PrivacyPremiumRequiredError.php": "bdf2f8f81a4c6870768029e582ec48f5969e3e944bf654969f017669ab4f8235", + "vendor/danog/madelineproto/src/RPCError/QuickRepliesBotNotAllowedError.php": "103604f857d73fc668f5963c0af6f62d5ee42fd8afdf918f9d9a6e9e4807766f", + "vendor/danog/madelineproto/src/RPCError/QuickRepliesTooMuchError.php": "fda32425b7939e46da2d38600bb61e3b8dfed45e1203fe8e7e7314932555fc3b", + "vendor/danog/madelineproto/src/RPCError/QuizCorrectAnswersTooMuchError.php": "260bc603fc0019e287ddfed1128fc7068d9d41853b33c86988f317ad4d343dd4", + "vendor/danog/madelineproto/src/RPCError/RateLimitError.php": "9a0dd5c5221e70657c6ca0aef54779c49e5c298e32eadb5d66d10959185601b7", + "vendor/danog/madelineproto/src/RPCError/ReplyMessagesTooMuchError.php": "9ec609ebc1ced8aaa90ab2d6b21fa5602b9b8fe8aaf5a6d36fda07518fea1bd3", + "vendor/danog/madelineproto/src/RPCError/RequestTokenInvalidError.php": "bd85ac34db8926e2ccf4499d32c0b208542036734f7a7a7aa39201d51f4b981e", + "vendor/danog/madelineproto/src/RPCError/ScheduleBotNotAllowedError.php": "2e2a32cb4d20c6f8f08e8683f75d92dc0ede1f284ebb56e8ea1784a15586d524", + "vendor/danog/madelineproto/src/RPCError/ScheduleDateTooLateError.php": "56e5f2763646c9c1e3b15526f1480feda5baa1c3e28d3c7d8058b0f4c0a12a51", + "vendor/danog/madelineproto/src/RPCError/ScheduleStatusPrivateError.php": "eeabb14e951293ccb3b30dac7bd0d5f7dfac65b4d1dd642d5a97c2a69bed3501", + "vendor/danog/madelineproto/src/RPCError/ScheduleTooMuchError.php": "d8a78b7c418d494eddf48351fe60eee7ba5ae4e0f33dc8839398fbe8f0f76fe2", + "vendor/danog/madelineproto/src/RPCError/SessionPasswordNeededError.php": "02844073bab77bb89375a78377572901534907d5b1f541afc61add9d20e8ac89", + "vendor/danog/madelineproto/src/RPCError/StoriesNeverCreatedError.php": "e9583e7bfe8ff3ffef83c97917bcd66b90d5f208c3f0a90ea11cb8298b625b31", + "vendor/danog/madelineproto/src/RPCError/SubscriptionExportMissingError.php": "d9f2250daa6f6789c6e31aca995ede2301d1ac1414f256edb44ac1c22b145615", + "vendor/danog/madelineproto/src/RPCError/TimeoutError.php": "27a843e6b9a5523a6d522534ee44e9b893129e16ae957e4de6ef1f9914bab9a9", + "vendor/danog/madelineproto/src/RPCError/TodoItemDuplicateError.php": "76d6e1205da1b8279109468bfcb5262726da670fcd97c7d7a373736b2f5ca483", + "vendor/danog/madelineproto/src/RPCError/TopicClosedError.php": "96ef2e691cf4dfbf032127be641f2b9c4c541357e0e736eaf9502c57b30d5c05", + "vendor/danog/madelineproto/src/RPCError/TopicDeletedError.php": "0c0b29de938f36718df59ca94a0d9f7d0f75ee9b28e14b48a2b23d6ff54645a3", + "vendor/danog/madelineproto/src/RPCError/UserBannedInChannelError.php": "9268992e0160ab91a9a0c225368bf408eec40438a9d2dc678470f12cdf254fe9", + "vendor/danog/madelineproto/src/RPCError/UserIsBlockedError.php": "86b82d82f6241d8f681d6929d674ec279d2ab149e9544dce9056df302a43396a", + "vendor/danog/madelineproto/src/RPCError/UserIsBotError.php": "85467e0d49d263d23b339cbf298c4719158d41a12251050494c8789ae35b7144", + "vendor/danog/madelineproto/src/RPCError/UsernameInvalidError.php": "51077174fb7df936b2660a630603a6f60a09e8c921d0c971840a2ca8f4ce98ad", + "vendor/danog/madelineproto/src/RPCError/UsernameNotOccupiedError.php": "3b92fa983aedf4f5e9d3f8c748843ebf10918230443bcefc7a0080d63437ec2e", + "vendor/danog/madelineproto/src/RPCError/VoiceMessagesForbiddenError.php": "2b69422c9a4722272c3a42a20825354927505f4cbc1e73caeb58acea90dd260b", + "vendor/danog/madelineproto/src/RPCError/WebpageCurlFailedError.php": "ea767dd422a09f790b04bd47b1655ac3c0aaa52e612df4edcec3baa7d2e3ebea", + "vendor/danog/madelineproto/src/RPCError/WebpageNotFoundError.php": "84e80ce55744c0d7a277db8ab1f30a0083f738e1d94197f4ed45fd32338ced48", + "vendor/danog/madelineproto/src/RPCError/YouBlockedUserError.php": "332a20bad385c5fe7bd93a121bd9d407bc265968b8373958069f40f43890eb27", + "vendor/danog/madelineproto/src/RPCErrorException.php": "f3c5d09d4ad2dad75d59fa249cb356a750da07a59ff3e95f2306c8f36d51ab4c", + "vendor/danog/madelineproto/src/RSA.php": "2bb0b4a21f865ad7d8fd7ab607a25684a6c6c35cb286e180252324186adaaab2", + "vendor/danog/madelineproto/src/Reactive/Actor.php": "e728795e055582e19239b1a69ffadba89b083dfb51f1713240210434c5152843", + "vendor/danog/madelineproto/src/Reactive/AsyncWaiter.php": "6ee85b026c20fbeeebf70a42c8e60413a48833eabd9378651f75ba08e3f1567e", + "vendor/danog/madelineproto/src/Reactive/BaseSubscriber.php": "62ca46a6a576309e07084715965cd9934e923b70b886570214e621507d6e23af", + "vendor/danog/madelineproto/src/Reactive/EphemeralSubscriber.php": "f15c49320bf2c153e16eb36b2f1fd5da7a2750d59bc67a75afae9a0cf406c951", + "vendor/danog/madelineproto/src/Reactive/Publisher.php": "ed68804d1d66ca9f736975653b085dd912f4e7f9eb2fdb20c333d74e4830bf0b", + "vendor/danog/madelineproto/src/Reactive/SimpleSubscriber.php": "84cce2b8c60c2248f306e4833a989f50147eca8568a951787f2e8cbd175956a5", + "vendor/danog/madelineproto/src/Reactive/SimpleSubscriberAdaptor.php": "b27329d049c9e17ca067f73852ded6c12b3349472a59308a348884321d9a986f", + "vendor/danog/madelineproto/src/Reactive/Subscriber.php": "82cb4b641eb8b81753aa8a442f283ba30115cd0f03ce32cad42074ac0f249893", + "vendor/danog/madelineproto/src/RemoteUrl.php": "b3540302c46df8e1ba09641a8e24291b7ecf2f38fbef058df380cbad90bc2c80", + "vendor/danog/madelineproto/src/ResponseException.php": "0868b8db671f8cf05625a18a348c63d3585ad645bc6a2c24122e7871d15dfe85", + "vendor/danog/madelineproto/src/SecretChats/AuthKeyHandler.php": "756d1694e6610042c5037759a837866de8f7b33482e2a41b3eec7b75021ef30a", + "vendor/danog/madelineproto/src/SecretChats/RekeyState.php": "8f88a0d09d5766ba31e214ad9861207ca7f79b221ed7b22d815405cffc6abb67", + "vendor/danog/madelineproto/src/SecretChats/SecretChat.php": "6d07c912f5be6185bc0e0e16d7366046278872dc6cd768ef7cd3b794bfab98d3", + "vendor/danog/madelineproto/src/SecretChats/SecretChatController.php": "c3abfcf400e7bb670355d5636618e45f9a0d0241892d0d160ceea199782fe109", + "vendor/danog/madelineproto/src/SecretPeerNotInDbException.php": "899ac1d649fc5093a969593ba4f619e69aae6cb0c29e2f4a2cbba92502901b1a", + "vendor/danog/madelineproto/src/SecurityException.php": "f4208a91bf6612a95271ad9573e18dbca341adf99c0aaf14b565c6751a098b6e", + "vendor/danog/madelineproto/src/Serialization.php": "62e8b4d02fb0a8f2b44fd2dc6d161b9bc47869e2907a9cb063e3722c5487cf9c", + "vendor/danog/madelineproto/src/SessionPaths.php": "83ffcfee4920ccebbc523d3595312abe1d0c998380e906063472f17245fdc1a1", + "vendor/danog/madelineproto/src/Settings.php": "e513f917db2d298fcf0aa8156dc85a132174e1795bdfc93fe5e28402009d3cd6", + "vendor/danog/madelineproto/src/Settings/AppInfo.php": "3c771e48fa256141f9923851c675bffc9344dd5af3d69dfbb41466d095fe7de2", + "vendor/danog/madelineproto/src/Settings/Auth.php": "7c0a4495f979c5a957ced7de700f660738d0f42a9bab43f8519108b733d580d5", + "vendor/danog/madelineproto/src/Settings/Connection.php": "d36e1c223a841745c0908099f0625404085dbb33fb05f39eaf49b00789b06473", + "vendor/danog/madelineproto/src/Settings/Database/DriverDatabaseAbstract.php": "81e3f7ad2148cd44f6e5c84dd07c167fe4ce406fd5a2bca2a31bf45fdc41103e", + "vendor/danog/madelineproto/src/Settings/Database/Memory.php": "e4e971fd5b3508180b04b9ad38b9ff01cdac984d4c0f7bdcff088a3041f9328b", + "vendor/danog/madelineproto/src/Settings/Database/Mysql.php": "c0af4d328a1b6071df40a3e8ccf12abf9db66596e78f3e89290260263bb04bc1", + "vendor/danog/madelineproto/src/Settings/Database/Postgres.php": "e25615513418078165dd3418363a767a6fbfd637d1e0e260da3847b4cc9683cf", + "vendor/danog/madelineproto/src/Settings/Database/Redis.php": "b77405aa00a37394099a6424c77ffae19dfbd7c40ad5d45f00a444b69973d0d5", + "vendor/danog/madelineproto/src/Settings/Database/SerializerType.php": "1a2a80030aaa719c1a7076d8fda433a0d1ab4b11345629bcb1625300c98d5ed2", + "vendor/danog/madelineproto/src/Settings/Database/SqlAbstract.php": "fd42f2c1e160af334f7b6de3681690913e4af2c5c513a5c5966908a5fb973b91", + "vendor/danog/madelineproto/src/Settings/DatabaseAbstract.php": "f86be5e6bcf2b5c366e21de960d34d36898995aacc6b08f6d49c3b8b26a668ab", + "vendor/danog/madelineproto/src/Settings/Files.php": "41459c1bfb782f892b3748891b5214490369d7a4ef095418da2a78b555e0195f", + "vendor/danog/madelineproto/src/Settings/Ipc.php": "137f4cd805ea1418383d8057bde6ed939f0fea0a08e6c57c67caa5dc85d71f56", + "vendor/danog/madelineproto/src/Settings/Logger.php": "153cb4353cd91f69ac080c3ccecbc71295602069446d8b02c21ca30be0b7b60c", + "vendor/danog/madelineproto/src/Settings/Metrics.php": "4f4b8955457b190d0bc37d94ef736dcbd236fd8512a2d57397fe09b1b02ad6a6", + "vendor/danog/madelineproto/src/Settings/Peer.php": "00413947aeda1a0a8dbda813feeaffa4f34f0a9f5142496759a83c94a94b16e9", + "vendor/danog/madelineproto/src/Settings/Pwr.php": "53fb76c3eb9da7bfc68b2bc7827dc703ba0f0517b54f9130622512474442c0c3", + "vendor/danog/madelineproto/src/Settings/RPC.php": "f13ad417e0ff02fdaf7d2865654e0c76122b1fc5f2b161f3c4b034bca210145d", + "vendor/danog/madelineproto/src/Settings/SecretChats.php": "606e8ecae982bd70eab9cb2ad29bc53d1f352c43f95d42576168440d14898f7e", + "vendor/danog/madelineproto/src/Settings/Serialization.php": "2a3b90a4639ea80726e9410d829b9f890d9d1b108f0dd4dd655c8a0b3ca4e322", + "vendor/danog/madelineproto/src/Settings/TLSchema.php": "09099fc5245bb60c273ba6526ff67187f2503fbd6c36071c212cde1099e98ece", + "vendor/danog/madelineproto/src/Settings/Templates.php": "ffdc0b5b9c7e156715435fb35e5234c1ab70ecac10b8b8c36755b9b2e4b7e9ff", + "vendor/danog/madelineproto/src/Settings/VoIP.php": "e2c94cb9f26472411594f6dee63f7cccb713ee466512efd256cff6f7747211cd", + "vendor/danog/madelineproto/src/SettingsAbstract.php": "17f534dcfeeadaeb5c1bc79b150ee53cd0c95a57b0a3c4d96318e3943a20fb52", + "vendor/danog/madelineproto/src/SettingsEmpty.php": "e916c8e45cb707b75ef39cd6f6b25ddf949c281661f21a3ccdbee50632a77e13", + "vendor/danog/madelineproto/src/SettingsGetter.php": "8d0335727ddc3d1e05d7faafc4445599564ae60fede619ec654314745142f7fe", + "vendor/danog/madelineproto/src/Shutdown.php": "f192d030c5e9106b7568445c74d9031cf702818836ac425e31c7984dcbe0b273", + "vendor/danog/madelineproto/src/SimpleEventHandler.php": "1b25145c677d6cde695c30eba0192c6fd456b0581b71751ddd8ab9c2ec33c2e7", + "vendor/danog/madelineproto/src/Snitch.php": "54dbc7a308bb85dfee8f460ff7773c0fc0e5bb6f316a1afe7fa2982323c3bd84", + "vendor/danog/madelineproto/src/StrTools.php": "c38221e336aa4b6c266cffd8b37bda1d73ce052ee14c3d2feda7b5107002c2b3", + "vendor/danog/madelineproto/src/Stream/ADNLTransport/ADNLStream.php": "ddda14c8ec9e9d2b29b53f87535674c8e4afb470a1e29b685df66daa0bfec42d", + "vendor/danog/madelineproto/src/Stream/BufferInterface.php": "0d731e9d1add72723ad0f83bb8fbe7ff99943de2018802e14ab190f03f89a7ee", + "vendor/danog/madelineproto/src/Stream/BufferedProxyStreamInterface.php": "6d1490c00b4324d9ebfdd511f9b65662b4225040c2a67bdc29eec823bf228b29", + "vendor/danog/madelineproto/src/Stream/BufferedStreamInterface.php": "4f5a7bde866f435430917f2f1a7ae2d56c05a94d6ebfce99590cc952a6c694f0", + "vendor/danog/madelineproto/src/Stream/Common/BufferedRawStream.php": "d9ce4bd9d8521f0d2999c85b9f9f6e5eaba1ab25826d5d0e268bdf89d308bc97", + "vendor/danog/madelineproto/src/Stream/Common/CtrStream.php": "99c5885c70c71a0c04517426724fc34296ca15104cec628c1b55df976be5d119", + "vendor/danog/madelineproto/src/Stream/Common/FileBufferedStream.php": "279ae32c7857c3bec36097642c2d3897916d2b189bf53e24f721660e8bb7fd3f", + "vendor/danog/madelineproto/src/Stream/Common/HashedBufferedStream.php": "400ea99b5be44c2743b602d31ddaac2a892913accbccbff3d9478ed7a16da88e", + "vendor/danog/madelineproto/src/Stream/Common/SimpleBufferedRawStream.php": "bff341a584248efc2b2ff3366c8476e5927f9b9e0e1ad12fc9796a73ebef9470", + "vendor/danog/madelineproto/src/Stream/Common/UdpBufferedStream.php": "59fca4d8548b56856f7f2ef216688e3f481de493d15498e51a9201923ecb5ad4", + "vendor/danog/madelineproto/src/Stream/ConnectionContext.php": "63a91951112add2b2596fb71004ce12333e04ffc24a3c3efc87b69dc10b624de", + "vendor/danog/madelineproto/src/Stream/ContextIterator.php": "e2240e9d5d6c51ce3c40fd41bfecc04122dc933f64ae22ef5d7f639d576f56e5", + "vendor/danog/madelineproto/src/Stream/MTProtoBufferInterface.php": "c28d167e56678a5df854a40eecd05d62c2a6274d722a1612934d9b2bf375ca29", + "vendor/danog/madelineproto/src/Stream/MTProtoTransport/AbridgedStream.php": "7149590c867adac769a9f9b0b53aab7d5969f52eb4d9eaef0fea65fa397eb541", + "vendor/danog/madelineproto/src/Stream/MTProtoTransport/FullStream.php": "ecfed578700c3b3e6d2fab9c7a3174f1903a7702542d06b4c4e71698dc76358f", + "vendor/danog/madelineproto/src/Stream/MTProtoTransport/HttpStream.php": "f212ae1d43ed639f1655590c616d3fec483b5f311d2ab42c149b3c9320ba3f6e", + "vendor/danog/madelineproto/src/Stream/MTProtoTransport/HttpsStream.php": "aa40eab78cf7594915428e827d94e0ac390906a77ec1dbee6359966e2b3c53cc", + "vendor/danog/madelineproto/src/Stream/MTProtoTransport/IntermediatePaddedStream.php": "c7cfba6d48a48d586b2b2557384bbad4a606f8a5fec20ac8f510910449445d39", + "vendor/danog/madelineproto/src/Stream/MTProtoTransport/IntermediateStream.php": "5645a22e7a0dfe132a1db2e6d476e99d4905906bc3635f555d2d9d9799dffc09", + "vendor/danog/madelineproto/src/Stream/MTProtoTransport/ObfuscatedStream.php": "a049e2bac885397e95b98223d9ad46d495e3010e0a1df333b98565ffa2566afa", + "vendor/danog/madelineproto/src/Stream/Proxy/HttpProxy.php": "d2ffcf3e167ce8c57db0a9f0445730d16ef3f870cf0e658989ec287ee5479230", + "vendor/danog/madelineproto/src/Stream/Proxy/SocksProxy.php": "0fdd91794ef4b6a07c2afac1ac22bc875042f432b98a3d515fd749fa744b112a", + "vendor/danog/madelineproto/src/Stream/ProxyStreamInterface.php": "617bbdeac5d52563aabf07486cd32ea2df5394b6e7c2d16f097d7b79a59ec090", + "vendor/danog/madelineproto/src/Stream/RawProxyStreamInterface.php": "216bdb48706e25b9c534a77ac06638128c6d659d662167107bde974dcf44679f", + "vendor/danog/madelineproto/src/Stream/RawStreamInterface.php": "3ccaf626ee8de87d3f0ae60b3a00dba2e49d65545a2693a7cd7fd0ef65687997", + "vendor/danog/madelineproto/src/Stream/ReadBufferInterface.php": "b2b7b2dce7b13ace284d982cd95750ef7833141e516cca4137cb109d478cf61d", + "vendor/danog/madelineproto/src/Stream/StreamInterface.php": "c947c20e3b60a90fd3ff2990c565c44ef74b0296978b741f0a6de1399ab5edf1", + "vendor/danog/madelineproto/src/Stream/Transport/DefaultStream.php": "778be4d17ff38714403e6c7e544733bedb300181cc84966bc8018d31fe803bf7", + "vendor/danog/madelineproto/src/Stream/Transport/PremadeStream.php": "88a750f8ba28a63e39eebb8f0f51cfe85602517fc2f66fc54dd7be367b6ca9de", + "vendor/danog/madelineproto/src/Stream/Transport/WsStream.php": "b92b86952ca9955162a2e8cb66194fa1611e3325aef5cf79f323306d45bede87", + "vendor/danog/madelineproto/src/Stream/Transport/WssStream.php": "ea40b03648b4035348dc72208c1dac0b916267d42a74bc6f7a0ddf82e5e50ec6", + "vendor/danog/madelineproto/src/Stream/WriteBufferInterface.php": "6edea78696bb36e8aded4538ec27fc2ab105656aba32f9497bd68bc4df78b72c", + "vendor/danog/madelineproto/src/StreamDuplicator.php": "422c03509a5a6925a433f7fef7cc9e9e506e80d6a48537341349bbe3eba6c724", + "vendor/danog/madelineproto/src/StreamEof.php": "1b4c3b734181de5b2a40f129db69680216de98a280b7a6e2b888ccee21c4776e", + "vendor/danog/madelineproto/src/TL/Conversion/BotAPI.php": "ae3f544958e7c88410a73071aba4356c42e2d9550ec20dbf7b3eae9fdfbea0f6", + "vendor/danog/madelineproto/src/TL/Conversion/BotAPIFiles.php": "2bab2995ac7855587b111e7b88fb2501dcc809f0eeaf57d943c698d122cc4077", + "vendor/danog/madelineproto/src/TL/Conversion/Exception.php": "521a4b9b04af18b57aeed929875f3145811c0ae4e4e6ec614a6c3e58e7c477f7", + "vendor/danog/madelineproto/src/TL/Conversion/Extension.php": "91992422a233782eb9c98a87b843505aee8cec19889b8963340d9d7bd98fa1e0", + "vendor/danog/madelineproto/src/TL/Conversion/TD.php": "1ab2ed9ea1de1602263f7d138cc0986811b31c984bc8b8b8d939893e9c0354d5", + "vendor/danog/madelineproto/src/TL/Exception.php": "ffae9e9eb3dbc6caf376fb356f53f3db8268b8cb3812d7c369c35609afebd895", + "vendor/danog/madelineproto/src/TL/PrettyException.php": "c16a618cc11e9ac767a2f595dcbac057f73528e467571a6858c1517224e39b94", + "vendor/danog/madelineproto/src/TL/SecretTLParser.php": "4aa9a21aec5434ea74aa36c3b31ca9365179b32bf9f6e24805705dd43c30d8d9", + "vendor/danog/madelineproto/src/TL/TL.php": "8bbbadf526c007d43f6ad489270f56859f1dded86006b17b6903d5c103a25745", + "vendor/danog/madelineproto/src/TL/TLCallback.php": "bf8982aeaef4683f4f98ce2d5c49f578ef74dc856c86761a99ff2dd88e1bae93", + "vendor/danog/madelineproto/src/TL/TLConstructors.php": "590b747bc3e86c844ea558f70745c3361311a82d080c1d0a9a3527ee1f522cad", + "vendor/danog/madelineproto/src/TL/TLInterface.php": "4d6f71ce549ef91c6f64238111463bfe99d5b9e4addc4554446c53666a5718ad", + "vendor/danog/madelineproto/src/TL/TLMethods.php": "e5536caadd1ac04dad6b6a092266a5e588f090bc3f02ba55b6d09487a53f9054", + "vendor/danog/madelineproto/src/TL/TLParams.php": "39bb62eebb39e7ee7c43d75b377c89251c786d1bc036b42467188ab22136cfdb", + "vendor/danog/madelineproto/src/TL/TLParser.php": "98c0c7d454e76cd8c144f08accfd8f67a1ced14baacff2732d4a108a5ea1ea86", + "vendor/danog/madelineproto/src/TL/Types/Button.php": "cc7a805fc06f97db614924c6a629ea9636b40c8bda9eb9dc96fb2758697883ea", + "vendor/danog/madelineproto/src/TL/Types/Bytes.php": "0ba962f893026bc03c94173d88c65765542c8f73f155e8ef79e9de15a3498e70", + "vendor/danog/madelineproto/src/TL/Types/LoginQrCode.php": "1be027a9918666a19b8988a13e131fb8606d0e39394d665ae8ef4a7ec4a4c8f7", + "vendor/danog/madelineproto/src/TL_file_ref_map_schema.json": "118fa46b8a12dff8e4ac1545d99f39a0c261a1cd0d375ad52adb27a70072bece", + "vendor/danog/madelineproto/src/TL_file_ref_map_schema.tl": "1bb333123d34d3598b50cd5fca7445c9e0347bdfc78955dc71cf543262ac4dce", + "vendor/danog/madelineproto/src/TL_mtproto_v1.tl": "a68bbcfb6aea699cb394aec44008b01b915f1e8b632a1d786001ddd7c7300dcd", + "vendor/danog/madelineproto/src/TL_secret.tl": "899beb4c1713a65c9f09677dd93406a1e96c52b661d46dcd30ac7c0a87b0d20c", + "vendor/danog/madelineproto/src/TL_telegram_v225.tl": "539272f5ad8992ee97b61bd134fcf3a28a41ce720e806d0e7dc0e2e408c581f9", + "vendor/danog/madelineproto/src/TextEntities.php": "1b2f89fb1280db4670c548ae605ea1d65f330636cfba73b356d404b5e2e8a78a", + "vendor/danog/madelineproto/src/Tgcalls/Controller.php": "5e9288bac2473f3e747091af5f830a3d5c2406fbcae9810eb27c6ae6fbfae4dd", + "vendor/danog/madelineproto/src/Tgcalls/TgcallsTools.php": "80af031de6254582b4acb5ecab77c9c409a05487006fe43e3baa864e9017963a", + "vendor/danog/madelineproto/src/Tools.php": "5f0e873fa1fcc39b056f6a0a828590036b79c8a6941816bc8809eb7df8ff5b26", + "vendor/danog/madelineproto/src/TransportError.php": "ca8c1681243f48dcf5fde4c88d134d42d104b60da8b2114921f7b4ba9d7b8847", + "vendor/danog/madelineproto/src/UpdateHandlerType.php": "c97475bf79cb88d30d2728ce463164fcbab683872226ac04bfb48a36c55c4bc3", + "vendor/danog/madelineproto/src/VoIP.php": "63ac4ee2579875ebcb3eeedae8b5f7089239a9e4a94bd67761f60688654c9217", + "vendor/danog/madelineproto/src/VoIP/AuthKeyHandler.php": "d23fef2974eae29abf4a042ec11c581cb78f27f40a756990d7c6298cc8d868d8", + "vendor/danog/madelineproto/src/VoIP/CallState.php": "4ce9ee3f3680c7bd48139de843f160fdd3cdd142fdd8b882c40c619f5ffacad1", + "vendor/danog/madelineproto/src/VoIP/DiscardReason.php": "c488208e8ff11d2bc2f70b822007090cb4fd21342df5a6f931af70492d961e1c", + "vendor/danog/madelineproto/src/VoIP/Endpoint.php": "bd075cac19121e12eb25c25c19d14bcb6d2d5187ad89ffac034034cda530833e", + "vendor/danog/madelineproto/src/VoIP/MessageHandler.php": "ebb4ab66100cc45b249d174a7fc016adf29ee3b4f1e53830a25f952e474d7d7e", + "vendor/danog/madelineproto/src/VoIP/SignalingProtocolVersion.php": "f368d9775f1ef6c8de764a43d92dbd1f4ad241e0a840d581f7c42000dc27754e", + "vendor/danog/madelineproto/src/VoIP/VoIPState.php": "de6d6944f8449c9cef3ed2a8160b2952104775f8f2bf5c222fd82b3e02c1a195", + "vendor/danog/madelineproto/src/VoIPController.php": "279bec3afe27a9612ca24b470347aca5d170a0c6f367ea25ad6d1a6c5296045b", + "vendor/danog/madelineproto/src/VoIPServerConfig.php": "1bc779959016c16bacee0771a3f76ee0789ba38c14b6120706afab32bd7f0d9f", + "vendor/danog/madelineproto/src/WrappedFuture.php": "dffd8749f990bd8baf8e3c3f750bae1b7e60526a8a2af3d49ccd00401c3da0c8", + "vendor/danog/madelineproto/src/Wrappers/Ads.php": "b15d6f0e8c32b5d48b71192329baaab9c41024e9e61772437a0e542afb00183d", + "vendor/danog/madelineproto/src/Wrappers/Button.php": "202739736b5631d7d61a181e161bff4e0897203501785e9c65c256bc1b64734b", + "vendor/danog/madelineproto/src/Wrappers/DialogHandler.php": "81c042686d66fc06c002c6aec7063dafd0c3a6710f480a6c612c4f1b3d2a24f5", + "vendor/danog/madelineproto/src/Wrappers/Events.php": "47492034150331939108f0f7ccda3c4f1eff87d7a2a149517a8f55e20e72697a", + "vendor/danog/madelineproto/src/Wrappers/Login.php": "e500f51603db0a981bb6c658b2e7912bf504f41803ac0f77d10dfbfa9fa20cd5", + "vendor/danog/madelineproto/src/Wrappers/Loop.php": "642c74c34bbac92670aa7398029ed01254ce8a005b07c280ecc6b5f3ff830ab1", + "vendor/danog/madelineproto/src/Wrappers/Start.php": "339df607ade1781bf01128e9847b456da3c90c8b05d589b4a3fc0a6a7bc02c65", + "vendor/danog/madelineproto/src/empty.wav": "51ae0ca177e97f8412e667fefb20f1a3b45c81cc59ae96c252adb6c7cd7c32fe", + "vendor/danog/madelineproto/src/file_ref_map.dat": "6f62c4ed620c5c6182c7e23b9373402f832cfc9400de70ee37c3a7c9752f9dbb", + "vendor/danog/madelineproto/src/file_ref_map.json": "bbd2aa2593ccfc73638b82a7d9fe0cc116a1e97e55ce8268233ef4d13c233623", + "vendor/danog/madelineproto/src/polyfill.php": "d6682a66d28c1ffaa7703a111248e372e06f41a3fb2f599e89ad356bc2305daa", + "vendor/danog/madelineproto/src/v3.json": "d09f26354bb9f284ebb7dc7a573375aec1ffd8720b4d4d1ede84d990fdd40a25", + "vendor/danog/madelineproto/ton/lite-client.php": "9cd0e8901db27677a718e07b4daeaf2b5ff81a59fe764e8096f879f9df6cf738", + "vendor/danog/madelineproto/ton/ton-lite-client-test1.config.json": "4d754a87d953e418dbbcfd505e5aaeecee8d28ee6df0247ff024b40c0a2352a5", + "vendor/danog/madelineproto/ton/toncustom.json": "9f2b14a027fc04d2eb191670793c1c7a4e2397e1622ee470abda0305d648e799", + "vendor/danog/madelineproto/vendor-bin/check/composer.json": "c3fdb4aa6c34b4d503d7f7c86ab764f611abaf3d947e3b8011544947b95c6bc6", + "vendor/danog/primemodule/LICENSE": "57c8ff33c9c0cfc3ef00e650a1cc910d7ee479a8bc509f6c9209a7c2a11399d6", + "vendor/danog/primemodule/README.md": "3a373bbaf15261d728a33c51703baf61aabc7b4b8fdece5d883646c1c2706094", + "vendor/danog/primemodule/composer.json": "4839a05cd9716afa67a46bd5ee688e865a56cd08592a329dc649b16228a54922", + "vendor/danog/primemodule/lib/danog/PrimeModule.php": "2e45e278701b84b8507d95a6962b01edcad10ed9b278ecc35718543336f819bd", + "vendor/danog/primemodule/lib/danog/alt_prime.py": "ec63d5de8cce42908bc8bf1043626c552c7eae5318658217a1093d093b199bfc", + "vendor/danog/primemodule/lib/danog/prime.py": "5dc87da7b6dec039a55c3a494bd8aee60316ef6b102e4b0aabdc9b3bcccb0e03", + "vendor/danog/telegram-entities/.github/FUNDING.yml": "d32aff5b00bb9eae134a36c19ba9680f222d4aa62d4af8b1e349769fe98e85dd", + "vendor/danog/telegram-entities/.github/workflows/main.yml": "6010467e3b630254e291d8757b96af7a0c92b17b8460860bc4fd2405068eaf0d", + "vendor/danog/telegram-entities/.gitignore": "1920173c7c1839363833a34e3ba921b51b2f73933e7cc98b85ae710599201130", + "vendor/danog/telegram-entities/.php-cs-fixer.dist.php": "9b6af1b5d3d4d5f1c1bc495bd5fd0d5fe6a9bb2c3fdfc546c3c074a4bc82b717", + "vendor/danog/telegram-entities/LICENSE": "8c6db340475136df3c1201d458fa5755698eace76e510471ecc9d857d6083dac", + "vendor/danog/telegram-entities/NOTICE": "6b4a79f5f9cfaff020d4ebe1c3979f089e22f0bc6c0bffc697fe13d08dba0dc6", + "vendor/danog/telegram-entities/README.md": "24fa4ee0df49395fc81f073d04768f31ca4f7da8255c84d5a958152ef8503933", + "vendor/danog/telegram-entities/composer.json": "343466d498053a1c2dbf808e0424f35ae39b7bb54744d58dd2fa808514e554c7", + "vendor/danog/telegram-entities/docs/docs/danog/TelegramEntities/Entities.md": "7ba231eb75ffe2ab3ed93c09e6f8de043651bddd24dc348b3dc3abdf7b1127ea", + "vendor/danog/telegram-entities/docs/docs/danog/TelegramEntities/EntityTools.md": "3a9864790bd7d1ff898e55d3b37419e1c47c941d3f13a7107abe7a45fd713ca7", + "vendor/danog/telegram-entities/docs/docs/index.md": "b2fe478d2abfd324a56f7f92ff6cf629ca1b4382d6f719b0baba7a27dfd26e3b", + "vendor/danog/telegram-entities/docs/index.md": "dbcc210d7f4962499db6d4cfa18658e26d05ee700c962a811cac911f095e22fd", + "vendor/danog/telegram-entities/examples/1-all.php": "7dc031e01147d4cefe7ebd5034dc5548e2307eb19aad74d2964487dfc0ac6cd9", + "vendor/danog/telegram-entities/phpunit.xml": "c87eebd760a64038c4bc2a73ef99d102417632d6446a63b36f1292f132e00735", + "vendor/danog/telegram-entities/psalm.xml": "ff29a0c349a6866df89812b508a0a47e4c5ad6ba87f86532fad416e89d122981", + "vendor/danog/telegram-entities/src/Entities.php": "60cdc08246f1618e395a34f8abf0ae15faac9f117d3a7b8dfaf7f8c68aaaa504", + "vendor/danog/telegram-entities/src/EntityTools.php": "ca43d18fcdaa0f70f78b089f389b69b091b45bdc2df5dc203bb9b85bb3ee8057", + "vendor/danog/telegram-entities/tests/EntitiesTest.php": "008159f03ae3c894def8ad04ccc175f7072c17bd3f607bfb835acda4bc90db94", + "vendor/danog/tg-dialog-id/.github/FUNDING.yml": "d32aff5b00bb9eae134a36c19ba9680f222d4aa62d4af8b1e349769fe98e85dd", + "vendor/danog/tg-dialog-id/.github/workflows/jekyll-gh-pages.yml": "8028ba1bdddd05938c52b2ebd46a4c35e45aa595b5d4886731f053532c4cc0a9", + "vendor/danog/tg-dialog-id/.github/workflows/main.yml": "99c335301ad5cf8ba3943c840cd519988e8c2e195d9282f6bb01496b3c19f17e", + "vendor/danog/tg-dialog-id/.gitignore": "07a3dce1cb3bf20bc80f241d44d279016a2eaed2a3616e14ed58bc0659368df6", + "vendor/danog/tg-dialog-id/.php-cs-fixer.dist.php": "d9b2ec5552c8a0147b02eaa486d00b276a47593207f57b3c3bdcba762cf576f7", + "vendor/danog/tg-dialog-id/LICENSE": "8c6db340475136df3c1201d458fa5755698eace76e510471ecc9d857d6083dac", + "vendor/danog/tg-dialog-id/NOTICE": "c23abfc407dd639c3136e3a12451688d68d7f9957b43ecbcedefb2cf5757086e", + "vendor/danog/tg-dialog-id/README.md": "f1ee1bf7f23be0eec82522c3486ebcf6975abf7ba6542c6a35229ad242f6e14d", + "vendor/danog/tg-dialog-id/composer.json": "ec322bb7f597046139ebc16dfb458989ad7f5c8afcbd9d0b8d8f6c0bac362da3", + "vendor/danog/tg-dialog-id/docs/danog/DialogId/DialogId.md": "7758af005201c55ac67bcac7df60fb930995b2723380c47b807c51092597cf6c", + "vendor/danog/tg-dialog-id/docs/index.md": "48315f773331db2f96d449cdffbd1d7aa3955c066997a9b6007d2585351ce8a6", + "vendor/danog/tg-dialog-id/examples/1-type.php": "820e2583d408c8ead25788e53ea11dda1958c9997e268db5991d09ee5f4aa1b9", + "vendor/danog/tg-dialog-id/infection.json5": "3b538f5bb45bb64fe762fecc09748354037149da3f4c6170b183b07b791f7ec2", + "vendor/danog/tg-dialog-id/phpunit.xml": "6ef6a824fb67a258d1ea16a18dca3b773881095d2cc0f6da1e4c9c35c43b524a", + "vendor/danog/tg-dialog-id/psalm.xml": "1c2f56e8bc8355e3913878e2b6b51a18fb2c343851d5866cb91c9658436eb7c1", + "vendor/danog/tg-dialog-id/src/DialogId.php": "30792dc368c8861f14b11a2936cce1cbba00e0c9f478f4a7afef6682c40d0022", + "vendor/danog/tg-dialog-id/test/DialogIdTest.php": "3ed6d781401bc3c113b40bb1d643f87a80d2f781dd12c320de68452f004c7e0b", + "vendor/danog/tg-file-decoder/.github/FUNDING.yml": "d32aff5b00bb9eae134a36c19ba9680f222d4aa62d4af8b1e349769fe98e85dd", + "vendor/danog/tg-file-decoder/.github/workflows/main.yml": "ed9854087a1d93007f146a670e8c85bf3618d5f8bd66965cfa22d908a0f2b9c8", + "vendor/danog/tg-file-decoder/.gitignore": "e8af7f56969ba03e540975858d268e192458f783faf57e03f3cc9fed521e8314", + "vendor/danog/tg-file-decoder/.php-cs-fixer.dist.php": "3b188ac5a4675dc6aa321dcd0062d6ec78ee05dbbc39e3f4214896c829226cee", + "vendor/danog/tg-file-decoder/LICENSE": "57c8ff33c9c0cfc3ef00e650a1cc910d7ee479a8bc509f6c9209a7c2a11399d6", + "vendor/danog/tg-file-decoder/README.md": "59324f260fb46ec3009876bad38287497908c38a27f0d759c5b8350f2ea62b09", + "vendor/danog/tg-file-decoder/_config.yml": "91330137f6537697be5cf6f4f05651b945d920325cbea69601d95e3d06a68019", + "vendor/danog/tg-file-decoder/composer.json": "ecd6e3608728b89fc5c75762cd825516b146204777008fee72ef608133788093", + "vendor/danog/tg-file-decoder/docs/danog/Decoder/FileId.md": "f5e3ff02c7ca8af282e2ee67d204758f9d190ad9dd7fc4b503cfe8da98a4458e", + "vendor/danog/tg-file-decoder/docs/danog/Decoder/FileIdType.md": "faf0463b4805b7ea51413dcc64c8494f6aab8622bba30a6dac9012336033a11f", + "vendor/danog/tg-file-decoder/docs/danog/Decoder/PhotoSizeSource.md": "47f89aed4aaa8e4f04e85d20f87c831a0c08c87898bc7256c33cc1e083b08c49", + "vendor/danog/tg-file-decoder/docs/danog/Decoder/PhotoSizeSource/PhotoSizeSourceDialogPhoto.md": "19927c5b52cc837740a4ab1c3b4c08dc716415e69d8363b1c0b2185df8783ff4", + "vendor/danog/tg-file-decoder/docs/danog/Decoder/PhotoSizeSource/PhotoSizeSourceDialogPhotoBig.md": "a2d883c8a37bee84018393a191e640f5286fa3bc8d07e93e9f008afa9d04b0bf", + "vendor/danog/tg-file-decoder/docs/danog/Decoder/PhotoSizeSource/PhotoSizeSourceDialogPhotoSmall.md": "de69b552cdda7001a5c15af2d0858ffd8aace32b94a063b6cc0385bb840bb0be", + "vendor/danog/tg-file-decoder/docs/danog/Decoder/PhotoSizeSource/PhotoSizeSourceLegacy.md": "3e5cd8e56ae4adca4f13f70d927f53073c6915379ec3b55d1897771f45b74291", + "vendor/danog/tg-file-decoder/docs/danog/Decoder/PhotoSizeSource/PhotoSizeSourceStickersetThumbnail.md": "934175aedc10bf42292845aca51fc8a5730dd5fe4750b849dcf6c035fb57bd57", + "vendor/danog/tg-file-decoder/docs/danog/Decoder/PhotoSizeSource/PhotoSizeSourceStickersetThumbnailVersion.md": "4725de50bcd096e04e8b73573466e40a7d24d784e504cb9decf85c2daa1b0f9b", + "vendor/danog/tg-file-decoder/docs/danog/Decoder/PhotoSizeSource/PhotoSizeSourceThumbnail.md": "24df1b04a2839d00e31a517f2b03740f2ec1192470e53a892ab1a1af8668377c", + "vendor/danog/tg-file-decoder/docs/danog/Decoder/UniqueFileId.md": "b7e8f05dbe68b9f008fc436248e066e710a947731ba3af0ccf958d4084f85122", + "vendor/danog/tg-file-decoder/docs/danog/Decoder/UniqueFileIdType.md": "4c89330bd9be0f4f1968978532c82887c658c248e3e57e3f6572bf88c13b9f4b", + "vendor/danog/tg-file-decoder/docs/index.md": "7514947fa637e222f53018117208053a934d83501d30e87dfcb201edb579584c", + "vendor/danog/tg-file-decoder/phpunit.xml.dist": "e371261a973b8e60b35d89c90797953c494283a6e44124a47e01e4a34cc66f1c", + "vendor/danog/tg-file-decoder/psalm.xml": "514e73da9bbfde7c9788194d653ca785f1ae1400309235f81f8c05696ff62e6a", + "vendor/danog/tg-file-decoder/src/FileId.php": "10ffdb1f95b8c2a337775fe754d217fffe6dbe84e5c8668e226893b9e8234324", + "vendor/danog/tg-file-decoder/src/FileIdType.php": "7697b8939c3b8e8be1648a270dda03e3472c0aafa9640dff44ac89ef57c30664", + "vendor/danog/tg-file-decoder/src/PhotoSizeSource.php": "00b4039820ba3bd15c0b5caf0bed387f6aaa3d031ebd52a378fa932413f8f700", + "vendor/danog/tg-file-decoder/src/PhotoSizeSource/PhotoSizeSourceDialogPhoto.php": "8b09d9c61844bc7117df0ca5ec30300e28d4c3a6a905d9ef8474d96174bc03e6", + "vendor/danog/tg-file-decoder/src/PhotoSizeSource/PhotoSizeSourceDialogPhotoBig.php": "8d2c8960b43f5c883efd5b0dbcf6e7b1fa9b22efa9f76b652150e541e1a5ee5c", + "vendor/danog/tg-file-decoder/src/PhotoSizeSource/PhotoSizeSourceDialogPhotoSmall.php": "fab00b72e22985de261db564badeb19e298277e77063c27331c7cc67cafd5939", + "vendor/danog/tg-file-decoder/src/PhotoSizeSource/PhotoSizeSourceLegacy.php": "086676b2a8c2f23e661dbee44d522e5d227378171030fea32ab6aa067909d4a9", + "vendor/danog/tg-file-decoder/src/PhotoSizeSource/PhotoSizeSourceStickersetThumbnail.php": "7d1b6014e5d14eb2dd3b31326b03ca931001f4810aa6789bf92ff21529288e43", + "vendor/danog/tg-file-decoder/src/PhotoSizeSource/PhotoSizeSourceStickersetThumbnailVersion.php": "60db678b4ca511f6d44f1370b9be250b946a9c502e8170f1db28fd1b1a2509e1", + "vendor/danog/tg-file-decoder/src/PhotoSizeSource/PhotoSizeSourceThumbnail.php": "52f3fa6ee258bc5f08ad618f9cf3ef005bcd9240830ce3a8ee19bee71a64ff7f", + "vendor/danog/tg-file-decoder/src/PhotoSizeSourceType.php": "58990d916bfb937d4531d97d87003f3c08cda3cff5a6c641d7356e5589ea265c", + "vendor/danog/tg-file-decoder/src/Tools.php": "56531dd3ad386646a655a737cb770b0bf6501827ff78afe46c3ab352e69006a3", + "vendor/danog/tg-file-decoder/src/UniqueFileId.php": "feee846be3c07449d8266c49f5e4e298458ed4524e9f659df1787f53fb406228", + "vendor/danog/tg-file-decoder/src/UniqueFileIdType.php": "9a0528997839383b6778fb5a5f7d458f756a5105026e4b75813007429be207e9", + "vendor/danog/tg-file-decoder/tests/IntegrationTest.php": "87f3f954e9241be594dc77bf5614cf3bb59245a386cce50c16f556ddeb2be08c", + "vendor/dasprid/enum/LICENSE": "6748d0268a176f839bfa1031724f9ce0963acbdadc71e503c2c3e9b59c8fcd68", + "vendor/dasprid/enum/README.md": "1bafc44d59b9d75e95ac0d52c72ca94d9d1129dda2761bf1922f9e235b30bedd", + "vendor/dasprid/enum/composer.json": "806922540285ebc6013d9028bbefbfb3d9ab47260c1138fb0f01e38d9c1ec1df", + "vendor/dasprid/enum/src/AbstractEnum.php": "1c2d7baa5e2a9c9b9419ee6b1e49e5af35229c51ef9c77c489b087faaa6e0040", + "vendor/dasprid/enum/src/EnumMap.php": "449f605b743700e428551a7adcf50898d002a3839524982f27a52224fb456a73", + "vendor/dasprid/enum/src/Exception/CloneNotSupportedException.php": "a3c266842dcbc83fa57a7d4ba7314cd2c4e588d5f7e2734619b343b201f9a08e", + "vendor/dasprid/enum/src/Exception/ExceptionInterface.php": "990c3de69010a72dc796c37d27c9ec3df312989e46332d3344e96810255e0359", + "vendor/dasprid/enum/src/Exception/ExpectationException.php": "07874b69ba61b438a22a719d7718de7e2f17b1f7126ffbf92f56b5a5d2239d68", + "vendor/dasprid/enum/src/Exception/IllegalArgumentException.php": "f5523323e738118b46c621b04bebea3b779745fc1c4dc4318cc81d69832dbd41", + "vendor/dasprid/enum/src/Exception/MismatchException.php": "973256edaee9b540eb63a3901d82b53a4516f5eb2387062c16da29a797f03845", + "vendor/dasprid/enum/src/Exception/SerializeNotSupportedException.php": "d6072d330097ef643df673c5c40c51729a4fdbd0aa197980ba8d8d53efa11ba9", + "vendor/dasprid/enum/src/Exception/UnserializeNotSupportedException.php": "c0b225b1eab0b0cee0f11f473a7ff935697e55ad267a6eca27234585a2963c6e", + "vendor/dasprid/enum/src/NullValue.php": "c2e503fab5e76a21e5e6bf45954780a8759d0c6ae7d13ba09f0a7c3d37b0e838", + "vendor/daverandom/libdns/.gitignore": "57ebde75eecfa37c939fe59ea9128a310e5281c80063a54fabb0759cda0d10d1", + "vendor/daverandom/libdns/LICENSE": "3378b771ef8e0b6e09d1a5dd7d3daeaf5b06a41f8cf7ab43f20df3b646c18dc9", + "vendor/daverandom/libdns/README.md": "0cc13271cd4697b9ab2a6f9c163e78b565375782a696e3161894ee2583f4a26a", + "vendor/daverandom/libdns/composer.json": "82ef92de60c96b3e34000ddc55afceb979f126a55399d83bdda6945ce0a5996f", + "vendor/daverandom/libdns/examples/AQuery.php": "03bd9608d2a22ca11f99674833946941a3166e7235c0bb13c57d4bfbfe8c80c3", + "vendor/daverandom/libdns/examples/SOAQuery.php": "1bce75ba3008c3898c6136ab7f83d4349a724393fbecd1cc71c6bac3931f75d5", + "vendor/daverandom/libdns/examples/autoload.php": "8112f50a346b6ec30f5fd33a4bccb6ccf1c9df566dd67fffb46e42a23a9fe7ad", + "vendor/daverandom/libdns/src/Decoder/Decoder.php": "4d46344b6fc7ea61f5d3464ad1a82774dabc7b08421c8119a99cf29a5c0a4b1b", + "vendor/daverandom/libdns/src/Decoder/DecoderFactory.php": "c3afd98ca5b0b0ac408ac4b507b895827315832a389ffde1d33538bbb6242510", + "vendor/daverandom/libdns/src/Decoder/DecodingContext.php": "3741c1944a749847441d3bf033d04a2e34647d461e7c4370b6c7b5bdacfa0d1e", + "vendor/daverandom/libdns/src/Decoder/DecodingContextFactory.php": "7312ec160309332b586fe35862478357d09aa9faeafed5ad0f60791d11194589", + "vendor/daverandom/libdns/src/Encoder/Encoder.php": "fc77ee170272f8db0067f8de197786425a31c5c4423fc5d83faaee255ccb7394", + "vendor/daverandom/libdns/src/Encoder/EncoderFactory.php": "9213f4ffff192477cc85ad8751db12e2f2f0cb311c72f2cf367e8d835092cd9e", + "vendor/daverandom/libdns/src/Encoder/EncodingContext.php": "00f9ffe516deea706063c6745b04304af119563e827c4d24028fd1af5fcfc421", + "vendor/daverandom/libdns/src/Encoder/EncodingContextFactory.php": "b3d7541dc849cafb9fbb59f752987e0d2d0de13edebb6f2192cc3eee22043923", + "vendor/daverandom/libdns/src/Enumeration.php": "389dcb4728f8a1aa61e471e8f5eb9d84ddd8cd4edcf3c20e4649f046fe996802", + "vendor/daverandom/libdns/src/Messages/Message.php": "697185a067dd97c50ad8a5af4daadc1b2a30834a1b22c2febc79a3ba0d33fa1c", + "vendor/daverandom/libdns/src/Messages/MessageFactory.php": "b7b02a324548411eb0276365fdf0fda3990d9257bab5fef1e83c4f2005153c79", + "vendor/daverandom/libdns/src/Messages/MessageOpCodes.php": "286c9e7fe42a91583a4250d575dc605c9619aab2f6c521743b19fb1d9efdc3f4", + "vendor/daverandom/libdns/src/Messages/MessageResponseCodes.php": "1e647313ffe21456cf2739c715e1931521bbd907b61e48a6c21944871dd0a074", + "vendor/daverandom/libdns/src/Messages/MessageTypes.php": "2954cc718d458db6c5c3cf48b37aaf314e287fd133ed01e5eb3b74cef25d50c5", + "vendor/daverandom/libdns/src/Packets/LabelRegistry.php": "c5ac1c96c9b29d698f159dfc0c7b8a42ce8c89dbb96b4e78b949636f27aebd90", + "vendor/daverandom/libdns/src/Packets/Packet.php": "8452ef3239adfcb9231a5736266c7ad8d8bf646e85f3290d1a53419f014915ea", + "vendor/daverandom/libdns/src/Packets/PacketFactory.php": "bb48a32369b513d29497bac77820c7cbd98d69c44116c35a41cd03b7eedbee5d", + "vendor/daverandom/libdns/src/Records/Question.php": "2ea2a0fa4efae8a00e863061c5e953f5a6e36593f3358db8fa86c8eb16f81e77", + "vendor/daverandom/libdns/src/Records/QuestionFactory.php": "360e8196b5a44606e355928a227b4bc5b28175b612baa346eb64e2b87e0a95a3", + "vendor/daverandom/libdns/src/Records/RData.php": "acdd294023a320a08143c3a37a2efdf9d397a88654a70599203faddcee54e45a", + "vendor/daverandom/libdns/src/Records/RDataBuilder.php": "7e788ff65d304375bf16e3fca1b56b6d3436011cec0b484ddcc71602c75b0934", + "vendor/daverandom/libdns/src/Records/RDataFactory.php": "46f87970f9c92eb87f7bcf73509f34701510dcdf06e8db9ec9e2f90d89b47295", + "vendor/daverandom/libdns/src/Records/Record.php": "834df2c7470c7bbc4b88f759c204ffec969d63f6fd9b41ee66b8357672e537d7", + "vendor/daverandom/libdns/src/Records/RecordCollection.php": "8906e7b2cb8bb377451e78a51b8c341ca2c1b441fef14a6f2fd0d860affe6486", + "vendor/daverandom/libdns/src/Records/RecordCollectionFactory.php": "307fc9108a275f833bb6a8b544844d4ad8ac77a0966cb8748d79342296bf3c0d", + "vendor/daverandom/libdns/src/Records/RecordTypes.php": "b34a94173d6266337bbdb06369b59f4bb89660543116413c3825bbf18da693ae", + "vendor/daverandom/libdns/src/Records/Resource.php": "4f57b77be7b03abfb504b1818650033badcaf2cce0ae36c724a50d4b00276e72", + "vendor/daverandom/libdns/src/Records/ResourceBuilder.php": "0bee7a5851b65861f08bcd3c175b1849f7a408b11ccff5d31eda7691279674ac", + "vendor/daverandom/libdns/src/Records/ResourceBuilderFactory.php": "1422d94724bc155c765ea9fcc8649e24a78cbc52fa170ba006f92133f79f311d", + "vendor/daverandom/libdns/src/Records/ResourceClasses.php": "1c2bf2bc233e14241474bd4edcff28b0cfd255a217ae6f42674a3939f4688e0a", + "vendor/daverandom/libdns/src/Records/ResourceFactory.php": "b0cf1646b39c81c35acf4193096bd76f5047b4f179bc600eb739776e86d80c4d", + "vendor/daverandom/libdns/src/Records/ResourceQClasses.php": "030ce0b74dc2e00953deebedd797a2a307f1f85cd30a6bb59e795f0f183ecda1", + "vendor/daverandom/libdns/src/Records/ResourceQTypes.php": "31d8cf2532cb37c74a922817ff9bb81667d32e146a18e958f725e113351a04bc", + "vendor/daverandom/libdns/src/Records/ResourceTypes.php": "90c1c2256b14389ba6557babaf32cb059a6711402b6debb9c6427c2c974b87c8", + "vendor/daverandom/libdns/src/Records/TypeDefinitions/FieldDefinition.php": "f067b6fdf1a537f25d2085a1cecc88672837894a0887681c2fd565c3ed01886e", + "vendor/daverandom/libdns/src/Records/TypeDefinitions/FieldDefinitionFactory.php": "a68f05c5d6049c5c0708f678b8acbc49c88adbcd62c61ab467b34562fbd5a64b", + "vendor/daverandom/libdns/src/Records/TypeDefinitions/TypeDefinition.php": "8f282ecf1eb0483655c143ab9aa0f84488b98f52d4d786da392f16b63452424d", + "vendor/daverandom/libdns/src/Records/TypeDefinitions/TypeDefinitionFactory.php": "c2273c47a121dc21424cb47bf45d36675ed0f191f1ec5c431ace05465f002ead", + "vendor/daverandom/libdns/src/Records/TypeDefinitions/TypeDefinitionManager.php": "8fcab42e1a2ade5176af4824da5b638dc743ba39263c59d6ecebe1707a02de75", + "vendor/daverandom/libdns/src/Records/TypeDefinitions/TypeDefinitionManagerFactory.php": "12dec05bcc990d4e3741f1beba16d9ceb1ee348ff7ef5b72c831fc12597efc1a", + "vendor/daverandom/libdns/src/Records/Types/Anything.php": "437773b9be71b9a2e96827a7cd5fc0908991d3abbd1ef7269bc181d48541de8d", + "vendor/daverandom/libdns/src/Records/Types/BitMap.php": "94d8661adc24d9c0b9e80b8b82c53f06af00f2d100212ff51cca6d8e0879f0f4", + "vendor/daverandom/libdns/src/Records/Types/Char.php": "d76a6fe24157c85e5ba94f7a032495991166a560294ad1c70d01cadf2596b4ea", + "vendor/daverandom/libdns/src/Records/Types/CharacterString.php": "663cda3b5e7dae5492d2a455e04314b2d4886258348d71b292905124e989df53", + "vendor/daverandom/libdns/src/Records/Types/DomainName.php": "f760bfb8b419cd1e17b3d1aa0569c2f3ef4177610a34317a35b16f5e1e4064e1", + "vendor/daverandom/libdns/src/Records/Types/IPv4Address.php": "e9c5ea8c68aa058c047efde7c19821d1944343a6d827cb7ee3f6cd93c1fab1a5", + "vendor/daverandom/libdns/src/Records/Types/IPv6Address.php": "52e00798d9ccd0bec715659895bf7d2cb352466f1a6787a8f7959bf8ea40f476", + "vendor/daverandom/libdns/src/Records/Types/Long.php": "3ec76dde659739b9825fa3edde65d9bc1b84d89c7ae3d1214a2a653b2a1d6ed3", + "vendor/daverandom/libdns/src/Records/Types/Short.php": "c4cae9ac6c0fe3f2ce1a44c2e4ceb545fec8c0da5195755c314fdee7ccedd263", + "vendor/daverandom/libdns/src/Records/Types/Type.php": "0cbb0a3384c3f2759f1cd9c64097dd9d396bfcff3ee266c8d494d188270bdc11", + "vendor/daverandom/libdns/src/Records/Types/TypeBuilder.php": "0ac52d1a5b2ca431a1fe1a9f87523436e99b9aeb87a4d2226f514a0d59a69384", + "vendor/daverandom/libdns/src/Records/Types/TypeFactory.php": "0d4a1afa354fe4cdbd58b4e90b84cb91ed13767ce46e975cb423de59c3338716", + "vendor/daverandom/libdns/src/Records/Types/Types.php": "e48486830ab4a57e958a012f3002b89b46d7a02ebfac7e0b188223ff2bd74525", + "vendor/daverandom/libdns/src/functions.php": "9869f6d24381db2e33b7bca5e868a3c54140d5cebc6207433f2c44c974a13021", + "vendor/daverandom/libdns/tools/autoload_generator.php": "27e194cbdc366fed2a3f04c22b3fc44ee556491288f8fe97c09472b034f86c87", + "vendor/kelunik/certificate/.github/workflows/ci.yml": "e764258113fe770e68d63877030a1db448080b09d070cd55453447e233dff1c1", + "vendor/kelunik/certificate/.php-cs-fixer.dist.php": "72f324e677e5328df668fc71aa7c7e71b42f431d025f7f3e0126ae9824cc0bc0", + "vendor/kelunik/certificate/CONTRIBUTING.md": "d2581117c3986bf0c7817bd2a4952511e5ff56e903a9ab3e5205734a26735ca2", + "vendor/kelunik/certificate/LICENSE": "4da4ff63fb9bf3961df2e1210e74a654c32f5c82414997977ca58e56d9eb2fba", + "vendor/kelunik/certificate/README.md": "c6c83302e60f6a86fa1619e7ad2495bf0317ba4d5d38f136517b57365e16d129", + "vendor/kelunik/certificate/composer.json": "10cf94b38aaad2a181f2a72fa3fc9e3a58f12a8d58a18f1e35d0348607a87b15", + "vendor/kelunik/certificate/src/Certificate.php": "18d6295cbb5e0942e5d42d9360491c708acc18b3589c22cc1a1d99bd1366591d", + "vendor/kelunik/certificate/src/FieldNotSupportedException.php": "c878143e59992e1b999b47183b3604a8992cf9ba8e30ee7915273892f4ff3c32", + "vendor/kelunik/certificate/src/InvalidCertificateException.php": "d2880c17e35acc24ac351c47c219a673de5d371f3f9a36792879a0b08b2f87d7", + "vendor/kelunik/certificate/src/Profile.php": "f8c31dc938504dc2bffe08cddb8004bd1634553a74a2da9cc3596d5d4bd2047c", + "vendor/league/uri-components/Components/Authority.php": "4872677b9302f811ff0c19112785a45fb76f33325f706e1c131adc4e41e506f2", + "vendor/league/uri-components/Components/Component.php": "d71c443f13f5a2f82326cb36569186d5743d37663b84d59a79a0b20211fd4981", + "vendor/league/uri-components/Components/DataPath.php": "1088fb275a1760a4ae6ff9cfcda1c366d2b13b3633c18acc5f3aba47f6df0fdb", + "vendor/league/uri-components/Components/Domain.php": "c823f0456ed1b68257b2fa023d0d6179447acac40adb2c9e6175fc68e36d23a9", + "vendor/league/uri-components/Components/Fragment.php": "4bf6e1044813ba5cd0d7ec67d9661e59e476848071f2e20606b25834a774e410", + "vendor/league/uri-components/Components/FragmentDirectives.php": "e6c16af68e1887e57bfccccc91b10d08ddcdfacef63670359d6d21786a3a2979", + "vendor/league/uri-components/Components/FragmentDirectives/DirectiveString.php": "6e8735fee8299eb85854339d83ec2b65f815ead0eac6de15894426f8b15f07d0", + "vendor/league/uri-components/Components/FragmentDirectives/GenericDirective.php": "08f078fbe6f41b4672c4ca5ab086bbe85f2ad0a956effeaadb83b54cebfe63bf", + "vendor/league/uri-components/Components/FragmentDirectives/TextDirective.php": "821f80d4bd2a2e47e70f55db370a9cff4f56bce007063250b380661074a00b3c", + "vendor/league/uri-components/Components/HierarchicalPath.php": "ac488a5771c993f826a6e5833f0c6c05c2aad02856ed1db702db5ff5bad8753a", + "vendor/league/uri-components/Components/Host.php": "1f7bd9fe75562fc4909a0d069a46bd3228e8088257943000984d2e977698acf3", + "vendor/league/uri-components/Components/Path.php": "18f60b8b5a7281227b6771fc02b5fb85b93c0c295de3a05c3aecf644e93911b2", + "vendor/league/uri-components/Components/Port.php": "17df6310a95f83c8d2bc50d2f774c29425bee96d1559c4d41058e32b45c8d4d8", + "vendor/league/uri-components/Components/Query.php": "3ed32c1220d920dc83a798463180962bbb0bb9b059c334113813d69b9befa6f7", + "vendor/league/uri-components/Components/Scheme.php": "108e3a5318ded511824d0c6f3bceb099551f76d4cf477a7e2198a8f37c19fc77", + "vendor/league/uri-components/Components/URLSearchParams.php": "5125b68fdf7b703338703e356ca11ca146000f16483c5893440f964075e9d5a8", + "vendor/league/uri-components/Components/UserInfo.php": "d2a02a8cb4b6b584897fe94be931a75254ade694b53bfa58b71ce662bd8f8220", + "vendor/league/uri-components/IPv4Normalizer.php": "84bf8d40e72ff78567eeee2dbf539b7d8050299f0fc811baa0b709d42a0ba01a", + "vendor/league/uri-components/LICENSE": "bb7f984073bf5083be5cd56d144bf3508181409ee6a866b51538725a3dd8ce24", + "vendor/league/uri-components/Modifier.php": "a102ce3e2a02034ef90c052f737e9d5d5b5a2b31d56210ac5dc01760b85ca940", + "vendor/league/uri-components/UriModifier.php": "1482e50ce9ee4b3ef8c8824ee21da854e289b95c7f802e513861c60a79325f0c", + "vendor/league/uri-components/composer.json": "cfdef3defd68f954b85ef2d6162a6aa057954e4b2268cb09e2e037b35b3a2acb", + "vendor/league/uri-interfaces/Contracts/AuthorityInterface.php": "e65f9fbd19665237af1b16931075e8cb1475355c24ebc61c468d4ff04fa03183", + "vendor/league/uri-interfaces/Contracts/Conditionable.php": "b11c35df96f4130af1b9f768086484669643c9cab82994f6ddc4183d4bb35315", + "vendor/league/uri-interfaces/Contracts/DataPathInterface.php": "9c05da875962679d5ce26f61bd67cfb77fe38d37c49696daf7c835e7d6e6839e", + "vendor/league/uri-interfaces/Contracts/DomainHostInterface.php": "af2d08e80c38c57ebec2bab379d7eb1cc78e9b7b7fda432a08636cb09c58464b", + "vendor/league/uri-interfaces/Contracts/FragmentDirective.php": "38957a1887659c11b0e6bb6c9b808c2cc31e18b6b9608f25aa414127dd139f77", + "vendor/league/uri-interfaces/Contracts/FragmentInterface.php": "381768478e118b8d7155f67e10ae38574cd0255f759955fc51e29bf8ade637c0", + "vendor/league/uri-interfaces/Contracts/HostInterface.php": "f4d4bd484ab3d99f56a434b011e59c4c23d8983a6aaab6fa4d8a5d315ef50c06", + "vendor/league/uri-interfaces/Contracts/IpHostInterface.php": "a06aca25bd75fc313bcdafbd8cda18b2216489512fc71b2965d64b5fe483ad56", + "vendor/league/uri-interfaces/Contracts/PathInterface.php": "ae76ac457af4c7ae8e7007d0d475be1d87c1b3825f0ccb7ac7d0d2b28356572b", + "vendor/league/uri-interfaces/Contracts/PortInterface.php": "d023bbc5d9d0941671315e860ee48ce8a5089535b7417d661352104d784a5205", + "vendor/league/uri-interfaces/Contracts/QueryInterface.php": "5edd3e7a03d324dfd196643aff983063d115769559f978e4d54534e51c3fda2d", + "vendor/league/uri-interfaces/Contracts/SegmentedPathInterface.php": "3ceace4097b5f8b3a7530e6976c0e80dac54de5af435397d7c3cf8ca73b2674b", + "vendor/league/uri-interfaces/Contracts/Transformable.php": "9de439580b2a0e872b2ac503ae5406242fc9f52cd6ec4cde688af57af8163c1e", + "vendor/league/uri-interfaces/Contracts/UriAccess.php": "f04fdc010ade46c1b638b48bccad06b1bd4d019132df9884070f78494ac99444", + "vendor/league/uri-interfaces/Contracts/UriComponentInterface.php": "6ef88d4544392a80a285cb1e694d45e8f54d23c483c8a47265cd5f79dd8fb3e1", + "vendor/league/uri-interfaces/Contracts/UriException.php": "3aa12dbde56dd228d50aeb7d113d8f4a2e0940609b24007e6a749238e81e6f2d", + "vendor/league/uri-interfaces/Contracts/UriInterface.php": "afcd88226fa785f026c10fd3e7eb88571c793a85141e8e49f972f4f0621098dc", + "vendor/league/uri-interfaces/Contracts/UserInfoInterface.php": "056cddeca28847f8e86176a9ef578b6a5c1c358cd7e3c78174bc4dd34a6263fb", + "vendor/league/uri-interfaces/Encoder.php": "2c36a7b603a196bdfa91bb50cc17298301a4ef697a8957c0ce0f769398205812", + "vendor/league/uri-interfaces/Exceptions/ConversionFailed.php": "3d0a97425b66a464f0f9a97d9fcffda96afecfbe90bccf2c22a7fbed109f4a1b", + "vendor/league/uri-interfaces/Exceptions/MissingFeature.php": "014b9d2313236a829f6f1796ae3b96f548045e2ff4beb8e82ef54a967d3f01fb", + "vendor/league/uri-interfaces/Exceptions/OffsetOutOfBounds.php": "0446eda84b50871c5d2001772fe47c523873d21ffd64f63be5af2d7f46e7c355", + "vendor/league/uri-interfaces/Exceptions/SyntaxError.php": "0de905c2fc763937ebb57b5ed517590f96cb059792336227f23dab0c7110a19d", + "vendor/league/uri-interfaces/FeatureDetection.php": "fc539d58a9dccb242c34979e913d75d27b2167b708260a3a01bc293ff89cd4ac", + "vendor/league/uri-interfaces/HostFormat.php": "c82fbfce97a7d13ec9bf90ce995a4ffbe89059e549a4f2767a266bdfcfbb8649", + "vendor/league/uri-interfaces/HostRecord.php": "6990f03aa8c682eed80dde2b05d690af5bf46ea8514acf705b63854438d4a4f4", + "vendor/league/uri-interfaces/HostType.php": "2237b27e3e6b597abc65f90a047be3ce0a83ef55139be0f7fbde3250ab87d45c", + "vendor/league/uri-interfaces/IPv4/BCMathCalculator.php": "990998d22b0c44f34423bd54ad2659c2941f875cc7c5b5ac41510d5122b7edfc", + "vendor/league/uri-interfaces/IPv4/Calculator.php": "2c5372f253acc5498a58c0321cd0e508ff9a5225369ce3f34ed96018b25c3b00", + "vendor/league/uri-interfaces/IPv4/Converter.php": "97bc35b1136ba81d51585888daf8e32df324a6ddb127aca5fb0ab7528a3193e0", + "vendor/league/uri-interfaces/IPv4/GMPCalculator.php": "7c865d7d745b06034f92771d9b931e38ad594f290622d1dab72fb9c7d928b9e1", + "vendor/league/uri-interfaces/IPv4/NativeCalculator.php": "47b751f517a685fa51e5c75c11b908534d8cf6a15477156050b484457c163d4d", + "vendor/league/uri-interfaces/IPv6/Converter.php": "e6f7ef030587411d3a5c2b1c5b5cb1aec8c12039e36c3848d7592dc06b2477df", + "vendor/league/uri-interfaces/Idna/Converter.php": "7fc7475f991d9340e53effd81024f5c25842c0c54c3d26249be2d1336d533659", + "vendor/league/uri-interfaces/Idna/Error.php": "b6f77b6c2e3be1b571354f7d184b7ad91048c4cd3e536d479681e6e06a2636b2", + "vendor/league/uri-interfaces/Idna/Option.php": "eed5204b12452b67664d791704076a6b84cc39576d66f9ae7f1658f14418c728", + "vendor/league/uri-interfaces/Idna/Result.php": "2364bb79224d906cd005b214d7051ddc5f158cd72534f41a3789b0d51ead463a", + "vendor/league/uri-interfaces/KeyValuePair/Converter.php": "6342761e441f33b79023d95e437a42222b20b5da61ec9513d7d04e939f3e25d1", + "vendor/league/uri-interfaces/LICENSE": "bb7f984073bf5083be5cd56d144bf3508181409ee6a866b51538725a3dd8ce24", + "vendor/league/uri-interfaces/QueryComposeMode.php": "6f28442a9221830fbb22efcdb8597193a871d47bc9a14084593ec5eae33c179a", + "vendor/league/uri-interfaces/QueryExtractMode.php": "3578428146218ce4395d1a96cb11a43ba04692e24dde69269b9fffd351f0f7ec", + "vendor/league/uri-interfaces/QueryString.php": "5c47f0cdb8a3bfe5848feba20494f5a33f8a3ad394e3371d4d8288af77a18a7f", + "vendor/league/uri-interfaces/StringCoercionMode.php": "e19ec4bb5b3d244cc7a04052ec962a34e9202d01ed7aaa45b98a586d5c1cc366", + "vendor/league/uri-interfaces/UriComparisonMode.php": "8d1d1fc357bb577cd96330a59f52f194ddf3e7969bd1d4f3f369ca5cc38b8253", + "vendor/league/uri-interfaces/UriString.php": "634466e1f8d298052fbb28deb100d9a116738b1bb8086be729a4c8f3d5f89605", + "vendor/league/uri-interfaces/UrnComparisonMode.php": "d0bcef76e5c78c76e62d831a08eb4fdf0d3f00876ce705339d5ef716b982d4fa", + "vendor/league/uri-interfaces/composer.json": "d5c32c087eba609da61d4600c685f5a1ee936933477960c0399da46e1c09ffc1", + "vendor/league/uri/BaseUri.php": "59d6296419fb4ceb7f0801fe80959525c9b593cbb5be7788c6fc3026ef98e0e6", + "vendor/league/uri/Builder.php": "fb1a6918896493f93c3b96fdfba6275155f86410582dd0f64d532d0a0a166d44", + "vendor/league/uri/Http.php": "e403b964ae4b8dce3019c5a3bdd27c1f7acefc16b702029e6f4086b5e3c4e1f7", + "vendor/league/uri/HttpFactory.php": "cc61cea67969671bcd4e790804e22c0dca8205c4914909d4a841b728ef11ff0d", + "vendor/league/uri/LICENSE": "bb7f984073bf5083be5cd56d144bf3508181409ee6a866b51538725a3dd8ce24", + "vendor/league/uri/SchemeType.php": "f25f013d77eabcdcd5870ee3abe7e983fbc97593289b148550e1f4e62b3a61a7", + "vendor/league/uri/Uri.php": "cec9579b220c92711a410930fa3243c692119b76622b9d9841584414b5723d10", + "vendor/league/uri/UriInfo.php": "7489292a9c493e52cdd4adb603cbd525a832b03b76a1271e72c1291686621955", + "vendor/league/uri/UriResolver.php": "b7858771505e2245ff0e8cf268f1c0da821a20a11955f2678e61d18f6714abc2", + "vendor/league/uri/UriScheme.php": "060fcf8b5b667233d851d06e68ca10e3cc2245cf98c278d7a5a7de02b4197135", + "vendor/league/uri/UriTemplate.php": "8a4f39a96623f679de947c5149c053138df1e5759910c1264b85e91bce714629", + "vendor/league/uri/UriTemplate/Expression.php": "ef7ee4ffc4ddf50387efba734915987d4d8c26f26ff8225ff680ae3a34dbfaf6", + "vendor/league/uri/UriTemplate/Operator.php": "26789916e265876e5bae9713f41f9c2cb6a36578f31c7f555027083b3ea92364", + "vendor/league/uri/UriTemplate/Template.php": "59eed5a8383436559a4b66a8d8cb2cf132ee4fc9ac679f87bc343c838ab47d66", + "vendor/league/uri/UriTemplate/TemplateCanNotBeExpanded.php": "42debdc4e24cf03c7d1c3df882e655797a44e7d15d539291a08de33286b7b6cb", + "vendor/league/uri/UriTemplate/VarSpecifier.php": "d1f23c6161daf77f0efd3e453af4a6cdfab16bdd8e1bc7029b0c07b3d7776e9e", + "vendor/league/uri/UriTemplate/VariableBag.php": "856154538c18d52dd94b749e15beee449103ab44f53caf229108889b28efc88b", + "vendor/league/uri/Urn.php": "b21c5289114d0db7021312bcb5c9e2fcbb7bf91ff5b97f278cdac74997a634c4", + "vendor/league/uri/composer.json": "c7aff068a3c4c2d9a3390d5f0d78047ff5c9d983623399b77ef8b678acd176cc", + "vendor/monolog/monolog/CHANGELOG.md": "237ae9b89d48bd3a5f82448187c70857226e5c3d679c1071f3186f2a141b9559", + "vendor/monolog/monolog/LICENSE": "3a351f8f434ff941f4946afb534f7df1185523638b311c22901631d8882f70e1", + "vendor/monolog/monolog/README.md": "160482ad6b8815a29cf7e98e53ec793f377416785e5810bf33d98765f2246303", + "vendor/monolog/monolog/composer.json": "9968321c5cc6c0b6df592bedd8e4db1ae24a1f8e1f0904a3268102492f435eab", + "vendor/monolog/monolog/src/Monolog/Attribute/AsMonologProcessor.php": "30ec7ef9ef9c84f5e091a81e3f5e59c24b7a2251152f5c37408ebd670be0e84e", + "vendor/monolog/monolog/src/Monolog/Attribute/WithMonologChannel.php": "93255db2cec43d176dbb7e2ecce4f8007bcc6133f6ddb1a5236377116879846d", + "vendor/monolog/monolog/src/Monolog/DateTimeImmutable.php": "59a279e374404e8db38afca8548201d8047956c49e8ebebade6ab99d8a221414", + "vendor/monolog/monolog/src/Monolog/ErrorHandler.php": "62b3d23ce2083ba7c5d4d55df61576969f4031a96e75a0007a7b4adeae5a95ba", + "vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php": "461679045cddc93856d4aa6170704fe66094e9d0aadc652eeff41d0a8dc9c340", + "vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php": "58c0df26770468233d17cc0d598b0533f0024f9591f7fc0121c582923afc1187", + "vendor/monolog/monolog/src/Monolog/Formatter/ElasticsearchFormatter.php": "ee0849c88faf512c611ef0ccecdb015891cc817235b4404b1432607b0c1c679b", + "vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php": "d89cbd496e793f5b572e536dc81ab6d4dbd592e4ef0331df10098e51d04558a6", + "vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php": "e5fe3b2257732c2bdd08a31cb1dbc21211600152c6ce802d14657e2df053f38b", + "vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php": "c3f44f06fa6ae27011f95728d04dcf9a73671aa752693d39f25a779a94d7c3b0", + "vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php": "d6284aff193b4dec6aba7c41d7e6f6e3ad4b5481488eeb30caa28bd85532e246", + "vendor/monolog/monolog/src/Monolog/Formatter/GoogleCloudLoggingFormatter.php": "4e8fcccbe55a563976ff49040ba0f3b1332716cd5f279d178f774350421f0c8f", + "vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php": "490c01b91fb71c6a2531054be96f01395295c1a2d9cfcab55e06efef170bf1b4", + "vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php": "abc0553e21fdd0ec9fdacfbf4fbb50321be8111e2ac2abcff3bf7c9596d5ac1d", + "vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php": "090d4517489f412e246a82a99135c03e944c0cbc8ed1804b93c5ff126d0bbc98", + "vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php": "eb41c1b207a8096f02cfb3a8b44bf9502c5ab54ac3f6cad814256f88629cb1d7", + "vendor/monolog/monolog/src/Monolog/Formatter/LogmaticFormatter.php": "bf95b325e95ee4322a19711863628cfaa05e84170b52d611469b5f75be30de41", + "vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php": "40c84cee9d935f9606e67e8e236458f16423dfb6b7cb2355f3cb4f0c4b060890", + "vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php": "954476e61bec24fa1cea19031bf2cb8e14dd52fe9e6151bc66ed9d26f5a96226", + "vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php": "c1c23219f543d12eb105153859d114864feafd5f2a40f3515b028cdb1eda88f5", + "vendor/monolog/monolog/src/Monolog/Formatter/RedactingFormatter.php": "82926f715fd42e794e0943c90d5a80a583518e3e23b8e3d14a8f6a9fdfe6f77a", + "vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php": "18e35896a12c177156d1ee0e8201c6390dd07bb4c445e915b5ffe26e823b1039", + "vendor/monolog/monolog/src/Monolog/Formatter/SyslogFormatter.php": "a3c891bf01ed3f0aae3a0f954361cdb9754f8d230d9ff97c7dec70fe555c1856", + "vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php": "1c83c6bf597c1cae34b14557725c2bcfdd5002d5da7e13dfe146edf0e0107940", + "vendor/monolog/monolog/src/Monolog/Formatter/WrappingFormatterInterface.php": "eade8dbf5e4a071f59a3e5bf933b46a70d12a894872a93ff15ee42a43e43e889", + "vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php": "d8a77b7a1f529ca85c6540b10cb6865effc65d0485b3164b8669ae1aa6f149fa", + "vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php": "55f6c556bae785878f4fb3abf2054d5e77bd1133ec96d0458577b3af4572ea6e", + "vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php": "1d3f69c885ba356b1ae73e1aedbea24cfda06dfde6ba1f1bc94fe951f3f1a754", + "vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php": "bd059fa7165a8f889df2a34dca91fa33a1cbf21d5ec8a46c62e93672478cc5f3", + "vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php": "4e3a314894c9a988b271a9e14c48d1534acb0c48a54d31f8870caf6f75c2ef89", + "vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php": "2f0316fd92390cf65e413af357072f3653743b3923add8243938f5e2db5a3772", + "vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php": "f4c92b4b357a6b332cebc20f66e8cc0c8534c7aae9a54c10e9daf67095d50194", + "vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php": "83714f3c42b91ad63ac41cdcae9490eb252b145668a366411c5e9dd22208e011", + "vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php": "4328b8ae23c51dda69e5b963c4a5b16df3a5b6fe353e52cbc5cdb0f8a8f34696", + "vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php": "48386bccc6fe95dc2fc88db9842f558f220c064b22d102a78b0c39f5c0230b40", + "vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php": "14c8c21b51f868c3e8340d546d417f1959760909c823aa439c7e2dd0bd5d1d51", + "vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php": "280780ffaed0977da6091fba26a023262777eddfffb1e6a02693c5a88d68a019", + "vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php": "5ac2f191fcaea9560037b51990ce2317350d09d46f38be95034931100ee18947", + "vendor/monolog/monolog/src/Monolog/Handler/ElasticaHandler.php": "fe1aff1f173775877529e258485586b95a717d2e19ddfc22948f717b389d1b7d", + "vendor/monolog/monolog/src/Monolog/Handler/ElasticsearchHandler.php": "5b55b3d9449bf09b30afaf1a339c74b900ef1c0224adf9758c8b1ad74a1875ef", + "vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php": "3a23502dfa532642f2efc28a90339f58570213af7e5f37deafa765db4db740a9", + "vendor/monolog/monolog/src/Monolog/Handler/FallbackGroupHandler.php": "ce0cac331d87f167ffc1945b94bd2980706b7ea2dbb20297a1061d1a9767c3da", + "vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php": "ee962ad4220a46ff9916575978c4a1923be6cd09217d965112ee23d71db185bc", + "vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php": "d81cb1f7ea0e799e9eb012a86c5d9da564ca2efb25697779b444b6738328eb5e", + "vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php": "1435bb95b2721eaa4c8926117f2810fd17b4a8cbe284b86f4a32dd0ced40f62b", + "vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php": "c4472c040e816bbe3be8c2c3bd8fd2f1076f39d8d7bf157d98a32945b3242e41", + "vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php": "4ae206acb6cc4630b8a1464fcfcde7dcd4c56ce15d6e17b45912248fdcb77bce", + "vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php": "bac72261b2a93855142f4dd6347766beb6b89ae35a87e1c721d0e498ed702f3b", + "vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php": "ee49bc383aefd4c4ee0a09e4aa64539a1d05249f9ac8f5947285542d922fd7b1", + "vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php": "cc3d4e96c268612075ed390a23ebd09b5dd8b13e83eb8ab919a79ffc36561222", + "vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php": "da34546947008fafb237f41c194d70b907f52c3e0ed049631f380346498bf3c4", + "vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php": "c7278ec8ab7f72435747d4a8d64ddb6b61067edfa4a9e2d9e2324f71edbba75a", + "vendor/monolog/monolog/src/Monolog/Handler/FrankenPhpHandler.php": "af5c53c95c1abb56d953d232d8b55e801dc602b1cc8589a21906ff272afd87f7", + "vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php": "9ac603f0282e01c79518f88b2ba52245a6468fc01886f3f8815b51c4cb7ce0cc", + "vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php": "92939f1497458997a28592c1e86e94ff7b0ae50564309fa8edd89db9788a09e8", + "vendor/monolog/monolog/src/Monolog/Handler/Handler.php": "d8fed948377a07a44f11c548751fc942f2eeb9e352d98a6457750dc1d5b0a8dc", + "vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php": "5b0f770ce764d50d871d805da2683ccfca39e64e70e56be3518648873318eeec", + "vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php": "f3f570d902b5c3da0fb06b287df640764f5475e27aa5949897c7d3659c4f2e2e", + "vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php": "2a0037ae9c34bf756d30812189ad3bdb84be54049cd1aee3cf8cbf1ecd4480a3", + "vendor/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php": "4e7ab6956fe6fa00b4c5adf8b973f9138ef9c1e87900030fe69577eca4573d89", + "vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php": "dab2ab36249acaf1cf62a88c1b02f833310fcce5b2cbe57244949125782ec259", + "vendor/monolog/monolog/src/Monolog/Handler/LogMonsterHandler.php": "bd7f0cf2897b09bc4ed6ac463df44394c6330455d614c5c90b368c17684fffc4", + "vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php": "18291245f82f1b37c00017d592e0ef79e8a60de11cca7ecd32182832b376ff13", + "vendor/monolog/monolog/src/Monolog/Handler/LogmaticHandler.php": "fb4cc34a644d9f6075a67236a703970abf8fcb51812aa48d5067a80e28740b91", + "vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php": "175982c1551b55828fd948f501636fbce2ebf8751041c3929e3732478e6476a3", + "vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php": "49ed52af420dfd7571edcc24e654ab8ddc8fab060f67dfc10a164ec3ef9b57c7", + "vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php": "6cbad21da41457d71384fab2b0491f4608515d9cd565ed40a83df5f02c1f75f4", + "vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php": "b3fa4cf7bd6519cce78c718b92dfb0086e9a0d843f8eee2de6ba6c594dcf2650", + "vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php": "bc3fe1dfb95e7bb9843a90a6a3c34b71046638a7dbe7addd4b151c134ee18157", + "vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php": "12026d01e146b0524222d81b5bc2323e01115825bd1d5d72de8b9e77439f7f48", + "vendor/monolog/monolog/src/Monolog/Handler/NoopHandler.php": "9cac11e9a77d02c59cb9d10d98d86c37503973ddb9c1be30f89194a5d1a00a49", + "vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php": "1a9a267a4a060c5001a3c6cf9d8592fc7f80be2deff753c14207fc91f91eb4f3", + "vendor/monolog/monolog/src/Monolog/Handler/OverflowHandler.php": "466117a395f43f30b89e367d126292e002867a0eda6f195235dfa34ce9a873c3", + "vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php": "c3707699164e339ed70cb9c3f76bef1b08b04d7036d6b3bde073e987e646e8f9", + "vendor/monolog/monolog/src/Monolog/Handler/ProcessHandler.php": "263f832c958990f9bc9303d3e1ecfa1b07d0ad743a93fa9a77acbbb61a373e27", + "vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php": "2f951faf55182850873e0c302277ab8b75b943db4d9b17f778b3791feb535643", + "vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php": "7de97be3b653016783c1885af79cc790822652ce25d350e30d83f5b71ba8665c", + "vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php": "6896619e19f82e397096ed8c0de90c46958b7f17f38c5168b21e69b120059648", + "vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php": "72403bb1f4f6b412c10231b81bc0ab8a85f280ed2f3b9fd267e7a1a6ccc13a61", + "vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php": "e09b41fb5b24ad81051ce0629d0edacde130b54b82aa40621c94a28f059238b8", + "vendor/monolog/monolog/src/Monolog/Handler/RedisPubSubHandler.php": "733f109c734803ab8e6987402a13fc7e26e7fb6455d0911525ba90fd37164e9d", + "vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php": "d5fe5a984fef52259648d9b92fd7ff055e5776dcad94758f41ca496f7f9e21e9", + "vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php": "f285cd39e25490bf9dfded34aa053e5c42ef5195c0c7d7ce97d7227cf6c5b509", + "vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php": "cd82b9f8f391057830bbd66f79e8c915bae80d7011916f24ed884d78205051d8", + "vendor/monolog/monolog/src/Monolog/Handler/SendGridHandler.php": "04c2060ead6352648568f4a0f2e4935a6affe9dc7a12af218bba41aa1c3cbdef", + "vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php": "ceb5d24d459f6f7f1aa1731893634568421dd104df947f2f5e74bec4ae475a78", + "vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php": "5e4ce5b16465f3fc3e1fb1d33519ffe09b7e9c73b881f62010fbcd7f40dcb764", + "vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php": "531ef871e788c26a5315658999833069cfc10840d83166a664fc298419ec7527", + "vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php": "e725e900b051c0926ebd68cd7c07cd6d53abd2583f09db24ac23bd271ce634d1", + "vendor/monolog/monolog/src/Monolog/Handler/SqsHandler.php": "5af231e98664ef11969140212dabe7cd6657da9b67d057161fa9bb4b4c2e5d7d", + "vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php": "b51483bd03dda90695271de3fc614b98edd8b7ecaf72c7a63405e21df8dec64b", + "vendor/monolog/monolog/src/Monolog/Handler/SymfonyMailerHandler.php": "07c85f2c8f9ce8cc3dc4a6de840200a54f32736d62d23bc4a0b98f7406ae16ed", + "vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php": "828003d23dc1f5bce273d0989d9e138728511c94631e1fbb9fc4f4dc5f3df204", + "vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php": "c672bbb87142609bfa21bbd5d09bd8ff8cf3f5e9abd20cddd546212ca5d6547e", + "vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php": "66af26ecdde442dca112fa8c092da7ddda2f79a3a174960c381c9394a0dfc63f", + "vendor/monolog/monolog/src/Monolog/Handler/TelegramBotHandler.php": "e527e800f632ddacf6aa859bb3abacb44570c853f2224c2d306fae8bb316e5e7", + "vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php": "b47e559f28d280921f8407007a990d538aea28f12ac8ac042c0eff60164dc313", + "vendor/monolog/monolog/src/Monolog/Handler/WebRequestRecognizerTrait.php": "60ca14bb1e155764482d99bcd909d9162c9d4299b76ecd5577ece44f311ad23f", + "vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php": "74969296e046f733b0bf2cf3eed559bb898607f63ed40d43510f60e11e0ea6b7", + "vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php": "2f5706754a33530a85a224b1f974e1e70801bf11675bac1865dd8313067761b9", + "vendor/monolog/monolog/src/Monolog/JsonSerializableDateTimeImmutable.php": "10ef69c94ac474e47e7910aaa668c783b7a51c46651a0c0daaa1c3dd0f264eb1", + "vendor/monolog/monolog/src/Monolog/Level.php": "a8c1b1235dae0025d18971b1b357727419aab3591e83139caa3d74eaf123928f", + "vendor/monolog/monolog/src/Monolog/LogRecord.php": "033537f4768ed1791c4eea0ef9c6c03f8346b2ea24059e50e85392a6636790e8", + "vendor/monolog/monolog/src/Monolog/Logger.php": "ccdf61fade57227720dd95f80edb1d2a21c4f10bab790d792ce586807166608e", + "vendor/monolog/monolog/src/Monolog/Processor/ClosureContextProcessor.php": "31d9ec44cc80c7be34f38e77c89f784625b8b6ab454cd852de2e2a783410f24b", + "vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php": "2d64e9ea4bbaefc3838a459080667fcd3a8c90f284fcfc996e6c103091dc1883", + "vendor/monolog/monolog/src/Monolog/Processor/HostnameProcessor.php": "f71edaa35ce1e7c48b0aa88d6c8c994ee3a80513f3c60271a7a20a40a5af1691", + "vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php": "1760c07c1562c0a292a1ad767c4d211c45e24635466509d14b910028acecaff1", + "vendor/monolog/monolog/src/Monolog/Processor/LoadAverageProcessor.php": "436a0c0836430b05fef0d692da2843804e27cb60bc2ccba2cd79a8a03a0238c7", + "vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php": "bde7180cabfde59aa0d9faaa9ee805dcde6d47a9e522c13097c5a4cfe27785a7", + "vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php": "d0489d1bac5304439e68c5e18060dd4a6ef7ae82d4e0e1076c34ffbc883b2eb1", + "vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php": "6fd512425072408b1ef59fd71204faca8118755a259ff0a54644c2f5d69d8a22", + "vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php": "75c2efffcbfe7a1e07964757d854137a8a4edae480b07b78fea90fde904fb03f", + "vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php": "7c8ccc3afa7d1c28442b449c9e9bbfc4b2a3cccaafcd71c338b58cca3efd70c8", + "vendor/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php": "d0677f42c12ff384b545d6358473f7505ab4d3f59617f7d3a4aca1a615732f35", + "vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php": "37c76ccc6b142c1262b9812679d16a29672924e351a031aca7d9df2cf6fb72de", + "vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php": "bed8addb465d007ed403c74a148bb82e1f04416251576a494137600aaef47ae7", + "vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php": "0ea99abc6ea435c9f5082c7c097e81ab318b3aa2ae7f1669446b2918ebec6087", + "vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php": "04134cd76ce4204c92817eba73e194caa9b7f032cda1040b65464587a9ee1a44", + "vendor/monolog/monolog/src/Monolog/Registry.php": "280edfb3c7fdb30b56a91fa4597cc12c7f2c4aa6e6bd5c5f4ce6f5048bac451a", + "vendor/monolog/monolog/src/Monolog/ResettableInterface.php": "3101f006af65878ce8fd24ea6d0706e4f7c6b046690ac2f19e42b45bdc902974", + "vendor/monolog/monolog/src/Monolog/SignalHandler.php": "ed097894188b05bbb61cc7c991e451e20a1997a7129c9167ee383adbc59460c8", + "vendor/monolog/monolog/src/Monolog/Test/MonologTestCase.php": "5dd94dcf726e0221f454290d0d408caf2b124279e5a5b5f9833faa77e4d52400", + "vendor/monolog/monolog/src/Monolog/Test/TestCase.php": "ed0759bd02f989b97f5ae8880f4f3c9ada613055f92e067545874618ed4f1c93", + "vendor/monolog/monolog/src/Monolog/Utils.php": "c1b02c84945e117e0e49372f9c4c65d785a718f93f57b177d11f251004279ff9", + "vendor/nikic/php-parser/LICENSE": "dd859e107fac9f87a4413ab8c3c96f0f1611a17f596a2db562a5a4f4904c1e97", + "vendor/nikic/php-parser/README.md": "8c89ec56744b78052f9324a4ce76210cf298acbb227653b86491f685a9035105", + "vendor/nikic/php-parser/bin/php-parse": "56aa63404a22853120a32aa3f0462528f6a03fe45ede021cbcafbffce5429fc4", + "vendor/nikic/php-parser/composer.json": "16728b9e68b070dfee0de0b1311f4b6a8a90b24dd73277950f73225f1de770d3", + "vendor/nikic/php-parser/lib/PhpParser/Builder.php": "3ad88dc8184305a97fe3f79aa632e6f6c5a6b9f7c2ec91bddf25eeee6958b72d", + "vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php": "612f70598f3fe57c383562ac5ed6170b21a8b0ac7989c8f0280f1da5fb6fa670", + "vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.php": "52ac5021c5f21687ef6b7af006e8e79f945df2579cbe49829938f5e33c9d4652", + "vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.php": "43725c0752bf56685d84ed2de0fe680e8892c7284f11c7587ff1bbe5cc58974d", + "vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php": "a159fd916cb323327c50dd9f6b3b32ad145e91603168a3aca7823a32394a0642", + "vendor/nikic/php-parser/lib/PhpParser/Builder/Enum_.php": "52ad3361756d52523c16548d008c95351983e3029a16294761b42ed0584a41b5", + "vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php": "bff940018d197d78fcab25e57b9ec6d91bcfb6651427cbfd920afccbef2df254", + "vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php": "a8a525dee19a9be174df9bf0b19c071fa0753f3e813031b6d6e96f068d0af121", + "vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php": "54cf145b3f7b2a1011e810ee66b5ca908036194a1a0ae7be7216d51989c1095a", + "vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php": "425434befc6b8263a44bd3b7aa543e42b2acfa9ece4cabc61c72c72bf307b844", + "vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php": "4411734a3b4a62a223cdbe6656fa92e9b41f6ccd324cb2bf8748e8d28f573ece", + "vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php": "fe89e9b836b02d5e96718233382793eeca0dc4a6e7aaf799c31d16e071d44ba4", + "vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php": "f2942d1081065cba95dd9ed19dc90bbfbf340a8ffec4d36a2aa112a2777a3a68", + "vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php": "a3678f87a206ab69c673a3b804d4ca018c0251af0e20d3dbf8c087f8e5b3bf94", + "vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php": "f02b707ea62ec4f9aee3f46c292dee6b23b9e3f3950473728655f74b512ac5d8", + "vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php": "5a172865ea085dedb7fd0cef4af643ee3e21c447e712977192525394a8de599e", + "vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.php": "f5ea44b9eed3164e35d6f25ab1827dcfa2431f0454f0d7eb908a1714aaecd59e", + "vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php": "6ea8e388b9e43738d3f84406f5e43f189da22c5ceb3ec33030d16fc887e49869", + "vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php": "287d77dbff4ac911744f3abc03a4de13b6e9847577f36f7a892d3612e1d100a5", + "vendor/nikic/php-parser/lib/PhpParser/Comment.php": "b2d89a515ca23716768d6c179f8df87d67b149276d933ef6a4fbfddec1f61107", + "vendor/nikic/php-parser/lib/PhpParser/Comment/Doc.php": "b9255899fa97e4c44ed39dd7a175adf4e87b4487146ab966590f01ef0dca7746", + "vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php": "0b891976f6f75d763222e5e34bce2a295db33f489ac98660c5762780172b9935", + "vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php": "6151c45ec5424204f849a3527c79e1687b74adbfdbdef6a404beff36b66335b4", + "vendor/nikic/php-parser/lib/PhpParser/Error.php": "65c32d6135c2b214eee37a7f00ccf1f2c8d01430c8e65af99ebe74359dffd9a9", + "vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php": "4b25e0ec2643272ae01657d9943fbf5d896b3df0294305a5fb87b8bacab71b7b", + "vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php": "f111088d9f324ae70ff85af766e03f8d91e13f6c98ec5f1aa524f7efd131276d", + "vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php": "1c218e36ba923384ad1fc6b7b044d92a58d01458601ad3df8a93d623e159818d", + "vendor/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php": "e66978539b72c8f178ea7cc188f19712b96006abb3aee5eb8bf4d3ed890b7d8c", + "vendor/nikic/php-parser/lib/PhpParser/Internal/Differ.php": "53b40a5dc51e4c48f79860416b137d3ff7f344ea2dc4a56b6f38292a9ddf5422", + "vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php": "dcfa95be29de4811791c8c600c590c2513cb5134f366779da6018d17262c5c4b", + "vendor/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php": "da9e874d628ca1e8ee0f56cdaebb73ba402f12484bd0c03b07164c8538c50ed8", + "vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php": "366dbae6222c80f7d5b81f098cbf0d4f683cd6f0240ac1a22ae26900cbbd1216", + "vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php": "1b9ceb9fc6f1ba725383d5372dacd83f600c1be902feb3c9ffa2822ac6b7ac9f", + "vendor/nikic/php-parser/lib/PhpParser/Lexer.php": "d404876d2c850af1a83c4c0847a793c52fd88a745227923a3b7cbf54bb42e51b", + "vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php": "8490565fe986b1f581967863b688ec97fb46a4560720eeb4fca75df841aa0353", + "vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AsymmetricVisibilityTokenEmulator.php": "12544449a30282610c2f501cdf7ec741977e0fcd6ae4c41464c195559d2aa6a6", + "vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php": "2b89f64eb9660ebd3f5ce3f96e9d77391ee876cdb3176e7c1e7b2ffecc6bc033", + "vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php": "88a31ab4ddd114a3ed5d4bb1311fc802d7e908c729856504fa11c76b0bcfc54d", + "vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php": "fab022824353dc8074ea249d7adee03411020f4cd7cf2a641d390cae3800b8cb", + "vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php": "ca400fd04de3e15f8b54388282ef209430a38dd05c2c904800f18ba440fec5d3", + "vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php": "95c599bc4e1b6085f514a3d75446850b830817332a5bda5cae40f8c7b925453d", + "vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php": "6f13fa6195dce2e11b35839e59074afe35f3b0b0b999495eccb1b7b5594184dd", + "vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php": "262107a265db2a777447f7b86afc5f89c7cce6c6468dbd9963cd34345efcc54f", + "vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PipeOperatorEmulator.php": "ad2ab2af4e5d285eb2405d66748baa2854c7480322797a91e9a076be62210ee2", + "vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PropertyTokenEmulator.php": "695d12a66bfa9f2a5ae1a4f267ab5e6222e2bf30ebeff3128c42097cc3950e50", + "vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php": "c500d34cb258aaebccd7a504a4d96e3c4caa6a220811cbeaa689ea9f18d7636d", + "vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php": "9735b74eb5965953109579d68d44be25b5a8fb8f206300d56459cce5fc1ee708", + "vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php": "c802f69a5319242aa03e3eed4656551ce8c18e535df4905299f0f2ab931aba46", + "vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php": "744ba8ba60d422f07737a1438a541f843432ca7cbcdd8c57c07a89d73ba552b1", + "vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/VoidCastEmulator.php": "3c5bd0b4a0a5d2f351adc32c7b9e3e56949e2c3b7364fde73e7810ff2652bc9c", + "vendor/nikic/php-parser/lib/PhpParser/Modifiers.php": "33fa68031067f532c0e4930c4a25f41ba817e8681b4b60853c75b2e12900bfd7", + "vendor/nikic/php-parser/lib/PhpParser/NameContext.php": "3343e0a931414df07484457919adc64c43d75460875588a07a898cc8228eb816", + "vendor/nikic/php-parser/lib/PhpParser/Node.php": "8661124cdfe90d86af7937f563942d59c63630da2fa994e290e7b9294442eed5", + "vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php": "030ed7dcaa6f4f151f9fff43bbcc832dc4cbc739ad07ed5571dd51dcc3408aec", + "vendor/nikic/php-parser/lib/PhpParser/Node/ArgPlaceholder.php": "b39e3892d51289caba615000825217fc47b5e23b36f89cd2f9b066278aac99f5", + "vendor/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php": "e6b0eb605f056d786138aec752df541d63538b9a59d358686e5e4e6fa5d45fef", + "vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php": "27fe66c422dea0ce774bdb9cb8fb4aef1852609463349d085c30c858881a820c", + "vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php": "057986cf63df36ad270b580b8ea4a53503803bd0d0d9e894601d35b0ded0c413", + "vendor/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php": "ef83ae1143215706eb696a09ec2b4379a3e6339f54a81f6eb661cb2a9758cd36", + "vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php": "cfadc646eda7cd40d4f7875a6d79e0ba9b66db75138eb32efba9592babf27180", + "vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php": "817a307133e8115db17e35fa66ee6a8251f0eb61c7d43869a0cbe56db0c38752", + "vendor/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php": "806679ee332545fa2d7cd14e7c52ab5fb299af56d4d215336229caa664fa5ba9", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php": "e351baf9a98c07e754eac85704d73095c59ee26ff3ddaf69c22080e6d65fbe9e", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php": "e111a948b8fc23242408d61928d0f15730c3d473952cac46014a519ef4562237", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php": "1c6d3b5b41a02cb1775f72ad9725419eebdaced3e543cf09742c000b555d4b2a", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php": "23b09b9ca53f91e616febe3d3f3e779aab249dd5600f6d0db28d67d67e994f57", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php": "d5232d1b61200e1b19b1441f5303a4882ca0ff81781bc65c7b3f3401f95ff059", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php": "36ba60df88de34b4021408d2976c5166a9b6930f4fe3650318bf774ed2b3a03a", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php": "e05947ed6756ca0d4c21d0f20880a625c3358aca342f0f241a134ec9e67770b5", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php": "090c7a30ac4573dfd5e686af528eab3b9727a6f6228be8b65f26fd982b138269", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php": "ad8b684d06df61651bfa49823637a41d6a60188578411e431f2f9b952738dda5", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php": "93e075cd13e7c95047ef83bb9c45b778746ad626a3b0003bc9d28015f609cfc3", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php": "8c81f170fa6f6b028d2e0eb9cf27e04cb037f492d0552ff2f1e8ac984ce8647e", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php": "26a76e3a13a7c2dc0518033a942f601b03b6e9505c800ee1536d5b93ce5d1915", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php": "7ef917cbd61bc155fb982ae133c1a95dcf7b6cfb9a6469967a0a2a0f5c174e78", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php": "f602a9df74b2ee400fa1ba7b9b01373f68aa8db280a7ee5426d0edd96eea441f", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php": "8a9934c9859626c9bd5d52abd2ecb94e5cd09e42998f3f3bd052fb2c2e8203dc", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php": "39ae0de8479481e48fef0805254bbad09bc911f30d9fa0a8d7e7c7b739116513", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php": "b6ef355df9fea41fcd2f7b08ee24ce7408335e84cb724d19a08e28a933435209", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php": "14c8cb57ace582b939116aca0af9f441490d47fb2b1245d8e45234c547b67c29", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php": "c276f95d4f57549f71d5e46220baad1647f46eb256696a76e134eb30f0d83673", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php": "5776c7f3d35cb921c5534cceddbd966aabe50dd3657a60f6ab7896153e8973c3", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php": "efb318cc50eca7d859113fa9424ff760e09bd055ffcf730dd713a339d1e6f94d", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php": "719f694f2a3f357fd7b998d262cab8b835507189c3879fd5e5e56d724808badb", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php": "720a6f7a706c099ab1c2a140bceaeb58581c466ba319ad0efd9f1a40b00a9be9", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php": "164eb3c0586a528109b96be8f5d56cd4bb247960420764b51cf1b4ebfb8367dd", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php": "beebe2a0fe1c60f69fbaddca9621c7b62ea9072a7041de14edc5d32a5e3d4952", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php": "c3adbbae3dad2e338e17a0e4769f023eddeb079c382149431caa7ac56314dd62", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php": "fb4384315dc721d551e1bc7e4e50b8718521ecf174291e74f584317776361062", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php": "d29ebd37a4fe2288352c120bbf306005c7a235c120f2315ec569afdb08090bfb", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php": "66959caea66f97099b7ce1d6370fb1c0d4a663403da860eb3ea7af241bd7ae80", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php": "f7b8f699d907c43e89accf6b5d1fcb95ccaee4824a6f429a44138588f8adff35", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php": "a0e1e7ed8fb3c49ae4b653db1e4cf33f723ae7f4e58cbc76753d8484149d5945", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php": "688cbdc563971fbd74ddcbc1519080ac2d5cb847e17bd578f3423fef66d245d7", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php": "31af8b1c279b8da9e3bbdff08e7f7917e304c67fba09c00d56cdbf51d7b36a4a", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php": "ced953f3ed73a5eaa3709a9be78be68a6b73767e7918ed031f075178ba73b36b", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php": "f68bb5e3894b18f4b2453f8745c39f86adff1005fcdded369d42b69c573d97b9", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php": "ba4dc5a0b0aa519ad30765ed0cbf8eecda532f8d3da62471a51f0aba30da1d26", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php": "aa1c3a605247652e5b2cc7aef6535e0cc0df286f201df9320fecd335fd50f16a", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php": "51fd474ffb23c1e1d7e983d0915a2a7062954638eb1bfa01796c002deeccc5b9", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php": "6fe5da966131c05b9e7e165e2f655464e1b0be9089c8ea9bf2b0b6015e6cce8c", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php": "cb19b6c2dfae0ba59bd7b952857c764be8ecfe89abff41e8f016ee5feebcd29f", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php": "c3de29ee5fe58ead003386210023f515417587a67c5588335658cf12e1690dff", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php": "962b81f95270bbc5d56e20060b501c12b4d25398ed137b66011e2c61aa830ace", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pipe.php": "9ed11b099658962a5a3e19c87bf691f00f212fc649f7a8edc2be1d8f7f46b187", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php": "b5dc11c60a12a37c842a325908f83610f0c0456a0efe6189330e1b5d707d91e5", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php": "3ec873b8bd0ddb264ab476596c00399ad7270c2c5760046c9698e28364d142b1", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php": "d89f8ddc63969133845536828847c3d471a760ae86b2ae4834ce6b5db625e056", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php": "a3a4ed9612c746fed8cd44f8e247b477b84415c74afdc58cc3bf0b691746c735", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php": "7739d653b588a8c2f92bda7a0ed1cd0e3ba8a3fa15015fb351de5b97a817cf65", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php": "48cd7b36ee38034567ffa45de26c4141ff4757cb2430be0e2739c3b531473869", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php": "b315a0a7bdc878a755870f7e1f791f19f11a23186dac1e1ec45426ca6d7cf34d", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php": "45cf8952a85469ee478508720a9f2009cb32f173043d8246bc005a7aed5b3c74", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php": "cf5f053949845a53f41f759d3ed8d769f9475b49acc14bad3c888f5aadf76aa6", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php": "95b997c2ad9ed16da078d6daacf31377e50ab7f79a918e45939ef97eb0e74adc", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php": "ad4c2f0a8b942d7e1b54c089775e7e203582f76068bd6c137af331aa088ffd28", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php": "57abcdd5c84c9cd70a03c2a2f567fcd44aed4c978f58c8b7ec5bc6ee52228a67", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php": "fabf29bd0da462da76e4e020d0b8a0128811aa5821433fa3b7bcc4f3e0abf18b", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php": "2922bd29ace168eb14f925d440a7b8c03937d212192b5157e5212833a8aae41c", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php": "ccdca203aea87c6867a90f258581d67bbed4f2e0b0d599649681ccb485465a45", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php": "ff8d9ee886082464859c2ca9ce127a2dc9482daa0dd5106a7b1f0062be51f2be", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php": "d822df8e26baefccc81bb996392c1f3dfe60483cdc1208681de12d42bf1a9fc8", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php": "8f9aa973ee39cb51217f8f5bdd8990039e30780e894c444095ea47b2a4fd4bee", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Void_.php": "992eecce2136f89ae50424dd88bc4762005ec3ddbde9f4e9cec689cff157b8a7", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php": "a2dc8a0e55883f4b6c53854634320591a4ad5eb6df31ae7c43104372db87fd58", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php": "6954a28005ada5538b7c807a6eb875c5577017f42c0664c1dd8236b7510ce86f", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php": "677e18896ec4c67097131932eab22f4ab597c5e75f18158075b34bc776bc7847", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php": "e21353b82c3a3c674c8302d3420f3ef02c577076367631b72b54e04e6e1bad6e", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php": "96afd231b802755f5df33a3544f9bf69e3c678e0affd0e5a2db098f708ad92cf", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php": "74a11a97db8cf6d25387ddf95fb9070eaac4fa7e28dbc42005e389fec6e6bbfa", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php": "d60dc1724727c3d942ccb5a06431929c1f74b47e31d4890e33db63e232b8719b", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php": "6ab55d14508a51f1ea54902c863dff98dca2d1598a16d77b921438df8420d49a", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php": "c8f7e38b4f6ef5b31b75c4b12386949a02df1c8ef1906f024468c080afa327e0", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php": "32cbba07044d3f5c0a4dfc6a0b524b14d60332bed605788335dcbfdca8df9671", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php": "ec7050b1bbb2f9a9965c38cad7b224c42eebf305860c703711b437984631ba67", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php": "5ca1b094a07fbe4a107141a506a8148ccec0c6fd2b05696ae45dd904330078cd", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php": "8a45716153f75efe1f4ff493d9f0cbfaa885e3631022b2bf4d185654374f6d14", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php": "d650fb124782bb544a0acd0a1db81702f7f59908b57c4c48e80fce5bb7f8bfeb", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php": "9ec555c4e1ac143255cf6209ec8be871f914ca825671394fad4c24573ee329b3", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php": "4e453e11e3871aeffc894c14a5f066d3c216d30cc2cdcec229abf6fe9f70f301", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php": "2ac81c254dd41ed7ec20207c0ec32db9f9c07fc375d8b87bebc1578ebb9e75eb", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php": "4743ba9e1be19a7095a7d8f6b223311a6fb351e99749868255604d77d72a6e73", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php": "a4057c48e57528b8fc3c564454f217e87142f58b6f7241a414e7fbe9657a0130", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php": "a33ea0c37b4185b2aa17990dfb435608b3a14c35aa4fdf26596a9940e9f0d3ec", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php": "1eba821056df840f2523c4552df1159c35164e5cf73abddae8be3e35b1b88174", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php": "267f140d33e4cf90fd2e76f7c6e572657af681f9fff286200273456694c566da", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php": "b9dcd950129ebfa675418c5aa617e302f801fec09622e2a9bcad5746d88638f9", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php": "bfbe6c82c87f0bca6c62051f58565b5509df7deeea63d8b7d3a251f872af6550", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php": "d6df04246ec62a9e6fed0f20ebfee69e5da727f5c6166d4a56cd627ac751c255", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php": "3ca2f513625f0422dcbb2858cb736b58f4bd6874d18d0756b7fcfc79b27b5bc3", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php": "edce20bbc6bac9b4364527717b11ed58477d0b90267f94ead5d70086c1329692", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php": "df4e9650cb941988ec366efc8a903d3d86edd04113a5b31190e3b0d23b1c8ba4", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php": "486c0e74e15a445c00595a999072fc8b3dbd7ef65867e4bfbb1d68414d5fb2f5", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php": "c4303f9ccdd63cb1001a887fd64138989abc12524f54636f43afae33394b52a9", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php": "449f689a32e7508d650e1b12dba3eea097aafa733d764919b347000feaf954da", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php": "675164c34505c649ffb8bf94ece44a8047c4f4ec78b8643f279e718534a25d10", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php": "8e887df6dc9546776b9715a09b0e79ac09e3330445d9388da0a3f5b61fa0a977", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php": "68bf2e74636906d2a0e20e983869ec73ebf14df97773861a6dd72bd5e383fc26", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php": "4e334bf6b74a47b07c6d3ba3d83f402aa244434e2c27743266c366ca0905354f", + "vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php": "29161abe4ecb0bac053eacbd4d9d6d0a124fef5462c61a6c954401488492283d", + "vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php": "1c0ff871b2dd43dfcff87ab151397ec9fb061e137a413f1073a12a57e9ffebff", + "vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php": "cede41b830a4915a30f215fed2f57994f190cbebda1976a65774ce1cd3927a9c", + "vendor/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php": "e622c2cb6554ca1a5bdedbe41dc18dafbf842c104ab21a3a6f81aa13a4ab0c4e", + "vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php": "d9e71fe6ac0ef79e245fc82ed3ea02a4d981649ff2cc7658104384ba507cad75", + "vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php": "7e481afc9a9ac55d689620bf02bd2ec040b0020948c0b45022721e0eb2e8c990", + "vendor/nikic/php-parser/lib/PhpParser/Node/Name.php": "94e48045300605d197c7edcd27fb9a72cf96d3f2e359ab67621e6c63e6e350a8", + "vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php": "8c9cf335d24d4586a327f48f9b8d778c17eaa83d206e51dbe13e7563e4478375", + "vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php": "9859677ea50d6af93962838ef53a9b85e37813bbb1a25d312faef984ee563251", + "vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php": "a012e2a478898f1d2e860b837a5ce338a3276f8286756f7be60daf925085754f", + "vendor/nikic/php-parser/lib/PhpParser/Node/Param.php": "374bf0a201832a45027ac381571ef66040caec87a51a816c2bcf6dc647a7b945", + "vendor/nikic/php-parser/lib/PhpParser/Node/PropertyHook.php": "9a9ed312012df7e2d11d64e84c048811071dde9242c38d318ab5f90fda05c9b9", + "vendor/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php": "7ef310b30abcfbb41fc4f3df9c6994eee3e5703f61e5394bc98da996943e645f", + "vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php": "5c408d2f5439a74451f2e059b53457c96b58960518a3f2d5a62ed2cea6748411", + "vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php": "cbd6d9a260eed90c3f4ebb1b1d7c0e813e7380d88f38e5ae1ffefa99c2edb140", + "vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php": "c5c399fc1f1a6552d3801e4c249a824c9048e87a8bd45fdd4ea1b745164a3517", + "vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php": "3be506c0b4ddea055123bfeaa09a5dd1c3a9173047b6162018f7ce0997a098e8", + "vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php": "770cf182c04670e0aa79e26e09ab9e8912353e5e26f5e615da5f265ab040ba4b", + "vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php": "72eee48f57ddb99a9b01e30887eb486097e433e387ba41def19a87a0a61bd3ba", + "vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php": "7726b755a255431acd315449bb0c1bf121aca308c4a563b4f9b2facf2d4bc212", + "vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php": "a02806bc93807336bb31a6b07d69bbf6276963c979cc59ea657028d51985196e", + "vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php": "8204dfa8d51f8ad09447624c58102f0ead7bd5f05f62816f2f2ccd275015a736", + "vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php": "aec7f0abe2c64d292768f7383d990f911dac2914c48a67f8915ca54d9fcf25a3", + "vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php": "b93f162a956686edadff0cabc59273312c9bb05f876e416d6817bfb58987aa0c", + "vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php": "193588e4def45171d96be57e0e4aff5740208c0fe3f85c88331452c1a8795347", + "vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php": "46aef20fa6ec7d04869fe2d93ed7ae7348f779225827db1233519e7552429640", + "vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php": "c065f99ffbd51f48f2684db3d2ddee52442812001c18f9afd737ed9a1319274f", + "vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php": "8ad6e85b2cbb4a0e46287802d5a50b3e05555d8f1067309a603cc5bf2dfe6017", + "vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php": "cde131b3ab28393bdf6cea1de64579cc0e7f014536cf09d4e63622b17870da47", + "vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Property.php": "62c4415867806827e52ffcd0e3affed3bd15a12d226508d5e0ece12b89e43533", + "vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php": "acc4a0f40bdc9dd91e884a9c93b1c07c3e0e9d946105ea1f898540f629f63951", + "vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php": "9a0618689797c113c323ba7f0d26a5b408e69ab13fe4808fc8eea8d656bc8f62", + "vendor/nikic/php-parser/lib/PhpParser/Node/StaticVar.php": "4d613c95c4e8b05c1f10a09241f00ceeb966ac61a92986a32564397f3251d7bf", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php": "af62540f4e049a4d77171f7f4dc3cf05d968b10e06761478e776c83bb90a20b7", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php": "a2db3e7197215887d04f8efab3ad4720ad2dae85b85a8a5f974c488967a4709d", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php": "d44e59729d1a186ce9bfb5154bf93677d9d828916fd871e89f54840b7c92e26d", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php": "7461b8e0a38b79531c395ee5c642ac406a8103f3d0d285290c90facd5411ab87", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php": "646ac0dc0b20a1f76289dcc32cc85bd137333fde7b2f4171c5be291e73e9fed2", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php": "e6238f12a18c84e5384e366192f98d15faf7083b2b198a2d1886a64f73f3694c", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php": "e717f1d5d7cf072613284cbdda37d4b6b1b38c571e5ff1f26dfabe1f4271c4b1", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php": "3e0becfcca689f858f1e8393fe9f7ccec13db847f5f2fc5b27a51541ea8dd1de", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php": "fb97e2c0b38f92bc9768c6f7dc6f6b60d68e2470f9552d87953da27218f81959", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php": "f9efd623c06c1a076b3c7fdb0d1e84357962ae7ab3addf5a37dff603b17e5f8b", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php": "cdddee39a64c32bb923af63c59a916dc32a8ee111bf71e97429380fdde9e2206", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php": "a59a746e710471ef8b93dc7bd3f3c277a35501077cbffd63cad1a058fd69c184", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php": "f3fc6e45b5c7e37db41bfb569a18f84473ae87aeffdd9b39d6b51289da39be95", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php": "0e4df9e6cbb8f685e975108f6ad829f1d49f259708ad091365e8002ba09cca67", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php": "6d6f02629b9372d002690177fe6f9977fd260cbd9a9d7b9938e56866ae79f528", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php": "9680cdcc0ae7e1e11f1ccd93eba62af1dba021fc2fc03d43673fc3cdc8205ac3", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php": "c5c9870bc6ccc7e657489ced637908b01294acef46be5d73801280c3175cf7a9", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php": "a16e07d8aa4880f13f38cd889fc95fe283d211f0ff25dab9a73ffbf5c70034fa", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php": "c29616fcc34a29facea615e1a243dd8e90902e4c1e981ac6f01b7f595d316e6d", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php": "f60d9c98244467319fe31d428604880199c863b1b9d174f563be389615db5a9d", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php": "f9a6ad6d9a6cfafd701729e83c88a8b035f514d5e0ef9f6e4fa0243a51962b03", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php": "ddc23435290bd49cdcc032cd5ab4fa2938be9a0ff730a6211bf966a2cbdc90c1", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php": "feb8b2097283c3ad1bf9887ef05f574f73fee8163c3683e6fece896a142ef87c", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php": "14185718285583d919d2276d34f750d455dfeb82c3f3b750eda9232e11468f41", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php": "9d4186831da6f9c54dfdc9648ffa65eb1f5edde30ce9bc8e9f0e1b7dcf91b315", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php": "392faa2d03c64872de06c2dab358b1629758b645fc7d296b28be5bbc244dd03f", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php": "76148a920654c853995e73bcce7fbcf94318f2a2e6f720219aad219135eaaa01", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php": "11bb40e091c24109f441bc91ae1482e15a34813322d608a37f40454e4b820335", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php": "ebaf402904b2024e952cb246913750420ca5877511eff842c0c03e876d6a2111", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php": "7499d7e6db37e2ec9f63312caa848959d153a40fb8354c15cec591870d75112d", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php": "3751f84488830fcde0e71f147608848e3af0dd516e99f62998477b66123f1b81", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php": "596174c16909c9e927f0960d65e9432055030ab6e324956cc2617c115721a4ac", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php": "3cc21128ba727be07a34d6162f0468779c2cebf85970b2c31d5a32a9c8b225d6", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php": "ef02362ba47499142f771a3a84098530b10e0d5fd54b8da91bccfe5ffa28cdab", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php": "bd4b14ce323cf849da58960b62eac02cd248f1f9ef697a56d538b9483ec7eef7", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php": "946edaaf1e7fad8d0785f0c4b6e72507c7814ec3c5fbdd085dca71efc4f07f8d", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php": "73c88eb938ce2625811f095b3e542f2561dcc4215aca08f05a3cbdfbdcaa0f3d", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php": "2a75bdb30c6b2c39735bebc21246dd63748d5f88290d15c474c408a12b2810d7", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php": "834ff72a03fb6ac625e5a9ce0d0b115adf3644fcd685ab6680940c42e7d2a6e9", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php": "982e58185b852490d5ba41f9a70adbad4c2dffcca3c07aa493ea68b345d251f2", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php": "147ab388f8439479b974d025a876907b5203078c28c8e81dd489c092cfdd8026", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php": "899f0ad5964c440c3d193b2761e112c630330eea1e7aa4c32883395be709e161", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php": "56a40c5aaac95414d22255e5537f94806ff76d7b544d11921f30d1ba8a529aee", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php": "189b04dde1ac4e47fa13234313317e75cebefe038919f0c021091c5a9fca2012", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php": "5d0493e222a965495178fe8a8b88b85b009d29c25b28db35a523b3e31582f10e", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php": "1c54e9b8053816abc5824e676d41b2efd25f42cecb831d70988c7e0cce82e3de", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php": "3082ae0bf6a7e82382a2c54a228ee377e049c585c46cce64df7761a26b43c639", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php": "cd23831251aeb23a92dff4194a79a5b7bb1f2771631ef2592fea1397e6eb9fa2", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php": "b8306106f1eb953a3e855e544aa510cb0d4da4838ee0394cb723180f1de39385", + "vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php": "327130124087aae779da331846da494a95e2fa2ed1cdb07bbbb8f9bcb5edcabf", + "vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php": "5633a4821f1d92f373e76bb8b47d799bf14d91cc4e13117e09580e88ab58d045", + "vendor/nikic/php-parser/lib/PhpParser/Node/UseItem.php": "5869d3e22bd2d8fa0b8399c91ee316f74ddfc2e91a7cdf5d8071a2ce6a6a4a16", + "vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php": "2031fa31e4698d611701a553ef46cff711b82a650b997cf57e6df95cee0a6b3b", + "vendor/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php": "530d8cabb35f674fa12c812f1f879943e1658e944975c7a14abac3de1fd6be12", + "vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php": "b5a9bbcfb2e85eb01d566d3eaf831029b066ced2679d98adabe8c8776b3a86ae", + "vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php": "ac5c06e19b3e75e192a3a701a60ccd4dc57d739b65029765b4f5944088f19cae", + "vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php": "d937e66449205c8aac94ebbb2a45b3208e052f634c85e1dff7a467160febadfd", + "vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php": "9fac77e8ea2f056fd662d9a819d7f857fece2a108af35937981c007713984736", + "vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php": "26a6379d56fe546a707c92287ee15284a29d398ba4f6042af19fbae165acfb87", + "vendor/nikic/php-parser/lib/PhpParser/NodeVisitor.php": "8e851a8442287afa9ad7dbcf644d75f45dab8280efdd9fed8f346cf42578847a", + "vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php": "018df93e22741603c5558acf363b37c30b55dc27c2703e5854b84a2e3a081ffd", + "vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php": "3ae3c2e1939e5e10c63a42c192169a6fd46485a2aa67c045b1dac24f002d2bfd", + "vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php": "60e7a2f53a7dc2931334de50218b6431e8a646d824fd629fe415241e46106e88", + "vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php": "4df0cbf759e6822616278c2adec5afecba4771a8e6721f67a0902975105a2d4c", + "vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php": "591e6e4d62294119deeed035dd08ac5c1f3bed95de5add728f55d907ad3548d5", + "vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php": "63720759ca7f378c83636627e7db24fb11795c0dd18ff49f91b0a19cedd156af", + "vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php": "8661e95d4bdae96b7c0163fd27040e50f34232785198b6c3605a2ecd93aa517b", + "vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php": "eca428fcb22637ba5cdd172eecd2ec98bdc2267b259f1cef114cddf4594d5eb7", + "vendor/nikic/php-parser/lib/PhpParser/Parser.php": "1bd7d9e6f51a9fe774e6024645df4ac14cac698f1fb3f1c97b47925a070890bb", + "vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php": "53556d5a9adb8314c52cb7d4d0d88f694f80910ae2533c699187a35a148f583b", + "vendor/nikic/php-parser/lib/PhpParser/Parser/Php8.php": "ecdc15f12020ca8ec30760b6061b5502a8c4fd30ee94dd7f86d4a29f167e7999", + "vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php": "3c7f2b9418279aa2e6303e932db918eab3ca55349dddccd2b488f88d62b783dd", + "vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php": "d2b3816a6707af2bb918f553170b2b480849a76b367b48a41b39635752d135b6", + "vendor/nikic/php-parser/lib/PhpParser/PhpVersion.php": "86d2acc2619dbbab0e62149b43f264ba9e804bbc520f02a53073d9960ec1c7f9", + "vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter.php": "95627ed06bb89660934498a2890033040af8b74e70a182ef59c315d07979aa57", + "vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php": "b24d5f026e94f0f7463888dfc5e8f525ac84f0f10f7482181fac58da154b0501", + "vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php": "f483f831fe8e92c47d03abb413f9d5a8a9c08abe94005f0ead9fcf4cb56122dd", + "vendor/nikic/php-parser/lib/PhpParser/Token.php": "674df1e06ae2be80f5e60df6cbdacb34ce362035664d033cf8bfa106121d6f59", + "vendor/nikic/php-parser/lib/PhpParser/compatibility_tokens.php": "74083e705700d25d140ea74b0cf3973c2198bfbdd94a5376a38f915dd4a2d59b", + "vendor/paragonie/constant_time_encoding/LICENSE.txt": "d175ac2e6bc71c13117ea49cc2c3be95284690dc07cc7fc441c6538c280641fd", + "vendor/paragonie/constant_time_encoding/README.md": "76f804fb8b5c0d114dab5fb8047da0593822283b6023882278b9e58fc3506803", + "vendor/paragonie/constant_time_encoding/composer.json": "fdd3047e3c8fabd57bb599be2c4f9c60231036a48b930d2ef36b89ce7dbb0df8", + "vendor/paragonie/constant_time_encoding/src/Base32.php": "be5e581e7772bb2708de934af8692b7611082748478bb294bcf35eb7bd6fba7b", + "vendor/paragonie/constant_time_encoding/src/Base32Hex.php": "32efc37e4fc295fa6fd3b09500c929ced048dd008889247cda3888f69af26d35", + "vendor/paragonie/constant_time_encoding/src/Base64.php": "b701e83d1996f5e437f67506a226ba8723370c915eaca11d651bfb15ac217eb6", + "vendor/paragonie/constant_time_encoding/src/Base64DotSlash.php": "cf15dd168d943f67966de03252300f43abceed3633e79db5308d61feaa36a961", + "vendor/paragonie/constant_time_encoding/src/Base64DotSlashOrdered.php": "4dff84a34984e41c0a551e1527c9ad9d329434360c237c4076bb4aea67873261", + "vendor/paragonie/constant_time_encoding/src/Base64UrlSafe.php": "3b09f50e324d12a18e619136c430d2b718c5822c99c3985262ae6343455a7632", + "vendor/paragonie/constant_time_encoding/src/Binary.php": "5235bb3390354b6c9ed8446b98f6a8538adeb8d889c3656e11c1b6107701d52e", + "vendor/paragonie/constant_time_encoding/src/EncoderInterface.php": "b794cf66d70b24199e36d7d717583e306f3a963022396f220dbdeebacdf32a6c", + "vendor/paragonie/constant_time_encoding/src/Encoding.php": "062a91eba1850c6830bce2c371b4103a09341546d23e3a2baeb59db0132a5f64", + "vendor/paragonie/constant_time_encoding/src/Hex.php": "a71ba92f1e16cde5b3cf9593426fb7eb75416340ad7b81f83351ceeaddb1c211", + "vendor/paragonie/constant_time_encoding/src/RFC4648.php": "20c9d43c55fdfe8d3ede3cd0d72df9f81592c78dca167ef43b03f6b7db6dc1cd", + "vendor/paragonie/random_compat/LICENSE": "e79a4c7d03c72850c60b2d5c41c2f92d33448ed2b243bd4686cfa7674e15e3ba", + "vendor/paragonie/random_compat/build-phar.sh": "c32f3ec40fbc05c1b301e6fd4de5c067ba31c70f4ad4b3f6f4798743235edc28", + "vendor/paragonie/random_compat/composer.json": "dca88fe15257253068dc22f07563b5b3aba76fe5f71ab43678f91d4f6a5e0e3b", + "vendor/paragonie/random_compat/dist/random_compat.phar.pubkey": "8a02cf9db52b09b0afe04f3e812785c2a9854951bec0c31568a13b82d4870005", + "vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc": "3c55e651398d15479bcb279fba8e30d8c43155834cfdb5fecb62e61c9fd79f33", + "vendor/paragonie/random_compat/lib/random.php": "a978e3aa758976cd607e0e865a3ca93b03dfcefb457e8e6c8077ab5460a888a9", + "vendor/paragonie/random_compat/other/build_phar.php": "c7bd99692001ec4acbb5d9a6d9ac2792e926879ae5ef70ecb127baa0cef1d10d", + "vendor/paragonie/random_compat/psalm-autoload.php": "5cd0ad215f5b753db165e4b1eb638ced0ddadca0c78d966fe61f87acd58262f2", + "vendor/paragonie/random_compat/psalm.xml": "e4095e243d790a5001df8f469382c2d97ae069943bd42dee0f5e613dd958cd4e", + "vendor/phpseclib/phpseclib/AUTHORS": "a6a91aed5d5925a7f9ee7cd89ebb882ca47f171e1d81c41263a1683999163bfc", + "vendor/phpseclib/phpseclib/BACKERS.md": "18af0d496d83b55262abc93d02b24bfcaa1433afb2be109912d5ab4b5a307b26", + "vendor/phpseclib/phpseclib/LICENSE": "fa986c1ac53f7bd83e30fe296f8dced7003ab0a05ec11945b5aea4a4ebd626dd", + "vendor/phpseclib/phpseclib/README.md": "f9acb62917d6ef2507967bfe520fbea9c2747f0212b8149aaab1b993fece6851", + "vendor/phpseclib/phpseclib/SECURITY.md": "f00bd0f3d5d30753819ebbf2c0b7ade27cedf2f798c77a525bb101d46d721c9c", + "vendor/phpseclib/phpseclib/composer.json": "dcefbd1d246868583ae9be618724be7df44207d1b3fb1d6300eed05d4556fe82", + "vendor/phpseclib/phpseclib/phpseclib/Common/Functions/Strings.php": "d6b79e709877c17fbfa8fe06c2da5998ec4a7b3c132d592c2cd6c9087c555931", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/AES.php": "692a5952460697debe93f3199de5e2bda9a2fbf0adee532e96b19d2a1b73a81d", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Blowfish.php": "b9bd532aff5664fcc6a0d8c85420d44c4707c337e3f5bd44a62494c655f9aeff", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/ChaCha20.php": "e7f2b4a9b91b72dd8d8535406ad58ced441c176e437ad06c2f6947df86d9ff30", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/AsymmetricKey.php": "6caae52753f2e744e636277a08d4e4d30ba117b4969725b73ceaea45a952349a", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/BlockCipher.php": "cc58c469b932b632b438901859f8da0b78ec8224b44d4827011059d1a43034e4", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/Formats/Keys/JWK.php": "914e69b3d2c7d480b4459232a91bca4c5b28eb76e291f7247c243c4c6e1549ae", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/Formats/Keys/OpenSSH.php": "57c221a46b7fd1e7c54032c5372018c4583c7512eebae7c1d841cd38c1a85f82", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/Formats/Keys/PKCS.php": "22b276ead56c9b672d04392a9319bfe30b96e900ebc999e5ec1b21960ae93dfa", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/Formats/Keys/PKCS1.php": "7e280d875e96b61012c61c3fa91f447eb41afd31da308fb04393f5b5dd5c94f5", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/Formats/Keys/PKCS8.php": "d31a12a77f95b2197c9750b43785fd4711277992b6d0af43736b3152d0e793e4", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/Formats/Keys/PuTTY.php": "3a066b7cb044bd05b043c9bb9e5bb82d7c95dbc717a183977059186f03328bf5", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/Formats/Signature/Raw.php": "8cb27ab3c8519f82369de11ac8bce591cf7ddb10a951e5e9bf1d9b165647eda9", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/PrivateKey.php": "16de9483ab0dc23747fe15a4105a60e14664b402e02b38826d17b4aa96548915", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/PublicKey.php": "ffc3c1fdcbc8305016c222dcf621912450a09df9e10f9782d64ecc1780ee1dbd", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/StreamCipher.php": "e27b9ac0ffba2ea0999436c4467e3ba9906c2eb3ebbc4d99d421b33edd7e009f", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/SymmetricKey.php": "fe7740d4552d0444476c2bc3d3ce08bc21dad7b765c4134dd629eb7b691c2db0", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/Traits/Fingerprint.php": "adb68239d7e2d00ad836c3d11798473d0c558b0eee67089598ff99bcdfcf6544", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/Traits/PasswordProtected.php": "7f6f2604e9110905c7883f07f75d9d88702d515f1bd533910955c83d482fcd12", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DES.php": "6686fc56fa33826584c1b220ae1dd556d12bd865cc6959a6a59fa0786702ba06", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DH.php": "e0ea8ccf184200b281150dc348f64b9266f99abdcb28f8b44e779ff23ca5736e", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DH/Formats/Keys/PKCS1.php": "3d30831d96f5c59bb8368d5bca4fd66f18a11638d6bb36f9d606a5e49f5e4c74", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DH/Formats/Keys/PKCS8.php": "fd85c5151b3482d394aad15e2ce1ac6da86c2757bef9d8c9c2d1c8d9f555a3ef", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DH/Parameters.php": "6cf07f8ae0b7fe07254d56953d3cc04ac104e8edfdda72b4bc1314a72e75eee5", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DH/PrivateKey.php": "7b4df447f262f681f25f779f1ec77ac2479c6aeac0c00aa665b73bb059825cbf", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DH/PublicKey.php": "8f67d8ea45b859beed9af50c2fd03f9a40e27d735d0bb81c15eba5dac81c3b7a", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DSA.php": "f166e317f0b2879fee17849ead840a5749c267d065e18c093b28c4a9ca7e44b3", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DSA/Formats/Keys/OpenSSH.php": "c5a91a642c2172934d894b35baf541fb3ff0e898a52b2a33a2edb5fdd280ac37", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DSA/Formats/Keys/PKCS1.php": "85975a6831ff0b1529fccddc93125528be06017e7a00e130a6db05fd90c843ae", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DSA/Formats/Keys/PKCS8.php": "5bdc5407ecc03d46dcbf5cdc44d669487357b2f41705f551fab0c5b178cee9b7", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DSA/Formats/Keys/PuTTY.php": "37e4e0e4ecd835c19678c32bc9cf0dd9a61ce45f6760b60a688f3c5616fcee5c", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DSA/Formats/Keys/Raw.php": "54b523332291c940328d003c018c3a330d4118a7cbac773528b4718492643c14", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DSA/Formats/Keys/XML.php": "e339b07ef30dcd534237210923f72225c577eb3346b9bbd8bbc65ef1bc5fc5f9", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DSA/Formats/Signature/ASN1.php": "3b509f4799ea14ccd49d31dbd8a57697940fefa1d71b781562f3d9326df06a5d", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DSA/Formats/Signature/Raw.php": "e970d0755fdac9c4e4c07244031ebe3e3a6dee3c15db28f9bca242cfe26ce952", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DSA/Formats/Signature/SSH2.php": "9f714ac9c4f6e22cdc0486137d86b30cb4b30d91d9a07f50eea1d80713b00b50", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DSA/Parameters.php": "82203ee71f541bed2704ce45441e22a62d5c257cabeef6030a8758758e6060ea", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DSA/PrivateKey.php": "1157073b489dee95c1eab5ec36e0c0a4f599acb0feb3371410a7983b098dc276", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/DSA/PublicKey.php": "8ebef8d83dc70bb0df4966d39cdaca5dbc53ef9684bfb87beeb0c36f242695a5", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC.php": "62be80e6e6e0e4ea82496fcf33d0c33674be6aa4f954f2645289ab7a94e0ba45", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/BaseCurves/Base.php": "993bab71b1e4205b77be6a3f6314ae427a11af1aa62803a666d1568ed4634099", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/BaseCurves/Binary.php": "ff25d67bcdb67ea0545c751ebf87e1574bd35f16dc31d7ac6141a949583ee1ba", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/BaseCurves/KoblitzPrime.php": "d5fa06bb56a30fc68abff0b9b5b600c65443eb1c82a34dfe9e01aa6b3070fd12", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/BaseCurves/Montgomery.php": "988b9fcc0d2bc9df3db8ec336df60b306e951f4836f62e6a3731957335dcabf7", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/BaseCurves/Prime.php": "a822a0c954097f84a978214d4e39a3a38ef63f6c5fee00b2fed8a94c05e8c768", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/BaseCurves/TwistedEdwards.php": "2f7b5e84ee8282f3eb53fba80956a78bfd89d8857f6bde3af6ab94b4cc7610a2", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/Curve25519.php": "66aea6351428280f09b431749f1252a265bbd3790a2923bffcf05d1b477c4cb7", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/Curve448.php": "052c1a0e6fc62e6ef54dd7e402d678647c33e5cd0138f5f493422f2469008917", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/Ed25519.php": "2e6f6c4caa794610464e1bd2da64d25e8f881fca413a57f6c70332550285109c", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/Ed448.php": "5708a5202578ac69cd1112e31abbd3afc10cab5afa47fc8b5425dc3175357069", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/brainpoolP160r1.php": "deb62c121f838e9cda37d003f497686007f8a39a9f09176bf62ef8f4b7759be8", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/brainpoolP160t1.php": "09eaa2c9efdea72a207dd7c5144a8088701d032dfd9375a005a1047650ddb7ec", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/brainpoolP192r1.php": "f18e3a45760b1e3b81e682f94e94b5c1dbcda744ba255d59b7c9b2f627052289", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/brainpoolP192t1.php": "de27d624f56943fa38696ba85a2c2d1978ba2bec9b673631dbbf3165e23f450a", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/brainpoolP224r1.php": "db0183501dc9c6639cf9c7b8c347164f67c3dddd5fc071d8c89ecb9e222178a2", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/brainpoolP224t1.php": "cc6b1202e1339afa64ca1e67fe8d31020dc282a11d84a08e884ca213a4a003c5", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/brainpoolP256r1.php": "3c68c00151a944a3c15bc01aea71261d940227a1166715b3be5668301a0f1e75", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/brainpoolP256t1.php": "f9216e935933e78f7d7fa2f7b62c996c6a69eeeefeccadb66a0815348b261990", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/brainpoolP320r1.php": "64f7ea3286c7ce5e7c60f2e659eb65d5ce81e1db2f744f5c56479f8f8f445297", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/brainpoolP320t1.php": "41eb6b0ee51d1bbebd9a62b2ac19e77bfe313d383e4981d82a8bf3aee8171424", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/brainpoolP384r1.php": "557a7cbd3da206577ceae6321355bbbad2abe383307eb70708da6abf42c1cb67", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/brainpoolP384t1.php": "2fa97b4fd32cfc035edeb6d9551273288ec00dad1765a2656f27f90cff389b81", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/brainpoolP512r1.php": "5d68e308d315bf211f9fa1dddce3dfc107f78f0e43b6896edfec8a4d9d463bbe", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/brainpoolP512t1.php": "bcc3e23986a6c8bf8235f3a14893204199630006d9392b210c09ac86b8649a11", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/nistb233.php": "601b1a83d293028b8e4ed17fb4a3bcc25184d0e49182e359308fed94fb32de95", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/nistb409.php": "31ac91d439b73ed3614431935a250135e9e54ee6e8a1048b0ea2f48e23b0ddd8", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/nistk163.php": "a48b0530f3a4c9af4c3b1ac6703fb55f5edfe526d40093d78a7a43bda0df5969", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/nistk233.php": "9534812df61acdd9cf5ce10daca24db377585491b81505e09def2b2f068fef5c", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/nistk283.php": "a9aded4400f549fb9c57c4f402900a6d8141be3817a27c915786ef0eebaf6d18", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/nistk409.php": "e4ded06f6fb75b64dc3ded56f1a2a2aea4e381bf2e249975a85a60cae14e9b60", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/nistp192.php": "2de9dd468a87c7639d83ad49356d1860a1953a7688ffc8bcd1b3a0e46e49837e", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/nistp224.php": "0c2e38edf0da740f6b1f6be4f20779e6b5ebec4f917857f7abf0ca5b0696095f", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/nistp256.php": "30f9ed39b57bcdacd15c8c0622362c3c7af170f76953f84736b92b7ee0dac457", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/nistp384.php": "38888a4454bb31b4b9b422ba1d7497fb074dd7504179ea3268dce73cc73d7f61", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/nistp521.php": "841bdcbadbe1c616c6b7adc92f8e94f263fc40c386bdbbc10967944494c30cda", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/nistt571.php": "f529bdcda437d677129cebaa179df0e080fc73ba46602d6da68a84e45fb25bff", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/prime192v1.php": "34a11208a433f60b42c9dc40eacbc614f2f2d2026a592b2942f68c1358ad8798", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/prime192v2.php": "714ef2262c1ef75d725de46b8570a320de6835bcc4222018aff1e534ca168645", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/prime192v3.php": "9811bf08b26f28447060249316d126783369c3bdb6fa4d3818e1bb46fd5fa420", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/prime239v1.php": "5568e8a03e05c4606f61862eb46af7ddddb155d163d707f15f3090eb0eb7f405", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/prime239v2.php": "10e631338812b69e805c7406f6d218544f65d59c3a491ef102c9e54290c37164", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/prime239v3.php": "bce52bf0f3090d3ebd3cef0f6a638c027b4cec9980258681db2d7e0026c6e0ca", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/prime256v1.php": "edb3478957437b8dc012faebb67ded74a919efa35239d178a963521520b1b98e", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/secp112r1.php": "0a8d20bab7dd92e39d254e127926bdde98a3b0d512cecd360682149cda31b8a1", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/secp112r2.php": "3be7da395e3b14326e69aa7ab76d2dd6973d352302dd9c03751188f14f81d006", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/secp128r1.php": "2a392a1e64450779a4017292e686e23585e7ff2244aa00676ceb9f090e58a8c4", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/secp128r2.php": "f669bc5bb69bc08be1516e8670e372d9227d9075fbfccdeaf0da2391651a6cd2", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/secp160k1.php": "e92b92ecbc07e800be6938a47190a27e975836b5e9d2a3afeee7de4803f925f6", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/secp160r1.php": "3ad0275b14a4af9fc37bcf00b00539b05fb509c493b54e236fa75f362849a147", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/secp160r2.php": "8f72af2eb8456f28df8dbc7ef4fc2d5c5d1204effa2206d398c48a6f2ee23aaf", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/secp192k1.php": "5411a81549e805a9f55b871e098b5838bf563068b5325b9782c2f515f4be3851", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/secp192r1.php": "7bdd1d5c4c72647e65f92164bf9a5f80355d8b03fc8aa27e2e1592fc0e42347c", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/secp224k1.php": "15197b14153575b8d9865d58d017ca1a989f9f464b8869c316246afd718b6f82", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/secp224r1.php": "0aa2d5e2f1cffe1237b47fae5ac75fdd8c25c0edff5d6be9cd2593a15e6ebbea", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/secp256k1.php": "ecd5080c4ed165ac396f4cab6098b9681a8145ff1f79eb31c307affc48c7fb4a", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/secp256r1.php": "c242d1b289c8635d32dccf65b47994964d1f0030b738b36cd4432d5bd796ab8f", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/secp384r1.php": "30f3ed0ad3f70755a81e6abb6cda1435df8eac239273d81b1f898f7235b759b1", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/secp521r1.php": "0649a3203e0d2d09c3a29abfb7fc679a1453b6ecb3781995bd7dfe9c4b08d42a", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/sect113r1.php": "0e36f476ce7000cbf950baf4c38a9ed125667e2d8f073afa451a465ae071beae", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/sect113r2.php": "483a68703c99b53f2c3e5006df66002a9addd676607f6d27172f1abe15fa3cc7", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/sect131r1.php": "506af4cebc3c6b7cbb6348c19924ba5abf81a461aa34e476fea5cc46147ab064", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/sect131r2.php": "e1ef1da5f6b069b17d89ee7f9cb811c0b840c0242ae7dbf1367cea95723b0824", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/sect163k1.php": "acbb8882e53b249536e5d970d90065dfc5b2c968956ca79e281c0794b812e567", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/sect163r1.php": "2be92eaccc410eb0808e10d1fb532e5908dd1bea55ae1c344413972144367a9c", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/sect163r2.php": "71a5e03300130cb43f0598e4e1b164c950c7f72b17d2caab989a3e0a3d35020a", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/sect193r1.php": "2a3abdd2bae6d79459630e2bb698aa6f3f7cb3631f52d88ac51a3753f8865f60", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/sect193r2.php": "02767dd11ca7ef4f85655d125ca1c4783d695066bbc97f4a9dc426da45369a6f", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/sect233k1.php": "d34d3c028be6fdc5d687836932a76ae5a63f31ce6fd8dd5340736ad7a0a1ebc5", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/sect233r1.php": "8c431a9434ad1b5788030c4107d4428e5fc1a6116e944a20abd5b2691a54ddca", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/sect239k1.php": "db410efe3db1e17f09a6d521e1f22efd66e05f0d36779c5dd3437c598cafef0d", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/sect283k1.php": "81567b11405bfa6f9d22dff320d3300f2d63bffb715b80ff4964c71544608231", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/sect283r1.php": "c2f0bba615103994ba9b7de709b24be6ed3d05f171a1a6b0a9ad23308945770e", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/sect409k1.php": "6cdc2976948148175ee2e5a56dce94ad80f21913ec0484999d2d2b3fb4183237", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/sect409r1.php": "bc20f0877c474b5c3dc58171f70b205be95438b4a171a95101a3a9bdd42da5ea", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/sect571k1.php": "f9ee4109aba29f623f0bdc262f547dedf0e8e1b8ed103acce1f01f4273eafb8b", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/sect571r1.php": "3a1810284928196fc4799eef40edf3b212741c394c7ff661c0714faaa7262965", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Formats/Keys/Common.php": "9f01f4ece97d1f50b8dae1c6921105adb3a51f4b277f02115feb8d9b1b417e8c", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Formats/Keys/JWK.php": "9bb542e0e7a4bd33a7918976dae2c0e429a25765f6671bdb5cf40e7f574b3769", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Formats/Keys/MontgomeryPrivate.php": "46f2af92fb03b9d31dfc07eb3ca342b8d6933c4b0568e1d556eb6575eee250f3", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Formats/Keys/MontgomeryPublic.php": "2c201da17f1f9c3abcc79afcefc1f8d84c32d5add483e92f7d54182740786bae", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Formats/Keys/OpenSSH.php": "6490b2098cd75693cfe33f966be1cb3bd005a61f003f56071931638bc5fbe91e", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Formats/Keys/PKCS1.php": "a93596ab555c2a194058a6add514785a0b02456ae2ce45733f87d218c8b66114", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Formats/Keys/PKCS8.php": "ce522c16e75b2f929ceeed162c0f9d2211eaa3293197c983e74c105ea5420c3c", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Formats/Keys/PuTTY.php": "c1ac9e5da48b82bda3be321c9ec02c050def9eaf80545f08a89725a0c450d627", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Formats/Keys/XML.php": "9d5b122b8f30be39243fe4b6efeb542958200476842a6ff906737e8461fd51ee", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Formats/Keys/libsodium.php": "f581311513e0475ff0ca1530fceac46105f1debe249143aca238593c52e4cb32", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Formats/Signature/ASN1.php": "4aba2ae809c8a0ec001eab776e9aa39f0290319e91d9c90e84655092b810fcee", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Formats/Signature/IEEE.php": "a80052c395cc66ad94b462f0ec3aba6b7a3c29263c5cda4d38aa7de9978eae57", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Formats/Signature/Raw.php": "097ce05334f703c848fc6656beed32594a45beb1f55b9061d11e04f918798d7f", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Formats/Signature/SSH2.php": "d2690a48c8a2ea24d2417ff35eaa8ea24481ba2f41c931cb60e5fc1cf7d373b0", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Parameters.php": "36a44329fec27be044bcdbbefaa606d132cfde583d823abf70a72e9f17b3f0f6", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/PrivateKey.php": "94ddefa798fec9b0a66e425d8c30723e9c747bcae9cb4ef70363ba1b0f418dfe", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/PublicKey.php": "925d35c181dd682d27eee34e33e23603700947f9bcca50eb3e3cabc5ef6437a7", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Hash.php": "4c6e607b49465d9685b962086418347281445c4cfe07e445fde324f427888064", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/PublicKeyLoader.php": "cebe354686e80f58253b0c8e5d1529b98bf0e5a5165cdd7c6cd84be01f19290e", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/RC2.php": "e219a20aef79cbe2585da29dd6f110dc7bbffff2d1f0ce4cb75640961518e7d1", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/RC4.php": "d94c92f67181e9f95a0697e9a026d90c0158e4efc9d25cc2b28b74b5f07b7810", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php": "dcf9234a567288e28a2c9ae94dfe9f0309be8d48d67fb2591d284bf2416bb38f", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA/Formats/Keys/JWK.php": "84ed293a957836f55909bf05100087a5c8c3147e1830f2a5433cf9d2715cf410", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA/Formats/Keys/MSBLOB.php": "c5260cf2e0cce87de39e6188ba228131b0946478a8f0187fb06d657dad8043af", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA/Formats/Keys/OpenSSH.php": "31354121da901f378b345a61beaf0c7034b1613daf96531566ad5834850955fd", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA/Formats/Keys/PKCS1.php": "6f196c3c447668da50d5f337c6c089a9ec2d6b3831345223a8725be4d22c1435", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA/Formats/Keys/PKCS8.php": "a9f7794147d17f24f0278db2b7a1d66f3c2ab2e75ee45c8be09d106a467f869b", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA/Formats/Keys/PSS.php": "8471a53341642aa603bfd1faf45e649b64ba032237c6d67eafea207b62c2ea10", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA/Formats/Keys/PuTTY.php": "af48b1412302461f88d99f501c2ca7586dff713460c8d7b491f6be4b03e7758e", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA/Formats/Keys/Raw.php": "fb1ff0b6244b55bf59b80b0f5f2a2dc6fa6239f8c70d58233a97dfe045337d1f", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA/Formats/Keys/XML.php": "f01a5797e7fd733c1e6c3c1f420a89470574e6c13bc2e7147e88a30875767cee", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA/PrivateKey.php": "03f6f1cfc9e4d2c24dafb7873ebd0e3d7334401cc2eac78d2dbf8b308aad9e82", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA/PublicKey.php": "901b207b03df193bc772e68afb806bf846a18ad1dd92209262eba262cd17fe0d", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Random.php": "8ef896c67f8a3aeebe58c3709a86c323c6e5bcddaf942caeff65a7a2103942c6", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Rijndael.php": "609fa9e6e51b4de45ad159877bb60086f446c15deeb1bb24a79dc03eba5a06fa", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Salsa20.php": "b495eed427a738727dd8087e6e6e16585cc54a31df7ea212e9590f7879edb2af", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/TripleDES.php": "162f8edf1185bcf7c6d0fb12959ffa35aad2d3e41035bd320d24841132e3137f", + "vendor/phpseclib/phpseclib/phpseclib/Crypt/Twofish.php": "8dd8a69814915f930252d1ea1714b4db34a8571e6f59e5a1b7d4f74b493b3bbd", + "vendor/phpseclib/phpseclib/phpseclib/Exception/BadConfigurationException.php": "729516fe62664fcf3b0b09420f80949837be1bf72cf595b0a008940d6eb71f42", + "vendor/phpseclib/phpseclib/phpseclib/Exception/BadDecryptionException.php": "fdfdc9dac446335e935bbe21c13c6dedf531fefa603f9431cbdd5380264fd528", + "vendor/phpseclib/phpseclib/phpseclib/Exception/BadModeException.php": "5c6c7b789ce3504b433036e51701f8f95365c2ac0506105ad80f318b77b25d73", + "vendor/phpseclib/phpseclib/phpseclib/Exception/ConnectionClosedException.php": "004705647bc710bfcb7368dbc9e44849b272afed9c4b77d1b6bd64dfe23f5eba", + "vendor/phpseclib/phpseclib/phpseclib/Exception/FileNotFoundException.php": "d6a1fc03161dfe2a9350de1c0b93c8726ecef9a7c8911304a044859aa796dfb1", + "vendor/phpseclib/phpseclib/phpseclib/Exception/InconsistentSetupException.php": "576a8f0df4fe51fedd7a07691ff45c1111606720756b25c4eefc4809bf51fb01", + "vendor/phpseclib/phpseclib/phpseclib/Exception/InsufficientSetupException.php": "c183d1a6bb330fb72f4a9d3ee9333f0f9ad46c9de939117b19ae9cebda4b27ce", + "vendor/phpseclib/phpseclib/phpseclib/Exception/InvalidPacketLengthException.php": "79e6b1d631af7b1d78f7a04c91d97a82bb0fcda062280cfa8ecbe327d3a5275d", + "vendor/phpseclib/phpseclib/phpseclib/Exception/NoKeyLoadedException.php": "dd37e03e6ebe7403003414779a4412be15421ad8f6e9e6557b194e1b355f5cc9", + "vendor/phpseclib/phpseclib/phpseclib/Exception/NoSupportedAlgorithmsException.php": "4da491b657c0da4106a172226d7bfa9da8f647ba3fbed429c8a0bcceea68f524", + "vendor/phpseclib/phpseclib/phpseclib/Exception/TimeoutException.php": "cada47d9e0d020169e41b5b9a30b297668add43cc3178b7a8b233ffe04963b40", + "vendor/phpseclib/phpseclib/phpseclib/Exception/UnableToConnectException.php": "17b8ce804d837174e8a8e038d35999203ab0eac8db25df83913c903f6b399d58", + "vendor/phpseclib/phpseclib/phpseclib/Exception/UnsupportedAlgorithmException.php": "277f631842051cdd276469dae2a184516b85d1e410b9d736173a8a179a24d8f7", + "vendor/phpseclib/phpseclib/phpseclib/Exception/UnsupportedCurveException.php": "de2b767cbf30f01ba6d721f3888bad5b0b0c2acdc5b8fe3253b67dcf1e1425e4", + "vendor/phpseclib/phpseclib/phpseclib/Exception/UnsupportedFormatException.php": "eccd55f057b40c116a3e6ed1fa086574e329633ab6676748e23fb77f276b7f0b", + "vendor/phpseclib/phpseclib/phpseclib/Exception/UnsupportedOperationException.php": "6ef188582d103662f86995dd8e9b18e2d2993ceba24e237584b785e67d32d1a4", + "vendor/phpseclib/phpseclib/phpseclib/File/ANSI.php": "4223280585b6658852b5256df21ce47a5d84d3dab9eade5e259788a1bd1f3389", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1.php": "f69cc4614d9819c779383d7472fa34f27376b2627f2cad9fca515c2b6eb2d91e", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Element.php": "7d8bc5229bec57535f6e3f427d47f7efddb6d65c2de0a0f8d83f8966d9ebdd97", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/AccessDescription.php": "98a992842d009956bd337f924244060c86e84fbcdf1a98e59a4f08a1fa28c01b", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/AdministrationDomainName.php": "3d7fbdc2336ee07f9d323d0f7754c2a05dbd666926197c175eca60094992ee7a", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/AlgorithmIdentifier.php": "0572cf3c018f7c2281166fd794ef45888c1e07d6cb641d303f196ec8499ae057", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/AnotherName.php": "d2887b4fde3db274dd444aad7115d3901728b08d5f0c9adde68f550716dc3efc", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Attribute.php": "1f00fe37f28aa512350f86cae77a7fe08a156e8dda2157d9c61f4158cbd93c01", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/AttributeType.php": "6dedfe483f742a6a32502b727029d72826bcbc933143798dd67aa574020fa873", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/AttributeTypeAndValue.php": "ed9c7d9ed14f951ded3e782a5340dd7f8f4122952e2be1cb97af5c6612bec337", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/AttributeValue.php": "b536e91ced774add8512e6c114f6af1ce12259880b0a75bed03ca28718675b98", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Attributes.php": "03738a056612d04876deb6ef98775c76c060083ebc34c30ecf999a3f44b6a364", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/AuthorityInfoAccessSyntax.php": "1515c953ff77d15e37b9ca168a2d75bfc06135a8229dc0ec412a02a8e16a92d3", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/AuthorityKeyIdentifier.php": "4ca9a12255d94314870587e9ea0be559bf07f58ca640ba7906d5ddd11bd92eab", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/BaseDistance.php": "3d72ec36102a3cfd21cf6c4776435b5ea21f70ed79dc5246afe7aaa2443ba971", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/BasicConstraints.php": "dc5acc749985a58289ce8f53a190b1b6336020d9209bbdc76aa75c9b02cf3450", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/BuiltInDomainDefinedAttribute.php": "ccccc1c92ec2b60b7a6d3b9ed3f48d6d558336c130ff4e60cc1c675a4af51dd7", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/BuiltInDomainDefinedAttributes.php": "8cd73d883f2346aa92330ddd8e36868995c6725df8c07ef5a0f8e6229abb2b4a", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/BuiltInStandardAttributes.php": "c9e048575e79fbe1935954052ea00db9ba2a1ef358997f49a8318798d7075a6d", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CPSuri.php": "af8c1e6f3db615c7fb859018641dbc7b5daa9075d8f1d3df839f2bbbf3e50418", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CRLDistributionPoints.php": "91b90fe3fa30258d7d7bb86fa61bca35c0119c05dba850601026e43e8c4c3564", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CRLNumber.php": "5b8921bbc4ba9fdcdb2357d1c4d0d053203af6ed786caf0cec1fc3eaed63d68c", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CRLReason.php": "c96967be8e7e190d0846ce8176aabf280a82b8c0aa79a4d3566c95d977a0b4d6", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CertPolicyId.php": "36192710babc58663151a770acecbb2a3732d51d30d2a06e4aa2735270898941", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Certificate.php": "b267393794e3fc3c3b828648ec48f438abe7b28368e399fa18117c1b1c394bff", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CertificateIssuer.php": "7ba749c4a79d6d451fa770df5ccfbdf936f42fc8bdfb420012d7e4e1318d0e02", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CertificateList.php": "852bcf312645bf6cf3c8dc7fed283d7161a1e99e63b9b7d5be7d54367838ea4f", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CertificatePolicies.php": "e30b62e4c4eac15c209f1a30d8e946f7f60523f03387d326e34b60db571795c4", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CertificateSerialNumber.php": "bff3ad5177bb75ae7e21da941d264c6fce3a45913c4f6f427b60bf5f0d47a77e", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CertificationRequest.php": "b1d986bbcd912e8789fced1e4d830365b99c789b2724f96014adeb5f62ae6e80", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CertificationRequestInfo.php": "0ce471a8c1b9955f5be061452169f16139894ad6dd3417bf3590f1ea5de57158", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Characteristic_two.php": "34b4e0bc53ded06a18a29d35f88a59cad1ef8a87c3ee2aec18e693ae133864a4", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/CountryName.php": "565e0450e765e4a3c675d7cadfede4e90bad758ad3a4f6af37d06e0eed2ed035", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Curve.php": "92d38342eed1a5071f93e8b987013aa11e4f04c8832f75b5dd57b3000029b340", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DHParameter.php": "cec74a2872bca947d841ae6cdf8deac64605a633f553d689d5ecae47f5d38268", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DSAParams.php": "86c9f1c525250c784ea5b4d3f42fe61d0e113362fbd27026102791b69f66b0d5", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DSAPrivateKey.php": "026e2dc0f35514f7554b72335430b54c22f5bfb7696c290140955acafa72748c", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DSAPublicKey.php": "4a4047949aed76c5775a9b27c3d02d654cfbc3f67691b9b6d263005306b5109d", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DigestInfo.php": "e8309b206e3e7b2469fcfc52c3fb3946398697fc403ea09e1d879ddef75fa72d", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DirectoryString.php": "4eff97734b9349e6bcf16fe9193ff6db303f0930e41a33761ffd53ea44455ca7", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DisplayText.php": "435a2ad0fccd0c6a2333ec1ec2f49e189b2745e08bddf8a7e60aa41af644f513", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DistributionPoint.php": "4110442d92b8ebf6643168d4783f1f2730bb4d782cc76ed9bb1e9d7fd5c1d6b3", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DistributionPointName.php": "419906f904bc3ee79ae96cfcbe3b58db4adfe71755d07656c01d6c3eff3f834f", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/DssSigValue.php": "92f4e5c2c6e39ff8e330da66a3a972d5c34bc803fded51a789a602aa86a3b8ab", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/ECParameters.php": "6f548e628f3a977d2436c48e1b09000c51dfd23a7a8a8ac1e00482917c2c5572", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/ECPoint.php": "a341f986c57e538ee4243591b0f867e63163bab2debd864baa2fc46ad65c22ce", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/ECPrivateKey.php": "a6828a4195d1e4edc4a8994dcc90248201e7e1abe9120c0358d0c0f0bf3cf084", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/EDIPartyName.php": "1067a61ca70116d71487e1404ef68c59913caf2a8563745c2eb1c2f8d59ae88c", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/EcdsaSigValue.php": "eede66801a02ea8690c2e0cec6aaaad65a2a40dbcd5fd0cb946f9b818e999835", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/EncryptedData.php": "50d6e377466a6583a53594295bddedee7c9e6b6ffce21f1552ec7f81aac158b7", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/EncryptedPrivateKeyInfo.php": "d0dbc2098d49223e1e9cef71c90ee5295c0289d77ee52ba5552c1ae62c93c17c", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/ExtKeyUsageSyntax.php": "4fbd62e6dbe9331bc18088f8c1aad35b2cb3abba896650dcb45647f1a7ac24ac", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Extension.php": "fd6608b3c1c1e347f2f1c3f456aa6d449a196840f2f0e867a9eb3bdec7b31c22", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/ExtensionAttribute.php": "aa7eed5d873c10cdd5cacadfd36f1413b5c7dfa177de42f210be380d6c98095d", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/ExtensionAttributes.php": "7f87cfdf9f6e3beb8a44eedda594f780122e1889ad3dea209806b480c012362e", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Extensions.php": "7f4951e40ff1c06d9211213a7f615ab433dd2481b9756535dd8377297558e87a", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/FieldElement.php": "a61ea066b9334c7a62ff9bfd08007b102f7904dbd2035e7397f76020ec825622", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/FieldID.php": "5c91e025ff18ee8a18258784ab236ad5c0036a7541ae32d9b35599892805723d", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/GeneralName.php": "aaf6a58483a5232d48f95cac7507f4712a60b738d4249fed43ac9d9dad2f60b2", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/GeneralNames.php": "d9ec4d76a5c700a935f1eedb974aa4e31d39e353f19689950f158d9943cbc26e", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/GeneralSubtree.php": "c6bef323cff9d887575839065f996c771112257b18dd08896831d079d49c180a", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/GeneralSubtrees.php": "b360cf060cb17e7cdfcb886ed00b7c9e342b6dc25156801fa0c47cfd5f57ec65", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/HashAlgorithm.php": "42105cc1d79a64776613120a5bb1bc49d6e05f9d49df5c2d204db33c49042a53", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/HoldInstructionCode.php": "c8405c51ad033f74e4d96124c0dc4d62e07e1352a1ac9bbe3e34108c11ee48af", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/InvalidityDate.php": "a5158d812bfbfb55b65b2820c3568044a55360fde7ebde9a700ae476ed90115a", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/IssuerAltName.php": "ba96680f336221a4f0f60249db392da4be75bebfd500dbbdc8dd87fa4d8878eb", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/IssuingDistributionPoint.php": "2d06e34285af0cdea0390901b7615974cdaa2cd89ce3ec9d4504597d65523ff1", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/KeyIdentifier.php": "cf44b6e25e4e404e04041164f550c7477881d55652f6631ccc8ac71477c5981b", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/KeyPurposeId.php": "68b1d541108322a107564daba990dddf72f9221cc0650b24f53521a10f6d8e44", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/KeyUsage.php": "8e8204c068a8f1061165a2feb54bd5f07941c3e18248cdf07a2eea24b997459a", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/MaskGenAlgorithm.php": "03ce6a80473750c8dd92a7d696275b07da004c3bae9fb76121fd37a5a0c6c097", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Name.php": "b95749f42658e39996f6d13ca9c4e447447128dbaf48c679172ecdfa5626ad0f", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/NameConstraints.php": "f6ed2e0489b1b4482176069f2e4673ccc0f462eb4bbd3c32b726bbbebb7b6c63", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/NetworkAddress.php": "8902868cf5db26e6a9ffe24552f8ab3353c961665f73dd705731bd74e77df3fe", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/NoticeReference.php": "4a74612ffe3668984ffd3c0282bb0be3381a63324a1e9ad8f61a403faf96b0f9", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/NumericUserIdentifier.php": "9f3b576d43c841e9ccfb0cde754bc7a9021af301417422d281c0205abf789ddd", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/ORAddress.php": "d97db0cbeb5193763bec62d3b5a2ea678bfbe66420c341e0d791909079f4fc1d", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/OneAsymmetricKey.php": "8d2bf645b04bbde3c7dc87c38371ca5e2d51cec03d81555f620f51478fbb5e44", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/OrganizationName.php": "6f7dddb690a425a8e24be54748627d8c9be6a081b6c607a3a24cbe54236a74fd", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/OrganizationalUnitNames.php": "7c112c9fc22a0c10bd82ff96a06b163ea5c73cd292ce5a19a4b4ed8806f5523a", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/OtherPrimeInfo.php": "1eceeebe0ae00631e5d1600715a71477757369a3cb49642fdc6656a15ad9651e", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/OtherPrimeInfos.php": "05049be3a9a0183c1b71ec37fcba088ccf7378a6f8eb915e9701ab3cfdd980fb", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PBEParameter.php": "b18f3a7e90b1de3a47d425175d0000064de029893b981e47152a2aababd40a64", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PBES2params.php": "cf822618e6b04faaf211e76f4715bb24eeb46be4052d2d52a83664db88446b2e", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PBKDF2params.php": "1fb1ced3d947fd6d04c580f289fd0888d2eb5e3f74c4d2e1164431270d67ccd1", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PBMAC1params.php": "21257902b7e12d083d65397e187e7c650d9f7bf1a95c95143ebf73eff74c3cb4", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PKCS9String.php": "14b72937c1d192be7a2527e6b22790781d9e8d71a8729cdd4937f3efa14fb643", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Pentanomial.php": "134c9a38bb9b9eedfd4cc4316f30cde66dcabb24ca41b3174e72f94a65de06f3", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PersonalName.php": "83b0902bd5181b1b7c2a80acc5a10754016ad3e7b449edfaacd54f6a2b8a738b", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PolicyInformation.php": "170856123af50c5ed053bc3026e276f370de9231a995a17a92b7c2bac8b4de22", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PolicyMappings.php": "150ed86f4199101a75b4948492b7bd94330157d1b6239a00acf3c5e28b57f5b7", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PolicyQualifierId.php": "2dd6d6ca32de75e6874065acc901e0c6046dc82e9a34f9b962a857151d8fb607", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PolicyQualifierInfo.php": "d5924bb1ea961994d98783a3551e352e4a004bec90bef25b4a3a6a4492df2033", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PostalAddress.php": "bb54565902570e1c3c2fdca6a03833d5b3a140c9579b38602b95177a3fb9b7b0", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Prime_p.php": "356ec1d24e2bdb4fa14305c6e5621108bbc9e860dd906b3f6380a5dab0eb26ba", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PrivateDomainName.php": "9752ec6c827c214a13be9dc53b453d775a95c9577e92ef0dce0238ecbee6082e", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PrivateKey.php": "cf6bd38cf8e0b42aa12a96704ba6a88e596bf1ad8d40038d9e2f2590e2e659c1", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PrivateKeyInfo.php": "5bbf79c562ee447c8d03b9ccaeb7e4896c32c3534528ae02ff47c7be2d06c6a7", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PrivateKeyUsagePeriod.php": "15f19e87008d48a7f6a8370cfb2de70d44ce9fd5c7aca28b719467d77a25af88", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PublicKey.php": "4828e35744a3dfe5d5ef300053d6b1fd07982253ff995bc36ba55f4196439516", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PublicKeyAndChallenge.php": "c9be9da988134103899bf6d04ce914f750a0c48081698b250e7b2622b201e454", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/PublicKeyInfo.php": "5dd19d0e6bda097ab5d28678262821de217e407aeb9379015be8bd95681d662c", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/RC2CBCParameter.php": "775712ffbbb69fc36569a6f306cef91e32e8b368130b491849fa779ceac2ff06", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/RDNSequence.php": "e92f6c5793290d9e8bbdaa3dc5d012e3245652c63fde74d5e486974a61fcdb77", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/RSAPrivateKey.php": "bd966c6310ac7ad6adb6c77633f1a6c68af65b83885cd8c957e2e27b4d0dbf5d", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/RSAPublicKey.php": "b20a133710ae3b494084bdbea171f3f9d8155e9188027575db3aab8e2ee06bbf", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/RSASSA_PSS_params.php": "aff72739de9f4612df8bc54f2b0bd7a6df0c18351da870b6764e9d765be17693", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/ReasonFlags.php": "e007e74c17a70db556bbd0775a7927a94d81c6a604bf4fbdf5ccd93000daa05a", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/RelativeDistinguishedName.php": "bf5f9566fa9a27a15b64916f6160e33095c741f20592668f0720cce0c0983eee", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/RevokedCertificate.php": "2f88df151d6ce5e7675077754bcf07216fd5faa7339bc0a3ace528bd54a6a67d", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/SignedPublicKeyAndChallenge.php": "c9a33f11c303dc14034684e603821e5e21556cedb843e806271715bf1369e40f", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/SpecifiedECDomain.php": "8463e187cb0572f4b21ef95cfadca58b3fd906d298f78b3c9358d773311c6d94", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/SubjectAltName.php": "fa1ed38e57c8729d02f2c1c4c960b57ea711c6f523437838c265dccacc9d1203", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/SubjectDirectoryAttributes.php": "fa788987893dafe6d22606af2d2e491cfb7c2c9e1211e00052d3270559e94534", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/SubjectInfoAccessSyntax.php": "957c7c70b76474261c01f5b5e6bfe61c1da9984eec9a468d732411644c150b7a", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/SubjectPublicKeyInfo.php": "d046a9c9da54f78cb258362bcda8c95d2eff17e0fc43a1f52ad6000925940b7c", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/TBSCertList.php": "5da5686dc38e9fef5f432b9f494ea66a418ece8928841882341b8492bb7f1583", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/TBSCertificate.php": "81e166d02eaadcfce3c05d903047607726ddb1cd6c3013630ab663d02170ec01", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/TerminalIdentifier.php": "9e2080bd084e2a7f77a077c933c3dca9ffebaa7f8062d719999b59af853aff4f", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Time.php": "644cadcd588cfd208353957a57132d01cf19143363607b088a8f369309fa1c4a", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Trinomial.php": "8c9896584bf552e1082bc26d1f1c9a955fd8e09bd9a28e30eb14bd92e956a484", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/UniqueIdentifier.php": "015dc65b2cd05daea1f6253c3aaa26c650946983e8f0689456d4b1477160c60d", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/UserNotice.php": "d7d7e0238f86da1fd7b7ec228e70721f17070846ab0591be1b2fe76026acdb03", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/Validity.php": "4f5a9d1585094742fea6254edb847123badf7e0fc2a69c0234a7ac2798220946", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/netscape_ca_policy_url.php": "b77a13b5e85255572184314f431a15422aa366acdf8d8548131a1e9baed8b94a", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/netscape_cert_type.php": "4b1da37e2ee837249d0580002106720c9a85e229c67674f5fb838e8e43b69c82", + "vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Maps/netscape_comment.php": "c5546ae3837433db068289a0bb5049cfb38cef9dbc85c6da55de91826efe4597", + "vendor/phpseclib/phpseclib/phpseclib/File/X509.php": "1dc04e576eaf9d1d2f1cc0dca792ce71b36ff3d59fb795461def5a771c0b2f36", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php": "a449a3332d28e81d1cd1ed1e5b7d30803d26f83c3d1f227654fa787e700c23e2", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/BCMath.php": "fd7ab15b60cc5629f201d61d3058b6bf32d1790d96de6073ae457aec6e772321", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/BCMath/Base.php": "6bbcba50543d8cc5c936e00b636bf8c9bed92c96deb7f7e6338b97ee651dfcc6", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/BCMath/BuiltIn.php": "2549d002c14beaaf127d8ea559f7f134891d2e7207ce2bc6df963825b2ffd08c", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/BCMath/DefaultEngine.php": "685f2526ffa61b1d56e0f634c9a4bc78adf9ecefaff07f13b53a4b9bb5f63d7a", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/BCMath/OpenSSL.php": "f6a669580c6a5f352274eaa94d5ac22e10f26e65f5c513655a7441ada180cda6", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/BCMath/Reductions/Barrett.php": "ca7b4fc37d4c187640300b777a9e4eb7f123aa36e30865d71bac971f06cbf761", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/BCMath/Reductions/EvalBarrett.php": "80542a2a82bffce6dc316c0a434d75412d52fbd6234e3b54607de913500b531a", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/Engine.php": "aedffb7ff6a0d8db2717221df7b8c50ce75b56afbb1ef94fe4ef28df3ce87c3b", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/GMP.php": "a1227b2ac6ec6deaf853437e7c2063fce62e3fd4ff485213493d3b363ed7a576", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/GMP/DefaultEngine.php": "2bb314313ecb6faea11bfae4a0ec69b35c5bb813c459060e939dbde4080966c5", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/OpenSSL.php": "5f5b01018764a0011646c7e81e62dbb560f09bbdb5b1a512a6289aa1c5d6fd83", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP.php": "ff426c2ee2afd4c147e00087965c5698d4ec19e716501f733d8576fb7610739a", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/Base.php": "b8a3a755aa988cddaf177da90caf964612bc649e228d6d97811b224e67741796", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/DefaultEngine.php": "efacca0e8c8bd469da16cbe6eee4fd2715070ba3fd39097ed2c08b9c75f5cf84", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/Montgomery.php": "72f0d4f2942bd3d224a3d025efea1421d64c1a24dc47f6be56fe0f541055260f", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/OpenSSL.php": "ad26f53b691eec4986fef366c0f355bf3b5cf5c0ac2ff82a75940124426515e6", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/Reductions/Barrett.php": "b8139c1a099546b9ef838080ce468e75e92e9ec583ed450b884ec077c55c93a9", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/Reductions/Classic.php": "81e7b2b58e3ba163832144e7bb10cc8d073c580eed65270e8cbfd5e7a3de2c79", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/Reductions/EvalBarrett.php": "d3327fba23ad1f2a41134bd7085004875bfc6941ba8e4c93498d506012738681", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/Reductions/Montgomery.php": "2c2c8dc9bc2aca9bfae6b49fa6c62c327cc2a216094cdb057683b140b445a1bd", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/Reductions/MontgomeryMult.php": "5c8c50cdb528f3d4979c946a517068c060473ad70891dbba52e0618ccaadb83b", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP/Reductions/PowerOfTwo.php": "28bde5f8d79a4491a6709e16459ff3b2785be33a6c79000131333a6b06926e6d", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP32.php": "20475fdcfdd910789e0c0d256bb1ab26ff92e134111b6656d276f904f275da61", + "vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/PHP64.php": "a9a3fd02cc026be8c399c228b646a0d564c1243b728ade97a0358d7d42f6ec31", + "vendor/phpseclib/phpseclib/phpseclib/Math/BinaryField.php": "935057fee23e93d0649fd54443eeeb24649fba83dac5e0bb60164075bbc1e69d", + "vendor/phpseclib/phpseclib/phpseclib/Math/BinaryField/Integer.php": "c17d4eb2bddfc6b548fc0c517f21ec6deb8aa81e2914d98104d4dcde0c5c1341", + "vendor/phpseclib/phpseclib/phpseclib/Math/Common/FiniteField.php": "ae112fdff79f97b2c37887c389d8985ca5091ca44db40dd5ccb0c556e510f841", + "vendor/phpseclib/phpseclib/phpseclib/Math/Common/FiniteField/Integer.php": "8b3342645cfed8a2beb7b61fecd6425be6f9275db2ff447164bc87e39a2d3c6d", + "vendor/phpseclib/phpseclib/phpseclib/Math/PrimeField.php": "5b39928ec1e12399ead7d5690733c9a0c1b23add32466a009f948ddac225c98e", + "vendor/phpseclib/phpseclib/phpseclib/Math/PrimeField/Integer.php": "c5e5f74cd1449024c73a7042dfc7204766a7af1adf18f39404b48e576e7d5e62", + "vendor/phpseclib/phpseclib/phpseclib/Net/SCP.php": "506a53b1d65c51344eaa372b6d8fca796b8df802caafb83fd80b8f1bed02d5f4", + "vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php": "0c46014ef9b5756c45db295ff91a8bb5bc7e16dd40687e05f929bde198c23a3e", + "vendor/phpseclib/phpseclib/phpseclib/Net/SFTP/Stream.php": "de2e62776eabacd32e026b8c81e1fc775779d14636ac2b67d7f68c6fbbe97e49", + "vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php": "48f36d11d38ed0929665b2e7c0910edcd5b5707490394a508e28f54762ad0229", + "vendor/phpseclib/phpseclib/phpseclib/System/SSH/Agent.php": "a78d624f3f7f9fa9fc8810ee4f9fa4d48605e63efeaeceb9d9f2d717a6f46997", + "vendor/phpseclib/phpseclib/phpseclib/System/SSH/Agent/Identity.php": "20b02062f5f467cb8c7da954f3b8781a8eafedcdc9892642d1fe533921181f9e", + "vendor/phpseclib/phpseclib/phpseclib/System/SSH/Common/Traits/ReadBytes.php": "86b1da1f0485e3c0197bd45bfff548120490e535f5f8b511d087c4798dec0c96", + "vendor/phpseclib/phpseclib/phpseclib/bootstrap.php": "1675799e193c5c71d2f0215098993a228a20ef5a2a8ac0192f7dfd0f21c85060", + "vendor/phpseclib/phpseclib/phpseclib/openssl.cnf": "5fc389d338ce885bf2f174798fd97925b580cd9f2a6cfc7343652ff75f103c99", + "vendor/promphp/prometheus_client_php/LICENSE": "9368976483a5d7ca12c5078170d7a199c9edac809eb76402bbe063e4ff972425", + "vendor/promphp/prometheus_client_php/README.APCng.md": "0e778ffe71354d0ddd8cc2138ce8c1ed7dd418cef3c150cf3e16579f58a89463", + "vendor/promphp/prometheus_client_php/README.md": "8485162eff4c9db016409adf78217ca5abd01298bc23d3566cd4daff530cd1e4", + "vendor/promphp/prometheus_client_php/composer.json": "49b2936c390f9462305096bdb3eb5717fa98c2337fe4e799e81009f46965136b", + "vendor/promphp/prometheus_client_php/phpstan.neon.dist": "ddbf6b56440813cd8c535d724c60217e69de96228ff63f356bb56ef1dd8abbe1", + "vendor/promphp/prometheus_client_php/src/Prometheus/Collector.php": "a3017f60b4778d458996126fc729ca5a7c906bf53a04701058523830c8fbf5a2", + "vendor/promphp/prometheus_client_php/src/Prometheus/CollectorRegistry.php": "270b94a10037b351d639238b50cbe61a714ca867acebc02ffa9544f2f6d42ce2", + "vendor/promphp/prometheus_client_php/src/Prometheus/Counter.php": "5ff9df83c8ce928361a02927c97ee4d7c4c5b78b3b538bac301b14a2064a7fdc", + "vendor/promphp/prometheus_client_php/src/Prometheus/Exception/MetricJsonException.php": "d1b535b1cada1e600b2adbf712bd8d10e09881ab59ee17edfe361f841e7f4f5e", + "vendor/promphp/prometheus_client_php/src/Prometheus/Exception/MetricNotFoundException.php": "a6de4b811506552c96ebf0eff54b603a085b532e0a585238e25d0b2f285c87ba", + "vendor/promphp/prometheus_client_php/src/Prometheus/Exception/MetricsRegistrationException.php": "950fe8226cfbaa0098da121f433bb0834616f9a92057169fcaea425a34963456", + "vendor/promphp/prometheus_client_php/src/Prometheus/Exception/StorageException.php": "9c63f04b2b4fbfc2b67938d471098394879cada3015c92a522be579d67612ef7", + "vendor/promphp/prometheus_client_php/src/Prometheus/Gauge.php": "e9c098ec3fc56abc16e020735a8f57e43360441e803897e8273b2ab23f864e54", + "vendor/promphp/prometheus_client_php/src/Prometheus/Histogram.php": "8f06b6e0f25f09119395b9dcb7e65d0eb376f8bf6e5af34d94919ece76566dda", + "vendor/promphp/prometheus_client_php/src/Prometheus/Math.php": "8cea953ad65e62b482dd33b6cfd66a5cdd8ed599883a870120d7b575e8ce6814", + "vendor/promphp/prometheus_client_php/src/Prometheus/MetricFamilySamples.php": "e595ece37287b26cf62d15749cfde837f891f35190a27c231ba3e33aa87ac32d", + "vendor/promphp/prometheus_client_php/src/Prometheus/RegistryInterface.php": "b121b1bf0f9e4d618c6cc830d46de761eef721646119bb00b1a36162fb25d067", + "vendor/promphp/prometheus_client_php/src/Prometheus/RenderTextFormat.php": "2dd99abb6da93ba1f328e986df572d4df30cbe30008e18af2846fe8ba87a372b", + "vendor/promphp/prometheus_client_php/src/Prometheus/RendererInterface.php": "7e6a6ad5d9fc519fb2c7b5f77d7af534e510e9a437b8273f56a5c4d128686802", + "vendor/promphp/prometheus_client_php/src/Prometheus/Sample.php": "57528a34a63d408f992d31e2826d0c90ea91fbba9c5caa2e170fb6fa30a3034d", + "vendor/promphp/prometheus_client_php/src/Prometheus/Storage/APC.php": "53105df3184e4537ef8a6c94a5a0f6d87299ea1fc335be52dcc52dc5235b854e", + "vendor/promphp/prometheus_client_php/src/Prometheus/Storage/APCng.php": "ea0ce8d6c6be6cba0eba8733e5782977188cd4df085d251121adc6d27ee82bdf", + "vendor/promphp/prometheus_client_php/src/Prometheus/Storage/AbstractRedis.php": "024d6f417847ece6ac8a4ffd7e8dbadeb383a6f94460d278532bc7f1c34ce7cf", + "vendor/promphp/prometheus_client_php/src/Prometheus/Storage/Adapter.php": "2f9116349776fd6206300536641ca0e9ab7dbc59f262437fcaf48ca861c2e18f", + "vendor/promphp/prometheus_client_php/src/Prometheus/Storage/InMemory.php": "c7774005081fab4870dbecb76a1bba16f94468f18e1be820a331d10d14f4ab10", + "vendor/promphp/prometheus_client_php/src/Prometheus/Storage/PDO.php": "f9e1c28edc8aa1b78d72233a823c11e16ff44b81b8d201b57441577e425e5e63", + "vendor/promphp/prometheus_client_php/src/Prometheus/Storage/Predis.php": "003667b80332615aa8df93cf4aef7d1b7132cd7aa2e79e4c41966379dd4a66a8", + "vendor/promphp/prometheus_client_php/src/Prometheus/Storage/Redis.php": "fe56e851ce3c57213c27399a1bb758aa7fe6025a643c6646fba00df4efee65aa", + "vendor/promphp/prometheus_client_php/src/Prometheus/Storage/RedisClients/PHPRedis.php": "de50a7857635c04f7b250da1c98717a3604f6dffe6c8d2c92032c0a60fe43bcb", + "vendor/promphp/prometheus_client_php/src/Prometheus/Storage/RedisClients/Predis.php": "059ce79f66541aecfade7acce8b087813363b71f2be164b5b90641b9ee4cd6d2", + "vendor/promphp/prometheus_client_php/src/Prometheus/Storage/RedisClients/RedisClient.php": "e69d15c546c2edd29da7fdf6416445deab4e747b748a15e8973d35ff54918e4b", + "vendor/promphp/prometheus_client_php/src/Prometheus/Storage/RedisClients/RedisClientException.php": "f439272272355f9cc6920c7323ecd3bd56d1102134373c67b06a6b40aa7f7056", + "vendor/promphp/prometheus_client_php/src/Prometheus/Storage/RedisNg.php": "5ee448840625e3344d395e8abcfe55b44fc5f021b1fccf42479ae720115e4fa1", + "vendor/promphp/prometheus_client_php/src/Prometheus/Summary.php": "0ef5e1758c119332bb3f7862a3be6ef3b4b07a57cb05b9dadc68aae58d3d45af", + "vendor/psr/http-factory/LICENSE": "d2e70341a9667b93ad542e4842b0b7022d302aa7c2d2a909b156b8f1e3c4cca8", + "vendor/psr/http-factory/README.md": "d80b63e2a8c4f80af830e5307683fc73718d15e71db3c5af56e15b56b2a47d63", + "vendor/psr/http-factory/composer.json": "1dedaf2d8613201a978dbcad920bd7a332cd28c95be57c0d75be7a8d6e868362", + "vendor/psr/http-factory/src/RequestFactoryInterface.php": "95bb9e09f52d05bf09630cce49abbfdb2282d396ccc3e16e77e3a9f54cd4071f", + "vendor/psr/http-factory/src/ResponseFactoryInterface.php": "fb58f39db8e472bed4109f6392443a10785305ccc0c920d11f98208f91214e02", + "vendor/psr/http-factory/src/ServerRequestFactoryInterface.php": "8584390af1bc3c624918525e725a7cfa639366c15bb7a3c7c065d04d8a20703b", + "vendor/psr/http-factory/src/StreamFactoryInterface.php": "25fe9d048ce6718141d21c122ef9b3498be45025300717ccbe912ef5bc0083ec", + "vendor/psr/http-factory/src/UploadedFileFactoryInterface.php": "712c705ac850b43dbf47458e571c8be314d1d1f01b0e470407ed014b702d9e5b", + "vendor/psr/http-factory/src/UriFactoryInterface.php": "2600f967cd969706dcdff326d3fe602e812110352c75c6b5e9773601f2d17c7d", + "vendor/psr/http-message/CHANGELOG.md": "0e0a6a6166edde635031315c05f880d4e792f2cdd493618f5bac0b09bd9a11a7", + "vendor/psr/http-message/LICENSE": "8d36e938943b04ef01994bb148793c971685b746d0ced31da03a97594a47ee62", + "vendor/psr/http-message/README.md": "4cd6339fa85e7a903f2117b081de8446cd45229b9b761539dd8f440ccd2eb288", + "vendor/psr/http-message/composer.json": "96781ea96de30367767e298f5a340a040878144b7540ce490c9089bf7e0b9b37", + "vendor/psr/http-message/docs/PSR7-Interfaces.md": "255d8acfecf55b477403a49775c907b4a9c833237ca9a856b96d8a71b545ea30", + "vendor/psr/http-message/docs/PSR7-Usage.md": "49daf54cea1064dc256357ae684b42bac35ccb6df930a2f4cb3f05fa0226e9a6", + "vendor/psr/http-message/src/MessageInterface.php": "1ef5798924509ccea3ff3e596af4c5b6b63e121f7d0441503310b29cf837b9df", + "vendor/psr/http-message/src/RequestInterface.php": "3d7531e17a3e704d7bed9f0f2bb37ffc7f1842a2cd39f789ce7e7a4023d434f9", + "vendor/psr/http-message/src/ResponseInterface.php": "1cc32dded30a668714b17688a2be8a0053effb7fabe7655bd4459ecfbc6eeb44", + "vendor/psr/http-message/src/ServerRequestInterface.php": "43c218d6c4426c7f1d354b20736ec77be924b94e7c1b11786057de6c3f3f66e8", + "vendor/psr/http-message/src/StreamInterface.php": "0a3267552ebbcac5f0cd522dd10d96ad985595fd4f90d8566b449db2e060b385", + "vendor/psr/http-message/src/UploadedFileInterface.php": "2823ae936f8f0030879fe12a507080d4eb91c6a534f57ff38e8f37561d78916c", + "vendor/psr/http-message/src/UriInterface.php": "8d96e63fb984db31eaedd858ae60549dcf6332c939d4cc940ca97f1fe6d91d1e", + "vendor/psr/log/LICENSE": "6e944907067bae93c00a9f2ad51032243820b22df34b77c77690d46cb2e98e24", + "vendor/psr/log/README.md": "4f2bc231e87cda248b1fa2aef7a930045f3e95f89ee46ff579188d2489372954", + "vendor/psr/log/composer.json": "1f8dfc72d50f452d0795681fde72b7c008eedd4fcbca482b70a35401c9fbb661", + "vendor/psr/log/src/AbstractLogger.php": "84c69c6cc60fd805eb525daa79bd04a8d0b73e52776e1a0c2a9e666b37b4512e", + "vendor/psr/log/src/InvalidArgumentException.php": "403c6def4d4199a12cb4a54e804c7d29405968871366500f72d6f3ea401bfc64", + "vendor/psr/log/src/LogLevel.php": "9f2520b22945ce1599c4fedba0a4c75985f172ca86cdf386766ebb8b2363768c", + "vendor/psr/log/src/LoggerAwareInterface.php": "076efac38ab493f4fc3e701cce9a2641135048f2bf0407b322c45712ef73813c", + "vendor/psr/log/src/LoggerAwareTrait.php": "eb114e265de2d1c8c1190b0fa9cb5f8a25e262a46d1d28d1aa02f01aaf025c64", + "vendor/psr/log/src/LoggerInterface.php": "05aecbaded98967719d76a058ea27465ffae03b7800dc36049e1ed23c825e6b3", + "vendor/psr/log/src/LoggerTrait.php": "c854406af9c4706980e93183b5f37fa9cca523df9bb1019a927f8e4713834172", + "vendor/psr/log/src/NullLogger.php": "22fbb348f7b25259ca801f595fc9aa22b9f035a44e7899687bd89bf4070d78c8", + "vendor/revolt/event-loop/LICENSE": "54e35a998b20dce201850275dd1c66c1685489972ecee9410600b8186e630853", + "vendor/revolt/event-loop/SECURITY.md": "7d80e69dd4c54f02ac0c41784fe222398e3552f179c29b3cc811e2b79d1257b0", + "vendor/revolt/event-loop/composer.json": "f8635bd03d8930f007ebf5f0d681975dfa7f21badc8be19a12730b5c7233d7c6", + "vendor/revolt/event-loop/src/EventLoop.php": "aa7b8c8d5bc79d35ec4d3931fef54bd7e323cc188d54ba871f189b363a51307c", + "vendor/revolt/event-loop/src/EventLoop/CallbackType.php": "673db71f9aceb0fc9a767c703677cc3269b99f64fc31fafde615ae6c76064683", + "vendor/revolt/event-loop/src/EventLoop/Driver.php": "6b3b25cfc83d888794684e393011c4ab6c2450c5b9b0af6e0637b28b086dff0a", + "vendor/revolt/event-loop/src/EventLoop/Driver/EvDriver.php": "688d3a6b013e75a36aac6c9ea679d077d20878c85f227182ada85a9d9def6593", + "vendor/revolt/event-loop/src/EventLoop/Driver/EventDriver.php": "0cd4013a85ad62eebbfaab757e106d1dd9fb0adebc5982088f6a8c9f5cb133d5", + "vendor/revolt/event-loop/src/EventLoop/Driver/StreamSelectDriver.php": "880231f3bb9f4bc0a637bdc9b2a7ed31ecba8c6345ed25bbc26a1156dcda8883", + "vendor/revolt/event-loop/src/EventLoop/Driver/TracingDriver.php": "91187da90826995e7787e66f9735fc77bf9fd4287c90d6ddb71ee8bf2967eab8", + "vendor/revolt/event-loop/src/EventLoop/Driver/UvDriver.php": "2d49671eaf3a6e6a68b99f8e57d0ea0c77ecac4373cbc405bf0de02bc842bdd4", + "vendor/revolt/event-loop/src/EventLoop/DriverFactory.php": "196c22dd3646b41bd2f049038384b2ff512fa891c5b495e6d81844ba1580f533", + "vendor/revolt/event-loop/src/EventLoop/FiberLocal.php": "301cb2fd41f21349b368a7d3fc09cb0dd6e13936fde5959bbd62455505eac01d", + "vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php": "fb4b4ab70490c0bc4716421d3dfeb96ba3a227c4b1f142fe7e7cce0440fd2667", + "vendor/revolt/event-loop/src/EventLoop/Internal/ClosureHelper.php": "4de60aec5ca61c9727326fabfd7d3144fbe5c688dcf6de9f9c9ceec0c7289652", + "vendor/revolt/event-loop/src/EventLoop/Internal/DeferCallback.php": "a0a886eabfb82011914ea66f428de467eeab3c8c44633affd7d08382a0c10c7f", + "vendor/revolt/event-loop/src/EventLoop/Internal/DriverCallback.php": "8f9684dc3de3da4a4d7fa4d95e349ba39d793ade3a02168e068b75d7e63b05d0", + "vendor/revolt/event-loop/src/EventLoop/Internal/DriverSuspension.php": "91ffcfca18246b4e8c85b8dff0d099c3cc8ec353ae5acbd704ff5564731a575e", + "vendor/revolt/event-loop/src/EventLoop/Internal/SignalCallback.php": "df71d46d74386dfe2e45c1193be7ed4ff58e6efa817d61ef63aee6f43c36fcff", + "vendor/revolt/event-loop/src/EventLoop/Internal/StreamCallback.php": "66f6bec931f9d28634a35bdca3dc4851fffbf2ac8a5314659105aa7d5719b343", + "vendor/revolt/event-loop/src/EventLoop/Internal/StreamReadableCallback.php": "b96ec21fe9f22a65f991a9ca3da5cf3e923df3a53173a521eb4530bcea3fd3ea", + "vendor/revolt/event-loop/src/EventLoop/Internal/StreamWritableCallback.php": "50f63a166826b0abda1c253efe6596951361e2f6239010ec38b589ce1610c3d9", + "vendor/revolt/event-loop/src/EventLoop/Internal/TimerCallback.php": "5e1b1a8b171df54062005932b36785247767ab9cf28cfa721303ba739915477f", + "vendor/revolt/event-loop/src/EventLoop/Internal/TimerQueue.php": "43ae3c33373100d7f95698605ebb2ff1e6951d2bd212983bd782ca7c12582d35", + "vendor/revolt/event-loop/src/EventLoop/InvalidCallbackError.php": "d5427bf27ff4983aeb15a85d35ab7fbe19739d47cee1f4ffafe0d53f98aaffe1", + "vendor/revolt/event-loop/src/EventLoop/Suspension.php": "4a9f600da1e3eca91d195cae535196119d188955cd8c93e7d1fdf834fdeff1ad", + "vendor/revolt/event-loop/src/EventLoop/UncaughtThrowable.php": "437d5231cd2e73c0501eea696008a2458b8ac704fd97b385164dbbc8e1871eff", + "vendor/revolt/event-loop/src/EventLoop/UnsupportedFeatureException.php": "a1c60be19aba7e46dc04fd0e541939d3f467e35e4460499401bf087705c6b639", + "vendor/symfony/polyfill-mbstring/LICENSE": "eaa5d6e59ff1d5322ae36d3ab9124460df72d2d0c8af60a99222e8a90dcbdf31", + "vendor/symfony/polyfill-mbstring/Mbstring.php": "33e1210305586da1de675ae40b5f2b54e8ee4e7c66ef5871f9a9f02ef893e136", + "vendor/symfony/polyfill-mbstring/README.md": "7686ab9250b91f0b706d6a5aac4e6bbf4b8865ec323bbb420343f19e98d91d14", + "vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php": "99cea898c03847d05e1c143cf64183c57749b93f578f5bfcd856f89d700b9b85", + "vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php": "df2b1879ae0f74d86996a4790de37b534c1b406002930550bc087885ae54f0ea", + "vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php": "4eef657adbee39f7badd695b1d60b152b047385966a98b6d8d411554573ec596", + "vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php": "4ae4778ee941291582b801bcddeaac401068e0e5dde7357ef06f9e882131b026", + "vendor/symfony/polyfill-mbstring/bootstrap.php": "0449da72338523c51270ddfe84447cd16fc110b7d4fae2bee1c2790d9f113fb0", + "vendor/symfony/polyfill-mbstring/bootstrap72.php": "8a45e926381803b688b3961032805f5ae317e953af1a980e0e0f63db5e3babfd", + "vendor/symfony/polyfill-mbstring/bootstrap80.php": "e998cba06760c8e191f47c70b7017164e7434ab93eaabbb8bdfe94943c450c6b", + "vendor/symfony/polyfill-mbstring/composer.json": "8ccd5687a056c76aa1c488e520302b441e31be3ef16482c2e35778b035fb1c09", + "vendor/symfony/polyfill-php83/LICENSE": "6439cc1bba78b7de0c1905b0643679a5a7768ba020a090370d7742030303c6b2", + "vendor/symfony/polyfill-php83/Php83.php": "18aac07ebd7fd272d0488f80b489ab1b6e2dee1b75b430ea2acc28c4f72b52af", + "vendor/symfony/polyfill-php83/README.md": "f650c27b908d922ae5a7637f1d1c06eed534eef9edd2af14b669dc1c125f28c8", + "vendor/symfony/polyfill-php83/Resources/stubs/DateError.php": "72e1fffeddc492f3726fadb4bf338dea6d9d18f5f7cb64c16b292bbc14d53778", + "vendor/symfony/polyfill-php83/Resources/stubs/DateException.php": "4229e2f87de442cab70d186931ad88cd68b9027a385834aadc81bae88524a319", + "vendor/symfony/polyfill-php83/Resources/stubs/DateInvalidOperationException.php": "96ef44367f42f7feb3488d29e2ac1f3382647c04a2084d1451ad18043c6b5add", + "vendor/symfony/polyfill-php83/Resources/stubs/DateInvalidTimeZoneException.php": "519c9a52e7d657aa25e76944a408577a0ff615b88318dfde16479139c515d109", + "vendor/symfony/polyfill-php83/Resources/stubs/DateMalformedIntervalStringException.php": "3f669907751c517d477c290e872a5ef0f4148cf76493137afe13a3af1c2486a2", + "vendor/symfony/polyfill-php83/Resources/stubs/DateMalformedPeriodStringException.php": "8af794f98ff2ab1577ce94c4300e7b314237eb2ad0b09d49b7f71bb82d5d5cb7", + "vendor/symfony/polyfill-php83/Resources/stubs/DateMalformedStringException.php": "a4bac703b6b7ceed48bb8b082dddd061111420eab527eb45ca9e5908b2a94e86", + "vendor/symfony/polyfill-php83/Resources/stubs/DateObjectError.php": "4f7578373b5f56a25628da4d80c58fe923ba5195f8e8d4e407a58d3613e39540", + "vendor/symfony/polyfill-php83/Resources/stubs/DateRangeError.php": "1728ade479eca502b4169314895d7423b892810ef51518b9acccc41498a807c2", + "vendor/symfony/polyfill-php83/Resources/stubs/Override.php": "57d1627659933c6d4d44c4ddfc8d7e07d2452645a414e387221d5572af9e6f05", + "vendor/symfony/polyfill-php83/Resources/stubs/SQLite3Exception.php": "b0054f6ff0ce2eab047cd5c4cfe0784f94c748e878573b8b3818283650f2137a", + "vendor/symfony/polyfill-php83/bootstrap.php": "c1a38e6aeea87046fb4d04d5e5aeea5d4287faa995b1701fc76a1f7694af5476", + "vendor/symfony/polyfill-php83/bootstrap72.php": "23e8a4f5857612665b0a40ca8a8c4b414aa8f537525f20e248091a69ce5a7d36", + "vendor/symfony/polyfill-php83/bootstrap81.php": "8f7a103ff036ce07984a6b8112a25efbe1b8504244421ab710f0436b6d95e88b", + "vendor/symfony/polyfill-php83/composer.json": "06fa868d6ffe7965e5aacec69da00cf458dfa7e0fe7667c4123db0d4b669771d", + "vendor/webmozart/assert/.php-cs-fixer.php": "b570c3543f7759e31892100ac09c69ec7fbda5efc62665a35a0fe9850d0c199e", + "vendor/webmozart/assert/CHANGELOG.md": "a7cc82862e2f51c822d7747a19cf4d70ccc0220ca42f4012fc85c9249ae2c7ce", + "vendor/webmozart/assert/LICENSE": "5f82f5e664e8683e3d97d3bec6f74620b9d0a4d8669f9e617da96bce8767d4d3", + "vendor/webmozart/assert/README.md": "16ce8ca2c110e8114276903d83c06c26ff4a9347dd36179e849b7d8eb4d31fa3", + "vendor/webmozart/assert/composer.json": "503018d47d9762460313ed2b07c72957639a170fd548ca0aa3d83ee05c0f71b0", + "vendor/webmozart/assert/src/Assert.php": "029b87bb41f7170ba6cb347a837bc93507786a2dad2e50961290a500f1fc8672", + "vendor/webmozart/assert/src/InvalidArgumentException.php": "f30118497c3b37f29325c75c385a1179012e1190dacc1c3059c701324d39b776", + "vendor/webmozart/assert/src/Mixin.php": "864395b680a20acf09b22b23bba207f71dc34350846830926f504a61d6caacc7", + "vendor/wizardloop/broadcastmanager/.gitattributes": "5feaddc458a55c10ef1011563b3914a7d75e1419e5d0a2757908dd6646f1d226", + "vendor/wizardloop/broadcastmanager/.github/CODE_OF_CONDUCT.md": "86b68818ee5d142a2b5c629a878404bee4ee2c572e5afe04322b01f60ee7ea17", + "vendor/wizardloop/broadcastmanager/.github/CONTRIBUTING.md": "351a6ad345d958f3640791b6c51ffd538786fdb3dd03742262857405c1134f97", + "vendor/wizardloop/broadcastmanager/.github/FUNDING.yml": "6a45402eb151c98c5284cf73b3c5f32b5428f16395c6bcf899326d399105f7bb", + "vendor/wizardloop/broadcastmanager/.github/ISSUE_TEMPLATE/bug_report.yml": "a746aee9e7797b2679719d52dd4066a44e839ca561661a16023493adfefbfa89", + "vendor/wizardloop/broadcastmanager/.github/ISSUE_TEMPLATE/feature_request.yml": "4eaaa962535c9d66f6ebf6c71943806ba6ff5c8264d72fb4805953244fc1434e", + "vendor/wizardloop/broadcastmanager/.github/ISSUE_TEMPLATE/improvement_question.yml": "71e0d18a5fbcdb109285e2049b2ef51e9ef3b10137db8971f66611c63c2c446d", + "vendor/wizardloop/broadcastmanager/.github/PULL_REQUEST_TEMPLATE.md": "baa95b98f0f2ad88f4a0411b455d1a86a09e4f92a09c565b14f6224ba8faa229", + "vendor/wizardloop/broadcastmanager/.github/SECURITY.md": "7b5a080bc870abe165b3dfbb30121b7e99381fb4244ef83f93b6b57c9c4a372a", + "vendor/wizardloop/broadcastmanager/.github/workflows/ci.yml": "9cef63528e37b40c3b5672d65d6d4f7c56b1776880b80f5c143ebf26a51e39d7", + "vendor/wizardloop/broadcastmanager/.gitignore": "6dfebda4de50e6f0d998ad3908b99f91e9796994ec816e3e9894d9880b182d29", + "vendor/wizardloop/broadcastmanager/.php-cs-fixer.dist.php": "484d7cf46d97dbdcaad2cbf6a2e5eecbae1a0f3da84800dbf4d74b938dbae71f", + "vendor/wizardloop/broadcastmanager/LICENSE": "8486a10c4393cee1c25392769ddd3b2d6c242d6ec7928e1414efff7dfb2f07ef", + "vendor/wizardloop/broadcastmanager/composer.json": "ec47a662a9e4dcb5540e7438a65e06e0e4fe1b033c784576e01fc3229c7f43c6", + "vendor/wizardloop/broadcastmanager/phpstan.neon": "8c45c4b2147f9a6e4c54cf7ab547a4e92ed5f0f64fa964155329fa4bcd860189", + "vendor/wizardloop/broadcastmanager/src/BroadcastManager.php": "d665b24009aabfb5b09e00edad1271f1501bf0ef797d5a2593129da91c8cc435" + }, + "preferred_source": { + "additional-source/amphp-windows-process-wrapper/.gitattributes": "resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/.gitattributes.source", + "additional-source/amphp-windows-process-wrapper/.gitignore": "resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/.gitignore", + "additional-source/amphp-windows-process-wrapper/LICENSE": "resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/LICENSE", + "additional-source/amphp-windows-process-wrapper/ProcessWrapper.sln": "resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.sln", + "additional-source/amphp-windows-process-wrapper/ProcessWrapper.sln.DotSettings": "resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.sln.DotSettings", + "additional-source/amphp-windows-process-wrapper/ProcessWrapper.vcxproj": "resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.vcxproj", + "additional-source/amphp-windows-process-wrapper/ProcessWrapper.vcxproj.filters": "resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/ProcessWrapper.vcxproj.filters", + "additional-source/amphp-windows-process-wrapper/README.md": "resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/README.md", + "additional-source/amphp-windows-process-wrapper/resources/.gitattributes": "resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/resources/.gitattributes.source", + "additional-source/amphp-windows-process-wrapper/resources/Icon_amphp.ico": "resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/resources/Icon_amphp.ico", + "additional-source/amphp-windows-process-wrapper/resources/ProcessWrapper.rc": "resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/resources/ProcessWrapper.rc", + "additional-source/amphp-windows-process-wrapper/resources/resource.h": "resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/resources/resource.h", + "additional-source/amphp-windows-process-wrapper/src/Args.c": "resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Args.c", + "additional-source/amphp-windows-process-wrapper/src/Args.h": "resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Args.h", + "additional-source/amphp-windows-process-wrapper/src/Encoding.h": "resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Encoding.h", + "additional-source/amphp-windows-process-wrapper/src/Errors.c": "resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Errors.c", + "additional-source/amphp-windows-process-wrapper/src/Errors.h": "resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/Errors.h", + "additional-source/amphp-windows-process-wrapper/src/ProcessWrapper.c": "resources/release/preferred-source/additional-source/amphp-windows-process-wrapper/src/ProcessWrapper.c", + "additional-source/madelineproto-build-inputs/.gitattributes": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/.gitattributes.source", + "additional-source/madelineproto-build-inputs/LICENSE": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/LICENSE", + "additional-source/madelineproto-build-inputs/README.md": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/README.md", + "additional-source/madelineproto-build-inputs/composer.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/composer.json", + "additional-source/madelineproto-build-inputs/docs/template/disallow.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/docs/template/disallow.json", + "additional-source/madelineproto-build-inputs/extracted.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/extracted.json", + "additional-source/madelineproto-build-inputs/langs/ckb.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/ckb.json", + "additional-source/madelineproto-build-inputs/langs/de.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/de.json", + "additional-source/madelineproto-build-inputs/langs/en.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/en.json", + "additional-source/madelineproto-build-inputs/langs/fa.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/fa.json", + "additional-source/madelineproto-build-inputs/langs/fr.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/fr.json", + "additional-source/madelineproto-build-inputs/langs/he.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/he.json", + "additional-source/madelineproto-build-inputs/langs/it.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/it.json", + "additional-source/madelineproto-build-inputs/langs/pl.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/pl.json", + "additional-source/madelineproto-build-inputs/langs/pt.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/pt.json", + "additional-source/madelineproto-build-inputs/langs/ru.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/ru.json", + "additional-source/madelineproto-build-inputs/langs/uz.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/uz.json", + "additional-source/madelineproto-build-inputs/langs/zh_Hans.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/langs/zh_Hans.json", + "additional-source/madelineproto-build-inputs/schemas/README.md": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/README.md", + "additional-source/madelineproto-build-inputs/schemas/TL_mtproto_v1.tl": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_mtproto_v1.tl", + "additional-source/madelineproto-build-inputs/schemas/TL_secret.tl": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_secret.tl", + "additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225.json", + "additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225.tl": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225.tl", + "additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map.dat": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map.dat", + "additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map.json", + "additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map_schema.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map_schema.json", + "additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map_schema.tl": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/TL_telegram_v225_file_ref_map_schema.tl", + "additional-source/madelineproto-build-inputs/schemas/list.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/list.json", + "additional-source/madelineproto-build-inputs/schemas/list_file_ref_map.json": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/schemas/list_file_ref_map.json", + "additional-source/madelineproto-build-inputs/tools/AnnotationsBuilder.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/AnnotationsBuilder.php", + "additional-source/madelineproto-build-inputs/tools/DocsBuilder.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/DocsBuilder.php", + "additional-source/madelineproto-build-inputs/tools/DocsBuilder/Constructors.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/DocsBuilder/Constructors.php", + "additional-source/madelineproto-build-inputs/tools/DocsBuilder/Methods.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/DocsBuilder/Methods.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/ActionOp.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/ActionOp.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/BuildMode.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/BuildMode.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/BuildMode/Ast.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/BuildMode/Ast.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/FieldTransformationOp.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/FieldTransformationOp.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/FileRefGenerator.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/FileRefGenerator.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/LiteralOp.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/LiteralOp.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ArrayOp.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ArrayOp.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CallOp.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CallOp.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ConstructorOp.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ConstructorOp.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CopyMethodCallOp.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CopyMethodCallOp.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CopyOp.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/CopyOp.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputChannelOp.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputChannelOp.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputPeerOp.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputPeerOp.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputStickerSet.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputStickerSet.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputUserOp.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetInputUserOp.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetMessageOp.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/GetMessageOp.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/Noop.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/Noop.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/PrimitiveLiteralOp.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/PrimitiveLiteralOp.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ThemeFormatOp.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Ops/ThemeFormatOp.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Path.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/Path.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TLContext.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TLContext.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TLWrapper.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TLWrapper.php", + "additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TypedOp.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/FileRefExtractor/TypedOp.php", + "additional-source/madelineproto-build-inputs/tools/TL/Builder.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/TL/Builder.php", + "additional-source/madelineproto-build-inputs/tools/TL/SecretBuilder.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/TL/SecretBuilder.php", + "additional-source/madelineproto-build-inputs/tools/build_docs.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_docs.php", + "additional-source/madelineproto-build-inputs/tools/build_docs/layerUpgrade.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_docs/layerUpgrade.php", + "additional-source/madelineproto-build-inputs/tools/build_docs/merge.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_docs/merge.php", + "additional-source/madelineproto-build-inputs/tools/build_docs/schemas.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_docs/schemas.php", + "additional-source/madelineproto-build-inputs/tools/build_tl.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/build_tl.php", + "additional-source/madelineproto-build-inputs/tools/fix_docs.sh": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/fix_docs.sh", + "additional-source/madelineproto-build-inputs/tools/fuzzer.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/fuzzer.php", + "additional-source/madelineproto-build-inputs/tools/genDataset.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/genDataset.php", + "additional-source/madelineproto-build-inputs/tools/gen_filerefmap.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/gen_filerefmap.php", + "additional-source/madelineproto-build-inputs/tools/layerdiff.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/layerdiff.php", + "additional-source/madelineproto-build-inputs/tools/makephar.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/makephar.php", + "additional-source/madelineproto-build-inputs/tools/phar.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/phar.php", + "additional-source/madelineproto-build-inputs/tools/phpdoc.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/phpdoc.php", + "additional-source/madelineproto-build-inputs/tools/static.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/static.php", + "additional-source/madelineproto-build-inputs/tools/std.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/std.php", + "additional-source/madelineproto-build-inputs/tools/translator.php": "resources/release/preferred-source/additional-source/madelineproto-build-inputs/tools/translator.php" + }, + "additional_source": { + "component": "amphp/windows-process-wrapper", + "tag": "v1.2.0", + "commit": "8d5aca0c56b73cba460894d79ee83ec558b41027", + "source": "https://github.com/amphp/windows-process-wrapper/tree/8d5aca0c56b73cba460894d79ee83ec558b41027", + "license": "MIT", + "evidence": "Official amphp/process update commit 6810aacc5d7049d9db87e8161e2ef0e66caa1472 identifies v1.2.0; executable Git blobs match the locked package. No reproducible binary rebuild was performed.", + "file_count": 18 + }, + "madeline_generation_source": { + "component": "danog/MadelineProto build inputs", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "upstream_provenance": { + "package": "danog/madelineproto", + "version": "8.7.0", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "purpose": "Preferred source and build inputs excluded from Composer dist; supplement runtime vendor tree without changing it.", + "source_files": [ + { + "path": ".gitattributes", + "upstream_path": ".gitattributes", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "700a7ff8ffa52877fb452e1b67be99c3af549f17", + "bytes": 177, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/.gitattributes", + "sha256": "3bb98dfe72b07470c126ea3bf718cd1971c91d06f06c142c1a3f61576e8dc527", + "status": "pass" + }, + { + "path": "composer.json", + "upstream_path": "composer.json", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "799799bca8602fd668d4aa425157bb66e4d6be64", + "bytes": 5055, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/composer.json", + "sha256": "18de335fb004ecfea1334bdf98d53dc2dc5045d6202723d19cfb3004b7293073", + "status": "pass" + }, + { + "path": "docs/template/disallow.json", + "upstream_path": "template/disallow.json", + "repository": "danog/MadelineProtoDocs", + "reference": "5280ae3d71a5b01878a5d04ed9494c3579f8d71b", + "git_blob": "6f7ab35a450912fce49a56cf0cd48b6cef63d1c2", + "bytes": 6342, + "url": "https://raw.githubusercontent.com/danog/MadelineProtoDocs/5280ae3d71a5b01878a5d04ed9494c3579f8d71b/template/disallow.json", + "sha256": "8aab568b61b51b83619933be278db5b0c51218b16d0b991193173160ef752dd6", + "status": "pass" + }, + { + "path": "extracted.json", + "upstream_path": "extracted.json", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "885e2db4d11f9c55dd5221187a97e688cb565616", + "bytes": 1216113, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/extracted.json", + "sha256": "2b0b8ef62b64a70035a8d5d4c4b4bee60a22fa861d5b61e0b233f9f117c88534", + "status": "pass" + }, + { + "path": "langs/ckb.json", + "upstream_path": "langs/ckb.json", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "ecfa03613425175fd034145e8983768a06b7dd66", + "bytes": 11450, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/langs/ckb.json", + "sha256": "1828a99998116c24849c5a6672a5d00e8ea346cfb008ab50482dd0f1963d05dd", + "status": "pass" + }, + { + "path": "langs/de.json", + "upstream_path": "langs/de.json", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "0967ef424bce6791893e9a57bb952f80fd536e93", + "bytes": 3, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/langs/de.json", + "sha256": "ca3d163bab055381827226140568f3bef7eaac187cebd76878e0b63e9e442356", + "status": "pass" + }, + { + "path": "langs/en.json", + "upstream_path": "langs/en.json", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "1a524af04c434c1f5f3b3a8ac34cb958934e1881", + "bytes": 14499, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/langs/en.json", + "sha256": "33e7b63f83a7a79fe0aa7ac73d608894b2337920de3823a4d2588f30fca07484", + "status": "pass" + }, + { + "path": "langs/fa.json", + "upstream_path": "langs/fa.json", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "ae67208d349cf6a2d54887d188a1f91cbb830b80", + "bytes": 21316, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/langs/fa.json", + "sha256": "636744c11f1b86a49a16f6c3c2f5f09dbcec9a5789dc5466240579155294f97e", + "status": "pass" + }, + { + "path": "langs/fr.json", + "upstream_path": "langs/fr.json", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "c49e3c200589e60af9d92c387245468066726fae", + "bytes": 3919, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/langs/fr.json", + "sha256": "d5beb79e1abd2a64f82c18965321cfe56c063c1bed4a92ebab393d9ceabdc30e", + "status": "pass" + }, + { + "path": "langs/he.json", + "upstream_path": "langs/he.json", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "f10635a76beaaa86625af5d29ca48c31b9773b75", + "bytes": 17972, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/langs/he.json", + "sha256": "b517525a26aec12a83c21d1df347cac40eaeda25c0007ca72e92139d152a12ab", + "status": "pass" + }, + { + "path": "langs/it.json", + "upstream_path": "langs/it.json", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "8da2889b4e1d370e6ac261ed60c92bc988e48ac7", + "bytes": 16312, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/langs/it.json", + "sha256": "fa6d8fbbb95757b79142654e519209b9bb6b18ac9dfdd36970f2f999f701b4dc", + "status": "pass" + }, + { + "path": "langs/pl.json", + "upstream_path": "langs/pl.json", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "aafea4b3818e9da8f7c0dcc5a20c3c3005d57a4d", + "bytes": 337, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/langs/pl.json", + "sha256": "613511a5d23d972281b0ddff9dfc781c6e971dd712e54f26f35baeed64f28210", + "status": "pass" + }, + { + "path": "langs/pt.json", + "upstream_path": "langs/pt.json", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "58b8bff943c087af2b0fffb6c981765505cc13b6", + "bytes": 10328, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/langs/pt.json", + "sha256": "8ec4534299dca265b4213fecec8aa32dd4d6a2b565a6b56e50b147c1e1cb3031", + "status": "pass" + }, + { + "path": "langs/ru.json", + "upstream_path": "langs/ru.json", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "9170a902d102d109f62dab410a7cb7de2cabdc1f", + "bytes": 13163, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/langs/ru.json", + "sha256": "805799a38b240f788fab8ad843a2f15038fb5d20ee48a339b2dfebe130ed706d", + "status": "pass" + }, + { + "path": "langs/uz.json", + "upstream_path": "langs/uz.json", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "422150aef3738aefc05d0b540079e9fa08c764f5", + "bytes": 16320, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/langs/uz.json", + "sha256": "f5c28b62e48835f02cab5646123cdf1441310c9bc1861bb0ce184f12d67f6121", + "status": "pass" + }, + { + "path": "langs/zh_Hans.json", + "upstream_path": "langs/zh_Hans.json", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "1781bdb2480f590967becd485e1619d33009c307", + "bytes": 13731, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/langs/zh_Hans.json", + "sha256": "b09ace620ac7e817e510f0238740b97fb9e41755c6ff0cb86798e2b55a7495af", + "status": "pass" + }, + { + "path": "LICENSE", + "upstream_path": "LICENSE", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "dba13ed2ddf783ee8118c6a581dbf75305f816a3", + "bytes": 34520, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/LICENSE", + "sha256": "57c8ff33c9c0cfc3ef00e650a1cc910d7ee479a8bc509f6c9209a7c2a11399d6", + "status": "pass" + }, + { + "path": "README.md", + "upstream_path": "README.md", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "a2f818f8cb4b33015b3ea345e805463081359bd0", + "bytes": 247365, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/README.md", + "sha256": "d29b413ca8fab2fd2bd7e3758b5d1f054fe01e470b260eceb76717ad6a028d31", + "status": "pass" + }, + { + "path": "schemas/list_file_ref_map.json", + "upstream_path": "list_file_ref_map.json", + "repository": "danog/schemas", + "reference": "0549d9e911338a01673b656f41eeea8cac51d5e2", + "git_blob": "8fdb225a760f8e7de735f79024838ed34f69bb32", + "bytes": 49, + "url": "https://raw.githubusercontent.com/danog/schemas/0549d9e911338a01673b656f41eeea8cac51d5e2/list_file_ref_map.json", + "sha256": "74c5c901f045e8e7cbbf199752a5ddf1e4de46c93a57a745697dc74db433edfe", + "status": "pass" + }, + { + "path": "schemas/list.json", + "upstream_path": "list.json", + "repository": "danog/schemas", + "reference": "0549d9e911338a01673b656f41eeea8cac51d5e2", + "git_blob": "0a7724ae2df94636f324aaee7a81bffedb3d7326", + "bytes": 484, + "url": "https://raw.githubusercontent.com/danog/schemas/0549d9e911338a01673b656f41eeea8cac51d5e2/list.json", + "sha256": "c7d92f848ad03729daf10d2ff25b9ec49f17c9562b754919f6ca8cfb93801827", + "status": "pass" + }, + { + "path": "schemas/README.md", + "upstream_path": "README.md", + "repository": "danog/schemas", + "reference": "0549d9e911338a01673b656f41eeea8cac51d5e2", + "git_blob": "c796923b979a170a4cb148a80faf72b8ee5fc132", + "bytes": 135, + "url": "https://raw.githubusercontent.com/danog/schemas/0549d9e911338a01673b656f41eeea8cac51d5e2/README.md", + "sha256": "df080ca2974e01930ef5232f2373f326477a4bd51713f8046df0d6ac2c5ea1fa", + "status": "pass" + }, + { + "path": "schemas/TL_mtproto_v1.tl", + "upstream_path": "TL_mtproto_v1.tl", + "repository": "danog/schemas", + "reference": "0549d9e911338a01673b656f41eeea8cac51d5e2", + "git_blob": "291c24089ff6b140b43243822f95e26f673b3c3f", + "bytes": 4196, + "url": "https://raw.githubusercontent.com/danog/schemas/0549d9e911338a01673b656f41eeea8cac51d5e2/TL_mtproto_v1.tl", + "sha256": "a68bbcfb6aea699cb394aec44008b01b915f1e8b632a1d786001ddd7c7300dcd", + "status": "pass" + }, + { + "path": "schemas/TL_secret.tl", + "upstream_path": "TL_secret.tl", + "repository": "danog/schemas", + "reference": "0549d9e911338a01673b656f41eeea8cac51d5e2", + "git_blob": "364fc117ec23d055fa5da3ba5206403826119902", + "bytes": 7883, + "url": "https://raw.githubusercontent.com/danog/schemas/0549d9e911338a01673b656f41eeea8cac51d5e2/TL_secret.tl", + "sha256": "899beb4c1713a65c9f09677dd93406a1e96c52b661d46dcd30ac7c0a87b0d20c", + "status": "pass" + }, + { + "path": "schemas/TL_telegram_v225_file_ref_map_schema.json", + "upstream_path": "TL_telegram_v225_file_ref_map_schema.json", + "repository": "danog/schemas", + "reference": "0549d9e911338a01673b656f41eeea8cac51d5e2", + "git_blob": "7b700b58b3e75cce6e9df72105e19d60a1b3160e", + "bytes": 19184, + "url": "https://raw.githubusercontent.com/danog/schemas/0549d9e911338a01673b656f41eeea8cac51d5e2/TL_telegram_v225_file_ref_map_schema.json", + "sha256": "118fa46b8a12dff8e4ac1545d99f39a0c261a1cd0d375ad52adb27a70072bece", + "status": "pass" + }, + { + "path": "schemas/TL_telegram_v225_file_ref_map_schema.tl", + "upstream_path": "TL_telegram_v225_file_ref_map_schema.tl", + "repository": "danog/schemas", + "reference": "0549d9e911338a01673b656f41eeea8cac51d5e2", + "git_blob": "9da973147bdc16965625c9a65e366651431e39d5", + "bytes": 4257, + "url": "https://raw.githubusercontent.com/danog/schemas/0549d9e911338a01673b656f41eeea8cac51d5e2/TL_telegram_v225_file_ref_map_schema.tl", + "sha256": "1bb333123d34d3598b50cd5fca7445c9e0347bdfc78955dc71cf543262ac4dce", + "status": "pass" + }, + { + "path": "schemas/TL_telegram_v225_file_ref_map.dat", + "upstream_path": "TL_telegram_v225_file_ref_map.dat", + "repository": "danog/schemas", + "reference": "0549d9e911338a01673b656f41eeea8cac51d5e2", + "git_blob": "0c66c61322f049c568577bece2391bb8e6fa765f", + "bytes": 54304, + "url": "https://raw.githubusercontent.com/danog/schemas/0549d9e911338a01673b656f41eeea8cac51d5e2/TL_telegram_v225_file_ref_map.dat", + "sha256": "6f62c4ed620c5c6182c7e23b9373402f832cfc9400de70ee37c3a7c9752f9dbb", + "status": "pass" + }, + { + "path": "schemas/TL_telegram_v225_file_ref_map.json", + "upstream_path": "TL_telegram_v225_file_ref_map.json", + "repository": "danog/schemas", + "reference": "0549d9e911338a01673b656f41eeea8cac51d5e2", + "git_blob": "f5a71fc2517fd85947b074e2b39b5c98e229a5f8", + "bytes": 129272, + "url": "https://raw.githubusercontent.com/danog/schemas/0549d9e911338a01673b656f41eeea8cac51d5e2/TL_telegram_v225_file_ref_map.json", + "sha256": "bbd2aa2593ccfc73638b82a7d9fe0cc116a1e97e55ce8268233ef4d13c233623", + "status": "pass" + }, + { + "path": "schemas/TL_telegram_v225.json", + "upstream_path": "TL_telegram_v225.json", + "repository": "danog/schemas", + "reference": "0549d9e911338a01673b656f41eeea8cac51d5e2", + "git_blob": "be33e4b20e26f211e19a9eb4d79640129aa9b7dd", + "bytes": 1299962, + "url": "https://raw.githubusercontent.com/danog/schemas/0549d9e911338a01673b656f41eeea8cac51d5e2/TL_telegram_v225.json", + "sha256": "7443a459ddf9f4b98de1121e16d35495bf4654d0e220ce6be3c53cb9ba3496d4", + "status": "pass" + }, + { + "path": "schemas/TL_telegram_v225.tl", + "upstream_path": "TL_telegram_v225.tl", + "repository": "danog/schemas", + "reference": "0549d9e911338a01673b656f41eeea8cac51d5e2", + "git_blob": "2ad8d9c0dc2e7f9b54d342cdef35a004ad8727a2", + "bytes": 267928, + "url": "https://raw.githubusercontent.com/danog/schemas/0549d9e911338a01673b656f41eeea8cac51d5e2/TL_telegram_v225.tl", + "sha256": "539272f5ad8992ee97b61bd134fcf3a28a41ce720e806d0e7dc0e2e408c581f9", + "status": "pass" + }, + { + "path": "tools/AnnotationsBuilder.php", + "upstream_path": "tools/AnnotationsBuilder.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "9da1b7c1436eb54b082a812d0563d9642f6fcb9d", + "bytes": 31838, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/AnnotationsBuilder.php", + "sha256": "06cfae503d18a4a4ce5c802469224d7d8c495b8ab71f61cfe6a67070682c63f1", + "status": "pass" + }, + { + "path": "tools/build_docs.php", + "upstream_path": "tools/build_docs.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "d880c8111a2216bc32ccbdd0fd53532e27748559", + "bytes": 19785, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/build_docs.php", + "sha256": "a1fbde122f6e0fad09f40472d791a24a7bc0d3d3606bb9682ff4e57e962cf27d", + "status": "pass" + }, + { + "path": "tools/build_docs/layerUpgrade.php", + "upstream_path": "tools/build_docs/layerUpgrade.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "58d3decbaeb2157460b219e3c4d48e3c2680becb", + "bytes": 1262, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/build_docs/layerUpgrade.php", + "sha256": "b80237aa3f1d43d218c3e5c5aafb5866e8269580d359ca831f0e8931e0d7e082", + "status": "pass" + }, + { + "path": "tools/build_docs/merge.php", + "upstream_path": "tools/build_docs/merge.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "9be18e1c5c212db47f8e5f473f1d0bd1cb3090ec", + "bytes": 1103, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/build_docs/merge.php", + "sha256": "45c62d5c545d01934aaf86919f95f2fa46924577379d7d9ff904af6ddab0414d", + "status": "pass" + }, + { + "path": "tools/build_docs/schemas.php", + "upstream_path": "tools/build_docs/schemas.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "84bfdcaf29eaedb8238f283a17327d134aa49fe1", + "bytes": 2209, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/build_docs/schemas.php", + "sha256": "88b3dfa2240c876838cba20d273efea2398ff35c864aee53b7759ab71203b267", + "status": "pass" + }, + { + "path": "tools/build_tl.php", + "upstream_path": "tools/build_tl.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "ef16c20fe8314caab60db353320d7b500d3b2c04", + "bytes": 493, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/build_tl.php", + "sha256": "647a38d12bf7f9624f4600ce3c9e2a52846fd6e75b01df63ee7be11f34bcda6b", + "status": "pass" + }, + { + "path": "tools/DocsBuilder.php", + "upstream_path": "tools/DocsBuilder.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "e31a9e860770b4b24889a6808a7266422b46bd26", + "bytes": 6845, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/DocsBuilder.php", + "sha256": "0b93a2da5e7c5fcd9f63fa4962805c36f8c7ad3fa22d24ee79af99814b21072d", + "status": "pass" + }, + { + "path": "tools/DocsBuilder/Constructors.php", + "upstream_path": "tools/DocsBuilder/Constructors.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "899f250ed8a13e4ccb96909fea1280279016a2a6", + "bytes": 14773, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/DocsBuilder/Constructors.php", + "sha256": "9799411e24b068ebf379f36bad567704e198486d707abcf6962172d84816ef41", + "status": "pass" + }, + { + "path": "tools/DocsBuilder/Methods.php", + "upstream_path": "tools/DocsBuilder/Methods.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "2cd2140afceb9a692c9fc109ea95ca8c91c90639", + "bytes": 19563, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/DocsBuilder/Methods.php", + "sha256": "75c80725b49b68650e9abe2a9971929cef3b16b0828ca9ea475f3cd1be8acf1d", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/ActionOp.php", + "upstream_path": "tools/FileRefExtractor/ActionOp.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "2bbc4b603d4376d87610fb2d51d3ab7112a9f7fb", + "bytes": 1171, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/ActionOp.php", + "sha256": "1499bd3053681d6aa2269839e1d55825448deb1994ba90852270ba91340087dd", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/BuildMode.php", + "upstream_path": "tools/FileRefExtractor/BuildMode.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "c15ad08baba7b0a84fb6f0d25051ec4818f9b12d", + "bytes": 1033, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/BuildMode.php", + "sha256": "6cc7d671f6ada2959621969efc733c0e8fa2dce8297ed3592af0228e7111026a", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/BuildMode/Ast.php", + "upstream_path": "tools/FileRefExtractor/BuildMode/Ast.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "597bea1a00c2eca7f2b2311151e9690f5d854e20", + "bytes": 15211, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/BuildMode/Ast.php", + "sha256": "542f6899240f5d6d90e3d6dfd97e86ab68906854902f5f1cf3f61437a49243a4", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/FieldTransformationOp.php", + "upstream_path": "tools/FileRefExtractor/FieldTransformationOp.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "5d1b5990cc0dff74bf73359b6d2b840170868ec6", + "bytes": 1061, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/FieldTransformationOp.php", + "sha256": "75bd3b3029b3907327fdb2bfdcb04f87eaa1582aba0bce9ed461778217fbe75a", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/FileRefGenerator.php", + "upstream_path": "tools/FileRefExtractor/FileRefGenerator.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "d2a4202aa5ff87f5c8c149d36c9b2fb8410a1852", + "bytes": 42046, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/FileRefGenerator.php", + "sha256": "7d9c84e5c51da29921e51b262ba8ab6af958b5abe95667e5bfbb279a941fb336", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/LiteralOp.php", + "upstream_path": "tools/FileRefExtractor/LiteralOp.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "68bb828c62b1cbcdcdae7a1863231b1d002263bb", + "bytes": 1049, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/LiteralOp.php", + "sha256": "300fc3630eda3d03807e64f6017da0f35366a4397263097c49d2d3808fc5f3f6", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/Ops/ArrayOp.php", + "upstream_path": "tools/FileRefExtractor/Ops/ArrayOp.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "fd852ce28e6ed41b32588fe13996074ca1c105e4", + "bytes": 2701, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/Ops/ArrayOp.php", + "sha256": "3b4328ba6e38eacd076104e4533a6ff7c7083effbfc204e142fbe9a767ad8925", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/Ops/CallOp.php", + "upstream_path": "tools/FileRefExtractor/Ops/CallOp.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "eb1fec67e441f4ad248674f7d35c88a738f472d8", + "bytes": 3156, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/Ops/CallOp.php", + "sha256": "d76eb0ba098131a6a7166bd54c1a7cef00247742b9252821146bf4fc0ede34d1", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/Ops/ConstructorOp.php", + "upstream_path": "tools/FileRefExtractor/Ops/ConstructorOp.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "832364e6ca44cd916403662bfda6f29cf847413b", + "bytes": 2986, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/Ops/ConstructorOp.php", + "sha256": "a79c8e4edc295a749f905806492a87d5a3ae35f1fcaf2454d97724d9fc064f01", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/Ops/CopyMethodCallOp.php", + "upstream_path": "tools/FileRefExtractor/Ops/CopyMethodCallOp.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "4a2f591e0d60cfd6ea7ad9041c8fb5478a114740", + "bytes": 2813, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/Ops/CopyMethodCallOp.php", + "sha256": "4b695dd32bf8674cbd65704bf3214fcbd1811fc19df9be3e5f93c7ae6f50c5aa", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/Ops/CopyOp.php", + "upstream_path": "tools/FileRefExtractor/Ops/CopyOp.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "9764de680f99a4be131d5f1bda4c10bcbb086892", + "bytes": 2321, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/Ops/CopyOp.php", + "sha256": "0388255cac8c0eaf32267d2c214e628d0c9a7bd7f85c86d52e0ad145bcf61526", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/Ops/GetInputChannelOp.php", + "upstream_path": "tools/FileRefExtractor/Ops/GetInputChannelOp.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "1161ece1a6d0ef9d7a023a2a931a341579d93439", + "bytes": 3036, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/Ops/GetInputChannelOp.php", + "sha256": "2b3c807797e2731a45d4feeee14e94994612130d3b1d3cfff8ecc8876d215558", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/Ops/GetInputPeerOp.php", + "upstream_path": "tools/FileRefExtractor/Ops/GetInputPeerOp.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "44f025cccf9e475639a36bc069ff9aa0f2b6e172", + "bytes": 2670, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/Ops/GetInputPeerOp.php", + "sha256": "a9bc4d8af81fdb9a78908038690568e7e94c02cab64e59fc52a10f002dbf3662", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/Ops/GetInputStickerSet.php", + "upstream_path": "tools/FileRefExtractor/Ops/GetInputStickerSet.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "9acfc53679831a298c92a118e51cb5d1b1e5880b", + "bytes": 2684, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/Ops/GetInputStickerSet.php", + "sha256": "7c3b0ce0b2c6b3c0bbf7c5c4ba33e7b491a1a8547e0340667e40348c0e228779", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/Ops/GetInputUserOp.php", + "upstream_path": "tools/FileRefExtractor/Ops/GetInputUserOp.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "8d8c4764aec87f654ac5567fd43d12b3776fa964", + "bytes": 3000, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/Ops/GetInputUserOp.php", + "sha256": "d5bca8ffc5aa64c4cd33bede49392c21a0a800d9002bc22de0f46176a27e6a92", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/Ops/GetMessageOp.php", + "upstream_path": "tools/FileRefExtractor/Ops/GetMessageOp.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "d2620149db31f3608d14fcd6a203eefbe3069c7e", + "bytes": 3776, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/Ops/GetMessageOp.php", + "sha256": "08e7f19fb87ef29ccd001de99a3688a5d97653e5a1c274d99a7fb71fc3d6339c", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/Ops/Noop.php", + "upstream_path": "tools/FileRefExtractor/Ops/Noop.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "766a746414dfe96abe7a8835fb008002785fc412", + "bytes": 1516, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/Ops/Noop.php", + "sha256": "4e6c96a3014f3bddf3c39a4c0750f6237c5266ce03df7c09c2986855ff1c0c9a", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/Ops/PrimitiveLiteralOp.php", + "upstream_path": "tools/FileRefExtractor/Ops/PrimitiveLiteralOp.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "106c2a98c5c22f0e08fbdc0efddb5b29e5767863", + "bytes": 2288, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/Ops/PrimitiveLiteralOp.php", + "sha256": "e030b15127b2cb9407fd72e22dfd3b514327faa0a2c08c38581f9fa2ac001937", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/Ops/ThemeFormatOp.php", + "upstream_path": "tools/FileRefExtractor/Ops/ThemeFormatOp.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "b225922bcb467932c7eef2bb08991da8b9bd7523", + "bytes": 1709, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/Ops/ThemeFormatOp.php", + "sha256": "e384c89147307988dbf4c2972ba1e5630f84ad2d40e067f93813d9fc03b42fae", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/Path.php", + "upstream_path": "tools/FileRefExtractor/Path.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "dab149bc0a6414b1c85e0cdc33a3901f2c439a68", + "bytes": 13711, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/Path.php", + "sha256": "bdd3cbb15bcbb9504decec03dc1eb529f8805b5c9e73b4602eb219ebf7412b0c", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/TLContext.php", + "upstream_path": "tools/FileRefExtractor/TLContext.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "d9bd7d93d1e5b9f88a693607ef540dc71083c55c", + "bytes": 3085, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/TLContext.php", + "sha256": "0b975a77af7981eb7b4aa45c48adf7908be6f6d23f4016122e5548624367e9f0", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/TLWrapper.php", + "upstream_path": "tools/FileRefExtractor/TLWrapper.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "5ecb4bdbb87c3965b6bb2612447e4488d976e63e", + "bytes": 3445, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/TLWrapper.php", + "sha256": "88522ff62efa4e0fa690d1a7809726de2b3be1dd0fb14cbe2de4016172ce7987", + "status": "pass" + }, + { + "path": "tools/FileRefExtractor/TypedOp.php", + "upstream_path": "tools/FileRefExtractor/TypedOp.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "d11dfa87f26ec8652fd95df05ac7c9dc2a001e04", + "bytes": 1307, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/FileRefExtractor/TypedOp.php", + "sha256": "7604725c49ac22576f2c285fe2c56a7ebb0b87effa7422427850aaa33e753b34", + "status": "pass" + }, + { + "path": "tools/fix_docs.sh", + "upstream_path": "tools/fix_docs.sh", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "a4d53cfdbfaaef07d5347b88c5c7e69cfbf6567d", + "bytes": 262, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/fix_docs.sh", + "sha256": "4c743f26805a1d002e9f9eeb9f6df8868c099ab6c78ed03c31a17ad968e42e47", + "status": "pass" + }, + { + "path": "tools/fuzzer.php", + "upstream_path": "tools/fuzzer.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "efdd59c59983b7cc696c0f63d6ee43242a9f515c", + "bytes": 10851, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/fuzzer.php", + "sha256": "e86aec0b60cec3c906ef40ef554d5a83f020f0df83fa41a0d82140570141ad4d", + "status": "pass" + }, + { + "path": "tools/gen_filerefmap.php", + "upstream_path": "tools/gen_filerefmap.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "6237fcba52000f12ffaff7b99da3a5c4d897ca21", + "bytes": 2842, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/gen_filerefmap.php", + "sha256": "64c04660acb12f86e75949e31e9683867ebd3ec32bf230cc129e26163ff4dd58", + "status": "pass" + }, + { + "path": "tools/genDataset.php", + "upstream_path": "tools/genDataset.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "ddf4911e234065f692dc5eef8434286e9496fea1", + "bytes": 1414, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/genDataset.php", + "sha256": "6d487fed4569c1fa863387dc90dc9af4fa9828b026aac45f11e611d72fd9fa45", + "status": "pass" + }, + { + "path": "tools/layerdiff.php", + "upstream_path": "tools/layerdiff.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "84afbdf45d3ae80d8148e111d721e604a5a635a0", + "bytes": 4277, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/layerdiff.php", + "sha256": "93a6e0de4238f7e7dbe86c33e6230be2118fa8e297f6855f39736dfb75ac2f9b", + "status": "pass" + }, + { + "path": "tools/makephar.php", + "upstream_path": "tools/makephar.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "ada587d80c373928fa1b5b4ceeda0ff3878db626", + "bytes": 3184, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/makephar.php", + "sha256": "b8f014265dd8e5ba2c9d8f2deff573cecc7b1906f274094cd52d3127ac79f9de", + "status": "pass" + }, + { + "path": "tools/phar.php", + "upstream_path": "tools/phar.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "bb83a5bad41f32d021de5586c33dd6bd3b7bece2", + "bytes": 8506, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/phar.php", + "sha256": "f765c235dadc5ff6099af2cafc1fc465dbb0c5a084c060b1853b90d0b61c0019", + "status": "pass" + }, + { + "path": "tools/phpdoc.php", + "upstream_path": "tools/phpdoc.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "10f4a4d00ad80c6a3dcda1272bc4675f20cfe80b", + "bytes": 4227, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/phpdoc.php", + "sha256": "f7bebb70a0572c2746e8f16e58f9ca5e7c3b797370c66461964d966a0eb83e6c", + "status": "pass" + }, + { + "path": "tools/static.php", + "upstream_path": "tools/static.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "f080c94ddaf71ea589c0da57f47dff794dcfe15b", + "bytes": 1731, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/static.php", + "sha256": "77b36fc8ad17adf4ce1b979cccfc97c88ec8d1fbcf2e88f70af06ddd1ecb244f", + "status": "pass" + }, + { + "path": "tools/std.php", + "upstream_path": "tools/std.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "85dee77d402b0b4dc08320a1a74e839fd69f51fa", + "bytes": 3155, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/std.php", + "sha256": "718e35b65340083a1f4c59e49d53e73a96b210321256a92cd6622fee88305c34", + "status": "pass" + }, + { + "path": "tools/TL/Builder.php", + "upstream_path": "tools/TL/Builder.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "6d96cf1250ff564810f4acf93647a0ddba259f3b", + "bytes": 21738, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/TL/Builder.php", + "sha256": "1975f182dcc5490d5576e53314018cca155b11c8ed212dd60af150cba805c3f1", + "status": "pass" + }, + { + "path": "tools/TL/SecretBuilder.php", + "upstream_path": "tools/TL/SecretBuilder.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "52ddddc3ac0280b1d5c0e287684b42a5cc32c6d9", + "bytes": 1515, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/TL/SecretBuilder.php", + "sha256": "6d5c40cef5c8d152686cc90ade49a759c2fc2a26b01fe4d2fee66d80406404ad", + "status": "pass" + }, + { + "path": "tools/translator.php", + "upstream_path": "tools/translator.php", + "repository": "danog/MadelineProto", + "reference": "7b99dd0f2d964a492c377912ffce9f5ce61aa9ed", + "git_blob": "bb90c8796fbc241b11f606ce1744e30bc5bd0dd8", + "bytes": 2284, + "url": "https://raw.githubusercontent.com/danog/MadelineProto/7b99dd0f2d964a492c377912ffce9f5ce61aa9ed/tools/translator.php", + "sha256": "566b7f50cddda5926f9a08f4432941ad8de0aa70c2957289fafec4ddf058d4e8", + "status": "pass" + } + ], + "limitations": [ + "Runtime TL225 inputs included; historical schemas and generated upstream documentation not bundled.", + "Upstream generator scripts refer to changing RPC/Weblate endpoints and a separate PHPDoc development toolchain. Exact historical remote responses and reproducible full-upstream regeneration have not been established.", + "No generator was executed; source headers and licenses remain upstream originals." + ] + }, + "limits": [ + "Runtime TL225 inputs included; historical schemas and generated upstream documentation not bundled.", + "Upstream generator scripts refer to changing RPC/Weblate endpoints and a separate PHPDoc development toolchain. Exact historical remote responses and reproducible full-upstream regeneration have not been established.", + "No generator was executed; source headers and licenses remain upstream originals." + ], + "file_count": 74 + }, + "wrapper_upstream_provenance": { + "upstream": "https://github.com/amphp/windows-process-wrapper", + "tag": "v1.2.0", + "tag_object": "97d6c7cbe716c01e1cce10e0c7ba2922f3530a19", + "commit": "8d5aca0c56b73cba460894d79ee83ec558b41027", + "source_url": "https://codeload.github.com/amphp/windows-process-wrapper/zip/8d5aca0c56b73cba460894d79ee83ec558b41027", + "lock_package": "amphp/process", + "lock_reference": "583959df17d00304ad7b0b32285373f985935643", + "binary_update_commit": "6810aacc5d7049d9db87e8161e2ef0e66caa1472", + "binary_update_message": "Update Windows binaries to v1.2.0 (#34)", + "evidence_urls": [ + "https://github.com/amphp/process/commit/6810aacc5d7049d9db87e8161e2ef0e66caa1472", + "https://api.github.com/repos/amphp/process/contents/bin/windows?ref=583959df17d00304ad7b0b32285373f985935643", + "https://api.github.com/repos/amphp/windows-process-wrapper/git/tags/97d6c7cbe716c01e1cce10e0c7ba2922f3530a19", + "https://github.com/amphp/windows-process-wrapper/releases/tag/v1.2.0" + ], + "upstream_tree": [ + { + "path": ".gitattributes", + "mode": "100644", + "type": "blob", + "sha": "fc03f042f17481aff1971886ada64f1a57670f80", + "size": 92, + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/blobs/fc03f042f17481aff1971886ada64f1a57670f80" + }, + { + "path": ".gitignore", + "mode": "100644", + "type": "blob", + "sha": "94420dc1ce23b623d17047946883ff7017112cb8", + "size": 3742, + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/blobs/94420dc1ce23b623d17047946883ff7017112cb8" + }, + { + "path": "LICENSE", + "mode": "100644", + "type": "blob", + "sha": "dec2dd8fe0b0ab43911c62f8937684c1e51d5049", + "size": 1072, + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/blobs/dec2dd8fe0b0ab43911c62f8937684c1e51d5049" + }, + { + "path": "ProcessWrapper.sln", + "mode": "100644", + "type": "blob", + "sha": "c9126392cf4aca227b40c2c0335839ad16bf1b76", + "size": 1281, + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/blobs/c9126392cf4aca227b40c2c0335839ad16bf1b76" + }, + { + "path": "ProcessWrapper.sln.DotSettings", + "mode": "100644", + "type": "blob", + "sha": "deb29915534fa656092548190f146671ffe4f478", + "size": 2124, + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/blobs/deb29915534fa656092548190f146671ffe4f478" + }, + { + "path": "ProcessWrapper.vcxproj", + "mode": "100644", + "type": "blob", + "sha": "fa81b64f0cd5194dc4897fac61e2d40098c69f79", + "size": 7946, + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/blobs/fa81b64f0cd5194dc4897fac61e2d40098c69f79" + }, + { + "path": "ProcessWrapper.vcxproj.filters", + "mode": "100644", + "type": "blob", + "sha": "46eda2ee80bdf99d23b50f86bda80c6e0e4b41a8", + "size": 1713, + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/blobs/46eda2ee80bdf99d23b50f86bda80c6e0e4b41a8" + }, + { + "path": "README.md", + "mode": "100644", + "type": "blob", + "sha": "b178aacad4a053935e0cf78c5d466e528926eb69", + "size": 1008, + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/blobs/b178aacad4a053935e0cf78c5d466e528926eb69" + }, + { + "path": "resources", + "mode": "040000", + "type": "tree", + "sha": "57e835dd53896b9026f95a7e1fad9d2368a9776e", + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/trees/57e835dd53896b9026f95a7e1fad9d2368a9776e" + }, + { + "path": "resources/.gitattributes", + "mode": "100644", + "type": "blob", + "sha": "3950084c679810b0c0d4eccf91f7e32410d3c081", + "size": 58, + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/blobs/3950084c679810b0c0d4eccf91f7e32410d3c081" + }, + { + "path": "resources/Icon_amphp.ico", + "mode": "100644", + "type": "blob", + "sha": "9d219eb756111d7fa85757b98a326a7f82a0efb2", + "size": 54800, + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/blobs/9d219eb756111d7fa85757b98a326a7f82a0efb2" + }, + { + "path": "resources/ProcessWrapper.rc", + "mode": "100644", + "type": "blob", + "sha": "13f1382062bb6e6cf244ec79ef5a7bbc8f6f1d02", + "size": 5280, + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/blobs/13f1382062bb6e6cf244ec79ef5a7bbc8f6f1d02" + }, + { + "path": "resources/resource.h", + "mode": "100644", + "type": "blob", + "sha": "5ecd01e057f77f8bdcde5bcd5bac41ce58a8ea67", + "size": 916, + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/blobs/5ecd01e057f77f8bdcde5bcd5bac41ce58a8ea67" + }, + { + "path": "src", + "mode": "040000", + "type": "tree", + "sha": "4171201cdf4cd893c4867f919cf2492322297e30", + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/trees/4171201cdf4cd893c4867f919cf2492322297e30" + }, + { + "path": "src/Args.c", + "mode": "100644", + "type": "blob", + "sha": "a1555b49b86b850700dbc59246be2c8ffe724e3b", + "size": 7737, + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/blobs/a1555b49b86b850700dbc59246be2c8ffe724e3b" + }, + { + "path": "src/Args.h", + "mode": "100644", + "type": "blob", + "sha": "63ba2b4effce504060fd9e06098886aa95f2faa8", + "size": 372, + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/blobs/63ba2b4effce504060fd9e06098886aa95f2faa8" + }, + { + "path": "src/Encoding.h", + "mode": "100644", + "type": "blob", + "sha": "f1e987a6b8b20c64bca6ae645f1c87a9aaaeed46", + "size": 372, + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/blobs/f1e987a6b8b20c64bca6ae645f1c87a9aaaeed46" + }, + { + "path": "src/Errors.c", + "mode": "100644", + "type": "blob", + "sha": "2cd9ffc6cdb976ee5e6a97598acfd23c2839af09", + "size": 3931, + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/blobs/2cd9ffc6cdb976ee5e6a97598acfd23c2839af09" + }, + { + "path": "src/Errors.h", + "mode": "100644", + "type": "blob", + "sha": "9c229c96884013a4a9498f5019db338425d7a966", + "size": 277, + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/blobs/9c229c96884013a4a9498f5019db338425d7a966" + }, + { + "path": "src/ProcessWrapper.c", + "mode": "100644", + "type": "blob", + "sha": "c74f5d7d03c8a8705c0edde40c606f24d8cf66dc", + "size": 24578, + "url": "https://api.github.com/repos/amphp/windows-process-wrapper/git/blobs/c74f5d7d03c8a8705c0edde40c606f24d8cf66dc" + } + ], + "source_archive_sha256": "fa4b2e5cda2ba0839f34c27dd8829326b8a343b081404df3d43fb827407b472c", + "release_archive_sha256": "84d4b1379a5d36c432965b4e7ecedfbc0913debd73e57eee2e66ad2859951f52", + "source_files": [ + { + "path": ".gitattributes", + "bytes": 92, + "git_blob": "fc03f042f17481aff1971886ada64f1a57670f80", + "archive_conversion": "GitHub archive CRLF preserved; LF canonical bytes matched exact upstream Git blob during verification", + "sha256": "e6518f1394b1372580e03c792bf6b1a51766e1da051815457fc881bf78476ecd", + "canonical_git_bytes_sha256": "0ed19d71699161c69aac3c0ecab8d46887b1ebc7017c8e129aa556917252ccf3", + "archive_bytes": 94 + }, + { + "path": ".gitignore", + "bytes": 3742, + "git_blob": "94420dc1ce23b623d17047946883ff7017112cb8", + "archive_conversion": "GitHub archive CRLF preserved; LF canonical bytes matched exact upstream Git blob during verification", + "sha256": "122661b5b5b483734ef04f7f291a24dcc786ffb0c9e92a1f35b2deb59ebb26fd", + "canonical_git_bytes_sha256": "c84452b0c95cc7732dc0301d0418df40672b75966c53eb2535a8a18335a37ac8", + "archive_bytes": 3978 + }, + { + "path": "LICENSE", + "bytes": 1072, + "git_blob": "dec2dd8fe0b0ab43911c62f8937684c1e51d5049", + "archive_conversion": "GitHub archive CRLF preserved; LF canonical bytes matched exact upstream Git blob during verification", + "sha256": "b41825e266bd6e700ef99630fee09db6338122a1d28c1d298c64cea6fc1c030c", + "canonical_git_bytes_sha256": "5f0e546c0337306a39705db9c8460fa3cd84ed9b1a9d871856058d60d2289291", + "archive_bytes": 1093 + }, + { + "path": "ProcessWrapper.sln", + "bytes": 1281, + "git_blob": "c9126392cf4aca227b40c2c0335839ad16bf1b76", + "archive_conversion": "GitHub archive CRLF preserved; LF canonical bytes matched exact upstream Git blob during verification", + "sha256": "5f26b1a717dda8d8b2573588ab8c87a585415538be92300e81c2e9524e347e6b", + "canonical_git_bytes_sha256": "ab9959b47c48f948ec910345fc6455b5dd0789bbf15eab6cb0760646418bd851", + "archive_bytes": 1309 + }, + { + "path": "ProcessWrapper.sln.DotSettings", + "bytes": 2124, + "git_blob": "deb29915534fa656092548190f146671ffe4f478", + "archive_conversion": "GitHub archive CRLF preserved; LF canonical bytes matched exact upstream Git blob during verification", + "sha256": "4db43cc7fbc6b8972f454e894b5a70a1cd9e214ba15c9649fb680e9cf430c8d7", + "canonical_git_bytes_sha256": "66d0cb78a87dc2143cfc34d0f2f172113acec4631244bff725167f62cea35577", + "archive_bytes": 2144 + }, + { + "path": "ProcessWrapper.vcxproj", + "bytes": 7946, + "git_blob": "fa81b64f0cd5194dc4897fac61e2d40098c69f79", + "archive_conversion": "GitHub archive CRLF preserved; LF canonical bytes matched exact upstream Git blob during verification", + "sha256": "766e9040c299829a030bdaff7b450ec6781fac58ef123175b5b022598bf980f8", + "canonical_git_bytes_sha256": "860f46822566c4d7f809263983195e11500f9bce1d928f7a1e48b51ec7a9f2e2", + "archive_bytes": 8117 + }, + { + "path": "ProcessWrapper.vcxproj.filters", + "bytes": 1713, + "git_blob": "46eda2ee80bdf99d23b50f86bda80c6e0e4b41a8", + "archive_conversion": "GitHub archive CRLF preserved; LF canonical bytes matched exact upstream Git blob during verification", + "sha256": "7eb705d68fce787832d0d26a945bd785802fefdd87ba1386cb19365e997b5ffc", + "canonical_git_bytes_sha256": "cc93ee269827000f1ea972a5aba07a8dfc2c6a6450cf28d1e8e5a6195b767aa3", + "archive_bytes": 1765 + }, + { + "path": "README.md", + "bytes": 1008, + "git_blob": "b178aacad4a053935e0cf78c5d466e528926eb69", + "archive_conversion": "GitHub archive CRLF preserved; LF canonical bytes matched exact upstream Git blob during verification", + "sha256": "22eb3f686641db618709bda289529feaa43c231aa725cd059731f1eef5dfe423", + "canonical_git_bytes_sha256": "861b3446721a28abeee4f94d22d1de97600e610f03cb2825441cc7b5cec4b636", + "archive_bytes": 1032 + }, + { + "path": "resources/.gitattributes", + "bytes": 58, + "git_blob": "3950084c679810b0c0d4eccf91f7e32410d3c081", + "archive_conversion": "none", + "sha256": "f9ff8e3d710fc3f6acbb095258e4746cc01d3e7d351c884ea6880455d82bae72", + "canonical_git_bytes_sha256": "f9ff8e3d710fc3f6acbb095258e4746cc01d3e7d351c884ea6880455d82bae72", + "archive_bytes": 58 + }, + { + "path": "resources/Icon_amphp.ico", + "bytes": 54800, + "git_blob": "9d219eb756111d7fa85757b98a326a7f82a0efb2", + "archive_conversion": "none", + "sha256": "4d746cea582e3b984584fefccc2e6a90d39e75ec0b650ff43bfc893ea2e4eda2", + "canonical_git_bytes_sha256": "4d746cea582e3b984584fefccc2e6a90d39e75ec0b650ff43bfc893ea2e4eda2", + "archive_bytes": 54800 + }, + { + "path": "resources/ProcessWrapper.rc", + "bytes": 5280, + "git_blob": "13f1382062bb6e6cf244ec79ef5a7bbc8f6f1d02", + "archive_conversion": "none", + "sha256": "e08aa7682e9c823f4f68e47c237e4ee88b2b8b78616abb94a38ecada3508e993", + "canonical_git_bytes_sha256": "e08aa7682e9c823f4f68e47c237e4ee88b2b8b78616abb94a38ecada3508e993", + "archive_bytes": 5280 + }, + { + "path": "resources/resource.h", + "bytes": 916, + "git_blob": "5ecd01e057f77f8bdcde5bcd5bac41ce58a8ea67", + "archive_conversion": "none", + "sha256": "58ff0eadb1c7e5c2a999f711ae95fbd765d6b0f718f48ab68558563ebf04f601", + "canonical_git_bytes_sha256": "58ff0eadb1c7e5c2a999f711ae95fbd765d6b0f718f48ab68558563ebf04f601", + "archive_bytes": 916 + }, + { + "path": "src/Args.c", + "bytes": 7737, + "git_blob": "a1555b49b86b850700dbc59246be2c8ffe724e3b", + "archive_conversion": "GitHub archive CRLF preserved; LF canonical bytes matched exact upstream Git blob during verification", + "sha256": "b2d944379bd3af7a289aa500150f0ce27e618eb378d3f3eecf384f8a32a7d441", + "canonical_git_bytes_sha256": "d2937a737e59355c374e294ba01ac4784f7e70033669102f307c466a69ce922a", + "archive_bytes": 7983 + }, + { + "path": "src/Args.h", + "bytes": 372, + "git_blob": "63ba2b4effce504060fd9e06098886aa95f2faa8", + "archive_conversion": "GitHub archive CRLF preserved; LF canonical bytes matched exact upstream Git blob during verification", + "sha256": "f3203671d93c1fc7aec4dab123b1a96f2de525071e5f8e3bff73e96a19b4353c", + "canonical_git_bytes_sha256": "9998d57f1ecde7ceb4ce648b985b7a751a53e9bbd54574e46d07fa5e5b5259ea", + "archive_bytes": 388 + }, + { + "path": "src/Encoding.h", + "bytes": 372, + "git_blob": "f1e987a6b8b20c64bca6ae645f1c87a9aaaeed46", + "archive_conversion": "GitHub archive CRLF preserved; LF canonical bytes matched exact upstream Git blob during verification", + "sha256": "95e600fd81ce3830eaada2edaa2e560b9e060751f0d6518ec816ea57e682a5b9", + "canonical_git_bytes_sha256": "1bc1da7c169c74ec8e98b64521fa6b9fcf972479e8a174aebe7e2d66dd177013", + "archive_bytes": 379 + }, + { + "path": "src/Errors.c", + "bytes": 3931, + "git_blob": "2cd9ffc6cdb976ee5e6a97598acfd23c2839af09", + "archive_conversion": "GitHub archive CRLF preserved; LF canonical bytes matched exact upstream Git blob during verification", + "sha256": "c8021ac52ed123e4ece667f97048b1ecadbad122b993c1e43327db985a21c463", + "canonical_git_bytes_sha256": "66e699615cf1d8339fcb1a746a3a36fe9c6c492debbe50544951c24feae28f4c", + "archive_bytes": 4130 + }, + { + "path": "src/Errors.h", + "bytes": 277, + "git_blob": "9c229c96884013a4a9498f5019db338425d7a966", + "archive_conversion": "GitHub archive CRLF preserved; LF canonical bytes matched exact upstream Git blob during verification", + "sha256": "ec57545ed3bddf7710f23b8e14a21a0d5dda5f94613bf388b502fdd13932a34e", + "canonical_git_bytes_sha256": "9ba27703e81726fdb3247467d892c17d3a4dfb9c39dde5f975be19d1afe1e744", + "archive_bytes": 290 + }, + { + "path": "src/ProcessWrapper.c", + "bytes": 24578, + "git_blob": "c74f5d7d03c8a8705c0edde40c606f24d8cf66dc", + "archive_conversion": "GitHub archive CRLF preserved; LF canonical bytes matched exact upstream Git blob during verification", + "sha256": "f93286e07aea62ffa1d7ba20839a3bdc21ede954c7f8a6096796d9fdb229a389", + "canonical_git_bytes_sha256": "62a8583ed212ede6ff4cfcb6485b10b818dd830b97c66624a191cc2e5a7d0b39", + "archive_bytes": 25368 + } + ], + "release_executables": [ + { + "path": "ProcessWrapper.exe", + "bytes": 78848, + "sha256": "5b6e66912c92e40ecfb6ac391a2595fa2a8d8e4f93a911c7ae0248aa14ec047d" + }, + { + "path": "ProcessWrapper64.exe", + "bytes": 83968, + "sha256": "1b7c6db9c3dae3073335433e1c3f913b80ac76109b869420e1332652b0c461a2" + } + ], + "limitations": [ + "Upstream history and exact binary hashes verified; no local reproducible build was performed.", + "Compiler, Windows SDK and OS libraries are external build/runtime prerequisites, not bundled application dependencies." + ], + "delivered_source_policy": "Preserve bytes from pinned GitHub source archive, including upstream-requested CRLF. Git blob verification also checked the canonical LF form where needed; no semantic source changes." + }, + "omitted_public_example_keys": [ + { + "file": "vendor/amphp/http-server/tools/tls/localhost.key.pem", + "sha256": "1e11dc00c61adae8180d95a8e1774d2910cab3459c4744b2f6567f061e094eb0", + "source": "https://github.com/amphp/http-server/tree/aa96ca38c5f822a827236543d5417d0c2a782ef0", + "reason": "Public upstream development TLS example private key; unused by the bot." + }, + { + "file": "vendor/amphp/http-server/tools/tls/localhost.pem", + "sha256": "7a2aa6d828415a02c060a2e9377e5402fa6039f4e3392d0c1a308221962b357d", + "source": "https://github.com/amphp/http-server/tree/aa96ca38c5f822a827236543d5417d0c2a782ef0", + "reason": "Public upstream development TLS example private key; unused by the bot." + } + ], + "excluded": [ + "Installed development-tool trees (26 locked packages, including PHPStan PHAR)", + "Composer-generated vendor/composer metadata, autoloaders and vendor/bin proxies", + "PHP, SQLite and operating-system / Docker-base-image source", + "Git metadata, live .env, credentials, sessions, databases, WAL/SHM, backups, logs, caches, coverage and prior archives" + ], + "installation": "This is a source collection, not an installed runnable vendor tree. Install the committed Composer lock and verify patches before startup.", + "limits": [ + "Not the full source of a Linux container or every optional development tool.", + "Retained upstream Windows helper binaries have associated preferred source included, but their rebuild is unverified.", + "Historical provenance and dependency-license metadata/header differences remain documented. The historical UpdateLoop helper has the maintainer authorship/distribution attestation dated 2026-10-16; separate formatted-date exports remain excluded." + ] +} diff --git a/scripts/package-development.php b/scripts/package-development.php new file mode 100644 index 0000000..5d2c73f --- /dev/null +++ b/scripts/package-development.php @@ -0,0 +1,149 @@ + '7a2aa6d828415a02c060a2e9377e5402fa6039f4e3392d0c1a308221962b357d', + 'vendor/amphp/http-server/tools/tls/localhost.key.pem' => '1e11dc00c61adae8180d95a8e1774d2910cab3459c4744b2f6567f061e094eb0', +]; +$omittedExampleKeys = array_keys($approvedExampleKeys); +$exampleSource = [ + 'package' => 'amphp/http-server', + 'version' => 'v3.4.7', + 'commit' => 'aa96ca38c5f822a827236543d5417d0c2a782ef0', + 'permalink' => 'https://github.com/amphp/http-server/tree/aa96ca38c5f822a827236543d5417d0c2a782ef0', +]; +if (Composer\InstalledVersions::getReference($exampleSource['package']) !== $exampleSource['commit']) { + throw new RuntimeException('Review the immutable source of development TLS example-key omissions for this dependency version.'); +} +$omissionEvidence = []; +foreach ($approvedExampleKeys as $path => $sha256) { + if (is_file($root . '/' . $path) && hash_file('sha256', $root . '/' . $path) !== $sha256) { + throw new RuntimeException('Unknown content at a reviewed development example-key path: ' . $path); + } + $omissionEvidence[] = ['file' => $path, 'sha256' => $sha256, 'source' => $exampleSource, 'reason' => 'Public upstream development TLS example key; not required to build or run the bot.']; +} +$forbidden = static function (string $path) use ($omittedExampleKeys): bool { + if (in_array($path, $omittedExampleKeys, true)) { + return true; + } + foreach (explode('/', $path) as $segment) { + if ( + $segment === '.git' || $segment === '.env' || ($segment === 'data' && !str_starts_with($path, 'tests/Fixtures/legacy/data/')) || $segment === 'runtime' + || $segment === 'logs' || $segment === 'node_modules' || str_ends_with($segment, '.madeline') + || preg_match('/\.(?:sqlite|db)(?:-wal|-shm)?$/i', $segment) + ) { + return true; + } + } + return str_contains($path, 'bot.shabbat') || (str_contains($path, '.env.') && !str_ends_with($path, '.env.example')); +}; +$scan = static function (string $contents, string $path): void { + if ( + preg_match('/^-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----$/m', $contents) + || preg_match('/(?:BOT_TOKEN|API_HASH)\s*=\s*["\x27]?[0-9a-f]{32,}/i', $contents) + || preg_match('/\b[0-9]{6,12}:[A-Za-z0-9_-]{30,}\b/', $contents) + ) { + throw new RuntimeException('Potential private credential in archive input: ' . $path); + } +}; +foreach ($files as $path => $absolute) { + if ($forbidden($path)) { + throw new RuntimeException('Forbidden runtime file in archive inputs: ' . $path); + } + $scan((string) file_get_contents($absolute), $path); +} +ksort($files); +$sourceFiles = $files; +foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($root . '/vendor', FilesystemIterator::SKIP_DOTS)) as $file) { + if (!$file->isFile() || $file->isLink()) { + continue; + } + $relative = str_replace('\\', '/', substr($file->getPathname(), strlen($root) + 1)); + if (!$forbidden($relative) && !str_contains($relative, '/composer/tmp-') && !str_ends_with($relative, '/write-check.txt')) { + $sourceFiles[$relative] = $file->getPathname(); + } +} +ksort($sourceFiles); +$hashes = []; +foreach ($sourceFiles as $path => $absolute) { + $hashes[$path] = hash_file('sha256', $absolute); +} +$manifest = ['version' => $version, 'commit' => Shabbat\Runtime\Version::commit($root), 'application_source_sha256' => hash('sha256', json_encode(array_intersect_key($hashes, $files), JSON_THROW_ON_ERROR)), 'review_status' => 'local development bundle, not the scoped corresponding-source release offer', 'source_files' => $hashes, 'omitted_public_example_keys' => $omissionEvidence, 'excludes' => ['production data', 'secrets', 'sessions', '.git'], 'patches' => ['madelineproto' => json_decode((string) file_get_contents($root . '/patches/madelineproto/manifest.json'), true, flags: JSON_THROW_ON_ERROR), 'madelineproto-geopoint' => json_decode((string) file_get_contents($root . '/patches/madelineproto-geopoint/manifest.json'), true, flags: JSON_THROW_ON_ERROR), 'madelineproto-formatted-date' => json_decode((string) file_get_contents($root . '/patches/madelineproto-formatted-date/manifest.json'), true, flags: JSON_THROW_ON_ERROR), 'madelineproto-fresh-peer' => json_decode((string) file_get_contents($root . '/patches/madelineproto-fresh-peer/manifest.json'), true, flags: JSON_THROW_ON_ERROR), 'broadcastmanager' => json_decode((string) file_get_contents($root . '/patches/broadcastmanager/manifest.json'), true, flags: JSON_THROW_ON_ERROR)]]; +if (!is_dir($root . '/dist/development')) { + mkdir($root . '/dist/development', 0700, true); +} +$metadata = json_encode(['commit' => $manifest['commit'], 'application_source_sha256' => $manifest['application_source_sha256'], 'local_changes' => true], JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR); +$archive = static function (string $name, array $entries, string $kind) use ($root, $manifest, $metadata, $forbidden, $scan): string { + $hasDevelopmentTools = isset($entries['vendor/phpunit/phpunit/phpunit'], $entries['vendor/phpstan/phpstan/phpstan'], $entries['vendor/squizlabs/php_codesniffer/bin/phpcs']); + if ($kind === 'server-test' && !$hasDevelopmentTools) { + throw new RuntimeException('The server-test archive requires the locked installed offline verification tools.'); + } + $finalPath = $root . '/dist/development/' . $name; + $path = $finalPath . '.tmp-' . bin2hex(random_bytes(6)); + $zip = new ZipArchive(); + if ($zip->open($path, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== true) { + throw new RuntimeException('Unable to open release archive.'); + } + foreach ($entries as $relative => $absolute) { + if (!$zip->addFile($absolute, $relative)) { + throw new RuntimeException('Unable to add archive input: ' . $relative); + } + } + $archiveManifest = $manifest; + $archiveManifest['artifact_kind'] = $kind; + $archiveManifest['includes_installed_dependencies'] = $kind !== 'application'; + $archiveManifest['includes_development_tools'] = $hasDevelopmentTools; + $archiveManifest['setup_guide'] = 'docs/SERVER_TEST_DEPLOYMENT.md'; + $zip->addFromString('release-manifest.json', json_encode($archiveManifest, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_THROW_ON_ERROR)); + $zip->addFromString('build-info.json', $metadata); + $zip->close(); + $check = new ZipArchive(); + if ($check->open($path) !== true) { + throw new RuntimeException('Generated archive could not be reopened.'); + } + for ($index = 0; $index < $check->numFiles; $index++) { + $entry = $check->getNameIndex($index); + if (!is_string($entry) || $forbidden($entry)) { + throw new RuntimeException('Forbidden entry in final archive.'); + } + $contents = $check->getFromIndex($index); + if (!is_string($contents)) { + throw new RuntimeException('Unreadable archive entry.'); + } + $scan($contents, $entry); + if (isset($entries[$entry]) && (hash('sha256', $contents) !== $manifest['source_files'][$entry] || hash_file('sha256', $entries[$entry]) !== $manifest['source_files'][$entry])) { + throw new RuntimeException('Archive entry checksum mismatch: ' . $entry); + } + } + $check->close(); + if (!rename($path, $finalPath)) { + throw new RuntimeException('Unable to publish verified local archive atomically.'); + } + return $finalPath; +}; +$application = $archive('shabbat-' . $version . '.zip', $files, 'application'); +$source = $archive('shabbat-' . $version . '-corresponding-source.zip', $sourceFiles, 'corresponding-source'); +$server = $archive('shabbat-' . $version . '-server-test.zip', $sourceFiles, 'server-test'); +$artifacts = [$application, $source, $server]; +$checksums = ''; +foreach ($artifacts as $artifact) { + $checksums .= hash_file('sha256', $artifact) . ' ' . basename($artifact) . "\n"; +} +file_put_contents($root . '/dist/development/SHA256SUMS', $checksums); +$manifest['artifacts'] = array_map(static fn (string $artifact): array => ['file' => basename($artifact), 'sha256' => hash_file('sha256', $artifact)], $artifacts); +file_put_contents($root . '/dist/development/release-manifest.json', json_encode($manifest, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_THROW_ON_ERROR) . "\n"); +echo 'Created and scanned ' . implode(', ', array_map('basename', $artifacts)) . ".\n"; diff --git a/scripts/package-release.py b/scripts/package-release.py new file mode 100644 index 0000000..68dc1f3 --- /dev/null +++ b/scripts/package-release.py @@ -0,0 +1,271 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: AGPL-3.0-only +"""Build exact-commit archives with the reviewed, locked runtime source offer. + +No network access, dependency updates, publication or running-bot modifications. +An optional previously reviewed source ZIP can supply dependency bytes; every +selected byte still has to match the checked-in manifest. +""" +import argparse +import datetime +import hashlib +import json +import os +from pathlib import Path, PurePosixPath +import re +import subprocess +import sys +import tempfile +import zipfile + +ROOTS = {'.github', 'src', 'migrations', 'resources', 'bin', 'scripts', 'patches', + 'docs', 'tests', 'assets', 'LICENSES'} +TOP = {'bot.php', 'composer.json', 'composer.lock', 'Dockerfile', 'docker-compose.yml', + 'LICENSE', 'VERSION', 'README.md', 'readme-he.md', 'THIRD_PARTY_NOTICES.md', + 'CHANGELOG.md', '.env.example', '.gitignore', '.dockerignore', '.gitattributes', + '.editorconfig', 'phpunit.xml.dist', 'phpstan.neon', 'phpcs.xml.dist'} +PATTERNS = [rb'(?i)(?:BOT_TOKEN|API_HASH)\s*=\s*["\x27]?[0-9a-f]{32,}', + rb'(?m)^-----BEGIN (?:RSA |EC |OPENSSH |DSA |ENCRYPTED )?PRIVATE KEY-----\r?$', + rb'\b[0-9]{6,12}:[A-Za-z0-9_-]{30,}\b', + rb'\b(?:gh[pousr]_[A-Za-z0-9_-]{30,}|github_pat_[A-Za-z0-9_-]{40,})\b', + rb'\b(?:AKIA|ASIA)[A-Z0-9]{16}\b'] + + +def require(condition, message): + if not condition: + raise ValueError(message) + + +def sha(data): + return hashlib.sha256(data).hexdigest() + + +def json_bytes(value): + return (json.dumps(value, indent=2, ensure_ascii=False) + '\n').encode() + + +def scan(path, data): + parts = PurePosixPath(path).parts + require(path and not path.startswith('/') and '\\' not in path + and '..' not in parts and not re.match(r'[A-Za-z]:', path) + and str(PurePosixPath(path)) == path, 'Unsafe archive path: ' + path) + require(not set(parts).intersection({'.git', '.env', 'node_modules', 'runtime', + 'logs', 'backups', '.phpunit.cache', '.phpstan.cache', '__pycache__', 'coverage'}) + and not re.search(r'\.(sqlite|db)(-wal|-shm)?$', path, re.I) + and 'bot.shabbat' not in path + and not path.endswith(('.pyc', '.madeline')), + 'Runtime/private file in archive: ' + path) + require(not ('data' in parts and not path.startswith('tests/Fixtures/legacy/data/')), + 'Runtime data in archive: ' + path) + require(not ('.env.' in path and not path.endswith('.env.example')), + 'Private environment file: ' + path) + require(not any(re.search(pattern, data) for pattern in PATTERNS), + 'Credential pattern in archive: ' + path) + + +def git(root, *args, data=None): + return subprocess.run(['git', '-C', str(root), *args], input=data, + capture_output=True, check=True).stdout + + +def application(root): + commit = git(root, 'rev-parse', 'HEAD').decode().strip() + require(re.fullmatch(r'[a-f0-9]{40}', commit), 'Unknown Git commit') + require(not git(root, 'diff', '--cached', '--name-only', 'HEAD') + and not git(root, 'ls-files', '--others', '--exclude-standard'), + 'Release packaging requires a clean committed checkout') + records = [] + for row in git(root, 'ls-tree', '-rz', commit).split(b'\0'): + if not row: + continue + head, name = row.split(b'\t', 1) + mode, kind, oid = head.decode().split() + path = name.decode('utf-8') + require(kind == 'blob' and mode in ('100644', '100755'), + 'Symlink/submodule/unknown Git entry: ' + path) + require(path in TOP or path.split('/')[0] in ROOTS, 'Unmapped source file: ' + path) + records.append((path, oid, mode)) + blobs = git(root, 'cat-file', '--batch', data=('\n'.join(x[1] for x in records) + '\n').encode()) + app, modes, pos = {}, {}, 0 + for path, oid, mode in records: + end = blobs.index(b'\n', pos) + header = blobs[pos:end].split() + require(header[0].decode() == oid and header[1] == b'blob', 'Invalid Git object response') + size = int(header[2]) + content = blobs[end + 1:end + 1 + size] + require((root / path).is_file() and not (root / path).is_symlink() + and (root / path).read_bytes() == content, + 'Release packaging requires a clean committed checkout; Working bytes differ: ' + path) + scan(path, content) + app[path], modes[path] = content, int(mode, 8) + pos = end + size + 2 + require(pos == len(blobs), 'Trailing Git object data') + # ReleaseInputs scans these directories during Docker metadata verification. + # Ignored source files must not silently change that runtime fingerprint. + actual = {p.relative_to(root).as_posix() for directory in ROOTS + if (root / directory).is_dir() for p in (root / directory).rglob('*') if p.is_file()} + require(actual == {p for p in app if p.split('/')[0] in ROOTS}, + 'Ignored/untracked application inputs differ from the committed tree') + hashes = {p: sha(b) for p, b in sorted(app.items())} + # Match ReleaseInputs::fingerprint (PHP JSON escapes slashes). + fingerprint = sha(json.dumps(hashes, separators=(',', ':')).replace('/', '\\/').encode()) + stamp = int(git(root, 'show', '-s', '--format=%ct', commit).strip()) + return commit, app, modes, hashes, fingerprint, stamp + + +def dependencies(root, app, dependency_archive=None): + scope = json.loads(app['resources/release/source-manifest.json']) + require(scope['schema_version'] == 1, 'Unsupported source manifest schema') + require(sha(app['composer.lock']) == scope['composer_lock_sha256'], + 'Lock changed: review and refresh the source manifest first') + lock = json.loads(app['composer.lock']) + locked = {p['name']: p for p in lock['packages']} + packages = {p['name']: p for p in scope['runtime_packages']} + require(len(packages) == len(scope['runtime_packages']) and packages.keys() == locked.keys() + and len(packages) == scope['runtime_package_count'], 'Runtime source inventory mismatch') + for name, package in packages.items(): + reference = locked[name].get('source', locked[name]['dist'])['reference'] + require((package['version'], package['reference'], package['license']) == + (locked[name]['version'], reference, locked[name]['license']), + 'Locked dependency metadata mismatch: ' + name) + expected = scope['files_sha256'] + preferred = scope['preferred_source'] + require(all(p.startswith('additional-source/') and p in expected for p in preferred), + 'Unexpected preferred-source mapping') + require(all(p.startswith('vendor/') or p in preferred for p in expected), + 'Unexpected dependency inventory path') + prefixes = {'vendor/' + name + '/' for name in packages} + require(all(p in preferred or any(p.startswith(prefix) for prefix in prefixes) for p in expected), + 'Source inventory contains an unlocked/development package') + require(all(any(p.startswith(prefix) for p in expected) for prefix in prefixes), + 'Source inventory omits a locked runtime package') + archive = zipfile.ZipFile(dependency_archive) if dependency_archive else None + try: + if archive: + require(len(archive.namelist()) == len(set(archive.namelist())), 'Duplicate source ZIP entry') + payload = {} + for path, digest in expected.items(): + require(re.fullmatch(r'[a-f0-9]{64}', digest), 'Invalid source hash: ' + path) + if path in preferred: + source = preferred[path] + require(source.startswith('resources/release/preferred-source/') and source in app, + 'Missing committed preferred source: ' + path) + data = app[source] + elif archive: + data = archive.read(path) + else: + source = root / path + require(source.is_file() and not source.is_symlink(), 'Missing runtime source: ' + path) + data = source.read_bytes() + require(sha(data) == digest, 'Unapproved dependency source bytes: ' + path) + scan(path, data) + payload[path] = data + # Fail when a runtime package gains a file, even if no approved file changed. + if not archive: + omissions = scope['omitted_public_example_keys'] + omitted = {x['file']: x['sha256'] for x in omissions} + for name in packages: + prefix = 'vendor/' + name + '/' + folder = root / 'vendor' / name + actual = set() + for file in folder.rglob('*'): + require(not file.is_symlink(), 'Symlink in runtime source: ' + str(file)) + if file.is_file(): + path = file.relative_to(root).as_posix() + if path in omitted: + require(sha(file.read_bytes()) == omitted[path], 'Changed public example key: ' + path) + else: + actual.add(path) + require(actual == {p for p in expected if p.startswith(prefix)}, + 'Runtime package has missing/unreviewed files: ' + name) + return scope, payload + finally: + if archive: + archive.close() + + +def write_archive(path, entries, modes, stamp): + require(not path.exists(), 'Refusing to replace archive: ' + str(path)) + date = datetime.datetime.fromtimestamp(stamp, datetime.timezone.utc).timetuple()[:6] + hashes = {p: sha(b) for p, b in sorted(entries.items())} + for p, b in entries.items(): + scan(p, b) + with zipfile.ZipFile(path, 'x', compression=zipfile.ZIP_DEFLATED, compresslevel=6) as archive: + for p, b in sorted(entries.items()): + entry = zipfile.ZipInfo(p, date) + entry.create_system = 3 + entry.external_attr = modes.get(p, 0o100755 if p.endswith('.sh') else 0o100644) << 16 + entry.compress_type = zipfile.ZIP_DEFLATED + archive.writestr(entry, b) + with zipfile.ZipFile(path) as archive: + require(len(archive.namelist()) == len(hashes) and archive.testzip() is None, + 'ZIP integrity failure') + require({p: sha(archive.read(p)) for p in archive.namelist()} == hashes, + 'ZIP member round-trip mismatch') + return {'artifact': path.name, 'bytes': path.stat().st_size, 'sha256': sha(path.read_bytes()), + 'files': len(hashes)} + + +def package(root, output, dependency_archive=None): + commit, app, modes, hashes, fingerprint, stamp = application(root) + version = app['VERSION'].decode().strip() + require(re.fullmatch(r'[0-9]+\.[0-9]+\.[0-9]+(?:-[a-zA-Z0-9.-]+)?', version), 'Invalid VERSION') + scope, payload = dependencies(root, app, dependency_archive) + metadata = {'commit': commit, 'version': version, 'application_source_sha256': fingerprint, + 'local_changes': False} + scope = dict(scope, release_commit=commit, release_tag='v' + version, + application_source_sha256=fingerprint, local_changes=False) + source_text = ('# Corresponding source scope\n\n' + 'Release v' + version + ' corresponds to application commit `' + commit + '`.\n\n' + 'Application files match that Git tree byte for byte. The source offer includes ' + 'the locked runtime package sources, active local patches and their base files, ' + 'licenses, and the reviewed preferred-source supplements. All selected bytes are ' + 'pinned by `source-scope.json`. Development dependencies and generated Composer ' + 'autoload files are excluded. This is a source offer, not an installed vendor tree.\n\n' + 'External platform components and limitations:\n\n' + + '\n'.join('- ' + str(x) for x in scope['limits']) + '\n') + names = ['shabbat-' + version + '.zip', 'shabbat-' + version + '-corresponding-source.zip', + 'RELEASE_MANIFEST.json', 'SHA256SUMS'] + output.mkdir(parents=True, exist_ok=True) + require(not any((output / name).exists() for name in names), 'Release outputs already exist') + with tempfile.TemporaryDirectory(prefix='.package-', dir=output) as temporary: + temp = Path(temporary) + application_entries = dict(app, **{'build-info.json': json_bytes(metadata)}) + source_entries = dict(application_entries, **payload, + **{'source-scope.json': json_bytes(scope), 'SOURCE-SCOPE.md': source_text.encode()}) + artifacts = [write_archive(temp / names[0], application_entries, modes, stamp), + write_archive(temp / names[1], source_entries, modes, stamp)] + manifest = {'repository': 'https://github.com/WizardLoop/shabbat', 'tag': 'v' + version, + 'version': version, 'prerelease': '-' in version, **metadata, + 'git_files': len(app), 'composer_lock_sha256': sha(app['composer.lock']), + 'runtime_package_count': scope['runtime_package_count'], + 'dependency_and_supplement_files': len(payload), 'artifacts': artifacts, + 'scope_limits': scope['limits']} + (temp / names[2]).write_bytes(json_bytes(manifest)) + sums = [(x['sha256'], x['artifact']) for x in artifacts] + sums.append((sha((temp / names[2]).read_bytes()), names[2])) + (temp / names[3]).write_bytes(''.join(h + ' ' + n + '\n' for h, n in sums).encode()) + for name in names: + # Exclusive creation prevents replacing a parallel/reviewed release. + with (output / name).open('xb') as target: + target.write((temp / name).read_bytes()) + return manifest + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--output', type=Path, help='Output directory (default: dist)') + parser.add_argument('--dependency-archive', type=Path, + help='Source ZIP supplying only hash-pinned dependency files, for offline rebuilds') + args = parser.parse_args() + root = Path(__file__).resolve().parent.parent + result = package(root, (args.output or root / 'dist').resolve(), args.dependency_archive) + print(json.dumps(result, indent=2)) + + +if __name__ == '__main__': + try: + main() + except (ValueError, OSError, KeyError, subprocess.CalledProcessError, zipfile.BadZipFile) as error: + print('Release packaging failed: ' + str(error), file=sys.stderr) + sys.exit(1) diff --git a/scripts/package.php b/scripts/package.php index 6a9f51d..6b01023 100644 --- a/scripts/package.php +++ b/scripts/package.php @@ -4,146 +4,15 @@ // SPDX-License-Identifier: AGPL-3.0-only $root = dirname(__DIR__); -require $root . '/vendor/autoload.php'; +if (($argv[1] ?? '') === '--development') { + require __DIR__ . '/package-development.php'; + exit(0); +} require_once __DIR__ . '/apply-patches.php'; \Shabbat\Runtime\PatchSet::process($root, false); -if (!class_exists(ZipArchive::class)) { - throw new RuntimeException('PHP zip extension is required for archive generation.'); -} -$version = Shabbat\Runtime\Version::current($root); -if (!preg_match('/^[0-9]+\.[0-9]+\.[0-9]+(?:-[a-z0-9.-]+)?$/i', $version)) { - throw new RuntimeException('VERSION must be a safe SemVer string.'); -} -$files = \Shabbat\Runtime\ReleaseInputs::application($root); -$approvedExampleKeys = [ - 'vendor/amphp/http-server/tools/tls/localhost.pem' => '7a2aa6d828415a02c060a2e9377e5402fa6039f4e3392d0c1a308221962b357d', - 'vendor/amphp/http-server/tools/tls/localhost.key.pem' => '1e11dc00c61adae8180d95a8e1774d2910cab3459c4744b2f6567f061e094eb0', -]; -$omittedExampleKeys = array_keys($approvedExampleKeys); -$exampleSource = [ - 'package' => 'amphp/http-server', - 'version' => 'v3.4.7', - 'commit' => 'aa96ca38c5f822a827236543d5417d0c2a782ef0', - 'permalink' => 'https://github.com/amphp/http-server/tree/aa96ca38c5f822a827236543d5417d0c2a782ef0', -]; -if (Composer\InstalledVersions::getReference($exampleSource['package']) !== $exampleSource['commit']) { - throw new RuntimeException('Review the immutable source of development TLS example-key omissions for this dependency version.'); -} -$omissionEvidence = []; -foreach ($approvedExampleKeys as $path => $sha256) { - if (is_file($root . '/' . $path) && hash_file('sha256', $root . '/' . $path) !== $sha256) { - throw new RuntimeException('Unknown content at a reviewed development example-key path: ' . $path); - } - $omissionEvidence[] = ['file' => $path, 'sha256' => $sha256, 'source' => $exampleSource, 'reason' => 'Public upstream development TLS example key; not required to build or run the bot.']; -} -$forbidden = static function (string $path) use ($omittedExampleKeys): bool { - if (in_array($path, $omittedExampleKeys, true)) { - return true; - } - foreach (explode('/', $path) as $segment) { - if ( - $segment === '.git' || $segment === '.env' || ($segment === 'data' && !str_starts_with($path, 'tests/Fixtures/legacy/data/')) || $segment === 'runtime' - || $segment === 'logs' || $segment === 'node_modules' || str_ends_with($segment, '.madeline') - || preg_match('/\.(?:sqlite|db)(?:-wal|-shm)?$/i', $segment) - ) { - return true; - } - } - return str_contains($path, 'bot.shabbat') || (str_contains($path, '.env.') && !str_ends_with($path, '.env.example')); -}; -$scan = static function (string $contents, string $path): void { - if ( - preg_match('/^-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----$/m', $contents) - || preg_match('/(?:BOT_TOKEN|API_HASH)\s*=\s*["\x27]?[0-9a-f]{32,}/i', $contents) - || preg_match('/\b[0-9]{6,12}:[A-Za-z0-9_-]{30,}\b/', $contents) - ) { - throw new RuntimeException('Potential private credential in archive input: ' . $path); - } -}; -foreach ($files as $path => $absolute) { - if ($forbidden($path)) { - throw new RuntimeException('Forbidden runtime file in archive inputs: ' . $path); - } - $scan((string) file_get_contents($absolute), $path); -} -ksort($files); -$sourceFiles = $files; -foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($root . '/vendor', FilesystemIterator::SKIP_DOTS)) as $file) { - if (!$file->isFile() || $file->isLink()) { - continue; - } - $relative = str_replace('\\', '/', substr($file->getPathname(), strlen($root) + 1)); - if (!$forbidden($relative) && !str_contains($relative, '/composer/tmp-') && !str_ends_with($relative, '/write-check.txt')) { - $sourceFiles[$relative] = $file->getPathname(); - } -} -ksort($sourceFiles); -$hashes = []; -foreach ($sourceFiles as $path => $absolute) { - $hashes[$path] = hash_file('sha256', $absolute); -} -$manifest = ['version' => $version, 'commit' => Shabbat\Runtime\Version::commit($root), 'application_source_sha256' => hash('sha256', json_encode(array_intersect_key($hashes, $files), JSON_THROW_ON_ERROR)), 'review_status' => 'development snapshot; publication requires explicit owner approval', 'source_files' => $hashes, 'omitted_public_example_keys' => $omissionEvidence, 'excludes' => ['production data', 'secrets', 'sessions', '.git'], 'patches' => ['madelineproto' => json_decode((string) file_get_contents($root . '/patches/madelineproto/manifest.json'), true, flags: JSON_THROW_ON_ERROR), 'madelineproto-geopoint' => json_decode((string) file_get_contents($root . '/patches/madelineproto-geopoint/manifest.json'), true, flags: JSON_THROW_ON_ERROR), 'madelineproto-formatted-date' => json_decode((string) file_get_contents($root . '/patches/madelineproto-formatted-date/manifest.json'), true, flags: JSON_THROW_ON_ERROR), 'madelineproto-fresh-peer' => json_decode((string) file_get_contents($root . '/patches/madelineproto-fresh-peer/manifest.json'), true, flags: JSON_THROW_ON_ERROR), 'broadcastmanager' => json_decode((string) file_get_contents($root . '/patches/broadcastmanager/manifest.json'), true, flags: JSON_THROW_ON_ERROR)]]; -if (!is_dir($root . '/dist')) { - mkdir($root . '/dist', 0700); -} -$metadata = json_encode(['commit' => $manifest['commit'], 'application_source_sha256' => $manifest['application_source_sha256'], 'local_changes' => true], JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR); -$archive = static function (string $name, array $entries, string $kind) use ($root, $manifest, $metadata, $forbidden, $scan): string { - $hasDevelopmentTools = isset($entries['vendor/phpunit/phpunit/phpunit'], $entries['vendor/phpstan/phpstan/phpstan'], $entries['vendor/squizlabs/php_codesniffer/bin/phpcs']); - if ($kind === 'server-test' && !$hasDevelopmentTools) { - throw new RuntimeException('The server-test archive requires the locked installed offline verification tools.'); - } - $finalPath = $root . '/dist/' . $name; - $path = $finalPath . '.tmp-' . bin2hex(random_bytes(6)); - $zip = new ZipArchive(); - if ($zip->open($path, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== true) { - throw new RuntimeException('Unable to open release archive.'); - } - foreach ($entries as $relative => $absolute) { - if (!$zip->addFile($absolute, $relative)) { - throw new RuntimeException('Unable to add archive input: ' . $relative); - } - } - $archiveManifest = $manifest; - $archiveManifest['artifact_kind'] = $kind; - $archiveManifest['includes_installed_dependencies'] = $kind !== 'application'; - $archiveManifest['includes_development_tools'] = $hasDevelopmentTools; - $archiveManifest['setup_guide'] = 'docs/SERVER_TEST_DEPLOYMENT.md'; - $zip->addFromString('release-manifest.json', json_encode($archiveManifest, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_THROW_ON_ERROR)); - $zip->addFromString('build-info.json', $metadata); - $zip->close(); - $check = new ZipArchive(); - if ($check->open($path) !== true) { - throw new RuntimeException('Generated archive could not be reopened.'); - } - for ($index = 0; $index < $check->numFiles; $index++) { - $entry = $check->getNameIndex($index); - if (!is_string($entry) || $forbidden($entry)) { - throw new RuntimeException('Forbidden entry in final archive.'); - } - $contents = $check->getFromIndex($index); - if (!is_string($contents)) { - throw new RuntimeException('Unreadable archive entry.'); - } - $scan($contents, $entry); - if (isset($entries[$entry]) && (hash('sha256', $contents) !== $manifest['source_files'][$entry] || hash_file('sha256', $entries[$entry]) !== $manifest['source_files'][$entry])) { - throw new RuntimeException('Archive entry checksum mismatch: ' . $entry); - } - } - $check->close(); - if (!rename($path, $finalPath)) { - throw new RuntimeException('Unable to publish verified local archive atomically.'); - } - return $finalPath; -}; -$application = $archive('shabbat-' . $version . '.zip', $files, 'application'); -$source = $archive('shabbat-' . $version . '-corresponding-source.zip', $sourceFiles, 'corresponding-source'); -$server = $archive('shabbat-' . $version . '-server-test.zip', $sourceFiles, 'server-test'); -$artifacts = [$application, $source, $server]; -$checksums = ''; -foreach ($artifacts as $artifact) { - $checksums .= hash_file('sha256', $artifact) . ' ' . basename($artifact) . "\n"; +$python = getenv('PYTHON') ?: (PHP_OS_FAMILY === 'Windows' ? 'python' : 'python3'); +$process = proc_open([$python, __DIR__ . '/package-release.py', ...array_slice($argv, 1)], [STDIN, STDOUT, STDERR], $pipes, $root); +if (!is_resource($process)) { + throw new RuntimeException('Python 3 is required for release packaging.'); } -file_put_contents($root . '/dist/SHA256SUMS', $checksums); -$manifest['artifacts'] = array_map(static fn (string $artifact): array => ['file' => basename($artifact), 'sha256' => hash_file('sha256', $artifact)], $artifacts); -file_put_contents($root . '/dist/release-manifest.json', json_encode($manifest, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_THROW_ON_ERROR) . "\n"); -echo 'Created and scanned ' . implode(', ', array_map('basename', $artifacts)) . ".\n"; +exit(proc_close($process)); diff --git a/tests/SourceInputsTest.php b/tests/SourceInputsTest.php new file mode 100644 index 0000000..a9e4db8 --- /dev/null +++ b/tests/SourceInputsTest.php @@ -0,0 +1,111 @@ +manifest(); + self::assertSame(hash_file('sha256', $root . '/composer.lock'), $manifest['composer_lock_sha256']); + $lock = json_decode((string) file_get_contents($root . '/composer.lock'), true, flags: JSON_THROW_ON_ERROR); + $expected = []; + foreach ($lock['packages'] as $package) { + $expected[$package['name']] = [$package['version'], $package['source']['reference'] ?? $package['dist']['reference'], $package['license'] ?? []]; + } + $actual = []; + $counts = []; + foreach ($manifest['runtime_packages'] as $package) { + self::assertArrayNotHasKey($package['name'], $actual); + $actual[$package['name']] = [$package['version'], $package['reference'], $package['license']]; + $counts[$package['name']] = 0; + } + ksort($expected); + ksort($actual); + self::assertSame($expected, $actual); + self::assertCount($manifest['runtime_package_count'], $actual); + self::assertCount($manifest['development_packages_omitted'], $lock['packages-dev']); + foreach ($manifest['files_sha256'] as $path => $hash) { + self::assertMatchesRegularExpression('/^[a-f0-9]{64}$/D', $hash); + self::assertStringNotContainsString('..', $path); + if (isset($manifest['preferred_source'][$path])) { + self::assertStringStartsWith('additional-source/', $path); + continue; + } + self::assertMatchesRegularExpression('~^vendor/[^/]+/[^/]+/.+~D', $path); + $parts = explode('/', $path); + $package = $parts[1] . '/' . $parts[2]; + self::assertArrayHasKey($package, $counts); + $counts[$package]++; + } + foreach ($manifest['runtime_packages'] as $package) { + self::assertSame($package['file_count'], $counts[$package['name']]); + } + foreach ($manifest['omitted_public_example_keys'] as $omitted) { + self::assertArrayNotHasKey($omitted['file'], $manifest['files_sha256']); + self::assertMatchesRegularExpression('/^[a-f0-9]{64}$/D', $omitted['sha256']); + } + } + + public function testPreferredSourceFilesAndOriginalLicensesMatchApprovedBytes(): void + { + $root = dirname(__DIR__); + $manifest = $this->manifest(); + $expected = []; + foreach ($manifest['preferred_source'] as $archive => $repository) { + self::assertStringStartsWith('resources/release/preferred-source/', $repository); + self::assertNotSame('.gitattributes', basename($repository), 'Upstream attributes must not override immutable checkout bytes.'); + self::assertArrayHasKey($archive, $manifest['files_sha256']); + self::assertFileExists($root . '/' . $repository); + self::assertSame($manifest['files_sha256'][$archive], hash_file('sha256', $root . '/' . $repository), $archive); + $expected[] = $repository; + } + $actual = []; + foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($root . '/resources/release/preferred-source', FilesystemIterator::SKIP_DOTS)) as $file) { + self::assertFalse($file->isLink()); + if ($file->isFile()) { + $actual[] = str_replace('\\', '/', substr($file->getPathname(), strlen($root) + 1)); + } + } + sort($expected); + sort($actual); + self::assertSame($expected, $actual); + self::assertCount(92, $actual); + self::assertArrayHasKey('additional-source/amphp-windows-process-wrapper/LICENSE', $manifest['preferred_source']); + self::assertArrayHasKey('additional-source/madelineproto-build-inputs/LICENSE', $manifest['preferred_source']); + self::assertSame('MIT', $manifest['additional_source']['license']); + } + + public function testMaintainerAttestationAppliesToTheUnmodifiedHistoricalHelperOnly(): void + { + $root = dirname(__DIR__); + $manifest = json_decode((string) file_get_contents($root . '/patches/madelineproto/manifest.json'), true, flags: JSON_THROW_ON_ERROR); + $reference = $manifest['original_reference']; + $attestation = $reference['maintainer_attestation']; + self::assertSame('2026-10-16', $attestation['date']); + self::assertSame('AGPL-3.0-only', $attestation['license']); + self::assertSame('patches/madelineproto/original-reference.php', $attestation['scope']); + self::assertSame('1ec2691498e878d28ca8e9cde94b00c803d9ccba789096ffc8471156dfb429e9', $reference['sha256']); + self::assertSame($reference['sha256'], $attestation['sha256']); + self::assertSame($attestation['sha256'], hash_file('sha256', $root . '/' . $attestation['scope'])); + self::assertStringContainsString('authored', $attestation['authorship']); + self::assertStringContainsString('authorizes distribution', $attestation['distribution_authorization']); + self::assertStringContainsString('not an independent', $attestation['limits']); + self::assertSame('57c8ff33c9c0cfc3ef00e650a1cc910d7ee479a8bc509f6c9209a7c2a11399d6', hash_file('sha256', $root . '/LICENSE')); + self::assertSame(hash_file('sha256', $root . '/LICENSE'), hash_file('sha256', $root . '/patches/madelineproto-formatted-date/upstream-LICENSE')); + } +} diff --git a/tests/release_packaging_test.py b/tests/release_packaging_test.py new file mode 100644 index 0000000..b2b5760 --- /dev/null +++ b/tests/release_packaging_test.py @@ -0,0 +1,435 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: AGPL-3.0-only +"""Offline regression checks for the exact-commit release packager. + +Fixtures are disposable Git repositories. No network, bot, vendor installation, +or production data is accessed. +""" +import copy +import hashlib +import importlib.util +import json +import os +from pathlib import Path +import shutil +import subprocess +import sys +import tempfile +import unittest +import warnings +import zipfile + +sys.dont_write_bytecode = True +SPEC = importlib.util.spec_from_file_location( + "shabbat_release_packager", + Path(__file__).resolve().parents[1] / "scripts" / "package-release.py", +) +PACKAGER = importlib.util.module_from_spec(SPEC) +SPEC.loader.exec_module(PACKAGER) +STAMP = 946684800 +RUNTIME = "vendor/example/library/" +SUPPLEMENT = "additional-source/example-builder/LICENSE" +PREFERRED = "resources/release/preferred-source/example-builder/LICENSE" + + +def digest(data): + return hashlib.sha256(data).hexdigest() + + +def encode(value): + return (json.dumps(value, indent=2) + "\n").encode() + + +def run_git(root, *arguments): + environment = dict(os.environ) + environment.update({ + "GIT_AUTHOR_DATE": "2000-01-01T00:00:00+00:00", + "GIT_COMMITTER_DATE": "2000-01-01T00:00:00+00:00", + "GIT_TERMINAL_PROMPT": "0", + }) + return subprocess.run( + ["git", "-C", str(root), *arguments], check=True, + stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=environment, + ).stdout + + +class ReleasePackagingTest(unittest.TestCase): + @classmethod + def setUpClass(cls): + if shutil.which("git") is None: + raise RuntimeError("Git is required for the release packaging regression suite") + cls.fixture_directory = tempfile.TemporaryDirectory(prefix="shabbat-release-fixture-") + cls.template = Path(cls.fixture_directory.name) / "repository" + cls.template.mkdir() + package = { + "name": "example/library", "version": "v1.0.0", "license": ["MIT"], + "source": {"reference": "a" * 40}, + "dist": {"reference": "a" * 40}, + } + lock = encode({ + "packages": [package], + "packages-dev": [{ + "name": "example/dev-tool", "version": "v2.0.0", + "license": ["MIT"], "dist": {"reference": "b" * 40}, + }], + }) + cls.runtime = { + RUNTIME + "LICENSE": b"MIT fixture attribution\n", + RUNTIME + "src/Runtime.php": b"> 16) + for name, data in entries.items(): + self.assertEqual(data, archive.read(name)) + + def test_write_archive_never_overwrites_existing_file(self): + path = self.base / "existing.zip" + path.write_bytes(b"reviewed artifact") + with self.assertRaisesRegex(ValueError, "Refusing to replace"): + PACKAGER.write_archive(path, {"README.md": b"new"}, {}, STAMP) + self.assertEqual(b"reviewed artifact", path.read_bytes()) + + def test_package_outputs_are_scoped_and_deterministic(self): + self.write("vendor/example/dev-tool/dev.phar", b"ignored development tool") + self.write("vendor/autoload.php", b" Date: Fri, 16 Oct 2026 13:20:44 +0300 Subject: [PATCH 2/3] Keep CI dependency evidence outside committed release source Preserve the full inventory inspection without dirtying the exact-commit packaging inputs with host-specific SQLite evidence. --- .github/workflows/ci.yml | 2 +- .github/workflows/release.yml | 2 +- docs/RELEASE.md | 2 ++ scripts/dependencies.php | 21 +++++++++++++++++---- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b97f445..39382a5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,7 @@ jobs: - run: composer analyse - run: composer check-locales - run: composer check-docs - - run: composer dependencies + - run: composer dependencies -- --output="$RUNNER_TEMP/dependencies.json" - run: composer self-check - name: Verify release packaging regressions if: matrix.php == '8.4' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f00201b..d12796e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,7 +25,7 @@ jobs: - run: composer analyse - run: composer check-docs - run: composer check-locales - - run: composer dependencies + - run: composer dependencies -- --output="$RUNNER_TEMP/dependencies.json" - run: php bin/self-check.php - run: docker build --build-arg BUILD_COMMIT="${{ github.sha }}" -t shabbat-release . - run: docker run --rm shabbat-release php bin/runtime-permissions.php --require-non-root diff --git a/docs/RELEASE.md b/docs/RELEASE.md index b9cd6a3..6016a6f 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -82,3 +82,5 @@ Exclude `.git`, actual `.env`, sessions, application/runtime databases and WAL/S Use [the complete `/root/shabat` legacy cutover guide](PRODUCTION_UPGRADE.md) for the old file-based production bot. Existing SQLite deployments use [migration](MIGRATION.md) and [backup/restore](BACKUP_RESTORE.md) instead of importing legacy data again. Stable 3.0.0 adds no migration after dev.9; all 16 sources remain required. Stop all writers before migration, retain matching source/database/session/BroadcastManager state, verify import/settings and restore, and monitor the first real production close/open cycle. Review old permission snapshots through the provenance-aware recovery panel. Keep the exact corresponding source available and set `SOURCE_URL` before public operation. Publication itself does not execute a server command or restart a bot. + +CI writes its host-specific dependency report outside the source checkout with `composer dependencies -- --output="$RUNNER_TEMP/dependencies.json"`. This keeps the committed inventory intact while retaining the same dependency/license inspection. For a local external report, pass an explicit private output path. diff --git a/scripts/dependencies.php b/scripts/dependencies.php index 6af6661..e0766fe 100644 --- a/scripts/dependencies.php +++ b/scripts/dependencies.php @@ -4,6 +4,17 @@ // SPDX-License-Identifier: AGPL-3.0-only $root = dirname(__DIR__); +$output = $root . '/docs/dependencies.json'; +foreach (array_slice($argv, 1) as $argument) { + if (str_starts_with($argument, '--output=')) { + $output = substr($argument, strlen('--output=')); + if ($output === '') { + throw new InvalidArgumentException('Dependency report output must be a file path.'); + } + } elseif ($argument !== '--check') { + throw new InvalidArgumentException('Unknown dependency inventory argument.'); + } +} $lock = json_decode((string) file_get_contents($root . '/composer.lock'), true, flags: JSON_THROW_ON_ERROR); $composer = json_decode((string) file_get_contents($root . '/composer.json'), true, flags: JSON_THROW_ON_ERROR); $report = ['schema_version' => 1, 'lock_sha256' => hash_file('sha256', $root . '/composer.lock'), 'packages' => [], 'services_and_assets' => [ @@ -107,17 +118,19 @@ ]; } } -if (!is_dir($root . '/docs')) { - mkdir($root . '/docs', 0755, true); +if (!is_dir(dirname($output))) { + mkdir(dirname($output), 0755, true); } $json = json_encode($report, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR) . "\n"; if (in_array('--check', $argv, true)) { - $saved = $root . '/docs/dependencies.json'; + $saved = $output; if (!is_file($saved) || file_get_contents($saved) !== $json) { fwrite(STDERR, "Dependency report differs; regenerate with composer dependencies.\n"); exit(1); } } else { - file_put_contents($root . '/docs/dependencies.json', $json); + if (file_put_contents($output, $json) !== strlen($json)) { + throw new RuntimeException('Unable to write dependency inventory.'); + } } echo 'Dependency inventory: ' . count($report['packages']) . " locked packages. License text checks are evidence, not a legal certification.\n"; From ef1c869dd3b87f6c4f01b8ca3a1639b8c751036e Mon Sep 17 00:00:00 2001 From: WizardLoop Date: Fri, 16 Oct 2026 13:34:01 +0300 Subject: [PATCH 3/3] Verify Linux source links and deployable archive identity Preserve only the two pinned upstream documentation symlinks, reject Git replacement identity changes, and exercise Docker from the actual ZIP. Refresh current inventory evidence and add regression coverage. --- .github/workflows/ci.yml | 12 +++ docs/dependencies.json | 2 +- resources/release/README.md | 2 + resources/release/source-manifest.json | 12 +++ scripts/package-release.py | 37 ++++++-- tests/SourceInputsTest.php | 37 ++++++++ tests/release_packaging_test.py | 117 +++++++++++++++++++++++++ 7 files changed, 210 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 39382a5..6ebbf4f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,6 +39,18 @@ jobs: - name: Build exact-commit release archives if: matrix.php == '8.4' run: composer package + - name: Verify deployment ZIP without Git or BUILD_COMMIT override + if: matrix.php == '8.4' + env: + EXPECTED_COMMIT: ${{ github.sha }} + run: | + archive_dir="$RUNNER_TEMP/shabbat-archive" + mkdir "$archive_dir" + unzip -q "dist/shabbat-$(cat VERSION).zip" -d "$archive_dir" + docker build -t shabbat-archive-ci "$archive_dir" + docker run --rm shabbat-archive-ci php bin/runtime-permissions.php --require-non-root + docker run --rm shabbat-archive-ci php bin/self-check.php --release + docker run --rm -e EXPECTED_COMMIT shabbat-archive-ci php -r '$m=json_decode(file_get_contents("/app/build-info.json"),true,flags:JSON_THROW_ON_ERROR); if ($m["commit"]!==getenv("EXPECTED_COMMIT") || $m["local_changes"]!==false) { exit(1); } echo "Archive identity retained.\n";' - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 if: matrix.php == '8.4' with: diff --git a/docs/dependencies.json b/docs/dependencies.json index 84c8fb3..90f9e57 100644 --- a/docs/dependencies.json +++ b/docs/dependencies.json @@ -1856,7 +1856,7 @@ "local_patches": [ { "manifest": "patches/madelineproto/manifest.json", - "sha256": "1f46278a04f34ff574e30f034b800d3120b9e47ad2135270f9242150989b57fe", + "sha256": "a2dc6507d5f7dc8d80ec2dd0b5cfdb267ae71d83d3a7131b1023898c626274fd", "package": "danog/madelineproto", "target": "src/Loop/Update/UpdateLoop.php", "approved": [ diff --git a/resources/release/README.md b/resources/release/README.md index 8fc6b3f..68a6f37 100644 --- a/resources/release/README.md +++ b/resources/release/README.md @@ -10,6 +10,8 @@ The manifest maps each supplementary archive path to its checked-in file below p These inputs were reverified against the published v3.0.0-dev.9 source asset and its upstream provenance records. Source URLs, revisions, Git blobs and file hashes remain in the manifest. The Git attributes prevent line-ending conversion of the preferred-source files; upstream attributes are stored as .gitattributes.source with the original archive path in the manifest. Do not edit upstream files or license notices to make a hash check pass; review and repin an intentional upstream change. +The two approved upstream documentation symlinks are recorded explicitly in source_symlinks: danog/async-orm and danog/telegram-entities each link docs/index.md to ../README.md within the same locked package. The historical Windows extraction stored the link-target text as regular files; its approved SHA-256 values remain unchanged. Packaging accepts only these exact target bytes, whether read from native symlinks or those materialized files, and writes them with the original Unix symlink mode 120777 in the corresponding-source ZIP. Unlisted symlinks and targets outside their package are rejected. The deployment application ZIP contains no dependency symlinks. + The two public upstream Amp HTTP Server development TLS private-key examples are omitted by exact approved hash. Their recorded omissions remain in the manifest. Installed development tools, generated Composer autoload/bin metadata, PHP, SQLite and operating-system/base-image source remain outside this runtime source collection. The Windows helper association is supported by original release/history evidence, but its binaries were not reproducibly rebuilt. The supplied MadelineProto generators were not executed; upstream translation/documentation steps that depend on mutable remote services are not claimed reproducible offline. See [licensing](../../docs/LICENSING.md) and [technical provenance](../../docs/THIRD_PARTY_DETAILS.md) for the exact scope and remaining findings. diff --git a/resources/release/source-manifest.json b/resources/release/source-manifest.json index 75aa327..dbc07a2 100644 --- a/resources/release/source-manifest.json +++ b/resources/release/source-manifest.json @@ -584,6 +584,18 @@ "file_count": 16 } ], + "source_symlinks": { + "vendor/danog/async-orm/docs/index.md": { + "target": "../README.md", + "mode": "120777", + "sha256": "dbcc210d7f4962499db6d4cfa18658e26d05ee700c962a811cac911f095e22fd" + }, + "vendor/danog/telegram-entities/docs/index.md": { + "target": "../README.md", + "mode": "120777", + "sha256": "dbcc210d7f4962499db6d4cfa18658e26d05ee700c962a811cac911f095e22fd" + } + }, "files_sha256": { "additional-source/amphp-windows-process-wrapper/.gitattributes": "e6518f1394b1372580e03c792bf6b1a51766e1da051815457fc881bf78476ecd", "additional-source/amphp-windows-process-wrapper/.gitignore": "122661b5b5b483734ef04f7f291a24dcc786ffb0c9e92a1f35b2deb59ebb26fd", diff --git a/scripts/package-release.py b/scripts/package-release.py index 68dc1f3..b85e0f6 100644 --- a/scripts/package-release.py +++ b/scripts/package-release.py @@ -11,6 +11,7 @@ import hashlib import json import os +import posixpath from pathlib import Path, PurePosixPath import re import subprocess @@ -64,7 +65,7 @@ def scan(path, data): def git(root, *args, data=None): - return subprocess.run(['git', '-C', str(root), *args], input=data, + return subprocess.run(['git', '--no-replace-objects', '-C', str(root), *args], input=data, capture_output=True, check=True).stdout @@ -139,6 +140,20 @@ def dependencies(root, app, dependency_archive=None): 'Source inventory contains an unlocked/development package') require(all(any(p.startswith(prefix) for p in expected) for prefix in prefixes), 'Source inventory omits a locked runtime package') + links = scope.get('source_symlinks', {}) + for path, link in links.items(): + require(path in expected and path.startswith('vendor/') and path not in preferred, + 'Unexpected source symlink: ' + path) + prefix = next(prefix for prefix in prefixes if path.startswith(prefix)) + target = link['target'] + require(isinstance(target, str) and target and not target.startswith('/') + and '\\' not in target and not re.match(r'[A-Za-z]:', target), + 'Unsafe source symlink target: ' + path) + resolved = posixpath.normpath(posixpath.join(posixpath.dirname(path), target)) + require(resolved.startswith(prefix) and resolved in expected and resolved not in links, + 'Source symlink escapes its package or has an unreviewed target: ' + path) + require(link['mode'] == '120777' and link['sha256'] == expected[path] + and sha(target.encode()) == expected[path], 'Unapproved source symlink: ' + path) archive = zipfile.ZipFile(dependency_archive) if dependency_archive else None try: if archive: @@ -155,8 +170,12 @@ def dependencies(root, app, dependency_archive=None): data = archive.read(path) else: source = root / path - require(source.is_file() and not source.is_symlink(), 'Missing runtime source: ' + path) - data = source.read_bytes() + if source.is_symlink(): + require(path in links, 'Unapproved symlink in runtime source: ' + path) + data = os.readlink(source).encode() + else: + require(source.is_file(), 'Missing runtime source: ' + path) + data = source.read_bytes() require(sha(data) == digest, 'Unapproved dependency source bytes: ' + path) scan(path, data) payload[path] = data @@ -169,9 +188,9 @@ def dependencies(root, app, dependency_archive=None): folder = root / 'vendor' / name actual = set() for file in folder.rglob('*'): - require(not file.is_symlink(), 'Symlink in runtime source: ' + str(file)) - if file.is_file(): - path = file.relative_to(root).as_posix() + path = file.relative_to(root).as_posix() + require(not file.is_symlink() or path in links, 'Unapproved symlink in runtime source: ' + path) + if file.is_file() or file.is_symlink(): if path in omitted: require(sha(file.read_bytes()) == omitted[path], 'Changed public example key: ' + path) else: @@ -220,7 +239,7 @@ def package(root, output, dependency_archive=None): 'Application files match that Git tree byte for byte. The source offer includes ' 'the locked runtime package sources, active local patches and their base files, ' 'licenses, and the reviewed preferred-source supplements. All selected bytes are ' - 'pinned by `source-scope.json`. Development dependencies and generated Composer ' + 'pinned by `source-scope.json`. Reviewed upstream source symlinks retain their relative targets and Unix ZIP modes. Development dependencies and generated Composer ' 'autoload files are excluded. This is a source offer, not an installed vendor tree.\n\n' 'External platform components and limitations:\n\n' + '\n'.join('- ' + str(x) for x in scope['limits']) + '\n') @@ -234,7 +253,9 @@ def package(root, output, dependency_archive=None): source_entries = dict(application_entries, **payload, **{'source-scope.json': json_bytes(scope), 'SOURCE-SCOPE.md': source_text.encode()}) artifacts = [write_archive(temp / names[0], application_entries, modes, stamp), - write_archive(temp / names[1], source_entries, modes, stamp)] + write_archive(temp / names[1], source_entries, + dict(modes, **{p: int(link['mode'], 8) + for p, link in scope.get('source_symlinks', {}).items()}), stamp)] manifest = {'repository': 'https://github.com/WizardLoop/shabbat', 'tag': 'v' + version, 'version': version, 'prerelease': '-' in version, **metadata, 'git_files': len(app), 'composer_lock_sha256': sha(app['composer.lock']), diff --git a/tests/SourceInputsTest.php b/tests/SourceInputsTest.php index a9e4db8..7b794c2 100644 --- a/tests/SourceInputsTest.php +++ b/tests/SourceInputsTest.php @@ -61,6 +61,43 @@ public function testRuntimeSourceInventoryMatchesTheLockAndHasNoUnownedFiles(): } } + public function testApprovedSourceSymlinksRetainExactUpstreamTargetsWithinLockedPackages(): void + { + $manifest = $this->manifest(); + $approved = [ + 'vendor/danog/async-orm/docs/index.md', + 'vendor/danog/telegram-entities/docs/index.md', + ]; + self::assertSame($approved, array_keys($manifest['source_symlinks'])); + foreach ($manifest['source_symlinks'] as $path => $link) { + self::assertSame(['target', 'mode', 'sha256'], array_keys($link)); + self::assertSame('../README.md', $link['target']); + self::assertSame('120777', $link['mode']); + self::assertSame('dbcc210d7f4962499db6d4cfa18658e26d05ee700c962a811cac911f095e22fd', $link['sha256']); + self::assertSame(hash('sha256', $link['target']), $link['sha256']); + self::assertSame($manifest['files_sha256'][$path], $link['sha256']); + self::assertArrayNotHasKey($path, $manifest['preferred_source']); + self::assertStringNotContainsString('\\', $link['target']); + self::assertStringNotContainsString(':', $link['target']); + self::assertStringNotContainsString("\0", $link['target']); + self::assertFalse(str_starts_with($link['target'], '/')); + $parts = explode('/', $path); + $packageRoot = implode('/', array_slice($parts, 0, 3)); + $relative = explode('/', dirname(implode('/', array_slice($parts, 3)))); + foreach (explode('/', $link['target']) as $component) { + if ($component === '..') { + self::assertNotEmpty($relative, 'A source symlink must not escape its locked package.'); + array_pop($relative); + } elseif ($component !== '.' && $component !== '') { + $relative[] = $component; + } + } + $target = $packageRoot . '/' . implode('/', $relative); + self::assertArrayHasKey($target, $manifest['files_sha256']); + self::assertArrayNotHasKey($target, $manifest['source_symlinks'], 'Approved source links resolve directly to regular files.'); + } + } + public function testPreferredSourceFilesAndOriginalLicensesMatchApprovedBytes(): void { $root = dirname(__DIR__); diff --git a/tests/release_packaging_test.py b/tests/release_packaging_test.py index b2b5760..f960ed1 100644 --- a/tests/release_packaging_test.py +++ b/tests/release_packaging_test.py @@ -144,6 +144,37 @@ def write(self, relative, data): path.parent.mkdir(parents=True, exist_ok=True) path.write_bytes(data) + def source_symlink_fixture(self, native=False): + path = RUNTIME + "docs/index.md" + target = "../README.md" + readme = RUNTIME + "README.md" + pointer = target.encode("utf-8") + self.write(readme, b"Reviewed runtime documentation.\n") + self.scope_copy["files_sha256"][readme] = digest((self.root / readme).read_bytes()) + self.scope_copy["files_sha256"][path] = digest(pointer) + self.scope_copy["source_symlinks"] = { + path: {"target": target, "mode": "120777", "sha256": digest(pointer)}, + } + self.set_scope() + destination = self.root / path + destination.parent.mkdir(parents=True, exist_ok=True) + if native: + try: + os.symlink(target, destination) + except OSError as error: + if os.name == "nt" and ( + getattr(error, "winerror", None) in (50, 1314) + or error.errno in (1, 13, 38) + ): + self.skipTest( + "Windows runner cannot create native symlinks; " + "the pointer-file and ZIP-mode cases still run: " + str(error) + ) + raise + else: + destination.write_bytes(pointer) + return path, target, readme + def source_zip(self, entries=None, duplicate=None): path = self.base / "dependency-input.zip" with warnings.catch_warnings(): @@ -186,6 +217,36 @@ def test_hidden_worktree_byte_mismatch_is_rejected(self): with self.assertRaisesRegex(ValueError, "Working bytes differ"): PACKAGER.application(self.root) + def test_git_replacement_cannot_mix_commit_identity_and_source(self): + original = run_git(self.root, "rev-parse", "HEAD").decode().strip() + replacement_readme = b"Replacement commit source must not use the original identity.\n" + self.write("README.md", replacement_readme) + run_git(self.root, "add", "README.md") + run_git(self.root, "commit", "--quiet", "-m", "Replacement source fixture") + replacement = run_git(self.root, "rev-parse", "HEAD").decode().strip() + run_git(self.root, "reset", "--soft", original) + run_git(self.root, "replace", original, replacement) + + # Ordinary Git now reports identity A with tree/index/worktree B as clean. + self.assertEqual(original, run_git(self.root, "rev-parse", "HEAD").decode().strip()) + self.assertEqual(replacement_readme, run_git(self.root, "show", "HEAD:README.md")) + self.assertEqual(b"", run_git(self.root, "status", "--porcelain=v1", "--untracked-files=all")) + output = self.base / "replacement-output" + with self.assertRaisesRegex(ValueError, "clean committed checkout"): + PACKAGER.package(self.root, output) + self.assertFalse(output.exists()) + + # Restoring the actual A tree must package A bytes, despite the local ref. + run_git(self.root, "--no-replace-objects", "reset", "--hard", original) + self.assertEqual(replacement_readme, run_git(self.root, "show", "HEAD:README.md")) + manifest = PACKAGER.package(self.root, output) + self.assertEqual(original, manifest["commit"]) + with zipfile.ZipFile(output / "shabbat-3.0.0.zip") as archive: + self.assertEqual(self.app["README.md"], archive.read("README.md")) + metadata = json.loads(archive.read("build-info.json")) + self.assertEqual(original, metadata["commit"]) + self.assertEqual(manifest["application_source_sha256"], metadata["application_source_sha256"]) + def test_ignored_source_input_is_rejected(self): self.write("src/ignored.php", b"> 16) + self.assertEqual(target.encode("utf-8"), archive.read(path)) + self.assertEqual((self.root / readme).read_bytes(), archive.read(readme)) + scope = json.loads(archive.read("source-scope.json")) + self.assertEqual(scope["files_sha256"][path], digest(archive.read(path))) + with zipfile.ZipFile(output / "shabbat-3.0.0.zip") as archive: + self.assertNotIn(path, archive.namelist()) + + def test_source_symlink_unapproved_native_is_rejected(self): + self.source_symlink_fixture(native=True) + self.scope_copy.pop("source_symlinks") + self.set_scope() + with self.assertRaisesRegex(ValueError, "Unapproved symlink"): + PACKAGER.dependencies(self.root, self.app) + + def test_source_symlink_outside_package_and_absolute_targets_are_rejected(self): + path, _, _ = self.source_symlink_fixture() + for target in ("../../outside.php", "/outside.php", "C:/outside.php", "..\\outside.php"): + with self.subTest(target=target): + pointer = target.encode("utf-8") + self.scope_copy["files_sha256"][path] = digest(pointer) + self.scope_copy["source_symlinks"][path] = { + "target": target, "mode": "120777", "sha256": digest(pointer), + } + self.write(path, pointer) + self.set_scope() + with self.assertRaisesRegex(ValueError, "Unsafe source symlink|Source symlink escapes"): + PACKAGER.dependencies(self.root, self.app) + + def test_source_symlink_changed_native_target_is_rejected(self): + path, _, _ = self.source_symlink_fixture(native=True) + (self.root / path).unlink() + os.symlink("../LICENSE", self.root / path) + with self.assertRaisesRegex(ValueError, "Unapproved dependency source bytes"): + PACKAGER.dependencies(self.root, self.app) + def test_duplicate_input_zip_entry_is_rejected(self): path = self.source_zip(duplicate=RUNTIME + "LICENSE") with self.assertRaisesRegex(ValueError, "Duplicate source ZIP entry"):