From c41a723af7e03a0a0576a642404a23ef9ab2fdf2 Mon Sep 17 00:00:00 2001 From: Arsen Mirzaev Tatyano-Muradovich Date: Fri, 30 Aug 2024 22:04:28 +0700 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81=20?= =?UTF-8?q?=D0=B8=D0=B7=20=D0=B4=D1=80=D1=83=D0=B3=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D1=80=D0=B5=D0=BF=D0=BE=D0=B7=D0=B8=D1=82=D0=BE=D1=80=D0=B8?= =?UTF-8?q?=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + LICENSE | 11 + README.md | 3 + composer.json | 28 + composer.lock | 1741 +++++++ .../registry/requests/system/emojis.txt | 4210 +++++++++++++++++ .../registry/requests/system/public/robot.php | 675 +++ .../requests/system/settings/.gitignore | 3 + .../system/settings/arangodb.php.sample | 8 + .../requests/system/settings/key.php.sample | 3 + telegram-robot.service | 16 + 11 files changed, 6699 insertions(+) create mode 100755 .gitignore create mode 100755 LICENSE create mode 100755 README.md create mode 100755 composer.json create mode 100755 composer.lock create mode 100755 mirzaev/spetsresurs/telegram/registry/requests/system/emojis.txt create mode 100755 mirzaev/spetsresurs/telegram/registry/requests/system/public/robot.php create mode 100755 mirzaev/spetsresurs/telegram/registry/requests/system/settings/.gitignore create mode 100755 mirzaev/spetsresurs/telegram/registry/requests/system/settings/arangodb.php.sample create mode 100755 mirzaev/spetsresurs/telegram/registry/requests/system/settings/key.php.sample create mode 100755 telegram-robot.service diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..22d0d82 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +vendor diff --git a/LICENSE b/LICENSE new file mode 100755 index 0000000..7a3094a --- /dev/null +++ b/LICENSE @@ -0,0 +1,11 @@ +DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE +Version 2, December 2004 + +Copyright (C) 2004 Sam Hocevar + +Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed. + +DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/README.md b/README.md new file mode 100755 index 0000000..b2a6855 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Telegram-robot for registering for tasks + +Synchronizes accounts with the site, displays a list of published applications with a selection by date, and also register to tasks \ No newline at end of file diff --git a/composer.json b/composer.json new file mode 100755 index 0000000..41fcf2b --- /dev/null +++ b/composer.json @@ -0,0 +1,28 @@ +{ + "name": "mirzaev/spetsresurs-telegram-registry-requests", + "type": "robot", + "require": { + "triagens/arangodb": "^3.8", + "mirzaev/arangodb": "^1.0", + "badfarm/zanzara": "^0.9.1", + "nyholm/psr7": "^1.8" + }, + "license": "WTFPL", + "autoload": { + "psr-4": { + "mirzaev\\spetsresurs\\telegram\\registry\\requests\\": "mirzaev/spetsresurs/telegram/registry/requests/system/" + } + }, + "authors": [ + { + "name": "Arsen Mirzaev Tatyano-Muradovich", + "email": "arsen@mirzaev.sexy" + } + ], + "minimum-stability": "stable", + "config": { + "allow-plugins": { + "php-http/discovery": true + } + } +} diff --git a/composer.lock b/composer.lock new file mode 100755 index 0000000..61e9cde --- /dev/null +++ b/composer.lock @@ -0,0 +1,1741 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "24836ff235617e61113ffdb67c6cf37d", + "packages": [ + { + "name": "badfarm/zanzara", + "version": "0.9.1", + "source": { + "type": "git", + "url": "https://github.com/badfarm/zanzara.git", + "reference": "de4f3df9006d7e7cce0c15033dceafbad9348576" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/badfarm/zanzara/zipball/de4f3df9006d7e7cce0c15033dceafbad9348576", + "reference": "de4f3df9006d7e7cce0c15033dceafbad9348576", + "shasum": "" + }, + "require": { + "clue/http-proxy-react": "^1.8", + "ext-json": "*", + "ext-readline": "*", + "netresearch/jsonmapper": "^4.1", + "opis/closure": "^3.6", + "php": ">=7.4", + "php-di/php-di": "^6.4", + "php-http/multipart-stream-builder": "^1.2", + "psr/container": "^1.1", + "psr/log": "^1.1", + "react/cache": "^1.2", + "react/event-loop": "^1.3", + "react/http": "^1.8" + }, + "require-dev": { + "monolog/monolog": "^2.9", + "phpunit/phpunit": "^9.6", + "symfony/dotenv": "^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Zanzara\\": "src/Zanzara" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michele Righetti" + }, + { + "name": "Mattia Corradi" + } + ], + "description": "Asynchronous PHP Telegram Bot Framework", + "keywords": [ + "async", + "bot", + "php", + "reactphp", + "telegram" + ], + "support": { + "issues": "https://github.com/badfarm/zanzara/issues", + "source": "https://github.com/badfarm/zanzara/tree/0.9.1" + }, + "time": "2023-04-25T18:44:20+00:00" + }, + { + "name": "clue/http-proxy-react", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/clue/reactphp-http-proxy.git", + "reference": "09366dd3e13b36b90f8e47a6acaf5a2c96b79fb5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/clue/reactphp-http-proxy/zipball/09366dd3e13b36b90f8e47a6acaf5a2c96b79fb5", + "reference": "09366dd3e13b36b90f8e47a6acaf5a2c96b79fb5", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "react/promise": "^3 || ^2.1 || ^1.2.1", + "react/socket": "^1.12", + "ringcentral/psr7": "^1.2" + }, + "require-dev": { + "clue/block-react": "^1.5", + "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8", + "react/event-loop": "^1.2", + "react/http": "^1.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Clue\\React\\HttpProxy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering" + } + ], + "description": "Async HTTP proxy connector, tunnel any TCP/IP-based protocol through an HTTP CONNECT proxy server, built on top of ReactPHP", + "homepage": "https://github.com/clue/reactphp-http-proxy", + "keywords": [ + "async", + "connect", + "http", + "proxy", + "reactphp" + ], + "support": { + "issues": "https://github.com/clue/reactphp-http-proxy/issues", + "source": "https://github.com/clue/reactphp-http-proxy/tree/v1.8.0" + }, + "funding": [ + { + "url": "https://clue.engineering/support", + "type": "custom" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2022-09-01T14:36:49+00:00" + }, + { + "name": "evenement/evenement", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/igorw/evenement.git", + "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7", + "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Evenement": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + } + ], + "description": "Événement is a very simple event dispatching library for PHP", + "keywords": [ + "event-dispatcher", + "event-emitter" + ], + "support": { + "issues": "https://github.com/igorw/evenement/issues", + "source": "https://github.com/igorw/evenement/tree/master" + }, + "time": "2017-07-23T21:35:13+00:00" + }, + { + "name": "fig/http-message-util", + "version": "1.1.5", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message-util.git", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0 || ^8.0" + }, + "suggest": { + "psr/http-message": "The package containing the PSR-7 interfaces" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Fig\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "issues": "https://github.com/php-fig/http-message-util/issues", + "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" + }, + "time": "2020-11-24T22:02:12+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", + "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "nesbot/carbon": "^2.61", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2023-01-30T18:31:20+00:00" + }, + { + "name": "mirzaev/arangodb", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://git.mirzaev.sexy/mirzaev/arangodb", + "reference": "e7da9978d01d3f8bdef6c74809dfb4eb8989f92c" + }, + "require": { + "php": "^8.1", + "triagens/arangodb": "~3.8" + }, + "require-dev": { + "phpunit/phpunit": "^9.3.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "mirzaev\\arangodb\\": "mirzaev/arangodb/system" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "WTFPL" + ], + "authors": [ + { + "name": "Arsen Mirzaev Tatyano-Muradovich", + "email": "arsen@mirzaev.sexy", + "homepage": "https://mirzaev.sexy", + "role": "Developer" + } + ], + "description": "Simple PHP-framework for ArangoDB", + "homepage": "https://git.hood.su/mirzaev/arangodb", + "keywords": [ + "ArangoDb" + ], + "support": { + "email": "arsen@mirzaev.sexy", + "issues": "https://git.mirzaev.sexy/mirzaev/arangodb/issues", + "wiki": "https://git.mirzaev.sexy/mirzaev/arangodb/manual" + }, + "funding": [ + { + "url": "https://fund.mirzaev.sexy", + "type": "funding" + } + ], + "time": "2022-11-06T00:03:56+00:00" + }, + { + "name": "netresearch/jsonmapper", + "version": "v4.2.0", + "source": { + "type": "git", + "url": "https://github.com/cweiske/jsonmapper.git", + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956", + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0", + "squizlabs/php_codesniffer": "~3.5" + }, + "type": "library", + "autoload": { + "psr-0": { + "JsonMapper": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "OSL-3.0" + ], + "authors": [ + { + "name": "Christian Weiske", + "email": "cweiske@cweiske.de", + "homepage": "http://github.com/cweiske/jsonmapper/", + "role": "Developer" + } + ], + "description": "Map nested JSON structures onto PHP classes", + "support": { + "email": "cweiske@cweiske.de", + "issues": "https://github.com/cweiske/jsonmapper/issues", + "source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0" + }, + "time": "2023-04-09T17:37:40+00:00" + }, + { + "name": "nyholm/psr7", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/Nyholm/psr7.git", + "reference": "3cb4d163b58589e47b35103e8e5e6a6a475b47be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Nyholm/psr7/zipball/3cb4d163b58589e47b35103e8e5e6a6a475b47be", + "reference": "3cb4d163b58589e47b35103e8e5e6a6a475b47be", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0" + }, + "provide": { + "php-http/message-factory-implementation": "1.0", + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "http-interop/http-factory-tests": "^0.9", + "php-http/message-factory": "^1.0", + "php-http/psr7-integration-tests": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", + "symfony/error-handler": "^4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Nyholm\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" + }, + { + "name": "Martijn van der Ven", + "email": "martijn@vanderven.se" + } + ], + "description": "A fast PHP7 implementation of PSR-7", + "homepage": "https://tnyholm.se", + "keywords": [ + "psr-17", + "psr-7" + ], + "support": { + "issues": "https://github.com/Nyholm/psr7/issues", + "source": "https://github.com/Nyholm/psr7/tree/1.8.0" + }, + "funding": [ + { + "url": "https://github.com/Zegnat", + "type": "github" + }, + { + "url": "https://github.com/nyholm", + "type": "github" + } + ], + "time": "2023-05-02T11:26:24+00:00" + }, + { + "name": "opis/closure", + "version": "3.6.3", + "source": { + "type": "git", + "url": "https://github.com/opis/closure.git", + "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opis/closure/zipball/3d81e4309d2a927abbe66df935f4bb60082805ad", + "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad", + "shasum": "" + }, + "require": { + "php": "^5.4 || ^7.0 || ^8.0" + }, + "require-dev": { + "jeremeamia/superclosure": "^2.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.6.x-dev" + } + }, + "autoload": { + "files": [ + "functions.php" + ], + "psr-4": { + "Opis\\Closure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marius Sarca", + "email": "marius.sarca@gmail.com" + }, + { + "name": "Sorin Sarca", + "email": "sarca_sorin@hotmail.com" + } + ], + "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", + "homepage": "https://opis.io/closure", + "keywords": [ + "anonymous functions", + "closure", + "function", + "serializable", + "serialization", + "serialize" + ], + "support": { + "issues": "https://github.com/opis/closure/issues", + "source": "https://github.com/opis/closure/tree/3.6.3" + }, + "time": "2022-01-27T09:35:39+00:00" + }, + { + "name": "php-di/invoker", + "version": "2.3.3", + "source": { + "type": "git", + "url": "https://github.com/PHP-DI/Invoker.git", + "reference": "cd6d9f267d1a3474bdddf1be1da079f01b942786" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/cd6d9f267d1a3474bdddf1be1da079f01b942786", + "reference": "cd6d9f267d1a3474bdddf1be1da079f01b942786", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "psr/container": "^1.0|^2.0" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "mnapoli/hard-mode": "~0.3.0", + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Invoker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Generic and extensible callable invoker", + "homepage": "https://github.com/PHP-DI/Invoker", + "keywords": [ + "callable", + "dependency", + "dependency-injection", + "injection", + "invoke", + "invoker" + ], + "support": { + "issues": "https://github.com/PHP-DI/Invoker/issues", + "source": "https://github.com/PHP-DI/Invoker/tree/2.3.3" + }, + "funding": [ + { + "url": "https://github.com/mnapoli", + "type": "github" + } + ], + "time": "2021-12-13T09:22:56+00:00" + }, + { + "name": "php-di/php-di", + "version": "6.4.0", + "source": { + "type": "git", + "url": "https://github.com/PHP-DI/PHP-DI.git", + "reference": "ae0f1b3b03d8b29dff81747063cbfd6276246cc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/ae0f1b3b03d8b29dff81747063cbfd6276246cc4", + "reference": "ae0f1b3b03d8b29dff81747063cbfd6276246cc4", + "shasum": "" + }, + "require": { + "laravel/serializable-closure": "^1.0", + "php": ">=7.4.0", + "php-di/invoker": "^2.0", + "php-di/phpdoc-reader": "^2.0.1", + "psr/container": "^1.0" + }, + "provide": { + "psr/container-implementation": "^1.0" + }, + "require-dev": { + "doctrine/annotations": "~1.10", + "friendsofphp/php-cs-fixer": "^2.4", + "mnapoli/phpunit-easymock": "^1.2", + "ocramius/proxy-manager": "^2.11.2", + "phpstan/phpstan": "^0.12", + "phpunit/phpunit": "^9.5" + }, + "suggest": { + "doctrine/annotations": "Install it if you want to use annotations (version ~1.2)", + "ocramius/proxy-manager": "Install it if you want to use lazy injection (version ~2.0)" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "DI\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The dependency injection container for humans", + "homepage": "https://php-di.org/", + "keywords": [ + "PSR-11", + "container", + "container-interop", + "dependency injection", + "di", + "ioc", + "psr11" + ], + "support": { + "issues": "https://github.com/PHP-DI/PHP-DI/issues", + "source": "https://github.com/PHP-DI/PHP-DI/tree/6.4.0" + }, + "funding": [ + { + "url": "https://github.com/mnapoli", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/php-di/php-di", + "type": "tidelift" + } + ], + "time": "2022-04-09T16:46:38+00:00" + }, + { + "name": "php-di/phpdoc-reader", + "version": "2.2.1", + "source": { + "type": "git", + "url": "https://github.com/PHP-DI/PhpDocReader.git", + "reference": "66daff34cbd2627740ffec9469ffbac9f8c8185c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-DI/PhpDocReader/zipball/66daff34cbd2627740ffec9469ffbac9f8c8185c", + "reference": "66daff34cbd2627740ffec9469ffbac9f8c8185c", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "require-dev": { + "mnapoli/hard-mode": "~0.3.0", + "phpunit/phpunit": "^8.5|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "PhpDocReader\\": "src/PhpDocReader" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PhpDocReader parses @var and @param values in PHP docblocks (supports namespaced class names with the same resolution rules as PHP)", + "keywords": [ + "phpdoc", + "reflection" + ], + "support": { + "issues": "https://github.com/PHP-DI/PhpDocReader/issues", + "source": "https://github.com/PHP-DI/PhpDocReader/tree/2.2.1" + }, + "time": "2020-10-12T12:39:22+00:00" + }, + { + "name": "php-http/discovery", + "version": "1.18.1", + "source": { + "type": "git", + "url": "https://github.com/php-http/discovery.git", + "reference": "f258b3a1d16acb7b21f3b42d7a2494a733365237" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/discovery/zipball/f258b3a1d16acb7b21f3b42d7a2494a733365237", + "reference": "f258b3a1d16acb7b21f3b42d7a2494a733365237", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0|^2.0", + "php": "^7.1 || ^8.0" + }, + "conflict": { + "nyholm/psr7": "<1.0", + "zendframework/zend-diactoros": "*" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "*", + "psr/http-factory-implementation": "*", + "psr/http-message-implementation": "*" + }, + "require-dev": { + "composer/composer": "^1.0.2|^2.0", + "graham-campbell/phpspec-skip-example-extension": "^5.0", + "php-http/httplug": "^1.0 || ^2.0", + "php-http/message-factory": "^1.0", + "phpspec/phpspec": "^5.1 || ^6.1 || ^7.3", + "symfony/phpunit-bridge": "^6.2" + }, + "type": "composer-plugin", + "extra": { + "class": "Http\\Discovery\\Composer\\Plugin", + "plugin-optional": true + }, + "autoload": { + "psr-4": { + "Http\\Discovery\\": "src/" + }, + "exclude-from-classmap": [ + "src/Composer/Plugin.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations", + "homepage": "http://php-http.org", + "keywords": [ + "adapter", + "client", + "discovery", + "factory", + "http", + "message", + "psr17", + "psr7" + ], + "support": { + "issues": "https://github.com/php-http/discovery/issues", + "source": "https://github.com/php-http/discovery/tree/1.18.1" + }, + "time": "2023-05-17T08:53:10+00:00" + }, + { + "name": "php-http/multipart-stream-builder", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/multipart-stream-builder.git", + "reference": "f5938fd135d9fa442cc297dc98481805acfe2b6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/multipart-stream-builder/zipball/f5938fd135d9fa442cc297dc98481805acfe2b6a", + "reference": "f5938fd135d9fa442cc297dc98481805acfe2b6a", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "php-http/discovery": "^1.15", + "psr/http-factory-implementation": "^1.0" + }, + "require-dev": { + "nyholm/psr7": "^1.0", + "php-http/message": "^1.5", + "php-http/message-factory": "^1.0.2", + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Http\\Message\\MultipartStream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" + } + ], + "description": "A builder class that help you create a multipart stream", + "homepage": "http://php-http.org", + "keywords": [ + "factory", + "http", + "message", + "multipart stream", + "stream" + ], + "support": { + "issues": "https://github.com/php-http/multipart-stream-builder/issues", + "source": "https://github.com/php-http/multipart-stream-builder/tree/1.3.0" + }, + "time": "2023-04-28T14:10:22+00:00" + }, + { + "name": "psr/container", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.2" + }, + "time": "2021-11-05T16:50:12+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "e616d01114759c4c489f93b099585439f795fe35" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + }, + "time": "2023-04-10T20:10:41+00:00" + }, + { + "name": "psr/http-message", + "version": "1.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/1.1" + }, + "time": "2023-04-04T09:50:52+00:00" + }, + { + "name": "psr/log", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" + }, + { + "name": "react/cache", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/cache.git", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/promise": "^3.0 || ^2.0 || ^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, Promise-based cache interface for ReactPHP", + "keywords": [ + "cache", + "caching", + "promise", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/cache/issues", + "source": "https://github.com/reactphp/cache/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2022-11-30T15:59:55+00:00" + }, + { + "name": "react/dns", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/dns.git", + "reference": "3be0fc8f1eb37d6875cd6f0c6c7d0be81435de9f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/dns/zipball/3be0fc8f1eb37d6875cd6f0c6c7d0be81435de9f", + "reference": "3be0fc8f1eb37d6875cd6f0c6c7d0be81435de9f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/cache": "^1.0 || ^0.6 || ^0.5", + "react/event-loop": "^1.2", + "react/promise": "^3.0 || ^2.7 || ^1.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^4.8.35", + "react/async": "^4 || ^3 || ^2", + "react/promise-timer": "^1.9" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Dns\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async DNS resolver for ReactPHP", + "keywords": [ + "async", + "dns", + "dns-resolver", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/dns/issues", + "source": "https://github.com/reactphp/dns/tree/v1.11.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-06-02T12:45:26+00:00" + }, + { + "name": "react/event-loop", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/event-loop.git", + "reference": "6e7e587714fff7a83dcc7025aee42ab3b265ae05" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/6e7e587714fff7a83dcc7025aee42ab3b265ae05", + "reference": "6e7e587714fff7a83dcc7025aee42ab3b265ae05", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "suggest": { + "ext-pcntl": "For signal handling support when using the StreamSelectLoop" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\EventLoop\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", + "keywords": [ + "asynchronous", + "event-loop" + ], + "support": { + "issues": "https://github.com/reactphp/event-loop/issues", + "source": "https://github.com/reactphp/event-loop/tree/v1.4.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-05-05T10:11:24+00:00" + }, + { + "name": "react/http", + "version": "v1.9.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/http.git", + "reference": "bb3154dbaf2dfe3f0467f956a05f614a69d5f1d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/http/zipball/bb3154dbaf2dfe3f0467f956a05f614a69d5f1d0", + "reference": "bb3154dbaf2dfe3f0467f956a05f614a69d5f1d0", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "fig/http-message-util": "^1.1", + "php": ">=5.3.0", + "psr/http-message": "^1.0", + "react/event-loop": "^1.2", + "react/promise": "^3 || ^2.3 || ^1.2.1", + "react/socket": "^1.12", + "react/stream": "^1.2", + "ringcentral/psr7": "^1.2" + }, + "require-dev": { + "clue/http-proxy-react": "^1.8", + "clue/reactphp-ssh-proxy": "^1.4", + "clue/socks-react": "^1.4", + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "react/async": "^4 || ^3 || ^2", + "react/promise-stream": "^1.4", + "react/promise-timer": "^1.9" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Http\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven, streaming HTTP client and server implementation for ReactPHP", + "keywords": [ + "async", + "client", + "event-driven", + "http", + "http client", + "http server", + "https", + "psr-7", + "reactphp", + "server", + "streaming" + ], + "support": { + "issues": "https://github.com/reactphp/http/issues", + "source": "https://github.com/reactphp/http/tree/v1.9.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-04-26T10:29:24+00:00" + }, + { + "name": "react/promise", + "version": "v2.10.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", + "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "React\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v2.10.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-05-02T15:15:43+00:00" + }, + { + "name": "react/socket", + "version": "v1.13.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/socket.git", + "reference": "cff482bbad5848ecbe8b57da57e4e213b03619aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/socket/zipball/cff482bbad5848ecbe8b57da57e4e213b03619aa", + "reference": "cff482bbad5848ecbe8b57da57e4e213b03619aa", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/dns": "^1.11", + "react/event-loop": "^1.2", + "react/promise": "^3 || ^2.6 || ^1.2.1", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "react/async": "^4 || ^3 || ^2", + "react/promise-stream": "^1.4", + "react/promise-timer": "^1.9" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Socket\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", + "keywords": [ + "Connection", + "Socket", + "async", + "reactphp", + "stream" + ], + "support": { + "issues": "https://github.com/reactphp/socket/issues", + "source": "https://github.com/reactphp/socket/tree/v1.13.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-06-07T10:28:34+00:00" + }, + { + "name": "react/stream", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/stream.git", + "reference": "7a423506ee1903e89f1e08ec5f0ed430ff784ae9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/stream/zipball/7a423506ee1903e89f1e08ec5f0ed430ff784ae9", + "reference": "7a423506ee1903e89f1e08ec5f0ed430ff784ae9", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.8", + "react/event-loop": "^1.2" + }, + "require-dev": { + "clue/stream-filter": "~1.2", + "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Stream\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", + "keywords": [ + "event-driven", + "io", + "non-blocking", + "pipe", + "reactphp", + "readable", + "stream", + "writable" + ], + "support": { + "issues": "https://github.com/reactphp/stream/issues", + "source": "https://github.com/reactphp/stream/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://github.com/WyriHaximus", + "type": "github" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2021-07-11T12:37:55+00:00" + }, + { + "name": "ringcentral/psr7", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/ringcentral/psr7.git", + "reference": "360faaec4b563958b673fb52bbe94e37f14bc686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ringcentral/psr7/zipball/360faaec4b563958b673fb52bbe94e37f14bc686", + "reference": "360faaec4b563958b673fb52bbe94e37f14bc686", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "RingCentral\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "PSR-7 message implementation", + "keywords": [ + "http", + "message", + "stream", + "uri" + ], + "support": { + "source": "https://github.com/ringcentral/psr7/tree/master" + }, + "time": "2018-05-29T20:21:04+00:00" + }, + { + "name": "triagens/arangodb", + "version": "v3.8.0", + "source": { + "type": "git", + "url": "https://github.com/arangodb/arangodb-php.git", + "reference": "5104c4e2803d8b7fab97a0c80a3abe3f3ff3253e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/arangodb/arangodb-php/zipball/5104c4e2803d8b7fab97a0c80a3abe3f3ff3253e", + "reference": "5104c4e2803d8b7fab97a0c80a3abe3f3ff3253e", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "ArangoDBClient": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Jan Steemann", + "homepage": "https://github.com/arangodb/arangodb-php", + "role": "Developer" + }, + { + "name": "Frank Mayer", + "homepage": "https://github.com/arangodb/arangodb-php", + "role": "Developer" + }, + { + "name": "Contributors", + "homepage": "https://github.com/arangodb/arangodb-php/graphs/contributors" + } + ], + "description": "ArangoDB PHP client", + "homepage": "https://github.com/arangodb/arangodb-php", + "keywords": [ + "Arango", + "ArangoDb", + "database", + "distributed", + "document store", + "graph database", + "multi-model", + "nosql" + ], + "support": { + "issues": "https://github.com/arangodb/arangodb-php/issues", + "source": "https://github.com/arangodb/arangodb-php/tree/v3.8.0" + }, + "time": "2021-06-18T12:06:02+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "2.2.0" +} diff --git a/mirzaev/spetsresurs/telegram/registry/requests/system/emojis.txt b/mirzaev/spetsresurs/telegram/registry/requests/system/emojis.txt new file mode 100755 index 0000000..7b69344 --- /dev/null +++ b/mirzaev/spetsresurs/telegram/registry/requests/system/emojis.txt @@ -0,0 +1,4210 @@ +U+1F601 +U+1F602 +U+1F603 +U+1F604 +U+1F605 +U+1F606 +U+1F609 +U+1F60A +U+1F60B +U+1F60C +U+1F60D +U+1F60F +U+1F612 +U+1F613 +U+1F614 +U+1F616 +U+1F618 +U+1F61A +U+1F61C +U+1F61D +U+1F61E +U+1F620 +U+1F621 +U+1F622 +U+1F623 +U+1F624 +U+1F625 +U+1F628 +U+1F629 +U+1F62A +U+1F62B +U+1F62D +U+1F630 +U+1F631 +U+1F632 +U+1F633 +U+1F635 +U+1F637 +U+1F638 +U+1F639 +U+1F63A +U+1F63B +U+1F63C +U+1F63D +U+1F63E +U+1F63F +U+1F640 +U+1F645 +U+1F646 +U+1F647 +U+1F648 +U+1F649 +U+1F64A +U+1F64B +U+1F64C +U+1F64D +U+1F64E +U+1F64F +U+2702 +U+2705 +U+2708 +U+2709 +U+270A +U+270B +U+270C +U+270F +U+2712 +U+2714 +U+2716 +U+2728 +U+2733 +U+2734 +U+2744 +U+2747 +U+274C +U+274E +U+2753 +U+2754 +U+2755 +U+2757 +U+2764 +U+2795 +U+2796 +U+2797 +U+27A1 +U+27B0 +U+1F680 +U+1F683 +U+1F684 +U+1F685 +U+1F687 +U+1F689 +U+1F68C +U+1F68F +U+1F691 +U+1F692 +U+1F693 +U+1F695 +U+1F697 +U+1F699 +U+1F69A +U+1F6A2 +U+1F6A4 +U+1F6A5 +U+1F6A7 +U+1F6A8 +U+1F6A9 +U+1F6AA +U+1F6AB +U+1F6AC +U+1F6AD +U+1F6B2 +U+1F6B6 +U+1F6B9 +U+1F6BA +U+1F6BB +U+1F6BC +U+1F6BD +U+1F6BE +U+1F6C0 +U+24C2 +U+1F170 +U+1F171 +U+1F17E +U+1F17F +U+1F18E +U+1F191 +U+1F192 +U+1F193 +U+1F194 +U+1F195 +U+1F196 +U+1F197 +U+1F198 +U+1F199 +U+1F19A +U+1F1E9 U+1F1EA +U+1F1EC U+1F1E7 +U+1F1E8 U+1F1F3 +U+1F1EF U+1F1F5 +U+1F1EB U+1F1F7 +U+1F1F0 U+1F1F7 +U+1F1EA U+1F1F8 +U+1F1EE U+1F1F9 +U+1F1F7 U+1F1FA +U+1F1FA U+1F1F8 +U+1F201 +U+1F202 +U+1F21A +U+1F22F +U+1F232 +U+1F233 +U+1F234 +U+1F235 +U+1F236 +U+1F237 +U+1F238 +U+1F239 +U+1F23A +U+1F250 +U+1F251 +U+00A9 +U+00AE +U+203C +U+2049 +U+0023 U+20E3 +U+0038 U+20E3 +U+0039 U+20E3 +U+0037 U+20E3 +U+0030 U+20E3 +U+0036 U+20E3 +U+0035 U+20E3 +U+0034 U+20E3 +U+0033 U+20E3 +U+0032 U+20E3 +U+0031 U+20E3 +U+2122 +U+2139 +U+2194 +U+2195 +U+2196 +U+2197 +U+2198 +U+2199 +U+21A9 +U+21AA +U+231A +U+231B +U+23E9 +U+23EA +U+23EB +U+23EC +U+23F0 +U+23F3 +U+25AA +U+25AB +U+25B6 +U+25C0 +U+25FB +U+25FC +U+25FD +U+25FE +U+2600 +U+2601 +U+260E +U+2611 +U+2614 +U+2615 +U+261D +U+263A +U+2648 +U+2649 +U+264A +U+264B +U+264C +U+264D +U+264E +U+264F +U+2650 +U+2651 +U+2652 +U+2653 +U+2660 +U+2663 +U+2665 +U+2666 +U+2668 +U+267B +U+267F +U+2693 +U+26A0 +U+26A1 +U+26AA +U+26AB +U+26BD +U+26BE +U+26C4 +U+26C5 +U+26CE +U+26D4 +U+26EA +U+26F2 +U+26F3 +U+26F5 +U+26FA +U+26FD +U+2934 +U+2935 +U+2B05 +U+2B06 +U+2B07 +U+2B1B +U+2B1C +U+2B50 +U+2B55 +U+3030 +U+303D +U+3297 +U+3299 +U+1F004 +U+1F0CF +U+1F300 +U+1F301 +U+1F302 +U+1F303 +U+1F304 +U+1F305 +U+1F306 +U+1F307 +U+1F308 +U+1F309 +U+1F30A +U+1F30B +U+1F30C +U+1F30F +U+1F311 +U+1F313 +U+1F314 +U+1F315 +U+1F319 +U+1F31B +U+1F31F +U+1F320 +U+1F330 +U+1F331 +U+1F334 +U+1F335 +U+1F337 +U+1F338 +U+1F339 +U+1F33A +U+1F33B +U+1F33C +U+1F33D +U+1F33E +U+1F33F +U+1F340 +U+1F341 +U+1F342 +U+1F343 +U+1F344 +U+1F345 +U+1F346 +U+1F347 +U+1F348 +U+1F349 +U+1F34A +U+1F34C +U+1F34D +U+1F34E +U+1F34F +U+1F351 +U+1F352 +U+1F353 +U+1F354 +U+1F355 +U+1F356 +U+1F357 +U+1F358 +U+1F359 +U+1F35A +U+1F35B +U+1F35C +U+1F35D +U+1F35E +U+1F35F +U+1F360 +U+1F361 +U+1F362 +U+1F363 +U+1F364 +U+1F365 +U+1F366 +U+1F367 +U+1F368 +U+1F369 +U+1F36A +U+1F36B +U+1F36C +U+1F36D +U+1F36E +U+1F36F +U+1F370 +U+1F371 +U+1F372 +U+1F373 +U+1F374 +U+1F375 +U+1F376 +U+1F377 +U+1F378 +U+1F379 +U+1F37A +U+1F37B +U+1F380 +U+1F381 +U+1F382 +U+1F383 +U+1F384 +U+1F385 +U+1F386 +U+1F387 +U+1F388 +U+1F389 +U+1F38A +U+1F38B +U+1F38C +U+1F38D +U+1F38E +U+1F38F +U+1F390 +U+1F391 +U+1F392 +U+1F393 +U+1F3A0 +U+1F3A1 +U+1F3A2 +U+1F3A3 +U+1F3A4 +U+1F3A5 +U+1F3A6 +U+1F3A7 +U+1F3A8 +U+1F3A9 +U+1F3AA +U+1F3AB +U+1F3AC +U+1F3AD +U+1F3AE +U+1F3AF +U+1F3B0 +U+1F3B1 +U+1F3B2 +U+1F3B3 +U+1F3B4 +U+1F3B5 +U+1F3B6 +U+1F3B7 +U+1F3B8 +U+1F3B9 +U+1F3BA +U+1F3BB +U+1F3BC +U+1F3BD +U+1F3BE +U+1F3BF +U+1F3C0 +U+1F3C1 +U+1F3C2 +U+1F3C3 +U+1F3C4 +U+1F3C6 +U+1F3C8 +U+1F3CA +U+1F3E0 +U+1F3E1 +U+1F3E2 +U+1F3E3 +U+1F3E5 +U+1F3E6 +U+1F3E7 +U+1F3E8 +U+1F3E9 +U+1F3EA +U+1F3EB +U+1F3EC +U+1F3ED +U+1F3EE +U+1F3EF +U+1F3F0 +U+1F40C +U+1F40D +U+1F40E +U+1F411 +U+1F412 +U+1F414 +U+1F417 +U+1F418 +U+1F419 +U+1F41A +U+1F41B +U+1F41C +U+1F41D +U+1F41E +U+1F41F +U+1F420 +U+1F421 +U+1F422 +U+1F423 +U+1F424 +U+1F425 +U+1F426 +U+1F427 +U+1F428 +U+1F429 +U+1F42B +U+1F42C +U+1F42D +U+1F42E +U+1F42F +U+1F430 +U+1F431 +U+1F432 +U+1F433 +U+1F434 +U+1F435 +U+1F436 +U+1F437 +U+1F438 +U+1F439 +U+1F43A +U+1F43B +U+1F43C +U+1F43D +U+1F43E +U+1F440 +U+1F442 +U+1F443 +U+1F444 +U+1F445 +U+1F446 +U+1F447 +U+1F448 +U+1F449 +U+1F44A +U+1F44B +U+1F44C +U+1F44D +U+1F44E +U+1F44F +U+1F450 +U+1F451 +U+1F452 +U+1F453 +U+1F454 +U+1F455 +U+1F456 +U+1F457 +U+1F458 +U+1F459 +U+1F45A +U+1F45B +U+1F45C +U+1F45D +U+1F45E +U+1F45F +U+1F460 +U+1F461 +U+1F462 +U+1F463 +U+1F464 +U+1F466 +U+1F467 +U+1F468 +U+1F469 +U+1F46A +U+1F46B +U+1F46E +U+1F46F +U+1F470 +U+1F471 +U+1F472 +U+1F473 +U+1F474 +U+1F475 +U+1F476 +U+1F477 +U+1F478 +U+1F479 +U+1F47A +U+1F47B +U+1F47C +U+1F47D +U+1F47E +U+1F47F +U+1F480 +U+1F481 +U+1F482 +U+1F483 +U+1F484 +U+1F485 +U+1F486 +U+1F487 +U+1F488 +U+1F489 +U+1F48A +U+1F48B +U+1F48C +U+1F48D +U+1F48E +U+1F48F +U+1F490 +U+1F491 +U+1F492 +U+1F493 +U+1F494 +U+1F495 +U+1F496 +U+1F497 +U+1F498 +U+1F499 +U+1F49A +U+1F49B +U+1F49C +U+1F49D +U+1F49E +U+1F49F +U+1F4A0 +U+1F4A1 +U+1F4A2 +U+1F4A3 +U+1F4A4 +U+1F4A5 +U+1F4A6 +U+1F4A7 +U+1F4A8 +U+1F4A9 +U+1F4AA +U+1F4AB +U+1F4AC +U+1F4AE +U+1F4AF +U+1F4B0 +U+1F4B1 +U+1F4B2 +U+1F4B3 +U+1F4B4 +U+1F4B5 +U+1F4B8 +U+1F4B9 +U+1F4BA +U+1F4BB +U+1F4BC +U+1F4BD +U+1F4BE +U+1F4BF +U+1F4C0 +U+1F4C1 +U+1F4C2 +U+1F4C3 +U+1F4C4 +U+1F4C5 +U+1F4C6 +U+1F4C7 +U+1F4C8 +U+1F4C9 +U+1F4CA +U+1F4CB +U+1F4CC +U+1F4CD +U+1F4CE +U+1F4CF +U+1F4D0 +U+1F4D1 +U+1F4D2 +U+1F4D3 +U+1F4D4 +U+1F4D5 +U+1F4D6 +U+1F4D7 +U+1F4D8 +U+1F4D9 +U+1F4DA +U+1F4DB +U+1F4DC +U+1F4DD +U+1F4DE +U+1F4DF +U+1F4E0 +U+1F4E1 +U+1F4E2 +U+1F4E3 +U+1F4E4 +U+1F4E5 +U+1F4E6 +U+1F4E7 +U+1F4E8 +U+1F4E9 +U+1F4EA +U+1F4EB +U+1F4EE +U+1F4F0 +U+1F4F1 +U+1F4F2 +U+1F4F3 +U+1F4F4 +U+1F4F6 +U+1F4F7 +U+1F4F9 +U+1F4FA +U+1F4FB +U+1F4FC +U+1F503 +U+1F50A +U+1F50B +U+1F50C +U+1F50D +U+1F50E +U+1F50F +U+1F510 +U+1F511 +U+1F512 +U+1F513 +U+1F514 +U+1F516 +U+1F517 +U+1F518 +U+1F519 +U+1F51A +U+1F51B +U+1F51C +U+1F51D +U+1F51E +U+1F51F +U+1F520 +U+1F521 +U+1F522 +U+1F523 +U+1F524 +U+1F525 +U+1F526 +U+1F527 +U+1F528 +U+1F529 +U+1F52A +U+1F52B +U+1F52E +U+1F52F +U+1F530 +U+1F531 +U+1F532 +U+1F533 +U+1F534 +U+1F535 +U+1F536 +U+1F537 +U+1F538 +U+1F539 +U+1F53A +U+1F53B +U+1F53C +U+1F53D +U+1F550 +U+1F551 +U+1F552 +U+1F553 +U+1F554 +U+1F555 +U+1F556 +U+1F557 +U+1F558 +U+1F559 +U+1F55A +U+1F55B +U+1F5FB +U+1F5FC +U+1F5FD +U+1F5FE +U+1F5FF +U+1F600 +U+1F607 +U+1F608 +U+1F60E +U+1F610 +U+1F611 +U+1F615 +U+1F617 +U+1F619 +U+1F61B +U+1F61F +U+1F626 +U+1F627 +U+1F62C +U+1F62E +U+1F62F +U+1F634 +U+1F636 +U+1F681 +U+1F682 +U+1F686 +U+1F688 +U+1F68A +U+1F68D +U+1F68E +U+1F690 +U+1F694 +U+1F696 +U+1F698 +U+1F69B +U+1F69C +U+1F69D +U+1F69E +U+1F69F +U+1F6A0 +U+1F6A1 +U+1F6A3 +U+1F6A6 +U+1F6AE +U+1F6AF +U+1F6B0 +U+1F6B1 +U+1F6B3 +U+1F6B4 +U+1F6B5 +U+1F6B7 +U+1F6B8 +U+1F6BF +U+1F6C1 +U+1F6C2 +U+1F6C3 +U+1F6C4 +U+1F6C5 +U+1F30D +U+1F30E +U+1F310 +U+1F312 +U+1F316 +U+1F317 +U+1F318 +U+1F31A +U+1F31C +U+1F31D +U+1F31E +U+1F332 +U+1F333 +U+1F34B +U+1F350 +U+1F37C +U+1F3C7 +U+1F3C9 +U+1F3E4 +U+1F400 +U+1F401 +U+1F402 +U+1F403 +U+1F404 +U+1F405 +U+1F406 +U+1F407 +U+1F408 +U+1F409 +U+1F40A +U+1F40B +U+1F40F +U+1F410 +U+1F413 +U+1F415 +U+1F416 +U+1F42A +U+1F465 +U+1F46C +U+1F46D +U+1F4AD +U+1F4B6 +U+1F4B7 +U+1F4EC +U+1F4ED +U+1F4EF +U+1F4F5 +U+1F500 +U+1F501 +U+1F502 +U+1F504 +U+1F505 +U+1F506 +U+1F507 +U+1F509 +U+1F515 +U+1F52C +U+1F52D +U+1F55C +U+1F55D +U+1F55E +U+1F55F +U+1F560 +U+1F561 +U+1F562 +U+1F563 +U+1F564 +U+1F565 +U+1F566 +U+1F567 +U+1F601 +U+1F602 +U+1F603 +U+1F604 +U+1F605 +U+1F606 +U+1F609 +U+1F60A +U+1F60B +U+1F60C +U+1F60D +U+1F60F +U+1F612 +U+1F613 +U+1F614 +U+1F616 +U+1F618 +U+1F61A +U+1F61C +U+1F61D +U+1F61E +U+1F620 +U+1F621 +U+1F622 +U+1F623 +U+1F624 +U+1F625 +U+1F628 +U+1F629 +U+1F62A +U+1F62B +U+1F62D +U+1F630 +U+1F631 +U+1F632 +U+1F633 +U+1F635 +U+1F637 +U+1F638 +U+1F639 +U+1F63A +U+1F63B +U+1F63C +U+1F63D +U+1F63E +U+1F63F +U+1F640 +U+1F645 +U+1F646 +U+1F647 +U+1F648 +U+1F649 +U+1F64A +U+1F64B +U+1F64C +U+1F64D +U+1F64E +U+1F64F +U+2702 +U+2705 +U+2708 +U+2709 +U+270A +U+270B +U+270C +U+270F +U+2712 +U+2714 +U+2716 +U+2728 +U+2733 +U+2734 +U+2744 +U+2747 +U+274C +U+274E +U+2753 +U+2754 +U+2755 +U+2757 +U+2764 +U+2795 +U+2796 +U+2797 +U+27A1 +U+27B0 +U+1F680 +U+1F683 +U+1F684 +U+1F685 +U+1F687 +U+1F689 +U+1F68C +U+1F68F +U+1F691 +U+1F692 +U+1F693 +U+1F695 +U+1F697 +U+1F699 +U+1F69A +U+1F6A2 +U+1F6A4 +U+1F6A5 +U+1F6A7 +U+1F6A8 +U+1F6A9 +U+1F6AA +U+1F6AB +U+1F6AC +U+1F6AD +U+1F6B2 +U+1F6B6 +U+1F6B9 +U+1F6BA +U+1F6BB +U+1F6BC +U+1F6BD +U+1F6BE +U+1F6C0 +U+24C2 +U+1F170 +U+1F171 +U+1F17E +U+1F17F +U+1F18E +U+1F191 +U+1F192 +U+1F193 +U+1F194 +U+1F195 +U+1F196 +U+1F197 +U+1F198 +U+1F199 +U+1F19A +U+1F1E9 U+1F1EA +U+1F1EC U+1F1E7 +U+1F1E8 U+1F1F3 +U+1F1EF U+1F1F5 +U+1F1EB U+1F1F7 +U+1F1F0 U+1F1F7 +U+1F1EA U+1F1F8 +U+1F1EE U+1F1F9 +U+1F1F7 U+1F1FA +U+1F1FA U+1F1F8 +U+1F201 +U+1F202 +U+1F21A +U+1F22F +U+1F232 +U+1F233 +U+1F234 +U+1F235 +U+1F236 +U+1F237 +U+1F238 +U+1F239 +U+1F23A +U+1F250 +U+1F251 +U+00A9 +U+00AE +U+203C +U+2049 +U+0023 U+20E3 +U+0038 U+20E3 +U+0039 U+20E3 +U+0037 U+20E3 +U+0030 U+20E3 +U+0036 U+20E3 +U+0035 U+20E3 +U+0034 U+20E3 +U+0033 U+20E3 +U+0032 U+20E3 +U+0031 U+20E3 +U+2122 +U+2139 +U+2194 +U+2195 +U+2196 +U+2197 +U+2198 +U+2199 +U+21A9 +U+21AA +U+231A +U+231B +U+23E9 +U+23EA +U+23EB +U+23EC +U+23F0 +U+23F3 +U+25AA +U+25AB +U+25B6 +U+25C0 +U+25FB +U+25FC +U+25FD +U+25FE +U+2600 +U+2601 +U+260E +U+2611 +U+2614 +U+2615 +U+261D +U+263A +U+2648 +U+2649 +U+264A +U+264B +U+264C +U+264D +U+264E +U+264F +U+2650 +U+2651 +U+2652 +U+2653 +U+2660 +U+2663 +U+2665 +U+2666 +U+2668 +U+267B +U+267F +U+2693 +U+26A0 +U+26A1 +U+26AA +U+26AB +U+26BD +U+26BE +U+26C4 +U+26C5 +U+26CE +U+26D4 +U+26EA +U+26F2 +U+26F3 +U+26F5 +U+26FA +U+26FD +U+2934 +U+2935 +U+2B05 +U+2B06 +U+2B07 +U+2B1B +U+2B1C +U+2B50 +U+2B55 +U+3030 +U+303D +U+3297 +U+3299 +U+1F004 +U+1F0CF +U+1F300 +U+1F301 +U+1F302 +U+1F303 +U+1F304 +U+1F305 +U+1F306 +U+1F307 +U+1F308 +U+1F309 +U+1F30A +U+1F30B +U+1F30C +U+1F30F +U+1F311 +U+1F313 +U+1F314 +U+1F315 +U+1F319 +U+1F31B +U+1F31F +U+1F320 +U+1F330 +U+1F331 +U+1F334 +U+1F335 +U+1F337 +U+1F338 +U+1F339 +U+1F33A +U+1F33B +U+1F33C +U+1F33D +U+1F33E +U+1F33F +U+1F340 +U+1F341 +U+1F342 +U+1F343 +U+1F344 +U+1F345 +U+1F346 +U+1F347 +U+1F348 +U+1F349 +U+1F34A +U+1F34C +U+1F34D +U+1F34E +U+1F34F +U+1F351 +U+1F352 +U+1F353 +U+1F354 +U+1F355 +U+1F356 +U+1F357 +U+1F358 +U+1F359 +U+1F35A +U+1F35B +U+1F35C +U+1F35D +U+1F35E +U+1F35F +U+1F360 +U+1F361 +U+1F362 +U+1F363 +U+1F364 +U+1F365 +U+1F366 +U+1F367 +U+1F368 +U+1F369 +U+1F36A +U+1F36B +U+1F36C +U+1F36D +U+1F36E +U+1F36F +U+1F370 +U+1F371 +U+1F372 +U+1F373 +U+1F374 +U+1F375 +U+1F376 +U+1F377 +U+1F378 +U+1F379 +U+1F37A +U+1F37B +U+1F380 +U+1F381 +U+1F382 +U+1F383 +U+1F384 +U+1F385 +U+1F386 +U+1F387 +U+1F388 +U+1F389 +U+1F38A +U+1F38B +U+1F38C +U+1F38D +U+1F38E +U+1F38F +U+1F390 +U+1F391 +U+1F392 +U+1F393 +U+1F3A0 +U+1F3A1 +U+1F3A2 +U+1F3A3 +U+1F3A4 +U+1F3A5 +U+1F3A6 +U+1F3A7 +U+1F3A8 +U+1F3A9 +U+1F3AA +U+1F3AB +U+1F3AC +U+1F3AD +U+1F3AE +U+1F3AF +U+1F3B0 +U+1F3B1 +U+1F3B2 +U+1F3B3 +U+1F3B4 +U+1F3B5 +U+1F3B6 +U+1F3B7 +U+1F3B8 +U+1F3B9 +U+1F3BA +U+1F3BB +U+1F3BC +U+1F3BD +U+1F3BE +U+1F3BF +U+1F3C0 +U+1F3C1 +U+1F3C2 +U+1F3C3 +U+1F3C4 +U+1F3C6 +U+1F3C8 +U+1F3CA +U+1F3E0 +U+1F3E1 +U+1F3E2 +U+1F3E3 +U+1F3E5 +U+1F3E6 +U+1F3E7 +U+1F3E8 +U+1F3E9 +U+1F3EA +U+1F3EB +U+1F3EC +U+1F3ED +U+1F3EE +U+1F3EF +U+1F3F0 +U+1F40C +U+1F40D +U+1F40E +U+1F411 +U+1F412 +U+1F414 +U+1F417 +U+1F418 +U+1F419 +U+1F41A +U+1F41B +U+1F41C +U+1F41D +U+1F41E +U+1F41F +U+1F420 +U+1F421 +U+1F422 +U+1F423 +U+1F424 +U+1F425 +U+1F426 +U+1F427 +U+1F428 +U+1F429 +U+1F42B +U+1F42C +U+1F42D +U+1F42E +U+1F42F +U+1F430 +U+1F431 +U+1F432 +U+1F433 +U+1F434 +U+1F435 +U+1F436 +U+1F437 +U+1F438 +U+1F439 +U+1F43A +U+1F43B +U+1F43C +U+1F43D +U+1F43E +U+1F440 +U+1F442 +U+1F443 +U+1F444 +U+1F445 +U+1F446 +U+1F447 +U+1F448 +U+1F449 +U+1F44A +U+1F44B +U+1F44C +U+1F44D +U+1F44E +U+1F44F +U+1F450 +U+1F451 +U+1F452 +U+1F453 +U+1F454 +U+1F455 +U+1F456 +U+1F457 +U+1F458 +U+1F459 +U+1F45A +U+1F45B +U+1F45C +U+1F45D +U+1F45E +U+1F45F +U+1F460 +U+1F461 +U+1F462 +U+1F463 +U+1F464 +U+1F466 +U+1F467 +U+1F468 +U+1F469 +U+1F46A +U+1F46B +U+1F46E +U+1F46F +U+1F470 +U+1F471 +U+1F472 +U+1F473 +U+1F474 +U+1F475 +U+1F476 +U+1F477 +U+1F478 +U+1F479 +U+1F47A +U+1F47B +U+1F47C +U+1F47D +U+1F47E +U+1F47F +U+1F480 +U+1F481 +U+1F482 +U+1F483 +U+1F484 +U+1F485 +U+1F486 +U+1F487 +U+1F488 +U+1F489 +U+1F48A +U+1F48B +U+1F48C +U+1F48D +U+1F48E +U+1F48F +U+1F490 +U+1F491 +U+1F492 +U+1F493 +U+1F494 +U+1F495 +U+1F496 +U+1F497 +U+1F498 +U+1F499 +U+1F49A +U+1F49B +U+1F49C +U+1F49D +U+1F49E +U+1F49F +U+1F4A0 +U+1F4A1 +U+1F4A2 +U+1F4A3 +U+1F4A4 +U+1F4A5 +U+1F4A6 +U+1F4A7 +U+1F4A8 +U+1F4A9 +U+1F4AA +U+1F4AB +U+1F4AC +U+1F4AE +U+1F4AF +U+1F4B0 +U+1F4B1 +U+1F4B2 +U+1F4B3 +U+1F4B4 +U+1F4B5 +U+1F4B8 +U+1F4B9 +U+1F4BA +U+1F4BB +U+1F4BC +U+1F4BD +U+1F4BE +U+1F4BF +U+1F4C0 +U+1F4C1 +U+1F4C2 +U+1F4C3 +U+1F4C4 +U+1F4C5 +U+1F4C6 +U+1F4C7 +U+1F4C8 +U+1F4C9 +U+1F4CA +U+1F4CB +U+1F4CC +U+1F4CD +U+1F4CE +U+1F4CF +U+1F4D0 +U+1F4D1 +U+1F4D2 +U+1F4D3 +U+1F4D4 +U+1F4D5 +U+1F4D6 +U+1F4D7 +U+1F4D8 +U+1F4D9 +U+1F4DA +U+1F4DB +U+1F4DC +U+1F4DD +U+1F4DE +U+1F4DF +U+1F4E0 +U+1F4E1 +U+1F4E2 +U+1F4E3 +U+1F4E4 +U+1F4E5 +U+1F4E6 +U+1F4E7 +U+1F4E8 +U+1F4E9 +U+1F4EA +U+1F4EB +U+1F4EE +U+1F4F0 +U+1F4F1 +U+1F4F2 +U+1F4F3 +U+1F4F4 +U+1F4F6 +U+1F4F7 +U+1F4F9 +U+1F4FA +U+1F4FB +U+1F4FC +U+1F503 +U+1F50A +U+1F50B +U+1F50C +U+1F50D +U+1F50E +U+1F50F +U+1F510 +U+1F511 +U+1F512 +U+1F513 +U+1F514 +U+1F516 +U+1F517 +U+1F518 +U+1F519 +U+1F51A +U+1F51B +U+1F51C +U+1F51D +U+1F51E +U+1F51F +U+1F520 +U+1F521 +U+1F522 +U+1F523 +U+1F524 +U+1F525 +U+1F526 +U+1F527 +U+1F528 +U+1F529 +U+1F52A +U+1F52B +U+1F52E +U+1F52F +U+1F530 +U+1F531 +U+1F532 +U+1F533 +U+1F534 +U+1F535 +U+1F536 +U+1F537 +U+1F538 +U+1F539 +U+1F53A +U+1F53B +U+1F53C +U+1F53D +U+1F550 +U+1F551 +U+1F552 +U+1F553 +U+1F554 +U+1F555 +U+1F556 +U+1F557 +U+1F558 +U+1F559 +U+1F55A +U+1F55B +U+1F5FB +U+1F5FC +U+1F5FD +U+1F5FE +U+1F5FF +U+1F600 +U+1F607 +U+1F608 +U+1F60E +U+1F610 +U+1F611 +U+1F615 +U+1F617 +U+1F619 +U+1F61B +U+1F61F +U+1F626 +U+1F627 +U+1F62C +U+1F62E +U+1F62F +U+1F634 +U+1F636 +U+1F681 +U+1F682 +U+1F686 +U+1F688 +U+1F68A +U+1F68D +U+1F68E +U+1F690 +U+1F694 +U+1F696 +U+1F698 +U+1F69B +U+1F69C +U+1F69D +U+1F69E +U+1F69F +U+1F6A0 +U+1F6A1 +U+1F6A3 +U+1F6A6 +U+1F6AE +U+1F6AF +U+1F6B0 +U+1F6B1 +U+1F6B3 +U+1F6B4 +U+1F6B5 +U+1F6B7 +U+1F6B8 +U+1F6BF +U+1F6C1 +U+1F6C2 +U+1F6C3 +U+1F6C4 +U+1F6C5 +U+1F30D +U+1F30E +U+1F310 +U+1F312 +U+1F316 +U+1F317 +U+1F318 +U+1F31A +U+1F31C +U+1F31D +U+1F31E +U+1F332 +U+1F333 +U+1F34B +U+1F350 +U+1F37C +U+1F3C7 +U+1F3C9 +U+1F3E4 +U+1F400 +U+1F401 +U+1F402 +U+1F403 +U+1F404 +U+1F405 +U+1F406 +U+1F407 +U+1F408 +U+1F409 +U+1F40A +U+1F40B +U+1F40F +U+1F410 +U+1F413 +U+1F415 +U+1F416 +U+1F42A +U+1F465 +U+1F46C +U+1F46D +U+1F4AD +U+1F4B6 +U+1F4B7 +U+1F4EC +U+1F4ED +U+1F4EF +U+1F4F5 +U+1F500 +U+1F501 +U+1F502 +U+1F504 +U+1F505 +U+1F506 +U+1F507 +U+1F509 +U+1F515 +U+1F52C +U+1F52D +U+1F55C +U+1F55D +U+1F55E +U+1F55F +U+1F560 +U+1F561 +U+1F562 +U+1F563 +U+1F564 +U+1F565 +U+1F566 +U+1F567 +U+1F601 +U+1F602 +U+1F603 +U+1F604 +U+1F605 +U+1F606 +U+1F609 +U+1F60A +U+1F60B +U+1F60C +U+1F60D +U+1F60F +U+1F612 +U+1F613 +U+1F614 +U+1F616 +U+1F618 +U+1F61A +U+1F61C +U+1F61D +U+1F61E +U+1F620 +U+1F621 +U+1F622 +U+1F623 +U+1F624 +U+1F625 +U+1F628 +U+1F629 +U+1F62A +U+1F62B +U+1F62D +U+1F630 +U+1F631 +U+1F632 +U+1F633 +U+1F635 +U+1F637 +U+1F638 +U+1F639 +U+1F63A +U+1F63B +U+1F63C +U+1F63D +U+1F63E +U+1F63F +U+1F640 +U+1F645 +U+1F646 +U+1F647 +U+1F648 +U+1F649 +U+1F64A +U+1F64B +U+1F64C +U+1F64D +U+1F64E +U+1F64F +U+2702 +U+2705 +U+2708 +U+2709 +U+270A +U+270B +U+270C +U+270F +U+2712 +U+2714 +U+2716 +U+2728 +U+2733 +U+2734 +U+2744 +U+2747 +U+274C +U+274E +U+2753 +U+2754 +U+2755 +U+2757 +U+2764 +U+2795 +U+2796 +U+2797 +U+27A1 +U+27B0 +U+1F680 +U+1F683 +U+1F684 +U+1F685 +U+1F687 +U+1F689 +U+1F68C +U+1F68F +U+1F691 +U+1F692 +U+1F693 +U+1F695 +U+1F697 +U+1F699 +U+1F69A +U+1F6A2 +U+1F6A4 +U+1F6A5 +U+1F6A7 +U+1F6A8 +U+1F6A9 +U+1F6AA +U+1F6AB +U+1F6AC +U+1F6AD +U+1F6B2 +U+1F6B6 +U+1F6B9 +U+1F6BA +U+1F6BB +U+1F6BC +U+1F6BD +U+1F6BE +U+1F6C0 +U+24C2 +U+1F170 +U+1F171 +U+1F17E +U+1F17F +U+1F18E +U+1F191 +U+1F192 +U+1F193 +U+1F194 +U+1F195 +U+1F196 +U+1F197 +U+1F198 +U+1F199 +U+1F19A +U+1F1E9 U+1F1EA +U+1F1EC U+1F1E7 +U+1F1E8 U+1F1F3 +U+1F1EF U+1F1F5 +U+1F1EB U+1F1F7 +U+1F1F0 U+1F1F7 +U+1F1EA U+1F1F8 +U+1F1EE U+1F1F9 +U+1F1F7 U+1F1FA +U+1F1FA U+1F1F8 +U+1F201 +U+1F202 +U+1F21A +U+1F22F +U+1F232 +U+1F233 +U+1F234 +U+1F235 +U+1F236 +U+1F237 +U+1F238 +U+1F239 +U+1F23A +U+1F250 +U+1F251 +U+00A9 +U+00AE +U+203C +U+2049 +U+0023 U+20E3 +U+0038 U+20E3 +U+0039 U+20E3 +U+0037 U+20E3 +U+0030 U+20E3 +U+0036 U+20E3 +U+0035 U+20E3 +U+0034 U+20E3 +U+0033 U+20E3 +U+0032 U+20E3 +U+0031 U+20E3 +U+2122 +U+2139 +U+2194 +U+2195 +U+2196 +U+2197 +U+2198 +U+2199 +U+21A9 +U+21AA +U+231A +U+231B +U+23E9 +U+23EA +U+23EB +U+23EC +U+23F0 +U+23F3 +U+25AA +U+25AB +U+25B6 +U+25C0 +U+25FB +U+25FC +U+25FD +U+25FE +U+2600 +U+2601 +U+260E +U+2611 +U+2614 +U+2615 +U+261D +U+263A +U+2648 +U+2649 +U+264A +U+264B +U+264C +U+264D +U+264E +U+264F +U+2650 +U+2651 +U+2652 +U+2653 +U+2660 +U+2663 +U+2665 +U+2666 +U+2668 +U+267B +U+267F +U+2693 +U+26A0 +U+26A1 +U+26AA +U+26AB +U+26BD +U+26BE +U+26C4 +U+26C5 +U+26CE +U+26D4 +U+26EA +U+26F2 +U+26F3 +U+26F5 +U+26FA +U+26FD +U+2934 +U+2935 +U+2B05 +U+2B06 +U+2B07 +U+2B1B +U+2B1C +U+2B50 +U+2B55 +U+3030 +U+303D +U+3297 +U+3299 +U+1F004 +U+1F0CF +U+1F300 +U+1F301 +U+1F302 +U+1F303 +U+1F304 +U+1F305 +U+1F306 +U+1F307 +U+1F308 +U+1F309 +U+1F30A +U+1F30B +U+1F30C +U+1F30F +U+1F311 +U+1F313 +U+1F314 +U+1F315 +U+1F319 +U+1F31B +U+1F31F +U+1F320 +U+1F330 +U+1F331 +U+1F334 +U+1F335 +U+1F337 +U+1F338 +U+1F339 +U+1F33A +U+1F33B +U+1F33C +U+1F33D +U+1F33E +U+1F33F +U+1F340 +U+1F341 +U+1F342 +U+1F343 +U+1F344 +U+1F345 +U+1F346 +U+1F347 +U+1F348 +U+1F349 +U+1F34A +U+1F34C +U+1F34D +U+1F34E +U+1F34F +U+1F351 +U+1F352 +U+1F353 +U+1F354 +U+1F355 +U+1F356 +U+1F357 +U+1F358 +U+1F359 +U+1F35A +U+1F35B +U+1F35C +U+1F35D +U+1F35E +U+1F35F +U+1F360 +U+1F361 +U+1F362 +U+1F363 +U+1F364 +U+1F365 +U+1F366 +U+1F367 +U+1F368 +U+1F369 +U+1F36A +U+1F36B +U+1F36C +U+1F36D +U+1F36E +U+1F36F +U+1F370 +U+1F371 +U+1F372 +U+1F373 +U+1F374 +U+1F375 +U+1F376 +U+1F377 +U+1F378 +U+1F379 +U+1F37A +U+1F37B +U+1F380 +U+1F381 +U+1F382 +U+1F383 +U+1F384 +U+1F385 +U+1F386 +U+1F387 +U+1F388 +U+1F389 +U+1F38A +U+1F38B +U+1F38C +U+1F38D +U+1F38E +U+1F38F +U+1F390 +U+1F391 +U+1F392 +U+1F393 +U+1F3A0 +U+1F3A1 +U+1F3A2 +U+1F3A3 +U+1F3A4 +U+1F3A5 +U+1F3A6 +U+1F3A7 +U+1F3A8 +U+1F3A9 +U+1F3AA +U+1F3AB +U+1F3AC +U+1F3AD +U+1F3AE +U+1F3AF +U+1F3B0 +U+1F3B1 +U+1F3B2 +U+1F3B3 +U+1F3B4 +U+1F3B5 +U+1F3B6 +U+1F3B7 +U+1F3B8 +U+1F3B9 +U+1F3BA +U+1F3BB +U+1F3BC +U+1F3BD +U+1F3BE +U+1F3BF +U+1F3C0 +U+1F3C1 +U+1F3C2 +U+1F3C3 +U+1F3C4 +U+1F3C6 +U+1F3C8 +U+1F3CA +U+1F3E0 +U+1F3E1 +U+1F3E2 +U+1F3E3 +U+1F3E5 +U+1F3E6 +U+1F3E7 +U+1F3E8 +U+1F3E9 +U+1F3EA +U+1F3EB +U+1F3EC +U+1F3ED +U+1F3EE +U+1F3EF +U+1F3F0 +U+1F40C +U+1F40D +U+1F40E +U+1F411 +U+1F412 +U+1F414 +U+1F417 +U+1F418 +U+1F419 +U+1F41A +U+1F41B +U+1F41C +U+1F41D +U+1F41E +U+1F41F +U+1F420 +U+1F421 +U+1F422 +U+1F423 +U+1F424 +U+1F425 +U+1F426 +U+1F427 +U+1F428 +U+1F429 +U+1F42B +U+1F42C +U+1F42D +U+1F42E +U+1F42F +U+1F430 +U+1F431 +U+1F432 +U+1F433 +U+1F434 +U+1F435 +U+1F436 +U+1F437 +U+1F438 +U+1F439 +U+1F43A +U+1F43B +U+1F43C +U+1F43D +U+1F43E +U+1F440 +U+1F442 +U+1F443 +U+1F444 +U+1F445 +U+1F446 +U+1F447 +U+1F448 +U+1F449 +U+1F44A +U+1F44B +U+1F44C +U+1F44D +U+1F44E +U+1F44F +U+1F450 +U+1F451 +U+1F452 +U+1F453 +U+1F454 +U+1F455 +U+1F456 +U+1F457 +U+1F458 +U+1F459 +U+1F45A +U+1F45B +U+1F45C +U+1F45D +U+1F45E +U+1F45F +U+1F460 +U+1F461 +U+1F462 +U+1F463 +U+1F464 +U+1F466 +U+1F467 +U+1F468 +U+1F469 +U+1F46A +U+1F46B +U+1F46E +U+1F46F +U+1F470 +U+1F471 +U+1F472 +U+1F473 +U+1F474 +U+1F475 +U+1F476 +U+1F477 +U+1F478 +U+1F479 +U+1F47A +U+1F47B +U+1F47C +U+1F47D +U+1F47E +U+1F47F +U+1F480 +U+1F481 +U+1F482 +U+1F483 +U+1F484 +U+1F485 +U+1F486 +U+1F487 +U+1F488 +U+1F489 +U+1F48A +U+1F48B +U+1F48C +U+1F48D +U+1F48E +U+1F48F +U+1F490 +U+1F491 +U+1F492 +U+1F493 +U+1F494 +U+1F495 +U+1F496 +U+1F497 +U+1F498 +U+1F499 +U+1F49A +U+1F49B +U+1F49C +U+1F49D +U+1F49E +U+1F49F +U+1F4A0 +U+1F4A1 +U+1F4A2 +U+1F4A3 +U+1F4A4 +U+1F4A5 +U+1F4A6 +U+1F4A7 +U+1F4A8 +U+1F4A9 +U+1F4AA +U+1F4AB +U+1F4AC +U+1F4AE +U+1F4AF +U+1F4B0 +U+1F4B1 +U+1F4B2 +U+1F4B3 +U+1F4B4 +U+1F4B5 +U+1F4B8 +U+1F4B9 +U+1F4BA +U+1F4BB +U+1F4BC +U+1F4BD +U+1F4BE +U+1F4BF +U+1F4C0 +U+1F4C1 +U+1F4C2 +U+1F4C3 +U+1F4C4 +U+1F4C5 +U+1F4C6 +U+1F4C7 +U+1F4C8 +U+1F4C9 +U+1F4CA +U+1F4CB +U+1F4CC +U+1F4CD +U+1F4CE +U+1F4CF +U+1F4D0 +U+1F4D1 +U+1F4D2 +U+1F4D3 +U+1F4D4 +U+1F4D5 +U+1F4D6 +U+1F4D7 +U+1F4D8 +U+1F4D9 +U+1F4DA +U+1F4DB +U+1F4DC +U+1F4DD +U+1F4DE +U+1F4DF +U+1F4E0 +U+1F4E1 +U+1F4E2 +U+1F4E3 +U+1F4E4 +U+1F4E5 +U+1F4E6 +U+1F4E7 +U+1F4E8 +U+1F4E9 +U+1F4EA +U+1F4EB +U+1F4EE +U+1F4F0 +U+1F4F1 +U+1F4F2 +U+1F4F3 +U+1F4F4 +U+1F4F6 +U+1F4F7 +U+1F4F9 +U+1F4FA +U+1F4FB +U+1F4FC +U+1F503 +U+1F50A +U+1F50B +U+1F50C +U+1F50D +U+1F50E +U+1F50F +U+1F510 +U+1F511 +U+1F512 +U+1F513 +U+1F514 +U+1F516 +U+1F517 +U+1F518 +U+1F519 +U+1F51A +U+1F51B +U+1F51C +U+1F51D +U+1F51E +U+1F51F +U+1F520 +U+1F521 +U+1F522 +U+1F523 +U+1F524 +U+1F525 +U+1F526 +U+1F527 +U+1F528 +U+1F529 +U+1F52A +U+1F52B +U+1F52E +U+1F52F +U+1F530 +U+1F531 +U+1F532 +U+1F533 +U+1F534 +U+1F535 +U+1F536 +U+1F537 +U+1F538 +U+1F539 +U+1F53A +U+1F53B +U+1F53C +U+1F53D +U+1F550 +U+1F551 +U+1F552 +U+1F553 +U+1F554 +U+1F555 +U+1F556 +U+1F557 +U+1F558 +U+1F559 +U+1F55A +U+1F55B +U+1F5FB +U+1F5FC +U+1F5FD +U+1F5FE +U+1F5FF +U+1F600 +U+1F607 +U+1F608 +U+1F60E +U+1F610 +U+1F611 +U+1F615 +U+1F617 +U+1F619 +U+1F61B +U+1F61F +U+1F626 +U+1F627 +U+1F62C +U+1F62E +U+1F62F +U+1F634 +U+1F636 +U+1F681 +U+1F682 +U+1F686 +U+1F688 +U+1F68A +U+1F68D +U+1F68E +U+1F690 +U+1F694 +U+1F696 +U+1F698 +U+1F69B +U+1F69C +U+1F69D +U+1F69E +U+1F69F +U+1F6A0 +U+1F6A1 +U+1F6A3 +U+1F6A6 +U+1F6AE +U+1F6AF +U+1F6B0 +U+1F6B1 +U+1F6B3 +U+1F6B4 +U+1F6B5 +U+1F6B7 +U+1F6B8 +U+1F6BF +U+1F6C1 +U+1F6C2 +U+1F6C3 +U+1F6C4 +U+1F6C5 +U+1F30D +U+1F30E +U+1F310 +U+1F312 +U+1F316 +U+1F317 +U+1F318 +U+1F31A +U+1F31C +U+1F31D +U+1F31E +U+1F332 +U+1F333 +U+1F34B +U+1F350 +U+1F37C +U+1F3C7 +U+1F3C9 +U+1F3E4 +U+1F400 +U+1F401 +U+1F402 +U+1F403 +U+1F404 +U+1F405 +U+1F406 +U+1F407 +U+1F408 +U+1F409 +U+1F40A +U+1F40B +U+1F40F +U+1F410 +U+1F413 +U+1F415 +U+1F416 +U+1F42A +U+1F465 +U+1F46C +U+1F46D +U+1F4AD +U+1F4B6 +U+1F4B7 +U+1F4EC +U+1F4ED +U+1F4EF +U+1F4F5 +U+1F500 +U+1F501 +U+1F502 +U+1F504 +U+1F505 +U+1F506 +U+1F507 +U+1F509 +U+1F515 +U+1F52C +U+1F52D +U+1F55C +U+1F55D +U+1F55E +U+1F55F +U+1F560 +U+1F561 +U+1F562 +U+1F563 +U+1F564 +U+1F565 +U+1F566 +U+1F567 +U+1F601 +U+1F602 +U+1F603 +U+1F604 +U+1F605 +U+1F606 +U+1F609 +U+1F60A +U+1F60B +U+1F60C +U+1F60D +U+1F60F +U+1F612 +U+1F613 +U+1F614 +U+1F616 +U+1F618 +U+1F61A +U+1F61C +U+1F61D +U+1F61E +U+1F620 +U+1F621 +U+1F622 +U+1F623 +U+1F624 +U+1F625 +U+1F628 +U+1F629 +U+1F62A +U+1F62B +U+1F62D +U+1F630 +U+1F631 +U+1F632 +U+1F633 +U+1F635 +U+1F637 +U+1F638 +U+1F639 +U+1F63A +U+1F63B +U+1F63C +U+1F63D +U+1F63E +U+1F63F +U+1F640 +U+1F645 +U+1F646 +U+1F647 +U+1F648 +U+1F649 +U+1F64A +U+1F64B +U+1F64C +U+1F64D +U+1F64E +U+1F64F +U+2702 +U+2705 +U+2708 +U+2709 +U+270A +U+270B +U+270C +U+270F +U+2712 +U+2714 +U+2716 +U+2728 +U+2733 +U+2734 +U+2744 +U+2747 +U+274C +U+274E +U+2753 +U+2754 +U+2755 +U+2757 +U+2764 +U+2795 +U+2796 +U+2797 +U+27A1 +U+27B0 +U+1F680 +U+1F683 +U+1F684 +U+1F685 +U+1F687 +U+1F689 +U+1F68C +U+1F68F +U+1F691 +U+1F692 +U+1F693 +U+1F695 +U+1F697 +U+1F699 +U+1F69A +U+1F6A2 +U+1F6A4 +U+1F6A5 +U+1F6A7 +U+1F6A8 +U+1F6A9 +U+1F6AA +U+1F6AB +U+1F6AC +U+1F6AD +U+1F6B2 +U+1F6B6 +U+1F6B9 +U+1F6BA +U+1F6BB +U+1F6BC +U+1F6BD +U+1F6BE +U+1F6C0 +U+24C2 +U+1F170 +U+1F171 +U+1F17E +U+1F17F +U+1F18E +U+1F191 +U+1F192 +U+1F193 +U+1F194 +U+1F195 +U+1F196 +U+1F197 +U+1F198 +U+1F199 +U+1F19A +U+1F1E9 U+1F1EA +U+1F1EC U+1F1E7 +U+1F1E8 U+1F1F3 +U+1F1EF U+1F1F5 +U+1F1EB U+1F1F7 +U+1F1F0 U+1F1F7 +U+1F1EA U+1F1F8 +U+1F1EE U+1F1F9 +U+1F1F7 U+1F1FA +U+1F1FA U+1F1F8 +U+1F201 +U+1F202 +U+1F21A +U+1F22F +U+1F232 +U+1F233 +U+1F234 +U+1F235 +U+1F236 +U+1F237 +U+1F238 +U+1F239 +U+1F23A +U+1F250 +U+1F251 +U+00A9 +U+00AE +U+203C +U+2049 +U+0023 U+20E3 +U+0038 U+20E3 +U+0039 U+20E3 +U+0037 U+20E3 +U+0030 U+20E3 +U+0036 U+20E3 +U+0035 U+20E3 +U+0034 U+20E3 +U+0033 U+20E3 +U+0032 U+20E3 +U+0031 U+20E3 +U+2122 +U+2139 +U+2194 +U+2195 +U+2196 +U+2197 +U+2198 +U+2199 +U+21A9 +U+21AA +U+231A +U+231B +U+23E9 +U+23EA +U+23EB +U+23EC +U+23F0 +U+23F3 +U+25AA +U+25AB +U+25B6 +U+25C0 +U+25FB +U+25FC +U+25FD +U+25FE +U+2600 +U+2601 +U+260E +U+2611 +U+2614 +U+2615 +U+261D +U+263A +U+2648 +U+2649 +U+264A +U+264B +U+264C +U+264D +U+264E +U+264F +U+2650 +U+2651 +U+2652 +U+2653 +U+2660 +U+2663 +U+2665 +U+2666 +U+2668 +U+267B +U+267F +U+2693 +U+26A0 +U+26A1 +U+26AA +U+26AB +U+26BD +U+26BE +U+26C4 +U+26C5 +U+26CE +U+26D4 +U+26EA +U+26F2 +U+26F3 +U+26F5 +U+26FA +U+26FD +U+2934 +U+2935 +U+2B05 +U+2B06 +U+2B07 +U+2B1B +U+2B1C +U+2B50 +U+2B55 +U+3030 +U+303D +U+3297 +U+3299 +U+1F004 +U+1F0CF +U+1F300 +U+1F301 +U+1F302 +U+1F303 +U+1F304 +U+1F305 +U+1F306 +U+1F307 +U+1F308 +U+1F309 +U+1F30A +U+1F30B +U+1F30C +U+1F30F +U+1F311 +U+1F313 +U+1F314 +U+1F315 +U+1F319 +U+1F31B +U+1F31F +U+1F320 +U+1F330 +U+1F331 +U+1F334 +U+1F335 +U+1F337 +U+1F338 +U+1F339 +U+1F33A +U+1F33B +U+1F33C +U+1F33D +U+1F33E +U+1F33F +U+1F340 +U+1F341 +U+1F342 +U+1F343 +U+1F344 +U+1F345 +U+1F346 +U+1F347 +U+1F348 +U+1F349 +U+1F34A +U+1F34C +U+1F34D +U+1F34E +U+1F34F +U+1F351 +U+1F352 +U+1F353 +U+1F354 +U+1F355 +U+1F356 +U+1F357 +U+1F358 +U+1F359 +U+1F35A +U+1F35B +U+1F35C +U+1F35D +U+1F35E +U+1F35F +U+1F360 +U+1F361 +U+1F362 +U+1F363 +U+1F364 +U+1F365 +U+1F366 +U+1F367 +U+1F368 +U+1F369 +U+1F36A +U+1F36B +U+1F36C +U+1F36D +U+1F36E +U+1F36F +U+1F370 +U+1F371 +U+1F372 +U+1F373 +U+1F374 +U+1F375 +U+1F376 +U+1F377 +U+1F378 +U+1F379 +U+1F37A +U+1F37B +U+1F380 +U+1F381 +U+1F382 +U+1F383 +U+1F384 +U+1F385 +U+1F386 +U+1F387 +U+1F388 +U+1F389 +U+1F38A +U+1F38B +U+1F38C +U+1F38D +U+1F38E +U+1F38F +U+1F390 +U+1F391 +U+1F392 +U+1F393 +U+1F3A0 +U+1F3A1 +U+1F3A2 +U+1F3A3 +U+1F3A4 +U+1F3A5 +U+1F3A6 +U+1F3A7 +U+1F3A8 +U+1F3A9 +U+1F3AA +U+1F3AB +U+1F3AC +U+1F3AD +U+1F3AE +U+1F3AF +U+1F3B0 +U+1F3B1 +U+1F3B2 +U+1F3B3 +U+1F3B4 +U+1F3B5 +U+1F3B6 +U+1F3B7 +U+1F3B8 +U+1F3B9 +U+1F3BA +U+1F3BB +U+1F3BC +U+1F3BD +U+1F3BE +U+1F3BF +U+1F3C0 +U+1F3C1 +U+1F3C2 +U+1F3C3 +U+1F3C4 +U+1F3C6 +U+1F3C8 +U+1F3CA +U+1F3E0 +U+1F3E1 +U+1F3E2 +U+1F3E3 +U+1F3E5 +U+1F3E6 +U+1F3E7 +U+1F3E8 +U+1F3E9 +U+1F3EA +U+1F3EB +U+1F3EC +U+1F3ED +U+1F3EE +U+1F3EF +U+1F3F0 +U+1F40C +U+1F40D +U+1F40E +U+1F411 +U+1F412 +U+1F414 +U+1F417 +U+1F418 +U+1F419 +U+1F41A +U+1F41B +U+1F41C +U+1F41D +U+1F41E +U+1F41F +U+1F420 +U+1F421 +U+1F422 +U+1F423 +U+1F424 +U+1F425 +U+1F426 +U+1F427 +U+1F428 +U+1F429 +U+1F42B +U+1F42C +U+1F42D +U+1F42E +U+1F42F +U+1F430 +U+1F431 +U+1F432 +U+1F433 +U+1F434 +U+1F435 +U+1F436 +U+1F437 +U+1F438 +U+1F439 +U+1F43A +U+1F43B +U+1F43C +U+1F43D +U+1F43E +U+1F440 +U+1F442 +U+1F443 +U+1F444 +U+1F445 +U+1F446 +U+1F447 +U+1F448 +U+1F449 +U+1F44A +U+1F44B +U+1F44C +U+1F44D +U+1F44E +U+1F44F +U+1F450 +U+1F451 +U+1F452 +U+1F453 +U+1F454 +U+1F455 +U+1F456 +U+1F457 +U+1F458 +U+1F459 +U+1F45A +U+1F45B +U+1F45C +U+1F45D +U+1F45E +U+1F45F +U+1F460 +U+1F461 +U+1F462 +U+1F463 +U+1F464 +U+1F466 +U+1F467 +U+1F468 +U+1F469 +U+1F46A +U+1F46B +U+1F46E +U+1F46F +U+1F470 +U+1F471 +U+1F472 +U+1F473 +U+1F474 +U+1F475 +U+1F476 +U+1F477 +U+1F478 +U+1F479 +U+1F47A +U+1F47B +U+1F47C +U+1F47D +U+1F47E +U+1F47F +U+1F480 +U+1F481 +U+1F482 +U+1F483 +U+1F484 +U+1F485 +U+1F486 +U+1F487 +U+1F488 +U+1F489 +U+1F48A +U+1F48B +U+1F48C +U+1F48D +U+1F48E +U+1F48F +U+1F490 +U+1F491 +U+1F492 +U+1F493 +U+1F494 +U+1F495 +U+1F496 +U+1F497 +U+1F498 +U+1F499 +U+1F49A +U+1F49B +U+1F49C +U+1F49D +U+1F49E +U+1F49F +U+1F4A0 +U+1F4A1 +U+1F4A2 +U+1F4A3 +U+1F4A4 +U+1F4A5 +U+1F4A6 +U+1F4A7 +U+1F4A8 +U+1F4A9 +U+1F4AA +U+1F4AB +U+1F4AC +U+1F4AE +U+1F4AF +U+1F4B0 +U+1F4B1 +U+1F4B2 +U+1F4B3 +U+1F4B4 +U+1F4B5 +U+1F4B8 +U+1F4B9 +U+1F4BA +U+1F4BB +U+1F4BC +U+1F4BD +U+1F4BE +U+1F4BF +U+1F4C0 +U+1F4C1 +U+1F4C2 +U+1F4C3 +U+1F4C4 +U+1F4C5 +U+1F4C6 +U+1F4C7 +U+1F4C8 +U+1F4C9 +U+1F4CA +U+1F4CB +U+1F4CC +U+1F4CD +U+1F4CE +U+1F4CF +U+1F4D0 +U+1F4D1 +U+1F4D2 +U+1F4D3 +U+1F4D4 +U+1F4D5 +U+1F4D6 +U+1F4D7 +U+1F4D8 +U+1F4D9 +U+1F4DA +U+1F4DB +U+1F4DC +U+1F4DD +U+1F4DE +U+1F4DF +U+1F4E0 +U+1F4E1 +U+1F4E2 +U+1F4E3 +U+1F4E4 +U+1F4E5 +U+1F4E6 +U+1F4E7 +U+1F4E8 +U+1F4E9 +U+1F4EA +U+1F4EB +U+1F4EE +U+1F4F0 +U+1F4F1 +U+1F4F2 +U+1F4F3 +U+1F4F4 +U+1F4F6 +U+1F4F7 +U+1F4F9 +U+1F4FA +U+1F4FB +U+1F4FC +U+1F503 +U+1F50A +U+1F50B +U+1F50C +U+1F50D +U+1F50E +U+1F50F +U+1F510 +U+1F511 +U+1F512 +U+1F513 +U+1F514 +U+1F516 +U+1F517 +U+1F518 +U+1F519 +U+1F51A +U+1F51B +U+1F51C +U+1F51D +U+1F51E +U+1F51F +U+1F520 +U+1F521 +U+1F522 +U+1F523 +U+1F524 +U+1F525 +U+1F526 +U+1F527 +U+1F528 +U+1F529 +U+1F52A +U+1F52B +U+1F52E +U+1F52F +U+1F530 +U+1F531 +U+1F532 +U+1F533 +U+1F534 +U+1F535 +U+1F536 +U+1F537 +U+1F538 +U+1F539 +U+1F53A +U+1F53B +U+1F53C +U+1F53D +U+1F550 +U+1F551 +U+1F552 +U+1F553 +U+1F554 +U+1F555 +U+1F556 +U+1F557 +U+1F558 +U+1F559 +U+1F55A +U+1F55B +U+1F5FB +U+1F5FC +U+1F5FD +U+1F5FE +U+1F5FF +U+1F600 +U+1F607 +U+1F608 +U+1F60E +U+1F610 +U+1F611 +U+1F615 +U+1F617 +U+1F619 +U+1F61B +U+1F61F +U+1F626 +U+1F627 +U+1F62C +U+1F62E +U+1F62F +U+1F634 +U+1F636 +U+1F681 +U+1F682 +U+1F686 +U+1F688 +U+1F68A +U+1F68D +U+1F68E +U+1F690 +U+1F694 +U+1F696 +U+1F698 +U+1F69B +U+1F69C +U+1F69D +U+1F69E +U+1F69F +U+1F6A0 +U+1F6A1 +U+1F6A3 +U+1F6A6 +U+1F6AE +U+1F6AF +U+1F6B0 +U+1F6B1 +U+1F6B3 +U+1F6B4 +U+1F6B5 +U+1F6B7 +U+1F6B8 +U+1F6BF +U+1F6C1 +U+1F6C2 +U+1F6C3 +U+1F6C4 +U+1F6C5 +U+1F30D +U+1F30E +U+1F310 +U+1F312 +U+1F316 +U+1F317 +U+1F318 +U+1F31A +U+1F31C +U+1F31D +U+1F31E +U+1F332 +U+1F333 +U+1F34B +U+1F350 +U+1F37C +U+1F3C7 +U+1F3C9 +U+1F3E4 +U+1F400 +U+1F401 +U+1F402 +U+1F403 +U+1F404 +U+1F405 +U+1F406 +U+1F407 +U+1F408 +U+1F409 +U+1F40A +U+1F40B +U+1F40F +U+1F410 +U+1F413 +U+1F415 +U+1F416 +U+1F42A +U+1F465 +U+1F46C +U+1F46D +U+1F4AD +U+1F4B6 +U+1F4B7 +U+1F4EC +U+1F4ED +U+1F4EF +U+1F4F5 +U+1F500 +U+1F501 +U+1F502 +U+1F504 +U+1F505 +U+1F506 +U+1F507 +U+1F509 +U+1F515 +U+1F52C +U+1F52D +U+1F55C +U+1F55D +U+1F55E +U+1F55F +U+1F560 +U+1F561 +U+1F562 +U+1F563 +U+1F564 +U+1F565 +U+1F566 +U+1F567 +U+1F601 +U+1F602 +U+1F603 +U+1F604 +U+1F605 +U+1F606 +U+1F609 +U+1F60A +U+1F60B +U+1F60C +U+1F60D +U+1F60F +U+1F612 +U+1F613 +U+1F614 +U+1F616 +U+1F618 +U+1F61A +U+1F61C +U+1F61D +U+1F61E +U+1F620 +U+1F621 +U+1F622 +U+1F623 +U+1F624 +U+1F625 +U+1F628 +U+1F629 +U+1F62A +U+1F62B +U+1F62D +U+1F630 +U+1F631 +U+1F632 +U+1F633 +U+1F635 +U+1F637 +U+1F638 +U+1F639 +U+1F63A +U+1F63B +U+1F63C +U+1F63D +U+1F63E +U+1F63F +U+1F640 +U+1F645 +U+1F646 +U+1F647 +U+1F648 +U+1F649 +U+1F64A +U+1F64B +U+1F64C +U+1F64D +U+1F64E +U+1F64F +U+2702 +U+2705 +U+2708 +U+2709 +U+270A +U+270B +U+270C +U+270F +U+2712 +U+2714 +U+2716 +U+2728 +U+2733 +U+2734 +U+2744 +U+2747 +U+274C +U+274E +U+2753 +U+2754 +U+2755 +U+2757 +U+2764 +U+2795 +U+2796 +U+2797 +U+27A1 +U+27B0 +U+1F680 +U+1F683 +U+1F684 +U+1F685 +U+1F687 +U+1F689 +U+1F68C +U+1F68F +U+1F691 +U+1F692 +U+1F693 +U+1F695 +U+1F697 +U+1F699 +U+1F69A +U+1F6A2 +U+1F6A4 +U+1F6A5 +U+1F6A7 +U+1F6A8 +U+1F6A9 +U+1F6AA +U+1F6AB +U+1F6AC +U+1F6AD +U+1F6B2 +U+1F6B6 +U+1F6B9 +U+1F6BA +U+1F6BB +U+1F6BC +U+1F6BD +U+1F6BE +U+1F6C0 +U+24C2 +U+1F170 +U+1F171 +U+1F17E +U+1F17F +U+1F18E +U+1F191 +U+1F192 +U+1F193 +U+1F194 +U+1F195 +U+1F196 +U+1F197 +U+1F198 +U+1F199 +U+1F19A +U+1F1E9 U+1F1EA +U+1F1EC U+1F1E7 +U+1F1E8 U+1F1F3 +U+1F1EF U+1F1F5 +U+1F1EB U+1F1F7 +U+1F1F0 U+1F1F7 +U+1F1EA U+1F1F8 +U+1F1EE U+1F1F9 +U+1F1F7 U+1F1FA +U+1F1FA U+1F1F8 +U+1F201 +U+1F202 +U+1F21A +U+1F22F +U+1F232 +U+1F233 +U+1F234 +U+1F235 +U+1F236 +U+1F237 +U+1F238 +U+1F239 +U+1F23A +U+1F250 +U+1F251 +U+00A9 +U+00AE +U+203C +U+2049 +U+0023 U+20E3 +U+0038 U+20E3 +U+0039 U+20E3 +U+0037 U+20E3 +U+0030 U+20E3 +U+0036 U+20E3 +U+0035 U+20E3 +U+0034 U+20E3 +U+0033 U+20E3 +U+0032 U+20E3 +U+0031 U+20E3 +U+2122 +U+2139 +U+2194 +U+2195 +U+2196 +U+2197 +U+2198 +U+2199 +U+21A9 +U+21AA +U+231A +U+231B +U+23E9 +U+23EA +U+23EB +U+23EC +U+23F0 +U+23F3 +U+25AA +U+25AB +U+25B6 +U+25C0 +U+25FB +U+25FC +U+25FD +U+25FE +U+2600 +U+2601 +U+260E +U+2611 +U+2614 +U+2615 +U+261D +U+263A +U+2648 +U+2649 +U+264A +U+264B +U+264C +U+264D +U+264E +U+264F +U+2650 +U+2651 +U+2652 +U+2653 +U+2660 +U+2663 +U+2665 +U+2666 +U+2668 +U+267B +U+267F +U+2693 +U+26A0 +U+26A1 +U+26AA +U+26AB +U+26BD +U+26BE +U+26C4 +U+26C5 +U+26CE +U+26D4 +U+26EA +U+26F2 +U+26F3 +U+26F5 +U+26FA +U+26FD +U+2934 +U+2935 +U+2B05 +U+2B06 +U+2B07 +U+2B1B +U+2B1C +U+2B50 +U+2B55 +U+3030 +U+303D +U+3297 +U+3299 +U+1F004 +U+1F0CF +U+1F300 +U+1F301 +U+1F302 +U+1F303 +U+1F304 +U+1F305 +U+1F306 +U+1F307 +U+1F308 +U+1F309 +U+1F30A +U+1F30B +U+1F30C +U+1F30F +U+1F311 +U+1F313 +U+1F314 +U+1F315 +U+1F319 +U+1F31B +U+1F31F +U+1F320 +U+1F330 +U+1F331 +U+1F334 +U+1F335 +U+1F337 +U+1F338 +U+1F339 +U+1F33A +U+1F33B +U+1F33C +U+1F33D +U+1F33E +U+1F33F +U+1F340 +U+1F341 +U+1F342 +U+1F343 +U+1F344 +U+1F345 +U+1F346 +U+1F347 +U+1F348 +U+1F349 +U+1F34A +U+1F34C +U+1F34D +U+1F34E +U+1F34F +U+1F351 +U+1F352 +U+1F353 +U+1F354 +U+1F355 +U+1F356 +U+1F357 +U+1F358 +U+1F359 +U+1F35A +U+1F35B +U+1F35C +U+1F35D +U+1F35E +U+1F35F +U+1F360 +U+1F361 +U+1F362 +U+1F363 +U+1F364 +U+1F365 +U+1F366 +U+1F367 +U+1F368 +U+1F369 +U+1F36A +U+1F36B +U+1F36C +U+1F36D +U+1F36E +U+1F36F +U+1F370 +U+1F371 +U+1F372 +U+1F373 +U+1F374 +U+1F375 +U+1F376 +U+1F377 +U+1F378 +U+1F379 +U+1F37A +U+1F37B +U+1F380 +U+1F381 +U+1F382 +U+1F383 +U+1F384 +U+1F385 +U+1F386 +U+1F387 +U+1F388 +U+1F389 +U+1F38A +U+1F38B +U+1F38C +U+1F38D +U+1F38E +U+1F38F +U+1F390 +U+1F391 +U+1F392 +U+1F393 +U+1F3A0 +U+1F3A1 +U+1F3A2 +U+1F3A3 +U+1F3A4 +U+1F3A5 +U+1F3A6 +U+1F3A7 +U+1F3A8 +U+1F3A9 +U+1F3AA +U+1F3AB +U+1F3AC +U+1F3AD +U+1F3AE +U+1F3AF +U+1F3B0 +U+1F3B1 +U+1F3B2 +U+1F3B3 +U+1F3B4 +U+1F3B5 +U+1F3B6 +U+1F3B7 +U+1F3B8 +U+1F3B9 +U+1F3BA +U+1F3BB +U+1F3BC +U+1F3BD +U+1F3BE +U+1F3BF +U+1F3C0 +U+1F3C1 +U+1F3C2 +U+1F3C3 +U+1F3C4 +U+1F3C6 +U+1F3C8 +U+1F3CA +U+1F3E0 +U+1F3E1 +U+1F3E2 +U+1F3E3 +U+1F3E5 +U+1F3E6 +U+1F3E7 +U+1F3E8 +U+1F3E9 +U+1F3EA +U+1F3EB +U+1F3EC +U+1F3ED +U+1F3EE +U+1F3EF +U+1F3F0 +U+1F40C +U+1F40D +U+1F40E +U+1F411 +U+1F412 +U+1F414 +U+1F417 +U+1F418 +U+1F419 +U+1F41A +U+1F41B +U+1F41C +U+1F41D +U+1F41E +U+1F41F +U+1F420 +U+1F421 +U+1F422 +U+1F423 +U+1F424 +U+1F425 +U+1F426 +U+1F427 +U+1F428 +U+1F429 +U+1F42B +U+1F42C +U+1F42D +U+1F42E +U+1F42F +U+1F430 +U+1F431 +U+1F432 +U+1F433 +U+1F434 +U+1F435 +U+1F436 +U+1F437 +U+1F438 +U+1F439 +U+1F43A +U+1F43B +U+1F43C +U+1F43D +U+1F43E +U+1F440 +U+1F442 +U+1F443 +U+1F444 +U+1F445 +U+1F446 +U+1F447 +U+1F448 +U+1F449 +U+1F44A +U+1F44B +U+1F44C +U+1F44D +U+1F44E +U+1F44F +U+1F450 +U+1F451 +U+1F452 +U+1F453 +U+1F454 +U+1F455 +U+1F456 +U+1F457 +U+1F458 +U+1F459 +U+1F45A +U+1F45B +U+1F45C +U+1F45D +U+1F45E +U+1F45F +U+1F460 +U+1F461 +U+1F462 +U+1F463 +U+1F464 +U+1F466 +U+1F467 +U+1F468 +U+1F469 +U+1F46A +U+1F46B +U+1F46E +U+1F46F +U+1F470 +U+1F471 +U+1F472 +U+1F473 +U+1F474 +U+1F475 +U+1F476 +U+1F477 +U+1F478 +U+1F479 +U+1F47A +U+1F47B +U+1F47C +U+1F47D +U+1F47E +U+1F47F +U+1F480 +U+1F481 +U+1F482 +U+1F483 +U+1F484 +U+1F485 +U+1F486 +U+1F487 +U+1F488 +U+1F489 +U+1F48A +U+1F48B +U+1F48C +U+1F48D +U+1F48E +U+1F48F +U+1F490 +U+1F491 +U+1F492 +U+1F493 +U+1F494 +U+1F495 +U+1F496 +U+1F497 +U+1F498 +U+1F499 +U+1F49A +U+1F49B +U+1F49C +U+1F49D +U+1F49E +U+1F49F +U+1F4A0 +U+1F4A1 +U+1F4A2 +U+1F4A3 +U+1F4A4 +U+1F4A5 +U+1F4A6 +U+1F4A7 +U+1F4A8 +U+1F4A9 +U+1F4AA +U+1F4AB +U+1F4AC +U+1F4AE +U+1F4AF +U+1F4B0 +U+1F4B1 +U+1F4B2 +U+1F4B3 +U+1F4B4 +U+1F4B5 +U+1F4B8 +U+1F4B9 +U+1F4BA +U+1F4BB +U+1F4BC +U+1F4BD +U+1F4BE +U+1F4BF +U+1F4C0 +U+1F4C1 +U+1F4C2 +U+1F4C3 +U+1F4C4 +U+1F4C5 +U+1F4C6 +U+1F4C7 +U+1F4C8 +U+1F4C9 +U+1F4CA +U+1F4CB +U+1F4CC +U+1F4CD +U+1F4CE +U+1F4CF +U+1F4D0 +U+1F4D1 +U+1F4D2 +U+1F4D3 +U+1F4D4 +U+1F4D5 +U+1F4D6 +U+1F4D7 +U+1F4D8 +U+1F4D9 +U+1F4DA +U+1F4DB +U+1F4DC +U+1F4DD +U+1F4DE +U+1F4DF +U+1F4E0 +U+1F4E1 +U+1F4E2 +U+1F4E3 +U+1F4E4 +U+1F4E5 +U+1F4E6 +U+1F4E7 +U+1F4E8 +U+1F4E9 +U+1F4EA +U+1F4EB +U+1F4EE +U+1F4F0 +U+1F4F1 +U+1F4F2 +U+1F4F3 +U+1F4F4 +U+1F4F6 +U+1F4F7 +U+1F4F9 +U+1F4FA +U+1F4FB +U+1F4FC +U+1F503 +U+1F50A +U+1F50B +U+1F50C +U+1F50D +U+1F50E +U+1F50F +U+1F510 +U+1F511 +U+1F512 +U+1F513 +U+1F514 +U+1F516 +U+1F517 +U+1F518 +U+1F519 +U+1F51A +U+1F51B +U+1F51C +U+1F51D +U+1F51E +U+1F51F +U+1F520 +U+1F521 +U+1F522 +U+1F523 +U+1F524 +U+1F525 +U+1F526 +U+1F527 +U+1F528 +U+1F529 +U+1F52A +U+1F52B +U+1F52E +U+1F52F +U+1F530 +U+1F531 +U+1F532 +U+1F533 +U+1F534 +U+1F535 +U+1F536 +U+1F537 +U+1F538 +U+1F539 +U+1F53A +U+1F53B +U+1F53C +U+1F53D +U+1F550 +U+1F551 +U+1F552 +U+1F553 +U+1F554 +U+1F555 +U+1F556 +U+1F557 +U+1F558 +U+1F559 +U+1F55A +U+1F55B +U+1F5FB +U+1F5FC +U+1F5FD +U+1F5FE +U+1F5FF +U+1F600 +U+1F607 +U+1F608 +U+1F60E +U+1F610 +U+1F611 +U+1F615 +U+1F617 +U+1F619 +U+1F61B +U+1F61F +U+1F626 +U+1F627 +U+1F62C +U+1F62E +U+1F62F +U+1F634 +U+1F636 +U+1F681 +U+1F682 +U+1F686 +U+1F688 +U+1F68A +U+1F68D +U+1F68E +U+1F690 +U+1F694 +U+1F696 +U+1F698 +U+1F69B +U+1F69C +U+1F69D +U+1F69E +U+1F69F +U+1F6A0 +U+1F6A1 +U+1F6A3 +U+1F6A6 +U+1F6AE +U+1F6AF +U+1F6B0 +U+1F6B1 +U+1F6B3 +U+1F6B4 +U+1F6B5 +U+1F6B7 +U+1F6B8 +U+1F6BF +U+1F6C1 +U+1F6C2 +U+1F6C3 +U+1F6C4 +U+1F6C5 +U+1F30D +U+1F30E +U+1F310 +U+1F312 +U+1F316 +U+1F317 +U+1F318 +U+1F31A +U+1F31C +U+1F31D +U+1F31E +U+1F332 +U+1F333 +U+1F34B +U+1F350 +U+1F37C +U+1F3C7 +U+1F3C9 +U+1F3E4 +U+1F400 +U+1F401 +U+1F402 +U+1F403 +U+1F404 +U+1F405 +U+1F406 +U+1F407 +U+1F408 +U+1F409 +U+1F40A +U+1F40B +U+1F40F +U+1F410 +U+1F413 +U+1F415 +U+1F416 +U+1F42A +U+1F465 +U+1F46C +U+1F46D +U+1F4AD +U+1F4B6 +U+1F4B7 +U+1F4EC +U+1F4ED +U+1F4EF +U+1F4F5 +U+1F500 +U+1F501 +U+1F502 +U+1F504 +U+1F505 +U+1F506 +U+1F507 +U+1F509 +U+1F515 +U+1F52C +U+1F52D +U+1F55C +U+1F55D +U+1F55E +U+1F55F +U+1F560 +U+1F561 +U+1F562 +U+1F563 +U+1F564 +U+1F565 +U+1F566 +U+1F567 diff --git a/mirzaev/spetsresurs/telegram/registry/requests/system/public/robot.php b/mirzaev/spetsresurs/telegram/registry/requests/system/public/robot.php new file mode 100755 index 0000000..2bb61b2 --- /dev/null +++ b/mirzaev/spetsresurs/telegram/registry/requests/system/public/robot.php @@ -0,0 +1,675 @@ +', + '<' + ], + [ + '\#', + '\*', + '\_', + '\\=', + '\.', + '\[', + '\]', + '\(', + '\)', + '\-', + '\>', + '\<' + ], + $text + ); +} + +/** + * Авторизация + * + * @param string $id Идентификатор Telegram + * + * @return _document|null|false (инстанция аккаунта, если подключен и авторизован; null, если не подключен; false, если подключен но неавторизован) + */ +function authorization(string $id): _document|null|false +{ + global $arangodb; + + if (collection::init($arangodb->session, 'telegram')) { + if ($telegram = collection::search($arangodb->session, sprintf("FOR d IN telegram FILTER d.id == '%s' RETURN d", $id))) { + if ($telegram->number === null) return null; + else if ( + $telegram->active + && collection::init($arangodb->session, 'account') + && $account = collection::search( + $arangodb->session, + sprintf( + "FOR d IN account FILTER d.number == '%s' RETURN d", + $telegram->number, + $telegram->getId() + ) + ) + ) return $account; + else return false; + } + } else throw new exception('Не удалось инициализировать коллекцию'); + + return false; +} + +/** + * Сотрудник + * + * @param string $id Идентификатор аккаунта + * + * @return _document|null|false (инстанция аккаунта, если подключен и авторизован; null, если не подключен; false, если подключен но неавторизован) + */ +function worker(string $id): _document|null|false +{ + global $arangodb; + + return collection::search( + $arangodb->session, + sprintf( + <<<'AQL' + FOR d IN worker + LET e = ( + FOR e IN account_edge_worker + FILTER e._from == '%s' + SORT e.created DESC, e._key DESC + LIMIT 1 + RETURN e + ) + FILTER d._id == e[0]._to + SORT d.created DESC, d._key DESC + LIMIT 1 + RETURN d + AQL, + $id + ) + ); +} + +function registration(string $id, string $number): bool +{ + global $arangodb; + + if (collection::init($arangodb->session, 'telegram')) { + if ($telegram = collection::search($arangodb->session, sprintf("FOR d IN telegram FILTER d.id == '%s' RETURN d", $id))) { + // Найден аккаунт + + // Запись номера + $telegram->number = $number; + if (!document::update($arangodb->session, $telegram)) return false; + } else if ( + $number === null + || !$telegram = collection::search( + $arangodb->session, + sprintf( + "FOR d IN telegram FILTER d._id == '%s' RETURN d", + document::write($arangodb->session, 'telegram', ['id' => $id, 'active' => false, 'number' => $number]) + ) + ) + ) return false; + + // Инициализация ребра: account -> telegram + if ( + collection::init($arangodb->session, 'account') + && ($account = collection::search( + $arangodb->session, + sprintf( + "FOR d IN account FILTER d.number == '%d' RETURN d", + $telegram->number + ) + )) + && collection::init($arangodb->session, 'connection', true) + && (collection::search( + $arangodb->session, + sprintf( + "FOR d IN connection FILTER d._from == '%s' && d._to == '%s' RETURN d", + $account->getId(), + $telegram->getId() + ) + ) + ?? collection::search( + $arangodb->session, + sprintf( + "FOR d IN connection FILTER d._id == '%s' RETURN d", + document::write( + $arangodb->session, + 'connection', + ['_from' => $account->getId(), '_to' => $telegram->getId()] + ) + ) + )) + ) { + // Инициализировано ребро: account -> telegram + + // Активация + $telegram->active = true; + return document::update($arangodb->session, $telegram); + } + } else throw new exception('Не удалось инициализировать коллекцию'); + + return false; +} + +function generateAuthenticationKeyboard(): array +{ + return [ + 'reply_markup' => [ + 'keyboard' => [ + [ + ['text' => '🔐 Аутентификация', 'request_contact' => true] + ] + ], + 'resize_keyboard' => true + ] + ]; +} + +function generateMenu(Context $ctx): void +{ + if ($account = authorization($ctx->getMessage()?->getFrom()?->getId() ?? $ctx->getCallbackQuery()->getFrom()->getId())) { + // Успешная авторизация + + if (!$account->active) $ctx->sendMessage('⚠️ Свяжитесь с оператором'); + else if ($account->banned) $ctx->sendMessage('⚠️ Свяжитесь с оператором'); + else if (!($worker = worker($account->getId()))->active) $ctx->sendMessage('⚠️ Свяжитесь с оператором'); + else if ($worker->fired) $ctx->sendMessage('⚠️ Свяжитесь с оператором'); + else { + // Активен аккаунт + + $ctx->sendMessage('👋 Здравствуйте, ' . preg_replace('/([._\-()!#])/', '\\\$1', $account->name['first']), [ + 'reply_markup' => [ + 'inline_keyboard' => [ + [ + ['text' => '🔍 Активные заявки', 'callback_data' => 'day'] + ] + ], + 'remove_keyboard' => true + ] + ])->then(function ($message) use ($ctx) { + $ctx->setChatDataItem("menu", $message); + }); + } + } +} + +/** + * Прочитать заявки из ArangoDB + * + * @param int $amount Количество + * @param ?string $date За какую дату (unixtime) + * @param int $page Страница + * @param _document $worker Сотрудник + * + * @return Cursor + */ +function requests(int $amount = 5, ?string $date = null, int $page = 1, _document $worker): Cursor +{ + global $arangodb; + + // Инициализация значения даты по умолчанию + $date ??= time(); + + // Фильтрация номера страницы + if ($page < 1) $page = 1; + + // Инициализация номера страницы для вычислний + --$page; + + // Инициализация сдвига + $offset = $page === 0 ? 0 : $page * $amount; + + return (new _statement( + $arangodb->session, + [ + 'query' => sprintf( + // d.date < %s там специально, не менять на <= + "FOR d IN task FILTER ((d.date >= %s && d.date < %s && d.start >= '05:00') || (d.date >= %s && d.date < %s && d.start < '05:00')) && d.worker == null && d.market != null && d.confirmed != true && d.published == true && d.completed != true && (FOR m IN market FILTER m.id == d.market && IS_ARRAY(m.bans) SORT m.created DESC, m._key DESC LIMIT 1 RETURN !POSITION(m.bans, \"%s\"))[0] SORT d.created DESC, d._key DESC LIMIT %d, %d RETURN d", + $from = (new DateTime("@$date"))->setTime(0, 0)->format('U'), + $to = (new DateTime("@$date"))->modify('+1 day')->setTime(0, 0)->format('U'), + $to, + (new DateTime("@$date"))->modify('+2 day')->setTime(0, 0)->format('U'), + $worker->id, + $offset, + $amount + $offset - ($page > 0) + ), + "batchSize" => 1000, + "sanitize" => true + ] + ))->execute(); +} + +function generateEmojis(): string +{ + return '&#' . hexdec(trim(array_rand(file(__DIR__ . '/../emojis.txt')))) . ';'; +} + +function requests_next(Context $ctx): void +{ + $ctx->getChatDataItem('requests_page')->then(function ($page) use ($ctx) { + $ctx->setChatDataItem('requests_page', ($page ?? 1) + 1)->then(function () use ($ctx, $page) { + search($ctx); + }); + }); +} + +function requests_previous(Context $ctx): void +{ + $ctx->getChatDataItem('requests_page')->then(function ($page) use ($ctx) { + $ctx->setChatDataItem('requests_page', ($page ?? 2) - 1)->then(function () use ($ctx) { + search($ctx); + }); + }); +} + +function request_choose(Context $ctx): void +{ + if (($account = authorization($ctx->getCallbackQuery()->getFrom()->getId())) instanceof _document) { + // Авторизован + + if (!$account->active) $ctx->sendMessage('⚠️ Свяжитесь с оператором'); + else if ($account->banned) $ctx->sendMessage('⚠️ Свяжитесь с оператором'); + else if (!($worker = worker($account->getId()))->active) $ctx->sendMessage('⚠️ Свяжитесь с оператором'); + else if ($worker->fired) $ctx->sendMessage('⚠️ Свяжитесь с оператором'); + else { + // Активен аккаунт + + // Инициализация ключа инстанции task в базе данных + preg_match('/\->\s#(\d+)\n/', $ctx->getCallbackQuery()->getMessage()->getText(), $matches); + + // Запись ключа инстанции task (заявка на которую регистрируется сотрудник) + $ctx->setChatDataItem("request_confirmation_target", $matches[1]); + + // Запрос подтверждения + $ctx->sendMessage("⚡ *Подтверждение записи*\n\n" . preg_replace('/(^[^:\s\n\r]+:)/m', '*$1*', preg_replace('/(\\\#\d+)/', '*$1*', escape($ctx->getCallbackQuery()->getMessage()->getText()))) . "\n\n*⚠️ Вы подтверждаете отправку запроса?*", [ + 'reply_markup' => [ + 'inline_keyboard' => [ + [ + ['text' => 'Подтвердить', 'callback_data' => 'request_confirmed'], + ['text' => 'Отменить', 'callback_data' => 'request_rejected'] + ] + ] + ] + ])->then(function ($message) use ($ctx) { + // Запись сообщения в кеш (на случай необходимости его удаления) + $ctx->setChatDataItem("request_confirmation", $message); + }); + } + } +} + +function request_confirmed(Context $ctx): void +{ + global $arangodb; + + if (($account = authorization($ctx->getCallbackQuery()->getFrom()->getId())) instanceof _document) { + // Авторизован + + $ctx->getChatDataItem("request_confirmation_target")->then(function ($_key) use ($ctx, $arangodb, $account) { + // Прочитана запрашиваемая заявка + + // Инициализация инстанции task в базе данных (выбранного задания) + $task = collection::search($arangodb->session, sprintf("FOR d IN task FILTER d._key == '%s' && d.published == true && d.completed != true && worker == null RETURN d", $_key)); + + if ($task instanceof _document) { + // Найдена заявка (подразумевается, что не занята) + + if ($worker ??= worker($account->getId())) { + // Найден сотрудник + + // Запись идентификатора нового сотрудника + $task->worker = $worker->id; + + // Снятие с публикации + $task->published = false; + + if (document::update($arangodb->session, $task)) { + // Записано обновление в базу данных + + $ctx->getChatDataItem("request_all")->then(function ($requests = []) use ($ctx) { + // Удаление сообщений связанных с запросом + foreach ($requests ?? [] as $_message) $ctx->deleteMessage($_message->getChat()->getId(), $_message->getMessageId()); + }); + $ctx->setChatDataItem("request_all", []); + + $ctx->getChatDataItem("request_confirmation")->then(function ($message) use ($ctx) { + $ctx->deleteMessage($message->getChat()->getId(), $message->getMessageId()); + }); + $ctx->setChatDataItem("request_confirmation_target", null); + + $ctx->sendMessage("✅ *Вы зарегистрировались на заявку:* \#$_key", ['reply_markup' => ['remove_keyboard' => true]])->then(function () use ($ctx) { + generateMenu($ctx); + }); + + // End of the process + $ctx->endConversation(); + } else $ctx->sendMessage("❎ *Не удалось принять заявку:* \#$_key", ['reply_markup' => ['remove_keyboard' => true]])->then(function () use ($ctx) { + generateMenu($ctx); + }); + } else $ctx->sendMessage("❎ *Не удалось принять заявку:* \#$_key", ['reply_markup' => ['remove_keyboard' => true]])->then(function () use ($ctx) { + generateMenu($ctx); + }); + } else $ctx->sendMessage("❎ *Не удалось принять заявку:* \#$_key", ['reply_markup' => ['remove_keyboard' => true]])->then(function () use ($ctx) { + generateMenu($ctx); + }); + }); + } +} + +function request_rejected(Context $ctx): void +{ + $ctx->getChatDataItem("request_confirmation_target")->then(function ($_key) use ($ctx) { + // Прочитана запрашиваемая заявка + + $ctx->getChatDataItem("request_confirmation")->then(function ($message) use ($ctx) { + $ctx->deleteMessage($message->getChat()->getId(), $message->getMessageId()); + }); + $ctx->setChatDataItem("request_confirmation_target", null); + + $ctx->sendMessage("✅ *Вы отменили регистрацию на заявку:* \#$_key", ['reply_markup' => ['remove_keyboard' => true]])->then(function () use ($ctx) { + generateMenu($ctx); + }); + + // End of the process + $ctx->endConversation(); + }); +} + +function day(Context $ctx): void +{ + if (($account = authorization($ctx->getMessage()?->getFrom()?->getId() ?? $ctx->getCallbackQuery()->getFrom()->getId())) instanceof _document) { + // Авторизован + + if (!$account->active) $ctx->sendMessage('⚠️ Свяжитесь с оператором'); + else if ($account->banned) $ctx->sendMessage('⚠️ Свяжитесь с оператором'); + else if (!($worker = worker($account->getId()))->active) $ctx->sendMessage('⚠️ Свяжитесь с оператором'); + else if ($worker->fired) $ctx->sendMessage('⚠️ Свяжитесь с оператором'); + else { + // Активен аккаунт + + // Инициализация буфера клавиатуры + $keyboard = []; + + // Генерация кнопок с выбором даты + for ($i = 1, $r = 0; $i < 15; ++$i) $keyboard[$i > 4 * ($r + 1) ? ++$r : $r][] = ['text' => ($date = (new DateTime)->modify("+$i day"))->format('d.m.Y'), 'callback_data' => $date->format('U')]; + + $ctx->setChatDataItem('requests_page', 1)->then(function () use ($ctx, $keyboard) { + // Отправка меню + $ctx->sendMessage('📅 Выберите дату', [ + 'reply_markup' => [ + 'inline_keyboard' => $keyboard + ] + ])->then(function ($message) use ($ctx) { + $ctx->getChatDataItem("menu")->then(function ($message) use ($ctx) { + // Удаление главного меню + if ($message) $ctx->deleteMessage($message->getChat()->getId(), $message->getMessageId()); + $ctx->setChatDataItem("menu", null); + }); + + // Запись сообщения в кеш (на случай необходимости его удаления при смене страницы) + $ctx->setChatDataItem("request_day", $message); + }); + }); + + $ctx->nextStep("search"); + } + } +} + +function search(Context $ctx): void +{ + global $arangodb; + + if (($account = authorization($ctx->getMessage()?->getFrom()?->getId() ?? $ctx->getCallbackQuery()->getFrom()->getId())) instanceof _document) { + // Авторизован + + if (!$account->active) $ctx->sendMessage('⚠️ Свяжитесь с оператором'); + else if ($account->banned) $ctx->sendMessage('⚠️ Свяжитесь с оператором'); + else if (!($worker = worker($account->getId()))->active) $ctx->sendMessage('⚠️ Свяжитесь с оператором'); + else if ($worker->fired) $ctx->sendMessage('⚠️ Свяжитесь с оператором'); + else { + // Активен аккаунт + + $ctx->getChatDataItem('requests_page')->then(function ($page) use ($ctx, $arangodb, $worker) { + // Найдена текущая страница + + // Значение страницы по умолчанию + if (empty($page)) { + $page = 1; + $ctx->setChatDataItem('requests_page', 1); + } + + $generate = function ($date) use ($ctx, $page, $arangodb, $worker) { + // Поиск заявок в ArangoDB + $tasks = requests(4, (string) $date, $page, $worker); + + // Подсчёт количества прочитанных заявок из базы данных + $count = $tasks->getCount(); + + // Проверка существования избытка + $excess = $count > 3; + + // Обрезка заявок до размера страницы (3 заявки на 1 странице) + $tasks = array_slice($tasks->getAll(), 0, 3); + + if ($count === 0) { + $ctx->sendMessage('📦 *Заявок нет*')->then(function ($message) use ($ctx) { + $ctx->getChatDataItem("request_all")->then(function ($requests = []) use ($ctx, $message) { + // Удаление сообщений связанных с запросом + foreach ($requests ?? [] as $_message) $ctx->deleteMessage($_message->getChat()->getId(), $_message->getMessageId()); + $ctx->setChatDataItem("request_all", $requests = [$message]); + }); + }); + } else { + // Найдены заявки + + $ctx->getChatDataItem("request_day")->then(function ($message) use ($ctx, $arangodb, $tasks, $page, $excess) { + // Удаление предыдущего меню с выбором даты + if ($message) $ctx->deleteMessage($message->getChat()->getId(), $message->getMessageId()); + $ctx->setChatDataItem("request_day", null)->then(function () use ($ctx, $arangodb, $tasks, $page, $excess) { + $ctx->getChatDataItem("request_all")->then(function ($requests = []) use ($ctx, $arangodb, $tasks, $excess, $page) { + // Удаление сообщений связанных с запросом + foreach ($requests ?? [] as $_message) $ctx->deleteMessage($_message->getChat()->getId(), $_message->getMessageId()); + $ctx->setChatDataItem("request_all", [])->then(function () use ($ctx, $arangodb, $tasks, $excess, $page) { + foreach ($tasks as $i => $task) { + // Перебор найденных заявок + + if (($market = collection::search( + $arangodb->session, + sprintf( + "FOR d IN market FILTER d.id == '%s' RETURN d", + $task->market + ) + )) instanceof _document) { + // Найден магазин + $ctx->getChatDataItem("request_$i")->then(function ($message) use ($ctx, $task, $market, $tasks, $i, $page, $excess) { + // Удаление предыдущего сообщения на этой позиции + if ($message) $ctx->deleteMessage($message->getChat()->getId(), $message->getMessageId()); + $ctx->setChatDataItem("request_$i", null)->then(function () use ($ctx, $task, $market, $tasks, $i, $page, $excess) { + // Генерация эмодзи + /* $emoji = generateEmojis(); */ + + // Отправка сообщения + $ctx->sendMessage( + preg_replace( + '/([._\-()!#])/', + '\\\$1', + "*#$task->market* -\> *#{$task->getKey()}*\n" . (new DateTime('@' . $task->date))->format('d.m.Y') . " (" . $task->start . " - " . $task->end . ")\n\n*Город:* $market->city\n*Адрес:* $market->address\n*Работа:* $task->work" . (mb_strlen($task->description) > 0 ? "\n\n$task->description" : '') + ), + [ + 'reply_markup' => [ + 'inline_keyboard' => [ + [ + ['text' => '✅ Отправить запрос', 'callback_data' => 'request_choose'] + ] + ] + ] + ] + )->then(function ($message) use ($ctx, $tasks, $i, $page, $excess) { + // Запись сообщения в кеш (на случай необходимости его удаления при смене страницы) + $ctx->setChatDataItem("request_$i", $message)->then(function () use ($ctx, $message, $tasks, $i, $page, $excess) { + $ctx->getChatDataItem("request_all")->then(function ($requests = []) use ($ctx, $message, $tasks, $i, $page, $excess) { + $ctx->setChatDataItem("request_all", $requests = ($requests ?? []) + [count($requests) => $message])->then(function () use ($ctx, $tasks, $i, $page, $excess) { + if ($i === array_key_last($tasks)) { + // End of the process + $ctx->endConversation(); + + // Удаление предыдущего меню + $ctx->getChatDataItem("request_menu")->then(function ($message) use ($ctx, $page, $excess) { + if ($message) $ctx->deleteMessage($message->getChat()->getId(), $message->getMessageId()); + $ctx->setChatDataItem("request_menu", null)->then(function () use ($ctx, $page, $excess) { + // Инициализация буфера для меню поиска + $keyboard = []; + + // Генерация кнопки: "Предыдущая страница" + if ($page > 1) $keyboard[] = ['text' => 'Назад', 'callback_data' => 'requests_previous']; + + // Генерация кнопки: "Отображённая страница" + $keyboard[] = ['text' => $page, 'callback_data' => 'requests_current']; + + // Генерация кнопки: "Следующая страница" + if ($excess) $keyboard[] = ['text' => 'Вперёд', 'callback_data' => 'requests_next']; + + // Отправка меню + $ctx->sendMessage('🔍 Выберите заявку', [ + 'reply_markup' => [ + 'inline_keyboard' => [ + $keyboard + ] + ] + ])->then(function ($message) use ($ctx) { + // Запись сообщения в кеш (на случай необходимости его удаления при смене страницы) + $ctx->setChatDataItem("request_menu", $message); + }); + }); + }); + } + }); + }); + }); + }); + }); + }); + } + } + }); + }); + }); + }); + } + }; + + // Инициализация даты и генерация + $ctx->getChatDataItem('requests_date')->then(function ($old) use ($ctx, $generate) { + $new = $ctx->getCallbackQuery()->getData(); + if ($new === (string) (int) $new && $new <= PHP_INT_MAX && $new >= ~PHP_INT_MAX) $ctx->setChatDataItem('requests_date', $new)->then(fn () => $generate($new)); + else $generate($old); + }); + }); + } + } +} + +$config = new Config(); +$config->setParseMode(Config::PARSE_MODE_MARKDOWN); + +$bot = new Zanzara(require(__DIR__ . '/../settings/key.php'), $config); + +$stop = false; + +$bot->onUpdate(function (Context $ctx) use (&$stop): void { + $message = $ctx->getMessage(); + + if ( + isset($message) + && ($contact = $message->getContact()) + && $contact->getUserId() === $message->getFrom()->getId() + ) { + // Передан контакт со своими данными (подразумевается второй шаг аутентификации и запуск регистрации) + + // Запуск регистрации + if (registration($contact->getUserId(), $contact->getPhoneNumber())) { + // Успешная регистрация + + $ctx->sendMessage('✅ *Аккаунт подключен*', ['reply_markup' => ['remove_keyboard' => true]])->then(function () use ($ctx) { + generateMenu($ctx); + }); + + $stop = true; + } else $ctx->sendMessage('⛔ *Вы не авторизованы*', generateAuthenticationKeyboard()); + } else if ($message?->getText() !== '🔐 Аутентификация' && !authorization($message?->getFrom()?->getId() ?? $ctx->getCallbackQuery()->getFrom()->getId())) { + $ctx->sendMessage('⛔ *Вы не авторизованы*', generateAuthenticationKeyboard()); + + $stop = true; + } +}); + +$bot->onCommand('start', function (Context $ctx) use ($stop): void { + if ($stop) return; + $ctx->getChatDataItem("request_all")->then(function ($requests = []) use ($ctx) { + // Удаление сообщений связанных с запросом + foreach ($requests ?? [] as $_message) $ctx->deleteMessage($_message->getChat()->getId(), $_message->getMessageId()); + $ctx->setChatDataItem("request_all", []); + }); + + $ctx->getChatDataItem("menu")->then(function ($message) use ($ctx) { + // Удаление главного меню + if ($message) $ctx->deleteMessage($message->getChat()->getId(), $message->getMessageId()); + $ctx->setChatDataItem("menu", null); + }); + + $ctx->getChatDataItem("request_day")->then(function ($message) use ($ctx) { + // Удаление меню выбора даты + if ($message) $ctx->deleteMessage($message->getChat()->getId(), $message->getMessageId()); + $ctx->setChatDataItem("request_day", null); + }); + + generateMenu($ctx); +}); + +$bot->onCbQueryData(['requests_next'], fn ($ctx) => requests_next($ctx)); +$bot->onCbQueryData(['requests_previous'], fn ($ctx) => requests_previous($ctx)); +$bot->onCbQueryData(['request_choose'], fn ($ctx) => request_choose($ctx)); +$bot->onCbQueryData(['request_confirmed'], fn ($ctx) => request_confirmed($ctx)); +$bot->onCbQueryData(['request_rejected'], fn ($ctx) => request_rejected($ctx)); +$bot->onCommand('day', fn ($ctx) => day($ctx)); +$bot->onCbQueryData(['day'], fn ($ctx) => day($ctx)); + +$bot->run(); diff --git a/mirzaev/spetsresurs/telegram/registry/requests/system/settings/.gitignore b/mirzaev/spetsresurs/telegram/registry/requests/system/settings/.gitignore new file mode 100755 index 0000000..2027072 --- /dev/null +++ b/mirzaev/spetsresurs/telegram/registry/requests/system/settings/.gitignore @@ -0,0 +1,3 @@ +* +!.gitignore +!*.sample diff --git a/mirzaev/spetsresurs/telegram/registry/requests/system/settings/arangodb.php.sample b/mirzaev/spetsresurs/telegram/registry/requests/system/settings/arangodb.php.sample new file mode 100755 index 0000000..fc1c2d1 --- /dev/null +++ b/mirzaev/spetsresurs/telegram/registry/requests/system/settings/arangodb.php.sample @@ -0,0 +1,8 @@ + 'unix:///var/run/arangodb3/arango.sock', + 'database' => '', + 'name' => '', + 'password' => '' +]; diff --git a/mirzaev/spetsresurs/telegram/registry/requests/system/settings/key.php.sample b/mirzaev/spetsresurs/telegram/registry/requests/system/settings/key.php.sample new file mode 100755 index 0000000..7679934 --- /dev/null +++ b/mirzaev/spetsresurs/telegram/registry/requests/system/settings/key.php.sample @@ -0,0 +1,3 @@ +