summaryrefslogtreecommitdiff
path: root/vendor
diff options
context:
space:
mode:
Diffstat (limited to 'vendor')
-rw-r--r--vendor/autoload.php7
-rw-r--r--vendor/composer/ClassLoader.php445
-rw-r--r--vendor/composer/LICENSE21
-rw-r--r--vendor/composer/autoload_classmap.php17
-rw-r--r--vendor/composer/autoload_files.php17
-rw-r--r--vendor/composer/autoload_namespaces.php11
-rw-r--r--vendor/composer/autoload_psr4.php17
-rw-r--r--vendor/composer/autoload_real.php73
-rw-r--r--vendor/composer/autoload_static.php113
-rw-r--r--vendor/composer/installed.json748
-rw-r--r--vendor/eher/oauth/.gitignore4
-rw-r--r--vendor/eher/oauth/.travis.yml9
-rw-r--r--vendor/eher/oauth/README.md3
-rw-r--r--vendor/eher/oauth/composer.json17
-rw-r--r--vendor/eher/oauth/phpunit.xml.dist7
-rw-r--r--vendor/eher/oauth/src/Eher/OAuth/Consumer.php19
-rw-r--r--vendor/eher/oauth/src/Eher/OAuth/HmacSha1.php31
-rw-r--r--vendor/eher/oauth/src/Eher/OAuth/OAuthDataStore.php30
-rw-r--r--vendor/eher/oauth/src/Eher/OAuth/OAuthException.php9
-rw-r--r--vendor/eher/oauth/src/Eher/OAuth/OAuthServer.php225
-rw-r--r--vendor/eher/oauth/src/Eher/OAuth/PlainText.php36
-rw-r--r--vendor/eher/oauth/src/Eher/OAuth/Request.php264
-rw-r--r--vendor/eher/oauth/src/Eher/OAuth/RsaSha1.php70
-rw-r--r--vendor/eher/oauth/src/Eher/OAuth/SignatureMethod.php40
-rw-r--r--vendor/eher/oauth/src/Eher/OAuth/Token.php34
-rw-r--r--vendor/eher/oauth/src/Eher/OAuth/Util.php155
-rw-r--r--vendor/eher/oauth/test/Eher/OAuth/ConsumerTest.php18
-rw-r--r--vendor/eher/oauth/test/Eher/OAuth/RequestTest.php40
-rw-r--r--vendor/guzzlehttp/guzzle/.php_cs23
-rw-r--r--vendor/guzzlehttp/guzzle/CHANGELOG.md1338
-rw-r--r--vendor/guzzlehttp/guzzle/Dockerfile18
-rw-r--r--vendor/guzzlehttp/guzzle/LICENSE19
-rw-r--r--vendor/guzzlehttp/guzzle/README.md90
-rw-r--r--vendor/guzzlehttp/guzzle/UPGRADING.md1203
-rw-r--r--vendor/guzzlehttp/guzzle/composer.json59
-rw-r--r--vendor/guzzlehttp/guzzle/src/Client.php501
-rw-r--r--vendor/guzzlehttp/guzzle/src/ClientInterface.php87
-rw-r--r--vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php316
-rw-r--r--vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php84
-rw-r--r--vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php91
-rw-r--r--vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php72
-rw-r--r--vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php403
-rw-r--r--vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php27
-rw-r--r--vendor/guzzlehttp/guzzle/src/Exception/ClientException.php9
-rw-r--r--vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php37
-rw-r--r--vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php23
-rw-r--r--vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php7
-rw-r--r--vendor/guzzlehttp/guzzle/src/Exception/RequestException.php192
-rw-r--r--vendor/guzzlehttp/guzzle/src/Exception/SeekException.php27
-rw-r--r--vendor/guzzlehttp/guzzle/src/Exception/ServerException.php9
-rw-r--r--vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php6
-rw-r--r--vendor/guzzlehttp/guzzle/src/Exception/TransferException.php6
-rw-r--r--vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php585
-rw-r--r--vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php27
-rw-r--r--vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php45
-rw-r--r--vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php219
-rw-r--r--vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php92
-rw-r--r--vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php195
-rw-r--r--vendor/guzzlehttp/guzzle/src/Handler/Proxy.php55
-rw-r--r--vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php545
-rw-r--r--vendor/guzzlehttp/guzzle/src/HandlerStack.php277
-rw-r--r--vendor/guzzlehttp/guzzle/src/MessageFormatter.php185
-rw-r--r--vendor/guzzlehttp/guzzle/src/Middleware.php254
-rw-r--r--vendor/guzzlehttp/guzzle/src/Pool.php134
-rw-r--r--vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php111
-rw-r--r--vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php255
-rw-r--r--vendor/guzzlehttp/guzzle/src/RequestOptions.php263
-rw-r--r--vendor/guzzlehttp/guzzle/src/RetryMiddleware.php128
-rw-r--r--vendor/guzzlehttp/guzzle/src/TransferStats.php126
-rw-r--r--vendor/guzzlehttp/guzzle/src/UriTemplate.php237
-rw-r--r--vendor/guzzlehttp/guzzle/src/Utils.php92
-rw-r--r--vendor/guzzlehttp/guzzle/src/functions.php334
-rw-r--r--vendor/guzzlehttp/guzzle/src/functions_include.php6
-rw-r--r--vendor/guzzlehttp/promises/CHANGELOG.md65
-rw-r--r--vendor/guzzlehttp/promises/LICENSE19
-rw-r--r--vendor/guzzlehttp/promises/Makefile13
-rw-r--r--vendor/guzzlehttp/promises/README.md504
-rw-r--r--vendor/guzzlehttp/promises/composer.json34
-rw-r--r--vendor/guzzlehttp/promises/src/AggregateException.php16
-rw-r--r--vendor/guzzlehttp/promises/src/CancellationException.php9
-rw-r--r--vendor/guzzlehttp/promises/src/Coroutine.php151
-rw-r--r--vendor/guzzlehttp/promises/src/EachPromise.php229
-rw-r--r--vendor/guzzlehttp/promises/src/FulfilledPromise.php82
-rw-r--r--vendor/guzzlehttp/promises/src/Promise.php280
-rw-r--r--vendor/guzzlehttp/promises/src/PromiseInterface.php93
-rw-r--r--vendor/guzzlehttp/promises/src/PromisorInterface.php15
-rw-r--r--vendor/guzzlehttp/promises/src/RejectedPromise.php87
-rw-r--r--vendor/guzzlehttp/promises/src/RejectionException.php47
-rw-r--r--vendor/guzzlehttp/promises/src/TaskQueue.php66
-rw-r--r--vendor/guzzlehttp/promises/src/TaskQueueInterface.php25
-rw-r--r--vendor/guzzlehttp/promises/src/functions.php457
-rw-r--r--vendor/guzzlehttp/promises/src/functions_include.php6
-rw-r--r--vendor/guzzlehttp/psr7/CHANGELOG.md246
-rw-r--r--vendor/guzzlehttp/psr7/LICENSE19
-rw-r--r--vendor/guzzlehttp/psr7/README.md745
-rw-r--r--vendor/guzzlehttp/psr7/composer.json49
-rw-r--r--vendor/guzzlehttp/psr7/src/AppendStream.php241
-rw-r--r--vendor/guzzlehttp/psr7/src/BufferStream.php137
-rw-r--r--vendor/guzzlehttp/psr7/src/CachingStream.php138
-rw-r--r--vendor/guzzlehttp/psr7/src/DroppingStream.php42
-rw-r--r--vendor/guzzlehttp/psr7/src/FnStream.php158
-rw-r--r--vendor/guzzlehttp/psr7/src/InflateStream.php52
-rw-r--r--vendor/guzzlehttp/psr7/src/LazyOpenStream.php39
-rw-r--r--vendor/guzzlehttp/psr7/src/LimitStream.php155
-rw-r--r--vendor/guzzlehttp/psr7/src/MessageTrait.php213
-rw-r--r--vendor/guzzlehttp/psr7/src/MultipartStream.php153
-rw-r--r--vendor/guzzlehttp/psr7/src/NoSeekStream.php22
-rw-r--r--vendor/guzzlehttp/psr7/src/PumpStream.php165
-rw-r--r--vendor/guzzlehttp/psr7/src/Request.php151
-rw-r--r--vendor/guzzlehttp/psr7/src/Response.php154
-rw-r--r--vendor/guzzlehttp/psr7/src/Rfc7230.php18
-rw-r--r--vendor/guzzlehttp/psr7/src/ServerRequest.php376
-rw-r--r--vendor/guzzlehttp/psr7/src/Stream.php267
-rw-r--r--vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php149
-rw-r--r--vendor/guzzlehttp/psr7/src/StreamWrapper.php161
-rw-r--r--vendor/guzzlehttp/psr7/src/UploadedFile.php316
-rw-r--r--vendor/guzzlehttp/psr7/src/Uri.php760
-rw-r--r--vendor/guzzlehttp/psr7/src/UriNormalizer.php216
-rw-r--r--vendor/guzzlehttp/psr7/src/UriResolver.php219
-rw-r--r--vendor/guzzlehttp/psr7/src/functions.php899
-rw-r--r--vendor/guzzlehttp/psr7/src/functions_include.php6
-rw-r--r--vendor/paragonie/random_compat/LICENSE22
-rw-r--r--vendor/paragonie/random_compat/build-phar.sh5
-rw-r--r--vendor/paragonie/random_compat/composer.json34
-rw-r--r--vendor/paragonie/random_compat/dist/random_compat.phar.pubkey5
-rw-r--r--vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc11
-rw-r--r--vendor/paragonie/random_compat/lib/random.php32
-rw-r--r--vendor/paragonie/random_compat/other/build_phar.php57
-rw-r--r--vendor/paragonie/random_compat/psalm-autoload.php9
-rw-r--r--vendor/paragonie/random_compat/psalm.xml19
-rw-r--r--vendor/psr/http-message/CHANGELOG.md36
-rw-r--r--vendor/psr/http-message/LICENSE19
-rw-r--r--vendor/psr/http-message/README.md13
-rw-r--r--vendor/psr/http-message/composer.json26
-rw-r--r--vendor/psr/http-message/src/MessageInterface.php187
-rw-r--r--vendor/psr/http-message/src/RequestInterface.php129
-rw-r--r--vendor/psr/http-message/src/ResponseInterface.php68
-rw-r--r--vendor/psr/http-message/src/ServerRequestInterface.php261
-rw-r--r--vendor/psr/http-message/src/StreamInterface.php158
-rw-r--r--vendor/psr/http-message/src/UploadedFileInterface.php123
-rw-r--r--vendor/psr/http-message/src/UriInterface.php323
-rw-r--r--vendor/ralouphie/getallheaders/LICENSE21
-rw-r--r--vendor/ralouphie/getallheaders/README.md27
-rw-r--r--vendor/ralouphie/getallheaders/composer.json26
-rw-r--r--vendor/ralouphie/getallheaders/src/getallheaders.php46
-rw-r--r--vendor/symfony/polyfill-intl-idn/Idn.php915
-rw-r--r--vendor/symfony/polyfill-intl-idn/Info.php23
-rw-r--r--vendor/symfony/polyfill-intl-idn/LICENSE19
-rw-r--r--vendor/symfony/polyfill-intl-idn/README.md12
-rw-r--r--vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php375
-rw-r--r--vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php24
-rw-r--r--vendor/symfony/polyfill-intl-idn/Resources/unidata/deviation.php8
-rw-r--r--vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php2638
-rw-r--r--vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php308
-rw-r--r--vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php71
-rw-r--r--vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php273
-rw-r--r--vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php5778
-rw-r--r--vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php65
-rw-r--r--vendor/symfony/polyfill-intl-idn/bootstrap.php141
-rw-r--r--vendor/symfony/polyfill-intl-idn/composer.json45
-rw-r--r--vendor/symfony/polyfill-intl-normalizer/LICENSE19
-rw-r--r--vendor/symfony/polyfill-intl-normalizer/Normalizer.php308
-rw-r--r--vendor/symfony/polyfill-intl-normalizer/README.md14
-rw-r--r--vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php17
-rw-r--r--vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php945
-rw-r--r--vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php2065
-rw-r--r--vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php876
-rw-r--r--vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php3695
-rw-r--r--vendor/symfony/polyfill-intl-normalizer/bootstrap.php19
-rw-r--r--vendor/symfony/polyfill-intl-normalizer/composer.json39
-rw-r--r--vendor/symfony/polyfill-php70/LICENSE19
-rw-r--r--vendor/symfony/polyfill-php70/Php70.php74
-rw-r--r--vendor/symfony/polyfill-php70/README.md28
-rw-r--r--vendor/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php5
-rw-r--r--vendor/symfony/polyfill-php70/Resources/stubs/AssertionError.php5
-rw-r--r--vendor/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php5
-rw-r--r--vendor/symfony/polyfill-php70/Resources/stubs/Error.php5
-rw-r--r--vendor/symfony/polyfill-php70/Resources/stubs/ParseError.php5
-rw-r--r--vendor/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php23
-rw-r--r--vendor/symfony/polyfill-php70/Resources/stubs/TypeError.php5
-rw-r--r--vendor/symfony/polyfill-php70/bootstrap.php30
-rw-r--r--vendor/symfony/polyfill-php70/composer.json37
-rw-r--r--vendor/symfony/polyfill-php72/LICENSE19
-rw-r--r--vendor/symfony/polyfill-php72/Php72.php217
-rw-r--r--vendor/symfony/polyfill-php72/README.md28
-rw-r--r--vendor/symfony/polyfill-php72/bootstrap.php57
-rw-r--r--vendor/symfony/polyfill-php72/composer.json35
-rw-r--r--vendor/tumblr/tumblr/.gitignore12
-rw-r--r--vendor/tumblr/tumblr/.travis.yml12
-rw-r--r--vendor/tumblr/tumblr/CONTRIBUTING.md22
-rw-r--r--vendor/tumblr/tumblr/LICENSE202
-rw-r--r--vendor/tumblr/tumblr/README.md109
-rw-r--r--vendor/tumblr/tumblr/composer.json39
-rw-r--r--vendor/tumblr/tumblr/lib/Tumblr/API/Client.php502
-rw-r--r--vendor/tumblr/tumblr/lib/Tumblr/API/RequestException.php35
-rw-r--r--vendor/tumblr/tumblr/lib/Tumblr/API/RequestHandler.php151
-rw-r--r--vendor/tumblr/tumblr/phpunit.xml15
-rw-r--r--vendor/tumblr/tumblr/test/BlogTest.php67
-rw-r--r--vendor/tumblr/tumblr/test/PostTest.php30
-rw-r--r--vendor/tumblr/tumblr/test/RequestExceptionTest.php28
-rw-r--r--vendor/tumblr/tumblr/test/RequestHandlerTest.php71
-rw-r--r--vendor/tumblr/tumblr/test/TaggedTest.php16
-rw-r--r--vendor/tumblr/tumblr/test/TumblrTest.php51
-rw-r--r--vendor/tumblr/tumblr/test/UserTest.php40
-rw-r--r--vendor/tumblr/tumblr/test/bootstrap.php8
205 files changed, 0 insertions, 42112 deletions
diff --git a/vendor/autoload.php b/vendor/autoload.php
deleted file mode 100644
index 527cadb..0000000
--- a/vendor/autoload.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-// autoload.php @generated by Composer
-
-require_once __DIR__ . '/composer/autoload_real.php';
-
-return ComposerAutoloaderInitf8d6d64bba203612c5380d5c06f720ff::getLoader();
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
deleted file mode 100644
index fce8549..0000000
--- a/vendor/composer/ClassLoader.php
+++ /dev/null
@@ -1,445 +0,0 @@
-<?php
-
-/*
- * This file is part of Composer.
- *
- * (c) Nils Adermann <[email protected]>
- * Jordi Boggiano <[email protected]>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Composer\Autoload;
-
-/**
- * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
- *
- * $loader = new \Composer\Autoload\ClassLoader();
- *
- * // register classes with namespaces
- * $loader->add('Symfony\Component', __DIR__.'/component');
- * $loader->add('Symfony', __DIR__.'/framework');
- *
- * // activate the autoloader
- * $loader->register();
- *
- * // to enable searching the include path (eg. for PEAR packages)
- * $loader->setUseIncludePath(true);
- *
- * In this example, if you try to use a class in the Symfony\Component
- * namespace or one of its children (Symfony\Component\Console for instance),
- * the autoloader will first look for the class under the component/
- * directory, and it will then fallback to the framework/ directory if not
- * found before giving up.
- *
- * This class is loosely based on the Symfony UniversalClassLoader.
- *
- * @author Fabien Potencier <[email protected]>
- * @author Jordi Boggiano <[email protected]>
- * @see http://www.php-fig.org/psr/psr-0/
- * @see http://www.php-fig.org/psr/psr-4/
- */
-class ClassLoader
-{
- // PSR-4
- private $prefixLengthsPsr4 = array();
- private $prefixDirsPsr4 = array();
- private $fallbackDirsPsr4 = array();
-
- // PSR-0
- private $prefixesPsr0 = array();
- private $fallbackDirsPsr0 = array();
-
- private $useIncludePath = false;
- private $classMap = array();
- private $classMapAuthoritative = false;
- private $missingClasses = array();
- private $apcuPrefix;
-
- public function getPrefixes()
- {
- if (!empty($this->prefixesPsr0)) {
- return call_user_func_array('array_merge', $this->prefixesPsr0);
- }
-
- return array();
- }
-
- public function getPrefixesPsr4()
- {
- return $this->prefixDirsPsr4;
- }
-
- public function getFallbackDirs()
- {
- return $this->fallbackDirsPsr0;
- }
-
- public function getFallbackDirsPsr4()
- {
- return $this->fallbackDirsPsr4;
- }
-
- public function getClassMap()
- {
- return $this->classMap;
- }
-
- /**
- * @param array $classMap Class to filename map
- */
- public function addClassMap(array $classMap)
- {
- if ($this->classMap) {
- $this->classMap = array_merge($this->classMap, $classMap);
- } else {
- $this->classMap = $classMap;
- }
- }
-
- /**
- * Registers a set of PSR-0 directories for a given prefix, either
- * appending or prepending to the ones previously set for this prefix.
- *
- * @param string $prefix The prefix
- * @param array|string $paths The PSR-0 root directories
- * @param bool $prepend Whether to prepend the directories
- */
- public function add($prefix, $paths, $prepend = false)
- {
- if (!$prefix) {
- if ($prepend) {
- $this->fallbackDirsPsr0 = array_merge(
- (array) $paths,
- $this->fallbackDirsPsr0
- );
- } else {
- $this->fallbackDirsPsr0 = array_merge(
- $this->fallbackDirsPsr0,
- (array) $paths
- );
- }
-
- return;
- }
-
- $first = $prefix[0];
- if (!isset($this->prefixesPsr0[$first][$prefix])) {
- $this->prefixesPsr0[$first][$prefix] = (array) $paths;
-
- return;
- }
- if ($prepend) {
- $this->prefixesPsr0[$first][$prefix] = array_merge(
- (array) $paths,
- $this->prefixesPsr0[$first][$prefix]
- );
- } else {
- $this->prefixesPsr0[$first][$prefix] = array_merge(
- $this->prefixesPsr0[$first][$prefix],
- (array) $paths
- );
- }
- }
-
- /**
- * Registers a set of PSR-4 directories for a given namespace, either
- * appending or prepending to the ones previously set for this namespace.
- *
- * @param string $prefix The prefix/namespace, with trailing '\\'
- * @param array|string $paths The PSR-4 base directories
- * @param bool $prepend Whether to prepend the directories
- *
- * @throws \InvalidArgumentException
- */
- public function addPsr4($prefix, $paths, $prepend = false)
- {
- if (!$prefix) {
- // Register directories for the root namespace.
- if ($prepend) {
- $this->fallbackDirsPsr4 = array_merge(
- (array) $paths,
- $this->fallbackDirsPsr4
- );
- } else {
- $this->fallbackDirsPsr4 = array_merge(
- $this->fallbackDirsPsr4,
- (array) $paths
- );
- }
- } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
- // Register directories for a new namespace.
- $length = strlen($prefix);
- if ('\\' !== $prefix[$length - 1]) {
- throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
- }
- $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
- $this->prefixDirsPsr4[$prefix] = (array) $paths;
- } elseif ($prepend) {
- // Prepend directories for an already registered namespace.
- $this->prefixDirsPsr4[$prefix] = array_merge(
- (array) $paths,
- $this->prefixDirsPsr4[$prefix]
- );
- } else {
- // Append directories for an already registered namespace.
- $this->prefixDirsPsr4[$prefix] = array_merge(
- $this->prefixDirsPsr4[$prefix],
- (array) $paths
- );
- }
- }
-
- /**
- * Registers a set of PSR-0 directories for a given prefix,
- * replacing any others previously set for this prefix.
- *
- * @param string $prefix The prefix
- * @param array|string $paths The PSR-0 base directories
- */
- public function set($prefix, $paths)
- {
- if (!$prefix) {
- $this->fallbackDirsPsr0 = (array) $paths;
- } else {
- $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
- }
- }
-
- /**
- * Registers a set of PSR-4 directories for a given namespace,
- * replacing any others previously set for this namespace.
- *
- * @param string $prefix The prefix/namespace, with trailing '\\'
- * @param array|string $paths The PSR-4 base directories
- *
- * @throws \InvalidArgumentException
- */
- public function setPsr4($prefix, $paths)
- {
- if (!$prefix) {
- $this->fallbackDirsPsr4 = (array) $paths;
- } else {
- $length = strlen($prefix);
- if ('\\' !== $prefix[$length - 1]) {
- throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
- }
- $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
- $this->prefixDirsPsr4[$prefix] = (array) $paths;
- }
- }
-
- /**
- * Turns on searching the include path for class files.
- *
- * @param bool $useIncludePath
- */
- public function setUseIncludePath($useIncludePath)
- {
- $this->useIncludePath = $useIncludePath;
- }
-
- /**
- * Can be used to check if the autoloader uses the include path to check
- * for classes.
- *
- * @return bool
- */
- public function getUseIncludePath()
- {
- return $this->useIncludePath;
- }
-
- /**
- * Turns off searching the prefix and fallback directories for classes
- * that have not been registered with the class map.
- *
- * @param bool $classMapAuthoritative
- */
- public function setClassMapAuthoritative($classMapAuthoritative)
- {
- $this->classMapAuthoritative = $classMapAuthoritative;
- }
-
- /**
- * Should class lookup fail if not found in the current class map?
- *
- * @return bool
- */
- public function isClassMapAuthoritative()
- {
- return $this->classMapAuthoritative;
- }
-
- /**
- * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
- *
- * @param string|null $apcuPrefix
- */
- public function setApcuPrefix($apcuPrefix)
- {
- $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
- }
-
- /**
- * The APCu prefix in use, or null if APCu caching is not enabled.
- *
- * @return string|null
- */
- public function getApcuPrefix()
- {
- return $this->apcuPrefix;
- }
-
- /**
- * Registers this instance as an autoloader.
- *
- * @param bool $prepend Whether to prepend the autoloader or not
- */
- public function register($prepend = false)
- {
- spl_autoload_register(array($this, 'loadClass'), true, $prepend);
- }
-
- /**
- * Unregisters this instance as an autoloader.
- */
- public function unregister()
- {
- spl_autoload_unregister(array($this, 'loadClass'));
- }
-
- /**
- * Loads the given class or interface.
- *
- * @param string $class The name of the class
- * @return bool|null True if loaded, null otherwise
- */
- public function loadClass($class)
- {
- if ($file = $this->findFile($class)) {
- includeFile($file);
-
- return true;
- }
- }
-
- /**
- * Finds the path to the file where the class is defined.
- *
- * @param string $class The name of the class
- *
- * @return string|false The path if found, false otherwise
- */
- public function findFile($class)
- {
- // class map lookup
- if (isset($this->classMap[$class])) {
- return $this->classMap[$class];
- }
- if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
- return false;
- }
- if (null !== $this->apcuPrefix) {
- $file = apcu_fetch($this->apcuPrefix.$class, $hit);
- if ($hit) {
- return $file;
- }
- }
-
- $file = $this->findFileWithExtension($class, '.php');
-
- // Search for Hack files if we are running on HHVM
- if (false === $file && defined('HHVM_VERSION')) {
- $file = $this->findFileWithExtension($class, '.hh');
- }
-
- if (null !== $this->apcuPrefix) {
- apcu_add($this->apcuPrefix.$class, $file);
- }
-
- if (false === $file) {
- // Remember that this class does not exist.
- $this->missingClasses[$class] = true;
- }
-
- return $file;
- }
-
- private function findFileWithExtension($class, $ext)
- {
- // PSR-4 lookup
- $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
-
- $first = $class[0];
- if (isset($this->prefixLengthsPsr4[$first])) {
- $subPath = $class;
- while (false !== $lastPos = strrpos($subPath, '\\')) {
- $subPath = substr($subPath, 0, $lastPos);
- $search = $subPath . '\\';
- if (isset($this->prefixDirsPsr4[$search])) {
- $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
- foreach ($this->prefixDirsPsr4[$search] as $dir) {
- if (file_exists($file = $dir . $pathEnd)) {
- return $file;
- }
- }
- }
- }
- }
-
- // PSR-4 fallback dirs
- foreach ($this->fallbackDirsPsr4 as $dir) {
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
- return $file;
- }
- }
-
- // PSR-0 lookup
- if (false !== $pos = strrpos($class, '\\')) {
- // namespaced class name
- $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
- . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
- } else {
- // PEAR-like class name
- $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
- }
-
- if (isset($this->prefixesPsr0[$first])) {
- foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
- if (0 === strpos($class, $prefix)) {
- foreach ($dirs as $dir) {
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
- return $file;
- }
- }
- }
- }
- }
-
- // PSR-0 fallback dirs
- foreach ($this->fallbackDirsPsr0 as $dir) {
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
- return $file;
- }
- }
-
- // PSR-0 include paths.
- if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
- return $file;
- }
-
- return false;
- }
-}
-
-/**
- * Scope isolated include.
- *
- * Prevents access to $this/self from included files.
- */
-function includeFile($file)
-{
- include $file;
-}
diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE
deleted file mode 100644
index f27399a..0000000
--- a/vendor/composer/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-
-Copyright (c) Nils Adermann, Jordi Boggiano
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
deleted file mode 100644
index 6e0d84a..0000000
--- a/vendor/composer/autoload_classmap.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-// autoload_classmap.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array(
- 'ArithmeticError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
- 'AssertionError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
- 'DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
- 'Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php',
- 'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
- 'ParseError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ParseError.php',
- 'SessionUpdateTimestampHandlerInterface' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php',
- 'TypeError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
-);
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
deleted file mode 100644
index 851b997..0000000
--- a/vendor/composer/autoload_files.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-// autoload_files.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array(
- '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
- 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
- '023d27dca8066ef29e6739335ea73bad' => $vendorDir . '/symfony/polyfill-php70/bootstrap.php',
- '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
- 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
- 'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
- 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
- '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
-);
diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php
deleted file mode 100644
index 412af9e..0000000
--- a/vendor/composer/autoload_namespaces.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-// autoload_namespaces.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array(
- 'Tumblr\\API' => array($vendorDir . '/tumblr/tumblr/lib'),
- 'Eher\\OAuth' => array($vendorDir . '/eher/oauth/src'),
-);
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
deleted file mode 100644
index 1e17d6c..0000000
--- a/vendor/composer/autoload_psr4.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-// autoload_psr4.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array(
- 'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),
- 'Symfony\\Polyfill\\Php70\\' => array($vendorDir . '/symfony/polyfill-php70'),
- 'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'),
- 'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'),
- 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
- 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'),
- 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'),
- 'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'),
-);
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
deleted file mode 100644
index 91bd6bb..0000000
--- a/vendor/composer/autoload_real.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-
-// autoload_real.php @generated by Composer
-
-class ComposerAutoloaderInitf8d6d64bba203612c5380d5c06f720ff
-{
- private static $loader;
-
- public static function loadClassLoader($class)
- {
- if ('Composer\Autoload\ClassLoader' === $class) {
- require __DIR__ . '/ClassLoader.php';
- }
- }
-
- /**
- * @return \Composer\Autoload\ClassLoader
- */
- public static function getLoader()
- {
- if (null !== self::$loader) {
- return self::$loader;
- }
-
- spl_autoload_register(array('ComposerAutoloaderInitf8d6d64bba203612c5380d5c06f720ff', 'loadClassLoader'), true, true);
- self::$loader = $loader = new \Composer\Autoload\ClassLoader();
- spl_autoload_unregister(array('ComposerAutoloaderInitf8d6d64bba203612c5380d5c06f720ff', 'loadClassLoader'));
-
- $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
- if ($useStaticLoader) {
- require_once __DIR__ . '/autoload_static.php';
-
- call_user_func(\Composer\Autoload\ComposerStaticInitf8d6d64bba203612c5380d5c06f720ff::getInitializer($loader));
- } else {
- $map = require __DIR__ . '/autoload_namespaces.php';
- foreach ($map as $namespace => $path) {
- $loader->set($namespace, $path);
- }
-
- $map = require __DIR__ . '/autoload_psr4.php';
- foreach ($map as $namespace => $path) {
- $loader->setPsr4($namespace, $path);
- }
-
- $classMap = require __DIR__ . '/autoload_classmap.php';
- if ($classMap) {
- $loader->addClassMap($classMap);
- }
- }
-
- $loader->register(true);
-
- if ($useStaticLoader) {
- $includeFiles = Composer\Autoload\ComposerStaticInitf8d6d64bba203612c5380d5c06f720ff::$files;
- } else {
- $includeFiles = require __DIR__ . '/autoload_files.php';
- }
- foreach ($includeFiles as $fileIdentifier => $file) {
- composerRequiref8d6d64bba203612c5380d5c06f720ff($fileIdentifier, $file);
- }
-
- return $loader;
- }
-}
-
-function composerRequiref8d6d64bba203612c5380d5c06f720ff($fileIdentifier, $file)
-{
- if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
- require $file;
-
- $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
- }
-}
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
deleted file mode 100644
index 9846f92..0000000
--- a/vendor/composer/autoload_static.php
+++ /dev/null
@@ -1,113 +0,0 @@
-<?php
-
-// autoload_static.php @generated by Composer
-
-namespace Composer\Autoload;
-
-class ComposerStaticInitf8d6d64bba203612c5380d5c06f720ff
-{
- public static $files = array (
- '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
- 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
- '023d27dca8066ef29e6739335ea73bad' => __DIR__ . '/..' . '/symfony/polyfill-php70/bootstrap.php',
- '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
- 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
- 'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
- 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
- '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
- );
-
- public static $prefixLengthsPsr4 = array (
- 'S' =>
- array (
- 'Symfony\\Polyfill\\Php72\\' => 23,
- 'Symfony\\Polyfill\\Php70\\' => 23,
- 'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33,
- 'Symfony\\Polyfill\\Intl\\Idn\\' => 26,
- ),
- 'P' =>
- array (
- 'Psr\\Http\\Message\\' => 17,
- ),
- 'G' =>
- array (
- 'GuzzleHttp\\Psr7\\' => 16,
- 'GuzzleHttp\\Promise\\' => 19,
- 'GuzzleHttp\\' => 11,
- ),
- );
-
- public static $prefixDirsPsr4 = array (
- 'Symfony\\Polyfill\\Php72\\' =>
- array (
- 0 => __DIR__ . '/..' . '/symfony/polyfill-php72',
- ),
- 'Symfony\\Polyfill\\Php70\\' =>
- array (
- 0 => __DIR__ . '/..' . '/symfony/polyfill-php70',
- ),
- 'Symfony\\Polyfill\\Intl\\Normalizer\\' =>
- array (
- 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer',
- ),
- 'Symfony\\Polyfill\\Intl\\Idn\\' =>
- array (
- 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn',
- ),
- 'Psr\\Http\\Message\\' =>
- array (
- 0 => __DIR__ . '/..' . '/psr/http-message/src',
- ),
- 'GuzzleHttp\\Psr7\\' =>
- array (
- 0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src',
- ),
- 'GuzzleHttp\\Promise\\' =>
- array (
- 0 => __DIR__ . '/..' . '/guzzlehttp/promises/src',
- ),
- 'GuzzleHttp\\' =>
- array (
- 0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src',
- ),
- );
-
- public static $prefixesPsr0 = array (
- 'T' =>
- array (
- 'Tumblr\\API' =>
- array (
- 0 => __DIR__ . '/..' . '/tumblr/tumblr/lib',
- ),
- ),
- 'E' =>
- array (
- 'Eher\\OAuth' =>
- array (
- 0 => __DIR__ . '/..' . '/eher/oauth/src',
- ),
- ),
- );
-
- public static $classMap = array (
- 'ArithmeticError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
- 'AssertionError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
- 'DivisionByZeroError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
- 'Error' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/Error.php',
- 'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
- 'ParseError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/ParseError.php',
- 'SessionUpdateTimestampHandlerInterface' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php',
- 'TypeError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
- );
-
- public static function getInitializer(ClassLoader $loader)
- {
- return \Closure::bind(function () use ($loader) {
- $loader->prefixLengthsPsr4 = ComposerStaticInitf8d6d64bba203612c5380d5c06f720ff::$prefixLengthsPsr4;
- $loader->prefixDirsPsr4 = ComposerStaticInitf8d6d64bba203612c5380d5c06f720ff::$prefixDirsPsr4;
- $loader->prefixesPsr0 = ComposerStaticInitf8d6d64bba203612c5380d5c06f720ff::$prefixesPsr0;
- $loader->classMap = ComposerStaticInitf8d6d64bba203612c5380d5c06f720ff::$classMap;
-
- }, null, ClassLoader::class);
- }
-}
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
deleted file mode 100644
index 6cfbe5b..0000000
--- a/vendor/composer/installed.json
+++ /dev/null
@@ -1,748 +0,0 @@
-[
- {
- "name": "eher/oauth",
- "version": "1.0.7",
- "version_normalized": "1.0.7.0",
- "source": {
- "type": "git",
- "url": "https://github.com/EHER/OAuth.git",
- "reference": "935c1f7709d1c1457de9e250d0e5f29cac06e507"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/EHER/OAuth/zipball/935c1f7709d1c1457de9e250d0e5f29cac06e507",
- "reference": "935c1f7709d1c1457de9e250d0e5f29cac06e507",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "require-dev": {
- "eher/phpunit": "1.6"
- },
- "time": "2012-12-13T23:48:10+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-0": {
- "Eher\\OAuth": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "description": "OAuth 1 PHP Library"
- },
- {
- "name": "guzzlehttp/guzzle",
- "version": "6.5.5",
- "version_normalized": "6.5.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/guzzle.git",
- "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
- "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "guzzlehttp/promises": "^1.0",
- "guzzlehttp/psr7": "^1.6.1",
- "php": ">=5.5",
- "symfony/polyfill-intl-idn": "^1.17.0"
- },
- "require-dev": {
- "ext-curl": "*",
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
- "psr/log": "^1.1"
- },
- "suggest": {
- "psr/log": "Required for using the Log middleware"
- },
- "time": "2020-06-16T21:01:06+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "6.5-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "[email protected]",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "Guzzle is a PHP HTTP client library",
- "homepage": "http://guzzlephp.org/",
- "keywords": [
- "client",
- "curl",
- "framework",
- "http",
- "http client",
- "rest",
- "web service"
- ]
- },
- {
- "name": "guzzlehttp/promises",
- "version": "v1.3.1",
- "version_normalized": "1.3.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/promises.git",
- "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
- "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.0"
- },
- "time": "2016-12-20T10:07:11+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Promise\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "[email protected]",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "Guzzle promises library",
- "keywords": [
- "promise"
- ]
- },
- {
- "name": "guzzlehttp/psr7",
- "version": "1.6.1",
- "version_normalized": "1.6.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/psr7.git",
- "reference": "239400de7a173fe9901b9ac7c06497751f00727a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a",
- "reference": "239400de7a173fe9901b9ac7c06497751f00727a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0",
- "psr/http-message": "~1.0",
- "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
- },
- "provide": {
- "psr/http-message-implementation": "1.0"
- },
- "require-dev": {
- "ext-zlib": "*",
- "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
- },
- "suggest": {
- "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
- },
- "time": "2019-07-01T23:21:34+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.6-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Psr7\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "[email protected]",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "Tobias Schultze",
- "homepage": "https://github.com/Tobion"
- }
- ],
- "description": "PSR-7 message implementation that also provides common utility methods",
- "keywords": [
- "http",
- "message",
- "psr-7",
- "request",
- "response",
- "stream",
- "uri",
- "url"
- ]
- },
- {
- "name": "paragonie/random_compat",
- "version": "v9.99.99",
- "version_normalized": "9.99.99.0",
- "source": {
- "type": "git",
- "url": "https://github.com/paragonie/random_compat.git",
- "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
- "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
- "shasum": ""
- },
- "require": {
- "php": "^7"
- },
- "require-dev": {
- "phpunit/phpunit": "4.*|5.*",
- "vimeo/psalm": "^1"
- },
- "suggest": {
- "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
- },
- "time": "2018-07-02T15:55:56+00:00",
- "type": "library",
- "installation-source": "dist",
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Paragon Initiative Enterprises",
- "email": "[email protected]",
- "homepage": "https://paragonie.com"
- }
- ],
- "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
- "keywords": [
- "csprng",
- "polyfill",
- "pseudorandom",
- "random"
- ]
- },
- {
- "name": "psr/http-message",
- "version": "1.0.1",
- "version_normalized": "1.0.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "time": "2016-08-06T14:39:51+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "installation-source": "dist",
- "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"
- ]
- },
- {
- "name": "ralouphie/getallheaders",
- "version": "3.0.3",
- "version_normalized": "3.0.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/ralouphie/getallheaders.git",
- "reference": "120b605dfeb996808c31b6477290a714d356e822"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
- "reference": "120b605dfeb996808c31b6477290a714d356e822",
- "shasum": ""
- },
- "require": {
- "php": ">=5.6"
- },
- "require-dev": {
- "php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpunit": "^5 || ^6.5"
- },
- "time": "2019-03-08T08:55:37+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "files": [
- "src/getallheaders.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ralph Khattar",
- "email": "[email protected]"
- }
- ],
- "description": "A polyfill for getallheaders."
- },
- {
- "name": "symfony/polyfill-intl-idn",
- "version": "v1.18.1",
- "version_normalized": "1.18.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/5dcab1bc7146cf8c1beaa4502a3d9be344334251",
- "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "symfony/polyfill-intl-normalizer": "^1.10",
- "symfony/polyfill-php70": "^1.10",
- "symfony/polyfill-php72": "^1.10"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "time": "2020-08-04T06:02:08+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Idn\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Laurent Bassin",
- "email": "[email protected]"
- },
- {
- "name": "Trevor Rowbotham",
- "email": "[email protected]"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "idn",
- "intl",
- "polyfill",
- "portable",
- "shim"
- ],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ]
- },
- {
- "name": "symfony/polyfill-intl-normalizer",
- "version": "v1.18.1",
- "version_normalized": "1.18.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e",
- "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "time": "2020-07-14T12:35:20+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
- },
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "[email protected]"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for intl's Normalizer class and related functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "intl",
- "normalizer",
- "polyfill",
- "portable",
- "shim"
- ],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ]
- },
- {
- "name": "symfony/polyfill-php70",
- "version": "v1.18.1",
- "version_normalized": "1.18.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php70.git",
- "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/0dd93f2c578bdc9c72697eaa5f1dd25644e618d3",
- "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3",
- "shasum": ""
- },
- "require": {
- "paragonie/random_compat": "~1.0|~2.0|~9.99",
- "php": ">=5.3.3"
- },
- "time": "2020-07-14T12:35:20+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php70\\": ""
- },
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "[email protected]"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ]
- },
- {
- "name": "symfony/polyfill-php72",
- "version": "v1.18.1",
- "version_normalized": "1.18.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "639447d008615574653fb3bc60d1986d7172eaae"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/639447d008615574653fb3bc60d1986d7172eaae",
- "reference": "639447d008615574653fb3bc60d1986d7172eaae",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "time": "2020-07-14T12:35:20+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php72\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "[email protected]"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ]
- },
- {
- "name": "tumblr/tumblr",
- "version": "v0.4.0",
- "version_normalized": "0.4.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/tumblr/tumblr.php.git",
- "reference": "308ad2a8a840ae8a8b70e96a19701b7ef1b00d0d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/tumblr/tumblr.php/zipball/308ad2a8a840ae8a8b70e96a19701b7ef1b00d0d",
- "reference": "308ad2a8a840ae8a8b70e96a19701b7ef1b00d0d",
- "shasum": ""
- },
- "require": {
- "eher/oauth": "1.0.*",
- "guzzlehttp/guzzle": "6.*"
- },
- "require-dev": {
- "phpunit/phpunit": "5.3.*"
- },
- "time": "2017-09-29T21:32:48+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-0": {
- "Tumblr\\API": "lib"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "authors": [
- {
- "name": "John Crepezzi",
- "email": "[email protected]",
- "homepage": "https://github.com/seejohnrun",
- "role": "developer"
- }
- ],
- "description": "Official Tumblr PHP Client",
- "homepage": "https://github.com/tumblr/tumblr.php",
- "keywords": [
- "api",
- "gif",
- "sdk",
- "tumblr"
- ]
- }
-]
diff --git a/vendor/eher/oauth/.gitignore b/vendor/eher/oauth/.gitignore
deleted file mode 100644
index eeeaea3..0000000
--- a/vendor/eher/oauth/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-*.swp
-composer.phar
-composer.lock
-vendor
diff --git a/vendor/eher/oauth/.travis.yml b/vendor/eher/oauth/.travis.yml
deleted file mode 100644
index f64de41..0000000
--- a/vendor/eher/oauth/.travis.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-language: php
-
-php:
- - 5.3
- - 5.4
-
-before_script:
- - wget -c http://getcomposer.org/composer.phar
- - php composer.phar install
diff --git a/vendor/eher/oauth/README.md b/vendor/eher/oauth/README.md
deleted file mode 100644
index c288c8c..0000000
--- a/vendor/eher/oauth/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-#OAuth 1 PHP Library[![Build Status](https://secure.travis-ci.org/EHER/OAuth.png?branch=master)](http://travis-ci.org/EHER/OAuth)
-
-Based on [Andy Smith's](http://term.ie/) [basic php library](http://oauth.googlecode.com/svn/code/php/) for OAuth.
diff --git a/vendor/eher/oauth/composer.json b/vendor/eher/oauth/composer.json
deleted file mode 100644
index 29bf4d9..0000000
--- a/vendor/eher/oauth/composer.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "eher/oauth",
- "type": "library",
- "license": "BSD-3-Clause",
- "description": "OAuth 1 PHP Library",
- "require": {
- "php": ">=5.3.0"
- },
- "autoload": {
- "psr-0": {
- "Eher\\OAuth": "src"
- }
- },
- "require-dev": {
- "eher/phpunit": "1.6"
- }
-}
diff --git a/vendor/eher/oauth/phpunit.xml.dist b/vendor/eher/oauth/phpunit.xml.dist
deleted file mode 100644
index 9735ad4..0000000
--- a/vendor/eher/oauth/phpunit.xml.dist
+++ /dev/null
@@ -1,7 +0,0 @@
-<phpunit bootstrap="vendor/autoload.php" colors="true">
- <testsuites>
- <testsuite name="Test Suite">
- <directory>test</directory>
- </testsuite>
- </testsuites>
-</phpunit>
diff --git a/vendor/eher/oauth/src/Eher/OAuth/Consumer.php b/vendor/eher/oauth/src/Eher/OAuth/Consumer.php
deleted file mode 100644
index 44dbc59..0000000
--- a/vendor/eher/oauth/src/Eher/OAuth/Consumer.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-namespace Eher\OAuth;
-
-class Consumer {
- public $key;
- public $secret;
-
- function __construct($key, $secret, $callback_url=NULL) {
- $this->key = $key;
- $this->secret = $secret;
- $this->callback_url = $callback_url;
- }
-
- function __toString() {
- return "Consumer[key=$this->key,secret=$this->secret]";
- }
-}
-
diff --git a/vendor/eher/oauth/src/Eher/OAuth/HmacSha1.php b/vendor/eher/oauth/src/Eher/OAuth/HmacSha1.php
deleted file mode 100644
index be7da63..0000000
--- a/vendor/eher/oauth/src/Eher/OAuth/HmacSha1.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-namespace Eher\OAuth;
-
-/**
- * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
- * where the Signature Base String is the text and the key is the concatenated values (each first
- * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
- * character (ASCII code 38) even if empty.
- * - Chapter 9.2 ("HMAC-SHA1")
- */
-class HmacSha1 extends SignatureMethod {
- function get_name() {
- return "HMAC-SHA1";
- }
-
- public function build_signature($request, $consumer, $token) {
- $base_string = $request->get_signature_base_string();
- $request->base_string = $base_string;
-
- $key_parts = array(
- $consumer->secret,
- ($token) ? $token->secret : ""
- );
-
- $key_parts = Util::urlencode_rfc3986($key_parts);
- $key = implode('&', $key_parts);
-
- return base64_encode(hash_hmac('sha1', $base_string, $key, true));
- }
-}
diff --git a/vendor/eher/oauth/src/Eher/OAuth/OAuthDataStore.php b/vendor/eher/oauth/src/Eher/OAuth/OAuthDataStore.php
deleted file mode 100644
index 8ad2f30..0000000
--- a/vendor/eher/oauth/src/Eher/OAuth/OAuthDataStore.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-namespace Eher\OAuth;
-
-class OAuthDataStore {
- function lookup_consumer($consumer_key) {
- // implement me
- }
-
- function lookup_token($consumer, $token_type, $token) {
- // implement me
- }
-
- function lookup_nonce($consumer, $token, $nonce, $timestamp) {
- // implement me
- }
-
- function new_request_token($consumer, $callback = null) {
- // return a new token attached to this consumer
- }
-
- function new_access_token($token, $consumer, $verifier = null) {
- // return a new access token attached to this consumer
- // for the user associated with this token if the request token
- // is authorized
- // should also invalidate the request token
- }
-
-}
-
diff --git a/vendor/eher/oauth/src/Eher/OAuth/OAuthException.php b/vendor/eher/oauth/src/Eher/OAuth/OAuthException.php
deleted file mode 100644
index 17ad9ee..0000000
--- a/vendor/eher/oauth/src/Eher/OAuth/OAuthException.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-
-namespace Eher\OAuth;
-
-/* Generic exception class
- */
-class OAuthException extends \Exception {
- // pass
-}
diff --git a/vendor/eher/oauth/src/Eher/OAuth/OAuthServer.php b/vendor/eher/oauth/src/Eher/OAuth/OAuthServer.php
deleted file mode 100644
index d0166c0..0000000
--- a/vendor/eher/oauth/src/Eher/OAuth/OAuthServer.php
+++ /dev/null
@@ -1,225 +0,0 @@
-<?php
-
-namespace Eher\OAuth;
-
-class OAuthServer {
- protected $timestamp_threshold = 300; // in seconds, five minutes
- protected $version = '1.0'; // hi blaine
- protected $signature_methods = array();
-
- protected $data_store;
-
- function __construct($data_store) {
- $this->data_store = $data_store;
- }
-
- public function add_signature_method($signature_method) {
- $this->signature_methods[$signature_method->get_name()] =
- $signature_method;
- }
-
- // high level functions
-
- /**
- * process a request_token request
- * returns the request token on success
- */
- public function fetch_request_token(&$request) {
- $this->get_version($request);
-
- $consumer = $this->get_consumer($request);
-
- // no token required for the initial token request
- $token = NULL;
-
- $this->check_signature($request, $consumer, $token);
-
- // Rev A change
- $callback = $request->get_parameter('oauth_callback');
- $new_token = $this->data_store->new_request_token($consumer, $callback);
-
- return $new_token;
- }
-
- /**
- * process an access_token request
- * returns the access token on success
- */
- public function fetch_access_token(&$request) {
- $this->get_version($request);
-
- $consumer = $this->get_consumer($request);
-
- // requires authorized request token
- $token = $this->get_token($request, $consumer, "request");
-
- $this->check_signature($request, $consumer, $token);
-
- // Rev A change
- $verifier = $request->get_parameter('oauth_verifier');
- $new_token = $this->data_store->new_access_token($token, $consumer, $verifier);
-
- return $new_token;
- }
-
- /**
- * verify an api call, checks all the parameters
- */
- public function verify_request(&$request) {
- $this->get_version($request);
- $consumer = $this->get_consumer($request);
- $token = $this->get_token($request, $consumer, "access");
- $this->check_signature($request, $consumer, $token);
- return array($consumer, $token);
- }
-
- // Internals from here
- /**
- * version 1
- */
- private function get_version(&$request) {
- $version = $request->get_parameter("oauth_version");
- if (!$version) {
- // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
- // Chapter 7.0 ("Accessing Protected Ressources")
- $version = '1.0';
- }
- if ($version !== $this->version) {
- throw new OAuthException("OAuth version '$version' not supported");
- }
- return $version;
- }
-
- /**
- * figure out the signature with some defaults
- */
- private function get_signature_method($request) {
- $signature_method = $request instanceof Request
- ? $request->get_parameter("oauth_signature_method")
- : NULL;
-
- if (!$signature_method) {
- // According to chapter 7 ("Accessing Protected Ressources") the signature-method
- // parameter is required, and we can't just fallback to PLAINTEXT
- throw new OAuthException('No signature method parameter. This parameter is required');
- }
-
- if (!in_array($signature_method,
- array_keys($this->signature_methods))) {
- throw new OAuthException(
- "Signature method '$signature_method' not supported " .
- "try one of the following: " .
- implode(", ", array_keys($this->signature_methods))
- );
- }
- return $this->signature_methods[$signature_method];
- }
-
- /**
- * try to find the consumer for the provided request's consumer key
- */
- private function get_consumer($request) {
- $consumer_key = $request instanceof Request
- ? $request->get_parameter("oauth_consumer_key")
- : NULL;
-
- if (!$consumer_key) {
- throw new OAuthException("Invalid consumer key");
- }
-
- $consumer = $this->data_store->lookup_consumer($consumer_key);
- if (!$consumer) {
- throw new OAuthException("Invalid consumer");
- }
-
- return $consumer;
- }
-
- /**
- * try to find the token for the provided request's token key
- */
- private function get_token($request, $consumer, $token_type="access") {
- $token_field = $request instanceof Request
- ? $request->get_parameter('oauth_token')
- : NULL;
-
- $token = $this->data_store->lookup_token(
- $consumer, $token_type, $token_field
- );
- if (!$token) {
- throw new OAuthException("Invalid $token_type token: $token_field");
- }
- return $token;
- }
-
- /**
- * all-in-one function to check the signature on a request
- * should guess the signature method appropriately
- */
- private function check_signature($request, $consumer, $token) {
- // this should probably be in a different method
- $timestamp = $request instanceof Request
- ? $request->get_parameter('oauth_timestamp')
- : NULL;
- $nonce = $request instanceof Request
- ? $request->get_parameter('oauth_nonce')
- : NULL;
-
- $this->check_timestamp($timestamp);
- $this->check_nonce($consumer, $token, $nonce, $timestamp);
-
- $signature_method = $this->get_signature_method($request);
-
- $signature = $request->get_parameter('oauth_signature');
- $valid_sig = $signature_method->check_signature(
- $request,
- $consumer,
- $token,
- Util::urldecode_rfc3986($signature)
- );
-
- if (!$valid_sig) {
- throw new OAuthException("Invalid signature");
- }
- }
-
- /**
- * check that the timestamp is new enough
- */
- private function check_timestamp($timestamp) {
- if( ! $timestamp )
- throw new OAuthException(
- 'Missing timestamp parameter. The parameter is required'
- );
-
- // verify that timestamp is recentish
- $now = time();
- if (abs($now - $timestamp) > $this->timestamp_threshold) {
- throw new OAuthException(
- "Expired timestamp, yours $timestamp, ours $now"
- );
- }
- }
-
- /**
- * check that the nonce is not repeated
- */
- private function check_nonce($consumer, $token, $nonce, $timestamp) {
- if( ! $nonce )
- throw new OAuthException(
- 'Missing nonce parameter. The parameter is required'
- );
-
- // verify that the nonce is uniqueish
- $found = $this->data_store->lookup_nonce(
- $consumer,
- $token,
- $nonce,
- $timestamp
- );
- if ($found) {
- throw new OAuthException("Nonce already used: $nonce");
- }
- }
-
-}
diff --git a/vendor/eher/oauth/src/Eher/OAuth/PlainText.php b/vendor/eher/oauth/src/Eher/OAuth/PlainText.php
deleted file mode 100644
index 895aeed..0000000
--- a/vendor/eher/oauth/src/Eher/OAuth/PlainText.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace Eher\OAuth;
-
-/**
- * The PLAINTEXT method does not provide any security protection and SHOULD only be used
- * over a secure channel such as HTTPS. It does not use the Signature Base String.
- * - Chapter 9.4 ("PLAINTEXT")
- */
-class PlainText extends SignatureMethod {
- public function get_name() {
- return "PLAINTEXT";
- }
-
- /**
- * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
- * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
- * empty. The result MUST be encoded again.
- * - Chapter 9.4.1 ("Generating Signatures")
- *
- * Please note that the second encoding MUST NOT happen in the SignatureMethod, as
- * Request handles this!
- */
- public function build_signature($request, $consumer, $token) {
- $key_parts = array(
- $consumer->secret,
- ($token) ? $token->secret : ""
- );
-
- $key_parts = Util::urlencode_rfc3986($key_parts);
- $key = implode('&', $key_parts);
- $request->base_string = $key;
-
- return $key;
- }
-}
diff --git a/vendor/eher/oauth/src/Eher/OAuth/Request.php b/vendor/eher/oauth/src/Eher/OAuth/Request.php
deleted file mode 100644
index afb2b20..0000000
--- a/vendor/eher/oauth/src/Eher/OAuth/Request.php
+++ /dev/null
@@ -1,264 +0,0 @@
-<?php
-
-namespace Eher\OAuth;
-
-class Request {
- protected $parameters;
- protected $http_method;
- protected $http_url;
- // for debug purposes
- public $base_string;
- public static $version = '1.0';
- public static $POST_INPUT = 'php://input';
-
- function __construct($http_method, $http_url, $parameters=NULL) {
- $parameters = ($parameters) ? $parameters : array();
- $parameters = array_merge( Util::parse_parameters(parse_url($http_url, PHP_URL_QUERY)), $parameters);
- $this->parameters = $parameters;
- $this->http_method = $http_method;
- $this->http_url = $http_url;
- }
-
-
- /**
- * attempt to build up a request from what was passed to the server
- */
- public static function from_request($http_method=NULL, $http_url=NULL, $parameters=NULL) {
- $scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on")
- ? 'http'
- : 'https';
- $http_url = ($http_url) ? $http_url : $scheme .
- '://' . $_SERVER['HTTP_HOST'] .
- ':' .
- $_SERVER['SERVER_PORT'] .
- $_SERVER['REQUEST_URI'];
- $http_method = ($http_method) ? $http_method : $_SERVER['REQUEST_METHOD'];
-
- // We weren't handed any parameters, so let's find the ones relevant to
- // this request.
- // If you run XML-RPC or similar you should use this to provide your own
- // parsed parameter-list
- if (!$parameters) {
- // Find request headers
- $request_headers = Util::get_headers();
-
- // Parse the query-string to find GET parameters
- $parameters = Util::parse_parameters($_SERVER['QUERY_STRING']);
-
- // It's a POST request of the proper content-type, so parse POST
- // parameters and add those overriding any duplicates from GET
- if ($http_method == "POST"
- && isset($request_headers['Content-Type'])
- && strstr($request_headers['Content-Type'],
- 'application/x-www-form-urlencoded')
- ) {
- $post_data = Util::parse_parameters(
- file_get_contents(self::$POST_INPUT)
- );
- $parameters = array_merge($parameters, $post_data);
- }
-
- // We have a Authorization-header with OAuth data. Parse the header
- // and add those overriding any duplicates from GET or POST
- if (isset($request_headers['Authorization']) && substr($request_headers['Authorization'], 0, 6) == 'OAuth ') {
- $header_parameters = Util::split_header(
- $request_headers['Authorization']
- );
- $parameters = array_merge($parameters, $header_parameters);
- }
-
- }
-
- return new Request($http_method, $http_url, $parameters);
- }
-
- /**
- * pretty much a helper function to set up the request
- */
- public static function from_consumer_and_token($consumer, $token, $http_method, $http_url, $parameters=NULL) {
- $parameters = ($parameters) ? $parameters : array();
- $defaults = array("oauth_version" => Request::$version,
- "oauth_nonce" => Request::generate_nonce(),
- "oauth_timestamp" => Request::generate_timestamp(),
- "oauth_consumer_key" => $consumer->key);
- if ($token)
- $defaults['oauth_token'] = $token->key;
-
- $parameters = array_merge($defaults, $parameters);
-
- return new Request($http_method, $http_url, $parameters);
- }
-
- public function set_parameter($name, $value, $allow_duplicates = true) {
- if ($allow_duplicates && isset($this->parameters[$name])) {
- // We have already added parameter(s) with this name, so add to the list
- if (is_scalar($this->parameters[$name])) {
- // This is the first duplicate, so transform scalar (string)
- // into an array so we can add the duplicates
- $this->parameters[$name] = array($this->parameters[$name]);
- }
-
- $this->parameters[$name][] = $value;
- } else {
- $this->parameters[$name] = $value;
- }
- }
-
- public function get_parameter($name) {
- return isset($this->parameters[$name]) ? $this->parameters[$name] : null;
- }
-
- public function get_parameters() {
- return $this->parameters;
- }
-
- public function unset_parameter($name) {
- unset($this->parameters[$name]);
- }
-
- /**
- * The request parameters, sorted and concatenated into a normalized string.
- * @return string
- */
- public function get_signable_parameters() {
- // Grab all parameters
- $params = $this->parameters;
-
- // Remove oauth_signature if present
- // Ref: Spec: 9.1.1 ("The oauth_signature parameter MUST be excluded.")
- if (isset($params['oauth_signature'])) {
- unset($params['oauth_signature']);
- }
-
- return Util::build_http_query($params);
- }
-
- /**
- * Returns the base string of this request
- *
- * The base string defined as the method, the url
- * and the parameters (normalized), each urlencoded
- * and the concated with &.
- */
- public function get_signature_base_string() {
- $parts = array(
- $this->get_normalized_http_method(),
- $this->get_normalized_http_url(),
- $this->get_signable_parameters()
- );
-
- $parts = Util::urlencode_rfc3986($parts);
-
- return implode('&', $parts);
- }
-
- /**
- * just uppercases the http method
- */
- public function get_normalized_http_method() {
- return strtoupper($this->http_method);
- }
-
- /**
- * parses the url and rebuilds it to be
- * scheme://host/path
- */
- public function get_normalized_http_url() {
- $parts = parse_url($this->http_url);
-
- $scheme = (isset($parts['scheme'])) ? $parts['scheme'] : 'http';
- $port = (isset($parts['port'])) ? $parts['port'] : (($scheme == 'https') ? '443' : '80');
- $host = (isset($parts['host'])) ? $parts['host'] : '';
- $path = (isset($parts['path'])) ? $parts['path'] : '';
-
- if (($scheme == 'https' && $port != '443')
- || ($scheme == 'http' && $port != '80')) {
- $host = "$host:$port";
- }
- return "$scheme://$host$path";
- }
-
- /**
- * builds a url usable for a GET request
- */
- public function to_url() {
- $post_data = $this->to_postdata();
- $out = $this->get_normalized_http_url();
- if ($post_data) {
- $out .= '?'.$post_data;
- }
- return $out;
- }
-
- /**
- * builds the data one would send in a POST request
- */
- public function to_postdata() {
- return Util::build_http_query($this->parameters);
- }
-
- /**
- * builds the Authorization: header
- */
- public function to_header($realm=null) {
- $first = true;
- if($realm) {
- $out = 'Authorization: OAuth realm="' . Util::urlencode_rfc3986($realm) . '"';
- $first = false;
- } else
- $out = 'Authorization: OAuth';
-
- $total = array();
- foreach ($this->parameters as $k => $v) {
- if (substr($k, 0, 5) != "oauth") continue;
- if (is_array($v)) {
- throw new OAuthException('Arrays not supported in headers');
- }
- $out .= ($first) ? ' ' : ',';
- $out .= Util::urlencode_rfc3986($k) .
- '="' .
- Util::urlencode_rfc3986($v) .
- '"';
- $first = false;
- }
- return $out;
- }
-
- public function __toString() {
- return $this->to_url();
- }
-
-
- public function sign_request($signature_method, $consumer, $token) {
- $this->set_parameter(
- "oauth_signature_method",
- $signature_method->get_name(),
- false
- );
- $signature = $this->build_signature($signature_method, $consumer, $token);
- $this->set_parameter("oauth_signature", $signature, false);
- }
-
- public function build_signature($signature_method, $consumer, $token) {
- $signature = $signature_method->build_signature($this, $consumer, $token);
- return $signature;
- }
-
- /**
- * util function: current timestamp
- */
- private static function generate_timestamp() {
- return time();
- }
-
- /**
- * util function: current nonce
- */
- private static function generate_nonce() {
- $mt = microtime();
- $rand = mt_rand();
-
- return md5($mt . $rand); // md5s look nicer than numbers
- }
-}
-
diff --git a/vendor/eher/oauth/src/Eher/OAuth/RsaSha1.php b/vendor/eher/oauth/src/Eher/OAuth/RsaSha1.php
deleted file mode 100644
index a749ce3..0000000
--- a/vendor/eher/oauth/src/Eher/OAuth/RsaSha1.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-namespace Eher\OAuth\SignatureMethod;
-
-/**
- * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
- * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
- * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
- * verified way to the Service Provider, in a manner which is beyond the scope of this
- * specification.
- * - Chapter 9.3 ("RSA-SHA1")
- */
-abstract class RsaSha1 extends SignatureMethod {
- public function get_name() {
- return "RSA-SHA1";
- }
-
- // Up to the SP to implement this lookup of keys. Possible ideas are:
- // (1) do a lookup in a table of trusted certs keyed off of consumer
- // (2) fetch via http using a url provided by the requester
- // (3) some sort of specific discovery code based on request
- //
- // Either way should return a string representation of the certificate
- protected abstract function fetch_public_cert(&$request);
-
- // Up to the SP to implement this lookup of keys. Possible ideas are:
- // (1) do a lookup in a table of trusted certs keyed off of consumer
- //
- // Either way should return a string representation of the certificate
- protected abstract function fetch_private_cert(&$request);
-
- public function build_signature($request, $consumer, $token) {
- $base_string = $request->get_signature_base_string();
- $request->base_string = $base_string;
-
- // Fetch the private key cert based on the request
- $cert = $this->fetch_private_cert($request);
-
- // Pull the private key ID from the certificate
- $privatekeyid = openssl_get_privatekey($cert);
-
- // Sign using the key
- $ok = openssl_sign($base_string, $signature, $privatekeyid);
-
- // Release the key resource
- openssl_free_key($privatekeyid);
-
- return base64_encode($signature);
- }
-
- public function check_signature($request, $consumer, $token, $signature) {
- $decoded_sig = base64_decode($signature);
-
- $base_string = $request->get_signature_base_string();
-
- // Fetch the public key cert based on the request
- $cert = $this->fetch_public_cert($request);
-
- // Pull the public key ID from the certificate
- $publickeyid = openssl_get_publickey($cert);
-
- // Check the computed signature against the one passed in the query
- $ok = openssl_verify($base_string, $decoded_sig, $publickeyid);
-
- // Release the key resource
- openssl_free_key($publickeyid);
-
- return $ok == 1;
- }
-}
diff --git a/vendor/eher/oauth/src/Eher/OAuth/SignatureMethod.php b/vendor/eher/oauth/src/Eher/OAuth/SignatureMethod.php
deleted file mode 100644
index d938632..0000000
--- a/vendor/eher/oauth/src/Eher/OAuth/SignatureMethod.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Eher\OAuth;
-
-/**
- * A class for implementing a Signature Method
- * See section 9 ("Signing Requests") in the spec
- */
-abstract class SignatureMethod {
- /**
- * Needs to return the name of the Signature Method (ie HMAC-SHA1)
- * @return string
- */
- abstract public function get_name();
-
- /**
- * Build up the signature
- * NOTE: The output of this function MUST NOT be urlencoded.
- * the encoding is handled in Request when the final
- * request is serialized
- * @param Request $request
- * @param Consumer $consumer
- * @param OAuthToken $token
- * @return string
- */
- abstract public function build_signature($request, $consumer, $token);
-
- /**
- * Verifies that a given signature is correct
- * @param Request $request
- * @param Consumer $consumer
- * @param OAuthToken $token
- * @param string $signature
- * @return bool
- */
- public function check_signature($request, $consumer, $token, $signature) {
- $built = $this->build_signature($request, $consumer, $token);
- return $built == $signature;
- }
-}
diff --git a/vendor/eher/oauth/src/Eher/OAuth/Token.php b/vendor/eher/oauth/src/Eher/OAuth/Token.php
deleted file mode 100644
index e1d9f65..0000000
--- a/vendor/eher/oauth/src/Eher/OAuth/Token.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace Eher\OAuth;
-
-class Token {
- // access tokens and request tokens
- public $key;
- public $secret;
-
- /**
- * key = the token
- * secret = the token secret
- */
- function __construct($key, $secret) {
- $this->key = $key;
- $this->secret = $secret;
- }
-
- /**
- * generates the basic string serialization of a token that a server
- * would respond to request_token and access_token calls with
- */
- function to_string() {
- return "oauth_token=" .
- Util::urlencode_rfc3986($this->key) .
- "&oauth_token_secret=" .
- Util::urlencode_rfc3986($this->secret);
- }
-
- function __toString() {
- return $this->to_string();
- }
-}
-
diff --git a/vendor/eher/oauth/src/Eher/OAuth/Util.php b/vendor/eher/oauth/src/Eher/OAuth/Util.php
deleted file mode 100644
index 1feee44..0000000
--- a/vendor/eher/oauth/src/Eher/OAuth/Util.php
+++ /dev/null
@@ -1,155 +0,0 @@
-<?php
-
-namespace Eher\OAuth;
-
-class Util {
- public static function urlencode_rfc3986($input) {
- if (is_array($input)) {
- return array_map(array('Eher\OAuth\Util', 'urlencode_rfc3986'), $input);
- } else if (is_scalar($input)) {
- return str_replace(
- '+',
- ' ',
- str_replace('%7E', '~', rawurlencode($input))
- );
- } else {
- return '';
- }
-}
-
-
- // This decode function isn't taking into consideration the above
- // modifications to the encoding process. However, this method doesn't
- // seem to be used anywhere so leaving it as is.
- public static function urldecode_rfc3986($string) {
- return urldecode($string);
- }
-
- // Utility function for turning the Authorization: header into
- // parameters, has to do some unescaping
- // Can filter out any non-oauth parameters if needed (default behaviour)
- // May 28th, 2010 - method updated to tjerk.meesters for a speed improvement.
- // see http://code.google.com/p/oauth/issues/detail?id=163
- public static function split_header($header, $only_allow_oauth_parameters = true) {
- $params = array();
- if (preg_match_all('/('.($only_allow_oauth_parameters ? 'oauth_' : '').'[a-z_-]*)=(:?"([^"]*)"|([^,]*))/', $header, $matches)) {
- foreach ($matches[1] as $i => $h) {
- $params[$h] = Util::urldecode_rfc3986(empty($matches[3][$i]) ? $matches[4][$i] : $matches[3][$i]);
- }
- if (isset($params['realm'])) {
- unset($params['realm']);
- }
- }
- return $params;
- }
-
- // helper to try to sort out headers for people who aren't running apache
- public static function get_headers() {
- if (function_exists('apache_request_headers')) {
- // we need this to get the actual Authorization: header
- // because apache tends to tell us it doesn't exist
- $headers = apache_request_headers();
-
- // sanitize the output of apache_request_headers because
- // we always want the keys to be Cased-Like-This and arh()
- // returns the headers in the same case as they are in the
- // request
- $out = array();
- foreach ($headers AS $key => $value) {
- $key = str_replace(
- " ",
- "-",
- ucwords(strtolower(str_replace("-", " ", $key)))
- );
- $out[$key] = $value;
- }
- } else {
- // otherwise we don't have apache and are just going to have to hope
- // that $_SERVER actually contains what we need
- $out = array();
- if( isset($_SERVER['CONTENT_TYPE']) )
- $out['Content-Type'] = $_SERVER['CONTENT_TYPE'];
- if( isset($_ENV['CONTENT_TYPE']) )
- $out['Content-Type'] = $_ENV['CONTENT_TYPE'];
-
- foreach ($_SERVER as $key => $value) {
- if (substr($key, 0, 5) == "HTTP_") {
- // this is chaos, basically it is just there to capitalize the first
- // letter of every word that is not an initial HTTP and strip HTTP
- // code from przemek
- $key = str_replace(
- " ",
- "-",
- ucwords(strtolower(str_replace("_", " ", substr($key, 5))))
- );
- $out[$key] = $value;
- }
- }
- }
- return $out;
- }
-
- // This function takes a input like a=b&a=c&d=e and returns the parsed
- // parameters like this
- // array('a' => array('b','c'), 'd' => 'e')
- public static function parse_parameters( $input ) {
- if (!isset($input) || !$input) return array();
-
- $pairs = explode('&', $input);
-
- $parsed_parameters = array();
- foreach ($pairs as $pair) {
- $split = explode('=', $pair, 2);
- $parameter = Util::urldecode_rfc3986($split[0]);
- $value = isset($split[1]) ? Util::urldecode_rfc3986($split[1]) : '';
-
- if (isset($parsed_parameters[$parameter])) {
- // We have already recieved parameter(s) with this name, so add to the list
- // of parameters with this name
-
- if (is_scalar($parsed_parameters[$parameter])) {
- // This is the first duplicate, so transform scalar (string) into an array
- // so we can add the duplicates
- $parsed_parameters[$parameter] = array($parsed_parameters[$parameter]);
- }
-
- $parsed_parameters[$parameter][] = $value;
- } else {
- $parsed_parameters[$parameter] = $value;
- }
- }
- return $parsed_parameters;
- }
-
- public static function build_http_query($params) {
- if (!$params) return '';
-
- // Urlencode both keys and values
- $keys = Util::urlencode_rfc3986(array_keys($params));
- $values = Util::urlencode_rfc3986(array_values($params));
- $params = array_combine($keys, $values);
-
- // Parameters are sorted by name, using lexicographical byte value ordering.
- // Ref: Spec: 9.1.1 (1)
- uksort($params, 'strcmp');
-
- $pairs = array();
- foreach ($params as $parameter => $value) {
- if (is_array($value)) {
- // If two or more parameters share the same name, they are sorted by their value
- // Ref: Spec: 9.1.1 (1)
- // June 12th, 2010 - changed to sort because of issue 164 by hidetaka
- sort($value, SORT_STRING);
- foreach ($value as $duplicate_value) {
- $pairs[] = $parameter . '=' . $duplicate_value;
- }
- } else {
- $pairs[] = $parameter . '=' . $value;
- }
- }
- // For each parameter, the name is separated from the corresponding value by an '=' character (ASCII code 61)
- // Each name-value pair is separated by an '&' character (ASCII code 38)
- return implode('&', $pairs);
- }
-}
-
diff --git a/vendor/eher/oauth/test/Eher/OAuth/ConsumerTest.php b/vendor/eher/oauth/test/Eher/OAuth/ConsumerTest.php
deleted file mode 100644
index 3ce742c..0000000
--- a/vendor/eher/oauth/test/Eher/OAuth/ConsumerTest.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Eher\OAuth;
-
-class ConsumerTest extends \PHPUnit_Framework_TestCase
-{
- public function testConsumer()
- {
- $consumer = null;
-
- $consumer = new Consumer("ConsumerKey", "ConsumerSecret");
-
- $this->assertEquals(
- 'Consumer[key=ConsumerKey,secret=ConsumerSecret]',
- (string) $consumer
- );
- }
-}
diff --git a/vendor/eher/oauth/test/Eher/OAuth/RequestTest.php b/vendor/eher/oauth/test/Eher/OAuth/RequestTest.php
deleted file mode 100644
index 4551695..0000000
--- a/vendor/eher/oauth/test/Eher/OAuth/RequestTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Eher\OAuth;
-
-class RequestTest extends \PHPUnit_Framework_TestCase
-{
- public function testRequestToUrl()
- {
- $consumer = null;
- $signatureMethod = null;
- $request = null;
- $once = "";
- $timestamp = "";
- $signature = "";
- $expectedUrl = "";
-
- $consumer = new Consumer('ConsumerKey', 'ConsumerSecret');
- $signatureMethod = new HmacSha1();
- $request = Request::from_consumer_and_token(
- $consumer,
- null,
- "GET",
- "http://www.endpoint.url/",
- array()
- );
- $request->sign_request($signatureMethod, $consumer, null);
-
- $once = $request->get_parameter('oauth_nonce');
- $timestamp = $request->get_parameter('oauth_timestamp');
- $signature = $request->get_parameter('oauth_signature');
- $expectedUrl = "http://www.endpoint.url/?"
- . "oauth_consumer_key=ConsumerKey"
- . "&oauth_nonce=" . $once
- . "&oauth_signature=" . Util::urlencode_rfc3986($signature)
- . "&oauth_signature_method=HMAC-SHA1"
- . "&oauth_timestamp=" . $timestamp
- . "&oauth_version=1.0";
- $this->assertEquals( $expectedUrl, (string) $request);
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/.php_cs b/vendor/guzzlehttp/guzzle/.php_cs
deleted file mode 100644
index 2dd5036..0000000
--- a/vendor/guzzlehttp/guzzle/.php_cs
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-$config = PhpCsFixer\Config::create()
- ->setRiskyAllowed(true)
- ->setRules([
- '@PSR2' => true,
- 'array_syntax' => ['syntax' => 'short'],
- 'declare_strict_types' => false,
- 'concat_space' => ['spacing'=>'one'],
- 'php_unit_test_case_static_method_calls' => ['call_type' => 'self'],
- 'ordered_imports' => true,
- // 'phpdoc_align' => ['align'=>'vertical'],
- // 'native_function_invocation' => true,
- ])
- ->setFinder(
- PhpCsFixer\Finder::create()
- ->in(__DIR__.'/src')
- ->in(__DIR__.'/tests')
- ->name('*.php')
- )
-;
-
-return $config;
diff --git a/vendor/guzzlehttp/guzzle/CHANGELOG.md b/vendor/guzzlehttp/guzzle/CHANGELOG.md
deleted file mode 100644
index 464cf1c..0000000
--- a/vendor/guzzlehttp/guzzle/CHANGELOG.md
+++ /dev/null
@@ -1,1338 +0,0 @@
-# Change Log
-
-## 6.5.5 - 2020-06-16
-
-* Unpin version constraint for `symfony/polyfill-intl-idn` [#2678](https://github.com/guzzle/guzzle/pull/2678)
-
-## 6.5.4 - 2020-05-25
-
-* Fix various intl icu issues [#2626](https://github.com/guzzle/guzzle/pull/2626)
-
-## 6.5.3 - 2020-04-18
-
-* Use Symfony intl-idn polyfill [#2550](https://github.com/guzzle/guzzle/pull/2550)
-* Remove use of internal functions [#2548](https://github.com/guzzle/guzzle/pull/2548)
-
-## 6.5.2 - 2019-12-23
-
-* idn_to_ascii() fix for old PHP versions [#2489](https://github.com/guzzle/guzzle/pull/2489)
-
-## 6.5.1 - 2019-12-21
-
-* Better defaults for PHP installations with old ICU lib [#2454](https://github.com/guzzle/guzzle/pull/2454)
-* IDN support for redirects [#2424](https://github.com/guzzle/guzzle/pull/2424)
-
-## 6.5.0 - 2019-12-07
-
-* Improvement: Added support for reset internal queue in MockHandler. [#2143](https://github.com/guzzle/guzzle/pull/2143)
-* Improvement: Added support to pass arbitrary options to `curl_multi_init`. [#2287](https://github.com/guzzle/guzzle/pull/2287)
-* Fix: Gracefully handle passing `null` to the `header` option. [#2132](https://github.com/guzzle/guzzle/pull/2132)
-* Fix: `RetryMiddleware` did not do exponential delay between retries due unit mismatch. [#2132](https://github.com/guzzle/guzzle/pull/2132)
- Previously, `RetryMiddleware` would sleep for 1 millisecond, then 2 milliseconds, then 4 milliseconds.
- **After this change, `RetryMiddleware` will sleep for 1 second, then 2 seconds, then 4 seconds.**
- `Middleware::retry()` accepts a second callback parameter to override the default timeouts if needed.
-* Fix: Prevent undefined offset when using array for ssl_key options. [#2348](https://github.com/guzzle/guzzle/pull/2348)
-* Deprecated `ClientInterface::VERSION`
-
-## 6.4.1 - 2019-10-23
-
-* No `guzzle.phar` was created in 6.4.0 due expired API token. This release will fix that
-* Added `parent::__construct()` to `FileCookieJar` and `SessionCookieJar`
-
-## 6.4.0 - 2019-10-23
-
-* Improvement: Improved error messages when using curl < 7.21.2 [#2108](https://github.com/guzzle/guzzle/pull/2108)
-* Fix: Test if response is readable before returning a summary in `RequestException::getResponseBodySummary()` [#2081](https://github.com/guzzle/guzzle/pull/2081)
-* Fix: Add support for GUZZLE_CURL_SELECT_TIMEOUT environment variable [#2161](https://github.com/guzzle/guzzle/pull/2161)
-* Improvement: Added `GuzzleHttp\Exception\InvalidArgumentException` [#2163](https://github.com/guzzle/guzzle/pull/2163)
-* Improvement: Added `GuzzleHttp\_current_time()` to use `hrtime()` if that function exists. [#2242](https://github.com/guzzle/guzzle/pull/2242)
-* Improvement: Added curl's `appconnect_time` in `TransferStats` [#2284](https://github.com/guzzle/guzzle/pull/2284)
-* Improvement: Make GuzzleException extend Throwable wherever it's available [#2273](https://github.com/guzzle/guzzle/pull/2273)
-* Fix: Prevent concurrent writes to file when saving `CookieJar` [#2335](https://github.com/guzzle/guzzle/pull/2335)
-* Improvement: Update `MockHandler` so we can test transfer time [#2362](https://github.com/guzzle/guzzle/pull/2362)
-
-## 6.3.3 - 2018-04-22
-
-* Fix: Default headers when decode_content is specified
-
-
-## 6.3.2 - 2018-03-26
-
-* Fix: Release process
-
-
-## 6.3.1 - 2018-03-26
-
-* Bug fix: Parsing 0 epoch expiry times in cookies [#2014](https://github.com/guzzle/guzzle/pull/2014)
-* Improvement: Better ConnectException detection [#2012](https://github.com/guzzle/guzzle/pull/2012)
-* Bug fix: Malformed domain that contains a "/" [#1999](https://github.com/guzzle/guzzle/pull/1999)
-* Bug fix: Undefined offset when a cookie has no first key-value pair [#1998](https://github.com/guzzle/guzzle/pull/1998)
-* Improvement: Support PHPUnit 6 [#1953](https://github.com/guzzle/guzzle/pull/1953)
-* Bug fix: Support empty headers [#1915](https://github.com/guzzle/guzzle/pull/1915)
-* Bug fix: Ignore case during header modifications [#1916](https://github.com/guzzle/guzzle/pull/1916)
-
-+ Minor code cleanups, documentation fixes and clarifications.
-
-
-## 6.3.0 - 2017-06-22
-
-* Feature: force IP resolution (ipv4 or ipv6) [#1608](https://github.com/guzzle/guzzle/pull/1608), [#1659](https://github.com/guzzle/guzzle/pull/1659)
-* Improvement: Don't include summary in exception message when body is empty [#1621](https://github.com/guzzle/guzzle/pull/1621)
-* Improvement: Handle `on_headers` option in MockHandler [#1580](https://github.com/guzzle/guzzle/pull/1580)
-* Improvement: Added SUSE Linux CA path [#1609](https://github.com/guzzle/guzzle/issues/1609)
-* Improvement: Use class reference for getting the name of the class instead of using hardcoded strings [#1641](https://github.com/guzzle/guzzle/pull/1641)
-* Feature: Added `read_timeout` option [#1611](https://github.com/guzzle/guzzle/pull/1611)
-* Bug fix: PHP 7.x fixes [#1685](https://github.com/guzzle/guzzle/pull/1685), [#1686](https://github.com/guzzle/guzzle/pull/1686), [#1811](https://github.com/guzzle/guzzle/pull/1811)
-* Deprecation: BadResponseException instantiation without a response [#1642](https://github.com/guzzle/guzzle/pull/1642)
-* Feature: Added NTLM auth [#1569](https://github.com/guzzle/guzzle/pull/1569)
-* Feature: Track redirect HTTP status codes [#1711](https://github.com/guzzle/guzzle/pull/1711)
-* Improvement: Check handler type during construction [#1745](https://github.com/guzzle/guzzle/pull/1745)
-* Improvement: Always include the Content-Length if there's a body [#1721](https://github.com/guzzle/guzzle/pull/1721)
-* Feature: Added convenience method to access a cookie by name [#1318](https://github.com/guzzle/guzzle/pull/1318)
-* Bug fix: Fill `CURLOPT_CAPATH` and `CURLOPT_CAINFO` properly [#1684](https://github.com/guzzle/guzzle/pull/1684)
-* Improvement: Use `\GuzzleHttp\Promise\rejection_for` function instead of object init [#1827](https://github.com/guzzle/guzzle/pull/1827)
-
-
-+ Minor code cleanups, documentation fixes and clarifications.
-
-## 6.2.3 - 2017-02-28
-
-* Fix deprecations with guzzle/psr7 version 1.4
-
-## 6.2.2 - 2016-10-08
-
-* Allow to pass nullable Response to delay callable
-* Only add scheme when host is present
-* Fix drain case where content-length is the literal string zero
-* Obfuscate in-URL credentials in exceptions
-
-## 6.2.1 - 2016-07-18
-
-* Address HTTP_PROXY security vulnerability, CVE-2016-5385:
- https://httpoxy.org/
-* Fixing timeout bug with StreamHandler:
- https://github.com/guzzle/guzzle/pull/1488
-* Only read up to `Content-Length` in PHP StreamHandler to avoid timeouts when
- a server does not honor `Connection: close`.
-* Ignore URI fragment when sending requests.
-
-## 6.2.0 - 2016-03-21
-
-* Feature: added `GuzzleHttp\json_encode` and `GuzzleHttp\json_decode`.
- https://github.com/guzzle/guzzle/pull/1389
-* Bug fix: Fix sleep calculation when waiting for delayed requests.
- https://github.com/guzzle/guzzle/pull/1324
-* Feature: More flexible history containers.
- https://github.com/guzzle/guzzle/pull/1373
-* Bug fix: defer sink stream opening in StreamHandler.
- https://github.com/guzzle/guzzle/pull/1377
-* Bug fix: do not attempt to escape cookie values.
- https://github.com/guzzle/guzzle/pull/1406
-* Feature: report original content encoding and length on decoded responses.
- https://github.com/guzzle/guzzle/pull/1409
-* Bug fix: rewind seekable request bodies before dispatching to cURL.
- https://github.com/guzzle/guzzle/pull/1422
-* Bug fix: provide an empty string to `http_build_query` for HHVM workaround.
- https://github.com/guzzle/guzzle/pull/1367
-
-## 6.1.1 - 2015-11-22
-
-* Bug fix: Proxy::wrapSync() now correctly proxies to the appropriate handler
- https://github.com/guzzle/guzzle/commit/911bcbc8b434adce64e223a6d1d14e9a8f63e4e4
-* Feature: HandlerStack is now more generic.
- https://github.com/guzzle/guzzle/commit/f2102941331cda544745eedd97fc8fd46e1ee33e
-* Bug fix: setting verify to false in the StreamHandler now disables peer
- verification. https://github.com/guzzle/guzzle/issues/1256
-* Feature: Middleware now uses an exception factory, including more error
- context. https://github.com/guzzle/guzzle/pull/1282
-* Feature: better support for disabled functions.
- https://github.com/guzzle/guzzle/pull/1287
-* Bug fix: fixed regression where MockHandler was not using `sink`.
- https://github.com/guzzle/guzzle/pull/1292
-
-## 6.1.0 - 2015-09-08
-
-* Feature: Added the `on_stats` request option to provide access to transfer
- statistics for requests. https://github.com/guzzle/guzzle/pull/1202
-* Feature: Added the ability to persist session cookies in CookieJars.
- https://github.com/guzzle/guzzle/pull/1195
-* Feature: Some compatibility updates for Google APP Engine
- https://github.com/guzzle/guzzle/pull/1216
-* Feature: Added support for NO_PROXY to prevent the use of a proxy based on
- a simple set of rules. https://github.com/guzzle/guzzle/pull/1197
-* Feature: Cookies can now contain square brackets.
- https://github.com/guzzle/guzzle/pull/1237
-* Bug fix: Now correctly parsing `=` inside of quotes in Cookies.
- https://github.com/guzzle/guzzle/pull/1232
-* Bug fix: Cusotm cURL options now correctly override curl options of the
- same name. https://github.com/guzzle/guzzle/pull/1221
-* Bug fix: Content-Type header is now added when using an explicitly provided
- multipart body. https://github.com/guzzle/guzzle/pull/1218
-* Bug fix: Now ignoring Set-Cookie headers that have no name.
-* Bug fix: Reason phrase is no longer cast to an int in some cases in the
- cURL handler. https://github.com/guzzle/guzzle/pull/1187
-* Bug fix: Remove the Authorization header when redirecting if the Host
- header changes. https://github.com/guzzle/guzzle/pull/1207
-* Bug fix: Cookie path matching fixes
- https://github.com/guzzle/guzzle/issues/1129
-* Bug fix: Fixing the cURL `body_as_string` setting
- https://github.com/guzzle/guzzle/pull/1201
-* Bug fix: quotes are no longer stripped when parsing cookies.
- https://github.com/guzzle/guzzle/issues/1172
-* Bug fix: `form_params` and `query` now always uses the `&` separator.
- https://github.com/guzzle/guzzle/pull/1163
-* Bug fix: Adding a Content-Length to PHP stream wrapper requests if not set.
- https://github.com/guzzle/guzzle/pull/1189
-
-## 6.0.2 - 2015-07-04
-
-* Fixed a memory leak in the curl handlers in which references to callbacks
- were not being removed by `curl_reset`.
-* Cookies are now extracted properly before redirects.
-* Cookies now allow more character ranges.
-* Decoded Content-Encoding responses are now modified to correctly reflect
- their state if the encoding was automatically removed by a handler. This
- means that the `Content-Encoding` header may be removed an the
- `Content-Length` modified to reflect the message size after removing the
- encoding.
-* Added a more explicit error message when trying to use `form_params` and
- `multipart` in the same request.
-* Several fixes for HHVM support.
-* Functions are now conditionally required using an additional level of
- indirection to help with global Composer installations.
-
-## 6.0.1 - 2015-05-27
-
-* Fixed a bug with serializing the `query` request option where the `&`
- separator was missing.
-* Added a better error message for when `body` is provided as an array. Please
- use `form_params` or `multipart` instead.
-* Various doc fixes.
-
-## 6.0.0 - 2015-05-26
-
-* See the UPGRADING.md document for more information.
-* Added `multipart` and `form_params` request options.
-* Added `synchronous` request option.
-* Added the `on_headers` request option.
-* Fixed `expect` handling.
-* No longer adding default middlewares in the client ctor. These need to be
- present on the provided handler in order to work.
-* Requests are no longer initiated when sending async requests with the
- CurlMultiHandler. This prevents unexpected recursion from requests completing
- while ticking the cURL loop.
-* Removed the semantics of setting `default` to `true`. This is no longer
- required now that the cURL loop is not ticked for async requests.
-* Added request and response logging middleware.
-* No longer allowing self signed certificates when using the StreamHandler.
-* Ensuring that `sink` is valid if saving to a file.
-* Request exceptions now include a "handler context" which provides handler
- specific contextual information.
-* Added `GuzzleHttp\RequestOptions` to allow request options to be applied
- using constants.
-* `$maxHandles` has been removed from CurlMultiHandler.
-* `MultipartPostBody` is now part of the `guzzlehttp/psr7` package.
-
-## 5.3.0 - 2015-05-19
-
-* Mock now supports `save_to`
-* Marked `AbstractRequestEvent::getTransaction()` as public.
-* Fixed a bug in which multiple headers using different casing would overwrite
- previous headers in the associative array.
-* Added `Utils::getDefaultHandler()`
-* Marked `GuzzleHttp\Client::getDefaultUserAgent` as deprecated.
-* URL scheme is now always lowercased.
-
-## 6.0.0-beta.1
-
-* Requires PHP >= 5.5
-* Updated to use PSR-7
- * Requires immutable messages, which basically means an event based system
- owned by a request instance is no longer possible.
- * Utilizing the [Guzzle PSR-7 package](https://github.com/guzzle/psr7).
- * Removed the dependency on `guzzlehttp/streams`. These stream abstractions
- are available in the `guzzlehttp/psr7` package under the `GuzzleHttp\Psr7`
- namespace.
-* Added middleware and handler system
- * Replaced the Guzzle event and subscriber system with a middleware system.
- * No longer depends on RingPHP, but rather places the HTTP handlers directly
- in Guzzle, operating on PSR-7 messages.
- * Retry logic is now encapsulated in `GuzzleHttp\Middleware::retry`, which
- means the `guzzlehttp/retry-subscriber` is now obsolete.
- * Mocking responses is now handled using `GuzzleHttp\Handler\MockHandler`.
-* Asynchronous responses
- * No longer supports the `future` request option to send an async request.
- Instead, use one of the `*Async` methods of a client (e.g., `requestAsync`,
- `getAsync`, etc.).
- * Utilizing `GuzzleHttp\Promise` instead of React's promise library to avoid
- recursion required by chaining and forwarding react promises. See
- https://github.com/guzzle/promises
- * Added `requestAsync` and `sendAsync` to send request asynchronously.
- * Added magic methods for `getAsync()`, `postAsync()`, etc. to send requests
- asynchronously.
-* Request options
- * POST and form updates
- * Added the `form_fields` and `form_files` request options.
- * Removed the `GuzzleHttp\Post` namespace.
- * The `body` request option no longer accepts an array for POST requests.
- * The `exceptions` request option has been deprecated in favor of the
- `http_errors` request options.
- * The `save_to` request option has been deprecated in favor of `sink` request
- option.
-* Clients no longer accept an array of URI template string and variables for
- URI variables. You will need to expand URI templates before passing them
- into a client constructor or request method.
-* Client methods `get()`, `post()`, `put()`, `patch()`, `options()`, etc. are
- now magic methods that will send synchronous requests.
-* Replaced `Utils.php` with plain functions in `functions.php`.
-* Removed `GuzzleHttp\Collection`.
-* Removed `GuzzleHttp\BatchResults`. Batched pool results are now returned as
- an array.
-* Removed `GuzzleHttp\Query`. Query string handling is now handled using an
- associative array passed into the `query` request option. The query string
- is serialized using PHP's `http_build_query`. If you need more control, you
- can pass the query string in as a string.
-* `GuzzleHttp\QueryParser` has been replaced with the
- `GuzzleHttp\Psr7\parse_query`.
-
-## 5.2.0 - 2015-01-27
-
-* Added `AppliesHeadersInterface` to make applying headers to a request based
- on the body more generic and not specific to `PostBodyInterface`.
-* Reduced the number of stack frames needed to send requests.
-* Nested futures are now resolved in the client rather than the RequestFsm
-* Finishing state transitions is now handled in the RequestFsm rather than the
- RingBridge.
-* Added a guard in the Pool class to not use recursion for request retries.
-
-## 5.1.0 - 2014-12-19
-
-* Pool class no longer uses recursion when a request is intercepted.
-* The size of a Pool can now be dynamically adjusted using a callback.
- See https://github.com/guzzle/guzzle/pull/943.
-* Setting a request option to `null` when creating a request with a client will
- ensure that the option is not set. This allows you to overwrite default
- request options on a per-request basis.
- See https://github.com/guzzle/guzzle/pull/937.
-* Added the ability to limit which protocols are allowed for redirects by
- specifying a `protocols` array in the `allow_redirects` request option.
-* Nested futures due to retries are now resolved when waiting for synchronous
- responses. See https://github.com/guzzle/guzzle/pull/947.
-* `"0"` is now an allowed URI path. See
- https://github.com/guzzle/guzzle/pull/935.
-* `Query` no longer typehints on the `$query` argument in the constructor,
- allowing for strings and arrays.
-* Exceptions thrown in the `end` event are now correctly wrapped with Guzzle
- specific exceptions if necessary.
-
-## 5.0.3 - 2014-11-03
-
-This change updates query strings so that they are treated as un-encoded values
-by default where the value represents an un-encoded value to send over the
-wire. A Query object then encodes the value before sending over the wire. This
-means that even value query string values (e.g., ":") are url encoded. This
-makes the Query class match PHP's http_build_query function. However, if you
-want to send requests over the wire using valid query string characters that do
-not need to be encoded, then you can provide a string to Url::setQuery() and
-pass true as the second argument to specify that the query string is a raw
-string that should not be parsed or encoded (unless a call to getQuery() is
-subsequently made, forcing the query-string to be converted into a Query
-object).
-
-## 5.0.2 - 2014-10-30
-
-* Added a trailing `\r\n` to multipart/form-data payloads. See
- https://github.com/guzzle/guzzle/pull/871
-* Added a `GuzzleHttp\Pool::send()` convenience method to match the docs.
-* Status codes are now returned as integers. See
- https://github.com/guzzle/guzzle/issues/881
-* No longer overwriting an existing `application/x-www-form-urlencoded` header
- when sending POST requests, allowing for customized headers. See
- https://github.com/guzzle/guzzle/issues/877
-* Improved path URL serialization.
-
- * No longer double percent-encoding characters in the path or query string if
- they are already encoded.
- * Now properly encoding the supplied path to a URL object, instead of only
- encoding ' ' and '?'.
- * Note: This has been changed in 5.0.3 to now encode query string values by
- default unless the `rawString` argument is provided when setting the query
- string on a URL: Now allowing many more characters to be present in the
- query string without being percent encoded. See http://tools.ietf.org/html/rfc3986#appendix-A
-
-## 5.0.1 - 2014-10-16
-
-Bugfix release.
-
-* Fixed an issue where connection errors still returned response object in
- error and end events event though the response is unusable. This has been
- corrected so that a response is not returned in the `getResponse` method of
- these events if the response did not complete. https://github.com/guzzle/guzzle/issues/867
-* Fixed an issue where transfer statistics were not being populated in the
- RingBridge. https://github.com/guzzle/guzzle/issues/866
-
-## 5.0.0 - 2014-10-12
-
-Adding support for non-blocking responses and some minor API cleanup.
-
-### New Features
-
-* Added support for non-blocking responses based on `guzzlehttp/guzzle-ring`.
-* Added a public API for creating a default HTTP adapter.
-* Updated the redirect plugin to be non-blocking so that redirects are sent
- concurrently. Other plugins like this can now be updated to be non-blocking.
-* Added a "progress" event so that you can get upload and download progress
- events.
-* Added `GuzzleHttp\Pool` which implements FutureInterface and transfers
- requests concurrently using a capped pool size as efficiently as possible.
-* Added `hasListeners()` to EmitterInterface.
-* Removed `GuzzleHttp\ClientInterface::sendAll` and marked
- `GuzzleHttp\Client::sendAll` as deprecated (it's still there, just not the
- recommended way).
-
-### Breaking changes
-
-The breaking changes in this release are relatively minor. The biggest thing to
-look out for is that request and response objects no longer implement fluent
-interfaces.
-
-* Removed the fluent interfaces (i.e., `return $this`) from requests,
- responses, `GuzzleHttp\Collection`, `GuzzleHttp\Url`,
- `GuzzleHttp\Query`, `GuzzleHttp\Post\PostBody`, and
- `GuzzleHttp\Cookie\SetCookie`. This blog post provides a good outline of
- why I did this: http://ocramius.github.io/blog/fluent-interfaces-are-evil/.
- This also makes the Guzzle message interfaces compatible with the current
- PSR-7 message proposal.
-* Removed "functions.php", so that Guzzle is truly PSR-4 compliant. Except
- for the HTTP request functions from function.php, these functions are now
- implemented in `GuzzleHttp\Utils` using camelCase. `GuzzleHttp\json_decode`
- moved to `GuzzleHttp\Utils::jsonDecode`. `GuzzleHttp\get_path` moved to
- `GuzzleHttp\Utils::getPath`. `GuzzleHttp\set_path` moved to
- `GuzzleHttp\Utils::setPath`. `GuzzleHttp\batch` should now be
- `GuzzleHttp\Pool::batch`, which returns an `objectStorage`. Using functions.php
- caused problems for many users: they aren't PSR-4 compliant, require an
- explicit include, and needed an if-guard to ensure that the functions are not
- declared multiple times.
-* Rewrote adapter layer.
- * Removing all classes from `GuzzleHttp\Adapter`, these are now
- implemented as callables that are stored in `GuzzleHttp\Ring\Client`.
- * Removed the concept of "parallel adapters". Sending requests serially or
- concurrently is now handled using a single adapter.
- * Moved `GuzzleHttp\Adapter\Transaction` to `GuzzleHttp\Transaction`. The
- Transaction object now exposes the request, response, and client as public
- properties. The getters and setters have been removed.
-* Removed the "headers" event. This event was only useful for changing the
- body a response once the headers of the response were known. You can implement
- a similar behavior in a number of ways. One example might be to use a
- FnStream that has access to the transaction being sent. For example, when the
- first byte is written, you could check if the response headers match your
- expectations, and if so, change the actual stream body that is being
- written to.
-* Removed the `asArray` parameter from
- `GuzzleHttp\Message\MessageInterface::getHeader`. If you want to get a header
- value as an array, then use the newly added `getHeaderAsArray()` method of
- `MessageInterface`. This change makes the Guzzle interfaces compatible with
- the PSR-7 interfaces.
-* `GuzzleHttp\Message\MessageFactory` no longer allows subclasses to add
- custom request options using double-dispatch (this was an implementation
- detail). Instead, you should now provide an associative array to the
- constructor which is a mapping of the request option name mapping to a
- function that applies the option value to a request.
-* Removed the concept of "throwImmediately" from exceptions and error events.
- This control mechanism was used to stop a transfer of concurrent requests
- from completing. This can now be handled by throwing the exception or by
- cancelling a pool of requests or each outstanding future request individually.
-* Updated to "GuzzleHttp\Streams" 3.0.
- * `GuzzleHttp\Stream\StreamInterface::getContents()` no longer accepts a
- `maxLen` parameter. This update makes the Guzzle streams project
- compatible with the current PSR-7 proposal.
- * `GuzzleHttp\Stream\Stream::__construct`,
- `GuzzleHttp\Stream\Stream::factory`, and
- `GuzzleHttp\Stream\Utils::create` no longer accept a size in the second
- argument. They now accept an associative array of options, including the
- "size" key and "metadata" key which can be used to provide custom metadata.
-
-## 4.2.2 - 2014-09-08
-
-* Fixed a memory leak in the CurlAdapter when reusing cURL handles.
-* No longer using `request_fulluri` in stream adapter proxies.
-* Relative redirects are now based on the last response, not the first response.
-
-## 4.2.1 - 2014-08-19
-
-* Ensuring that the StreamAdapter does not always add a Content-Type header
-* Adding automated github releases with a phar and zip
-
-## 4.2.0 - 2014-08-17
-
-* Now merging in default options using a case-insensitive comparison.
- Closes https://github.com/guzzle/guzzle/issues/767
-* Added the ability to automatically decode `Content-Encoding` response bodies
- using the `decode_content` request option. This is set to `true` by default
- to decode the response body if it comes over the wire with a
- `Content-Encoding`. Set this value to `false` to disable decoding the
- response content, and pass a string to provide a request `Accept-Encoding`
- header and turn on automatic response decoding. This feature now allows you
- to pass an `Accept-Encoding` header in the headers of a request but still
- disable automatic response decoding.
- Closes https://github.com/guzzle/guzzle/issues/764
-* Added the ability to throw an exception immediately when transferring
- requests in parallel. Closes https://github.com/guzzle/guzzle/issues/760
-* Updating guzzlehttp/streams dependency to ~2.1
-* No longer utilizing the now deprecated namespaced methods from the stream
- package.
-
-## 4.1.8 - 2014-08-14
-
-* Fixed an issue in the CurlFactory that caused setting the `stream=false`
- request option to throw an exception.
- See: https://github.com/guzzle/guzzle/issues/769
-* TransactionIterator now calls rewind on the inner iterator.
- See: https://github.com/guzzle/guzzle/pull/765
-* You can now set the `Content-Type` header to `multipart/form-data`
- when creating POST requests to force multipart bodies.
- See https://github.com/guzzle/guzzle/issues/768
-
-## 4.1.7 - 2014-08-07
-
-* Fixed an error in the HistoryPlugin that caused the same request and response
- to be logged multiple times when an HTTP protocol error occurs.
-* Ensuring that cURL does not add a default Content-Type when no Content-Type
- has been supplied by the user. This prevents the adapter layer from modifying
- the request that is sent over the wire after any listeners may have already
- put the request in a desired state (e.g., signed the request).
-* Throwing an exception when you attempt to send requests that have the
- "stream" set to true in parallel using the MultiAdapter.
-* Only calling curl_multi_select when there are active cURL handles. This was
- previously changed and caused performance problems on some systems due to PHP
- always selecting until the maximum select timeout.
-* Fixed a bug where multipart/form-data POST fields were not correctly
- aggregated (e.g., values with "&").
-
-## 4.1.6 - 2014-08-03
-
-* Added helper methods to make it easier to represent messages as strings,
- including getting the start line and getting headers as a string.
-
-## 4.1.5 - 2014-08-02
-
-* Automatically retrying cURL "Connection died, retrying a fresh connect"
- errors when possible.
-* cURL implementation cleanup
-* Allowing multiple event subscriber listeners to be registered per event by
- passing an array of arrays of listener configuration.
-
-## 4.1.4 - 2014-07-22
-
-* Fixed a bug that caused multi-part POST requests with more than one field to
- serialize incorrectly.
-* Paths can now be set to "0"
-* `ResponseInterface::xml` now accepts a `libxml_options` option and added a
- missing default argument that was required when parsing XML response bodies.
-* A `save_to` stream is now created lazily, which means that files are not
- created on disk unless a request succeeds.
-
-## 4.1.3 - 2014-07-15
-
-* Various fixes to multipart/form-data POST uploads
-* Wrapping function.php in an if-statement to ensure Guzzle can be used
- globally and in a Composer install
-* Fixed an issue with generating and merging in events to an event array
-* POST headers are only applied before sending a request to allow you to change
- the query aggregator used before uploading
-* Added much more robust query string parsing
-* Fixed various parsing and normalization issues with URLs
-* Fixing an issue where multi-valued headers were not being utilized correctly
- in the StreamAdapter
-
-## 4.1.2 - 2014-06-18
-
-* Added support for sending payloads with GET requests
-
-## 4.1.1 - 2014-06-08
-
-* Fixed an issue related to using custom message factory options in subclasses
-* Fixed an issue with nested form fields in a multi-part POST
-* Fixed an issue with using the `json` request option for POST requests
-* Added `ToArrayInterface` to `GuzzleHttp\Cookie\CookieJar`
-
-## 4.1.0 - 2014-05-27
-
-* Added a `json` request option to easily serialize JSON payloads.
-* Added a `GuzzleHttp\json_decode()` wrapper to safely parse JSON.
-* Added `setPort()` and `getPort()` to `GuzzleHttp\Message\RequestInterface`.
-* Added the ability to provide an emitter to a client in the client constructor.
-* Added the ability to persist a cookie session using $_SESSION.
-* Added a trait that can be used to add event listeners to an iterator.
-* Removed request method constants from RequestInterface.
-* Fixed warning when invalid request start-lines are received.
-* Updated MessageFactory to work with custom request option methods.
-* Updated cacert bundle to latest build.
-
-4.0.2 (2014-04-16)
-------------------
-
-* Proxy requests using the StreamAdapter now properly use request_fulluri (#632)
-* Added the ability to set scalars as POST fields (#628)
-
-## 4.0.1 - 2014-04-04
-
-* The HTTP status code of a response is now set as the exception code of
- RequestException objects.
-* 303 redirects will now correctly switch from POST to GET requests.
-* The default parallel adapter of a client now correctly uses the MultiAdapter.
-* HasDataTrait now initializes the internal data array as an empty array so
- that the toArray() method always returns an array.
-
-## 4.0.0 - 2014-03-29
-
-* For more information on the 4.0 transition, see:
- http://mtdowling.com/blog/2014/03/15/guzzle-4-rc/
-* For information on changes and upgrading, see:
- https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40
-* Added `GuzzleHttp\batch()` as a convenience function for sending requests in
- parallel without needing to write asynchronous code.
-* Restructured how events are added to `GuzzleHttp\ClientInterface::sendAll()`.
- You can now pass a callable or an array of associative arrays where each
- associative array contains the "fn", "priority", and "once" keys.
-
-## 4.0.0.rc-2 - 2014-03-25
-
-* Removed `getConfig()` and `setConfig()` from clients to avoid confusion
- around whether things like base_url, message_factory, etc. should be able to
- be retrieved or modified.
-* Added `getDefaultOption()` and `setDefaultOption()` to ClientInterface
-* functions.php functions were renamed using snake_case to match PHP idioms
-* Added support for `HTTP_PROXY`, `HTTPS_PROXY`, and
- `GUZZLE_CURL_SELECT_TIMEOUT` environment variables
-* Added the ability to specify custom `sendAll()` event priorities
-* Added the ability to specify custom stream context options to the stream
- adapter.
-* Added a functions.php function for `get_path()` and `set_path()`
-* CurlAdapter and MultiAdapter now use a callable to generate curl resources
-* MockAdapter now properly reads a body and emits a `headers` event
-* Updated Url class to check if a scheme and host are set before adding ":"
- and "//". This allows empty Url (e.g., "") to be serialized as "".
-* Parsing invalid XML no longer emits warnings
-* Curl classes now properly throw AdapterExceptions
-* Various performance optimizations
-* Streams are created with the faster `Stream\create()` function
-* Marked deprecation_proxy() as internal
-* Test server is now a collection of static methods on a class
-
-## 4.0.0-rc.1 - 2014-03-15
-
-* See https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40
-
-## 3.8.1 - 2014-01-28
-
-* Bug: Always using GET requests when redirecting from a 303 response
-* Bug: CURLOPT_SSL_VERIFYHOST is now correctly set to false when setting `$certificateAuthority` to false in
- `Guzzle\Http\ClientInterface::setSslVerification()`
-* Bug: RedirectPlugin now uses strict RFC 3986 compliance when combining a base URL with a relative URL
-* Bug: The body of a request can now be set to `"0"`
-* Sending PHP stream requests no longer forces `HTTP/1.0`
-* Adding more information to ExceptionCollection exceptions so that users have more context, including a stack trace of
- each sub-exception
-* Updated the `$ref` attribute in service descriptions to merge over any existing parameters of a schema (rather than
- clobbering everything).
-* Merging URLs will now use the query string object from the relative URL (thus allowing custom query aggregators)
-* Query strings are now parsed in a way that they do no convert empty keys with no value to have a dangling `=`.
- For example `foo&bar=baz` is now correctly parsed and recognized as `foo&bar=baz` rather than `foo=&bar=baz`.
-* Now properly escaping the regular expression delimiter when matching Cookie domains.
-* Network access is now disabled when loading XML documents
-
-## 3.8.0 - 2013-12-05
-
-* Added the ability to define a POST name for a file
-* JSON response parsing now properly walks additionalProperties
-* cURL error code 18 is now retried automatically in the BackoffPlugin
-* Fixed a cURL error when URLs contain fragments
-* Fixed an issue in the BackoffPlugin retry event where it was trying to access all exceptions as if they were
- CurlExceptions
-* CURLOPT_PROGRESS function fix for PHP 5.5 (69fcc1e)
-* Added the ability for Guzzle to work with older versions of cURL that do not support `CURLOPT_TIMEOUT_MS`
-* Fixed a bug that was encountered when parsing empty header parameters
-* UriTemplate now has a `setRegex()` method to match the docs
-* The `debug` request parameter now checks if it is truthy rather than if it exists
-* Setting the `debug` request parameter to true shows verbose cURL output instead of using the LogPlugin
-* Added the ability to combine URLs using strict RFC 3986 compliance
-* Command objects can now return the validation errors encountered by the command
-* Various fixes to cache revalidation (#437 and 29797e5)
-* Various fixes to the AsyncPlugin
-* Cleaned up build scripts
-
-## 3.7.4 - 2013-10-02
-
-* Bug fix: 0 is now an allowed value in a description parameter that has a default value (#430)
-* Bug fix: SchemaFormatter now returns an integer when formatting to a Unix timestamp
- (see https://github.com/aws/aws-sdk-php/issues/147)
-* Bug fix: Cleaned up and fixed URL dot segment removal to properly resolve internal dots
-* Minimum PHP version is now properly specified as 5.3.3 (up from 5.3.2) (#420)
-* Updated the bundled cacert.pem (#419)
-* OauthPlugin now supports adding authentication to headers or query string (#425)
-
-## 3.7.3 - 2013-09-08
-
-* Added the ability to get the exception associated with a request/command when using `MultiTransferException` and
- `CommandTransferException`.
-* Setting `additionalParameters` of a response to false is now honored when parsing responses with a service description
-* Schemas are only injected into response models when explicitly configured.
-* No longer guessing Content-Type based on the path of a request. Content-Type is now only guessed based on the path of
- an EntityBody.
-* Bug fix: ChunkedIterator can now properly chunk a \Traversable as well as an \Iterator.
-* Bug fix: FilterIterator now relies on `\Iterator` instead of `\Traversable`.
-* Bug fix: Gracefully handling malformed responses in RequestMediator::writeResponseBody()
-* Bug fix: Replaced call to canCache with canCacheRequest in the CallbackCanCacheStrategy of the CachePlugin
-* Bug fix: Visiting XML attributes first before visiting XML children when serializing requests
-* Bug fix: Properly parsing headers that contain commas contained in quotes
-* Bug fix: mimetype guessing based on a filename is now case-insensitive
-
-## 3.7.2 - 2013-08-02
-
-* Bug fix: Properly URL encoding paths when using the PHP-only version of the UriTemplate expander
- See https://github.com/guzzle/guzzle/issues/371
-* Bug fix: Cookie domains are now matched correctly according to RFC 6265
- See https://github.com/guzzle/guzzle/issues/377
-* Bug fix: GET parameters are now used when calculating an OAuth signature
-* Bug fix: Fixed an issue with cache revalidation where the If-None-Match header was being double quoted
-* `Guzzle\Common\AbstractHasDispatcher::dispatch()` now returns the event that was dispatched
-* `Guzzle\Http\QueryString::factory()` now guesses the most appropriate query aggregator to used based on the input.
- See https://github.com/guzzle/guzzle/issues/379
-* Added a way to add custom domain objects to service description parsing using the `operation.parse_class` event. See
- https://github.com/guzzle/guzzle/pull/380
-* cURL multi cleanup and optimizations
-
-## 3.7.1 - 2013-07-05
-
-* Bug fix: Setting default options on a client now works
-* Bug fix: Setting options on HEAD requests now works. See #352
-* Bug fix: Moving stream factory before send event to before building the stream. See #353
-* Bug fix: Cookies no longer match on IP addresses per RFC 6265
-* Bug fix: Correctly parsing header parameters that are in `<>` and quotes
-* Added `cert` and `ssl_key` as request options
-* `Host` header can now diverge from the host part of a URL if the header is set manually
-* `Guzzle\Service\Command\LocationVisitor\Request\XmlVisitor` was rewritten to change from using SimpleXML to XMLWriter
-* OAuth parameters are only added via the plugin if they aren't already set
-* Exceptions are now thrown when a URL cannot be parsed
-* Returning `false` if `Guzzle\Http\EntityBody::getContentMd5()` fails
-* Not setting a `Content-MD5` on a command if calculating the Content-MD5 fails via the CommandContentMd5Plugin
-
-## 3.7.0 - 2013-06-10
-
-* See UPGRADING.md for more information on how to upgrade.
-* Requests now support the ability to specify an array of $options when creating a request to more easily modify a
- request. You can pass a 'request.options' configuration setting to a client to apply default request options to
- every request created by a client (e.g. default query string variables, headers, curl options, etc.).
-* Added a static facade class that allows you to use Guzzle with static methods and mount the class to `\Guzzle`.
- See `Guzzle\Http\StaticClient::mount`.
-* Added `command.request_options` to `Guzzle\Service\Command\AbstractCommand` to pass request options to requests
- created by a command (e.g. custom headers, query string variables, timeout settings, etc.).
-* Stream size in `Guzzle\Stream\PhpStreamRequestFactory` will now be set if Content-Length is returned in the
- headers of a response
-* Added `Guzzle\Common\Collection::setPath($path, $value)` to set a value into an array using a nested key
- (e.g. `$collection->setPath('foo/baz/bar', 'test'); echo $collection['foo']['bar']['bar'];`)
-* ServiceBuilders now support storing and retrieving arbitrary data
-* CachePlugin can now purge all resources for a given URI
-* CachePlugin can automatically purge matching cached items when a non-idempotent request is sent to a resource
-* CachePlugin now uses the Vary header to determine if a resource is a cache hit
-* `Guzzle\Http\Message\Response` now implements `\Serializable`
-* Added `Guzzle\Cache\CacheAdapterFactory::fromCache()` to more easily create cache adapters
-* `Guzzle\Service\ClientInterface::execute()` now accepts an array, single command, or Traversable
-* Fixed a bug in `Guzzle\Http\Message\Header\Link::addLink()`
-* Better handling of calculating the size of a stream in `Guzzle\Stream\Stream` using fstat() and caching the size
-* `Guzzle\Common\Exception\ExceptionCollection` now creates a more readable exception message
-* Fixing BC break: Added back the MonologLogAdapter implementation rather than extending from PsrLog so that older
- Symfony users can still use the old version of Monolog.
-* Fixing BC break: Added the implementation back in for `Guzzle\Http\Message\AbstractMessage::getTokenizedHeader()`.
- Now triggering an E_USER_DEPRECATED warning when used. Use `$message->getHeader()->parseParams()`.
-* Several performance improvements to `Guzzle\Common\Collection`
-* Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`:
- createRequest, head, delete, put, patch, post, options, prepareRequest
-* Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()`
-* Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface`
-* Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to
- `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a
- resource, string, or EntityBody into the $options parameter to specify the download location of the response.
-* Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a
- default `array()`
-* Added `Guzzle\Stream\StreamInterface::isRepeatable`
-* Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use
- $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or
- $client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))`.
-* Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use $client->getConfig()->getPath('request.options/headers')`.
-* Removed `Guzzle\Http\ClientInterface::expandTemplate()`
-* Removed `Guzzle\Http\ClientInterface::setRequestFactory()`
-* Removed `Guzzle\Http\ClientInterface::getCurlMulti()`
-* Removed `Guzzle\Http\Message\RequestInterface::canCache`
-* Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect`
-* Removed `Guzzle\Http\Message\RequestInterface::isRedirect`
-* Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods.
-* You can now enable E_USER_DEPRECATED warnings to see if you are using a deprecated method by setting
- `Guzzle\Common\Version::$emitWarnings` to true.
-* Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use
- `$request->getResponseBody()->isRepeatable()` instead.
-* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use
- `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use
- `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-* Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead.
-* Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead.
-* Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated
-* Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand.
- These will work through Guzzle 4.0
-* Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use [request.options][params].
-* Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client.
-* Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use $client->getConfig()->getPath('request.options/headers')`.
-* Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`.
-* Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8.
-* Marked `Guzzle\Common\Collection::inject()` as deprecated.
-* Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest');`
-* CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a
- CacheStorageInterface. These two objects and interface will be removed in a future version.
-* Always setting X-cache headers on cached responses
-* Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin
-* `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface
- $request, Response $response);`
-* `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);`
-* `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);`
-* Added `CacheStorageInterface::purge($url)`
-* `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin
- $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache,
- CanCacheStrategyInterface $canCache = null)`
-* Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)`
-
-## 3.6.0 - 2013-05-29
-
-* ServiceDescription now implements ToArrayInterface
-* Added command.hidden_params to blacklist certain headers from being treated as additionalParameters
-* Guzzle can now correctly parse incomplete URLs
-* Mixed casing of headers are now forced to be a single consistent casing across all values for that header.
-* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution
-* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader().
-* Specific header implementations can be created for complex headers. When a message creates a header, it uses a
- HeaderFactory which can map specific headers to specific header classes. There is now a Link header and
- CacheControl header implementation.
-* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate
-* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti()
-* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in
- Guzzle\Http\Curl\RequestMediator
-* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string.
-* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface
-* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders()
-* Removed Guzzle\Parser\ParserRegister::get(). Use getParser()
-* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser().
-* All response header helper functions return a string rather than mixing Header objects and strings inconsistently
-* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle
- directly via interfaces
-* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist
- but are a no-op until removed.
-* Most classes that used to require a `Guzzle\Service\Command\CommandInterface` typehint now request a
- `Guzzle\Service\Command\ArrayCommandInterface`.
-* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response
- on a request while the request is still being transferred
-* The ability to case-insensitively search for header values
-* Guzzle\Http\Message\Header::hasExactHeader
-* Guzzle\Http\Message\Header::raw. Use getAll()
-* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object
- instead.
-* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess
-* Added the ability to cast Model objects to a string to view debug information.
-
-## 3.5.0 - 2013-05-13
-
-* Bug: Fixed a regression so that request responses are parsed only once per oncomplete event rather than multiple times
-* Bug: Better cleanup of one-time events across the board (when an event is meant to fire once, it will now remove
- itself from the EventDispatcher)
-* Bug: `Guzzle\Log\MessageFormatter` now properly writes "total_time" and "connect_time" values
-* Bug: Cloning an EntityEnclosingRequest now clones the EntityBody too
-* Bug: Fixed an undefined index error when parsing nested JSON responses with a sentAs parameter that reference a
- non-existent key
-* Bug: All __call() method arguments are now required (helps with mocking frameworks)
-* Deprecating Response::getRequest() and now using a shallow clone of a request object to remove a circular reference
- to help with refcount based garbage collection of resources created by sending a request
-* Deprecating ZF1 cache and log adapters. These will be removed in the next major version.
-* Deprecating `Response::getPreviousResponse()` (method signature still exists, but it's deprecated). Use the
- HistoryPlugin for a history.
-* Added a `responseBody` alias for the `response_body` location
-* Refactored internals to no longer rely on Response::getRequest()
-* HistoryPlugin can now be cast to a string
-* HistoryPlugin now logs transactions rather than requests and responses to more accurately keep track of the requests
- and responses that are sent over the wire
-* Added `getEffectiveUrl()` and `getRedirectCount()` to Response objects
-
-## 3.4.3 - 2013-04-30
-
-* Bug fix: Fixing bug introduced in 3.4.2 where redirect responses are duplicated on the final redirected response
-* Added a check to re-extract the temp cacert bundle from the phar before sending each request
-
-## 3.4.2 - 2013-04-29
-
-* Bug fix: Stream objects now work correctly with "a" and "a+" modes
-* Bug fix: Removing `Transfer-Encoding: chunked` header when a Content-Length is present
-* Bug fix: AsyncPlugin no longer forces HEAD requests
-* Bug fix: DateTime timezones are now properly handled when using the service description schema formatter
-* Bug fix: CachePlugin now properly handles stale-if-error directives when a request to the origin server fails
-* Setting a response on a request will write to the custom request body from the response body if one is specified
-* LogPlugin now writes to php://output when STDERR is undefined
-* Added the ability to set multiple POST files for the same key in a single call
-* application/x-www-form-urlencoded POSTs now use the utf-8 charset by default
-* Added the ability to queue CurlExceptions to the MockPlugin
-* Cleaned up how manual responses are queued on requests (removed "queued_response" and now using request.before_send)
-* Configuration loading now allows remote files
-
-## 3.4.1 - 2013-04-16
-
-* Large refactoring to how CurlMulti handles work. There is now a proxy that sits in front of a pool of CurlMulti
- handles. This greatly simplifies the implementation, fixes a couple bugs, and provides a small performance boost.
-* Exceptions are now properly grouped when sending requests in parallel
-* Redirects are now properly aggregated when a multi transaction fails
-* Redirects now set the response on the original object even in the event of a failure
-* Bug fix: Model names are now properly set even when using $refs
-* Added support for PHP 5.5's CurlFile to prevent warnings with the deprecated @ syntax
-* Added support for oauth_callback in OAuth signatures
-* Added support for oauth_verifier in OAuth signatures
-* Added support to attempt to retrieve a command first literally, then ucfirst, the with inflection
-
-## 3.4.0 - 2013-04-11
-
-* Bug fix: URLs are now resolved correctly based on http://tools.ietf.org/html/rfc3986#section-5.2. #289
-* Bug fix: Absolute URLs with a path in a service description will now properly override the base URL. #289
-* Bug fix: Parsing a query string with a single PHP array value will now result in an array. #263
-* Bug fix: Better normalization of the User-Agent header to prevent duplicate headers. #264.
-* Bug fix: Added `number` type to service descriptions.
-* Bug fix: empty parameters are removed from an OAuth signature
-* Bug fix: Revalidating a cache entry prefers the Last-Modified over the Date header
-* Bug fix: Fixed "array to string" error when validating a union of types in a service description
-* Bug fix: Removed code that attempted to determine the size of a stream when data is written to the stream
-* Bug fix: Not including an `oauth_token` if the value is null in the OauthPlugin.
-* Bug fix: Now correctly aggregating successful requests and failed requests in CurlMulti when a redirect occurs.
-* The new default CURLOPT_TIMEOUT setting has been increased to 150 seconds so that Guzzle works on poor connections.
-* Added a feature to EntityEnclosingRequest::setBody() that will automatically set the Content-Type of the request if
- the Content-Type can be determined based on the entity body or the path of the request.
-* Added the ability to overwrite configuration settings in a client when grabbing a throwaway client from a builder.
-* Added support for a PSR-3 LogAdapter.
-* Added a `command.after_prepare` event
-* Added `oauth_callback` parameter to the OauthPlugin
-* Added the ability to create a custom stream class when using a stream factory
-* Added a CachingEntityBody decorator
-* Added support for `additionalParameters` in service descriptions to define how custom parameters are serialized.
-* The bundled SSL certificate is now provided in the phar file and extracted when running Guzzle from a phar.
-* You can now send any EntityEnclosingRequest with POST fields or POST files and cURL will handle creating bodies
-* POST requests using a custom entity body are now treated exactly like PUT requests but with a custom cURL method. This
- means that the redirect behavior of POST requests with custom bodies will not be the same as POST requests that use
- POST fields or files (the latter is only used when emulating a form POST in the browser).
-* Lots of cleanup to CurlHandle::factory and RequestFactory::createRequest
-
-## 3.3.1 - 2013-03-10
-
-* Added the ability to create PHP streaming responses from HTTP requests
-* Bug fix: Running any filters when parsing response headers with service descriptions
-* Bug fix: OauthPlugin fixes to allow for multi-dimensional array signing, and sorting parameters before signing
-* Bug fix: Removed the adding of default empty arrays and false Booleans to responses in order to be consistent across
- response location visitors.
-* Bug fix: Removed the possibility of creating configuration files with circular dependencies
-* RequestFactory::create() now uses the key of a POST file when setting the POST file name
-* Added xmlAllowEmpty to serialize an XML body even if no XML specific parameters are set
-
-## 3.3.0 - 2013-03-03
-
-* A large number of performance optimizations have been made
-* Bug fix: Added 'wb' as a valid write mode for streams
-* Bug fix: `Guzzle\Http\Message\Response::json()` now allows scalar values to be returned
-* Bug fix: Fixed bug in `Guzzle\Http\Message\Response` where wrapping quotes were stripped from `getEtag()`
-* BC: Removed `Guzzle\Http\Utils` class
-* BC: Setting a service description on a client will no longer modify the client's command factories.
-* BC: Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using
- the 'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io'
-* BC: `Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getSteamType()` are no longer converted to
- lowercase
-* Operation parameter objects are now lazy loaded internally
-* Added ErrorResponsePlugin that can throw errors for responses defined in service description operations' errorResponses
-* Added support for instantiating responseType=class responseClass classes. Classes must implement
- `Guzzle\Service\Command\ResponseClassInterface`
-* Added support for additionalProperties for top-level parameters in responseType=model responseClasses. These
- additional properties also support locations and can be used to parse JSON responses where the outermost part of the
- JSON is an array
-* Added support for nested renaming of JSON models (rename sentAs to name)
-* CachePlugin
- * Added support for stale-if-error so that the CachePlugin can now serve stale content from the cache on error
- * Debug headers can now added to cached response in the CachePlugin
-
-## 3.2.0 - 2013-02-14
-
-* CurlMulti is no longer reused globally. A new multi object is created per-client. This helps to isolate clients.
-* URLs with no path no longer contain a "/" by default
-* Guzzle\Http\QueryString does no longer manages the leading "?". This is now handled in Guzzle\Http\Url.
-* BadResponseException no longer includes the full request and response message
-* Adding setData() to Guzzle\Service\Description\ServiceDescriptionInterface
-* Adding getResponseBody() to Guzzle\Http\Message\RequestInterface
-* Various updates to classes to use ServiceDescriptionInterface type hints rather than ServiceDescription
-* Header values can now be normalized into distinct values when multiple headers are combined with a comma separated list
-* xmlEncoding can now be customized for the XML declaration of a XML service description operation
-* Guzzle\Http\QueryString now uses Guzzle\Http\QueryAggregator\QueryAggregatorInterface objects to add custom value
- aggregation and no longer uses callbacks
-* The URL encoding implementation of Guzzle\Http\QueryString can now be customized
-* Bug fix: Filters were not always invoked for array service description parameters
-* Bug fix: Redirects now use a target response body rather than a temporary response body
-* Bug fix: The default exponential backoff BackoffPlugin was not giving when the request threshold was exceeded
-* Bug fix: Guzzle now takes the first found value when grabbing Cache-Control directives
-
-## 3.1.2 - 2013-01-27
-
-* Refactored how operation responses are parsed. Visitors now include a before() method responsible for parsing the
- response body. For example, the XmlVisitor now parses the XML response into an array in the before() method.
-* Fixed an issue where cURL would not automatically decompress responses when the Accept-Encoding header was sent
-* CURLOPT_SSL_VERIFYHOST is never set to 1 because it is deprecated (see 5e0ff2ef20f839e19d1eeb298f90ba3598784444)
-* Fixed a bug where redirect responses were not chained correctly using getPreviousResponse()
-* Setting default headers on a client after setting the user-agent will not erase the user-agent setting
-
-## 3.1.1 - 2013-01-20
-
-* Adding wildcard support to Guzzle\Common\Collection::getPath()
-* Adding alias support to ServiceBuilder configs
-* Adding Guzzle\Service\Resource\CompositeResourceIteratorFactory and cleaning up factory interface
-
-## 3.1.0 - 2013-01-12
-
-* BC: CurlException now extends from RequestException rather than BadResponseException
-* BC: Renamed Guzzle\Plugin\Cache\CanCacheStrategyInterface::canCache() to canCacheRequest() and added CanCacheResponse()
-* Added getData to ServiceDescriptionInterface
-* Added context array to RequestInterface::setState()
-* Bug: Removing hard dependency on the BackoffPlugin from Guzzle\Http
-* Bug: Adding required content-type when JSON request visitor adds JSON to a command
-* Bug: Fixing the serialization of a service description with custom data
-* Made it easier to deal with exceptions thrown when transferring commands or requests in parallel by providing
- an array of successful and failed responses
-* Moved getPath from Guzzle\Service\Resource\Model to Guzzle\Common\Collection
-* Added Guzzle\Http\IoEmittingEntityBody
-* Moved command filtration from validators to location visitors
-* Added `extends` attributes to service description parameters
-* Added getModels to ServiceDescriptionInterface
-
-## 3.0.7 - 2012-12-19
-
-* Fixing phar detection when forcing a cacert to system if null or true
-* Allowing filename to be passed to `Guzzle\Http\Message\Request::setResponseBody()`
-* Cleaning up `Guzzle\Common\Collection::inject` method
-* Adding a response_body location to service descriptions
-
-## 3.0.6 - 2012-12-09
-
-* CurlMulti performance improvements
-* Adding setErrorResponses() to Operation
-* composer.json tweaks
-
-## 3.0.5 - 2012-11-18
-
-* Bug: Fixing an infinite recursion bug caused from revalidating with the CachePlugin
-* Bug: Response body can now be a string containing "0"
-* Bug: Using Guzzle inside of a phar uses system by default but now allows for a custom cacert
-* Bug: QueryString::fromString now properly parses query string parameters that contain equal signs
-* Added support for XML attributes in service description responses
-* DefaultRequestSerializer now supports array URI parameter values for URI template expansion
-* Added better mimetype guessing to requests and post files
-
-## 3.0.4 - 2012-11-11
-
-* Bug: Fixed a bug when adding multiple cookies to a request to use the correct glue value
-* Bug: Cookies can now be added that have a name, domain, or value set to "0"
-* Bug: Using the system cacert bundle when using the Phar
-* Added json and xml methods to Response to make it easier to parse JSON and XML response data into data structures
-* Enhanced cookie jar de-duplication
-* Added the ability to enable strict cookie jars that throw exceptions when invalid cookies are added
-* Added setStream to StreamInterface to actually make it possible to implement custom rewind behavior for entity bodies
-* Added the ability to create any sort of hash for a stream rather than just an MD5 hash
-
-## 3.0.3 - 2012-11-04
-
-* Implementing redirects in PHP rather than cURL
-* Added PECL URI template extension and using as default parser if available
-* Bug: Fixed Content-Length parsing of Response factory
-* Adding rewind() method to entity bodies and streams. Allows for custom rewinding of non-repeatable streams.
-* Adding ToArrayInterface throughout library
-* Fixing OauthPlugin to create unique nonce values per request
-
-## 3.0.2 - 2012-10-25
-
-* Magic methods are enabled by default on clients
-* Magic methods return the result of a command
-* Service clients no longer require a base_url option in the factory
-* Bug: Fixed an issue with URI templates where null template variables were being expanded
-
-## 3.0.1 - 2012-10-22
-
-* Models can now be used like regular collection objects by calling filter, map, etc.
-* Models no longer require a Parameter structure or initial data in the constructor
-* Added a custom AppendIterator to get around a PHP bug with the `\AppendIterator`
-
-## 3.0.0 - 2012-10-15
-
-* Rewrote service description format to be based on Swagger
- * Now based on JSON schema
- * Added nested input structures and nested response models
- * Support for JSON and XML input and output models
- * Renamed `commands` to `operations`
- * Removed dot class notation
- * Removed custom types
-* Broke the project into smaller top-level namespaces to be more component friendly
-* Removed support for XML configs and descriptions. Use arrays or JSON files.
-* Removed the Validation component and Inspector
-* Moved all cookie code to Guzzle\Plugin\Cookie
-* Magic methods on a Guzzle\Service\Client now return the command un-executed.
-* Calling getResult() or getResponse() on a command will lazily execute the command if needed.
-* Now shipping with cURL's CA certs and using it by default
-* Added previousResponse() method to response objects
-* No longer sending Accept and Accept-Encoding headers on every request
-* Only sending an Expect header by default when a payload is greater than 1MB
-* Added/moved client options:
- * curl.blacklist to curl.option.blacklist
- * Added ssl.certificate_authority
-* Added a Guzzle\Iterator component
-* Moved plugins from Guzzle\Http\Plugin to Guzzle\Plugin
-* Added a more robust backoff retry strategy (replaced the ExponentialBackoffPlugin)
-* Added a more robust caching plugin
-* Added setBody to response objects
-* Updating LogPlugin to use a more flexible MessageFormatter
-* Added a completely revamped build process
-* Cleaning up Collection class and removing default values from the get method
-* Fixed ZF2 cache adapters
-
-## 2.8.8 - 2012-10-15
-
-* Bug: Fixed a cookie issue that caused dot prefixed domains to not match where popular browsers did
-
-## 2.8.7 - 2012-09-30
-
-* Bug: Fixed config file aliases for JSON includes
-* Bug: Fixed cookie bug on a request object by using CookieParser to parse cookies on requests
-* Bug: Removing the path to a file when sending a Content-Disposition header on a POST upload
-* Bug: Hardening request and response parsing to account for missing parts
-* Bug: Fixed PEAR packaging
-* Bug: Fixed Request::getInfo
-* Bug: Fixed cases where CURLM_CALL_MULTI_PERFORM return codes were causing curl transactions to fail
-* Adding the ability for the namespace Iterator factory to look in multiple directories
-* Added more getters/setters/removers from service descriptions
-* Added the ability to remove POST fields from OAuth signatures
-* OAuth plugin now supports 2-legged OAuth
-
-## 2.8.6 - 2012-09-05
-
-* Added the ability to modify and build service descriptions
-* Added the use of visitors to apply parameters to locations in service descriptions using the dynamic command
-* Added a `json` parameter location
-* Now allowing dot notation for classes in the CacheAdapterFactory
-* Using the union of two arrays rather than an array_merge when extending service builder services and service params
-* Ensuring that a service is a string before doing strpos() checks on it when substituting services for references
- in service builder config files.
-* Services defined in two different config files that include one another will by default replace the previously
- defined service, but you can now create services that extend themselves and merge their settings over the previous
-* The JsonLoader now supports aliasing filenames with different filenames. This allows you to alias something like
- '_default' with a default JSON configuration file.
-
-## 2.8.5 - 2012-08-29
-
-* Bug: Suppressed empty arrays from URI templates
-* Bug: Added the missing $options argument from ServiceDescription::factory to enable caching
-* Added support for HTTP responses that do not contain a reason phrase in the start-line
-* AbstractCommand commands are now invokable
-* Added a way to get the data used when signing an Oauth request before a request is sent
-
-## 2.8.4 - 2012-08-15
-
-* Bug: Custom delay time calculations are no longer ignored in the ExponentialBackoffPlugin
-* Added the ability to transfer entity bodies as a string rather than streamed. This gets around curl error 65. Set `body_as_string` in a request's curl options to enable.
-* Added a StreamInterface, EntityBodyInterface, and added ftell() to Guzzle\Common\Stream
-* Added an AbstractEntityBodyDecorator and a ReadLimitEntityBody decorator to transfer only a subset of a decorated stream
-* Stream and EntityBody objects will now return the file position to the previous position after a read required operation (e.g. getContentMd5())
-* Added additional response status codes
-* Removed SSL information from the default User-Agent header
-* DELETE requests can now send an entity body
-* Added an EventDispatcher to the ExponentialBackoffPlugin and added an ExponentialBackoffLogger to log backoff retries
-* Added the ability of the MockPlugin to consume mocked request bodies
-* LogPlugin now exposes request and response objects in the extras array
-
-## 2.8.3 - 2012-07-30
-
-* Bug: Fixed a case where empty POST requests were sent as GET requests
-* Bug: Fixed a bug in ExponentialBackoffPlugin that caused fatal errors when retrying an EntityEnclosingRequest that does not have a body
-* Bug: Setting the response body of a request to null after completing a request, not when setting the state of a request to new
-* Added multiple inheritance to service description commands
-* Added an ApiCommandInterface and added `getParamNames()` and `hasParam()`
-* Removed the default 2mb size cutoff from the Md5ValidatorPlugin so that it now defaults to validating everything
-* Changed CurlMulti::perform to pass a smaller timeout to CurlMulti::executeHandles
-
-## 2.8.2 - 2012-07-24
-
-* Bug: Query string values set to 0 are no longer dropped from the query string
-* Bug: A Collection object is no longer created each time a call is made to `Guzzle\Service\Command\AbstractCommand::getRequestHeaders()`
-* Bug: `+` is now treated as an encoded space when parsing query strings
-* QueryString and Collection performance improvements
-* Allowing dot notation for class paths in filters attribute of a service descriptions
-
-## 2.8.1 - 2012-07-16
-
-* Loosening Event Dispatcher dependency
-* POST redirects can now be customized using CURLOPT_POSTREDIR
-
-## 2.8.0 - 2012-07-15
-
-* BC: Guzzle\Http\Query
- * Query strings with empty variables will always show an equal sign unless the variable is set to QueryString::BLANK (e.g. ?acl= vs ?acl)
- * Changed isEncodingValues() and isEncodingFields() to isUrlEncoding()
- * Changed setEncodeValues(bool) and setEncodeFields(bool) to useUrlEncoding(bool)
- * Changed the aggregation functions of QueryString to be static methods
- * Can now use fromString() with querystrings that have a leading ?
-* cURL configuration values can be specified in service descriptions using `curl.` prefixed parameters
-* Content-Length is set to 0 before emitting the request.before_send event when sending an empty request body
-* Cookies are no longer URL decoded by default
-* Bug: URI template variables set to null are no longer expanded
-
-## 2.7.2 - 2012-07-02
-
-* BC: Moving things to get ready for subtree splits. Moving Inflection into Common. Moving Guzzle\Http\Parser to Guzzle\Parser.
-* BC: Removing Guzzle\Common\Batch\Batch::count() and replacing it with isEmpty()
-* CachePlugin now allows for a custom request parameter function to check if a request can be cached
-* Bug fix: CachePlugin now only caches GET and HEAD requests by default
-* Bug fix: Using header glue when transferring headers over the wire
-* Allowing deeply nested arrays for composite variables in URI templates
-* Batch divisors can now return iterators or arrays
-
-## 2.7.1 - 2012-06-26
-
-* Minor patch to update version number in UA string
-* Updating build process
-
-## 2.7.0 - 2012-06-25
-
-* BC: Inflection classes moved to Guzzle\Inflection. No longer static methods. Can now inject custom inflectors into classes.
-* BC: Removed magic setX methods from commands
-* BC: Magic methods mapped to service description commands are now inflected in the command factory rather than the client __call() method
-* Verbose cURL options are no longer enabled by default. Set curl.debug to true on a client to enable.
-* Bug: Now allowing colons in a response start-line (e.g. HTTP/1.1 503 Service Unavailable: Back-end server is at capacity)
-* Guzzle\Service\Resource\ResourceIteratorApplyBatched now internally uses the Guzzle\Common\Batch namespace
-* Added Guzzle\Service\Plugin namespace and a PluginCollectionPlugin
-* Added the ability to set POST fields and files in a service description
-* Guzzle\Http\EntityBody::factory() now accepts objects with a __toString() method
-* Adding a command.before_prepare event to clients
-* Added BatchClosureTransfer and BatchClosureDivisor
-* BatchTransferException now includes references to the batch divisor and transfer strategies
-* Fixed some tests so that they pass more reliably
-* Added Guzzle\Common\Log\ArrayLogAdapter
-
-## 2.6.6 - 2012-06-10
-
-* BC: Removing Guzzle\Http\Plugin\BatchQueuePlugin
-* BC: Removing Guzzle\Service\Command\CommandSet
-* Adding generic batching system (replaces the batch queue plugin and command set)
-* Updating ZF cache and log adapters and now using ZF's composer repository
-* Bug: Setting the name of each ApiParam when creating through an ApiCommand
-* Adding result_type, result_doc, deprecated, and doc_url to service descriptions
-* Bug: Changed the default cookie header casing back to 'Cookie'
-
-## 2.6.5 - 2012-06-03
-
-* BC: Renaming Guzzle\Http\Message\RequestInterface::getResourceUri() to getResource()
-* BC: Removing unused AUTH_BASIC and AUTH_DIGEST constants from
-* BC: Guzzle\Http\Cookie is now used to manage Set-Cookie data, not Cookie data
-* BC: Renaming methods in the CookieJarInterface
-* Moving almost all cookie logic out of the CookiePlugin and into the Cookie or CookieJar implementations
-* Making the default glue for HTTP headers ';' instead of ','
-* Adding a removeValue to Guzzle\Http\Message\Header
-* Adding getCookies() to request interface.
-* Making it easier to add event subscribers to HasDispatcherInterface classes. Can now directly call addSubscriber()
-
-## 2.6.4 - 2012-05-30
-
-* BC: Cleaning up how POST files are stored in EntityEnclosingRequest objects. Adding PostFile class.
-* BC: Moving ApiCommand specific functionality from the Inspector and on to the ApiCommand
-* Bug: Fixing magic method command calls on clients
-* Bug: Email constraint only validates strings
-* Bug: Aggregate POST fields when POST files are present in curl handle
-* Bug: Fixing default User-Agent header
-* Bug: Only appending or prepending parameters in commands if they are specified
-* Bug: Not requiring response reason phrases or status codes to match a predefined list of codes
-* Allowing the use of dot notation for class namespaces when using instance_of constraint
-* Added any_match validation constraint
-* Added an AsyncPlugin
-* Passing request object to the calculateWait method of the ExponentialBackoffPlugin
-* Allowing the result of a command object to be changed
-* Parsing location and type sub values when instantiating a service description rather than over and over at runtime
-
-## 2.6.3 - 2012-05-23
-
-* [BC] Guzzle\Common\FromConfigInterface no longer requires any config options.
-* [BC] Refactoring how POST files are stored on an EntityEnclosingRequest. They are now separate from POST fields.
-* You can now use an array of data when creating PUT request bodies in the request factory.
-* Removing the requirement that HTTPS requests needed a Cache-Control: public directive to be cacheable.
-* [Http] Adding support for Content-Type in multipart POST uploads per upload
-* [Http] Added support for uploading multiple files using the same name (foo[0], foo[1])
-* Adding more POST data operations for easier manipulation of POST data.
-* You can now set empty POST fields.
-* The body of a request is only shown on EntityEnclosingRequest objects that do not use POST files.
-* Split the Guzzle\Service\Inspector::validateConfig method into two methods. One to initialize when a command is created, and one to validate.
-* CS updates
-
-## 2.6.2 - 2012-05-19
-
-* [Http] Better handling of nested scope requests in CurlMulti. Requests are now always prepares in the send() method rather than the addRequest() method.
-
-## 2.6.1 - 2012-05-19
-
-* [BC] Removing 'path' support in service descriptions. Use 'uri'.
-* [BC] Guzzle\Service\Inspector::parseDocBlock is now protected. Adding getApiParamsForClass() with cache.
-* [BC] Removing Guzzle\Common\NullObject. Use https://github.com/mtdowling/NullObject if you need it.
-* [BC] Removing Guzzle\Common\XmlElement.
-* All commands, both dynamic and concrete, have ApiCommand objects.
-* Adding a fix for CurlMulti so that if all of the connections encounter some sort of curl error, then the loop exits.
-* Adding checks to EntityEnclosingRequest so that empty POST files and fields are ignored.
-* Making the method signature of Guzzle\Service\Builder\ServiceBuilder::factory more flexible.
-
-## 2.6.0 - 2012-05-15
-
-* [BC] Moving Guzzle\Service\Builder to Guzzle\Service\Builder\ServiceBuilder
-* [BC] Executing a Command returns the result of the command rather than the command
-* [BC] Moving all HTTP parsing logic to Guzzle\Http\Parsers. Allows for faster C implementations if needed.
-* [BC] Changing the Guzzle\Http\Message\Response::setProtocol() method to accept a protocol and version in separate args.
-* [BC] Moving ResourceIterator* to Guzzle\Service\Resource
-* [BC] Completely refactored ResourceIterators to iterate over a cloned command object
-* [BC] Moved Guzzle\Http\UriTemplate to Guzzle\Http\Parser\UriTemplate\UriTemplate
-* [BC] Guzzle\Guzzle is now deprecated
-* Moving Guzzle\Common\Guzzle::inject to Guzzle\Common\Collection::inject
-* Adding Guzzle\Version class to give version information about Guzzle
-* Adding Guzzle\Http\Utils class to provide getDefaultUserAgent() and getHttpDate()
-* Adding Guzzle\Curl\CurlVersion to manage caching curl_version() data
-* ServiceDescription and ServiceBuilder are now cacheable using similar configs
-* Changing the format of XML and JSON service builder configs. Backwards compatible.
-* Cleaned up Cookie parsing
-* Trimming the default Guzzle User-Agent header
-* Adding a setOnComplete() method to Commands that is called when a command completes
-* Keeping track of requests that were mocked in the MockPlugin
-* Fixed a caching bug in the CacheAdapterFactory
-* Inspector objects can be injected into a Command object
-* Refactoring a lot of code and tests to be case insensitive when dealing with headers
-* Adding Guzzle\Http\Message\HeaderComparison for easy comparison of HTTP headers using a DSL
-* Adding the ability to set global option overrides to service builder configs
-* Adding the ability to include other service builder config files from within XML and JSON files
-* Moving the parseQuery method out of Url and on to QueryString::fromString() as a static factory method.
-
-## 2.5.0 - 2012-05-08
-
-* Major performance improvements
-* [BC] Simplifying Guzzle\Common\Collection. Please check to see if you are using features that are now deprecated.
-* [BC] Using a custom validation system that allows a flyweight implementation for much faster validation. No longer using Symfony2 Validation component.
-* [BC] No longer supporting "{{ }}" for injecting into command or UriTemplates. Use "{}"
-* Added the ability to passed parameters to all requests created by a client
-* Added callback functionality to the ExponentialBackoffPlugin
-* Using microtime in ExponentialBackoffPlugin to allow more granular backoff strategies.
-* Rewinding request stream bodies when retrying requests
-* Exception is thrown when JSON response body cannot be decoded
-* Added configurable magic method calls to clients and commands. This is off by default.
-* Fixed a defect that added a hash to every parsed URL part
-* Fixed duplicate none generation for OauthPlugin.
-* Emitting an event each time a client is generated by a ServiceBuilder
-* Using an ApiParams object instead of a Collection for parameters of an ApiCommand
-* cache.* request parameters should be renamed to params.cache.*
-* Added the ability to set arbitrary curl options on requests (disable_wire, progress, etc.). See CurlHandle.
-* Added the ability to disable type validation of service descriptions
-* ServiceDescriptions and ServiceBuilders are now Serializable
diff --git a/vendor/guzzlehttp/guzzle/Dockerfile b/vendor/guzzlehttp/guzzle/Dockerfile
deleted file mode 100644
index f6a0952..0000000
--- a/vendor/guzzlehttp/guzzle/Dockerfile
+++ /dev/null
@@ -1,18 +0,0 @@
-FROM composer:latest as setup
-
-RUN mkdir /guzzle
-
-WORKDIR /guzzle
-
-RUN set -xe \
- && composer init --name=guzzlehttp/test --description="Simple project for testing Guzzle scripts" --author="Márk Sági-Kazár <[email protected]>" --no-interaction \
- && composer require guzzlehttp/guzzle
-
-
-FROM php:7.3
-
-RUN mkdir /guzzle
-
-WORKDIR /guzzle
-
-COPY --from=setup /guzzle /guzzle
diff --git a/vendor/guzzlehttp/guzzle/LICENSE b/vendor/guzzlehttp/guzzle/LICENSE
deleted file mode 100644
index 50a177b..0000000
--- a/vendor/guzzlehttp/guzzle/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2011-2018 Michael Dowling, https://github.com/mtdowling <[email protected]>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/guzzlehttp/guzzle/README.md b/vendor/guzzlehttp/guzzle/README.md
deleted file mode 100644
index 5fdb6c5..0000000
--- a/vendor/guzzlehttp/guzzle/README.md
+++ /dev/null
@@ -1,90 +0,0 @@
-Guzzle, PHP HTTP client
-=======================
-
-[![Latest Version](https://img.shields.io/github/release/guzzle/guzzle.svg?style=flat-square)](https://github.com/guzzle/guzzle/releases)
-[![Build Status](https://img.shields.io/travis/guzzle/guzzle.svg?style=flat-square)](https://travis-ci.org/guzzle/guzzle)
-[![Total Downloads](https://img.shields.io/packagist/dt/guzzlehttp/guzzle.svg?style=flat-square)](https://packagist.org/packages/guzzlehttp/guzzle)
-
-Guzzle is a PHP HTTP client that makes it easy to send HTTP requests and
-trivial to integrate with web services.
-
-- Simple interface for building query strings, POST requests, streaming large
- uploads, streaming large downloads, using HTTP cookies, uploading JSON data,
- etc...
-- Can send both synchronous and asynchronous requests using the same interface.
-- Uses PSR-7 interfaces for requests, responses, and streams. This allows you
- to utilize other PSR-7 compatible libraries with Guzzle.
-- Abstracts away the underlying HTTP transport, allowing you to write
- environment and transport agnostic code; i.e., no hard dependency on cURL,
- PHP streams, sockets, or non-blocking event loops.
-- Middleware system allows you to augment and compose client behavior.
-
-```php
-$client = new \GuzzleHttp\Client();
-$response = $client->request('GET', 'https://api.github.com/repos/guzzle/guzzle');
-
-echo $response->getStatusCode(); # 200
-echo $response->getHeaderLine('content-type'); # 'application/json; charset=utf8'
-echo $response->getBody(); # '{"id": 1420053, "name": "guzzle", ...}'
-
-# Send an asynchronous request.
-$request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org');
-$promise = $client->sendAsync($request)->then(function ($response) {
- echo 'I completed! ' . $response->getBody();
-});
-
-$promise->wait();
-```
-
-## Help and docs
-
-- [Documentation](http://guzzlephp.org/)
-- [Stack Overflow](http://stackoverflow.com/questions/tagged/guzzle)
-- [Gitter](https://gitter.im/guzzle/guzzle)
-
-
-## Installing Guzzle
-
-The recommended way to install Guzzle is through
-[Composer](http://getcomposer.org).
-
-```bash
-# Install Composer
-curl -sS https://getcomposer.org/installer | php
-```
-
-Next, run the Composer command to install the latest stable version of Guzzle:
-
-```bash
-composer require guzzlehttp/guzzle
-```
-
-After installing, you need to require Composer's autoloader:
-
-```php
-require 'vendor/autoload.php';
-```
-
-You can then later update Guzzle using composer:
-
- ```bash
-composer update
- ```
-
-
-## Version Guidance
-
-| Version | Status | Packagist | Namespace | Repo | Docs | PSR-7 | PHP Version |
-|---------|------------|---------------------|--------------|---------------------|---------------------|-------|-------------|
-| 3.x | EOL | `guzzle/guzzle` | `Guzzle` | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No | >= 5.3.3 |
-| 4.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A | No | >= 5.4 |
-| 5.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No | >= 5.4 |
-| 6.x | Latest | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes | >= 5.5 |
-
-[guzzle-3-repo]: https://github.com/guzzle/guzzle3
-[guzzle-4-repo]: https://github.com/guzzle/guzzle/tree/4.x
-[guzzle-5-repo]: https://github.com/guzzle/guzzle/tree/5.3
-[guzzle-6-repo]: https://github.com/guzzle/guzzle
-[guzzle-3-docs]: http://guzzle3.readthedocs.org
-[guzzle-5-docs]: http://guzzle.readthedocs.org/en/5.3/
-[guzzle-6-docs]: http://guzzle.readthedocs.org/en/latest/
diff --git a/vendor/guzzlehttp/guzzle/UPGRADING.md b/vendor/guzzlehttp/guzzle/UPGRADING.md
deleted file mode 100644
index 91d1dcc..0000000
--- a/vendor/guzzlehttp/guzzle/UPGRADING.md
+++ /dev/null
@@ -1,1203 +0,0 @@
-Guzzle Upgrade Guide
-====================
-
-5.0 to 6.0
-----------
-
-Guzzle now uses [PSR-7](http://www.php-fig.org/psr/psr-7/) for HTTP messages.
-Due to the fact that these messages are immutable, this prompted a refactoring
-of Guzzle to use a middleware based system rather than an event system. Any
-HTTP message interaction (e.g., `GuzzleHttp\Message\Request`) need to be
-updated to work with the new immutable PSR-7 request and response objects. Any
-event listeners or subscribers need to be updated to become middleware
-functions that wrap handlers (or are injected into a
-`GuzzleHttp\HandlerStack`).
-
-- Removed `GuzzleHttp\BatchResults`
-- Removed `GuzzleHttp\Collection`
-- Removed `GuzzleHttp\HasDataTrait`
-- Removed `GuzzleHttp\ToArrayInterface`
-- The `guzzlehttp/streams` dependency has been removed. Stream functionality
- is now present in the `GuzzleHttp\Psr7` namespace provided by the
- `guzzlehttp/psr7` package.
-- Guzzle no longer uses ReactPHP promises and now uses the
- `guzzlehttp/promises` library. We use a custom promise library for three
- significant reasons:
- 1. React promises (at the time of writing this) are recursive. Promise
- chaining and promise resolution will eventually blow the stack. Guzzle
- promises are not recursive as they use a sort of trampolining technique.
- Note: there has been movement in the React project to modify promises to
- no longer utilize recursion.
- 2. Guzzle needs to have the ability to synchronously block on a promise to
- wait for a result. Guzzle promises allows this functionality (and does
- not require the use of recursion).
- 3. Because we need to be able to wait on a result, doing so using React
- promises requires wrapping react promises with RingPHP futures. This
- overhead is no longer needed, reducing stack sizes, reducing complexity,
- and improving performance.
-- `GuzzleHttp\Mimetypes` has been moved to a function in
- `GuzzleHttp\Psr7\mimetype_from_extension` and
- `GuzzleHttp\Psr7\mimetype_from_filename`.
-- `GuzzleHttp\Query` and `GuzzleHttp\QueryParser` have been removed. Query
- strings must now be passed into request objects as strings, or provided to
- the `query` request option when creating requests with clients. The `query`
- option uses PHP's `http_build_query` to convert an array to a string. If you
- need a different serialization technique, you will need to pass the query
- string in as a string. There are a couple helper functions that will make
- working with query strings easier: `GuzzleHttp\Psr7\parse_query` and
- `GuzzleHttp\Psr7\build_query`.
-- Guzzle no longer has a dependency on RingPHP. Due to the use of a middleware
- system based on PSR-7, using RingPHP and it's middleware system as well adds
- more complexity than the benefits it provides. All HTTP handlers that were
- present in RingPHP have been modified to work directly with PSR-7 messages
- and placed in the `GuzzleHttp\Handler` namespace. This significantly reduces
- complexity in Guzzle, removes a dependency, and improves performance. RingPHP
- will be maintained for Guzzle 5 support, but will no longer be a part of
- Guzzle 6.
-- As Guzzle now uses a middleware based systems the event system and RingPHP
- integration has been removed. Note: while the event system has been removed,
- it is possible to add your own type of event system that is powered by the
- middleware system.
- - Removed the `Event` namespace.
- - Removed the `Subscriber` namespace.
- - Removed `Transaction` class
- - Removed `RequestFsm`
- - Removed `RingBridge`
- - `GuzzleHttp\Subscriber\Cookie` is now provided by
- `GuzzleHttp\Middleware::cookies`
- - `GuzzleHttp\Subscriber\HttpError` is now provided by
- `GuzzleHttp\Middleware::httpError`
- - `GuzzleHttp\Subscriber\History` is now provided by
- `GuzzleHttp\Middleware::history`
- - `GuzzleHttp\Subscriber\Mock` is now provided by
- `GuzzleHttp\Handler\MockHandler`
- - `GuzzleHttp\Subscriber\Prepare` is now provided by
- `GuzzleHttp\PrepareBodyMiddleware`
- - `GuzzleHttp\Subscriber\Redirect` is now provided by
- `GuzzleHttp\RedirectMiddleware`
-- Guzzle now uses `Psr\Http\Message\UriInterface` (implements in
- `GuzzleHttp\Psr7\Uri`) for URI support. `GuzzleHttp\Url` is now gone.
-- Static functions in `GuzzleHttp\Utils` have been moved to namespaced
- functions under the `GuzzleHttp` namespace. This requires either a Composer
- based autoloader or you to include functions.php.
-- `GuzzleHttp\ClientInterface::getDefaultOption` has been renamed to
- `GuzzleHttp\ClientInterface::getConfig`.
-- `GuzzleHttp\ClientInterface::setDefaultOption` has been removed.
-- The `json` and `xml` methods of response objects has been removed. With the
- migration to strictly adhering to PSR-7 as the interface for Guzzle messages,
- adding methods to message interfaces would actually require Guzzle messages
- to extend from PSR-7 messages rather then work with them directly.
-
-## Migrating to middleware
-
-The change to PSR-7 unfortunately required significant refactoring to Guzzle
-due to the fact that PSR-7 messages are immutable. Guzzle 5 relied on an event
-system from plugins. The event system relied on mutability of HTTP messages and
-side effects in order to work. With immutable messages, you have to change your
-workflow to become more about either returning a value (e.g., functional
-middlewares) or setting a value on an object. Guzzle v6 has chosen the
-functional middleware approach.
-
-Instead of using the event system to listen for things like the `before` event,
-you now create a stack based middleware function that intercepts a request on
-the way in and the promise of the response on the way out. This is a much
-simpler and more predictable approach than the event system and works nicely
-with PSR-7 middleware. Due to the use of promises, the middleware system is
-also asynchronous.
-
-v5:
-
-```php
-use GuzzleHttp\Event\BeforeEvent;
-$client = new GuzzleHttp\Client();
-// Get the emitter and listen to the before event.
-$client->getEmitter()->on('before', function (BeforeEvent $e) {
- // Guzzle v5 events relied on mutation
- $e->getRequest()->setHeader('X-Foo', 'Bar');
-});
-```
-
-v6:
-
-In v6, you can modify the request before it is sent using the `mapRequest`
-middleware. The idiomatic way in v6 to modify the request/response lifecycle is
-to setup a handler middleware stack up front and inject the handler into a
-client.
-
-```php
-use GuzzleHttp\Middleware;
-// Create a handler stack that has all of the default middlewares attached
-$handler = GuzzleHttp\HandlerStack::create();
-// Push the handler onto the handler stack
-$handler->push(Middleware::mapRequest(function (RequestInterface $request) {
- // Notice that we have to return a request object
- return $request->withHeader('X-Foo', 'Bar');
-}));
-// Inject the handler into the client
-$client = new GuzzleHttp\Client(['handler' => $handler]);
-```
-
-## POST Requests
-
-This version added the [`form_params`](http://guzzle.readthedocs.org/en/latest/request-options.html#form_params)
-and `multipart` request options. `form_params` is an associative array of
-strings or array of strings and is used to serialize an
-`application/x-www-form-urlencoded` POST request. The
-[`multipart`](http://guzzle.readthedocs.org/en/latest/request-options.html#multipart)
-option is now used to send a multipart/form-data POST request.
-
-`GuzzleHttp\Post\PostFile` has been removed. Use the `multipart` option to add
-POST files to a multipart/form-data request.
-
-The `body` option no longer accepts an array to send POST requests. Please use
-`multipart` or `form_params` instead.
-
-The `base_url` option has been renamed to `base_uri`.
-
-4.x to 5.0
-----------
-
-## Rewritten Adapter Layer
-
-Guzzle now uses [RingPHP](http://ringphp.readthedocs.org/en/latest) to send
-HTTP requests. The `adapter` option in a `GuzzleHttp\Client` constructor
-is still supported, but it has now been renamed to `handler`. Instead of
-passing a `GuzzleHttp\Adapter\AdapterInterface`, you must now pass a PHP
-`callable` that follows the RingPHP specification.
-
-## Removed Fluent Interfaces
-
-[Fluent interfaces were removed](http://ocramius.github.io/blog/fluent-interfaces-are-evil)
-from the following classes:
-
-- `GuzzleHttp\Collection`
-- `GuzzleHttp\Url`
-- `GuzzleHttp\Query`
-- `GuzzleHttp\Post\PostBody`
-- `GuzzleHttp\Cookie\SetCookie`
-
-## Removed functions.php
-
-Removed "functions.php", so that Guzzle is truly PSR-4 compliant. The following
-functions can be used as replacements.
-
-- `GuzzleHttp\json_decode` -> `GuzzleHttp\Utils::jsonDecode`
-- `GuzzleHttp\get_path` -> `GuzzleHttp\Utils::getPath`
-- `GuzzleHttp\Utils::setPath` -> `GuzzleHttp\set_path`
-- `GuzzleHttp\Pool::batch` -> `GuzzleHttp\batch`. This function is, however,
- deprecated in favor of using `GuzzleHttp\Pool::batch()`.
-
-The "procedural" global client has been removed with no replacement (e.g.,
-`GuzzleHttp\get()`, `GuzzleHttp\post()`, etc.). Use a `GuzzleHttp\Client`
-object as a replacement.
-
-## `throwImmediately` has been removed
-
-The concept of "throwImmediately" has been removed from exceptions and error
-events. This control mechanism was used to stop a transfer of concurrent
-requests from completing. This can now be handled by throwing the exception or
-by cancelling a pool of requests or each outstanding future request
-individually.
-
-## headers event has been removed
-
-Removed the "headers" event. This event was only useful for changing the
-body a response once the headers of the response were known. You can implement
-a similar behavior in a number of ways. One example might be to use a
-FnStream that has access to the transaction being sent. For example, when the
-first byte is written, you could check if the response headers match your
-expectations, and if so, change the actual stream body that is being
-written to.
-
-## Updates to HTTP Messages
-
-Removed the `asArray` parameter from
-`GuzzleHttp\Message\MessageInterface::getHeader`. If you want to get a header
-value as an array, then use the newly added `getHeaderAsArray()` method of
-`MessageInterface`. This change makes the Guzzle interfaces compatible with
-the PSR-7 interfaces.
-
-3.x to 4.0
-----------
-
-## Overarching changes:
-
-- Now requires PHP 5.4 or greater.
-- No longer requires cURL to send requests.
-- Guzzle no longer wraps every exception it throws. Only exceptions that are
- recoverable are now wrapped by Guzzle.
-- Various namespaces have been removed or renamed.
-- No longer requiring the Symfony EventDispatcher. A custom event dispatcher
- based on the Symfony EventDispatcher is
- now utilized in `GuzzleHttp\Event\EmitterInterface` (resulting in significant
- speed and functionality improvements).
-
-Changes per Guzzle 3.x namespace are described below.
-
-## Batch
-
-The `Guzzle\Batch` namespace has been removed. This is best left to
-third-parties to implement on top of Guzzle's core HTTP library.
-
-## Cache
-
-The `Guzzle\Cache` namespace has been removed. (Todo: No suitable replacement
-has been implemented yet, but hoping to utilize a PSR cache interface).
-
-## Common
-
-- Removed all of the wrapped exceptions. It's better to use the standard PHP
- library for unrecoverable exceptions.
-- `FromConfigInterface` has been removed.
-- `Guzzle\Common\Version` has been removed. The VERSION constant can be found
- at `GuzzleHttp\ClientInterface::VERSION`.
-
-### Collection
-
-- `getAll` has been removed. Use `toArray` to convert a collection to an array.
-- `inject` has been removed.
-- `keySearch` has been removed.
-- `getPath` no longer supports wildcard expressions. Use something better like
- JMESPath for this.
-- `setPath` now supports appending to an existing array via the `[]` notation.
-
-### Events
-
-Guzzle no longer requires Symfony's EventDispatcher component. Guzzle now uses
-`GuzzleHttp\Event\Emitter`.
-
-- `Symfony\Component\EventDispatcher\EventDispatcherInterface` is replaced by
- `GuzzleHttp\Event\EmitterInterface`.
-- `Symfony\Component\EventDispatcher\EventDispatcher` is replaced by
- `GuzzleHttp\Event\Emitter`.
-- `Symfony\Component\EventDispatcher\Event` is replaced by
- `GuzzleHttp\Event\Event`, and Guzzle now has an EventInterface in
- `GuzzleHttp\Event\EventInterface`.
-- `AbstractHasDispatcher` has moved to a trait, `HasEmitterTrait`, and
- `HasDispatcherInterface` has moved to `HasEmitterInterface`. Retrieving the
- event emitter of a request, client, etc. now uses the `getEmitter` method
- rather than the `getDispatcher` method.
-
-#### Emitter
-
-- Use the `once()` method to add a listener that automatically removes itself
- the first time it is invoked.
-- Use the `listeners()` method to retrieve a list of event listeners rather than
- the `getListeners()` method.
-- Use `emit()` instead of `dispatch()` to emit an event from an emitter.
-- Use `attach()` instead of `addSubscriber()` and `detach()` instead of
- `removeSubscriber()`.
-
-```php
-$mock = new Mock();
-// 3.x
-$request->getEventDispatcher()->addSubscriber($mock);
-$request->getEventDispatcher()->removeSubscriber($mock);
-// 4.x
-$request->getEmitter()->attach($mock);
-$request->getEmitter()->detach($mock);
-```
-
-Use the `on()` method to add a listener rather than the `addListener()` method.
-
-```php
-// 3.x
-$request->getEventDispatcher()->addListener('foo', function (Event $event) { /* ... */ } );
-// 4.x
-$request->getEmitter()->on('foo', function (Event $event, $name) { /* ... */ } );
-```
-
-## Http
-
-### General changes
-
-- The cacert.pem certificate has been moved to `src/cacert.pem`.
-- Added the concept of adapters that are used to transfer requests over the
- wire.
-- Simplified the event system.
-- Sending requests in parallel is still possible, but batching is no longer a
- concept of the HTTP layer. Instead, you must use the `complete` and `error`
- events to asynchronously manage parallel request transfers.
-- `Guzzle\Http\Url` has moved to `GuzzleHttp\Url`.
-- `Guzzle\Http\QueryString` has moved to `GuzzleHttp\Query`.
-- QueryAggregators have been rewritten so that they are simply callable
- functions.
-- `GuzzleHttp\StaticClient` has been removed. Use the functions provided in
- `functions.php` for an easy to use static client instance.
-- Exceptions in `GuzzleHttp\Exception` have been updated to all extend from
- `GuzzleHttp\Exception\TransferException`.
-
-### Client
-
-Calling methods like `get()`, `post()`, `head()`, etc. no longer create and
-return a request, but rather creates a request, sends the request, and returns
-the response.
-
-```php
-// 3.0
-$request = $client->get('/');
-$response = $request->send();
-
-// 4.0
-$response = $client->get('/');
-
-// or, to mirror the previous behavior
-$request = $client->createRequest('GET', '/');
-$response = $client->send($request);
-```
-
-`GuzzleHttp\ClientInterface` has changed.
-
-- The `send` method no longer accepts more than one request. Use `sendAll` to
- send multiple requests in parallel.
-- `setUserAgent()` has been removed. Use a default request option instead. You
- could, for example, do something like:
- `$client->setConfig('defaults/headers/User-Agent', 'Foo/Bar ' . $client::getDefaultUserAgent())`.
-- `setSslVerification()` has been removed. Use default request options instead,
- like `$client->setConfig('defaults/verify', true)`.
-
-`GuzzleHttp\Client` has changed.
-
-- The constructor now accepts only an associative array. You can include a
- `base_url` string or array to use a URI template as the base URL of a client.
- You can also specify a `defaults` key that is an associative array of default
- request options. You can pass an `adapter` to use a custom adapter,
- `batch_adapter` to use a custom adapter for sending requests in parallel, or
- a `message_factory` to change the factory used to create HTTP requests and
- responses.
-- The client no longer emits a `client.create_request` event.
-- Creating requests with a client no longer automatically utilize a URI
- template. You must pass an array into a creational method (e.g.,
- `createRequest`, `get`, `put`, etc.) in order to expand a URI template.
-
-### Messages
-
-Messages no longer have references to their counterparts (i.e., a request no
-longer has a reference to it's response, and a response no loger has a
-reference to its request). This association is now managed through a
-`GuzzleHttp\Adapter\TransactionInterface` object. You can get references to
-these transaction objects using request events that are emitted over the
-lifecycle of a request.
-
-#### Requests with a body
-
-- `GuzzleHttp\Message\EntityEnclosingRequest` and
- `GuzzleHttp\Message\EntityEnclosingRequestInterface` have been removed. The
- separation between requests that contain a body and requests that do not
- contain a body has been removed, and now `GuzzleHttp\Message\RequestInterface`
- handles both use cases.
-- Any method that previously accepts a `GuzzleHttp\Response` object now accept a
- `GuzzleHttp\Message\ResponseInterface`.
-- `GuzzleHttp\Message\RequestFactoryInterface` has been renamed to
- `GuzzleHttp\Message\MessageFactoryInterface`. This interface is used to create
- both requests and responses and is implemented in
- `GuzzleHttp\Message\MessageFactory`.
-- POST field and file methods have been removed from the request object. You
- must now use the methods made available to `GuzzleHttp\Post\PostBodyInterface`
- to control the format of a POST body. Requests that are created using a
- standard `GuzzleHttp\Message\MessageFactoryInterface` will automatically use
- a `GuzzleHttp\Post\PostBody` body if the body was passed as an array or if
- the method is POST and no body is provided.
-
-```php
-$request = $client->createRequest('POST', '/');
-$request->getBody()->setField('foo', 'bar');
-$request->getBody()->addFile(new PostFile('file_key', fopen('/path/to/content', 'r')));
-```
-
-#### Headers
-
-- `GuzzleHttp\Message\Header` has been removed. Header values are now simply
- represented by an array of values or as a string. Header values are returned
- as a string by default when retrieving a header value from a message. You can
- pass an optional argument of `true` to retrieve a header value as an array
- of strings instead of a single concatenated string.
-- `GuzzleHttp\PostFile` and `GuzzleHttp\PostFileInterface` have been moved to
- `GuzzleHttp\Post`. This interface has been simplified and now allows the
- addition of arbitrary headers.
-- Custom headers like `GuzzleHttp\Message\Header\Link` have been removed. Most
- of the custom headers are now handled separately in specific
- subscribers/plugins, and `GuzzleHttp\Message\HeaderValues::parseParams()` has
- been updated to properly handle headers that contain parameters (like the
- `Link` header).
-
-#### Responses
-
-- `GuzzleHttp\Message\Response::getInfo()` and
- `GuzzleHttp\Message\Response::setInfo()` have been removed. Use the event
- system to retrieve this type of information.
-- `GuzzleHttp\Message\Response::getRawHeaders()` has been removed.
-- `GuzzleHttp\Message\Response::getMessage()` has been removed.
-- `GuzzleHttp\Message\Response::calculateAge()` and other cache specific
- methods have moved to the CacheSubscriber.
-- Header specific helper functions like `getContentMd5()` have been removed.
- Just use `getHeader('Content-MD5')` instead.
-- `GuzzleHttp\Message\Response::setRequest()` and
- `GuzzleHttp\Message\Response::getRequest()` have been removed. Use the event
- system to work with request and response objects as a transaction.
-- `GuzzleHttp\Message\Response::getRedirectCount()` has been removed. Use the
- Redirect subscriber instead.
-- `GuzzleHttp\Message\Response::isSuccessful()` and other related methods have
- been removed. Use `getStatusCode()` instead.
-
-#### Streaming responses
-
-Streaming requests can now be created by a client directly, returning a
-`GuzzleHttp\Message\ResponseInterface` object that contains a body stream
-referencing an open PHP HTTP stream.
-
-```php
-// 3.0
-use Guzzle\Stream\PhpStreamRequestFactory;
-$request = $client->get('/');
-$factory = new PhpStreamRequestFactory();
-$stream = $factory->fromRequest($request);
-$data = $stream->read(1024);
-
-// 4.0
-$response = $client->get('/', ['stream' => true]);
-// Read some data off of the stream in the response body
-$data = $response->getBody()->read(1024);
-```
-
-#### Redirects
-
-The `configureRedirects()` method has been removed in favor of a
-`allow_redirects` request option.
-
-```php
-// Standard redirects with a default of a max of 5 redirects
-$request = $client->createRequest('GET', '/', ['allow_redirects' => true]);
-
-// Strict redirects with a custom number of redirects
-$request = $client->createRequest('GET', '/', [
- 'allow_redirects' => ['max' => 5, 'strict' => true]
-]);
-```
-
-#### EntityBody
-
-EntityBody interfaces and classes have been removed or moved to
-`GuzzleHttp\Stream`. All classes and interfaces that once required
-`GuzzleHttp\EntityBodyInterface` now require
-`GuzzleHttp\Stream\StreamInterface`. Creating a new body for a request no
-longer uses `GuzzleHttp\EntityBody::factory` but now uses
-`GuzzleHttp\Stream\Stream::factory` or even better:
-`GuzzleHttp\Stream\create()`.
-
-- `Guzzle\Http\EntityBodyInterface` is now `GuzzleHttp\Stream\StreamInterface`
-- `Guzzle\Http\EntityBody` is now `GuzzleHttp\Stream\Stream`
-- `Guzzle\Http\CachingEntityBody` is now `GuzzleHttp\Stream\CachingStream`
-- `Guzzle\Http\ReadLimitEntityBody` is now `GuzzleHttp\Stream\LimitStream`
-- `Guzzle\Http\IoEmittyinEntityBody` has been removed.
-
-#### Request lifecycle events
-
-Requests previously submitted a large number of requests. The number of events
-emitted over the lifecycle of a request has been significantly reduced to make
-it easier to understand how to extend the behavior of a request. All events
-emitted during the lifecycle of a request now emit a custom
-`GuzzleHttp\Event\EventInterface` object that contains context providing
-methods and a way in which to modify the transaction at that specific point in
-time (e.g., intercept the request and set a response on the transaction).
-
-- `request.before_send` has been renamed to `before` and now emits a
- `GuzzleHttp\Event\BeforeEvent`
-- `request.complete` has been renamed to `complete` and now emits a
- `GuzzleHttp\Event\CompleteEvent`.
-- `request.sent` has been removed. Use `complete`.
-- `request.success` has been removed. Use `complete`.
-- `error` is now an event that emits a `GuzzleHttp\Event\ErrorEvent`.
-- `request.exception` has been removed. Use `error`.
-- `request.receive.status_line` has been removed.
-- `curl.callback.progress` has been removed. Use a custom `StreamInterface` to
- maintain a status update.
-- `curl.callback.write` has been removed. Use a custom `StreamInterface` to
- intercept writes.
-- `curl.callback.read` has been removed. Use a custom `StreamInterface` to
- intercept reads.
-
-`headers` is a new event that is emitted after the response headers of a
-request have been received before the body of the response is downloaded. This
-event emits a `GuzzleHttp\Event\HeadersEvent`.
-
-You can intercept a request and inject a response using the `intercept()` event
-of a `GuzzleHttp\Event\BeforeEvent`, `GuzzleHttp\Event\CompleteEvent`, and
-`GuzzleHttp\Event\ErrorEvent` event.
-
-See: http://docs.guzzlephp.org/en/latest/events.html
-
-## Inflection
-
-The `Guzzle\Inflection` namespace has been removed. This is not a core concern
-of Guzzle.
-
-## Iterator
-
-The `Guzzle\Iterator` namespace has been removed.
-
-- `Guzzle\Iterator\AppendIterator`, `Guzzle\Iterator\ChunkedIterator`, and
- `Guzzle\Iterator\MethodProxyIterator` are nice, but not a core requirement of
- Guzzle itself.
-- `Guzzle\Iterator\FilterIterator` is no longer needed because an equivalent
- class is shipped with PHP 5.4.
-- `Guzzle\Iterator\MapIterator` is not really needed when using PHP 5.5 because
- it's easier to just wrap an iterator in a generator that maps values.
-
-For a replacement of these iterators, see https://github.com/nikic/iter
-
-## Log
-
-The LogPlugin has moved to https://github.com/guzzle/log-subscriber. The
-`Guzzle\Log` namespace has been removed. Guzzle now relies on
-`Psr\Log\LoggerInterface` for all logging. The MessageFormatter class has been
-moved to `GuzzleHttp\Subscriber\Log\Formatter`.
-
-## Parser
-
-The `Guzzle\Parser` namespace has been removed. This was previously used to
-make it possible to plug in custom parsers for cookies, messages, URI
-templates, and URLs; however, this level of complexity is not needed in Guzzle
-so it has been removed.
-
-- Cookie: Cookie parsing logic has been moved to
- `GuzzleHttp\Cookie\SetCookie::fromString`.
-- Message: Message parsing logic for both requests and responses has been moved
- to `GuzzleHttp\Message\MessageFactory::fromMessage`. Message parsing is only
- used in debugging or deserializing messages, so it doesn't make sense for
- Guzzle as a library to add this level of complexity to parsing messages.
-- UriTemplate: URI template parsing has been moved to
- `GuzzleHttp\UriTemplate`. The Guzzle library will automatically use the PECL
- URI template library if it is installed.
-- Url: URL parsing is now performed in `GuzzleHttp\Url::fromString` (previously
- it was `Guzzle\Http\Url::factory()`). If custom URL parsing is necessary,
- then developers are free to subclass `GuzzleHttp\Url`.
-
-## Plugin
-
-The `Guzzle\Plugin` namespace has been renamed to `GuzzleHttp\Subscriber`.
-Several plugins are shipping with the core Guzzle library under this namespace.
-
-- `GuzzleHttp\Subscriber\Cookie`: Replaces the old CookiePlugin. Cookie jar
- code has moved to `GuzzleHttp\Cookie`.
-- `GuzzleHttp\Subscriber\History`: Replaces the old HistoryPlugin.
-- `GuzzleHttp\Subscriber\HttpError`: Throws errors when a bad HTTP response is
- received.
-- `GuzzleHttp\Subscriber\Mock`: Replaces the old MockPlugin.
-- `GuzzleHttp\Subscriber\Prepare`: Prepares the body of a request just before
- sending. This subscriber is attached to all requests by default.
-- `GuzzleHttp\Subscriber\Redirect`: Replaces the RedirectPlugin.
-
-The following plugins have been removed (third-parties are free to re-implement
-these if needed):
-
-- `GuzzleHttp\Plugin\Async` has been removed.
-- `GuzzleHttp\Plugin\CurlAuth` has been removed.
-- `GuzzleHttp\Plugin\ErrorResponse\ErrorResponsePlugin` has been removed. This
- functionality should instead be implemented with event listeners that occur
- after normal response parsing occurs in the guzzle/command package.
-
-The following plugins are not part of the core Guzzle package, but are provided
-in separate repositories:
-
-- `Guzzle\Http\Plugin\BackoffPlugin` has been rewritten to be much simpler
- to build custom retry policies using simple functions rather than various
- chained classes. See: https://github.com/guzzle/retry-subscriber
-- `Guzzle\Http\Plugin\Cache\CachePlugin` has moved to
- https://github.com/guzzle/cache-subscriber
-- `Guzzle\Http\Plugin\Log\LogPlugin` has moved to
- https://github.com/guzzle/log-subscriber
-- `Guzzle\Http\Plugin\Md5\Md5Plugin` has moved to
- https://github.com/guzzle/message-integrity-subscriber
-- `Guzzle\Http\Plugin\Mock\MockPlugin` has moved to
- `GuzzleHttp\Subscriber\MockSubscriber`.
-- `Guzzle\Http\Plugin\Oauth\OauthPlugin` has moved to
- https://github.com/guzzle/oauth-subscriber
-
-## Service
-
-The service description layer of Guzzle has moved into two separate packages:
-
-- http://github.com/guzzle/command Provides a high level abstraction over web
- services by representing web service operations using commands.
-- http://github.com/guzzle/guzzle-services Provides an implementation of
- guzzle/command that provides request serialization and response parsing using
- Guzzle service descriptions.
-
-## Stream
-
-Stream have moved to a separate package available at
-https://github.com/guzzle/streams.
-
-`Guzzle\Stream\StreamInterface` has been given a large update to cleanly take
-on the responsibilities of `Guzzle\Http\EntityBody` and
-`Guzzle\Http\EntityBodyInterface` now that they have been removed. The number
-of methods implemented by the `StreamInterface` has been drastically reduced to
-allow developers to more easily extend and decorate stream behavior.
-
-## Removed methods from StreamInterface
-
-- `getStream` and `setStream` have been removed to better encapsulate streams.
-- `getMetadata` and `setMetadata` have been removed in favor of
- `GuzzleHttp\Stream\MetadataStreamInterface`.
-- `getWrapper`, `getWrapperData`, `getStreamType`, and `getUri` have all been
- removed. This data is accessible when
- using streams that implement `GuzzleHttp\Stream\MetadataStreamInterface`.
-- `rewind` has been removed. Use `seek(0)` for a similar behavior.
-
-## Renamed methods
-
-- `detachStream` has been renamed to `detach`.
-- `feof` has been renamed to `eof`.
-- `ftell` has been renamed to `tell`.
-- `readLine` has moved from an instance method to a static class method of
- `GuzzleHttp\Stream\Stream`.
-
-## Metadata streams
-
-`GuzzleHttp\Stream\MetadataStreamInterface` has been added to denote streams
-that contain additional metadata accessible via `getMetadata()`.
-`GuzzleHttp\Stream\StreamInterface::getMetadata` and
-`GuzzleHttp\Stream\StreamInterface::setMetadata` have been removed.
-
-## StreamRequestFactory
-
-The entire concept of the StreamRequestFactory has been removed. The way this
-was used in Guzzle 3 broke the actual interface of sending streaming requests
-(instead of getting back a Response, you got a StreamInterface). Streaming
-PHP requests are now implemented through the `GuzzleHttp\Adapter\StreamAdapter`.
-
-3.6 to 3.7
-----------
-
-### Deprecations
-
-- You can now enable E_USER_DEPRECATED warnings to see if you are using any deprecated methods.:
-
-```php
-\Guzzle\Common\Version::$emitWarnings = true;
-```
-
-The following APIs and options have been marked as deprecated:
-
-- Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use `$request->getResponseBody()->isRepeatable()` instead.
-- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-- Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead.
-- Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead.
-- Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated
-- Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client.
-- Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8.
-- Marked `Guzzle\Common\Collection::inject()` as deprecated.
-- Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use
- `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));` or
- `$client->setDefaultOption('auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));`
-
-3.7 introduces `request.options` as a parameter for a client configuration and as an optional argument to all creational
-request methods. When paired with a client's configuration settings, these options allow you to specify default settings
-for various aspects of a request. Because these options make other previous configuration options redundant, several
-configuration options and methods of a client and AbstractCommand have been deprecated.
-
-- Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use `$client->getDefaultOption('headers')`.
-- Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use `$client->setDefaultOption('headers/{header_name}', 'value')`.
-- Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use `$client->setDefaultOption('params/{param_name}', 'value')`
-- Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand. These will work through Guzzle 4.0
-
- $command = $client->getCommand('foo', array(
- 'command.headers' => array('Test' => '123'),
- 'command.response_body' => '/path/to/file'
- ));
-
- // Should be changed to:
-
- $command = $client->getCommand('foo', array(
- 'command.request_options' => array(
- 'headers' => array('Test' => '123'),
- 'save_as' => '/path/to/file'
- )
- ));
-
-### Interface changes
-
-Additions and changes (you will need to update any implementations or subclasses you may have created):
-
-- Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`:
- createRequest, head, delete, put, patch, post, options, prepareRequest
-- Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()`
-- Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface`
-- Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to
- `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a
- resource, string, or EntityBody into the $options parameter to specify the download location of the response.
-- Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a
- default `array()`
-- Added `Guzzle\Stream\StreamInterface::isRepeatable`
-- Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods.
-
-The following methods were removed from interfaces. All of these methods are still available in the concrete classes
-that implement them, but you should update your code to use alternative methods:
-
-- Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use
- `$client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or
- `$client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))` or
- `$client->setDefaultOption('headers/{header_name}', 'value')`. or
- `$client->setDefaultOption('headers', array('header_name' => 'value'))`.
-- Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use `$client->getConfig()->getPath('request.options/headers')`.
-- Removed `Guzzle\Http\ClientInterface::expandTemplate()`. This is an implementation detail.
-- Removed `Guzzle\Http\ClientInterface::setRequestFactory()`. This is an implementation detail.
-- Removed `Guzzle\Http\ClientInterface::getCurlMulti()`. This is a very specific implementation detail.
-- Removed `Guzzle\Http\Message\RequestInterface::canCache`. Use the CachePlugin.
-- Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect`. Use the HistoryPlugin.
-- Removed `Guzzle\Http\Message\RequestInterface::isRedirect`. Use the HistoryPlugin.
-
-### Cache plugin breaking changes
-
-- CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a
- CacheStorageInterface. These two objects and interface will be removed in a future version.
-- Always setting X-cache headers on cached responses
-- Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin
-- `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface
- $request, Response $response);`
-- `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);`
-- `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);`
-- Added `CacheStorageInterface::purge($url)`
-- `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin
- $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache,
- CanCacheStrategyInterface $canCache = null)`
-- Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)`
-
-3.5 to 3.6
-----------
-
-* Mixed casing of headers are now forced to be a single consistent casing across all values for that header.
-* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution
-* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader().
- For example, setHeader() first removes the header using unset on a HeaderCollection and then calls addHeader().
- Keeping the Host header and URL host in sync is now handled by overriding the addHeader method in Request.
-* Specific header implementations can be created for complex headers. When a message creates a header, it uses a
- HeaderFactory which can map specific headers to specific header classes. There is now a Link header and
- CacheControl header implementation.
-* Moved getLinks() from Response to just be used on a Link header object.
-
-If you previously relied on Guzzle\Http\Message\Header::raw(), then you will need to update your code to use the
-HeaderInterface (e.g. toArray(), getAll(), etc.).
-
-### Interface changes
-
-* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate
-* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti()
-* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in
- Guzzle\Http\Curl\RequestMediator
-* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string.
-* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface
-* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders()
-
-### Removed deprecated functions
-
-* Removed Guzzle\Parser\ParserRegister::get(). Use getParser()
-* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser().
-
-### Deprecations
-
-* The ability to case-insensitively search for header values
-* Guzzle\Http\Message\Header::hasExactHeader
-* Guzzle\Http\Message\Header::raw. Use getAll()
-* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object
- instead.
-
-### Other changes
-
-* All response header helper functions return a string rather than mixing Header objects and strings inconsistently
-* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle
- directly via interfaces
-* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist
- but are a no-op until removed.
-* Most classes that used to require a `Guzzle\Service\Command\CommandInterface` typehint now request a
- `Guzzle\Service\Command\ArrayCommandInterface`.
-* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response
- on a request while the request is still being transferred
-* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess
-
-3.3 to 3.4
-----------
-
-Base URLs of a client now follow the rules of http://tools.ietf.org/html/rfc3986#section-5.2.2 when merging URLs.
-
-3.2 to 3.3
-----------
-
-### Response::getEtag() quote stripping removed
-
-`Guzzle\Http\Message\Response::getEtag()` no longer strips quotes around the ETag response header
-
-### Removed `Guzzle\Http\Utils`
-
-The `Guzzle\Http\Utils` class was removed. This class was only used for testing.
-
-### Stream wrapper and type
-
-`Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getStreamType()` are no longer converted to lowercase.
-
-### curl.emit_io became emit_io
-
-Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using the
-'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io'
-
-3.1 to 3.2
-----------
-
-### CurlMulti is no longer reused globally
-
-Before 3.2, the same CurlMulti object was reused globally for each client. This can cause issue where plugins added
-to a single client can pollute requests dispatched from other clients.
-
-If you still wish to reuse the same CurlMulti object with each client, then you can add a listener to the
-ServiceBuilder's `service_builder.create_client` event to inject a custom CurlMulti object into each client as it is
-created.
-
-```php
-$multi = new Guzzle\Http\Curl\CurlMulti();
-$builder = Guzzle\Service\Builder\ServiceBuilder::factory('/path/to/config.json');
-$builder->addListener('service_builder.create_client', function ($event) use ($multi) {
- $event['client']->setCurlMulti($multi);
-}
-});
-```
-
-### No default path
-
-URLs no longer have a default path value of '/' if no path was specified.
-
-Before:
-
-```php
-$request = $client->get('http://www.foo.com');
-echo $request->getUrl();
-// >> http://www.foo.com/
-```
-
-After:
-
-```php
-$request = $client->get('http://www.foo.com');
-echo $request->getUrl();
-// >> http://www.foo.com
-```
-
-### Less verbose BadResponseException
-
-The exception message for `Guzzle\Http\Exception\BadResponseException` no longer contains the full HTTP request and
-response information. You can, however, get access to the request and response object by calling `getRequest()` or
-`getResponse()` on the exception object.
-
-### Query parameter aggregation
-
-Multi-valued query parameters are no longer aggregated using a callback function. `Guzzle\Http\Query` now has a
-setAggregator() method that accepts a `Guzzle\Http\QueryAggregator\QueryAggregatorInterface` object. This object is
-responsible for handling the aggregation of multi-valued query string variables into a flattened hash.
-
-2.8 to 3.x
-----------
-
-### Guzzle\Service\Inspector
-
-Change `\Guzzle\Service\Inspector::fromConfig` to `\Guzzle\Common\Collection::fromConfig`
-
-**Before**
-
-```php
-use Guzzle\Service\Inspector;
-
-class YourClient extends \Guzzle\Service\Client
-{
- public static function factory($config = array())
- {
- $default = array();
- $required = array('base_url', 'username', 'api_key');
- $config = Inspector::fromConfig($config, $default, $required);
-
- $client = new self(
- $config->get('base_url'),
- $config->get('username'),
- $config->get('api_key')
- );
- $client->setConfig($config);
-
- $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json'));
-
- return $client;
- }
-```
-
-**After**
-
-```php
-use Guzzle\Common\Collection;
-
-class YourClient extends \Guzzle\Service\Client
-{
- public static function factory($config = array())
- {
- $default = array();
- $required = array('base_url', 'username', 'api_key');
- $config = Collection::fromConfig($config, $default, $required);
-
- $client = new self(
- $config->get('base_url'),
- $config->get('username'),
- $config->get('api_key')
- );
- $client->setConfig($config);
-
- $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json'));
-
- return $client;
- }
-```
-
-### Convert XML Service Descriptions to JSON
-
-**Before**
-
-```xml
-<?xml version="1.0" encoding="UTF-8"?>
-<client>
- <commands>
- <!-- Groups -->
- <command name="list_groups" method="GET" uri="groups.json">
- <doc>Get a list of groups</doc>
- </command>
- <command name="search_groups" method="GET" uri='search.json?query="{{query}} type:group"'>
- <doc>Uses a search query to get a list of groups</doc>
- <param name="query" type="string" required="true" />
- </command>
- <command name="create_group" method="POST" uri="groups.json">
- <doc>Create a group</doc>
- <param name="data" type="array" location="body" filters="json_encode" doc="Group JSON"/>
- <param name="Content-Type" location="header" static="application/json"/>
- </command>
- <command name="delete_group" method="DELETE" uri="groups/{{id}}.json">
- <doc>Delete a group by ID</doc>
- <param name="id" type="integer" required="true"/>
- </command>
- <command name="get_group" method="GET" uri="groups/{{id}}.json">
- <param name="id" type="integer" required="true"/>
- </command>
- <command name="update_group" method="PUT" uri="groups/{{id}}.json">
- <doc>Update a group</doc>
- <param name="id" type="integer" required="true"/>
- <param name="data" type="array" location="body" filters="json_encode" doc="Group JSON"/>
- <param name="Content-Type" location="header" static="application/json"/>
- </command>
- </commands>
-</client>
-```
-
-**After**
-
-```json
-{
- "name": "Zendesk REST API v2",
- "apiVersion": "2012-12-31",
- "description":"Provides access to Zendesk views, groups, tickets, ticket fields, and users",
- "operations": {
- "list_groups": {
- "httpMethod":"GET",
- "uri": "groups.json",
- "summary": "Get a list of groups"
- },
- "search_groups":{
- "httpMethod":"GET",
- "uri": "search.json?query=\"{query} type:group\"",
- "summary": "Uses a search query to get a list of groups",
- "parameters":{
- "query":{
- "location": "uri",
- "description":"Zendesk Search Query",
- "type": "string",
- "required": true
- }
- }
- },
- "create_group": {
- "httpMethod":"POST",
- "uri": "groups.json",
- "summary": "Create a group",
- "parameters":{
- "data": {
- "type": "array",
- "location": "body",
- "description":"Group JSON",
- "filters": "json_encode",
- "required": true
- },
- "Content-Type":{
- "type": "string",
- "location":"header",
- "static": "application/json"
- }
- }
- },
- "delete_group": {
- "httpMethod":"DELETE",
- "uri": "groups/{id}.json",
- "summary": "Delete a group",
- "parameters":{
- "id":{
- "location": "uri",
- "description":"Group to delete by ID",
- "type": "integer",
- "required": true
- }
- }
- },
- "get_group": {
- "httpMethod":"GET",
- "uri": "groups/{id}.json",
- "summary": "Get a ticket",
- "parameters":{
- "id":{
- "location": "uri",
- "description":"Group to get by ID",
- "type": "integer",
- "required": true
- }
- }
- },
- "update_group": {
- "httpMethod":"PUT",
- "uri": "groups/{id}.json",
- "summary": "Update a group",
- "parameters":{
- "id": {
- "location": "uri",
- "description":"Group to update by ID",
- "type": "integer",
- "required": true
- },
- "data": {
- "type": "array",
- "location": "body",
- "description":"Group JSON",
- "filters": "json_encode",
- "required": true
- },
- "Content-Type":{
- "type": "string",
- "location":"header",
- "static": "application/json"
- }
- }
- }
-}
-```
-
-### Guzzle\Service\Description\ServiceDescription
-
-Commands are now called Operations
-
-**Before**
-
-```php
-use Guzzle\Service\Description\ServiceDescription;
-
-$sd = new ServiceDescription();
-$sd->getCommands(); // @returns ApiCommandInterface[]
-$sd->hasCommand($name);
-$sd->getCommand($name); // @returns ApiCommandInterface|null
-$sd->addCommand($command); // @param ApiCommandInterface $command
-```
-
-**After**
-
-```php
-use Guzzle\Service\Description\ServiceDescription;
-
-$sd = new ServiceDescription();
-$sd->getOperations(); // @returns OperationInterface[]
-$sd->hasOperation($name);
-$sd->getOperation($name); // @returns OperationInterface|null
-$sd->addOperation($operation); // @param OperationInterface $operation
-```
-
-### Guzzle\Common\Inflection\Inflector
-
-Namespace is now `Guzzle\Inflection\Inflector`
-
-### Guzzle\Http\Plugin
-
-Namespace is now `Guzzle\Plugin`. Many other changes occur within this namespace and are detailed in their own sections below.
-
-### Guzzle\Http\Plugin\LogPlugin and Guzzle\Common\Log
-
-Now `Guzzle\Plugin\Log\LogPlugin` and `Guzzle\Log` respectively.
-
-**Before**
-
-```php
-use Guzzle\Common\Log\ClosureLogAdapter;
-use Guzzle\Http\Plugin\LogPlugin;
-
-/** @var \Guzzle\Http\Client */
-$client;
-
-// $verbosity is an integer indicating desired message verbosity level
-$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $verbosity = LogPlugin::LOG_VERBOSE);
-```
-
-**After**
-
-```php
-use Guzzle\Log\ClosureLogAdapter;
-use Guzzle\Log\MessageFormatter;
-use Guzzle\Plugin\Log\LogPlugin;
-
-/** @var \Guzzle\Http\Client */
-$client;
-
-// $format is a string indicating desired message format -- @see MessageFormatter
-$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $format = MessageFormatter::DEBUG_FORMAT);
-```
-
-### Guzzle\Http\Plugin\CurlAuthPlugin
-
-Now `Guzzle\Plugin\CurlAuth\CurlAuthPlugin`.
-
-### Guzzle\Http\Plugin\ExponentialBackoffPlugin
-
-Now `Guzzle\Plugin\Backoff\BackoffPlugin`, and other changes.
-
-**Before**
-
-```php
-use Guzzle\Http\Plugin\ExponentialBackoffPlugin;
-
-$backoffPlugin = new ExponentialBackoffPlugin($maxRetries, array_merge(
- ExponentialBackoffPlugin::getDefaultFailureCodes(), array(429)
- ));
-
-$client->addSubscriber($backoffPlugin);
-```
-
-**After**
-
-```php
-use Guzzle\Plugin\Backoff\BackoffPlugin;
-use Guzzle\Plugin\Backoff\HttpBackoffStrategy;
-
-// Use convenient factory method instead -- see implementation for ideas of what
-// you can do with chaining backoff strategies
-$backoffPlugin = BackoffPlugin::getExponentialBackoff($maxRetries, array_merge(
- HttpBackoffStrategy::getDefaultFailureCodes(), array(429)
- ));
-$client->addSubscriber($backoffPlugin);
-```
-
-### Known Issues
-
-#### [BUG] Accept-Encoding header behavior changed unintentionally.
-
-(See #217) (Fixed in 09daeb8c666fb44499a0646d655a8ae36456575e)
-
-In version 2.8 setting the `Accept-Encoding` header would set the CURLOPT_ENCODING option, which permitted cURL to
-properly handle gzip/deflate compressed responses from the server. In versions affected by this bug this does not happen.
-See issue #217 for a workaround, or use a version containing the fix.
diff --git a/vendor/guzzlehttp/guzzle/composer.json b/vendor/guzzlehttp/guzzle/composer.json
deleted file mode 100644
index c01864f..0000000
--- a/vendor/guzzlehttp/guzzle/composer.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- "name": "guzzlehttp/guzzle",
- "type": "library",
- "description": "Guzzle is a PHP HTTP client library",
- "keywords": [
- "framework",
- "http",
- "rest",
- "web service",
- "curl",
- "client",
- "HTTP client"
- ],
- "homepage": "http://guzzlephp.org/",
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "[email protected]",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.5",
- "ext-json": "*",
- "symfony/polyfill-intl-idn": "^1.17.0",
- "guzzlehttp/promises": "^1.0",
- "guzzlehttp/psr7": "^1.6.1"
- },
- "require-dev": {
- "ext-curl": "*",
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
- "psr/log": "^1.1"
- },
- "suggest": {
- "psr/log": "Required for using the Log middleware"
- },
- "config": {
- "sort-packages": true
- },
- "extra": {
- "branch-alias": {
- "dev-master": "6.5-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "autoload-dev": {
- "psr-4": {
- "GuzzleHttp\\Tests\\": "tests/"
- }
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Client.php b/vendor/guzzlehttp/guzzle/src/Client.php
deleted file mode 100644
index 315a022..0000000
--- a/vendor/guzzlehttp/guzzle/src/Client.php
+++ /dev/null
@@ -1,501 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Cookie\CookieJar;
-use GuzzleHttp\Exception\GuzzleException;
-use GuzzleHttp\Promise;
-use GuzzleHttp\Psr7;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * @method ResponseInterface get(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface head(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface put(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface post(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface patch(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface delete(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface getAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface headAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface putAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface postAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface patchAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface deleteAsync(string|UriInterface $uri, array $options = [])
- */
-class Client implements ClientInterface
-{
- /** @var array Default request options */
- private $config;
-
- /**
- * Clients accept an array of constructor parameters.
- *
- * Here's an example of creating a client using a base_uri and an array of
- * default request options to apply to each request:
- *
- * $client = new Client([
- * 'base_uri' => 'http://www.foo.com/1.0/',
- * 'timeout' => 0,
- * 'allow_redirects' => false,
- * 'proxy' => '192.168.16.1:10'
- * ]);
- *
- * Client configuration settings include the following options:
- *
- * - handler: (callable) Function that transfers HTTP requests over the
- * wire. The function is called with a Psr7\Http\Message\RequestInterface
- * and array of transfer options, and must return a
- * GuzzleHttp\Promise\PromiseInterface that is fulfilled with a
- * Psr7\Http\Message\ResponseInterface on success.
- * If no handler is provided, a default handler will be created
- * that enables all of the request options below by attaching all of the
- * default middleware to the handler.
- * - base_uri: (string|UriInterface) Base URI of the client that is merged
- * into relative URIs. Can be a string or instance of UriInterface.
- * - **: any request option
- *
- * @param array $config Client configuration settings.
- *
- * @see \GuzzleHttp\RequestOptions for a list of available request options.
- */
- public function __construct(array $config = [])
- {
- if (!isset($config['handler'])) {
- $config['handler'] = HandlerStack::create();
- } elseif (!is_callable($config['handler'])) {
- throw new \InvalidArgumentException('handler must be a callable');
- }
-
- // Convert the base_uri to a UriInterface
- if (isset($config['base_uri'])) {
- $config['base_uri'] = Psr7\uri_for($config['base_uri']);
- }
-
- $this->configureDefaults($config);
- }
-
- /**
- * @param string $method
- * @param array $args
- *
- * @return Promise\PromiseInterface
- */
- public function __call($method, $args)
- {
- if (count($args) < 1) {
- throw new \InvalidArgumentException('Magic request methods require a URI and optional options array');
- }
-
- $uri = $args[0];
- $opts = isset($args[1]) ? $args[1] : [];
-
- return substr($method, -5) === 'Async'
- ? $this->requestAsync(substr($method, 0, -5), $uri, $opts)
- : $this->request($method, $uri, $opts);
- }
-
- /**
- * Asynchronously send an HTTP request.
- *
- * @param array $options Request options to apply to the given
- * request and to the transfer. See \GuzzleHttp\RequestOptions.
- *
- * @return Promise\PromiseInterface
- */
- public function sendAsync(RequestInterface $request, array $options = [])
- {
- // Merge the base URI into the request URI if needed.
- $options = $this->prepareDefaults($options);
-
- return $this->transfer(
- $request->withUri($this->buildUri($request->getUri(), $options), $request->hasHeader('Host')),
- $options
- );
- }
-
- /**
- * Send an HTTP request.
- *
- * @param array $options Request options to apply to the given
- * request and to the transfer. See \GuzzleHttp\RequestOptions.
- *
- * @return ResponseInterface
- * @throws GuzzleException
- */
- public function send(RequestInterface $request, array $options = [])
- {
- $options[RequestOptions::SYNCHRONOUS] = true;
- return $this->sendAsync($request, $options)->wait();
- }
-
- /**
- * Create and send an asynchronous HTTP request.
- *
- * Use an absolute path to override the base path of the client, or a
- * relative path to append to the base path of the client. The URL can
- * contain the query string as well. Use an array to provide a URL
- * template and additional variables to use in the URL template expansion.
- *
- * @param string $method HTTP method
- * @param string|UriInterface $uri URI object or string.
- * @param array $options Request options to apply. See \GuzzleHttp\RequestOptions.
- *
- * @return Promise\PromiseInterface
- */
- public function requestAsync($method, $uri = '', array $options = [])
- {
- $options = $this->prepareDefaults($options);
- // Remove request modifying parameter because it can be done up-front.
- $headers = isset($options['headers']) ? $options['headers'] : [];
- $body = isset($options['body']) ? $options['body'] : null;
- $version = isset($options['version']) ? $options['version'] : '1.1';
- // Merge the URI into the base URI.
- $uri = $this->buildUri($uri, $options);
- if (is_array($body)) {
- $this->invalidBody();
- }
- $request = new Psr7\Request($method, $uri, $headers, $body, $version);
- // Remove the option so that they are not doubly-applied.
- unset($options['headers'], $options['body'], $options['version']);
-
- return $this->transfer($request, $options);
- }
-
- /**
- * Create and send an HTTP request.
- *
- * Use an absolute path to override the base path of the client, or a
- * relative path to append to the base path of the client. The URL can
- * contain the query string as well.
- *
- * @param string $method HTTP method.
- * @param string|UriInterface $uri URI object or string.
- * @param array $options Request options to apply. See \GuzzleHttp\RequestOptions.
- *
- * @return ResponseInterface
- * @throws GuzzleException
- */
- public function request($method, $uri = '', array $options = [])
- {
- $options[RequestOptions::SYNCHRONOUS] = true;
- return $this->requestAsync($method, $uri, $options)->wait();
- }
-
- /**
- * Get a client configuration option.
- *
- * These options include default request options of the client, a "handler"
- * (if utilized by the concrete client), and a "base_uri" if utilized by
- * the concrete client.
- *
- * @param string|null $option The config option to retrieve.
- *
- * @return mixed
- */
- public function getConfig($option = null)
- {
- return $option === null
- ? $this->config
- : (isset($this->config[$option]) ? $this->config[$option] : null);
- }
-
- /**
- * @param string|null $uri
- *
- * @return UriInterface
- */
- private function buildUri($uri, array $config)
- {
- // for BC we accept null which would otherwise fail in uri_for
- $uri = Psr7\uri_for($uri === null ? '' : $uri);
-
- if (isset($config['base_uri'])) {
- $uri = Psr7\UriResolver::resolve(Psr7\uri_for($config['base_uri']), $uri);
- }
-
- if (isset($config['idn_conversion']) && ($config['idn_conversion'] !== false)) {
- $idnOptions = ($config['idn_conversion'] === true) ? IDNA_DEFAULT : $config['idn_conversion'];
- $uri = Utils::idnUriConvert($uri, $idnOptions);
- }
-
- return $uri->getScheme() === '' && $uri->getHost() !== '' ? $uri->withScheme('http') : $uri;
- }
-
- /**
- * Configures the default options for a client.
- *
- * @param array $config
- * @return void
- */
- private function configureDefaults(array $config)
- {
- $defaults = [
- 'allow_redirects' => RedirectMiddleware::$defaultSettings,
- 'http_errors' => true,
- 'decode_content' => true,
- 'verify' => true,
- 'cookies' => false,
- 'idn_conversion' => true,
- ];
-
- // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set.
-
- // We can only trust the HTTP_PROXY environment variable in a CLI
- // process due to the fact that PHP has no reliable mechanism to
- // get environment variables that start with "HTTP_".
- if (php_sapi_name() === 'cli' && getenv('HTTP_PROXY')) {
- $defaults['proxy']['http'] = getenv('HTTP_PROXY');
- }
-
- if ($proxy = getenv('HTTPS_PROXY')) {
- $defaults['proxy']['https'] = $proxy;
- }
-
- if ($noProxy = getenv('NO_PROXY')) {
- $cleanedNoProxy = str_replace(' ', '', $noProxy);
- $defaults['proxy']['no'] = explode(',', $cleanedNoProxy);
- }
-
- $this->config = $config + $defaults;
-
- if (!empty($config['cookies']) && $config['cookies'] === true) {
- $this->config['cookies'] = new CookieJar();
- }
-
- // Add the default user-agent header.
- if (!isset($this->config['headers'])) {
- $this->config['headers'] = ['User-Agent' => default_user_agent()];
- } else {
- // Add the User-Agent header if one was not already set.
- foreach (array_keys($this->config['headers']) as $name) {
- if (strtolower($name) === 'user-agent') {
- return;
- }
- }
- $this->config['headers']['User-Agent'] = default_user_agent();
- }
- }
-
- /**
- * Merges default options into the array.
- *
- * @param array $options Options to modify by reference
- *
- * @return array
- */
- private function prepareDefaults(array $options)
- {
- $defaults = $this->config;
-
- if (!empty($defaults['headers'])) {
- // Default headers are only added if they are not present.
- $defaults['_conditional'] = $defaults['headers'];
- unset($defaults['headers']);
- }
-
- // Special handling for headers is required as they are added as
- // conditional headers and as headers passed to a request ctor.
- if (array_key_exists('headers', $options)) {
- // Allows default headers to be unset.
- if ($options['headers'] === null) {
- $defaults['_conditional'] = [];
- unset($options['headers']);
- } elseif (!is_array($options['headers'])) {
- throw new \InvalidArgumentException('headers must be an array');
- }
- }
-
- // Shallow merge defaults underneath options.
- $result = $options + $defaults;
-
- // Remove null values.
- foreach ($result as $k => $v) {
- if ($v === null) {
- unset($result[$k]);
- }
- }
-
- return $result;
- }
-
- /**
- * Transfers the given request and applies request options.
- *
- * The URI of the request is not modified and the request options are used
- * as-is without merging in default options.
- *
- * @param array $options See \GuzzleHttp\RequestOptions.
- *
- * @return Promise\PromiseInterface
- */
- private function transfer(RequestInterface $request, array $options)
- {
- // save_to -> sink
- if (isset($options['save_to'])) {
- $options['sink'] = $options['save_to'];
- unset($options['save_to']);
- }
-
- // exceptions -> http_errors
- if (isset($options['exceptions'])) {
- $options['http_errors'] = $options['exceptions'];
- unset($options['exceptions']);
- }
-
- $request = $this->applyOptions($request, $options);
- /** @var HandlerStack $handler */
- $handler = $options['handler'];
-
- try {
- return Promise\promise_for($handler($request, $options));
- } catch (\Exception $e) {
- return Promise\rejection_for($e);
- }
- }
-
- /**
- * Applies the array of request options to a request.
- *
- * @param RequestInterface $request
- * @param array $options
- *
- * @return RequestInterface
- */
- private function applyOptions(RequestInterface $request, array &$options)
- {
- $modify = [
- 'set_headers' => [],
- ];
-
- if (isset($options['headers'])) {
- $modify['set_headers'] = $options['headers'];
- unset($options['headers']);
- }
-
- if (isset($options['form_params'])) {
- if (isset($options['multipart'])) {
- throw new \InvalidArgumentException('You cannot use '
- . 'form_params and multipart at the same time. Use the '
- . 'form_params option if you want to send application/'
- . 'x-www-form-urlencoded requests, and the multipart '
- . 'option to send multipart/form-data requests.');
- }
- $options['body'] = http_build_query($options['form_params'], '', '&');
- unset($options['form_params']);
- // Ensure that we don't have the header in different case and set the new value.
- $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']);
- $options['_conditional']['Content-Type'] = 'application/x-www-form-urlencoded';
- }
-
- if (isset($options['multipart'])) {
- $options['body'] = new Psr7\MultipartStream($options['multipart']);
- unset($options['multipart']);
- }
-
- if (isset($options['json'])) {
- $options['body'] = \GuzzleHttp\json_encode($options['json']);
- unset($options['json']);
- // Ensure that we don't have the header in different case and set the new value.
- $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']);
- $options['_conditional']['Content-Type'] = 'application/json';
- }
-
- if (!empty($options['decode_content'])
- && $options['decode_content'] !== true
- ) {
- // Ensure that we don't have the header in different case and set the new value.
- $options['_conditional'] = Psr7\_caseless_remove(['Accept-Encoding'], $options['_conditional']);
- $modify['set_headers']['Accept-Encoding'] = $options['decode_content'];
- }
-
- if (isset($options['body'])) {
- if (is_array($options['body'])) {
- $this->invalidBody();
- }
- $modify['body'] = Psr7\stream_for($options['body']);
- unset($options['body']);
- }
-
- if (!empty($options['auth']) && is_array($options['auth'])) {
- $value = $options['auth'];
- $type = isset($value[2]) ? strtolower($value[2]) : 'basic';
- switch ($type) {
- case 'basic':
- // Ensure that we don't have the header in different case and set the new value.
- $modify['set_headers'] = Psr7\_caseless_remove(['Authorization'], $modify['set_headers']);
- $modify['set_headers']['Authorization'] = 'Basic '
- . base64_encode("$value[0]:$value[1]");
- break;
- case 'digest':
- // @todo: Do not rely on curl
- $options['curl'][CURLOPT_HTTPAUTH] = CURLAUTH_DIGEST;
- $options['curl'][CURLOPT_USERPWD] = "$value[0]:$value[1]";
- break;
- case 'ntlm':
- $options['curl'][CURLOPT_HTTPAUTH] = CURLAUTH_NTLM;
- $options['curl'][CURLOPT_USERPWD] = "$value[0]:$value[1]";
- break;
- }
- }
-
- if (isset($options['query'])) {
- $value = $options['query'];
- if (is_array($value)) {
- $value = http_build_query($value, null, '&', PHP_QUERY_RFC3986);
- }
- if (!is_string($value)) {
- throw new \InvalidArgumentException('query must be a string or array');
- }
- $modify['query'] = $value;
- unset($options['query']);
- }
-
- // Ensure that sink is not an invalid value.
- if (isset($options['sink'])) {
- // TODO: Add more sink validation?
- if (is_bool($options['sink'])) {
- throw new \InvalidArgumentException('sink must not be a boolean');
- }
- }
-
- $request = Psr7\modify_request($request, $modify);
- if ($request->getBody() instanceof Psr7\MultipartStream) {
- // Use a multipart/form-data POST if a Content-Type is not set.
- // Ensure that we don't have the header in different case and set the new value.
- $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']);
- $options['_conditional']['Content-Type'] = 'multipart/form-data; boundary='
- . $request->getBody()->getBoundary();
- }
-
- // Merge in conditional headers if they are not present.
- if (isset($options['_conditional'])) {
- // Build up the changes so it's in a single clone of the message.
- $modify = [];
- foreach ($options['_conditional'] as $k => $v) {
- if (!$request->hasHeader($k)) {
- $modify['set_headers'][$k] = $v;
- }
- }
- $request = Psr7\modify_request($request, $modify);
- // Don't pass this internal value along to middleware/handlers.
- unset($options['_conditional']);
- }
-
- return $request;
- }
-
- /**
- * Throw Exception with pre-set message.
- * @return void
- * @throws \InvalidArgumentException Invalid body.
- */
- private function invalidBody()
- {
- throw new \InvalidArgumentException('Passing in the "body" request '
- . 'option as an array to send a POST request has been deprecated. '
- . 'Please use the "form_params" request option to send a '
- . 'application/x-www-form-urlencoded request, or the "multipart" '
- . 'request option to send a multipart/form-data request.');
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/ClientInterface.php b/vendor/guzzlehttp/guzzle/src/ClientInterface.php
deleted file mode 100644
index 638b75d..0000000
--- a/vendor/guzzlehttp/guzzle/src/ClientInterface.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Exception\GuzzleException;
-use GuzzleHttp\Promise\PromiseInterface;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * Client interface for sending HTTP requests.
- */
-interface ClientInterface
-{
- /**
- * @deprecated Will be removed in Guzzle 7.0.0
- */
- const VERSION = '6.5.5';
-
- /**
- * Send an HTTP request.
- *
- * @param RequestInterface $request Request to send
- * @param array $options Request options to apply to the given
- * request and to the transfer.
- *
- * @return ResponseInterface
- * @throws GuzzleException
- */
- public function send(RequestInterface $request, array $options = []);
-
- /**
- * Asynchronously send an HTTP request.
- *
- * @param RequestInterface $request Request to send
- * @param array $options Request options to apply to the given
- * request and to the transfer.
- *
- * @return PromiseInterface
- */
- public function sendAsync(RequestInterface $request, array $options = []);
-
- /**
- * Create and send an HTTP request.
- *
- * Use an absolute path to override the base path of the client, or a
- * relative path to append to the base path of the client. The URL can
- * contain the query string as well.
- *
- * @param string $method HTTP method.
- * @param string|UriInterface $uri URI object or string.
- * @param array $options Request options to apply.
- *
- * @return ResponseInterface
- * @throws GuzzleException
- */
- public function request($method, $uri, array $options = []);
-
- /**
- * Create and send an asynchronous HTTP request.
- *
- * Use an absolute path to override the base path of the client, or a
- * relative path to append to the base path of the client. The URL can
- * contain the query string as well. Use an array to provide a URL
- * template and additional variables to use in the URL template expansion.
- *
- * @param string $method HTTP method
- * @param string|UriInterface $uri URI object or string.
- * @param array $options Request options to apply.
- *
- * @return PromiseInterface
- */
- public function requestAsync($method, $uri, array $options = []);
-
- /**
- * Get a client configuration option.
- *
- * These options include default request options of the client, a "handler"
- * (if utilized by the concrete client), and a "base_uri" if utilized by
- * the concrete client.
- *
- * @param string|null $option The config option to retrieve.
- *
- * @return mixed
- */
- public function getConfig($option = null);
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
deleted file mode 100644
index 38f98ad..0000000
--- a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
+++ /dev/null
@@ -1,316 +0,0 @@
-<?php
-namespace GuzzleHttp\Cookie;
-
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Cookie jar that stores cookies as an array
- */
-class CookieJar implements CookieJarInterface
-{
- /** @var SetCookie[] Loaded cookie data */
- private $cookies = [];
-
- /** @var bool */
- private $strictMode;
-
- /**
- * @param bool $strictMode Set to true to throw exceptions when invalid
- * cookies are added to the cookie jar.
- * @param array $cookieArray Array of SetCookie objects or a hash of
- * arrays that can be used with the SetCookie
- * constructor
- */
- public function __construct($strictMode = false, $cookieArray = [])
- {
- $this->strictMode = $strictMode;
-
- foreach ($cookieArray as $cookie) {
- if (!($cookie instanceof SetCookie)) {
- $cookie = new SetCookie($cookie);
- }
- $this->setCookie($cookie);
- }
- }
-
- /**
- * Create a new Cookie jar from an associative array and domain.
- *
- * @param array $cookies Cookies to create the jar from
- * @param string $domain Domain to set the cookies to
- *
- * @return self
- */
- public static function fromArray(array $cookies, $domain)
- {
- $cookieJar = new self();
- foreach ($cookies as $name => $value) {
- $cookieJar->setCookie(new SetCookie([
- 'Domain' => $domain,
- 'Name' => $name,
- 'Value' => $value,
- 'Discard' => true
- ]));
- }
-
- return $cookieJar;
- }
-
- /**
- * @deprecated
- */
- public static function getCookieValue($value)
- {
- return $value;
- }
-
- /**
- * Evaluate if this cookie should be persisted to storage
- * that survives between requests.
- *
- * @param SetCookie $cookie Being evaluated.
- * @param bool $allowSessionCookies If we should persist session cookies
- * @return bool
- */
- public static function shouldPersist(
- SetCookie $cookie,
- $allowSessionCookies = false
- ) {
- if ($cookie->getExpires() || $allowSessionCookies) {
- if (!$cookie->getDiscard()) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Finds and returns the cookie based on the name
- *
- * @param string $name cookie name to search for
- * @return SetCookie|null cookie that was found or null if not found
- */
- public function getCookieByName($name)
- {
- // don't allow a non string name
- if ($name === null || !is_scalar($name)) {
- return null;
- }
- foreach ($this->cookies as $cookie) {
- if ($cookie->getName() !== null && strcasecmp($cookie->getName(), $name) === 0) {
- return $cookie;
- }
- }
-
- return null;
- }
-
- public function toArray()
- {
- return array_map(function (SetCookie $cookie) {
- return $cookie->toArray();
- }, $this->getIterator()->getArrayCopy());
- }
-
- public function clear($domain = null, $path = null, $name = null)
- {
- if (!$domain) {
- $this->cookies = [];
- return;
- } elseif (!$path) {
- $this->cookies = array_filter(
- $this->cookies,
- function (SetCookie $cookie) use ($domain) {
- return !$cookie->matchesDomain($domain);
- }
- );
- } elseif (!$name) {
- $this->cookies = array_filter(
- $this->cookies,
- function (SetCookie $cookie) use ($path, $domain) {
- return !($cookie->matchesPath($path) &&
- $cookie->matchesDomain($domain));
- }
- );
- } else {
- $this->cookies = array_filter(
- $this->cookies,
- function (SetCookie $cookie) use ($path, $domain, $name) {
- return !($cookie->getName() == $name &&
- $cookie->matchesPath($path) &&
- $cookie->matchesDomain($domain));
- }
- );
- }
- }
-
- public function clearSessionCookies()
- {
- $this->cookies = array_filter(
- $this->cookies,
- function (SetCookie $cookie) {
- return !$cookie->getDiscard() && $cookie->getExpires();
- }
- );
- }
-
- public function setCookie(SetCookie $cookie)
- {
- // If the name string is empty (but not 0), ignore the set-cookie
- // string entirely.
- $name = $cookie->getName();
- if (!$name && $name !== '0') {
- return false;
- }
-
- // Only allow cookies with set and valid domain, name, value
- $result = $cookie->validate();
- if ($result !== true) {
- if ($this->strictMode) {
- throw new \RuntimeException('Invalid cookie: ' . $result);
- } else {
- $this->removeCookieIfEmpty($cookie);
- return false;
- }
- }
-
- // Resolve conflicts with previously set cookies
- foreach ($this->cookies as $i => $c) {
-
- // Two cookies are identical, when their path, and domain are
- // identical.
- if ($c->getPath() != $cookie->getPath() ||
- $c->getDomain() != $cookie->getDomain() ||
- $c->getName() != $cookie->getName()
- ) {
- continue;
- }
-
- // The previously set cookie is a discard cookie and this one is
- // not so allow the new cookie to be set
- if (!$cookie->getDiscard() && $c->getDiscard()) {
- unset($this->cookies[$i]);
- continue;
- }
-
- // If the new cookie's expiration is further into the future, then
- // replace the old cookie
- if ($cookie->getExpires() > $c->getExpires()) {
- unset($this->cookies[$i]);
- continue;
- }
-
- // If the value has changed, we better change it
- if ($cookie->getValue() !== $c->getValue()) {
- unset($this->cookies[$i]);
- continue;
- }
-
- // The cookie exists, so no need to continue
- return false;
- }
-
- $this->cookies[] = $cookie;
-
- return true;
- }
-
- public function count()
- {
- return count($this->cookies);
- }
-
- public function getIterator()
- {
- return new \ArrayIterator(array_values($this->cookies));
- }
-
- public function extractCookies(
- RequestInterface $request,
- ResponseInterface $response
- ) {
- if ($cookieHeader = $response->getHeader('Set-Cookie')) {
- foreach ($cookieHeader as $cookie) {
- $sc = SetCookie::fromString($cookie);
- if (!$sc->getDomain()) {
- $sc->setDomain($request->getUri()->getHost());
- }
- if (0 !== strpos($sc->getPath(), '/')) {
- $sc->setPath($this->getCookiePathFromRequest($request));
- }
- $this->setCookie($sc);
- }
- }
- }
-
- /**
- * Computes cookie path following RFC 6265 section 5.1.4
- *
- * @link https://tools.ietf.org/html/rfc6265#section-5.1.4
- *
- * @param RequestInterface $request
- * @return string
- */
- private function getCookiePathFromRequest(RequestInterface $request)
- {
- $uriPath = $request->getUri()->getPath();
- if ('' === $uriPath) {
- return '/';
- }
- if (0 !== strpos($uriPath, '/')) {
- return '/';
- }
- if ('/' === $uriPath) {
- return '/';
- }
- if (0 === $lastSlashPos = strrpos($uriPath, '/')) {
- return '/';
- }
-
- return substr($uriPath, 0, $lastSlashPos);
- }
-
- public function withCookieHeader(RequestInterface $request)
- {
- $values = [];
- $uri = $request->getUri();
- $scheme = $uri->getScheme();
- $host = $uri->getHost();
- $path = $uri->getPath() ?: '/';
-
- foreach ($this->cookies as $cookie) {
- if ($cookie->matchesPath($path) &&
- $cookie->matchesDomain($host) &&
- !$cookie->isExpired() &&
- (!$cookie->getSecure() || $scheme === 'https')
- ) {
- $values[] = $cookie->getName() . '='
- . $cookie->getValue();
- }
- }
-
- return $values
- ? $request->withHeader('Cookie', implode('; ', $values))
- : $request;
- }
-
- /**
- * If a cookie already exists and the server asks to set it again with a
- * null value, the cookie must be deleted.
- *
- * @param SetCookie $cookie
- */
- private function removeCookieIfEmpty(SetCookie $cookie)
- {
- $cookieValue = $cookie->getValue();
- if ($cookieValue === null || $cookieValue === '') {
- $this->clear(
- $cookie->getDomain(),
- $cookie->getPath(),
- $cookie->getName()
- );
- }
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
deleted file mode 100644
index 6ee1188..0000000
--- a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-namespace GuzzleHttp\Cookie;
-
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Stores HTTP cookies.
- *
- * It extracts cookies from HTTP requests, and returns them in HTTP responses.
- * CookieJarInterface instances automatically expire contained cookies when
- * necessary. Subclasses are also responsible for storing and retrieving
- * cookies from a file, database, etc.
- *
- * @link http://docs.python.org/2/library/cookielib.html Inspiration
- */
-interface CookieJarInterface extends \Countable, \IteratorAggregate
-{
- /**
- * Create a request with added cookie headers.
- *
- * If no matching cookies are found in the cookie jar, then no Cookie
- * header is added to the request and the same request is returned.
- *
- * @param RequestInterface $request Request object to modify.
- *
- * @return RequestInterface returns the modified request.
- */
- public function withCookieHeader(RequestInterface $request);
-
- /**
- * Extract cookies from an HTTP response and store them in the CookieJar.
- *
- * @param RequestInterface $request Request that was sent
- * @param ResponseInterface $response Response that was received
- */
- public function extractCookies(
- RequestInterface $request,
- ResponseInterface $response
- );
-
- /**
- * Sets a cookie in the cookie jar.
- *
- * @param SetCookie $cookie Cookie to set.
- *
- * @return bool Returns true on success or false on failure
- */
- public function setCookie(SetCookie $cookie);
-
- /**
- * Remove cookies currently held in the cookie jar.
- *
- * Invoking this method without arguments will empty the whole cookie jar.
- * If given a $domain argument only cookies belonging to that domain will
- * be removed. If given a $domain and $path argument, cookies belonging to
- * the specified path within that domain are removed. If given all three
- * arguments, then the cookie with the specified name, path and domain is
- * removed.
- *
- * @param string|null $domain Clears cookies matching a domain
- * @param string|null $path Clears cookies matching a domain and path
- * @param string|null $name Clears cookies matching a domain, path, and name
- *
- * @return CookieJarInterface
- */
- public function clear($domain = null, $path = null, $name = null);
-
- /**
- * Discard all sessions cookies.
- *
- * Removes cookies that don't have an expire field or a have a discard
- * field set to true. To be called when the user agent shuts down according
- * to RFC 2965.
- */
- public function clearSessionCookies();
-
- /**
- * Converts the cookie jar to an array.
- *
- * @return array
- */
- public function toArray();
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
deleted file mode 100644
index 3fb8600..0000000
--- a/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-namespace GuzzleHttp\Cookie;
-
-/**
- * Persists non-session cookies using a JSON formatted file
- */
-class FileCookieJar extends CookieJar
-{
- /** @var string filename */
- private $filename;
-
- /** @var bool Control whether to persist session cookies or not. */
- private $storeSessionCookies;
-
- /**
- * Create a new FileCookieJar object
- *
- * @param string $cookieFile File to store the cookie data
- * @param bool $storeSessionCookies Set to true to store session cookies
- * in the cookie jar.
- *
- * @throws \RuntimeException if the file cannot be found or created
- */
- public function __construct($cookieFile, $storeSessionCookies = false)
- {
- parent::__construct();
- $this->filename = $cookieFile;
- $this->storeSessionCookies = $storeSessionCookies;
-
- if (file_exists($cookieFile)) {
- $this->load($cookieFile);
- }
- }
-
- /**
- * Saves the file when shutting down
- */
- public function __destruct()
- {
- $this->save($this->filename);
- }
-
- /**
- * Saves the cookies to a file.
- *
- * @param string $filename File to save
- * @throws \RuntimeException if the file cannot be found or created
- */
- public function save($filename)
- {
- $json = [];
- foreach ($this as $cookie) {
- /** @var SetCookie $cookie */
- if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
- $json[] = $cookie->toArray();
- }
- }
-
- $jsonStr = \GuzzleHttp\json_encode($json);
- if (false === file_put_contents($filename, $jsonStr, LOCK_EX)) {
- throw new \RuntimeException("Unable to save file {$filename}");
- }
- }
-
- /**
- * Load cookies from a JSON formatted file.
- *
- * Old cookies are kept unless overwritten by newly loaded ones.
- *
- * @param string $filename Cookie file to load.
- * @throws \RuntimeException if the file cannot be loaded.
- */
- public function load($filename)
- {
- $json = file_get_contents($filename);
- if (false === $json) {
- throw new \RuntimeException("Unable to load file {$filename}");
- } elseif ($json === '') {
- return;
- }
-
- $data = \GuzzleHttp\json_decode($json, true);
- if (is_array($data)) {
- foreach (json_decode($json, true) as $cookie) {
- $this->setCookie(new SetCookie($cookie));
- }
- } elseif (strlen($data)) {
- throw new \RuntimeException("Invalid cookie file: {$filename}");
- }
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
deleted file mode 100644
index 0224a24..0000000
--- a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-namespace GuzzleHttp\Cookie;
-
-/**
- * Persists cookies in the client session
- */
-class SessionCookieJar extends CookieJar
-{
- /** @var string session key */
- private $sessionKey;
-
- /** @var bool Control whether to persist session cookies or not. */
- private $storeSessionCookies;
-
- /**
- * Create a new SessionCookieJar object
- *
- * @param string $sessionKey Session key name to store the cookie
- * data in session
- * @param bool $storeSessionCookies Set to true to store session cookies
- * in the cookie jar.
- */
- public function __construct($sessionKey, $storeSessionCookies = false)
- {
- parent::__construct();
- $this->sessionKey = $sessionKey;
- $this->storeSessionCookies = $storeSessionCookies;
- $this->load();
- }
-
- /**
- * Saves cookies to session when shutting down
- */
- public function __destruct()
- {
- $this->save();
- }
-
- /**
- * Save cookies to the client session
- */
- public function save()
- {
- $json = [];
- foreach ($this as $cookie) {
- /** @var SetCookie $cookie */
- if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
- $json[] = $cookie->toArray();
- }
- }
-
- $_SESSION[$this->sessionKey] = json_encode($json);
- }
-
- /**
- * Load the contents of the client session into the data array
- */
- protected function load()
- {
- if (!isset($_SESSION[$this->sessionKey])) {
- return;
- }
- $data = json_decode($_SESSION[$this->sessionKey], true);
- if (is_array($data)) {
- foreach ($data as $cookie) {
- $this->setCookie(new SetCookie($cookie));
- }
- } elseif (strlen($data)) {
- throw new \RuntimeException("Invalid cookie data");
- }
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php b/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
deleted file mode 100644
index 3d776a7..0000000
--- a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
+++ /dev/null
@@ -1,403 +0,0 @@
-<?php
-namespace GuzzleHttp\Cookie;
-
-/**
- * Set-Cookie object
- */
-class SetCookie
-{
- /** @var array */
- private static $defaults = [
- 'Name' => null,
- 'Value' => null,
- 'Domain' => null,
- 'Path' => '/',
- 'Max-Age' => null,
- 'Expires' => null,
- 'Secure' => false,
- 'Discard' => false,
- 'HttpOnly' => false
- ];
-
- /** @var array Cookie data */
- private $data;
-
- /**
- * Create a new SetCookie object from a string
- *
- * @param string $cookie Set-Cookie header string
- *
- * @return self
- */
- public static function fromString($cookie)
- {
- // Create the default return array
- $data = self::$defaults;
- // Explode the cookie string using a series of semicolons
- $pieces = array_filter(array_map('trim', explode(';', $cookie)));
- // The name of the cookie (first kvp) must exist and include an equal sign.
- if (empty($pieces[0]) || !strpos($pieces[0], '=')) {
- return new self($data);
- }
-
- // Add the cookie pieces into the parsed data array
- foreach ($pieces as $part) {
- $cookieParts = explode('=', $part, 2);
- $key = trim($cookieParts[0]);
- $value = isset($cookieParts[1])
- ? trim($cookieParts[1], " \n\r\t\0\x0B")
- : true;
-
- // Only check for non-cookies when cookies have been found
- if (empty($data['Name'])) {
- $data['Name'] = $key;
- $data['Value'] = $value;
- } else {
- foreach (array_keys(self::$defaults) as $search) {
- if (!strcasecmp($search, $key)) {
- $data[$search] = $value;
- continue 2;
- }
- }
- $data[$key] = $value;
- }
- }
-
- return new self($data);
- }
-
- /**
- * @param array $data Array of cookie data provided by a Cookie parser
- */
- public function __construct(array $data = [])
- {
- $this->data = array_replace(self::$defaults, $data);
- // Extract the Expires value and turn it into a UNIX timestamp if needed
- if (!$this->getExpires() && $this->getMaxAge()) {
- // Calculate the Expires date
- $this->setExpires(time() + $this->getMaxAge());
- } elseif ($this->getExpires() && !is_numeric($this->getExpires())) {
- $this->setExpires($this->getExpires());
- }
- }
-
- public function __toString()
- {
- $str = $this->data['Name'] . '=' . $this->data['Value'] . '; ';
- foreach ($this->data as $k => $v) {
- if ($k !== 'Name' && $k !== 'Value' && $v !== null && $v !== false) {
- if ($k === 'Expires') {
- $str .= 'Expires=' . gmdate('D, d M Y H:i:s \G\M\T', $v) . '; ';
- } else {
- $str .= ($v === true ? $k : "{$k}={$v}") . '; ';
- }
- }
- }
-
- return rtrim($str, '; ');
- }
-
- public function toArray()
- {
- return $this->data;
- }
-
- /**
- * Get the cookie name
- *
- * @return string
- */
- public function getName()
- {
- return $this->data['Name'];
- }
-
- /**
- * Set the cookie name
- *
- * @param string $name Cookie name
- */
- public function setName($name)
- {
- $this->data['Name'] = $name;
- }
-
- /**
- * Get the cookie value
- *
- * @return string
- */
- public function getValue()
- {
- return $this->data['Value'];
- }
-
- /**
- * Set the cookie value
- *
- * @param string $value Cookie value
- */
- public function setValue($value)
- {
- $this->data['Value'] = $value;
- }
-
- /**
- * Get the domain
- *
- * @return string|null
- */
- public function getDomain()
- {
- return $this->data['Domain'];
- }
-
- /**
- * Set the domain of the cookie
- *
- * @param string $domain
- */
- public function setDomain($domain)
- {
- $this->data['Domain'] = $domain;
- }
-
- /**
- * Get the path
- *
- * @return string
- */
- public function getPath()
- {
- return $this->data['Path'];
- }
-
- /**
- * Set the path of the cookie
- *
- * @param string $path Path of the cookie
- */
- public function setPath($path)
- {
- $this->data['Path'] = $path;
- }
-
- /**
- * Maximum lifetime of the cookie in seconds
- *
- * @return int|null
- */
- public function getMaxAge()
- {
- return $this->data['Max-Age'];
- }
-
- /**
- * Set the max-age of the cookie
- *
- * @param int $maxAge Max age of the cookie in seconds
- */
- public function setMaxAge($maxAge)
- {
- $this->data['Max-Age'] = $maxAge;
- }
-
- /**
- * The UNIX timestamp when the cookie Expires
- *
- * @return mixed
- */
- public function getExpires()
- {
- return $this->data['Expires'];
- }
-
- /**
- * Set the unix timestamp for which the cookie will expire
- *
- * @param int $timestamp Unix timestamp
- */
- public function setExpires($timestamp)
- {
- $this->data['Expires'] = is_numeric($timestamp)
- ? (int) $timestamp
- : strtotime($timestamp);
- }
-
- /**
- * Get whether or not this is a secure cookie
- *
- * @return bool|null
- */
- public function getSecure()
- {
- return $this->data['Secure'];
- }
-
- /**
- * Set whether or not the cookie is secure
- *
- * @param bool $secure Set to true or false if secure
- */
- public function setSecure($secure)
- {
- $this->data['Secure'] = $secure;
- }
-
- /**
- * Get whether or not this is a session cookie
- *
- * @return bool|null
- */
- public function getDiscard()
- {
- return $this->data['Discard'];
- }
-
- /**
- * Set whether or not this is a session cookie
- *
- * @param bool $discard Set to true or false if this is a session cookie
- */
- public function setDiscard($discard)
- {
- $this->data['Discard'] = $discard;
- }
-
- /**
- * Get whether or not this is an HTTP only cookie
- *
- * @return bool
- */
- public function getHttpOnly()
- {
- return $this->data['HttpOnly'];
- }
-
- /**
- * Set whether or not this is an HTTP only cookie
- *
- * @param bool $httpOnly Set to true or false if this is HTTP only
- */
- public function setHttpOnly($httpOnly)
- {
- $this->data['HttpOnly'] = $httpOnly;
- }
-
- /**
- * Check if the cookie matches a path value.
- *
- * A request-path path-matches a given cookie-path if at least one of
- * the following conditions holds:
- *
- * - The cookie-path and the request-path are identical.
- * - The cookie-path is a prefix of the request-path, and the last
- * character of the cookie-path is %x2F ("/").
- * - The cookie-path is a prefix of the request-path, and the first
- * character of the request-path that is not included in the cookie-
- * path is a %x2F ("/") character.
- *
- * @param string $requestPath Path to check against
- *
- * @return bool
- */
- public function matchesPath($requestPath)
- {
- $cookiePath = $this->getPath();
-
- // Match on exact matches or when path is the default empty "/"
- if ($cookiePath === '/' || $cookiePath == $requestPath) {
- return true;
- }
-
- // Ensure that the cookie-path is a prefix of the request path.
- if (0 !== strpos($requestPath, $cookiePath)) {
- return false;
- }
-
- // Match if the last character of the cookie-path is "/"
- if (substr($cookiePath, -1, 1) === '/') {
- return true;
- }
-
- // Match if the first character not included in cookie path is "/"
- return substr($requestPath, strlen($cookiePath), 1) === '/';
- }
-
- /**
- * Check if the cookie matches a domain value
- *
- * @param string $domain Domain to check against
- *
- * @return bool
- */
- public function matchesDomain($domain)
- {
- // Remove the leading '.' as per spec in RFC 6265.
- // http://tools.ietf.org/html/rfc6265#section-5.2.3
- $cookieDomain = ltrim($this->getDomain(), '.');
-
- // Domain not set or exact match.
- if (!$cookieDomain || !strcasecmp($domain, $cookieDomain)) {
- return true;
- }
-
- // Matching the subdomain according to RFC 6265.
- // http://tools.ietf.org/html/rfc6265#section-5.1.3
- if (filter_var($domain, FILTER_VALIDATE_IP)) {
- return false;
- }
-
- return (bool) preg_match('/\.' . preg_quote($cookieDomain, '/') . '$/', $domain);
- }
-
- /**
- * Check if the cookie is expired
- *
- * @return bool
- */
- public function isExpired()
- {
- return $this->getExpires() !== null && time() > $this->getExpires();
- }
-
- /**
- * Check if the cookie is valid according to RFC 6265
- *
- * @return bool|string Returns true if valid or an error message if invalid
- */
- public function validate()
- {
- // Names must not be empty, but can be 0
- $name = $this->getName();
- if (empty($name) && !is_numeric($name)) {
- return 'The cookie name must not be empty';
- }
-
- // Check if any of the invalid characters are present in the cookie name
- if (preg_match(
- '/[\x00-\x20\x22\x28-\x29\x2c\x2f\x3a-\x40\x5c\x7b\x7d\x7f]/',
- $name
- )) {
- return 'Cookie name must not contain invalid characters: ASCII '
- . 'Control characters (0-31;127), space, tab and the '
- . 'following characters: ()<>@,;:\"/?={}';
- }
-
- // Value must not be empty, but can be 0
- $value = $this->getValue();
- if (empty($value) && !is_numeric($value)) {
- return 'The cookie value must not be empty';
- }
-
- // Domains must not be empty, but can be 0
- // A "0" is not a valid internet domain, but may be used as server name
- // in a private network.
- $domain = $this->getDomain();
- if (empty($domain) && !is_numeric($domain)) {
- return 'The cookie domain must not be empty';
- }
-
- return true;
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php b/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php
deleted file mode 100644
index 427d896..0000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Exception when an HTTP error occurs (4xx or 5xx error)
- */
-class BadResponseException extends RequestException
-{
- public function __construct(
- $message,
- RequestInterface $request,
- ResponseInterface $response = null,
- \Exception $previous = null,
- array $handlerContext = []
- ) {
- if (null === $response) {
- @trigger_error(
- 'Instantiating the ' . __CLASS__ . ' class without a Response is deprecated since version 6.3 and will be removed in 7.0.',
- E_USER_DEPRECATED
- );
- }
- parent::__construct($message, $request, $response, $previous, $handlerContext);
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php b/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
deleted file mode 100644
index 4cfd393..0000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-/**
- * Exception when a client error is encountered (4xx codes)
- */
-class ClientException extends BadResponseException
-{
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php b/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php
deleted file mode 100644
index d33b0cc..0000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Exception thrown when a connection cannot be established.
- *
- * Note that no response is present for a ConnectException
- */
-class ConnectException extends RequestException
-{
- public function __construct(
- $message,
- RequestInterface $request,
- \Exception $previous = null,
- array $handlerContext = []
- ) {
- parent::__construct($message, $request, null, $previous, $handlerContext);
- }
-
- /**
- * @return null
- */
- public function getResponse()
- {
- return null;
- }
-
- /**
- * @return bool
- */
- public function hasResponse()
- {
- return false;
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php b/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
deleted file mode 100644
index 27b2722..0000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-use Throwable;
-
-if (interface_exists(Throwable::class)) {
- interface GuzzleException extends Throwable
- {
- }
-} else {
- /**
- * @method string getMessage()
- * @method \Throwable|null getPrevious()
- * @method mixed getCode()
- * @method string getFile()
- * @method int getLine()
- * @method array getTrace()
- * @method string getTraceAsString()
- */
- interface GuzzleException
- {
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php b/vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php
deleted file mode 100644
index bfd20e2..0000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Exception;
-
-final class InvalidArgumentException extends \InvalidArgumentException implements GuzzleException
-{
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php b/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
deleted file mode 100644
index 12dd081..0000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
+++ /dev/null
@@ -1,192 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-use GuzzleHttp\Promise\PromiseInterface;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * HTTP Request exception
- */
-class RequestException extends TransferException
-{
- /** @var RequestInterface */
- private $request;
-
- /** @var ResponseInterface|null */
- private $response;
-
- /** @var array */
- private $handlerContext;
-
- public function __construct(
- $message,
- RequestInterface $request,
- ResponseInterface $response = null,
- \Exception $previous = null,
- array $handlerContext = []
- ) {
- // Set the code of the exception if the response is set and not future.
- $code = $response && !($response instanceof PromiseInterface)
- ? $response->getStatusCode()
- : 0;
- parent::__construct($message, $code, $previous);
- $this->request = $request;
- $this->response = $response;
- $this->handlerContext = $handlerContext;
- }
-
- /**
- * Wrap non-RequestExceptions with a RequestException
- *
- * @param RequestInterface $request
- * @param \Exception $e
- *
- * @return RequestException
- */
- public static function wrapException(RequestInterface $request, \Exception $e)
- {
- return $e instanceof RequestException
- ? $e
- : new RequestException($e->getMessage(), $request, null, $e);
- }
-
- /**
- * Factory method to create a new exception with a normalized error message
- *
- * @param RequestInterface $request Request
- * @param ResponseInterface $response Response received
- * @param \Exception $previous Previous exception
- * @param array $ctx Optional handler context.
- *
- * @return self
- */
- public static function create(
- RequestInterface $request,
- ResponseInterface $response = null,
- \Exception $previous = null,
- array $ctx = []
- ) {
- if (!$response) {
- return new self(
- 'Error completing request',
- $request,
- null,
- $previous,
- $ctx
- );
- }
-
- $level = (int) floor($response->getStatusCode() / 100);
- if ($level === 4) {
- $label = 'Client error';
- $className = ClientException::class;
- } elseif ($level === 5) {
- $label = 'Server error';
- $className = ServerException::class;
- } else {
- $label = 'Unsuccessful request';
- $className = __CLASS__;
- }
-
- $uri = $request->getUri();
- $uri = static::obfuscateUri($uri);
-
- // Client Error: `GET /` resulted in a `404 Not Found` response:
- // <html> ... (truncated)
- $message = sprintf(
- '%s: `%s %s` resulted in a `%s %s` response',
- $label,
- $request->getMethod(),
- $uri,
- $response->getStatusCode(),
- $response->getReasonPhrase()
- );
-
- $summary = static::getResponseBodySummary($response);
-
- if ($summary !== null) {
- $message .= ":\n{$summary}\n";
- }
-
- return new $className($message, $request, $response, $previous, $ctx);
- }
-
- /**
- * Get a short summary of the response
- *
- * Will return `null` if the response is not printable.
- *
- * @param ResponseInterface $response
- *
- * @return string|null
- */
- public static function getResponseBodySummary(ResponseInterface $response)
- {
- return \GuzzleHttp\Psr7\get_message_body_summary($response);
- }
-
- /**
- * Obfuscates URI if there is a username and a password present
- *
- * @param UriInterface $uri
- *
- * @return UriInterface
- */
- private static function obfuscateUri(UriInterface $uri)
- {
- $userInfo = $uri->getUserInfo();
-
- if (false !== ($pos = strpos($userInfo, ':'))) {
- return $uri->withUserInfo(substr($userInfo, 0, $pos), '***');
- }
-
- return $uri;
- }
-
- /**
- * Get the request that caused the exception
- *
- * @return RequestInterface
- */
- public function getRequest()
- {
- return $this->request;
- }
-
- /**
- * Get the associated response
- *
- * @return ResponseInterface|null
- */
- public function getResponse()
- {
- return $this->response;
- }
-
- /**
- * Check if a response was received
- *
- * @return bool
- */
- public function hasResponse()
- {
- return $this->response !== null;
- }
-
- /**
- * Get contextual information about the error from the underlying handler.
- *
- * The contents of this array will vary depending on which handler you are
- * using. It may also be just an empty array. Relying on this data will
- * couple you to a specific handler, but can give more debug information
- * when needed.
- *
- * @return array
- */
- public function getHandlerContext()
- {
- return $this->handlerContext;
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php b/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php
deleted file mode 100644
index a77c289..0000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Exception thrown when a seek fails on a stream.
- */
-class SeekException extends \RuntimeException implements GuzzleException
-{
- private $stream;
-
- public function __construct(StreamInterface $stream, $pos = 0, $msg = '')
- {
- $this->stream = $stream;
- $msg = $msg ?: 'Could not seek the stream to position ' . $pos;
- parent::__construct($msg);
- }
-
- /**
- * @return StreamInterface
- */
- public function getStream()
- {
- return $this->stream;
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php b/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
deleted file mode 100644
index 127094c..0000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-/**
- * Exception when a server error is encountered (5xx codes)
- */
-class ServerException extends BadResponseException
-{
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php b/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
deleted file mode 100644
index fff0525..0000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-class TooManyRedirectsException extends RequestException
-{
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php b/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
deleted file mode 100644
index 7c11db3..0000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-class TransferException extends \RuntimeException implements GuzzleException
-{
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
deleted file mode 100644
index 4a28a96..0000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
+++ /dev/null
@@ -1,585 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\Exception\ConnectException;
-use GuzzleHttp\Exception\RequestException;
-use GuzzleHttp\Promise\FulfilledPromise;
-use GuzzleHttp\Psr7;
-use GuzzleHttp\Psr7\LazyOpenStream;
-use GuzzleHttp\TransferStats;
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Creates curl resources from a request
- */
-class CurlFactory implements CurlFactoryInterface
-{
- const CURL_VERSION_STR = 'curl_version';
- const LOW_CURL_VERSION_NUMBER = '7.21.2';
-
- /** @var array */
- private $handles = [];
-
- /** @var int Total number of idle handles to keep in cache */
- private $maxHandles;
-
- /**
- * @param int $maxHandles Maximum number of idle handles.
- */
- public function __construct($maxHandles)
- {
- $this->maxHandles = $maxHandles;
- }
-
- public function create(RequestInterface $request, array $options)
- {
- if (isset($options['curl']['body_as_string'])) {
- $options['_body_as_string'] = $options['curl']['body_as_string'];
- unset($options['curl']['body_as_string']);
- }
-
- $easy = new EasyHandle;
- $easy->request = $request;
- $easy->options = $options;
- $conf = $this->getDefaultConf($easy);
- $this->applyMethod($easy, $conf);
- $this->applyHandlerOptions($easy, $conf);
- $this->applyHeaders($easy, $conf);
- unset($conf['_headers']);
-
- // Add handler options from the request configuration options
- if (isset($options['curl'])) {
- $conf = array_replace($conf, $options['curl']);
- }
-
- $conf[CURLOPT_HEADERFUNCTION] = $this->createHeaderFn($easy);
- $easy->handle = $this->handles
- ? array_pop($this->handles)
- : curl_init();
- curl_setopt_array($easy->handle, $conf);
-
- return $easy;
- }
-
- public function release(EasyHandle $easy)
- {
- $resource = $easy->handle;
- unset($easy->handle);
-
- if (count($this->handles) >= $this->maxHandles) {
- curl_close($resource);
- } else {
- // Remove all callback functions as they can hold onto references
- // and are not cleaned up by curl_reset. Using curl_setopt_array
- // does not work for some reason, so removing each one
- // individually.
- curl_setopt($resource, CURLOPT_HEADERFUNCTION, null);
- curl_setopt($resource, CURLOPT_READFUNCTION, null);
- curl_setopt($resource, CURLOPT_WRITEFUNCTION, null);
- curl_setopt($resource, CURLOPT_PROGRESSFUNCTION, null);
- curl_reset($resource);
- $this->handles[] = $resource;
- }
- }
-
- /**
- * Completes a cURL transaction, either returning a response promise or a
- * rejected promise.
- *
- * @param callable $handler
- * @param EasyHandle $easy
- * @param CurlFactoryInterface $factory Dictates how the handle is released
- *
- * @return \GuzzleHttp\Promise\PromiseInterface
- */
- public static function finish(
- callable $handler,
- EasyHandle $easy,
- CurlFactoryInterface $factory
- ) {
- if (isset($easy->options['on_stats'])) {
- self::invokeStats($easy);
- }
-
- if (!$easy->response || $easy->errno) {
- return self::finishError($handler, $easy, $factory);
- }
-
- // Return the response if it is present and there is no error.
- $factory->release($easy);
-
- // Rewind the body of the response if possible.
- $body = $easy->response->getBody();
- if ($body->isSeekable()) {
- $body->rewind();
- }
-
- return new FulfilledPromise($easy->response);
- }
-
- private static function invokeStats(EasyHandle $easy)
- {
- $curlStats = curl_getinfo($easy->handle);
- $curlStats['appconnect_time'] = curl_getinfo($easy->handle, CURLINFO_APPCONNECT_TIME);
- $stats = new TransferStats(
- $easy->request,
- $easy->response,
- $curlStats['total_time'],
- $easy->errno,
- $curlStats
- );
- call_user_func($easy->options['on_stats'], $stats);
- }
-
- private static function finishError(
- callable $handler,
- EasyHandle $easy,
- CurlFactoryInterface $factory
- ) {
- // Get error information and release the handle to the factory.
- $ctx = [
- 'errno' => $easy->errno,
- 'error' => curl_error($easy->handle),
- 'appconnect_time' => curl_getinfo($easy->handle, CURLINFO_APPCONNECT_TIME),
- ] + curl_getinfo($easy->handle);
- $ctx[self::CURL_VERSION_STR] = curl_version()['version'];
- $factory->release($easy);
-
- // Retry when nothing is present or when curl failed to rewind.
- if (empty($easy->options['_err_message'])
- && (!$easy->errno || $easy->errno == 65)
- ) {
- return self::retryFailedRewind($handler, $easy, $ctx);
- }
-
- return self::createRejection($easy, $ctx);
- }
-
- private static function createRejection(EasyHandle $easy, array $ctx)
- {
- static $connectionErrors = [
- CURLE_OPERATION_TIMEOUTED => true,
- CURLE_COULDNT_RESOLVE_HOST => true,
- CURLE_COULDNT_CONNECT => true,
- CURLE_SSL_CONNECT_ERROR => true,
- CURLE_GOT_NOTHING => true,
- ];
-
- // If an exception was encountered during the onHeaders event, then
- // return a rejected promise that wraps that exception.
- if ($easy->onHeadersException) {
- return \GuzzleHttp\Promise\rejection_for(
- new RequestException(
- 'An error was encountered during the on_headers event',
- $easy->request,
- $easy->response,
- $easy->onHeadersException,
- $ctx
- )
- );
- }
- if (version_compare($ctx[self::CURL_VERSION_STR], self::LOW_CURL_VERSION_NUMBER)) {
- $message = sprintf(
- 'cURL error %s: %s (%s)',
- $ctx['errno'],
- $ctx['error'],
- 'see https://curl.haxx.se/libcurl/c/libcurl-errors.html'
- );
- } else {
- $message = sprintf(
- 'cURL error %s: %s (%s) for %s',
- $ctx['errno'],
- $ctx['error'],
- 'see https://curl.haxx.se/libcurl/c/libcurl-errors.html',
- $easy->request->getUri()
- );
- }
-
- // Create a connection exception if it was a specific error code.
- $error = isset($connectionErrors[$easy->errno])
- ? new ConnectException($message, $easy->request, null, $ctx)
- : new RequestException($message, $easy->request, $easy->response, null, $ctx);
-
- return \GuzzleHttp\Promise\rejection_for($error);
- }
-
- private function getDefaultConf(EasyHandle $easy)
- {
- $conf = [
- '_headers' => $easy->request->getHeaders(),
- CURLOPT_CUSTOMREQUEST => $easy->request->getMethod(),
- CURLOPT_URL => (string) $easy->request->getUri()->withFragment(''),
- CURLOPT_RETURNTRANSFER => false,
- CURLOPT_HEADER => false,
- CURLOPT_CONNECTTIMEOUT => 150,
- ];
-
- if (defined('CURLOPT_PROTOCOLS')) {
- $conf[CURLOPT_PROTOCOLS] = CURLPROTO_HTTP | CURLPROTO_HTTPS;
- }
-
- $version = $easy->request->getProtocolVersion();
- if ($version == 1.1) {
- $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_1;
- } elseif ($version == 2.0) {
- $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_2_0;
- } else {
- $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_0;
- }
-
- return $conf;
- }
-
- private function applyMethod(EasyHandle $easy, array &$conf)
- {
- $body = $easy->request->getBody();
- $size = $body->getSize();
-
- if ($size === null || $size > 0) {
- $this->applyBody($easy->request, $easy->options, $conf);
- return;
- }
-
- $method = $easy->request->getMethod();
- if ($method === 'PUT' || $method === 'POST') {
- // See http://tools.ietf.org/html/rfc7230#section-3.3.2
- if (!$easy->request->hasHeader('Content-Length')) {
- $conf[CURLOPT_HTTPHEADER][] = 'Content-Length: 0';
- }
- } elseif ($method === 'HEAD') {
- $conf[CURLOPT_NOBODY] = true;
- unset(
- $conf[CURLOPT_WRITEFUNCTION],
- $conf[CURLOPT_READFUNCTION],
- $conf[CURLOPT_FILE],
- $conf[CURLOPT_INFILE]
- );
- }
- }
-
- private function applyBody(RequestInterface $request, array $options, array &$conf)
- {
- $size = $request->hasHeader('Content-Length')
- ? (int) $request->getHeaderLine('Content-Length')
- : null;
-
- // Send the body as a string if the size is less than 1MB OR if the
- // [curl][body_as_string] request value is set.
- if (($size !== null && $size < 1000000) ||
- !empty($options['_body_as_string'])
- ) {
- $conf[CURLOPT_POSTFIELDS] = (string) $request->getBody();
- // Don't duplicate the Content-Length header
- $this->removeHeader('Content-Length', $conf);
- $this->removeHeader('Transfer-Encoding', $conf);
- } else {
- $conf[CURLOPT_UPLOAD] = true;
- if ($size !== null) {
- $conf[CURLOPT_INFILESIZE] = $size;
- $this->removeHeader('Content-Length', $conf);
- }
- $body = $request->getBody();
- if ($body->isSeekable()) {
- $body->rewind();
- }
- $conf[CURLOPT_READFUNCTION] = function ($ch, $fd, $length) use ($body) {
- return $body->read($length);
- };
- }
-
- // If the Expect header is not present, prevent curl from adding it
- if (!$request->hasHeader('Expect')) {
- $conf[CURLOPT_HTTPHEADER][] = 'Expect:';
- }
-
- // cURL sometimes adds a content-type by default. Prevent this.
- if (!$request->hasHeader('Content-Type')) {
- $conf[CURLOPT_HTTPHEADER][] = 'Content-Type:';
- }
- }
-
- private function applyHeaders(EasyHandle $easy, array &$conf)
- {
- foreach ($conf['_headers'] as $name => $values) {
- foreach ($values as $value) {
- $value = (string) $value;
- if ($value === '') {
- // cURL requires a special format for empty headers.
- // See https://github.com/guzzle/guzzle/issues/1882 for more details.
- $conf[CURLOPT_HTTPHEADER][] = "$name;";
- } else {
- $conf[CURLOPT_HTTPHEADER][] = "$name: $value";
- }
- }
- }
-
- // Remove the Accept header if one was not set
- if (!$easy->request->hasHeader('Accept')) {
- $conf[CURLOPT_HTTPHEADER][] = 'Accept:';
- }
- }
-
- /**
- * Remove a header from the options array.
- *
- * @param string $name Case-insensitive header to remove
- * @param array $options Array of options to modify
- */
- private function removeHeader($name, array &$options)
- {
- foreach (array_keys($options['_headers']) as $key) {
- if (!strcasecmp($key, $name)) {
- unset($options['_headers'][$key]);
- return;
- }
- }
- }
-
- private function applyHandlerOptions(EasyHandle $easy, array &$conf)
- {
- $options = $easy->options;
- if (isset($options['verify'])) {
- if ($options['verify'] === false) {
- unset($conf[CURLOPT_CAINFO]);
- $conf[CURLOPT_SSL_VERIFYHOST] = 0;
- $conf[CURLOPT_SSL_VERIFYPEER] = false;
- } else {
- $conf[CURLOPT_SSL_VERIFYHOST] = 2;
- $conf[CURLOPT_SSL_VERIFYPEER] = true;
- if (is_string($options['verify'])) {
- // Throw an error if the file/folder/link path is not valid or doesn't exist.
- if (!file_exists($options['verify'])) {
- throw new \InvalidArgumentException(
- "SSL CA bundle not found: {$options['verify']}"
- );
- }
- // If it's a directory or a link to a directory use CURLOPT_CAPATH.
- // If not, it's probably a file, or a link to a file, so use CURLOPT_CAINFO.
- if (is_dir($options['verify']) ||
- (is_link($options['verify']) && is_dir(readlink($options['verify'])))) {
- $conf[CURLOPT_CAPATH] = $options['verify'];
- } else {
- $conf[CURLOPT_CAINFO] = $options['verify'];
- }
- }
- }
- }
-
- if (!empty($options['decode_content'])) {
- $accept = $easy->request->getHeaderLine('Accept-Encoding');
- if ($accept) {
- $conf[CURLOPT_ENCODING] = $accept;
- } else {
- $conf[CURLOPT_ENCODING] = '';
- // Don't let curl send the header over the wire
- $conf[CURLOPT_HTTPHEADER][] = 'Accept-Encoding:';
- }
- }
-
- if (isset($options['sink'])) {
- $sink = $options['sink'];
- if (!is_string($sink)) {
- $sink = \GuzzleHttp\Psr7\stream_for($sink);
- } elseif (!is_dir(dirname($sink))) {
- // Ensure that the directory exists before failing in curl.
- throw new \RuntimeException(sprintf(
- 'Directory %s does not exist for sink value of %s',
- dirname($sink),
- $sink
- ));
- } else {
- $sink = new LazyOpenStream($sink, 'w+');
- }
- $easy->sink = $sink;
- $conf[CURLOPT_WRITEFUNCTION] = function ($ch, $write) use ($sink) {
- return $sink->write($write);
- };
- } else {
- // Use a default temp stream if no sink was set.
- $conf[CURLOPT_FILE] = fopen('php://temp', 'w+');
- $easy->sink = Psr7\stream_for($conf[CURLOPT_FILE]);
- }
- $timeoutRequiresNoSignal = false;
- if (isset($options['timeout'])) {
- $timeoutRequiresNoSignal |= $options['timeout'] < 1;
- $conf[CURLOPT_TIMEOUT_MS] = $options['timeout'] * 1000;
- }
-
- // CURL default value is CURL_IPRESOLVE_WHATEVER
- if (isset($options['force_ip_resolve'])) {
- if ('v4' === $options['force_ip_resolve']) {
- $conf[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4;
- } elseif ('v6' === $options['force_ip_resolve']) {
- $conf[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V6;
- }
- }
-
- if (isset($options['connect_timeout'])) {
- $timeoutRequiresNoSignal |= $options['connect_timeout'] < 1;
- $conf[CURLOPT_CONNECTTIMEOUT_MS] = $options['connect_timeout'] * 1000;
- }
-
- if ($timeoutRequiresNoSignal && strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
- $conf[CURLOPT_NOSIGNAL] = true;
- }
-
- if (isset($options['proxy'])) {
- if (!is_array($options['proxy'])) {
- $conf[CURLOPT_PROXY] = $options['proxy'];
- } else {
- $scheme = $easy->request->getUri()->getScheme();
- if (isset($options['proxy'][$scheme])) {
- $host = $easy->request->getUri()->getHost();
- if (!isset($options['proxy']['no']) ||
- !\GuzzleHttp\is_host_in_noproxy($host, $options['proxy']['no'])
- ) {
- $conf[CURLOPT_PROXY] = $options['proxy'][$scheme];
- }
- }
- }
- }
-
- if (isset($options['cert'])) {
- $cert = $options['cert'];
- if (is_array($cert)) {
- $conf[CURLOPT_SSLCERTPASSWD] = $cert[1];
- $cert = $cert[0];
- }
- if (!file_exists($cert)) {
- throw new \InvalidArgumentException(
- "SSL certificate not found: {$cert}"
- );
- }
- $conf[CURLOPT_SSLCERT] = $cert;
- }
-
- if (isset($options['ssl_key'])) {
- if (is_array($options['ssl_key'])) {
- if (count($options['ssl_key']) === 2) {
- list($sslKey, $conf[CURLOPT_SSLKEYPASSWD]) = $options['ssl_key'];
- } else {
- list($sslKey) = $options['ssl_key'];
- }
- }
-
- $sslKey = isset($sslKey) ? $sslKey: $options['ssl_key'];
-
- if (!file_exists($sslKey)) {
- throw new \InvalidArgumentException(
- "SSL private key not found: {$sslKey}"
- );
- }
- $conf[CURLOPT_SSLKEY] = $sslKey;
- }
-
- if (isset($options['progress'])) {
- $progress = $options['progress'];
- if (!is_callable($progress)) {
- throw new \InvalidArgumentException(
- 'progress client option must be callable'
- );
- }
- $conf[CURLOPT_NOPROGRESS] = false;
- $conf[CURLOPT_PROGRESSFUNCTION] = function () use ($progress) {
- $args = func_get_args();
- // PHP 5.5 pushed the handle onto the start of the args
- if (is_resource($args[0])) {
- array_shift($args);
- }
- call_user_func_array($progress, $args);
- };
- }
-
- if (!empty($options['debug'])) {
- $conf[CURLOPT_STDERR] = \GuzzleHttp\debug_resource($options['debug']);
- $conf[CURLOPT_VERBOSE] = true;
- }
- }
-
- /**
- * This function ensures that a response was set on a transaction. If one
- * was not set, then the request is retried if possible. This error
- * typically means you are sending a payload, curl encountered a
- * "Connection died, retrying a fresh connect" error, tried to rewind the
- * stream, and then encountered a "necessary data rewind wasn't possible"
- * error, causing the request to be sent through curl_multi_info_read()
- * without an error status.
- */
- private static function retryFailedRewind(
- callable $handler,
- EasyHandle $easy,
- array $ctx
- ) {
- try {
- // Only rewind if the body has been read from.
- $body = $easy->request->getBody();
- if ($body->tell() > 0) {
- $body->rewind();
- }
- } catch (\RuntimeException $e) {
- $ctx['error'] = 'The connection unexpectedly failed without '
- . 'providing an error. The request would have been retried, '
- . 'but attempting to rewind the request body failed. '
- . 'Exception: ' . $e;
- return self::createRejection($easy, $ctx);
- }
-
- // Retry no more than 3 times before giving up.
- if (!isset($easy->options['_curl_retries'])) {
- $easy->options['_curl_retries'] = 1;
- } elseif ($easy->options['_curl_retries'] == 2) {
- $ctx['error'] = 'The cURL request was retried 3 times '
- . 'and did not succeed. The most likely reason for the failure '
- . 'is that cURL was unable to rewind the body of the request '
- . 'and subsequent retries resulted in the same error. Turn on '
- . 'the debug option to see what went wrong. See '
- . 'https://bugs.php.net/bug.php?id=47204 for more information.';
- return self::createRejection($easy, $ctx);
- } else {
- $easy->options['_curl_retries']++;
- }
-
- return $handler($easy->request, $easy->options);
- }
-
- private function createHeaderFn(EasyHandle $easy)
- {
- if (isset($easy->options['on_headers'])) {
- $onHeaders = $easy->options['on_headers'];
-
- if (!is_callable($onHeaders)) {
- throw new \InvalidArgumentException('on_headers must be callable');
- }
- } else {
- $onHeaders = null;
- }
-
- return function ($ch, $h) use (
- $onHeaders,
- $easy,
- &$startingResponse
- ) {
- $value = trim($h);
- if ($value === '') {
- $startingResponse = true;
- $easy->createResponse();
- if ($onHeaders !== null) {
- try {
- $onHeaders($easy->response);
- } catch (\Exception $e) {
- // Associate the exception with the handle and trigger
- // a curl header write error by returning 0.
- $easy->onHeadersException = $e;
- return -1;
- }
- }
- } elseif ($startingResponse) {
- $startingResponse = false;
- $easy->headers = [$value];
- } else {
- $easy->headers[] = $value;
- }
- return strlen($h);
- };
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php
deleted file mode 100644
index b0fc236..0000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use Psr\Http\Message\RequestInterface;
-
-interface CurlFactoryInterface
-{
- /**
- * Creates a cURL handle resource.
- *
- * @param RequestInterface $request Request
- * @param array $options Transfer options
- *
- * @return EasyHandle
- * @throws \RuntimeException when an option cannot be applied
- */
- public function create(RequestInterface $request, array $options);
-
- /**
- * Release an easy handle, allowing it to be reused or closed.
- *
- * This function must call unset on the easy handle's "handle" property.
- *
- * @param EasyHandle $easy
- */
- public function release(EasyHandle $easy);
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php
deleted file mode 100644
index 43577da..0000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\Psr7;
-use Psr\Http\Message\RequestInterface;
-
-/**
- * HTTP handler that uses cURL easy handles as a transport layer.
- *
- * When using the CurlHandler, custom curl options can be specified as an
- * associative array of curl option constants mapping to values in the
- * **curl** key of the "client" key of the request.
- */
-class CurlHandler
-{
- /** @var CurlFactoryInterface */
- private $factory;
-
- /**
- * Accepts an associative array of options:
- *
- * - factory: Optional curl factory used to create cURL handles.
- *
- * @param array $options Array of options to use with the handler
- */
- public function __construct(array $options = [])
- {
- $this->factory = isset($options['handle_factory'])
- ? $options['handle_factory']
- : new CurlFactory(3);
- }
-
- public function __invoke(RequestInterface $request, array $options)
- {
- if (isset($options['delay'])) {
- usleep($options['delay'] * 1000);
- }
-
- $easy = $this->factory->create($request, $options);
- curl_exec($easy->handle);
- $easy->errno = curl_errno($easy->handle);
-
- return CurlFactory::finish($this, $easy, $this->factory);
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
deleted file mode 100644
index 564c95f..0000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
+++ /dev/null
@@ -1,219 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\Promise as P;
-use GuzzleHttp\Promise\Promise;
-use GuzzleHttp\Utils;
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Returns an asynchronous response using curl_multi_* functions.
- *
- * When using the CurlMultiHandler, custom curl options can be specified as an
- * associative array of curl option constants mapping to values in the
- * **curl** key of the provided request options.
- *
- * @property resource $_mh Internal use only. Lazy loaded multi-handle.
- */
-class CurlMultiHandler
-{
- /** @var CurlFactoryInterface */
- private $factory;
- private $selectTimeout;
- private $active;
- private $handles = [];
- private $delays = [];
- private $options = [];
-
- /**
- * This handler accepts the following options:
- *
- * - handle_factory: An optional factory used to create curl handles
- * - select_timeout: Optional timeout (in seconds) to block before timing
- * out while selecting curl handles. Defaults to 1 second.
- * - options: An associative array of CURLMOPT_* options and
- * corresponding values for curl_multi_setopt()
- *
- * @param array $options
- */
- public function __construct(array $options = [])
- {
- $this->factory = isset($options['handle_factory'])
- ? $options['handle_factory'] : new CurlFactory(50);
-
- if (isset($options['select_timeout'])) {
- $this->selectTimeout = $options['select_timeout'];
- } elseif ($selectTimeout = getenv('GUZZLE_CURL_SELECT_TIMEOUT')) {
- $this->selectTimeout = $selectTimeout;
- } else {
- $this->selectTimeout = 1;
- }
-
- $this->options = isset($options['options']) ? $options['options'] : [];
- }
-
- public function __get($name)
- {
- if ($name === '_mh') {
- $this->_mh = curl_multi_init();
-
- foreach ($this->options as $option => $value) {
- // A warning is raised in case of a wrong option.
- curl_multi_setopt($this->_mh, $option, $value);
- }
-
- // Further calls to _mh will return the value directly, without entering the
- // __get() method at all.
- return $this->_mh;
- }
-
- throw new \BadMethodCallException();
- }
-
- public function __destruct()
- {
- if (isset($this->_mh)) {
- curl_multi_close($this->_mh);
- unset($this->_mh);
- }
- }
-
- public function __invoke(RequestInterface $request, array $options)
- {
- $easy = $this->factory->create($request, $options);
- $id = (int) $easy->handle;
-
- $promise = new Promise(
- [$this, 'execute'],
- function () use ($id) {
- return $this->cancel($id);
- }
- );
-
- $this->addRequest(['easy' => $easy, 'deferred' => $promise]);
-
- return $promise;
- }
-
- /**
- * Ticks the curl event loop.
- */
- public function tick()
- {
- // Add any delayed handles if needed.
- if ($this->delays) {
- $currentTime = Utils::currentTime();
- foreach ($this->delays as $id => $delay) {
- if ($currentTime >= $delay) {
- unset($this->delays[$id]);
- curl_multi_add_handle(
- $this->_mh,
- $this->handles[$id]['easy']->handle
- );
- }
- }
- }
-
- // Step through the task queue which may add additional requests.
- P\queue()->run();
-
- if ($this->active &&
- curl_multi_select($this->_mh, $this->selectTimeout) === -1
- ) {
- // Perform a usleep if a select returns -1.
- // See: https://bugs.php.net/bug.php?id=61141
- usleep(250);
- }
-
- while (curl_multi_exec($this->_mh, $this->active) === CURLM_CALL_MULTI_PERFORM);
-
- $this->processMessages();
- }
-
- /**
- * Runs until all outstanding connections have completed.
- */
- public function execute()
- {
- $queue = P\queue();
-
- while ($this->handles || !$queue->isEmpty()) {
- // If there are no transfers, then sleep for the next delay
- if (!$this->active && $this->delays) {
- usleep($this->timeToNext());
- }
- $this->tick();
- }
- }
-
- private function addRequest(array $entry)
- {
- $easy = $entry['easy'];
- $id = (int) $easy->handle;
- $this->handles[$id] = $entry;
- if (empty($easy->options['delay'])) {
- curl_multi_add_handle($this->_mh, $easy->handle);
- } else {
- $this->delays[$id] = Utils::currentTime() + ($easy->options['delay'] / 1000);
- }
- }
-
- /**
- * Cancels a handle from sending and removes references to it.
- *
- * @param int $id Handle ID to cancel and remove.
- *
- * @return bool True on success, false on failure.
- */
- private function cancel($id)
- {
- // Cannot cancel if it has been processed.
- if (!isset($this->handles[$id])) {
- return false;
- }
-
- $handle = $this->handles[$id]['easy']->handle;
- unset($this->delays[$id], $this->handles[$id]);
- curl_multi_remove_handle($this->_mh, $handle);
- curl_close($handle);
-
- return true;
- }
-
- private function processMessages()
- {
- while ($done = curl_multi_info_read($this->_mh)) {
- $id = (int) $done['handle'];
- curl_multi_remove_handle($this->_mh, $done['handle']);
-
- if (!isset($this->handles[$id])) {
- // Probably was cancelled.
- continue;
- }
-
- $entry = $this->handles[$id];
- unset($this->handles[$id], $this->delays[$id]);
- $entry['easy']->errno = $done['result'];
- $entry['deferred']->resolve(
- CurlFactory::finish(
- $this,
- $entry['easy'],
- $this->factory
- )
- );
- }
- }
-
- private function timeToNext()
- {
- $currentTime = Utils::currentTime();
- $nextTime = PHP_INT_MAX;
- foreach ($this->delays as $time) {
- if ($time < $nextTime) {
- $nextTime = $time;
- }
- }
-
- return max(0, $nextTime - $currentTime) * 1000000;
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php b/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php
deleted file mode 100644
index 7754e91..0000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\Psr7\Response;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Represents a cURL easy handle and the data it populates.
- *
- * @internal
- */
-final class EasyHandle
-{
- /** @var resource cURL resource */
- public $handle;
-
- /** @var StreamInterface Where data is being written */
- public $sink;
-
- /** @var array Received HTTP headers so far */
- public $headers = [];
-
- /** @var ResponseInterface Received response (if any) */
- public $response;
-
- /** @var RequestInterface Request being sent */
- public $request;
-
- /** @var array Request options */
- public $options = [];
-
- /** @var int cURL error number (if any) */
- public $errno = 0;
-
- /** @var \Exception Exception during on_headers (if any) */
- public $onHeadersException;
-
- /**
- * Attach a response to the easy handle based on the received headers.
- *
- * @throws \RuntimeException if no headers have been received.
- */
- public function createResponse()
- {
- if (empty($this->headers)) {
- throw new \RuntimeException('No headers have been received');
- }
-
- // HTTP-version SP status-code SP reason-phrase
- $startLine = explode(' ', array_shift($this->headers), 3);
- $headers = \GuzzleHttp\headers_from_lines($this->headers);
- $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers);
-
- if (!empty($this->options['decode_content'])
- && isset($normalizedKeys['content-encoding'])
- ) {
- $headers['x-encoded-content-encoding']
- = $headers[$normalizedKeys['content-encoding']];
- unset($headers[$normalizedKeys['content-encoding']]);
- if (isset($normalizedKeys['content-length'])) {
- $headers['x-encoded-content-length']
- = $headers[$normalizedKeys['content-length']];
-
- $bodyLength = (int) $this->sink->getSize();
- if ($bodyLength) {
- $headers[$normalizedKeys['content-length']] = $bodyLength;
- } else {
- unset($headers[$normalizedKeys['content-length']]);
- }
- }
- }
-
- // Attach a response to the easy handle with the parsed headers.
- $this->response = new Response(
- $startLine[1],
- $headers,
- $this->sink,
- substr($startLine[0], 5),
- isset($startLine[2]) ? (string) $startLine[2] : null
- );
- }
-
- public function __get($name)
- {
- $msg = $name === 'handle'
- ? 'The EasyHandle has been released'
- : 'Invalid property: ' . $name;
- throw new \BadMethodCallException($msg);
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
deleted file mode 100644
index 5b312bc..0000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
+++ /dev/null
@@ -1,195 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\Exception\RequestException;
-use GuzzleHttp\HandlerStack;
-use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Promise\RejectedPromise;
-use GuzzleHttp\TransferStats;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Handler that returns responses or throw exceptions from a queue.
- */
-class MockHandler implements \Countable
-{
- private $queue = [];
- private $lastRequest;
- private $lastOptions;
- private $onFulfilled;
- private $onRejected;
-
- /**
- * Creates a new MockHandler that uses the default handler stack list of
- * middlewares.
- *
- * @param array $queue Array of responses, callables, or exceptions.
- * @param callable $onFulfilled Callback to invoke when the return value is fulfilled.
- * @param callable $onRejected Callback to invoke when the return value is rejected.
- *
- * @return HandlerStack
- */
- public static function createWithMiddleware(
- array $queue = null,
- callable $onFulfilled = null,
- callable $onRejected = null
- ) {
- return HandlerStack::create(new self($queue, $onFulfilled, $onRejected));
- }
-
- /**
- * The passed in value must be an array of
- * {@see Psr7\Http\Message\ResponseInterface} objects, Exceptions,
- * callables, or Promises.
- *
- * @param array $queue
- * @param callable $onFulfilled Callback to invoke when the return value is fulfilled.
- * @param callable $onRejected Callback to invoke when the return value is rejected.
- */
- public function __construct(
- array $queue = null,
- callable $onFulfilled = null,
- callable $onRejected = null
- ) {
- $this->onFulfilled = $onFulfilled;
- $this->onRejected = $onRejected;
-
- if ($queue) {
- call_user_func_array([$this, 'append'], $queue);
- }
- }
-
- public function __invoke(RequestInterface $request, array $options)
- {
- if (!$this->queue) {
- throw new \OutOfBoundsException('Mock queue is empty');
- }
-
- if (isset($options['delay']) && is_numeric($options['delay'])) {
- usleep($options['delay'] * 1000);
- }
-
- $this->lastRequest = $request;
- $this->lastOptions = $options;
- $response = array_shift($this->queue);
-
- if (isset($options['on_headers'])) {
- if (!is_callable($options['on_headers'])) {
- throw new \InvalidArgumentException('on_headers must be callable');
- }
- try {
- $options['on_headers']($response);
- } catch (\Exception $e) {
- $msg = 'An error was encountered during the on_headers event';
- $response = new RequestException($msg, $request, $response, $e);
- }
- }
-
- if (is_callable($response)) {
- $response = call_user_func($response, $request, $options);
- }
-
- $response = $response instanceof \Exception
- ? \GuzzleHttp\Promise\rejection_for($response)
- : \GuzzleHttp\Promise\promise_for($response);
-
- return $response->then(
- function ($value) use ($request, $options) {
- $this->invokeStats($request, $options, $value);
- if ($this->onFulfilled) {
- call_user_func($this->onFulfilled, $value);
- }
- if (isset($options['sink'])) {
- $contents = (string) $value->getBody();
- $sink = $options['sink'];
-
- if (is_resource($sink)) {
- fwrite($sink, $contents);
- } elseif (is_string($sink)) {
- file_put_contents($sink, $contents);
- } elseif ($sink instanceof \Psr\Http\Message\StreamInterface) {
- $sink->write($contents);
- }
- }
-
- return $value;
- },
- function ($reason) use ($request, $options) {
- $this->invokeStats($request, $options, null, $reason);
- if ($this->onRejected) {
- call_user_func($this->onRejected, $reason);
- }
- return \GuzzleHttp\Promise\rejection_for($reason);
- }
- );
- }
-
- /**
- * Adds one or more variadic requests, exceptions, callables, or promises
- * to the queue.
- */
- public function append()
- {
- foreach (func_get_args() as $value) {
- if ($value instanceof ResponseInterface
- || $value instanceof \Exception
- || $value instanceof PromiseInterface
- || is_callable($value)
- ) {
- $this->queue[] = $value;
- } else {
- throw new \InvalidArgumentException('Expected a response or '
- . 'exception. Found ' . \GuzzleHttp\describe_type($value));
- }
- }
- }
-
- /**
- * Get the last received request.
- *
- * @return RequestInterface
- */
- public function getLastRequest()
- {
- return $this->lastRequest;
- }
-
- /**
- * Get the last received request options.
- *
- * @return array
- */
- public function getLastOptions()
- {
- return $this->lastOptions;
- }
-
- /**
- * Returns the number of remaining items in the queue.
- *
- * @return int
- */
- public function count()
- {
- return count($this->queue);
- }
-
- public function reset()
- {
- $this->queue = [];
- }
-
- private function invokeStats(
- RequestInterface $request,
- array $options,
- ResponseInterface $response = null,
- $reason = null
- ) {
- if (isset($options['on_stats'])) {
- $transferTime = isset($options['transfer_time']) ? $options['transfer_time'] : 0;
- $stats = new TransferStats($request, $response, $transferTime, $reason);
- call_user_func($options['on_stats'], $stats);
- }
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php b/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php
deleted file mode 100644
index f8b00be..0000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\RequestOptions;
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Provides basic proxies for handlers.
- */
-class Proxy
-{
- /**
- * Sends synchronous requests to a specific handler while sending all other
- * requests to another handler.
- *
- * @param callable $default Handler used for normal responses
- * @param callable $sync Handler used for synchronous responses.
- *
- * @return callable Returns the composed handler.
- */
- public static function wrapSync(
- callable $default,
- callable $sync
- ) {
- return function (RequestInterface $request, array $options) use ($default, $sync) {
- return empty($options[RequestOptions::SYNCHRONOUS])
- ? $default($request, $options)
- : $sync($request, $options);
- };
- }
-
- /**
- * Sends streaming requests to a streaming compatible handler while sending
- * all other requests to a default handler.
- *
- * This, for example, could be useful for taking advantage of the
- * performance benefits of curl while still supporting true streaming
- * through the StreamHandler.
- *
- * @param callable $default Handler used for non-streaming responses
- * @param callable $streaming Handler used for streaming responses
- *
- * @return callable Returns the composed handler.
- */
- public static function wrapStreaming(
- callable $default,
- callable $streaming
- ) {
- return function (RequestInterface $request, array $options) use ($default, $streaming) {
- return empty($options['stream'])
- ? $default($request, $options)
- : $streaming($request, $options);
- };
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
deleted file mode 100644
index a15734a..0000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
+++ /dev/null
@@ -1,545 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\Exception\ConnectException;
-use GuzzleHttp\Exception\RequestException;
-use GuzzleHttp\Promise\FulfilledPromise;
-use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Psr7;
-use GuzzleHttp\TransferStats;
-use GuzzleHttp\Utils;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\StreamInterface;
-
-/**
- * HTTP handler that uses PHP's HTTP stream wrapper.
- */
-class StreamHandler
-{
- private $lastHeaders = [];
-
- /**
- * Sends an HTTP request.
- *
- * @param RequestInterface $request Request to send.
- * @param array $options Request transfer options.
- *
- * @return PromiseInterface
- */
- public function __invoke(RequestInterface $request, array $options)
- {
- // Sleep if there is a delay specified.
- if (isset($options['delay'])) {
- usleep($options['delay'] * 1000);
- }
-
- $startTime = isset($options['on_stats']) ? Utils::currentTime() : null;
-
- try {
- // Does not support the expect header.
- $request = $request->withoutHeader('Expect');
-
- // Append a content-length header if body size is zero to match
- // cURL's behavior.
- if (0 === $request->getBody()->getSize()) {
- $request = $request->withHeader('Content-Length', '0');
- }
-
- return $this->createResponse(
- $request,
- $options,
- $this->createStream($request, $options),
- $startTime
- );
- } catch (\InvalidArgumentException $e) {
- throw $e;
- } catch (\Exception $e) {
- // Determine if the error was a networking error.
- $message = $e->getMessage();
- // This list can probably get more comprehensive.
- if (strpos($message, 'getaddrinfo') // DNS lookup failed
- || strpos($message, 'Connection refused')
- || strpos($message, "couldn't connect to host") // error on HHVM
- || strpos($message, "connection attempt failed")
- ) {
- $e = new ConnectException($e->getMessage(), $request, $e);
- }
- $e = RequestException::wrapException($request, $e);
- $this->invokeStats($options, $request, $startTime, null, $e);
-
- return \GuzzleHttp\Promise\rejection_for($e);
- }
- }
-
- private function invokeStats(
- array $options,
- RequestInterface $request,
- $startTime,
- ResponseInterface $response = null,
- $error = null
- ) {
- if (isset($options['on_stats'])) {
- $stats = new TransferStats(
- $request,
- $response,
- Utils::currentTime() - $startTime,
- $error,
- []
- );
- call_user_func($options['on_stats'], $stats);
- }
- }
-
- private function createResponse(
- RequestInterface $request,
- array $options,
- $stream,
- $startTime
- ) {
- $hdrs = $this->lastHeaders;
- $this->lastHeaders = [];
- $parts = explode(' ', array_shift($hdrs), 3);
- $ver = explode('/', $parts[0])[1];
- $status = $parts[1];
- $reason = isset($parts[2]) ? $parts[2] : null;
- $headers = \GuzzleHttp\headers_from_lines($hdrs);
- list($stream, $headers) = $this->checkDecode($options, $headers, $stream);
- $stream = Psr7\stream_for($stream);
- $sink = $stream;
-
- if (strcasecmp('HEAD', $request->getMethod())) {
- $sink = $this->createSink($stream, $options);
- }
-
- $response = new Psr7\Response($status, $headers, $sink, $ver, $reason);
-
- if (isset($options['on_headers'])) {
- try {
- $options['on_headers']($response);
- } catch (\Exception $e) {
- $msg = 'An error was encountered during the on_headers event';
- $ex = new RequestException($msg, $request, $response, $e);
- return \GuzzleHttp\Promise\rejection_for($ex);
- }
- }
-
- // Do not drain when the request is a HEAD request because they have
- // no body.
- if ($sink !== $stream) {
- $this->drain(
- $stream,
- $sink,
- $response->getHeaderLine('Content-Length')
- );
- }
-
- $this->invokeStats($options, $request, $startTime, $response, null);
-
- return new FulfilledPromise($response);
- }
-
- private function createSink(StreamInterface $stream, array $options)
- {
- if (!empty($options['stream'])) {
- return $stream;
- }
-
- $sink = isset($options['sink'])
- ? $options['sink']
- : fopen('php://temp', 'r+');
-
- return is_string($sink)
- ? new Psr7\LazyOpenStream($sink, 'w+')
- : Psr7\stream_for($sink);
- }
-
- private function checkDecode(array $options, array $headers, $stream)
- {
- // Automatically decode responses when instructed.
- if (!empty($options['decode_content'])) {
- $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers);
- if (isset($normalizedKeys['content-encoding'])) {
- $encoding = $headers[$normalizedKeys['content-encoding']];
- if ($encoding[0] === 'gzip' || $encoding[0] === 'deflate') {
- $stream = new Psr7\InflateStream(
- Psr7\stream_for($stream)
- );
- $headers['x-encoded-content-encoding']
- = $headers[$normalizedKeys['content-encoding']];
- // Remove content-encoding header
- unset($headers[$normalizedKeys['content-encoding']]);
- // Fix content-length header
- if (isset($normalizedKeys['content-length'])) {
- $headers['x-encoded-content-length']
- = $headers[$normalizedKeys['content-length']];
-
- $length = (int) $stream->getSize();
- if ($length === 0) {
- unset($headers[$normalizedKeys['content-length']]);
- } else {
- $headers[$normalizedKeys['content-length']] = [$length];
- }
- }
- }
- }
- }
-
- return [$stream, $headers];
- }
-
- /**
- * Drains the source stream into the "sink" client option.
- *
- * @param StreamInterface $source
- * @param StreamInterface $sink
- * @param string $contentLength Header specifying the amount of
- * data to read.
- *
- * @return StreamInterface
- * @throws \RuntimeException when the sink option is invalid.
- */
- private function drain(
- StreamInterface $source,
- StreamInterface $sink,
- $contentLength
- ) {
- // If a content-length header is provided, then stop reading once
- // that number of bytes has been read. This can prevent infinitely
- // reading from a stream when dealing with servers that do not honor
- // Connection: Close headers.
- Psr7\copy_to_stream(
- $source,
- $sink,
- (strlen($contentLength) > 0 && (int) $contentLength > 0) ? (int) $contentLength : -1
- );
-
- $sink->seek(0);
- $source->close();
-
- return $sink;
- }
-
- /**
- * Create a resource and check to ensure it was created successfully
- *
- * @param callable $callback Callable that returns stream resource
- *
- * @return resource
- * @throws \RuntimeException on error
- */
- private function createResource(callable $callback)
- {
- $errors = null;
- set_error_handler(function ($_, $msg, $file, $line) use (&$errors) {
- $errors[] = [
- 'message' => $msg,
- 'file' => $file,
- 'line' => $line
- ];
- return true;
- });
-
- $resource = $callback();
- restore_error_handler();
-
- if (!$resource) {
- $message = 'Error creating resource: ';
- foreach ($errors as $err) {
- foreach ($err as $key => $value) {
- $message .= "[$key] $value" . PHP_EOL;
- }
- }
- throw new \RuntimeException(trim($message));
- }
-
- return $resource;
- }
-
- private function createStream(RequestInterface $request, array $options)
- {
- static $methods;
- if (!$methods) {
- $methods = array_flip(get_class_methods(__CLASS__));
- }
-
- // HTTP/1.1 streams using the PHP stream wrapper require a
- // Connection: close header
- if ($request->getProtocolVersion() == '1.1'
- && !$request->hasHeader('Connection')
- ) {
- $request = $request->withHeader('Connection', 'close');
- }
-
- // Ensure SSL is verified by default
- if (!isset($options['verify'])) {
- $options['verify'] = true;
- }
-
- $params = [];
- $context = $this->getDefaultContext($request);
-
- if (isset($options['on_headers']) && !is_callable($options['on_headers'])) {
- throw new \InvalidArgumentException('on_headers must be callable');
- }
-
- if (!empty($options)) {
- foreach ($options as $key => $value) {
- $method = "add_{$key}";
- if (isset($methods[$method])) {
- $this->{$method}($request, $context, $value, $params);
- }
- }
- }
-
- if (isset($options['stream_context'])) {
- if (!is_array($options['stream_context'])) {
- throw new \InvalidArgumentException('stream_context must be an array');
- }
- $context = array_replace_recursive(
- $context,
- $options['stream_context']
- );
- }
-
- // Microsoft NTLM authentication only supported with curl handler
- if (isset($options['auth'])
- && is_array($options['auth'])
- && isset($options['auth'][2])
- && 'ntlm' == $options['auth'][2]
- ) {
- throw new \InvalidArgumentException('Microsoft NTLM authentication only supported with curl handler');
- }
-
- $uri = $this->resolveHost($request, $options);
-
- $context = $this->createResource(
- function () use ($context, $params) {
- return stream_context_create($context, $params);
- }
- );
-
- return $this->createResource(
- function () use ($uri, &$http_response_header, $context, $options) {
- $resource = fopen((string) $uri, 'r', null, $context);
- $this->lastHeaders = $http_response_header;
-
- if (isset($options['read_timeout'])) {
- $readTimeout = $options['read_timeout'];
- $sec = (int) $readTimeout;
- $usec = ($readTimeout - $sec) * 100000;
- stream_set_timeout($resource, $sec, $usec);
- }
-
- return $resource;
- }
- );
- }
-
- private function resolveHost(RequestInterface $request, array $options)
- {
- $uri = $request->getUri();
-
- if (isset($options['force_ip_resolve']) && !filter_var($uri->getHost(), FILTER_VALIDATE_IP)) {
- if ('v4' === $options['force_ip_resolve']) {
- $records = dns_get_record($uri->getHost(), DNS_A);
- if (!isset($records[0]['ip'])) {
- throw new ConnectException(
- sprintf(
- "Could not resolve IPv4 address for host '%s'",
- $uri->getHost()
- ),
- $request
- );
- }
- $uri = $uri->withHost($records[0]['ip']);
- } elseif ('v6' === $options['force_ip_resolve']) {
- $records = dns_get_record($uri->getHost(), DNS_AAAA);
- if (!isset($records[0]['ipv6'])) {
- throw new ConnectException(
- sprintf(
- "Could not resolve IPv6 address for host '%s'",
- $uri->getHost()
- ),
- $request
- );
- }
- $uri = $uri->withHost('[' . $records[0]['ipv6'] . ']');
- }
- }
-
- return $uri;
- }
-
- private function getDefaultContext(RequestInterface $request)
- {
- $headers = '';
- foreach ($request->getHeaders() as $name => $value) {
- foreach ($value as $val) {
- $headers .= "$name: $val\r\n";
- }
- }
-
- $context = [
- 'http' => [
- 'method' => $request->getMethod(),
- 'header' => $headers,
- 'protocol_version' => $request->getProtocolVersion(),
- 'ignore_errors' => true,
- 'follow_location' => 0,
- ],
- ];
-
- $body = (string) $request->getBody();
-
- if (!empty($body)) {
- $context['http']['content'] = $body;
- // Prevent the HTTP handler from adding a Content-Type header.
- if (!$request->hasHeader('Content-Type')) {
- $context['http']['header'] .= "Content-Type:\r\n";
- }
- }
-
- $context['http']['header'] = rtrim($context['http']['header']);
-
- return $context;
- }
-
- private function add_proxy(RequestInterface $request, &$options, $value, &$params)
- {
- if (!is_array($value)) {
- $options['http']['proxy'] = $value;
- } else {
- $scheme = $request->getUri()->getScheme();
- if (isset($value[$scheme])) {
- if (!isset($value['no'])
- || !\GuzzleHttp\is_host_in_noproxy(
- $request->getUri()->getHost(),
- $value['no']
- )
- ) {
- $options['http']['proxy'] = $value[$scheme];
- }
- }
- }
- }
-
- private function add_timeout(RequestInterface $request, &$options, $value, &$params)
- {
- if ($value > 0) {
- $options['http']['timeout'] = $value;
- }
- }
-
- private function add_verify(RequestInterface $request, &$options, $value, &$params)
- {
- if ($value === true) {
- // PHP 5.6 or greater will find the system cert by default. When
- // < 5.6, use the Guzzle bundled cacert.
- if (PHP_VERSION_ID < 50600) {
- $options['ssl']['cafile'] = \GuzzleHttp\default_ca_bundle();
- }
- } elseif (is_string($value)) {
- $options['ssl']['cafile'] = $value;
- if (!file_exists($value)) {
- throw new \RuntimeException("SSL CA bundle not found: $value");
- }
- } elseif ($value === false) {
- $options['ssl']['verify_peer'] = false;
- $options['ssl']['verify_peer_name'] = false;
- return;
- } else {
- throw new \InvalidArgumentException('Invalid verify request option');
- }
-
- $options['ssl']['verify_peer'] = true;
- $options['ssl']['verify_peer_name'] = true;
- $options['ssl']['allow_self_signed'] = false;
- }
-
- private function add_cert(RequestInterface $request, &$options, $value, &$params)
- {
- if (is_array($value)) {
- $options['ssl']['passphrase'] = $value[1];
- $value = $value[0];
- }
-
- if (!file_exists($value)) {
- throw new \RuntimeException("SSL certificate not found: {$value}");
- }
-
- $options['ssl']['local_cert'] = $value;
- }
-
- private function add_progress(RequestInterface $request, &$options, $value, &$params)
- {
- $this->addNotification(
- $params,
- function ($code, $a, $b, $c, $transferred, $total) use ($value) {
- if ($code == STREAM_NOTIFY_PROGRESS) {
- $value($total, $transferred, null, null);
- }
- }
- );
- }
-
- private function add_debug(RequestInterface $request, &$options, $value, &$params)
- {
- if ($value === false) {
- return;
- }
-
- static $map = [
- STREAM_NOTIFY_CONNECT => 'CONNECT',
- STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED',
- STREAM_NOTIFY_AUTH_RESULT => 'AUTH_RESULT',
- STREAM_NOTIFY_MIME_TYPE_IS => 'MIME_TYPE_IS',
- STREAM_NOTIFY_FILE_SIZE_IS => 'FILE_SIZE_IS',
- STREAM_NOTIFY_REDIRECTED => 'REDIRECTED',
- STREAM_NOTIFY_PROGRESS => 'PROGRESS',
- STREAM_NOTIFY_FAILURE => 'FAILURE',
- STREAM_NOTIFY_COMPLETED => 'COMPLETED',
- STREAM_NOTIFY_RESOLVE => 'RESOLVE',
- ];
- static $args = ['severity', 'message', 'message_code',
- 'bytes_transferred', 'bytes_max'];
-
- $value = \GuzzleHttp\debug_resource($value);
- $ident = $request->getMethod() . ' ' . $request->getUri()->withFragment('');
- $this->addNotification(
- $params,
- function () use ($ident, $value, $map, $args) {
- $passed = func_get_args();
- $code = array_shift($passed);
- fprintf($value, '<%s> [%s] ', $ident, $map[$code]);
- foreach (array_filter($passed) as $i => $v) {
- fwrite($value, $args[$i] . ': "' . $v . '" ');
- }
- fwrite($value, "\n");
- }
- );
- }
-
- private function addNotification(array &$params, callable $notify)
- {
- // Wrap the existing function if needed.
- if (!isset($params['notification'])) {
- $params['notification'] = $notify;
- } else {
- $params['notification'] = $this->callArray([
- $params['notification'],
- $notify
- ]);
- }
- }
-
- private function callArray(array $functions)
- {
- return function () use ($functions) {
- $args = func_get_args();
- foreach ($functions as $fn) {
- call_user_func_array($fn, $args);
- }
- };
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/HandlerStack.php b/vendor/guzzlehttp/guzzle/src/HandlerStack.php
deleted file mode 100644
index 6a49cc0..0000000
--- a/vendor/guzzlehttp/guzzle/src/HandlerStack.php
+++ /dev/null
@@ -1,277 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Promise\PromiseInterface;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Creates a composed Guzzle handler function by stacking middlewares on top of
- * an HTTP handler function.
- */
-class HandlerStack
-{
- /** @var callable|null */
- private $handler;
-
- /** @var array */
- private $stack = [];
-
- /** @var callable|null */
- private $cached;
-
- /**
- * Creates a default handler stack that can be used by clients.
- *
- * The returned handler will wrap the provided handler or use the most
- * appropriate default handler for your system. The returned HandlerStack has
- * support for cookies, redirects, HTTP error exceptions, and preparing a body
- * before sending.
- *
- * The returned handler stack can be passed to a client in the "handler"
- * option.
- *
- * @param callable $handler HTTP handler function to use with the stack. If no
- * handler is provided, the best handler for your
- * system will be utilized.
- *
- * @return HandlerStack
- */
- public static function create(callable $handler = null)
- {
- $stack = new self($handler ?: choose_handler());
- $stack->push(Middleware::httpErrors(), 'http_errors');
- $stack->push(Middleware::redirect(), 'allow_redirects');
- $stack->push(Middleware::cookies(), 'cookies');
- $stack->push(Middleware::prepareBody(), 'prepare_body');
-
- return $stack;
- }
-
- /**
- * @param callable $handler Underlying HTTP handler.
- */
- public function __construct(callable $handler = null)
- {
- $this->handler = $handler;
- }
-
- /**
- * Invokes the handler stack as a composed handler
- *
- * @param RequestInterface $request
- * @param array $options
- *
- * @return ResponseInterface|PromiseInterface
- */
- public function __invoke(RequestInterface $request, array $options)
- {
- $handler = $this->resolve();
-
- return $handler($request, $options);
- }
-
- /**
- * Dumps a string representation of the stack.
- *
- * @return string
- */
- public function __toString()
- {
- $depth = 0;
- $stack = [];
- if ($this->handler) {
- $stack[] = "0) Handler: " . $this->debugCallable($this->handler);
- }
-
- $result = '';
- foreach (array_reverse($this->stack) as $tuple) {
- $depth++;
- $str = "{$depth}) Name: '{$tuple[1]}', ";
- $str .= "Function: " . $this->debugCallable($tuple[0]);
- $result = "> {$str}\n{$result}";
- $stack[] = $str;
- }
-
- foreach (array_keys($stack) as $k) {
- $result .= "< {$stack[$k]}\n";
- }
-
- return $result;
- }
-
- /**
- * Set the HTTP handler that actually returns a promise.
- *
- * @param callable $handler Accepts a request and array of options and
- * returns a Promise.
- */
- public function setHandler(callable $handler)
- {
- $this->handler = $handler;
- $this->cached = null;
- }
-
- /**
- * Returns true if the builder has a handler.
- *
- * @return bool
- */
- public function hasHandler()
- {
- return (bool) $this->handler;
- }
-
- /**
- * Unshift a middleware to the bottom of the stack.
- *
- * @param callable $middleware Middleware function
- * @param string $name Name to register for this middleware.
- */
- public function unshift(callable $middleware, $name = null)
- {
- array_unshift($this->stack, [$middleware, $name]);
- $this->cached = null;
- }
-
- /**
- * Push a middleware to the top of the stack.
- *
- * @param callable $middleware Middleware function
- * @param string $name Name to register for this middleware.
- */
- public function push(callable $middleware, $name = '')
- {
- $this->stack[] = [$middleware, $name];
- $this->cached = null;
- }
-
- /**
- * Add a middleware before another middleware by name.
- *
- * @param string $findName Middleware to find
- * @param callable $middleware Middleware function
- * @param string $withName Name to register for this middleware.
- */
- public function before($findName, callable $middleware, $withName = '')
- {
- $this->splice($findName, $withName, $middleware, true);
- }
-
- /**
- * Add a middleware after another middleware by name.
- *
- * @param string $findName Middleware to find
- * @param callable $middleware Middleware function
- * @param string $withName Name to register for this middleware.
- */
- public function after($findName, callable $middleware, $withName = '')
- {
- $this->splice($findName, $withName, $middleware, false);
- }
-
- /**
- * Remove a middleware by instance or name from the stack.
- *
- * @param callable|string $remove Middleware to remove by instance or name.
- */
- public function remove($remove)
- {
- $this->cached = null;
- $idx = is_callable($remove) ? 0 : 1;
- $this->stack = array_values(array_filter(
- $this->stack,
- function ($tuple) use ($idx, $remove) {
- return $tuple[$idx] !== $remove;
- }
- ));
- }
-
- /**
- * Compose the middleware and handler into a single callable function.
- *
- * @return callable
- */
- public function resolve()
- {
- if (!$this->cached) {
- if (!($prev = $this->handler)) {
- throw new \LogicException('No handler has been specified');
- }
-
- foreach (array_reverse($this->stack) as $fn) {
- $prev = $fn[0]($prev);
- }
-
- $this->cached = $prev;
- }
-
- return $this->cached;
- }
-
- /**
- * @param string $name
- * @return int
- */
- private function findByName($name)
- {
- foreach ($this->stack as $k => $v) {
- if ($v[1] === $name) {
- return $k;
- }
- }
-
- throw new \InvalidArgumentException("Middleware not found: $name");
- }
-
- /**
- * Splices a function into the middleware list at a specific position.
- *
- * @param string $findName
- * @param string $withName
- * @param callable $middleware
- * @param bool $before
- */
- private function splice($findName, $withName, callable $middleware, $before)
- {
- $this->cached = null;
- $idx = $this->findByName($findName);
- $tuple = [$middleware, $withName];
-
- if ($before) {
- if ($idx === 0) {
- array_unshift($this->stack, $tuple);
- } else {
- $replacement = [$tuple, $this->stack[$idx]];
- array_splice($this->stack, $idx, 1, $replacement);
- }
- } elseif ($idx === count($this->stack) - 1) {
- $this->stack[] = $tuple;
- } else {
- $replacement = [$this->stack[$idx], $tuple];
- array_splice($this->stack, $idx, 1, $replacement);
- }
- }
-
- /**
- * Provides a debug string for a given callable.
- *
- * @param array|callable $fn Function to write as a string.
- *
- * @return string
- */
- private function debugCallable($fn)
- {
- if (is_string($fn)) {
- return "callable({$fn})";
- }
-
- if (is_array($fn)) {
- return is_string($fn[0])
- ? "callable({$fn[0]}::{$fn[1]})"
- : "callable(['" . get_class($fn[0]) . "', '{$fn[1]}'])";
- }
-
- return 'callable(' . spl_object_hash($fn) . ')';
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/MessageFormatter.php b/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
deleted file mode 100644
index dc36bb5..0000000
--- a/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
+++ /dev/null
@@ -1,185 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use Psr\Http\Message\MessageInterface;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Formats log messages using variable substitutions for requests, responses,
- * and other transactional data.
- *
- * The following variable substitutions are supported:
- *
- * - {request}: Full HTTP request message
- * - {response}: Full HTTP response message
- * - {ts}: ISO 8601 date in GMT
- * - {date_iso_8601} ISO 8601 date in GMT
- * - {date_common_log} Apache common log date using the configured timezone.
- * - {host}: Host of the request
- * - {method}: Method of the request
- * - {uri}: URI of the request
- * - {version}: Protocol version
- * - {target}: Request target of the request (path + query + fragment)
- * - {hostname}: Hostname of the machine that sent the request
- * - {code}: Status code of the response (if available)
- * - {phrase}: Reason phrase of the response (if available)
- * - {error}: Any error messages (if available)
- * - {req_header_*}: Replace `*` with the lowercased name of a request header to add to the message
- * - {res_header_*}: Replace `*` with the lowercased name of a response header to add to the message
- * - {req_headers}: Request headers
- * - {res_headers}: Response headers
- * - {req_body}: Request body
- * - {res_body}: Response body
- */
-class MessageFormatter
-{
- /**
- * Apache Common Log Format.
- * @link http://httpd.apache.org/docs/2.4/logs.html#common
- * @var string
- */
- const CLF = "{hostname} {req_header_User-Agent} - [{date_common_log}] \"{method} {target} HTTP/{version}\" {code} {res_header_Content-Length}";
- const DEBUG = ">>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}";
- const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}';
-
- /** @var string Template used to format log messages */
- private $template;
-
- /**
- * @param string $template Log message template
- */
- public function __construct($template = self::CLF)
- {
- $this->template = $template ?: self::CLF;
- }
-
- /**
- * Returns a formatted message string.
- *
- * @param RequestInterface $request Request that was sent
- * @param ResponseInterface $response Response that was received
- * @param \Exception $error Exception that was received
- *
- * @return string
- */
- public function format(
- RequestInterface $request,
- ResponseInterface $response = null,
- \Exception $error = null
- ) {
- $cache = [];
-
- return preg_replace_callback(
- '/{\s*([A-Za-z_\-\.0-9]+)\s*}/',
- function (array $matches) use ($request, $response, $error, &$cache) {
- if (isset($cache[$matches[1]])) {
- return $cache[$matches[1]];
- }
-
- $result = '';
- switch ($matches[1]) {
- case 'request':
- $result = Psr7\str($request);
- break;
- case 'response':
- $result = $response ? Psr7\str($response) : '';
- break;
- case 'req_headers':
- $result = trim($request->getMethod()
- . ' ' . $request->getRequestTarget())
- . ' HTTP/' . $request->getProtocolVersion() . "\r\n"
- . $this->headers($request);
- break;
- case 'res_headers':
- $result = $response ?
- sprintf(
- 'HTTP/%s %d %s',
- $response->getProtocolVersion(),
- $response->getStatusCode(),
- $response->getReasonPhrase()
- ) . "\r\n" . $this->headers($response)
- : 'NULL';
- break;
- case 'req_body':
- $result = $request->getBody();
- break;
- case 'res_body':
- $result = $response ? $response->getBody() : 'NULL';
- break;
- case 'ts':
- case 'date_iso_8601':
- $result = gmdate('c');
- break;
- case 'date_common_log':
- $result = date('d/M/Y:H:i:s O');
- break;
- case 'method':
- $result = $request->getMethod();
- break;
- case 'version':
- $result = $request->getProtocolVersion();
- break;
- case 'uri':
- case 'url':
- $result = $request->getUri();
- break;
- case 'target':
- $result = $request->getRequestTarget();
- break;
- case 'req_version':
- $result = $request->getProtocolVersion();
- break;
- case 'res_version':
- $result = $response
- ? $response->getProtocolVersion()
- : 'NULL';
- break;
- case 'host':
- $result = $request->getHeaderLine('Host');
- break;
- case 'hostname':
- $result = gethostname();
- break;
- case 'code':
- $result = $response ? $response->getStatusCode() : 'NULL';
- break;
- case 'phrase':
- $result = $response ? $response->getReasonPhrase() : 'NULL';
- break;
- case 'error':
- $result = $error ? $error->getMessage() : 'NULL';
- break;
- default:
- // handle prefixed dynamic headers
- if (strpos($matches[1], 'req_header_') === 0) {
- $result = $request->getHeaderLine(substr($matches[1], 11));
- } elseif (strpos($matches[1], 'res_header_') === 0) {
- $result = $response
- ? $response->getHeaderLine(substr($matches[1], 11))
- : 'NULL';
- }
- }
-
- $cache[$matches[1]] = $result;
- return $result;
- },
- $this->template
- );
- }
-
- /**
- * Get headers from message as string
- *
- * @return string
- */
- private function headers(MessageInterface $message)
- {
- $result = '';
- foreach ($message->getHeaders() as $name => $values) {
- $result .= $name . ': ' . implode(', ', $values) . "\r\n";
- }
-
- return trim($result);
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Middleware.php b/vendor/guzzlehttp/guzzle/src/Middleware.php
deleted file mode 100644
index bffc197..0000000
--- a/vendor/guzzlehttp/guzzle/src/Middleware.php
+++ /dev/null
@@ -1,254 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Cookie\CookieJarInterface;
-use GuzzleHttp\Exception\RequestException;
-use GuzzleHttp\Promise\RejectedPromise;
-use GuzzleHttp\Psr7;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Log\LoggerInterface;
-
-/**
- * Functions used to create and wrap handlers with handler middleware.
- */
-final class Middleware
-{
- /**
- * Middleware that adds cookies to requests.
- *
- * The options array must be set to a CookieJarInterface in order to use
- * cookies. This is typically handled for you by a client.
- *
- * @return callable Returns a function that accepts the next handler.
- */
- public static function cookies()
- {
- return function (callable $handler) {
- return function ($request, array $options) use ($handler) {
- if (empty($options['cookies'])) {
- return $handler($request, $options);
- } elseif (!($options['cookies'] instanceof CookieJarInterface)) {
- throw new \InvalidArgumentException('cookies must be an instance of GuzzleHttp\Cookie\CookieJarInterface');
- }
- $cookieJar = $options['cookies'];
- $request = $cookieJar->withCookieHeader($request);
- return $handler($request, $options)
- ->then(
- function ($response) use ($cookieJar, $request) {
- $cookieJar->extractCookies($request, $response);
- return $response;
- }
- );
- };
- };
- }
-
- /**
- * Middleware that throws exceptions for 4xx or 5xx responses when the
- * "http_error" request option is set to true.
- *
- * @return callable Returns a function that accepts the next handler.
- */
- public static function httpErrors()
- {
- return function (callable $handler) {
- return function ($request, array $options) use ($handler) {
- if (empty($options['http_errors'])) {
- return $handler($request, $options);
- }
- return $handler($request, $options)->then(
- function (ResponseInterface $response) use ($request) {
- $code = $response->getStatusCode();
- if ($code < 400) {
- return $response;
- }
- throw RequestException::create($request, $response);
- }
- );
- };
- };
- }
-
- /**
- * Middleware that pushes history data to an ArrayAccess container.
- *
- * @param array|\ArrayAccess $container Container to hold the history (by reference).
- *
- * @return callable Returns a function that accepts the next handler.
- * @throws \InvalidArgumentException if container is not an array or ArrayAccess.
- */
- public static function history(&$container)
- {
- if (!is_array($container) && !$container instanceof \ArrayAccess) {
- throw new \InvalidArgumentException('history container must be an array or object implementing ArrayAccess');
- }
-
- return function (callable $handler) use (&$container) {
- return function ($request, array $options) use ($handler, &$container) {
- return $handler($request, $options)->then(
- function ($value) use ($request, &$container, $options) {
- $container[] = [
- 'request' => $request,
- 'response' => $value,
- 'error' => null,
- 'options' => $options
- ];
- return $value;
- },
- function ($reason) use ($request, &$container, $options) {
- $container[] = [
- 'request' => $request,
- 'response' => null,
- 'error' => $reason,
- 'options' => $options
- ];
- return \GuzzleHttp\Promise\rejection_for($reason);
- }
- );
- };
- };
- }
-
- /**
- * Middleware that invokes a callback before and after sending a request.
- *
- * The provided listener cannot modify or alter the response. It simply
- * "taps" into the chain to be notified before returning the promise. The
- * before listener accepts a request and options array, and the after
- * listener accepts a request, options array, and response promise.
- *
- * @param callable $before Function to invoke before forwarding the request.
- * @param callable $after Function invoked after forwarding.
- *
- * @return callable Returns a function that accepts the next handler.
- */
- public static function tap(callable $before = null, callable $after = null)
- {
- return function (callable $handler) use ($before, $after) {
- return function ($request, array $options) use ($handler, $before, $after) {
- if ($before) {
- $before($request, $options);
- }
- $response = $handler($request, $options);
- if ($after) {
- $after($request, $options, $response);
- }
- return $response;
- };
- };
- }
-
- /**
- * Middleware that handles request redirects.
- *
- * @return callable Returns a function that accepts the next handler.
- */
- public static function redirect()
- {
- return function (callable $handler) {
- return new RedirectMiddleware($handler);
- };
- }
-
- /**
- * Middleware that retries requests based on the boolean result of
- * invoking the provided "decider" function.
- *
- * If no delay function is provided, a simple implementation of exponential
- * backoff will be utilized.
- *
- * @param callable $decider Function that accepts the number of retries,
- * a request, [response], and [exception] and
- * returns true if the request is to be retried.
- * @param callable $delay Function that accepts the number of retries and
- * returns the number of milliseconds to delay.
- *
- * @return callable Returns a function that accepts the next handler.
- */
- public static function retry(callable $decider, callable $delay = null)
- {
- return function (callable $handler) use ($decider, $delay) {
- return new RetryMiddleware($decider, $handler, $delay);
- };
- }
-
- /**
- * Middleware that logs requests, responses, and errors using a message
- * formatter.
- *
- * @param LoggerInterface $logger Logs messages.
- * @param MessageFormatter $formatter Formatter used to create message strings.
- * @param string $logLevel Level at which to log requests.
- *
- * @return callable Returns a function that accepts the next handler.
- */
- public static function log(LoggerInterface $logger, MessageFormatter $formatter, $logLevel = 'info' /* \Psr\Log\LogLevel::INFO */)
- {
- return function (callable $handler) use ($logger, $formatter, $logLevel) {
- return function ($request, array $options) use ($handler, $logger, $formatter, $logLevel) {
- return $handler($request, $options)->then(
- function ($response) use ($logger, $request, $formatter, $logLevel) {
- $message = $formatter->format($request, $response);
- $logger->log($logLevel, $message);
- return $response;
- },
- function ($reason) use ($logger, $request, $formatter) {
- $response = $reason instanceof RequestException
- ? $reason->getResponse()
- : null;
- $message = $formatter->format($request, $response, $reason);
- $logger->notice($message);
- return \GuzzleHttp\Promise\rejection_for($reason);
- }
- );
- };
- };
- }
-
- /**
- * This middleware adds a default content-type if possible, a default
- * content-length or transfer-encoding header, and the expect header.
- *
- * @return callable
- */
- public static function prepareBody()
- {
- return function (callable $handler) {
- return new PrepareBodyMiddleware($handler);
- };
- }
-
- /**
- * Middleware that applies a map function to the request before passing to
- * the next handler.
- *
- * @param callable $fn Function that accepts a RequestInterface and returns
- * a RequestInterface.
- * @return callable
- */
- public static function mapRequest(callable $fn)
- {
- return function (callable $handler) use ($fn) {
- return function ($request, array $options) use ($handler, $fn) {
- return $handler($fn($request), $options);
- };
- };
- }
-
- /**
- * Middleware that applies a map function to the resolved promise's
- * response.
- *
- * @param callable $fn Function that accepts a ResponseInterface and
- * returns a ResponseInterface.
- * @return callable
- */
- public static function mapResponse(callable $fn)
- {
- return function (callable $handler) use ($fn) {
- return function ($request, array $options) use ($handler, $fn) {
- return $handler($request, $options)->then($fn);
- };
- };
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Pool.php b/vendor/guzzlehttp/guzzle/src/Pool.php
deleted file mode 100644
index 5838db4..0000000
--- a/vendor/guzzlehttp/guzzle/src/Pool.php
+++ /dev/null
@@ -1,134 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Promise\EachPromise;
-use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Promise\PromisorInterface;
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Sends an iterator of requests concurrently using a capped pool size.
- *
- * The pool will read from an iterator until it is cancelled or until the
- * iterator is consumed. When a request is yielded, the request is sent after
- * applying the "request_options" request options (if provided in the ctor).
- *
- * When a function is yielded by the iterator, the function is provided the
- * "request_options" array that should be merged on top of any existing
- * options, and the function MUST then return a wait-able promise.
- */
-class Pool implements PromisorInterface
-{
- /** @var EachPromise */
- private $each;
-
- /**
- * @param ClientInterface $client Client used to send the requests.
- * @param array|\Iterator $requests Requests or functions that return
- * requests to send concurrently.
- * @param array $config Associative array of options
- * - concurrency: (int) Maximum number of requests to send concurrently
- * - options: Array of request options to apply to each request.
- * - fulfilled: (callable) Function to invoke when a request completes.
- * - rejected: (callable) Function to invoke when a request is rejected.
- */
- public function __construct(
- ClientInterface $client,
- $requests,
- array $config = []
- ) {
- // Backwards compatibility.
- if (isset($config['pool_size'])) {
- $config['concurrency'] = $config['pool_size'];
- } elseif (!isset($config['concurrency'])) {
- $config['concurrency'] = 25;
- }
-
- if (isset($config['options'])) {
- $opts = $config['options'];
- unset($config['options']);
- } else {
- $opts = [];
- }
-
- $iterable = \GuzzleHttp\Promise\iter_for($requests);
- $requests = function () use ($iterable, $client, $opts) {
- foreach ($iterable as $key => $rfn) {
- if ($rfn instanceof RequestInterface) {
- yield $key => $client->sendAsync($rfn, $opts);
- } elseif (is_callable($rfn)) {
- yield $key => $rfn($opts);
- } else {
- throw new \InvalidArgumentException('Each value yielded by '
- . 'the iterator must be a Psr7\Http\Message\RequestInterface '
- . 'or a callable that returns a promise that fulfills '
- . 'with a Psr7\Message\Http\ResponseInterface object.');
- }
- }
- };
-
- $this->each = new EachPromise($requests(), $config);
- }
-
- /**
- * Get promise
- *
- * @return PromiseInterface
- */
- public function promise()
- {
- return $this->each->promise();
- }
-
- /**
- * Sends multiple requests concurrently and returns an array of responses
- * and exceptions that uses the same ordering as the provided requests.
- *
- * IMPORTANT: This method keeps every request and response in memory, and
- * as such, is NOT recommended when sending a large number or an
- * indeterminate number of requests concurrently.
- *
- * @param ClientInterface $client Client used to send the requests
- * @param array|\Iterator $requests Requests to send concurrently.
- * @param array $options Passes through the options available in
- * {@see GuzzleHttp\Pool::__construct}
- *
- * @return array Returns an array containing the response or an exception
- * in the same order that the requests were sent.
- * @throws \InvalidArgumentException if the event format is incorrect.
- */
- public static function batch(
- ClientInterface $client,
- $requests,
- array $options = []
- ) {
- $res = [];
- self::cmpCallback($options, 'fulfilled', $res);
- self::cmpCallback($options, 'rejected', $res);
- $pool = new static($client, $requests, $options);
- $pool->promise()->wait();
- ksort($res);
-
- return $res;
- }
-
- /**
- * Execute callback(s)
- *
- * @return void
- */
- private static function cmpCallback(array &$options, $name, array &$results)
- {
- if (!isset($options[$name])) {
- $options[$name] = function ($v, $k) use (&$results) {
- $results[$k] = $v;
- };
- } else {
- $currentFn = $options[$name];
- $options[$name] = function ($v, $k) use (&$results, $currentFn) {
- $currentFn($v, $k);
- $results[$k] = $v;
- };
- }
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php b/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
deleted file mode 100644
index 568a1e9..0000000
--- a/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Psr7;
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Prepares requests that contain a body, adding the Content-Length,
- * Content-Type, and Expect headers.
- */
-class PrepareBodyMiddleware
-{
- /** @var callable */
- private $nextHandler;
-
- /**
- * @param callable $nextHandler Next handler to invoke.
- */
- public function __construct(callable $nextHandler)
- {
- $this->nextHandler = $nextHandler;
- }
-
- /**
- * @param RequestInterface $request
- * @param array $options
- *
- * @return PromiseInterface
- */
- public function __invoke(RequestInterface $request, array $options)
- {
- $fn = $this->nextHandler;
-
- // Don't do anything if the request has no body.
- if ($request->getBody()->getSize() === 0) {
- return $fn($request, $options);
- }
-
- $modify = [];
-
- // Add a default content-type if possible.
- if (!$request->hasHeader('Content-Type')) {
- if ($uri = $request->getBody()->getMetadata('uri')) {
- if ($type = Psr7\mimetype_from_filename($uri)) {
- $modify['set_headers']['Content-Type'] = $type;
- }
- }
- }
-
- // Add a default content-length or transfer-encoding header.
- if (!$request->hasHeader('Content-Length')
- && !$request->hasHeader('Transfer-Encoding')
- ) {
- $size = $request->getBody()->getSize();
- if ($size !== null) {
- $modify['set_headers']['Content-Length'] = $size;
- } else {
- $modify['set_headers']['Transfer-Encoding'] = 'chunked';
- }
- }
-
- // Add the expect header if needed.
- $this->addExpectHeader($request, $options, $modify);
-
- return $fn(Psr7\modify_request($request, $modify), $options);
- }
-
- /**
- * Add expect header
- *
- * @return void
- */
- private function addExpectHeader(
- RequestInterface $request,
- array $options,
- array &$modify
- ) {
- // Determine if the Expect header should be used
- if ($request->hasHeader('Expect')) {
- return;
- }
-
- $expect = isset($options['expect']) ? $options['expect'] : null;
-
- // Return if disabled or if you're not using HTTP/1.1 or HTTP/2.0
- if ($expect === false || $request->getProtocolVersion() < 1.1) {
- return;
- }
-
- // The expect header is unconditionally enabled
- if ($expect === true) {
- $modify['set_headers']['Expect'] = '100-Continue';
- return;
- }
-
- // By default, send the expect header when the payload is > 1mb
- if ($expect === null) {
- $expect = 1048576;
- }
-
- // Always add if the body cannot be rewound, the size cannot be
- // determined, or the size is greater than the cutoff threshold
- $body = $request->getBody();
- $size = $body->getSize();
-
- if ($size === null || $size >= (int) $expect || !$body->isSeekable()) {
- $modify['set_headers']['Expect'] = '100-Continue';
- }
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php b/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
deleted file mode 100644
index e4644b7..0000000
--- a/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
+++ /dev/null
@@ -1,255 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Exception\BadResponseException;
-use GuzzleHttp\Exception\TooManyRedirectsException;
-use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Psr7;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * Request redirect middleware.
- *
- * Apply this middleware like other middleware using
- * {@see \GuzzleHttp\Middleware::redirect()}.
- */
-class RedirectMiddleware
-{
- const HISTORY_HEADER = 'X-Guzzle-Redirect-History';
-
- const STATUS_HISTORY_HEADER = 'X-Guzzle-Redirect-Status-History';
-
- public static $defaultSettings = [
- 'max' => 5,
- 'protocols' => ['http', 'https'],
- 'strict' => false,
- 'referer' => false,
- 'track_redirects' => false,
- ];
-
- /** @var callable */
- private $nextHandler;
-
- /**
- * @param callable $nextHandler Next handler to invoke.
- */
- public function __construct(callable $nextHandler)
- {
- $this->nextHandler = $nextHandler;
- }
-
- /**
- * @param RequestInterface $request
- * @param array $options
- *
- * @return PromiseInterface
- */
- public function __invoke(RequestInterface $request, array $options)
- {
- $fn = $this->nextHandler;
-
- if (empty($options['allow_redirects'])) {
- return $fn($request, $options);
- }
-
- if ($options['allow_redirects'] === true) {
- $options['allow_redirects'] = self::$defaultSettings;
- } elseif (!is_array($options['allow_redirects'])) {
- throw new \InvalidArgumentException('allow_redirects must be true, false, or array');
- } else {
- // Merge the default settings with the provided settings
- $options['allow_redirects'] += self::$defaultSettings;
- }
-
- if (empty($options['allow_redirects']['max'])) {
- return $fn($request, $options);
- }
-
- return $fn($request, $options)
- ->then(function (ResponseInterface $response) use ($request, $options) {
- return $this->checkRedirect($request, $options, $response);
- });
- }
-
- /**
- * @param RequestInterface $request
- * @param array $options
- * @param ResponseInterface $response
- *
- * @return ResponseInterface|PromiseInterface
- */
- public function checkRedirect(
- RequestInterface $request,
- array $options,
- ResponseInterface $response
- ) {
- if (substr($response->getStatusCode(), 0, 1) != '3'
- || !$response->hasHeader('Location')
- ) {
- return $response;
- }
-
- $this->guardMax($request, $options);
- $nextRequest = $this->modifyRequest($request, $options, $response);
-
- if (isset($options['allow_redirects']['on_redirect'])) {
- call_user_func(
- $options['allow_redirects']['on_redirect'],
- $request,
- $response,
- $nextRequest->getUri()
- );
- }
-
- /** @var PromiseInterface|ResponseInterface $promise */
- $promise = $this($nextRequest, $options);
-
- // Add headers to be able to track history of redirects.
- if (!empty($options['allow_redirects']['track_redirects'])) {
- return $this->withTracking(
- $promise,
- (string) $nextRequest->getUri(),
- $response->getStatusCode()
- );
- }
-
- return $promise;
- }
-
- /**
- * Enable tracking on promise.
- *
- * @return PromiseInterface
- */
- private function withTracking(PromiseInterface $promise, $uri, $statusCode)
- {
- return $promise->then(
- function (ResponseInterface $response) use ($uri, $statusCode) {
- // Note that we are pushing to the front of the list as this
- // would be an earlier response than what is currently present
- // in the history header.
- $historyHeader = $response->getHeader(self::HISTORY_HEADER);
- $statusHeader = $response->getHeader(self::STATUS_HISTORY_HEADER);
- array_unshift($historyHeader, $uri);
- array_unshift($statusHeader, $statusCode);
- return $response->withHeader(self::HISTORY_HEADER, $historyHeader)
- ->withHeader(self::STATUS_HISTORY_HEADER, $statusHeader);
- }
- );
- }
-
- /**
- * Check for too many redirects
- *
- * @return void
- *
- * @throws TooManyRedirectsException Too many redirects.
- */
- private function guardMax(RequestInterface $request, array &$options)
- {
- $current = isset($options['__redirect_count'])
- ? $options['__redirect_count']
- : 0;
- $options['__redirect_count'] = $current + 1;
- $max = $options['allow_redirects']['max'];
-
- if ($options['__redirect_count'] > $max) {
- throw new TooManyRedirectsException(
- "Will not follow more than {$max} redirects",
- $request
- );
- }
- }
-
- /**
- * @param RequestInterface $request
- * @param array $options
- * @param ResponseInterface $response
- *
- * @return RequestInterface
- */
- public function modifyRequest(
- RequestInterface $request,
- array $options,
- ResponseInterface $response
- ) {
- // Request modifications to apply.
- $modify = [];
- $protocols = $options['allow_redirects']['protocols'];
-
- // Use a GET request if this is an entity enclosing request and we are
- // not forcing RFC compliance, but rather emulating what all browsers
- // would do.
- $statusCode = $response->getStatusCode();
- if ($statusCode == 303 ||
- ($statusCode <= 302 && !$options['allow_redirects']['strict'])
- ) {
- $modify['method'] = 'GET';
- $modify['body'] = '';
- }
-
- $uri = $this->redirectUri($request, $response, $protocols);
- if (isset($options['idn_conversion']) && ($options['idn_conversion'] !== false)) {
- $idnOptions = ($options['idn_conversion'] === true) ? IDNA_DEFAULT : $options['idn_conversion'];
- $uri = Utils::idnUriConvert($uri, $idnOptions);
- }
-
- $modify['uri'] = $uri;
- Psr7\rewind_body($request);
-
- // Add the Referer header if it is told to do so and only
- // add the header if we are not redirecting from https to http.
- if ($options['allow_redirects']['referer']
- && $modify['uri']->getScheme() === $request->getUri()->getScheme()
- ) {
- $uri = $request->getUri()->withUserInfo('');
- $modify['set_headers']['Referer'] = (string) $uri;
- } else {
- $modify['remove_headers'][] = 'Referer';
- }
-
- // Remove Authorization header if host is different.
- if ($request->getUri()->getHost() !== $modify['uri']->getHost()) {
- $modify['remove_headers'][] = 'Authorization';
- }
-
- return Psr7\modify_request($request, $modify);
- }
-
- /**
- * Set the appropriate URL on the request based on the location header
- *
- * @param RequestInterface $request
- * @param ResponseInterface $response
- * @param array $protocols
- *
- * @return UriInterface
- */
- private function redirectUri(
- RequestInterface $request,
- ResponseInterface $response,
- array $protocols
- ) {
- $location = Psr7\UriResolver::resolve(
- $request->getUri(),
- new Psr7\Uri($response->getHeaderLine('Location'))
- );
-
- // Ensure that the redirect URI is allowed based on the protocols.
- if (!in_array($location->getScheme(), $protocols)) {
- throw new BadResponseException(
- sprintf(
- 'Redirect URI, %s, does not use one of the allowed redirect protocols: %s',
- $location,
- implode(', ', $protocols)
- ),
- $request,
- $response
- );
- }
-
- return $location;
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/RequestOptions.php b/vendor/guzzlehttp/guzzle/src/RequestOptions.php
deleted file mode 100644
index 355f658..0000000
--- a/vendor/guzzlehttp/guzzle/src/RequestOptions.php
+++ /dev/null
@@ -1,263 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-/**
- * This class contains a list of built-in Guzzle request options.
- *
- * More documentation for each option can be found at http://guzzlephp.org/.
- *
- * @link http://docs.guzzlephp.org/en/v6/request-options.html
- */
-final class RequestOptions
-{
- /**
- * allow_redirects: (bool|array) Controls redirect behavior. Pass false
- * to disable redirects, pass true to enable redirects, pass an
- * associative to provide custom redirect settings. Defaults to "false".
- * This option only works if your handler has the RedirectMiddleware. When
- * passing an associative array, you can provide the following key value
- * pairs:
- *
- * - max: (int, default=5) maximum number of allowed redirects.
- * - strict: (bool, default=false) Set to true to use strict redirects
- * meaning redirect POST requests with POST requests vs. doing what most
- * browsers do which is redirect POST requests with GET requests
- * - referer: (bool, default=false) Set to true to enable the Referer
- * header.
- * - protocols: (array, default=['http', 'https']) Allowed redirect
- * protocols.
- * - on_redirect: (callable) PHP callable that is invoked when a redirect
- * is encountered. The callable is invoked with the request, the redirect
- * response that was received, and the effective URI. Any return value
- * from the on_redirect function is ignored.
- */
- const ALLOW_REDIRECTS = 'allow_redirects';
-
- /**
- * auth: (array) Pass an array of HTTP authentication parameters to use
- * with the request. The array must contain the username in index [0],
- * the password in index [1], and you can optionally provide a built-in
- * authentication type in index [2]. Pass null to disable authentication
- * for a request.
- */
- const AUTH = 'auth';
-
- /**
- * body: (resource|string|null|int|float|StreamInterface|callable|\Iterator)
- * Body to send in the request.
- */
- const BODY = 'body';
-
- /**
- * cert: (string|array) Set to a string to specify the path to a file
- * containing a PEM formatted SSL client side certificate. If a password
- * is required, then set cert to an array containing the path to the PEM
- * file in the first array element followed by the certificate password
- * in the second array element.
- */
- const CERT = 'cert';
-
- /**
- * cookies: (bool|GuzzleHttp\Cookie\CookieJarInterface, default=false)
- * Specifies whether or not cookies are used in a request or what cookie
- * jar to use or what cookies to send. This option only works if your
- * handler has the `cookie` middleware. Valid values are `false` and
- * an instance of {@see GuzzleHttp\Cookie\CookieJarInterface}.
- */
- const COOKIES = 'cookies';
-
- /**
- * connect_timeout: (float, default=0) Float describing the number of
- * seconds to wait while trying to connect to a server. Use 0 to wait
- * indefinitely (the default behavior).
- */
- const CONNECT_TIMEOUT = 'connect_timeout';
-
- /**
- * debug: (bool|resource) Set to true or set to a PHP stream returned by
- * fopen() enable debug output with the HTTP handler used to send a
- * request.
- */
- const DEBUG = 'debug';
-
- /**
- * decode_content: (bool, default=true) Specify whether or not
- * Content-Encoding responses (gzip, deflate, etc.) are automatically
- * decoded.
- */
- const DECODE_CONTENT = 'decode_content';
-
- /**
- * delay: (int) The amount of time to delay before sending in milliseconds.
- */
- const DELAY = 'delay';
-
- /**
- * expect: (bool|integer) Controls the behavior of the
- * "Expect: 100-Continue" header.
- *
- * Set to `true` to enable the "Expect: 100-Continue" header for all
- * requests that sends a body. Set to `false` to disable the
- * "Expect: 100-Continue" header for all requests. Set to a number so that
- * the size of the payload must be greater than the number in order to send
- * the Expect header. Setting to a number will send the Expect header for
- * all requests in which the size of the payload cannot be determined or
- * where the body is not rewindable.
- *
- * By default, Guzzle will add the "Expect: 100-Continue" header when the
- * size of the body of a request is greater than 1 MB and a request is
- * using HTTP/1.1.
- */
- const EXPECT = 'expect';
-
- /**
- * form_params: (array) Associative array of form field names to values
- * where each value is a string or array of strings. Sets the Content-Type
- * header to application/x-www-form-urlencoded when no Content-Type header
- * is already present.
- */
- const FORM_PARAMS = 'form_params';
-
- /**
- * headers: (array) Associative array of HTTP headers. Each value MUST be
- * a string or array of strings.
- */
- const HEADERS = 'headers';
-
- /**
- * http_errors: (bool, default=true) Set to false to disable exceptions
- * when a non- successful HTTP response is received. By default,
- * exceptions will be thrown for 4xx and 5xx responses. This option only
- * works if your handler has the `httpErrors` middleware.
- */
- const HTTP_ERRORS = 'http_errors';
-
- /**
- * idn: (bool|int, default=true) A combination of IDNA_* constants for
- * idn_to_ascii() PHP's function (see "options" parameter). Set to false to
- * disable IDN support completely, or to true to use the default
- * configuration (IDNA_DEFAULT constant).
- */
- const IDN_CONVERSION = 'idn_conversion';
-
- /**
- * json: (mixed) Adds JSON data to a request. The provided value is JSON
- * encoded and a Content-Type header of application/json will be added to
- * the request if no Content-Type header is already present.
- */
- const JSON = 'json';
-
- /**
- * multipart: (array) Array of associative arrays, each containing a
- * required "name" key mapping to the form field, name, a required
- * "contents" key mapping to a StreamInterface|resource|string, an
- * optional "headers" associative array of custom headers, and an
- * optional "filename" key mapping to a string to send as the filename in
- * the part. If no "filename" key is present, then no "filename" attribute
- * will be added to the part.
- */
- const MULTIPART = 'multipart';
-
- /**
- * on_headers: (callable) A callable that is invoked when the HTTP headers
- * of the response have been received but the body has not yet begun to
- * download.
- */
- const ON_HEADERS = 'on_headers';
-
- /**
- * on_stats: (callable) allows you to get access to transfer statistics of
- * a request and access the lower level transfer details of the handler
- * associated with your client. ``on_stats`` is a callable that is invoked
- * when a handler has finished sending a request. The callback is invoked
- * with transfer statistics about the request, the response received, or
- * the error encountered. Included in the data is the total amount of time
- * taken to send the request.
- */
- const ON_STATS = 'on_stats';
-
- /**
- * progress: (callable) Defines a function to invoke when transfer
- * progress is made. The function accepts the following positional
- * arguments: the total number of bytes expected to be downloaded, the
- * number of bytes downloaded so far, the number of bytes expected to be
- * uploaded, the number of bytes uploaded so far.
- */
- const PROGRESS = 'progress';
-
- /**
- * proxy: (string|array) Pass a string to specify an HTTP proxy, or an
- * array to specify different proxies for different protocols (where the
- * key is the protocol and the value is a proxy string).
- */
- const PROXY = 'proxy';
-
- /**
- * query: (array|string) Associative array of query string values to add
- * to the request. This option uses PHP's http_build_query() to create
- * the string representation. Pass a string value if you need more
- * control than what this method provides
- */
- const QUERY = 'query';
-
- /**
- * sink: (resource|string|StreamInterface) Where the data of the
- * response is written to. Defaults to a PHP temp stream. Providing a
- * string will write data to a file by the given name.
- */
- const SINK = 'sink';
-
- /**
- * synchronous: (bool) Set to true to inform HTTP handlers that you intend
- * on waiting on the response. This can be useful for optimizations. Note
- * that a promise is still returned if you are using one of the async
- * client methods.
- */
- const SYNCHRONOUS = 'synchronous';
-
- /**
- * ssl_key: (array|string) Specify the path to a file containing a private
- * SSL key in PEM format. If a password is required, then set to an array
- * containing the path to the SSL key in the first array element followed
- * by the password required for the certificate in the second element.
- */
- const SSL_KEY = 'ssl_key';
-
- /**
- * stream: Set to true to attempt to stream a response rather than
- * download it all up-front.
- */
- const STREAM = 'stream';
-
- /**
- * verify: (bool|string, default=true) Describes the SSL certificate
- * verification behavior of a request. Set to true to enable SSL
- * certificate verification using the system CA bundle when available
- * (the default). Set to false to disable certificate verification (this
- * is insecure!). Set to a string to provide the path to a CA bundle on
- * disk to enable verification using a custom certificate.
- */
- const VERIFY = 'verify';
-
- /**
- * timeout: (float, default=0) Float describing the timeout of the
- * request in seconds. Use 0 to wait indefinitely (the default behavior).
- */
- const TIMEOUT = 'timeout';
-
- /**
- * read_timeout: (float, default=default_socket_timeout ini setting) Float describing
- * the body read timeout, for stream requests.
- */
- const READ_TIMEOUT = 'read_timeout';
-
- /**
- * version: (float) Specifies the HTTP protocol version to attempt to use.
- */
- const VERSION = 'version';
-
- /**
- * force_ip_resolve: (bool) Force client to use only ipv4 or ipv6 protocol
- */
- const FORCE_IP_RESOLVE = 'force_ip_resolve';
-}
diff --git a/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php b/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
deleted file mode 100644
index 5acc8c5..0000000
--- a/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Promise\RejectedPromise;
-use GuzzleHttp\Psr7;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Middleware that retries requests based on the boolean result of
- * invoking the provided "decider" function.
- */
-class RetryMiddleware
-{
- /** @var callable */
- private $nextHandler;
-
- /** @var callable */
- private $decider;
-
- /** @var callable */
- private $delay;
-
- /**
- * @param callable $decider Function that accepts the number of retries,
- * a request, [response], and [exception] and
- * returns true if the request is to be
- * retried.
- * @param callable $nextHandler Next handler to invoke.
- * @param callable $delay Function that accepts the number of retries
- * and [response] and returns the number of
- * milliseconds to delay.
- */
- public function __construct(
- callable $decider,
- callable $nextHandler,
- callable $delay = null
- ) {
- $this->decider = $decider;
- $this->nextHandler = $nextHandler;
- $this->delay = $delay ?: __CLASS__ . '::exponentialDelay';
- }
-
- /**
- * Default exponential backoff delay function.
- *
- * @param int $retries
- *
- * @return int milliseconds.
- */
- public static function exponentialDelay($retries)
- {
- return (int) pow(2, $retries - 1) * 1000;
- }
-
- /**
- * @param RequestInterface $request
- * @param array $options
- *
- * @return PromiseInterface
- */
- public function __invoke(RequestInterface $request, array $options)
- {
- if (!isset($options['retries'])) {
- $options['retries'] = 0;
- }
-
- $fn = $this->nextHandler;
- return $fn($request, $options)
- ->then(
- $this->onFulfilled($request, $options),
- $this->onRejected($request, $options)
- );
- }
-
- /**
- * Execute fulfilled closure
- *
- * @return mixed
- */
- private function onFulfilled(RequestInterface $req, array $options)
- {
- return function ($value) use ($req, $options) {
- if (!call_user_func(
- $this->decider,
- $options['retries'],
- $req,
- $value,
- null
- )) {
- return $value;
- }
- return $this->doRetry($req, $options, $value);
- };
- }
-
- /**
- * Execute rejected closure
- *
- * @return callable
- */
- private function onRejected(RequestInterface $req, array $options)
- {
- return function ($reason) use ($req, $options) {
- if (!call_user_func(
- $this->decider,
- $options['retries'],
- $req,
- null,
- $reason
- )) {
- return \GuzzleHttp\Promise\rejection_for($reason);
- }
- return $this->doRetry($req, $options);
- };
- }
-
- /**
- * @return self
- */
- private function doRetry(RequestInterface $request, array $options, ResponseInterface $response = null)
- {
- $options['delay'] = call_user_func($this->delay, ++$options['retries'], $response);
-
- return $this($request, $options);
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/TransferStats.php b/vendor/guzzlehttp/guzzle/src/TransferStats.php
deleted file mode 100644
index 87fb3c0..0000000
--- a/vendor/guzzlehttp/guzzle/src/TransferStats.php
+++ /dev/null
@@ -1,126 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * Represents data at the point after it was transferred either successfully
- * or after a network error.
- */
-final class TransferStats
-{
- private $request;
- private $response;
- private $transferTime;
- private $handlerStats;
- private $handlerErrorData;
-
- /**
- * @param RequestInterface $request Request that was sent.
- * @param ResponseInterface|null $response Response received (if any)
- * @param float|null $transferTime Total handler transfer time.
- * @param mixed $handlerErrorData Handler error data.
- * @param array $handlerStats Handler specific stats.
- */
- public function __construct(
- RequestInterface $request,
- ResponseInterface $response = null,
- $transferTime = null,
- $handlerErrorData = null,
- $handlerStats = []
- ) {
- $this->request = $request;
- $this->response = $response;
- $this->transferTime = $transferTime;
- $this->handlerErrorData = $handlerErrorData;
- $this->handlerStats = $handlerStats;
- }
-
- /**
- * @return RequestInterface
- */
- public function getRequest()
- {
- return $this->request;
- }
-
- /**
- * Returns the response that was received (if any).
- *
- * @return ResponseInterface|null
- */
- public function getResponse()
- {
- return $this->response;
- }
-
- /**
- * Returns true if a response was received.
- *
- * @return bool
- */
- public function hasResponse()
- {
- return $this->response !== null;
- }
-
- /**
- * Gets handler specific error data.
- *
- * This might be an exception, a integer representing an error code, or
- * anything else. Relying on this value assumes that you know what handler
- * you are using.
- *
- * @return mixed
- */
- public function getHandlerErrorData()
- {
- return $this->handlerErrorData;
- }
-
- /**
- * Get the effective URI the request was sent to.
- *
- * @return UriInterface
- */
- public function getEffectiveUri()
- {
- return $this->request->getUri();
- }
-
- /**
- * Get the estimated time the request was being transferred by the handler.
- *
- * @return float|null Time in seconds.
- */
- public function getTransferTime()
- {
- return $this->transferTime;
- }
-
- /**
- * Gets an array of all of the handler specific transfer data.
- *
- * @return array
- */
- public function getHandlerStats()
- {
- return $this->handlerStats;
- }
-
- /**
- * Get a specific handler statistic from the handler by name.
- *
- * @param string $stat Handler specific transfer stat to retrieve.
- *
- * @return mixed|null
- */
- public function getHandlerStat($stat)
- {
- return isset($this->handlerStats[$stat])
- ? $this->handlerStats[$stat]
- : null;
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/UriTemplate.php b/vendor/guzzlehttp/guzzle/src/UriTemplate.php
deleted file mode 100644
index 96dcfd0..0000000
--- a/vendor/guzzlehttp/guzzle/src/UriTemplate.php
+++ /dev/null
@@ -1,237 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-/**
- * Expands URI templates. Userland implementation of PECL uri_template.
- *
- * @link http://tools.ietf.org/html/rfc6570
- */
-class UriTemplate
-{
- /** @var string URI template */
- private $template;
-
- /** @var array Variables to use in the template expansion */
- private $variables;
-
- /** @var array Hash for quick operator lookups */
- private static $operatorHash = [
- '' => ['prefix' => '', 'joiner' => ',', 'query' => false],
- '+' => ['prefix' => '', 'joiner' => ',', 'query' => false],
- '#' => ['prefix' => '#', 'joiner' => ',', 'query' => false],
- '.' => ['prefix' => '.', 'joiner' => '.', 'query' => false],
- '/' => ['prefix' => '/', 'joiner' => '/', 'query' => false],
- ';' => ['prefix' => ';', 'joiner' => ';', 'query' => true],
- '?' => ['prefix' => '?', 'joiner' => '&', 'query' => true],
- '&' => ['prefix' => '&', 'joiner' => '&', 'query' => true]
- ];
-
- /** @var array Delimiters */
- private static $delims = [':', '/', '?', '#', '[', ']', '@', '!', '$',
- '&', '\'', '(', ')', '*', '+', ',', ';', '='];
-
- /** @var array Percent encoded delimiters */
- private static $delimsPct = ['%3A', '%2F', '%3F', '%23', '%5B', '%5D',
- '%40', '%21', '%24', '%26', '%27', '%28', '%29', '%2A', '%2B', '%2C',
- '%3B', '%3D'];
-
- public function expand($template, array $variables)
- {
- if (false === strpos($template, '{')) {
- return $template;
- }
-
- $this->template = $template;
- $this->variables = $variables;
-
- return preg_replace_callback(
- '/\{([^\}]+)\}/',
- [$this, 'expandMatch'],
- $this->template
- );
- }
-
- /**
- * Parse an expression into parts
- *
- * @param string $expression Expression to parse
- *
- * @return array Returns an associative array of parts
- */
- private function parseExpression($expression)
- {
- $result = [];
-
- if (isset(self::$operatorHash[$expression[0]])) {
- $result['operator'] = $expression[0];
- $expression = substr($expression, 1);
- } else {
- $result['operator'] = '';
- }
-
- foreach (explode(',', $expression) as $value) {
- $value = trim($value);
- $varspec = [];
- if ($colonPos = strpos($value, ':')) {
- $varspec['value'] = substr($value, 0, $colonPos);
- $varspec['modifier'] = ':';
- $varspec['position'] = (int) substr($value, $colonPos + 1);
- } elseif (substr($value, -1) === '*') {
- $varspec['modifier'] = '*';
- $varspec['value'] = substr($value, 0, -1);
- } else {
- $varspec['value'] = (string) $value;
- $varspec['modifier'] = '';
- }
- $result['values'][] = $varspec;
- }
-
- return $result;
- }
-
- /**
- * Process an expansion
- *
- * @param array $matches Matches met in the preg_replace_callback
- *
- * @return string Returns the replacement string
- */
- private function expandMatch(array $matches)
- {
- static $rfc1738to3986 = ['+' => '%20', '%7e' => '~'];
-
- $replacements = [];
- $parsed = self::parseExpression($matches[1]);
- $prefix = self::$operatorHash[$parsed['operator']]['prefix'];
- $joiner = self::$operatorHash[$parsed['operator']]['joiner'];
- $useQuery = self::$operatorHash[$parsed['operator']]['query'];
-
- foreach ($parsed['values'] as $value) {
- if (!isset($this->variables[$value['value']])) {
- continue;
- }
-
- $variable = $this->variables[$value['value']];
- $actuallyUseQuery = $useQuery;
- $expanded = '';
-
- if (is_array($variable)) {
- $isAssoc = $this->isAssoc($variable);
- $kvp = [];
- foreach ($variable as $key => $var) {
- if ($isAssoc) {
- $key = rawurlencode($key);
- $isNestedArray = is_array($var);
- } else {
- $isNestedArray = false;
- }
-
- if (!$isNestedArray) {
- $var = rawurlencode($var);
- if ($parsed['operator'] === '+' ||
- $parsed['operator'] === '#'
- ) {
- $var = $this->decodeReserved($var);
- }
- }
-
- if ($value['modifier'] === '*') {
- if ($isAssoc) {
- if ($isNestedArray) {
- // Nested arrays must allow for deeply nested
- // structures.
- $var = strtr(
- http_build_query([$key => $var]),
- $rfc1738to3986
- );
- } else {
- $var = $key . '=' . $var;
- }
- } elseif ($key > 0 && $actuallyUseQuery) {
- $var = $value['value'] . '=' . $var;
- }
- }
-
- $kvp[$key] = $var;
- }
-
- if (empty($variable)) {
- $actuallyUseQuery = false;
- } elseif ($value['modifier'] === '*') {
- $expanded = implode($joiner, $kvp);
- if ($isAssoc) {
- // Don't prepend the value name when using the explode
- // modifier with an associative array.
- $actuallyUseQuery = false;
- }
- } else {
- if ($isAssoc) {
- // When an associative array is encountered and the
- // explode modifier is not set, then the result must be
- // a comma separated list of keys followed by their
- // respective values.
- foreach ($kvp as $k => &$v) {
- $v = $k . ',' . $v;
- }
- }
- $expanded = implode(',', $kvp);
- }
- } else {
- if ($value['modifier'] === ':') {
- $variable = substr($variable, 0, $value['position']);
- }
- $expanded = rawurlencode($variable);
- if ($parsed['operator'] === '+' || $parsed['operator'] === '#') {
- $expanded = $this->decodeReserved($expanded);
- }
- }
-
- if ($actuallyUseQuery) {
- if (!$expanded && $joiner !== '&') {
- $expanded = $value['value'];
- } else {
- $expanded = $value['value'] . '=' . $expanded;
- }
- }
-
- $replacements[] = $expanded;
- }
-
- $ret = implode($joiner, $replacements);
- if ($ret && $prefix) {
- return $prefix . $ret;
- }
-
- return $ret;
- }
-
- /**
- * Determines if an array is associative.
- *
- * This makes the assumption that input arrays are sequences or hashes.
- * This assumption is a tradeoff for accuracy in favor of speed, but it
- * should work in almost every case where input is supplied for a URI
- * template.
- *
- * @param array $array Array to check
- *
- * @return bool
- */
- private function isAssoc(array $array)
- {
- return $array && array_keys($array)[0] !== 0;
- }
-
- /**
- * Removes percent encoding on reserved characters (used with + and #
- * modifiers).
- *
- * @param string $string String to fix
- *
- * @return string
- */
- private function decodeReserved($string)
- {
- return str_replace(self::$delimsPct, self::$delims, $string);
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Utils.php b/vendor/guzzlehttp/guzzle/src/Utils.php
deleted file mode 100644
index c698acb..0000000
--- a/vendor/guzzlehttp/guzzle/src/Utils.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Exception\InvalidArgumentException;
-use Psr\Http\Message\UriInterface;
-use Symfony\Polyfill\Intl\Idn\Idn;
-
-final class Utils
-{
- /**
- * Wrapper for the hrtime() or microtime() functions
- * (depending on the PHP version, one of the two is used)
- *
- * @return float|mixed UNIX timestamp
- *
- * @internal
- */
- public static function currentTime()
- {
- return function_exists('hrtime') ? hrtime(true) / 1e9 : microtime(true);
- }
-
- /**
- * @param int $options
- *
- * @return UriInterface
- * @throws InvalidArgumentException
- *
- * @internal
- */
- public static function idnUriConvert(UriInterface $uri, $options = 0)
- {
- if ($uri->getHost()) {
- $asciiHost = self::idnToAsci($uri->getHost(), $options, $info);
- if ($asciiHost === false) {
- $errorBitSet = isset($info['errors']) ? $info['errors'] : 0;
-
- $errorConstants = array_filter(array_keys(get_defined_constants()), function ($name) {
- return substr($name, 0, 11) === 'IDNA_ERROR_';
- });
-
- $errors = [];
- foreach ($errorConstants as $errorConstant) {
- if ($errorBitSet & constant($errorConstant)) {
- $errors[] = $errorConstant;
- }
- }
-
- $errorMessage = 'IDN conversion failed';
- if ($errors) {
- $errorMessage .= ' (errors: ' . implode(', ', $errors) . ')';
- }
-
- throw new InvalidArgumentException($errorMessage);
- } else {
- if ($uri->getHost() !== $asciiHost) {
- // Replace URI only if the ASCII version is different
- $uri = $uri->withHost($asciiHost);
- }
- }
- }
-
- return $uri;
- }
-
- /**
- * @param string $domain
- * @param int $options
- * @param array $info
- *
- * @return string|false
- */
- private static function idnToAsci($domain, $options, &$info = [])
- {
- if (\preg_match('%^[ -~]+$%', $domain) === 1) {
- return $domain;
- }
-
- if (\extension_loaded('intl') && defined('INTL_IDNA_VARIANT_UTS46')) {
- return \idn_to_ascii($domain, $options, INTL_IDNA_VARIANT_UTS46, $info);
- }
-
- /*
- * The Idn class is marked as @internal. Verify that class and method exists.
- */
- if (method_exists(Idn::class, 'idn_to_ascii')) {
- return Idn::idn_to_ascii($domain, $options, Idn::INTL_IDNA_VARIANT_UTS46, $info);
- }
-
- throw new \RuntimeException('ext-intl or symfony/polyfill-intl-idn not loaded or too old');
- }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/functions.php b/vendor/guzzlehttp/guzzle/src/functions.php
deleted file mode 100644
index c2afd8c..0000000
--- a/vendor/guzzlehttp/guzzle/src/functions.php
+++ /dev/null
@@ -1,334 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Handler\CurlHandler;
-use GuzzleHttp\Handler\CurlMultiHandler;
-use GuzzleHttp\Handler\Proxy;
-use GuzzleHttp\Handler\StreamHandler;
-
-/**
- * Expands a URI template
- *
- * @param string $template URI template
- * @param array $variables Template variables
- *
- * @return string
- */
-function uri_template($template, array $variables)
-{
- if (extension_loaded('uri_template')) {
- // @codeCoverageIgnoreStart
- return \uri_template($template, $variables);
- // @codeCoverageIgnoreEnd
- }
-
- static $uriTemplate;
- if (!$uriTemplate) {
- $uriTemplate = new UriTemplate();
- }
-
- return $uriTemplate->expand($template, $variables);
-}
-
-/**
- * Debug function used to describe the provided value type and class.
- *
- * @param mixed $input
- *
- * @return string Returns a string containing the type of the variable and
- * if a class is provided, the class name.
- */
-function describe_type($input)
-{
- switch (gettype($input)) {
- case 'object':
- return 'object(' . get_class($input) . ')';
- case 'array':
- return 'array(' . count($input) . ')';
- default:
- ob_start();
- var_dump($input);
- // normalize float vs double
- return str_replace('double(', 'float(', rtrim(ob_get_clean()));
- }
-}
-
-/**
- * Parses an array of header lines into an associative array of headers.
- *
- * @param iterable $lines Header lines array of strings in the following
- * format: "Name: Value"
- * @return array
- */
-function headers_from_lines($lines)
-{
- $headers = [];
-
- foreach ($lines as $line) {
- $parts = explode(':', $line, 2);
- $headers[trim($parts[0])][] = isset($parts[1])
- ? trim($parts[1])
- : null;
- }
-
- return $headers;
-}
-
-/**
- * Returns a debug stream based on the provided variable.
- *
- * @param mixed $value Optional value
- *
- * @return resource
- */
-function debug_resource($value = null)
-{
- if (is_resource($value)) {
- return $value;
- } elseif (defined('STDOUT')) {
- return STDOUT;
- }
-
- return fopen('php://output', 'w');
-}
-
-/**
- * Chooses and creates a default handler to use based on the environment.
- *
- * The returned handler is not wrapped by any default middlewares.
- *
- * @return callable Returns the best handler for the given system.
- * @throws \RuntimeException if no viable Handler is available.
- */
-function choose_handler()
-{
- $handler = null;
- if (function_exists('curl_multi_exec') && function_exists('curl_exec')) {
- $handler = Proxy::wrapSync(new CurlMultiHandler(), new CurlHandler());
- } elseif (function_exists('curl_exec')) {
- $handler = new CurlHandler();
- } elseif (function_exists('curl_multi_exec')) {
- $handler = new CurlMultiHandler();
- }
-
- if (ini_get('allow_url_fopen')) {
- $handler = $handler
- ? Proxy::wrapStreaming($handler, new StreamHandler())
- : new StreamHandler();
- } elseif (!$handler) {
- throw new \RuntimeException('GuzzleHttp requires cURL, the '
- . 'allow_url_fopen ini setting, or a custom HTTP handler.');
- }
-
- return $handler;
-}
-
-/**
- * Get the default User-Agent string to use with Guzzle
- *
- * @return string
- */
-function default_user_agent()
-{
- static $defaultAgent = '';
-
- if (!$defaultAgent) {
- $defaultAgent = 'GuzzleHttp/' . Client::VERSION;
- if (extension_loaded('curl') && function_exists('curl_version')) {
- $defaultAgent .= ' curl/' . \curl_version()['version'];
- }
- $defaultAgent .= ' PHP/' . PHP_VERSION;
- }
-
- return $defaultAgent;
-}
-
-/**
- * Returns the default cacert bundle for the current system.
- *
- * First, the openssl.cafile and curl.cainfo php.ini settings are checked.
- * If those settings are not configured, then the common locations for
- * bundles found on Red Hat, CentOS, Fedora, Ubuntu, Debian, FreeBSD, OS X
- * and Windows are checked. If any of these file locations are found on
- * disk, they will be utilized.
- *
- * Note: the result of this function is cached for subsequent calls.
- *
- * @return string
- * @throws \RuntimeException if no bundle can be found.
- */
-function default_ca_bundle()
-{
- static $cached = null;
- static $cafiles = [
- // Red Hat, CentOS, Fedora (provided by the ca-certificates package)
- '/etc/pki/tls/certs/ca-bundle.crt',
- // Ubuntu, Debian (provided by the ca-certificates package)
- '/etc/ssl/certs/ca-certificates.crt',
- // FreeBSD (provided by the ca_root_nss package)
- '/usr/local/share/certs/ca-root-nss.crt',
- // SLES 12 (provided by the ca-certificates package)
- '/var/lib/ca-certificates/ca-bundle.pem',
- // OS X provided by homebrew (using the default path)
- '/usr/local/etc/openssl/cert.pem',
- // Google app engine
- '/etc/ca-certificates.crt',
- // Windows?
- 'C:\\windows\\system32\\curl-ca-bundle.crt',
- 'C:\\windows\\curl-ca-bundle.crt',
- ];
-
- if ($cached) {
- return $cached;
- }
-
- if ($ca = ini_get('openssl.cafile')) {
- return $cached = $ca;
- }
-
- if ($ca = ini_get('curl.cainfo')) {
- return $cached = $ca;
- }
-
- foreach ($cafiles as $filename) {
- if (file_exists($filename)) {
- return $cached = $filename;
- }
- }
-
- throw new \RuntimeException(
- <<< EOT
-No system CA bundle could be found in any of the the common system locations.
-PHP versions earlier than 5.6 are not properly configured to use the system's
-CA bundle by default. In order to verify peer certificates, you will need to
-supply the path on disk to a certificate bundle to the 'verify' request
-option: http://docs.guzzlephp.org/en/latest/clients.html#verify. If you do not
-need a specific certificate bundle, then Mozilla provides a commonly used CA
-bundle which can be downloaded here (provided by the maintainer of cURL):
-https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt. Once
-you have a CA bundle available on disk, you can set the 'openssl.cafile' PHP
-ini setting to point to the path to the file, allowing you to omit the 'verify'
-request option. See http://curl.haxx.se/docs/sslcerts.html for more
-information.
-EOT
- );
-}
-
-/**
- * Creates an associative array of lowercase header names to the actual
- * header casing.
- *
- * @param array $headers
- *
- * @return array
- */
-function normalize_header_keys(array $headers)
-{
- $result = [];
- foreach (array_keys($headers) as $key) {
- $result[strtolower($key)] = $key;
- }
-
- return $result;
-}
-
-/**
- * Returns true if the provided host matches any of the no proxy areas.
- *
- * This method will strip a port from the host if it is present. Each pattern
- * can be matched with an exact match (e.g., "foo.com" == "foo.com") or a
- * partial match: (e.g., "foo.com" == "baz.foo.com" and ".foo.com" ==
- * "baz.foo.com", but ".foo.com" != "foo.com").
- *
- * Areas are matched in the following cases:
- * 1. "*" (without quotes) always matches any hosts.
- * 2. An exact match.
- * 3. The area starts with "." and the area is the last part of the host. e.g.
- * '.mit.edu' will match any host that ends with '.mit.edu'.
- *
- * @param string $host Host to check against the patterns.
- * @param array $noProxyArray An array of host patterns.
- *
- * @return bool
- */
-function is_host_in_noproxy($host, array $noProxyArray)
-{
- if (strlen($host) === 0) {
- throw new \InvalidArgumentException('Empty host provided');
- }
-
- // Strip port if present.
- if (strpos($host, ':')) {
- $host = explode($host, ':', 2)[0];
- }
-
- foreach ($noProxyArray as $area) {
- // Always match on wildcards.
- if ($area === '*') {
- return true;
- } elseif (empty($area)) {
- // Don't match on empty values.
- continue;
- } elseif ($area === $host) {
- // Exact matches.
- return true;
- } else {
- // Special match if the area when prefixed with ".". Remove any
- // existing leading "." and add a new leading ".".
- $area = '.' . ltrim($area, '.');
- if (substr($host, -(strlen($area))) === $area) {
- return true;
- }
- }
- }
-
- return false;
-}
-
-/**
- * Wrapper for json_decode that throws when an error occurs.
- *
- * @param string $json JSON data to parse
- * @param bool $assoc When true, returned objects will be converted
- * into associative arrays.
- * @param int $depth User specified recursion depth.
- * @param int $options Bitmask of JSON decode options.
- *
- * @return mixed
- * @throws Exception\InvalidArgumentException if the JSON cannot be decoded.
- * @link http://www.php.net/manual/en/function.json-decode.php
- */
-function json_decode($json, $assoc = false, $depth = 512, $options = 0)
-{
- $data = \json_decode($json, $assoc, $depth, $options);
- if (JSON_ERROR_NONE !== json_last_error()) {
- throw new Exception\InvalidArgumentException(
- 'json_decode error: ' . json_last_error_msg()
- );
- }
-
- return $data;
-}
-
-/**
- * Wrapper for JSON encoding that throws when an error occurs.
- *
- * @param mixed $value The value being encoded
- * @param int $options JSON encode option bitmask
- * @param int $depth Set the maximum depth. Must be greater than zero.
- *
- * @return string
- * @throws Exception\InvalidArgumentException if the JSON cannot be encoded.
- * @link http://www.php.net/manual/en/function.json-encode.php
- */
-function json_encode($value, $options = 0, $depth = 512)
-{
- $json = \json_encode($value, $options, $depth);
- if (JSON_ERROR_NONE !== json_last_error()) {
- throw new Exception\InvalidArgumentException(
- 'json_encode error: ' . json_last_error_msg()
- );
- }
-
- return $json;
-}
diff --git a/vendor/guzzlehttp/guzzle/src/functions_include.php b/vendor/guzzlehttp/guzzle/src/functions_include.php
deleted file mode 100644
index a93393a..0000000
--- a/vendor/guzzlehttp/guzzle/src/functions_include.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-
-// Don't redefine the functions if included multiple times.
-if (!function_exists('GuzzleHttp\uri_template')) {
- require __DIR__ . '/functions.php';
-}
diff --git a/vendor/guzzlehttp/promises/CHANGELOG.md b/vendor/guzzlehttp/promises/CHANGELOG.md
deleted file mode 100644
index 551929f..0000000
--- a/vendor/guzzlehttp/promises/CHANGELOG.md
+++ /dev/null
@@ -1,65 +0,0 @@
-# CHANGELOG
-
-
-## 1.3.1 - 2016-12-20
-
-### Fixed
-
-- `wait()` foreign promise compatibility
-
-
-## 1.3.0 - 2016-11-18
-
-### Added
-
-- Adds support for custom task queues.
-
-### Fixed
-
-- Fixed coroutine promise memory leak.
-
-
-## 1.2.0 - 2016-05-18
-
-### Changed
-
-- Update to now catch `\Throwable` on PHP 7+
-
-
-## 1.1.0 - 2016-03-07
-
-### Changed
-
-- Update EachPromise to prevent recurring on a iterator when advancing, as this
- could trigger fatal generator errors.
-- Update Promise to allow recursive waiting without unwrapping exceptions.
-
-
-## 1.0.3 - 2015-10-15
-
-### Changed
-
-- Update EachPromise to immediately resolve when the underlying promise iterator
- is empty. Previously, such a promise would throw an exception when its `wait`
- function was called.
-
-
-## 1.0.2 - 2015-05-15
-
-### Changed
-
-- Conditionally require functions.php.
-
-
-## 1.0.1 - 2015-06-24
-
-### Changed
-
-- Updating EachPromise to call next on the underlying promise iterator as late
- as possible to ensure that generators that generate new requests based on
- callbacks are not iterated until after callbacks are invoked.
-
-
-## 1.0.0 - 2015-05-12
-
-- Initial release
diff --git a/vendor/guzzlehttp/promises/LICENSE b/vendor/guzzlehttp/promises/LICENSE
deleted file mode 100644
index 67f91a1..0000000
--- a/vendor/guzzlehttp/promises/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2015-2016 Michael Dowling, https://github.com/mtdowling <[email protected]>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/guzzlehttp/promises/Makefile b/vendor/guzzlehttp/promises/Makefile
deleted file mode 100644
index 8d5b3ef..0000000
--- a/vendor/guzzlehttp/promises/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-all: clean test
-
-test:
- vendor/bin/phpunit
-
-coverage:
- vendor/bin/phpunit --coverage-html=artifacts/coverage
-
-view-coverage:
- open artifacts/coverage/index.html
-
-clean:
- rm -rf artifacts/*
diff --git a/vendor/guzzlehttp/promises/README.md b/vendor/guzzlehttp/promises/README.md
deleted file mode 100644
index 7b607e2..0000000
--- a/vendor/guzzlehttp/promises/README.md
+++ /dev/null
@@ -1,504 +0,0 @@
-# Guzzle Promises
-
-[Promises/A+](https://promisesaplus.com/) implementation that handles promise
-chaining and resolution iteratively, allowing for "infinite" promise chaining
-while keeping the stack size constant. Read [this blog post](https://blog.domenic.me/youre-missing-the-point-of-promises/)
-for a general introduction to promises.
-
-- [Features](#features)
-- [Quick start](#quick-start)
-- [Synchronous wait](#synchronous-wait)
-- [Cancellation](#cancellation)
-- [API](#api)
- - [Promise](#promise)
- - [FulfilledPromise](#fulfilledpromise)
- - [RejectedPromise](#rejectedpromise)
-- [Promise interop](#promise-interop)
-- [Implementation notes](#implementation-notes)
-
-
-# Features
-
-- [Promises/A+](https://promisesaplus.com/) implementation.
-- Promise resolution and chaining is handled iteratively, allowing for
- "infinite" promise chaining.
-- Promises have a synchronous `wait` method.
-- Promises can be cancelled.
-- Works with any object that has a `then` function.
-- C# style async/await coroutine promises using
- `GuzzleHttp\Promise\coroutine()`.
-
-
-# Quick start
-
-A *promise* represents the eventual result of an asynchronous operation. The
-primary way of interacting with a promise is through its `then` method, which
-registers callbacks to receive either a promise's eventual value or the reason
-why the promise cannot be fulfilled.
-
-
-## Callbacks
-
-Callbacks are registered with the `then` method by providing an optional
-`$onFulfilled` followed by an optional `$onRejected` function.
-
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$promise->then(
- // $onFulfilled
- function ($value) {
- echo 'The promise was fulfilled.';
- },
- // $onRejected
- function ($reason) {
- echo 'The promise was rejected.';
- }
-);
-```
-
-*Resolving* a promise means that you either fulfill a promise with a *value* or
-reject a promise with a *reason*. Resolving a promises triggers callbacks
-registered with the promises's `then` method. These callbacks are triggered
-only once and in the order in which they were added.
-
-
-## Resolving a promise
-
-Promises are fulfilled using the `resolve($value)` method. Resolving a promise
-with any value other than a `GuzzleHttp\Promise\RejectedPromise` will trigger
-all of the onFulfilled callbacks (resolving a promise with a rejected promise
-will reject the promise and trigger the `$onRejected` callbacks).
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$promise
- ->then(function ($value) {
- // Return a value and don't break the chain
- return "Hello, " . $value;
- })
- // This then is executed after the first then and receives the value
- // returned from the first then.
- ->then(function ($value) {
- echo $value;
- });
-
-// Resolving the promise triggers the $onFulfilled callbacks and outputs
-// "Hello, reader".
-$promise->resolve('reader.');
-```
-
-
-## Promise forwarding
-
-Promises can be chained one after the other. Each then in the chain is a new
-promise. The return value of a promise is what's forwarded to the next
-promise in the chain. Returning a promise in a `then` callback will cause the
-subsequent promises in the chain to only be fulfilled when the returned promise
-has been fulfilled. The next promise in the chain will be invoked with the
-resolved value of the promise.
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$nextPromise = new Promise();
-
-$promise
- ->then(function ($value) use ($nextPromise) {
- echo $value;
- return $nextPromise;
- })
- ->then(function ($value) {
- echo $value;
- });
-
-// Triggers the first callback and outputs "A"
-$promise->resolve('A');
-// Triggers the second callback and outputs "B"
-$nextPromise->resolve('B');
-```
-
-## Promise rejection
-
-When a promise is rejected, the `$onRejected` callbacks are invoked with the
-rejection reason.
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$promise->then(null, function ($reason) {
- echo $reason;
-});
-
-$promise->reject('Error!');
-// Outputs "Error!"
-```
-
-## Rejection forwarding
-
-If an exception is thrown in an `$onRejected` callback, subsequent
-`$onRejected` callbacks are invoked with the thrown exception as the reason.
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$promise->then(null, function ($reason) {
- throw new \Exception($reason);
-})->then(null, function ($reason) {
- assert($reason->getMessage() === 'Error!');
-});
-
-$promise->reject('Error!');
-```
-
-You can also forward a rejection down the promise chain by returning a
-`GuzzleHttp\Promise\RejectedPromise` in either an `$onFulfilled` or
-`$onRejected` callback.
-
-```php
-use GuzzleHttp\Promise\Promise;
-use GuzzleHttp\Promise\RejectedPromise;
-
-$promise = new Promise();
-$promise->then(null, function ($reason) {
- return new RejectedPromise($reason);
-})->then(null, function ($reason) {
- assert($reason === 'Error!');
-});
-
-$promise->reject('Error!');
-```
-
-If an exception is not thrown in a `$onRejected` callback and the callback
-does not return a rejected promise, downstream `$onFulfilled` callbacks are
-invoked using the value returned from the `$onRejected` callback.
-
-```php
-use GuzzleHttp\Promise\Promise;
-use GuzzleHttp\Promise\RejectedPromise;
-
-$promise = new Promise();
-$promise
- ->then(null, function ($reason) {
- return "It's ok";
- })
- ->then(function ($value) {
- assert($value === "It's ok");
- });
-
-$promise->reject('Error!');
-```
-
-# Synchronous wait
-
-You can synchronously force promises to complete using a promise's `wait`
-method. When creating a promise, you can provide a wait function that is used
-to synchronously force a promise to complete. When a wait function is invoked
-it is expected to deliver a value to the promise or reject the promise. If the
-wait function does not deliver a value, then an exception is thrown. The wait
-function provided to a promise constructor is invoked when the `wait` function
-of the promise is called.
-
-```php
-$promise = new Promise(function () use (&$promise) {
- $promise->resolve('foo');
-});
-
-// Calling wait will return the value of the promise.
-echo $promise->wait(); // outputs "foo"
-```
-
-If an exception is encountered while invoking the wait function of a promise,
-the promise is rejected with the exception and the exception is thrown.
-
-```php
-$promise = new Promise(function () use (&$promise) {
- throw new \Exception('foo');
-});
-
-$promise->wait(); // throws the exception.
-```
-
-Calling `wait` on a promise that has been fulfilled will not trigger the wait
-function. It will simply return the previously resolved value.
-
-```php
-$promise = new Promise(function () { die('this is not called!'); });
-$promise->resolve('foo');
-echo $promise->wait(); // outputs "foo"
-```
-
-Calling `wait` on a promise that has been rejected will throw an exception. If
-the rejection reason is an instance of `\Exception` the reason is thrown.
-Otherwise, a `GuzzleHttp\Promise\RejectionException` is thrown and the reason
-can be obtained by calling the `getReason` method of the exception.
-
-```php
-$promise = new Promise();
-$promise->reject('foo');
-$promise->wait();
-```
-
-> PHP Fatal error: Uncaught exception 'GuzzleHttp\Promise\RejectionException' with message 'The promise was rejected with value: foo'
-
-
-## Unwrapping a promise
-
-When synchronously waiting on a promise, you are joining the state of the
-promise into the current state of execution (i.e., return the value of the
-promise if it was fulfilled or throw an exception if it was rejected). This is
-called "unwrapping" the promise. Waiting on a promise will by default unwrap
-the promise state.
-
-You can force a promise to resolve and *not* unwrap the state of the promise
-by passing `false` to the first argument of the `wait` function:
-
-```php
-$promise = new Promise();
-$promise->reject('foo');
-// This will not throw an exception. It simply ensures the promise has
-// been resolved.
-$promise->wait(false);
-```
-
-When unwrapping a promise, the resolved value of the promise will be waited
-upon until the unwrapped value is not a promise. This means that if you resolve
-promise A with a promise B and unwrap promise A, the value returned by the
-wait function will be the value delivered to promise B.
-
-**Note**: when you do not unwrap the promise, no value is returned.
-
-
-# Cancellation
-
-You can cancel a promise that has not yet been fulfilled using the `cancel()`
-method of a promise. When creating a promise you can provide an optional
-cancel function that when invoked cancels the action of computing a resolution
-of the promise.
-
-
-# API
-
-
-## Promise
-
-When creating a promise object, you can provide an optional `$waitFn` and
-`$cancelFn`. `$waitFn` is a function that is invoked with no arguments and is
-expected to resolve the promise. `$cancelFn` is a function with no arguments
-that is expected to cancel the computation of a promise. It is invoked when the
-`cancel()` method of a promise is called.
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise(
- function () use (&$promise) {
- $promise->resolve('waited');
- },
- function () {
- // do something that will cancel the promise computation (e.g., close
- // a socket, cancel a database query, etc...)
- }
-);
-
-assert('waited' === $promise->wait());
-```
-
-A promise has the following methods:
-
-- `then(callable $onFulfilled, callable $onRejected) : PromiseInterface`
-
- Appends fulfillment and rejection handlers to the promise, and returns a new promise resolving to the return value of the called handler.
-
-- `otherwise(callable $onRejected) : PromiseInterface`
-
- Appends a rejection handler callback to the promise, and returns a new promise resolving to the return value of the callback if it is called, or to its original fulfillment value if the promise is instead fulfilled.
-
-- `wait($unwrap = true) : mixed`
-
- Synchronously waits on the promise to complete.
-
- `$unwrap` controls whether or not the value of the promise is returned for a
- fulfilled promise or if an exception is thrown if the promise is rejected.
- This is set to `true` by default.
-
-- `cancel()`
-
- Attempts to cancel the promise if possible. The promise being cancelled and
- the parent most ancestor that has not yet been resolved will also be
- cancelled. Any promises waiting on the cancelled promise to resolve will also
- be cancelled.
-
-- `getState() : string`
-
- Returns the state of the promise. One of `pending`, `fulfilled`, or
- `rejected`.
-
-- `resolve($value)`
-
- Fulfills the promise with the given `$value`.
-
-- `reject($reason)`
-
- Rejects the promise with the given `$reason`.
-
-
-## FulfilledPromise
-
-A fulfilled promise can be created to represent a promise that has been
-fulfilled.
-
-```php
-use GuzzleHttp\Promise\FulfilledPromise;
-
-$promise = new FulfilledPromise('value');
-
-// Fulfilled callbacks are immediately invoked.
-$promise->then(function ($value) {
- echo $value;
-});
-```
-
-
-## RejectedPromise
-
-A rejected promise can be created to represent a promise that has been
-rejected.
-
-```php
-use GuzzleHttp\Promise\RejectedPromise;
-
-$promise = new RejectedPromise('Error');
-
-// Rejected callbacks are immediately invoked.
-$promise->then(null, function ($reason) {
- echo $reason;
-});
-```
-
-
-# Promise interop
-
-This library works with foreign promises that have a `then` method. This means
-you can use Guzzle promises with [React promises](https://github.com/reactphp/promise)
-for example. When a foreign promise is returned inside of a then method
-callback, promise resolution will occur recursively.
-
-```php
-// Create a React promise
-$deferred = new React\Promise\Deferred();
-$reactPromise = $deferred->promise();
-
-// Create a Guzzle promise that is fulfilled with a React promise.
-$guzzlePromise = new \GuzzleHttp\Promise\Promise();
-$guzzlePromise->then(function ($value) use ($reactPromise) {
- // Do something something with the value...
- // Return the React promise
- return $reactPromise;
-});
-```
-
-Please note that wait and cancel chaining is no longer possible when forwarding
-a foreign promise. You will need to wrap a third-party promise with a Guzzle
-promise in order to utilize wait and cancel functions with foreign promises.
-
-
-## Event Loop Integration
-
-In order to keep the stack size constant, Guzzle promises are resolved
-asynchronously using a task queue. When waiting on promises synchronously, the
-task queue will be automatically run to ensure that the blocking promise and
-any forwarded promises are resolved. When using promises asynchronously in an
-event loop, you will need to run the task queue on each tick of the loop. If
-you do not run the task queue, then promises will not be resolved.
-
-You can run the task queue using the `run()` method of the global task queue
-instance.
-
-```php
-// Get the global task queue
-$queue = \GuzzleHttp\Promise\queue();
-$queue->run();
-```
-
-For example, you could use Guzzle promises with React using a periodic timer:
-
-```php
-$loop = React\EventLoop\Factory::create();
-$loop->addPeriodicTimer(0, [$queue, 'run']);
-```
-
-*TODO*: Perhaps adding a `futureTick()` on each tick would be faster?
-
-
-# Implementation notes
-
-
-## Promise resolution and chaining is handled iteratively
-
-By shuffling pending handlers from one owner to another, promises are
-resolved iteratively, allowing for "infinite" then chaining.
-
-```php
-<?php
-require 'vendor/autoload.php';
-
-use GuzzleHttp\Promise\Promise;
-
-$parent = new Promise();
-$p = $parent;
-
-for ($i = 0; $i < 1000; $i++) {
- $p = $p->then(function ($v) {
- // The stack size remains constant (a good thing)
- echo xdebug_get_stack_depth() . ', ';
- return $v + 1;
- });
-}
-
-$parent->resolve(0);
-var_dump($p->wait()); // int(1000)
-
-```
-
-When a promise is fulfilled or rejected with a non-promise value, the promise
-then takes ownership of the handlers of each child promise and delivers values
-down the chain without using recursion.
-
-When a promise is resolved with another promise, the original promise transfers
-all of its pending handlers to the new promise. When the new promise is
-eventually resolved, all of the pending handlers are delivered the forwarded
-value.
-
-
-## A promise is the deferred.
-
-Some promise libraries implement promises using a deferred object to represent
-a computation and a promise object to represent the delivery of the result of
-the computation. This is a nice separation of computation and delivery because
-consumers of the promise cannot modify the value that will be eventually
-delivered.
-
-One side effect of being able to implement promise resolution and chaining
-iteratively is that you need to be able for one promise to reach into the state
-of another promise to shuffle around ownership of handlers. In order to achieve
-this without making the handlers of a promise publicly mutable, a promise is
-also the deferred value, allowing promises of the same parent class to reach
-into and modify the private properties of promises of the same type. While this
-does allow consumers of the value to modify the resolution or rejection of the
-deferred, it is a small price to pay for keeping the stack size constant.
-
-```php
-$promise = new Promise();
-$promise->then(function ($value) { echo $value; });
-// The promise is the deferred value, so you can deliver a value to it.
-$promise->resolve('foo');
-// prints "foo"
-```
diff --git a/vendor/guzzlehttp/promises/composer.json b/vendor/guzzlehttp/promises/composer.json
deleted file mode 100644
index ec41a61..0000000
--- a/vendor/guzzlehttp/promises/composer.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "name": "guzzlehttp/promises",
- "description": "Guzzle promises library",
- "keywords": ["promise"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "[email protected]",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.5.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.0"
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Promise\\": "src/"
- },
- "files": ["src/functions_include.php"]
- },
- "scripts": {
- "test": "vendor/bin/phpunit",
- "test-ci": "vendor/bin/phpunit --coverage-text"
- },
- "extra": {
- "branch-alias": {
- "dev-master": "1.4-dev"
- }
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/AggregateException.php b/vendor/guzzlehttp/promises/src/AggregateException.php
deleted file mode 100644
index 6a5690c..0000000
--- a/vendor/guzzlehttp/promises/src/AggregateException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * Exception thrown when too many errors occur in the some() or any() methods.
- */
-class AggregateException extends RejectionException
-{
- public function __construct($msg, array $reasons)
- {
- parent::__construct(
- $reasons,
- sprintf('%s; %d rejected promises', $msg, count($reasons))
- );
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/CancellationException.php b/vendor/guzzlehttp/promises/src/CancellationException.php
deleted file mode 100644
index cb360b8..0000000
--- a/vendor/guzzlehttp/promises/src/CancellationException.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * Exception that is set as the reason for a promise that has been cancelled.
- */
-class CancellationException extends RejectionException
-{
-}
diff --git a/vendor/guzzlehttp/promises/src/Coroutine.php b/vendor/guzzlehttp/promises/src/Coroutine.php
deleted file mode 100644
index 6aa0958..0000000
--- a/vendor/guzzlehttp/promises/src/Coroutine.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-use Exception;
-use Generator;
-use Throwable;
-
-/**
- * Creates a promise that is resolved using a generator that yields values or
- * promises (somewhat similar to C#'s async keyword).
- *
- * When called, the coroutine function will start an instance of the generator
- * and returns a promise that is fulfilled with its final yielded value.
- *
- * Control is returned back to the generator when the yielded promise settles.
- * This can lead to less verbose code when doing lots of sequential async calls
- * with minimal processing in between.
- *
- * use GuzzleHttp\Promise;
- *
- * function createPromise($value) {
- * return new Promise\FulfilledPromise($value);
- * }
- *
- * $promise = Promise\coroutine(function () {
- * $value = (yield createPromise('a'));
- * try {
- * $value = (yield createPromise($value . 'b'));
- * } catch (\Exception $e) {
- * // The promise was rejected.
- * }
- * yield $value . 'c';
- * });
- *
- * // Outputs "abc"
- * $promise->then(function ($v) { echo $v; });
- *
- * @param callable $generatorFn Generator function to wrap into a promise.
- *
- * @return Promise
- * @link https://github.com/petkaantonov/bluebird/blob/master/API.md#generators inspiration
- */
-final class Coroutine implements PromiseInterface
-{
- /**
- * @var PromiseInterface|null
- */
- private $currentPromise;
-
- /**
- * @var Generator
- */
- private $generator;
-
- /**
- * @var Promise
- */
- private $result;
-
- public function __construct(callable $generatorFn)
- {
- $this->generator = $generatorFn();
- $this->result = new Promise(function () {
- while (isset($this->currentPromise)) {
- $this->currentPromise->wait();
- }
- });
- $this->nextCoroutine($this->generator->current());
- }
-
- public function then(
- callable $onFulfilled = null,
- callable $onRejected = null
- ) {
- return $this->result->then($onFulfilled, $onRejected);
- }
-
- public function otherwise(callable $onRejected)
- {
- return $this->result->otherwise($onRejected);
- }
-
- public function wait($unwrap = true)
- {
- return $this->result->wait($unwrap);
- }
-
- public function getState()
- {
- return $this->result->getState();
- }
-
- public function resolve($value)
- {
- $this->result->resolve($value);
- }
-
- public function reject($reason)
- {
- $this->result->reject($reason);
- }
-
- public function cancel()
- {
- $this->currentPromise->cancel();
- $this->result->cancel();
- }
-
- private function nextCoroutine($yielded)
- {
- $this->currentPromise = promise_for($yielded)
- ->then([$this, '_handleSuccess'], [$this, '_handleFailure']);
- }
-
- /**
- * @internal
- */
- public function _handleSuccess($value)
- {
- unset($this->currentPromise);
- try {
- $next = $this->generator->send($value);
- if ($this->generator->valid()) {
- $this->nextCoroutine($next);
- } else {
- $this->result->resolve($value);
- }
- } catch (Exception $exception) {
- $this->result->reject($exception);
- } catch (Throwable $throwable) {
- $this->result->reject($throwable);
- }
- }
-
- /**
- * @internal
- */
- public function _handleFailure($reason)
- {
- unset($this->currentPromise);
- try {
- $nextYield = $this->generator->throw(exception_for($reason));
- // The throw was caught, so keep iterating on the coroutine
- $this->nextCoroutine($nextYield);
- } catch (Exception $exception) {
- $this->result->reject($exception);
- } catch (Throwable $throwable) {
- $this->result->reject($throwable);
- }
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/EachPromise.php b/vendor/guzzlehttp/promises/src/EachPromise.php
deleted file mode 100644
index d0ddf60..0000000
--- a/vendor/guzzlehttp/promises/src/EachPromise.php
+++ /dev/null
@@ -1,229 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * Represents a promise that iterates over many promises and invokes
- * side-effect functions in the process.
- */
-class EachPromise implements PromisorInterface
-{
- private $pending = [];
-
- /** @var \Iterator */
- private $iterable;
-
- /** @var callable|int */
- private $concurrency;
-
- /** @var callable */
- private $onFulfilled;
-
- /** @var callable */
- private $onRejected;
-
- /** @var Promise */
- private $aggregate;
-
- /** @var bool */
- private $mutex;
-
- /**
- * Configuration hash can include the following key value pairs:
- *
- * - fulfilled: (callable) Invoked when a promise fulfills. The function
- * is invoked with three arguments: the fulfillment value, the index
- * position from the iterable list of the promise, and the aggregate
- * promise that manages all of the promises. The aggregate promise may
- * be resolved from within the callback to short-circuit the promise.
- * - rejected: (callable) Invoked when a promise is rejected. The
- * function is invoked with three arguments: the rejection reason, the
- * index position from the iterable list of the promise, and the
- * aggregate promise that manages all of the promises. The aggregate
- * promise may be resolved from within the callback to short-circuit
- * the promise.
- * - concurrency: (integer) Pass this configuration option to limit the
- * allowed number of outstanding concurrently executing promises,
- * creating a capped pool of promises. There is no limit by default.
- *
- * @param mixed $iterable Promises or values to iterate.
- * @param array $config Configuration options
- */
- public function __construct($iterable, array $config = [])
- {
- $this->iterable = iter_for($iterable);
-
- if (isset($config['concurrency'])) {
- $this->concurrency = $config['concurrency'];
- }
-
- if (isset($config['fulfilled'])) {
- $this->onFulfilled = $config['fulfilled'];
- }
-
- if (isset($config['rejected'])) {
- $this->onRejected = $config['rejected'];
- }
- }
-
- public function promise()
- {
- if ($this->aggregate) {
- return $this->aggregate;
- }
-
- try {
- $this->createPromise();
- $this->iterable->rewind();
- $this->refillPending();
- } catch (\Throwable $e) {
- $this->aggregate->reject($e);
- } catch (\Exception $e) {
- $this->aggregate->reject($e);
- }
-
- return $this->aggregate;
- }
-
- private function createPromise()
- {
- $this->mutex = false;
- $this->aggregate = new Promise(function () {
- reset($this->pending);
- if (empty($this->pending) && !$this->iterable->valid()) {
- $this->aggregate->resolve(null);
- return;
- }
-
- // Consume a potentially fluctuating list of promises while
- // ensuring that indexes are maintained (precluding array_shift).
- while ($promise = current($this->pending)) {
- next($this->pending);
- $promise->wait();
- if ($this->aggregate->getState() !== PromiseInterface::PENDING) {
- return;
- }
- }
- });
-
- // Clear the references when the promise is resolved.
- $clearFn = function () {
- $this->iterable = $this->concurrency = $this->pending = null;
- $this->onFulfilled = $this->onRejected = null;
- };
-
- $this->aggregate->then($clearFn, $clearFn);
- }
-
- private function refillPending()
- {
- if (!$this->concurrency) {
- // Add all pending promises.
- while ($this->addPending() && $this->advanceIterator());
- return;
- }
-
- // Add only up to N pending promises.
- $concurrency = is_callable($this->concurrency)
- ? call_user_func($this->concurrency, count($this->pending))
- : $this->concurrency;
- $concurrency = max($concurrency - count($this->pending), 0);
- // Concurrency may be set to 0 to disallow new promises.
- if (!$concurrency) {
- return;
- }
- // Add the first pending promise.
- $this->addPending();
- // Note this is special handling for concurrency=1 so that we do
- // not advance the iterator after adding the first promise. This
- // helps work around issues with generators that might not have the
- // next value to yield until promise callbacks are called.
- while (--$concurrency
- && $this->advanceIterator()
- && $this->addPending());
- }
-
- private function addPending()
- {
- if (!$this->iterable || !$this->iterable->valid()) {
- return false;
- }
-
- $promise = promise_for($this->iterable->current());
- $idx = $this->iterable->key();
-
- $this->pending[$idx] = $promise->then(
- function ($value) use ($idx) {
- if ($this->onFulfilled) {
- call_user_func(
- $this->onFulfilled, $value, $idx, $this->aggregate
- );
- }
- $this->step($idx);
- },
- function ($reason) use ($idx) {
- if ($this->onRejected) {
- call_user_func(
- $this->onRejected, $reason, $idx, $this->aggregate
- );
- }
- $this->step($idx);
- }
- );
-
- return true;
- }
-
- private function advanceIterator()
- {
- // Place a lock on the iterator so that we ensure to not recurse,
- // preventing fatal generator errors.
- if ($this->mutex) {
- return false;
- }
-
- $this->mutex = true;
-
- try {
- $this->iterable->next();
- $this->mutex = false;
- return true;
- } catch (\Throwable $e) {
- $this->aggregate->reject($e);
- $this->mutex = false;
- return false;
- } catch (\Exception $e) {
- $this->aggregate->reject($e);
- $this->mutex = false;
- return false;
- }
- }
-
- private function step($idx)
- {
- // If the promise was already resolved, then ignore this step.
- if ($this->aggregate->getState() !== PromiseInterface::PENDING) {
- return;
- }
-
- unset($this->pending[$idx]);
-
- // Only refill pending promises if we are not locked, preventing the
- // EachPromise to recursively invoke the provided iterator, which
- // cause a fatal error: "Cannot resume an already running generator"
- if ($this->advanceIterator() && !$this->checkIfFinished()) {
- // Add more pending promises if possible.
- $this->refillPending();
- }
- }
-
- private function checkIfFinished()
- {
- if (!$this->pending && !$this->iterable->valid()) {
- // Resolve the promise if there's nothing left to do.
- $this->aggregate->resolve(null);
- return true;
- }
-
- return false;
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/FulfilledPromise.php b/vendor/guzzlehttp/promises/src/FulfilledPromise.php
deleted file mode 100644
index dbbeeb9..0000000
--- a/vendor/guzzlehttp/promises/src/FulfilledPromise.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * A promise that has been fulfilled.
- *
- * Thenning off of this promise will invoke the onFulfilled callback
- * immediately and ignore other callbacks.
- */
-class FulfilledPromise implements PromiseInterface
-{
- private $value;
-
- public function __construct($value)
- {
- if (method_exists($value, 'then')) {
- throw new \InvalidArgumentException(
- 'You cannot create a FulfilledPromise with a promise.');
- }
-
- $this->value = $value;
- }
-
- public function then(
- callable $onFulfilled = null,
- callable $onRejected = null
- ) {
- // Return itself if there is no onFulfilled function.
- if (!$onFulfilled) {
- return $this;
- }
-
- $queue = queue();
- $p = new Promise([$queue, 'run']);
- $value = $this->value;
- $queue->add(static function () use ($p, $value, $onFulfilled) {
- if ($p->getState() === self::PENDING) {
- try {
- $p->resolve($onFulfilled($value));
- } catch (\Throwable $e) {
- $p->reject($e);
- } catch (\Exception $e) {
- $p->reject($e);
- }
- }
- });
-
- return $p;
- }
-
- public function otherwise(callable $onRejected)
- {
- return $this->then(null, $onRejected);
- }
-
- public function wait($unwrap = true, $defaultDelivery = null)
- {
- return $unwrap ? $this->value : null;
- }
-
- public function getState()
- {
- return self::FULFILLED;
- }
-
- public function resolve($value)
- {
- if ($value !== $this->value) {
- throw new \LogicException("Cannot resolve a fulfilled promise");
- }
- }
-
- public function reject($reason)
- {
- throw new \LogicException("Cannot reject a fulfilled promise");
- }
-
- public function cancel()
- {
- // pass
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/Promise.php b/vendor/guzzlehttp/promises/src/Promise.php
deleted file mode 100644
index 844ada0..0000000
--- a/vendor/guzzlehttp/promises/src/Promise.php
+++ /dev/null
@@ -1,280 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * Promises/A+ implementation that avoids recursion when possible.
- *
- * @link https://promisesaplus.com/
- */
-class Promise implements PromiseInterface
-{
- private $state = self::PENDING;
- private $result;
- private $cancelFn;
- private $waitFn;
- private $waitList;
- private $handlers = [];
-
- /**
- * @param callable $waitFn Fn that when invoked resolves the promise.
- * @param callable $cancelFn Fn that when invoked cancels the promise.
- */
- public function __construct(
- callable $waitFn = null,
- callable $cancelFn = null
- ) {
- $this->waitFn = $waitFn;
- $this->cancelFn = $cancelFn;
- }
-
- public function then(
- callable $onFulfilled = null,
- callable $onRejected = null
- ) {
- if ($this->state === self::PENDING) {
- $p = new Promise(null, [$this, 'cancel']);
- $this->handlers[] = [$p, $onFulfilled, $onRejected];
- $p->waitList = $this->waitList;
- $p->waitList[] = $this;
- return $p;
- }
-
- // Return a fulfilled promise and immediately invoke any callbacks.
- if ($this->state === self::FULFILLED) {
- return $onFulfilled
- ? promise_for($this->result)->then($onFulfilled)
- : promise_for($this->result);
- }
-
- // It's either cancelled or rejected, so return a rejected promise
- // and immediately invoke any callbacks.
- $rejection = rejection_for($this->result);
- return $onRejected ? $rejection->then(null, $onRejected) : $rejection;
- }
-
- public function otherwise(callable $onRejected)
- {
- return $this->then(null, $onRejected);
- }
-
- public function wait($unwrap = true)
- {
- $this->waitIfPending();
-
- $inner = $this->result instanceof PromiseInterface
- ? $this->result->wait($unwrap)
- : $this->result;
-
- if ($unwrap) {
- if ($this->result instanceof PromiseInterface
- || $this->state === self::FULFILLED
- ) {
- return $inner;
- } else {
- // It's rejected so "unwrap" and throw an exception.
- throw exception_for($inner);
- }
- }
- }
-
- public function getState()
- {
- return $this->state;
- }
-
- public function cancel()
- {
- if ($this->state !== self::PENDING) {
- return;
- }
-
- $this->waitFn = $this->waitList = null;
-
- if ($this->cancelFn) {
- $fn = $this->cancelFn;
- $this->cancelFn = null;
- try {
- $fn();
- } catch (\Throwable $e) {
- $this->reject($e);
- } catch (\Exception $e) {
- $this->reject($e);
- }
- }
-
- // Reject the promise only if it wasn't rejected in a then callback.
- if ($this->state === self::PENDING) {
- $this->reject(new CancellationException('Promise has been cancelled'));
- }
- }
-
- public function resolve($value)
- {
- $this->settle(self::FULFILLED, $value);
- }
-
- public function reject($reason)
- {
- $this->settle(self::REJECTED, $reason);
- }
-
- private function settle($state, $value)
- {
- if ($this->state !== self::PENDING) {
- // Ignore calls with the same resolution.
- if ($state === $this->state && $value === $this->result) {
- return;
- }
- throw $this->state === $state
- ? new \LogicException("The promise is already {$state}.")
- : new \LogicException("Cannot change a {$this->state} promise to {$state}");
- }
-
- if ($value === $this) {
- throw new \LogicException('Cannot fulfill or reject a promise with itself');
- }
-
- // Clear out the state of the promise but stash the handlers.
- $this->state = $state;
- $this->result = $value;
- $handlers = $this->handlers;
- $this->handlers = null;
- $this->waitList = $this->waitFn = null;
- $this->cancelFn = null;
-
- if (!$handlers) {
- return;
- }
-
- // If the value was not a settled promise or a thenable, then resolve
- // it in the task queue using the correct ID.
- if (!method_exists($value, 'then')) {
- $id = $state === self::FULFILLED ? 1 : 2;
- // It's a success, so resolve the handlers in the queue.
- queue()->add(static function () use ($id, $value, $handlers) {
- foreach ($handlers as $handler) {
- self::callHandler($id, $value, $handler);
- }
- });
- } elseif ($value instanceof Promise
- && $value->getState() === self::PENDING
- ) {
- // We can just merge our handlers onto the next promise.
- $value->handlers = array_merge($value->handlers, $handlers);
- } else {
- // Resolve the handlers when the forwarded promise is resolved.
- $value->then(
- static function ($value) use ($handlers) {
- foreach ($handlers as $handler) {
- self::callHandler(1, $value, $handler);
- }
- },
- static function ($reason) use ($handlers) {
- foreach ($handlers as $handler) {
- self::callHandler(2, $reason, $handler);
- }
- }
- );
- }
- }
-
- /**
- * Call a stack of handlers using a specific callback index and value.
- *
- * @param int $index 1 (resolve) or 2 (reject).
- * @param mixed $value Value to pass to the callback.
- * @param array $handler Array of handler data (promise and callbacks).
- *
- * @return array Returns the next group to resolve.
- */
- private static function callHandler($index, $value, array $handler)
- {
- /** @var PromiseInterface $promise */
- $promise = $handler[0];
-
- // The promise may have been cancelled or resolved before placing
- // this thunk in the queue.
- if ($promise->getState() !== self::PENDING) {
- return;
- }
-
- try {
- if (isset($handler[$index])) {
- $promise->resolve($handler[$index]($value));
- } elseif ($index === 1) {
- // Forward resolution values as-is.
- $promise->resolve($value);
- } else {
- // Forward rejections down the chain.
- $promise->reject($value);
- }
- } catch (\Throwable $reason) {
- $promise->reject($reason);
- } catch (\Exception $reason) {
- $promise->reject($reason);
- }
- }
-
- private function waitIfPending()
- {
- if ($this->state !== self::PENDING) {
- return;
- } elseif ($this->waitFn) {
- $this->invokeWaitFn();
- } elseif ($this->waitList) {
- $this->invokeWaitList();
- } else {
- // If there's not wait function, then reject the promise.
- $this->reject('Cannot wait on a promise that has '
- . 'no internal wait function. You must provide a wait '
- . 'function when constructing the promise to be able to '
- . 'wait on a promise.');
- }
-
- queue()->run();
-
- if ($this->state === self::PENDING) {
- $this->reject('Invoking the wait callback did not resolve the promise');
- }
- }
-
- private function invokeWaitFn()
- {
- try {
- $wfn = $this->waitFn;
- $this->waitFn = null;
- $wfn(true);
- } catch (\Exception $reason) {
- if ($this->state === self::PENDING) {
- // The promise has not been resolved yet, so reject the promise
- // with the exception.
- $this->reject($reason);
- } else {
- // The promise was already resolved, so there's a problem in
- // the application.
- throw $reason;
- }
- }
- }
-
- private function invokeWaitList()
- {
- $waitList = $this->waitList;
- $this->waitList = null;
-
- foreach ($waitList as $result) {
- while (true) {
- $result->waitIfPending();
-
- if ($result->result instanceof Promise) {
- $result = $result->result;
- } else {
- if ($result->result instanceof PromiseInterface) {
- $result->result->wait(false);
- }
- break;
- }
- }
- }
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/PromiseInterface.php b/vendor/guzzlehttp/promises/src/PromiseInterface.php
deleted file mode 100644
index 8f5f4b9..0000000
--- a/vendor/guzzlehttp/promises/src/PromiseInterface.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * A promise represents the eventual result of an asynchronous operation.
- *
- * The primary way of interacting with a promise is through its then method,
- * which registers callbacks to receive either a promise’s eventual value or
- * the reason why the promise cannot be fulfilled.
- *
- * @link https://promisesaplus.com/
- */
-interface PromiseInterface
-{
- const PENDING = 'pending';
- const FULFILLED = 'fulfilled';
- const REJECTED = 'rejected';
-
- /**
- * Appends fulfillment and rejection handlers to the promise, and returns
- * a new promise resolving to the return value of the called handler.
- *
- * @param callable $onFulfilled Invoked when the promise fulfills.
- * @param callable $onRejected Invoked when the promise is rejected.
- *
- * @return PromiseInterface
- */
- public function then(
- callable $onFulfilled = null,
- callable $onRejected = null
- );
-
- /**
- * Appends a rejection handler callback to the promise, and returns a new
- * promise resolving to the return value of the callback if it is called,
- * or to its original fulfillment value if the promise is instead
- * fulfilled.
- *
- * @param callable $onRejected Invoked when the promise is rejected.
- *
- * @return PromiseInterface
- */
- public function otherwise(callable $onRejected);
-
- /**
- * Get the state of the promise ("pending", "rejected", or "fulfilled").
- *
- * The three states can be checked against the constants defined on
- * PromiseInterface: PENDING, FULFILLED, and REJECTED.
- *
- * @return string
- */
- public function getState();
-
- /**
- * Resolve the promise with the given value.
- *
- * @param mixed $value
- * @throws \RuntimeException if the promise is already resolved.
- */
- public function resolve($value);
-
- /**
- * Reject the promise with the given reason.
- *
- * @param mixed $reason
- * @throws \RuntimeException if the promise is already resolved.
- */
- public function reject($reason);
-
- /**
- * Cancels the promise if possible.
- *
- * @link https://github.com/promises-aplus/cancellation-spec/issues/7
- */
- public function cancel();
-
- /**
- * Waits until the promise completes if possible.
- *
- * Pass $unwrap as true to unwrap the result of the promise, either
- * returning the resolved value or throwing the rejected exception.
- *
- * If the promise cannot be waited on, then the promise will be rejected.
- *
- * @param bool $unwrap
- *
- * @return mixed
- * @throws \LogicException if the promise has no wait function or if the
- * promise does not settle after waiting.
- */
- public function wait($unwrap = true);
-}
diff --git a/vendor/guzzlehttp/promises/src/PromisorInterface.php b/vendor/guzzlehttp/promises/src/PromisorInterface.php
deleted file mode 100644
index b07fe32..0000000
--- a/vendor/guzzlehttp/promises/src/PromisorInterface.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * Interface used with classes that return a promise.
- */
-interface PromisorInterface
-{
- /**
- * Returns a promise.
- *
- * @return PromiseInterface
- */
- public function promise();
-}
diff --git a/vendor/guzzlehttp/promises/src/RejectedPromise.php b/vendor/guzzlehttp/promises/src/RejectedPromise.php
deleted file mode 100644
index 2bc6508..0000000
--- a/vendor/guzzlehttp/promises/src/RejectedPromise.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * A promise that has been rejected.
- *
- * Thenning off of this promise will invoke the onRejected callback
- * immediately and ignore other callbacks.
- */
-class RejectedPromise implements PromiseInterface
-{
- private $reason;
-
- public function __construct($reason)
- {
- if (method_exists($reason, 'then')) {
- throw new \InvalidArgumentException(
- 'You cannot create a RejectedPromise with a promise.');
- }
-
- $this->reason = $reason;
- }
-
- public function then(
- callable $onFulfilled = null,
- callable $onRejected = null
- ) {
- // If there's no onRejected callback then just return self.
- if (!$onRejected) {
- return $this;
- }
-
- $queue = queue();
- $reason = $this->reason;
- $p = new Promise([$queue, 'run']);
- $queue->add(static function () use ($p, $reason, $onRejected) {
- if ($p->getState() === self::PENDING) {
- try {
- // Return a resolved promise if onRejected does not throw.
- $p->resolve($onRejected($reason));
- } catch (\Throwable $e) {
- // onRejected threw, so return a rejected promise.
- $p->reject($e);
- } catch (\Exception $e) {
- // onRejected threw, so return a rejected promise.
- $p->reject($e);
- }
- }
- });
-
- return $p;
- }
-
- public function otherwise(callable $onRejected)
- {
- return $this->then(null, $onRejected);
- }
-
- public function wait($unwrap = true, $defaultDelivery = null)
- {
- if ($unwrap) {
- throw exception_for($this->reason);
- }
- }
-
- public function getState()
- {
- return self::REJECTED;
- }
-
- public function resolve($value)
- {
- throw new \LogicException("Cannot resolve a rejected promise");
- }
-
- public function reject($reason)
- {
- if ($reason !== $this->reason) {
- throw new \LogicException("Cannot reject a rejected promise");
- }
- }
-
- public function cancel()
- {
- // pass
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/RejectionException.php b/vendor/guzzlehttp/promises/src/RejectionException.php
deleted file mode 100644
index 07c1136..0000000
--- a/vendor/guzzlehttp/promises/src/RejectionException.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * A special exception that is thrown when waiting on a rejected promise.
- *
- * The reason value is available via the getReason() method.
- */
-class RejectionException extends \RuntimeException
-{
- /** @var mixed Rejection reason. */
- private $reason;
-
- /**
- * @param mixed $reason Rejection reason.
- * @param string $description Optional description
- */
- public function __construct($reason, $description = null)
- {
- $this->reason = $reason;
-
- $message = 'The promise was rejected';
-
- if ($description) {
- $message .= ' with reason: ' . $description;
- } elseif (is_string($reason)
- || (is_object($reason) && method_exists($reason, '__toString'))
- ) {
- $message .= ' with reason: ' . $this->reason;
- } elseif ($reason instanceof \JsonSerializable) {
- $message .= ' with reason: '
- . json_encode($this->reason, JSON_PRETTY_PRINT);
- }
-
- parent::__construct($message);
- }
-
- /**
- * Returns the rejection reason.
- *
- * @return mixed
- */
- public function getReason()
- {
- return $this->reason;
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/TaskQueue.php b/vendor/guzzlehttp/promises/src/TaskQueue.php
deleted file mode 100644
index 6e8a2a0..0000000
--- a/vendor/guzzlehttp/promises/src/TaskQueue.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * A task queue that executes tasks in a FIFO order.
- *
- * This task queue class is used to settle promises asynchronously and
- * maintains a constant stack size. You can use the task queue asynchronously
- * by calling the `run()` function of the global task queue in an event loop.
- *
- * GuzzleHttp\Promise\queue()->run();
- */
-class TaskQueue implements TaskQueueInterface
-{
- private $enableShutdown = true;
- private $queue = [];
-
- public function __construct($withShutdown = true)
- {
- if ($withShutdown) {
- register_shutdown_function(function () {
- if ($this->enableShutdown) {
- // Only run the tasks if an E_ERROR didn't occur.
- $err = error_get_last();
- if (!$err || ($err['type'] ^ E_ERROR)) {
- $this->run();
- }
- }
- });
- }
- }
-
- public function isEmpty()
- {
- return !$this->queue;
- }
-
- public function add(callable $task)
- {
- $this->queue[] = $task;
- }
-
- public function run()
- {
- /** @var callable $task */
- while ($task = array_shift($this->queue)) {
- $task();
- }
- }
-
- /**
- * The task queue will be run and exhausted by default when the process
- * exits IFF the exit is not the result of a PHP E_ERROR error.
- *
- * You can disable running the automatic shutdown of the queue by calling
- * this function. If you disable the task queue shutdown process, then you
- * MUST either run the task queue (as a result of running your event loop
- * or manually using the run() method) or wait on each outstanding promise.
- *
- * Note: This shutdown will occur before any destructors are triggered.
- */
- public function disableShutdown()
- {
- $this->enableShutdown = false;
- }
-}
diff --git a/vendor/guzzlehttp/promises/src/TaskQueueInterface.php b/vendor/guzzlehttp/promises/src/TaskQueueInterface.php
deleted file mode 100644
index ac8306e..0000000
--- a/vendor/guzzlehttp/promises/src/TaskQueueInterface.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-interface TaskQueueInterface
-{
- /**
- * Returns true if the queue is empty.
- *
- * @return bool
- */
- public function isEmpty();
-
- /**
- * Adds a task to the queue that will be executed the next time run is
- * called.
- *
- * @param callable $task
- */
- public function add(callable $task);
-
- /**
- * Execute all of the pending task in the queue.
- */
- public function run();
-}
diff --git a/vendor/guzzlehttp/promises/src/functions.php b/vendor/guzzlehttp/promises/src/functions.php
deleted file mode 100644
index 4e27709..0000000
--- a/vendor/guzzlehttp/promises/src/functions.php
+++ /dev/null
@@ -1,457 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * Get the global task queue used for promise resolution.
- *
- * This task queue MUST be run in an event loop in order for promises to be
- * settled asynchronously. It will be automatically run when synchronously
- * waiting on a promise.
- *
- * <code>
- * while ($eventLoop->isRunning()) {
- * GuzzleHttp\Promise\queue()->run();
- * }
- * </code>
- *
- * @param TaskQueueInterface $assign Optionally specify a new queue instance.
- *
- * @return TaskQueueInterface
- */
-function queue(TaskQueueInterface $assign = null)
-{
- static $queue;
-
- if ($assign) {
- $queue = $assign;
- } elseif (!$queue) {
- $queue = new TaskQueue();
- }
-
- return $queue;
-}
-
-/**
- * Adds a function to run in the task queue when it is next `run()` and returns
- * a promise that is fulfilled or rejected with the result.
- *
- * @param callable $task Task function to run.
- *
- * @return PromiseInterface
- */
-function task(callable $task)
-{
- $queue = queue();
- $promise = new Promise([$queue, 'run']);
- $queue->add(function () use ($task, $promise) {
- try {
- $promise->resolve($task());
- } catch (\Throwable $e) {
- $promise->reject($e);
- } catch (\Exception $e) {
- $promise->reject($e);
- }
- });
-
- return $promise;
-}
-
-/**
- * Creates a promise for a value if the value is not a promise.
- *
- * @param mixed $value Promise or value.
- *
- * @return PromiseInterface
- */
-function promise_for($value)
-{
- if ($value instanceof PromiseInterface) {
- return $value;
- }
-
- // Return a Guzzle promise that shadows the given promise.
- if (method_exists($value, 'then')) {
- $wfn = method_exists($value, 'wait') ? [$value, 'wait'] : null;
- $cfn = method_exists($value, 'cancel') ? [$value, 'cancel'] : null;
- $promise = new Promise($wfn, $cfn);
- $value->then([$promise, 'resolve'], [$promise, 'reject']);
- return $promise;
- }
-
- return new FulfilledPromise($value);
-}
-
-/**
- * Creates a rejected promise for a reason if the reason is not a promise. If
- * the provided reason is a promise, then it is returned as-is.
- *
- * @param mixed $reason Promise or reason.
- *
- * @return PromiseInterface
- */
-function rejection_for($reason)
-{
- if ($reason instanceof PromiseInterface) {
- return $reason;
- }
-
- return new RejectedPromise($reason);
-}
-
-/**
- * Create an exception for a rejected promise value.
- *
- * @param mixed $reason
- *
- * @return \Exception|\Throwable
- */
-function exception_for($reason)
-{
- return $reason instanceof \Exception || $reason instanceof \Throwable
- ? $reason
- : new RejectionException($reason);
-}
-
-/**
- * Returns an iterator for the given value.
- *
- * @param mixed $value
- *
- * @return \Iterator
- */
-function iter_for($value)
-{
- if ($value instanceof \Iterator) {
- return $value;
- } elseif (is_array($value)) {
- return new \ArrayIterator($value);
- } else {
- return new \ArrayIterator([$value]);
- }
-}
-
-/**
- * Synchronously waits on a promise to resolve and returns an inspection state
- * array.
- *
- * Returns a state associative array containing a "state" key mapping to a
- * valid promise state. If the state of the promise is "fulfilled", the array
- * will contain a "value" key mapping to the fulfilled value of the promise. If
- * the promise is rejected, the array will contain a "reason" key mapping to
- * the rejection reason of the promise.
- *
- * @param PromiseInterface $promise Promise or value.
- *
- * @return array
- */
-function inspect(PromiseInterface $promise)
-{
- try {
- return [
- 'state' => PromiseInterface::FULFILLED,
- 'value' => $promise->wait()
- ];
- } catch (RejectionException $e) {
- return ['state' => PromiseInterface::REJECTED, 'reason' => $e->getReason()];
- } catch (\Throwable $e) {
- return ['state' => PromiseInterface::REJECTED, 'reason' => $e];
- } catch (\Exception $e) {
- return ['state' => PromiseInterface::REJECTED, 'reason' => $e];
- }
-}
-
-/**
- * Waits on all of the provided promises, but does not unwrap rejected promises
- * as thrown exception.
- *
- * Returns an array of inspection state arrays.
- *
- * @param PromiseInterface[] $promises Traversable of promises to wait upon.
- *
- * @return array
- * @see GuzzleHttp\Promise\inspect for the inspection state array format.
- */
-function inspect_all($promises)
-{
- $results = [];
- foreach ($promises as $key => $promise) {
- $results[$key] = inspect($promise);
- }
-
- return $results;
-}
-
-/**
- * Waits on all of the provided promises and returns the fulfilled values.
- *
- * Returns an array that contains the value of each promise (in the same order
- * the promises were provided). An exception is thrown if any of the promises
- * are rejected.
- *
- * @param mixed $promises Iterable of PromiseInterface objects to wait on.
- *
- * @return array
- * @throws \Exception on error
- * @throws \Throwable on error in PHP >=7
- */
-function unwrap($promises)
-{
- $results = [];
- foreach ($promises as $key => $promise) {
- $results[$key] = $promise->wait();
- }
-
- return $results;
-}
-
-/**
- * Given an array of promises, return a promise that is fulfilled when all the
- * items in the array are fulfilled.
- *
- * The promise's fulfillment value is an array with fulfillment values at
- * respective positions to the original array. If any promise in the array
- * rejects, the returned promise is rejected with the rejection reason.
- *
- * @param mixed $promises Promises or values.
- *
- * @return PromiseInterface
- */
-function all($promises)
-{
- $results = [];
- return each(
- $promises,
- function ($value, $idx) use (&$results) {
- $results[$idx] = $value;
- },
- function ($reason, $idx, Promise $aggregate) {
- $aggregate->reject($reason);
- }
- )->then(function () use (&$results) {
- ksort($results);
- return $results;
- });
-}
-
-/**
- * Initiate a competitive race between multiple promises or values (values will
- * become immediately fulfilled promises).
- *
- * When count amount of promises have been fulfilled, the returned promise is
- * fulfilled with an array that contains the fulfillment values of the winners
- * in order of resolution.
- *
- * This prommise is rejected with a {@see GuzzleHttp\Promise\AggregateException}
- * if the number of fulfilled promises is less than the desired $count.
- *
- * @param int $count Total number of promises.
- * @param mixed $promises Promises or values.
- *
- * @return PromiseInterface
- */
-function some($count, $promises)
-{
- $results = [];
- $rejections = [];
-
- return each(
- $promises,
- function ($value, $idx, PromiseInterface $p) use (&$results, $count) {
- if ($p->getState() !== PromiseInterface::PENDING) {
- return;
- }
- $results[$idx] = $value;
- if (count($results) >= $count) {
- $p->resolve(null);
- }
- },
- function ($reason) use (&$rejections) {
- $rejections[] = $reason;
- }
- )->then(
- function () use (&$results, &$rejections, $count) {
- if (count($results) !== $count) {
- throw new AggregateException(
- 'Not enough promises to fulfill count',
- $rejections
- );
- }
- ksort($results);
- return array_values($results);
- }
- );
-}
-
-/**
- * Like some(), with 1 as count. However, if the promise fulfills, the
- * fulfillment value is not an array of 1 but the value directly.
- *
- * @param mixed $promises Promises or values.
- *
- * @return PromiseInterface
- */
-function any($promises)
-{
- return some(1, $promises)->then(function ($values) { return $values[0]; });
-}
-
-/**
- * Returns a promise that is fulfilled when all of the provided promises have
- * been fulfilled or rejected.
- *
- * The returned promise is fulfilled with an array of inspection state arrays.
- *
- * @param mixed $promises Promises or values.
- *
- * @return PromiseInterface
- * @see GuzzleHttp\Promise\inspect for the inspection state array format.
- */
-function settle($promises)
-{
- $results = [];
-
- return each(
- $promises,
- function ($value, $idx) use (&$results) {
- $results[$idx] = ['state' => PromiseInterface::FULFILLED, 'value' => $value];
- },
- function ($reason, $idx) use (&$results) {
- $results[$idx] = ['state' => PromiseInterface::REJECTED, 'reason' => $reason];
- }
- )->then(function () use (&$results) {
- ksort($results);
- return $results;
- });
-}
-
-/**
- * Given an iterator that yields promises or values, returns a promise that is
- * fulfilled with a null value when the iterator has been consumed or the
- * aggregate promise has been fulfilled or rejected.
- *
- * $onFulfilled is a function that accepts the fulfilled value, iterator
- * index, and the aggregate promise. The callback can invoke any necessary side
- * effects and choose to resolve or reject the aggregate promise if needed.
- *
- * $onRejected is a function that accepts the rejection reason, iterator
- * index, and the aggregate promise. The callback can invoke any necessary side
- * effects and choose to resolve or reject the aggregate promise if needed.
- *
- * @param mixed $iterable Iterator or array to iterate over.
- * @param callable $onFulfilled
- * @param callable $onRejected
- *
- * @return PromiseInterface
- */
-function each(
- $iterable,
- callable $onFulfilled = null,
- callable $onRejected = null
-) {
- return (new EachPromise($iterable, [
- 'fulfilled' => $onFulfilled,
- 'rejected' => $onRejected
- ]))->promise();
-}
-
-/**
- * Like each, but only allows a certain number of outstanding promises at any
- * given time.
- *
- * $concurrency may be an integer or a function that accepts the number of
- * pending promises and returns a numeric concurrency limit value to allow for
- * dynamic a concurrency size.
- *
- * @param mixed $iterable
- * @param int|callable $concurrency
- * @param callable $onFulfilled
- * @param callable $onRejected
- *
- * @return PromiseInterface
- */
-function each_limit(
- $iterable,
- $concurrency,
- callable $onFulfilled = null,
- callable $onRejected = null
-) {
- return (new EachPromise($iterable, [
- 'fulfilled' => $onFulfilled,
- 'rejected' => $onRejected,
- 'concurrency' => $concurrency
- ]))->promise();
-}
-
-/**
- * Like each_limit, but ensures that no promise in the given $iterable argument
- * is rejected. If any promise is rejected, then the aggregate promise is
- * rejected with the encountered rejection.
- *
- * @param mixed $iterable
- * @param int|callable $concurrency
- * @param callable $onFulfilled
- *
- * @return PromiseInterface
- */
-function each_limit_all(
- $iterable,
- $concurrency,
- callable $onFulfilled = null
-) {
- return each_limit(
- $iterable,
- $concurrency,
- $onFulfilled,
- function ($reason, $idx, PromiseInterface $aggregate) {
- $aggregate->reject($reason);
- }
- );
-}
-
-/**
- * Returns true if a promise is fulfilled.
- *
- * @param PromiseInterface $promise
- *
- * @return bool
- */
-function is_fulfilled(PromiseInterface $promise)
-{
- return $promise->getState() === PromiseInterface::FULFILLED;
-}
-
-/**
- * Returns true if a promise is rejected.
- *
- * @param PromiseInterface $promise
- *
- * @return bool
- */
-function is_rejected(PromiseInterface $promise)
-{
- return $promise->getState() === PromiseInterface::REJECTED;
-}
-
-/**
- * Returns true if a promise is fulfilled or rejected.
- *
- * @param PromiseInterface $promise
- *
- * @return bool
- */
-function is_settled(PromiseInterface $promise)
-{
- return $promise->getState() !== PromiseInterface::PENDING;
-}
-
-/**
- * @see Coroutine
- *
- * @param callable $generatorFn
- *
- * @return PromiseInterface
- */
-function coroutine(callable $generatorFn)
-{
- return new Coroutine($generatorFn);
-}
diff --git a/vendor/guzzlehttp/promises/src/functions_include.php b/vendor/guzzlehttp/promises/src/functions_include.php
deleted file mode 100644
index 34cd171..0000000
--- a/vendor/guzzlehttp/promises/src/functions_include.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-
-// Don't redefine the functions if included multiple times.
-if (!function_exists('GuzzleHttp\Promise\promise_for')) {
- require __DIR__ . '/functions.php';
-}
diff --git a/vendor/guzzlehttp/psr7/CHANGELOG.md b/vendor/guzzlehttp/psr7/CHANGELOG.md
deleted file mode 100644
index 8a3743d..0000000
--- a/vendor/guzzlehttp/psr7/CHANGELOG.md
+++ /dev/null
@@ -1,246 +0,0 @@
-# Change Log
-
-
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
-and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
-
-
-## [Unreleased]
-
-
-## [1.6.0]
-
-### Added
-
-- Allowed version `^3.0` of `ralouphie/getallheaders` dependency (#244)
-- Added MIME type for WEBP image format (#246)
-- Added more validation of values according to PSR-7 and RFC standards, e.g. status code range (#250, #272)
-
-### Changed
-
-- Tests don't pass with HHVM 4.0, so HHVM support got dropped. Other libraries like composer have done the same. (#262)
-- Accept port number 0 to be valid (#270)
-
-### Fixed
-
-- Fixed subsequent reads from `php://input` in ServerRequest (#247)
-- Fixed readable/writable detection for certain stream modes (#248)
-- Fixed encoding of special characters in the `userInfo` component of an URI (#253)
-
-
-## [1.5.2] - 2018-12-04
-
-### Fixed
-
-- Check body size when getting the message summary
-
-
-## [1.5.1] - 2018-12-04
-
-### Fixed
-
-- Get the summary of a body only if it is readable
-
-
-## [1.5.0] - 2018-12-03
-
-### Added
-
-- Response first-line to response string exception (fixes #145)
-- A test for #129 behavior
-- `get_message_body_summary` function in order to get the message summary
-- `3gp` and `mkv` mime types
-
-### Changed
-
-- Clarify exception message when stream is detached
-
-### Deprecated
-
-- Deprecated parsing folded header lines as per RFC 7230
-
-### Fixed
-
-- Fix `AppendStream::detach` to not close streams
-- `InflateStream` preserves `isSeekable` attribute of the underlying stream
-- `ServerRequest::getUriFromGlobals` to support URLs in query parameters
-
-
-Several other fixes and improvements.
-
-
-## [1.4.2] - 2017-03-20
-
-### Fixed
-
-- Reverted BC break to `Uri::resolve` and `Uri::removeDotSegments` by removing
- calls to `trigger_error` when deprecated methods are invoked.
-
-
-## [1.4.1] - 2017-02-27
-
-### Added
-
-- Rriggering of silenced deprecation warnings.
-
-### Fixed
-
-- Reverted BC break by reintroducing behavior to automagically fix a URI with a
- relative path and an authority by adding a leading slash to the path. It's only
- deprecated now.
-
-
-## [1.4.0] - 2017-02-21
-
-### Added
-
-- Added common URI utility methods based on RFC 3986 (see documentation in the readme):
- - `Uri::isDefaultPort`
- - `Uri::isAbsolute`
- - `Uri::isNetworkPathReference`
- - `Uri::isAbsolutePathReference`
- - `Uri::isRelativePathReference`
- - `Uri::isSameDocumentReference`
- - `Uri::composeComponents`
- - `UriNormalizer::normalize`
- - `UriNormalizer::isEquivalent`
- - `UriResolver::relativize`
-
-### Changed
-
-- Ensure `ServerRequest::getUriFromGlobals` returns a URI in absolute form.
-- Allow `parse_response` to parse a response without delimiting space and reason.
-- Ensure each URI modification results in a valid URI according to PSR-7 discussions.
- Invalid modifications will throw an exception instead of returning a wrong URI or
- doing some magic.
- - `(new Uri)->withPath('foo')->withHost('example.com')` will throw an exception
- because the path of a URI with an authority must start with a slash "/" or be empty
- - `(new Uri())->withScheme('http')` will return `'http://localhost'`
-
-### Deprecated
-
-- `Uri::resolve` in favor of `UriResolver::resolve`
-- `Uri::removeDotSegments` in favor of `UriResolver::removeDotSegments`
-
-### Fixed
-
-- `Stream::read` when length parameter <= 0.
-- `copy_to_stream` reads bytes in chunks instead of `maxLen` into memory.
-- `ServerRequest::getUriFromGlobals` when `Host` header contains port.
-- Compatibility of URIs with `file` scheme and empty host.
-
-
-## [1.3.1] - 2016-06-25
-
-### Fixed
-
-- `Uri::__toString` for network path references, e.g. `//example.org`.
-- Missing lowercase normalization for host.
-- Handling of URI components in case they are `'0'` in a lot of places,
- e.g. as a user info password.
-- `Uri::withAddedHeader` to correctly merge headers with different case.
-- Trimming of header values in `Uri::withAddedHeader`. Header values may
- be surrounded by whitespace which should be ignored according to RFC 7230
- Section 3.2.4. This does not apply to header names.
-- `Uri::withAddedHeader` with an array of header values.
-- `Uri::resolve` when base path has no slash and handling of fragment.
-- Handling of encoding in `Uri::with(out)QueryValue` so one can pass the
- key/value both in encoded as well as decoded form to those methods. This is
- consistent with withPath, withQuery etc.
-- `ServerRequest::withoutAttribute` when attribute value is null.
-
-
-## [1.3.0] - 2016-04-13
-
-### Added
-
-- Remaining interfaces needed for full PSR7 compatibility
- (ServerRequestInterface, UploadedFileInterface, etc.).
-- Support for stream_for from scalars.
-
-### Changed
-
-- Can now extend Uri.
-
-### Fixed
-- A bug in validating request methods by making it more permissive.
-
-
-## [1.2.3] - 2016-02-18
-
-### Fixed
-
-- Support in `GuzzleHttp\Psr7\CachingStream` for seeking forward on remote
- streams, which can sometimes return fewer bytes than requested with `fread`.
-- Handling of gzipped responses with FNAME headers.
-
-
-## [1.2.2] - 2016-01-22
-
-### Added
-
-- Support for URIs without any authority.
-- Support for HTTP 451 'Unavailable For Legal Reasons.'
-- Support for using '0' as a filename.
-- Support for including non-standard ports in Host headers.
-
-
-## [1.2.1] - 2015-11-02
-
-### Changes
-
-- Now supporting negative offsets when seeking to SEEK_END.
-
-
-## [1.2.0] - 2015-08-15
-
-### Changed
-
-- Body as `"0"` is now properly added to a response.
-- Now allowing forward seeking in CachingStream.
-- Now properly parsing HTTP requests that contain proxy targets in
- `parse_request`.
-- functions.php is now conditionally required.
-- user-info is no longer dropped when resolving URIs.
-
-
-## [1.1.0] - 2015-06-24
-
-### Changed
-
-- URIs can now be relative.
-- `multipart/form-data` headers are now overridden case-insensitively.
-- URI paths no longer encode the following characters because they are allowed
- in URIs: "(", ")", "*", "!", "'"
-- A port is no longer added to a URI when the scheme is missing and no port is
- present.
-
-
-## 1.0.0 - 2015-05-19
-
-Initial release.
-
-Currently unsupported:
-
-- `Psr\Http\Message\ServerRequestInterface`
-- `Psr\Http\Message\UploadedFileInterface`
-
-
-
-[Unreleased]: https://github.com/guzzle/psr7/compare/1.6.0...HEAD
-[1.6.0]: https://github.com/guzzle/psr7/compare/1.5.2...1.6.0
-[1.5.2]: https://github.com/guzzle/psr7/compare/1.5.1...1.5.2
-[1.5.1]: https://github.com/guzzle/psr7/compare/1.5.0...1.5.1
-[1.5.0]: https://github.com/guzzle/psr7/compare/1.4.2...1.5.0
-[1.4.2]: https://github.com/guzzle/psr7/compare/1.4.1...1.4.2
-[1.4.1]: https://github.com/guzzle/psr7/compare/1.4.0...1.4.1
-[1.4.0]: https://github.com/guzzle/psr7/compare/1.3.1...1.4.0
-[1.3.1]: https://github.com/guzzle/psr7/compare/1.3.0...1.3.1
-[1.3.0]: https://github.com/guzzle/psr7/compare/1.2.3...1.3.0
-[1.2.3]: https://github.com/guzzle/psr7/compare/1.2.2...1.2.3
-[1.2.2]: https://github.com/guzzle/psr7/compare/1.2.1...1.2.2
-[1.2.1]: https://github.com/guzzle/psr7/compare/1.2.0...1.2.1
-[1.2.0]: https://github.com/guzzle/psr7/compare/1.1.0...1.2.0
-[1.1.0]: https://github.com/guzzle/psr7/compare/1.0.0...1.1.0
diff --git a/vendor/guzzlehttp/psr7/LICENSE b/vendor/guzzlehttp/psr7/LICENSE
deleted file mode 100644
index 581d95f..0000000
--- a/vendor/guzzlehttp/psr7/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2015 Michael Dowling, https://github.com/mtdowling <[email protected]>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/guzzlehttp/psr7/README.md b/vendor/guzzlehttp/psr7/README.md
deleted file mode 100644
index c60a6a3..0000000
--- a/vendor/guzzlehttp/psr7/README.md
+++ /dev/null
@@ -1,745 +0,0 @@
-# PSR-7 Message Implementation
-
-This repository contains a full [PSR-7](http://www.php-fig.org/psr/psr-7/)
-message implementation, several stream decorators, and some helpful
-functionality like query string parsing.
-
-
-[![Build Status](https://travis-ci.org/guzzle/psr7.svg?branch=master)](https://travis-ci.org/guzzle/psr7)
-
-
-# Stream implementation
-
-This package comes with a number of stream implementations and stream
-decorators.
-
-
-## AppendStream
-
-`GuzzleHttp\Psr7\AppendStream`
-
-Reads from multiple streams, one after the other.
-
-```php
-use GuzzleHttp\Psr7;
-
-$a = Psr7\stream_for('abc, ');
-$b = Psr7\stream_for('123.');
-$composed = new Psr7\AppendStream([$a, $b]);
-
-$composed->addStream(Psr7\stream_for(' Above all listen to me'));
-
-echo $composed; // abc, 123. Above all listen to me.
-```
-
-
-## BufferStream
-
-`GuzzleHttp\Psr7\BufferStream`
-
-Provides a buffer stream that can be written to fill a buffer, and read
-from to remove bytes from the buffer.
-
-This stream returns a "hwm" metadata value that tells upstream consumers
-what the configured high water mark of the stream is, or the maximum
-preferred size of the buffer.
-
-```php
-use GuzzleHttp\Psr7;
-
-// When more than 1024 bytes are in the buffer, it will begin returning
-// false to writes. This is an indication that writers should slow down.
-$buffer = new Psr7\BufferStream(1024);
-```
-
-
-## CachingStream
-
-The CachingStream is used to allow seeking over previously read bytes on
-non-seekable streams. This can be useful when transferring a non-seekable
-entity body fails due to needing to rewind the stream (for example, resulting
-from a redirect). Data that is read from the remote stream will be buffered in
-a PHP temp stream so that previously read bytes are cached first in memory,
-then on disk.
-
-```php
-use GuzzleHttp\Psr7;
-
-$original = Psr7\stream_for(fopen('http://www.google.com', 'r'));
-$stream = new Psr7\CachingStream($original);
-
-$stream->read(1024);
-echo $stream->tell();
-// 1024
-
-$stream->seek(0);
-echo $stream->tell();
-// 0
-```
-
-
-## DroppingStream
-
-`GuzzleHttp\Psr7\DroppingStream`
-
-Stream decorator that begins dropping data once the size of the underlying
-stream becomes too full.
-
-```php
-use GuzzleHttp\Psr7;
-
-// Create an empty stream
-$stream = Psr7\stream_for();
-
-// Start dropping data when the stream has more than 10 bytes
-$dropping = new Psr7\DroppingStream($stream, 10);
-
-$dropping->write('01234567890123456789');
-echo $stream; // 0123456789
-```
-
-
-## FnStream
-
-`GuzzleHttp\Psr7\FnStream`
-
-Compose stream implementations based on a hash of functions.
-
-Allows for easy testing and extension of a provided stream without needing
-to create a concrete class for a simple extension point.
-
-```php
-
-use GuzzleHttp\Psr7;
-
-$stream = Psr7\stream_for('hi');
-$fnStream = Psr7\FnStream::decorate($stream, [
- 'rewind' => function () use ($stream) {
- echo 'About to rewind - ';
- $stream->rewind();
- echo 'rewound!';
- }
-]);
-
-$fnStream->rewind();
-// Outputs: About to rewind - rewound!
-```
-
-
-## InflateStream
-
-`GuzzleHttp\Psr7\InflateStream`
-
-Uses PHP's zlib.inflate filter to inflate deflate or gzipped content.
-
-This stream decorator skips the first 10 bytes of the given stream to remove
-the gzip header, converts the provided stream to a PHP stream resource,
-then appends the zlib.inflate filter. The stream is then converted back
-to a Guzzle stream resource to be used as a Guzzle stream.
-
-
-## LazyOpenStream
-
-`GuzzleHttp\Psr7\LazyOpenStream`
-
-Lazily reads or writes to a file that is opened only after an IO operation
-take place on the stream.
-
-```php
-use GuzzleHttp\Psr7;
-
-$stream = new Psr7\LazyOpenStream('/path/to/file', 'r');
-// The file has not yet been opened...
-
-echo $stream->read(10);
-// The file is opened and read from only when needed.
-```
-
-
-## LimitStream
-
-`GuzzleHttp\Psr7\LimitStream`
-
-LimitStream can be used to read a subset or slice of an existing stream object.
-This can be useful for breaking a large file into smaller pieces to be sent in
-chunks (e.g. Amazon S3's multipart upload API).
-
-```php
-use GuzzleHttp\Psr7;
-
-$original = Psr7\stream_for(fopen('/tmp/test.txt', 'r+'));
-echo $original->getSize();
-// >>> 1048576
-
-// Limit the size of the body to 1024 bytes and start reading from byte 2048
-$stream = new Psr7\LimitStream($original, 1024, 2048);
-echo $stream->getSize();
-// >>> 1024
-echo $stream->tell();
-// >>> 0
-```
-
-
-## MultipartStream
-
-`GuzzleHttp\Psr7\MultipartStream`
-
-Stream that when read returns bytes for a streaming multipart or
-multipart/form-data stream.
-
-
-## NoSeekStream
-
-`GuzzleHttp\Psr7\NoSeekStream`
-
-NoSeekStream wraps a stream and does not allow seeking.
-
-```php
-use GuzzleHttp\Psr7;
-
-$original = Psr7\stream_for('foo');
-$noSeek = new Psr7\NoSeekStream($original);
-
-echo $noSeek->read(3);
-// foo
-var_export($noSeek->isSeekable());
-// false
-$noSeek->seek(0);
-var_export($noSeek->read(3));
-// NULL
-```
-
-
-## PumpStream
-
-`GuzzleHttp\Psr7\PumpStream`
-
-Provides a read only stream that pumps data from a PHP callable.
-
-When invoking the provided callable, the PumpStream will pass the amount of
-data requested to read to the callable. The callable can choose to ignore
-this value and return fewer or more bytes than requested. Any extra data
-returned by the provided callable is buffered internally until drained using
-the read() function of the PumpStream. The provided callable MUST return
-false when there is no more data to read.
-
-
-## Implementing stream decorators
-
-Creating a stream decorator is very easy thanks to the
-`GuzzleHttp\Psr7\StreamDecoratorTrait`. This trait provides methods that
-implement `Psr\Http\Message\StreamInterface` by proxying to an underlying
-stream. Just `use` the `StreamDecoratorTrait` and implement your custom
-methods.
-
-For example, let's say we wanted to call a specific function each time the last
-byte is read from a stream. This could be implemented by overriding the
-`read()` method.
-
-```php
-use Psr\Http\Message\StreamInterface;
-use GuzzleHttp\Psr7\StreamDecoratorTrait;
-
-class EofCallbackStream implements StreamInterface
-{
- use StreamDecoratorTrait;
-
- private $callback;
-
- public function __construct(StreamInterface $stream, callable $cb)
- {
- $this->stream = $stream;
- $this->callback = $cb;
- }
-
- public function read($length)
- {
- $result = $this->stream->read($length);
-
- // Invoke the callback when EOF is hit.
- if ($this->eof()) {
- call_user_func($this->callback);
- }
-
- return $result;
- }
-}
-```
-
-This decorator could be added to any existing stream and used like so:
-
-```php
-use GuzzleHttp\Psr7;
-
-$original = Psr7\stream_for('foo');
-
-$eofStream = new EofCallbackStream($original, function () {
- echo 'EOF!';
-});
-
-$eofStream->read(2);
-$eofStream->read(1);
-// echoes "EOF!"
-$eofStream->seek(0);
-$eofStream->read(3);
-// echoes "EOF!"
-```
-
-
-## PHP StreamWrapper
-
-You can use the `GuzzleHttp\Psr7\StreamWrapper` class if you need to use a
-PSR-7 stream as a PHP stream resource.
-
-Use the `GuzzleHttp\Psr7\StreamWrapper::getResource()` method to create a PHP
-stream from a PSR-7 stream.
-
-```php
-use GuzzleHttp\Psr7\StreamWrapper;
-
-$stream = GuzzleHttp\Psr7\stream_for('hello!');
-$resource = StreamWrapper::getResource($stream);
-echo fread($resource, 6); // outputs hello!
-```
-
-
-# Function API
-
-There are various functions available under the `GuzzleHttp\Psr7` namespace.
-
-
-## `function str`
-
-`function str(MessageInterface $message)`
-
-Returns the string representation of an HTTP message.
-
-```php
-$request = new GuzzleHttp\Psr7\Request('GET', 'http://example.com');
-echo GuzzleHttp\Psr7\str($request);
-```
-
-
-## `function uri_for`
-
-`function uri_for($uri)`
-
-This function accepts a string or `Psr\Http\Message\UriInterface` and returns a
-UriInterface for the given value. If the value is already a `UriInterface`, it
-is returned as-is.
-
-```php
-$uri = GuzzleHttp\Psr7\uri_for('http://example.com');
-assert($uri === GuzzleHttp\Psr7\uri_for($uri));
-```
-
-
-## `function stream_for`
-
-`function stream_for($resource = '', array $options = [])`
-
-Create a new stream based on the input type.
-
-Options is an associative array that can contain the following keys:
-
-* - metadata: Array of custom metadata.
-* - size: Size of the stream.
-
-This method accepts the following `$resource` types:
-
-- `Psr\Http\Message\StreamInterface`: Returns the value as-is.
-- `string`: Creates a stream object that uses the given string as the contents.
-- `resource`: Creates a stream object that wraps the given PHP stream resource.
-- `Iterator`: If the provided value implements `Iterator`, then a read-only
- stream object will be created that wraps the given iterable. Each time the
- stream is read from, data from the iterator will fill a buffer and will be
- continuously called until the buffer is equal to the requested read size.
- Subsequent read calls will first read from the buffer and then call `next`
- on the underlying iterator until it is exhausted.
-- `object` with `__toString()`: If the object has the `__toString()` method,
- the object will be cast to a string and then a stream will be returned that
- uses the string value.
-- `NULL`: When `null` is passed, an empty stream object is returned.
-- `callable` When a callable is passed, a read-only stream object will be
- created that invokes the given callable. The callable is invoked with the
- number of suggested bytes to read. The callable can return any number of
- bytes, but MUST return `false` when there is no more data to return. The
- stream object that wraps the callable will invoke the callable until the
- number of requested bytes are available. Any additional bytes will be
- buffered and used in subsequent reads.
-
-```php
-$stream = GuzzleHttp\Psr7\stream_for('foo');
-$stream = GuzzleHttp\Psr7\stream_for(fopen('/path/to/file', 'r'));
-
-$generator = function ($bytes) {
- for ($i = 0; $i < $bytes; $i++) {
- yield ' ';
- }
-}
-
-$stream = GuzzleHttp\Psr7\stream_for($generator(100));
-```
-
-
-## `function parse_header`
-
-`function parse_header($header)`
-
-Parse an array of header values containing ";" separated data into an array of
-associative arrays representing the header key value pair data of the header.
-When a parameter does not contain a value, but just contains a key, this
-function will inject a key with a '' string value.
-
-
-## `function normalize_header`
-
-`function normalize_header($header)`
-
-Converts an array of header values that may contain comma separated headers
-into an array of headers with no comma separated values.
-
-
-## `function modify_request`
-
-`function modify_request(RequestInterface $request, array $changes)`
-
-Clone and modify a request with the given changes. This method is useful for
-reducing the number of clones needed to mutate a message.
-
-The changes can be one of:
-
-- method: (string) Changes the HTTP method.
-- set_headers: (array) Sets the given headers.
-- remove_headers: (array) Remove the given headers.
-- body: (mixed) Sets the given body.
-- uri: (UriInterface) Set the URI.
-- query: (string) Set the query string value of the URI.
-- version: (string) Set the protocol version.
-
-
-## `function rewind_body`
-
-`function rewind_body(MessageInterface $message)`
-
-Attempts to rewind a message body and throws an exception on failure. The body
-of the message will only be rewound if a call to `tell()` returns a value other
-than `0`.
-
-
-## `function try_fopen`
-
-`function try_fopen($filename, $mode)`
-
-Safely opens a PHP stream resource using a filename.
-
-When fopen fails, PHP normally raises a warning. This function adds an error
-handler that checks for errors and throws an exception instead.
-
-
-## `function copy_to_string`
-
-`function copy_to_string(StreamInterface $stream, $maxLen = -1)`
-
-Copy the contents of a stream into a string until the given number of bytes
-have been read.
-
-
-## `function copy_to_stream`
-
-`function copy_to_stream(StreamInterface $source, StreamInterface $dest, $maxLen = -1)`
-
-Copy the contents of a stream into another stream until the given number of
-bytes have been read.
-
-
-## `function hash`
-
-`function hash(StreamInterface $stream, $algo, $rawOutput = false)`
-
-Calculate a hash of a Stream. This method reads the entire stream to calculate
-a rolling hash (based on PHP's hash_init functions).
-
-
-## `function readline`
-
-`function readline(StreamInterface $stream, $maxLength = null)`
-
-Read a line from the stream up to the maximum allowed buffer length.
-
-
-## `function parse_request`
-
-`function parse_request($message)`
-
-Parses a request message string into a request object.
-
-
-## `function parse_response`
-
-`function parse_response($message)`
-
-Parses a response message string into a response object.
-
-
-## `function parse_query`
-
-`function parse_query($str, $urlEncoding = true)`
-
-Parse a query string into an associative array.
-
-If multiple values are found for the same key, the value of that key value pair
-will become an array. This function does not parse nested PHP style arrays into
-an associative array (e.g., `foo[a]=1&foo[b]=2` will be parsed into
-`['foo[a]' => '1', 'foo[b]' => '2']`).
-
-
-## `function build_query`
-
-`function build_query(array $params, $encoding = PHP_QUERY_RFC3986)`
-
-Build a query string from an array of key value pairs.
-
-This function can use the return value of parse_query() to build a query string.
-This function does not modify the provided keys when an array is encountered
-(like http_build_query would).
-
-
-## `function mimetype_from_filename`
-
-`function mimetype_from_filename($filename)`
-
-Determines the mimetype of a file by looking at its extension.
-
-
-## `function mimetype_from_extension`
-
-`function mimetype_from_extension($extension)`
-
-Maps a file extensions to a mimetype.
-
-
-# Additional URI Methods
-
-Aside from the standard `Psr\Http\Message\UriInterface` implementation in form of the `GuzzleHttp\Psr7\Uri` class,
-this library also provides additional functionality when working with URIs as static methods.
-
-## URI Types
-
-An instance of `Psr\Http\Message\UriInterface` can either be an absolute URI or a relative reference.
-An absolute URI has a scheme. A relative reference is used to express a URI relative to another URI,
-the base URI. Relative references can be divided into several forms according to
-[RFC 3986 Section 4.2](https://tools.ietf.org/html/rfc3986#section-4.2):
-
-- network-path references, e.g. `//example.com/path`
-- absolute-path references, e.g. `/path`
-- relative-path references, e.g. `subpath`
-
-The following methods can be used to identify the type of the URI.
-
-### `GuzzleHttp\Psr7\Uri::isAbsolute`
-
-`public static function isAbsolute(UriInterface $uri): bool`
-
-Whether the URI is absolute, i.e. it has a scheme.
-
-### `GuzzleHttp\Psr7\Uri::isNetworkPathReference`
-
-`public static function isNetworkPathReference(UriInterface $uri): bool`
-
-Whether the URI is a network-path reference. A relative reference that begins with two slash characters is
-termed an network-path reference.
-
-### `GuzzleHttp\Psr7\Uri::isAbsolutePathReference`
-
-`public static function isAbsolutePathReference(UriInterface $uri): bool`
-
-Whether the URI is a absolute-path reference. A relative reference that begins with a single slash character is
-termed an absolute-path reference.
-
-### `GuzzleHttp\Psr7\Uri::isRelativePathReference`
-
-`public static function isRelativePathReference(UriInterface $uri): bool`
-
-Whether the URI is a relative-path reference. A relative reference that does not begin with a slash character is
-termed a relative-path reference.
-
-### `GuzzleHttp\Psr7\Uri::isSameDocumentReference`
-
-`public static function isSameDocumentReference(UriInterface $uri, UriInterface $base = null): bool`
-
-Whether the URI is a same-document reference. A same-document reference refers to a URI that is, aside from its
-fragment component, identical to the base URI. When no base URI is given, only an empty URI reference
-(apart from its fragment) is considered a same-document reference.
-
-## URI Components
-
-Additional methods to work with URI components.
-
-### `GuzzleHttp\Psr7\Uri::isDefaultPort`
-
-`public static function isDefaultPort(UriInterface $uri): bool`
-
-Whether the URI has the default port of the current scheme. `Psr\Http\Message\UriInterface::getPort` may return null
-or the standard port. This method can be used independently of the implementation.
-
-### `GuzzleHttp\Psr7\Uri::composeComponents`
-
-`public static function composeComponents($scheme, $authority, $path, $query, $fragment): string`
-
-Composes a URI reference string from its various components according to
-[RFC 3986 Section 5.3](https://tools.ietf.org/html/rfc3986#section-5.3). Usually this method does not need to be called
-manually but instead is used indirectly via `Psr\Http\Message\UriInterface::__toString`.
-
-### `GuzzleHttp\Psr7\Uri::fromParts`
-
-`public static function fromParts(array $parts): UriInterface`
-
-Creates a URI from a hash of [`parse_url`](http://php.net/manual/en/function.parse-url.php) components.
-
-
-### `GuzzleHttp\Psr7\Uri::withQueryValue`
-
-`public static function withQueryValue(UriInterface $uri, $key, $value): UriInterface`
-
-Creates a new URI with a specific query string value. Any existing query string values that exactly match the
-provided key are removed and replaced with the given key value pair. A value of null will set the query string
-key without a value, e.g. "key" instead of "key=value".
-
-### `GuzzleHttp\Psr7\Uri::withQueryValues`
-
-`public static function withQueryValues(UriInterface $uri, array $keyValueArray): UriInterface`
-
-Creates a new URI with multiple query string values. It has the same behavior as `withQueryValue()` but for an
-associative array of key => value.
-
-### `GuzzleHttp\Psr7\Uri::withoutQueryValue`
-
-`public static function withoutQueryValue(UriInterface $uri, $key): UriInterface`
-
-Creates a new URI with a specific query string value removed. Any existing query string values that exactly match the
-provided key are removed.
-
-## Reference Resolution
-
-`GuzzleHttp\Psr7\UriResolver` provides methods to resolve a URI reference in the context of a base URI according
-to [RFC 3986 Section 5](https://tools.ietf.org/html/rfc3986#section-5). This is for example also what web browsers
-do when resolving a link in a website based on the current request URI.
-
-### `GuzzleHttp\Psr7\UriResolver::resolve`
-
-`public static function resolve(UriInterface $base, UriInterface $rel): UriInterface`
-
-Converts the relative URI into a new URI that is resolved against the base URI.
-
-### `GuzzleHttp\Psr7\UriResolver::removeDotSegments`
-
-`public static function removeDotSegments(string $path): string`
-
-Removes dot segments from a path and returns the new path according to
-[RFC 3986 Section 5.2.4](https://tools.ietf.org/html/rfc3986#section-5.2.4).
-
-### `GuzzleHttp\Psr7\UriResolver::relativize`
-
-`public static function relativize(UriInterface $base, UriInterface $target): UriInterface`
-
-Returns the target URI as a relative reference from the base URI. This method is the counterpart to resolve():
-
-```php
-(string) $target === (string) UriResolver::resolve($base, UriResolver::relativize($base, $target))
-```
-
-One use-case is to use the current request URI as base URI and then generate relative links in your documents
-to reduce the document size or offer self-contained downloadable document archives.
-
-```php
-$base = new Uri('http://example.com/a/b/');
-echo UriResolver::relativize($base, new Uri('http://example.com/a/b/c')); // prints 'c'.
-echo UriResolver::relativize($base, new Uri('http://example.com/a/x/y')); // prints '../x/y'.
-echo UriResolver::relativize($base, new Uri('http://example.com/a/b/?q')); // prints '?q'.
-echo UriResolver::relativize($base, new Uri('http://example.org/a/b/')); // prints '//example.org/a/b/'.
-```
-
-## Normalization and Comparison
-
-`GuzzleHttp\Psr7\UriNormalizer` provides methods to normalize and compare URIs according to
-[RFC 3986 Section 6](https://tools.ietf.org/html/rfc3986#section-6).
-
-### `GuzzleHttp\Psr7\UriNormalizer::normalize`
-
-`public static function normalize(UriInterface $uri, $flags = self::PRESERVING_NORMALIZATIONS): UriInterface`
-
-Returns a normalized URI. The scheme and host component are already normalized to lowercase per PSR-7 UriInterface.
-This methods adds additional normalizations that can be configured with the `$flags` parameter which is a bitmask
-of normalizations to apply. The following normalizations are available:
-
-- `UriNormalizer::PRESERVING_NORMALIZATIONS`
-
- Default normalizations which only include the ones that preserve semantics.
-
-- `UriNormalizer::CAPITALIZE_PERCENT_ENCODING`
-
- All letters within a percent-encoding triplet (e.g., "%3A") are case-insensitive, and should be capitalized.
-
- Example: `http://example.org/a%c2%b1b` → `http://example.org/a%C2%B1b`
-
-- `UriNormalizer::DECODE_UNRESERVED_CHARACTERS`
-
- Decodes percent-encoded octets of unreserved characters. For consistency, percent-encoded octets in the ranges of
- ALPHA (%41–%5A and %61–%7A), DIGIT (%30–%39), hyphen (%2D), period (%2E), underscore (%5F), or tilde (%7E) should
- not be created by URI producers and, when found in a URI, should be decoded to their corresponding unreserved
- characters by URI normalizers.
-
- Example: `http://example.org/%7Eusern%61me/` → `http://example.org/~username/`
-
-- `UriNormalizer::CONVERT_EMPTY_PATH`
-
- Converts the empty path to "/" for http and https URIs.
-
- Example: `http://example.org` → `http://example.org/`
-
-- `UriNormalizer::REMOVE_DEFAULT_HOST`
-
- Removes the default host of the given URI scheme from the URI. Only the "file" scheme defines the default host
- "localhost". All of `file:/myfile`, `file:///myfile`, and `file://localhost/myfile` are equivalent according to
- RFC 3986.
-
- Example: `file://localhost/myfile` → `file:///myfile`
-
-- `UriNormalizer::REMOVE_DEFAULT_PORT`
-
- Removes the default port of the given URI scheme from the URI.
-
- Example: `http://example.org:80/` → `http://example.org/`
-
-- `UriNormalizer::REMOVE_DOT_SEGMENTS`
-
- Removes unnecessary dot-segments. Dot-segments in relative-path references are not removed as it would
- change the semantics of the URI reference.
-
- Example: `http://example.org/../a/b/../c/./d.html` → `http://example.org/a/c/d.html`
-
-- `UriNormalizer::REMOVE_DUPLICATE_SLASHES`
-
- Paths which include two or more adjacent slashes are converted to one. Webservers usually ignore duplicate slashes
- and treat those URIs equivalent. But in theory those URIs do not need to be equivalent. So this normalization
- may change the semantics. Encoded slashes (%2F) are not removed.
-
- Example: `http://example.org//foo///bar.html` → `http://example.org/foo/bar.html`
-
-- `UriNormalizer::SORT_QUERY_PARAMETERS`
-
- Sort query parameters with their values in alphabetical order. However, the order of parameters in a URI may be
- significant (this is not defined by the standard). So this normalization is not safe and may change the semantics
- of the URI.
-
- Example: `?lang=en&article=fred` → `?article=fred&lang=en`
-
-### `GuzzleHttp\Psr7\UriNormalizer::isEquivalent`
-
-`public static function isEquivalent(UriInterface $uri1, UriInterface $uri2, $normalizations = self::PRESERVING_NORMALIZATIONS): bool`
-
-Whether two URIs can be considered equivalent. Both URIs are normalized automatically before comparison with the given
-`$normalizations` bitmask. The method also accepts relative URI references and returns true when they are equivalent.
-This of course assumes they will be resolved against the same base URI. If this is not the case, determination of
-equivalence or difference of relative references does not mean anything.
diff --git a/vendor/guzzlehttp/psr7/composer.json b/vendor/guzzlehttp/psr7/composer.json
deleted file mode 100644
index 168a055..0000000
--- a/vendor/guzzlehttp/psr7/composer.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "name": "guzzlehttp/psr7",
- "type": "library",
- "description": "PSR-7 message implementation that also provides common utility methods",
- "keywords": ["request", "response", "message", "stream", "http", "uri", "url", "psr-7"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "[email protected]",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "Tobias Schultze",
- "homepage": "https://github.com/Tobion"
- }
- ],
- "require": {
- "php": ">=5.4.0",
- "psr/http-message": "~1.0",
- "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8",
- "ext-zlib": "*"
- },
- "provide": {
- "psr/http-message-implementation": "1.0"
- },
- "suggest": {
- "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Psr7\\": "src/"
- },
- "files": ["src/functions_include.php"]
- },
- "autoload-dev": {
- "psr-4": {
- "GuzzleHttp\\Tests\\Psr7\\": "tests/"
- }
- },
- "extra": {
- "branch-alias": {
- "dev-master": "1.6-dev"
- }
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/AppendStream.php b/vendor/guzzlehttp/psr7/src/AppendStream.php
deleted file mode 100644
index 472a0d6..0000000
--- a/vendor/guzzlehttp/psr7/src/AppendStream.php
+++ /dev/null
@@ -1,241 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Reads from multiple streams, one after the other.
- *
- * This is a read-only stream decorator.
- */
-class AppendStream implements StreamInterface
-{
- /** @var StreamInterface[] Streams being decorated */
- private $streams = [];
-
- private $seekable = true;
- private $current = 0;
- private $pos = 0;
-
- /**
- * @param StreamInterface[] $streams Streams to decorate. Each stream must
- * be readable.
- */
- public function __construct(array $streams = [])
- {
- foreach ($streams as $stream) {
- $this->addStream($stream);
- }
- }
-
- public function __toString()
- {
- try {
- $this->rewind();
- return $this->getContents();
- } catch (\Exception $e) {
- return '';
- }
- }
-
- /**
- * Add a stream to the AppendStream
- *
- * @param StreamInterface $stream Stream to append. Must be readable.
- *
- * @throws \InvalidArgumentException if the stream is not readable
- */
- public function addStream(StreamInterface $stream)
- {
- if (!$stream->isReadable()) {
- throw new \InvalidArgumentException('Each stream must be readable');
- }
-
- // The stream is only seekable if all streams are seekable
- if (!$stream->isSeekable()) {
- $this->seekable = false;
- }
-
- $this->streams[] = $stream;
- }
-
- public function getContents()
- {
- return copy_to_string($this);
- }
-
- /**
- * Closes each attached stream.
- *
- * {@inheritdoc}
- */
- public function close()
- {
- $this->pos = $this->current = 0;
- $this->seekable = true;
-
- foreach ($this->streams as $stream) {
- $stream->close();
- }
-
- $this->streams = [];
- }
-
- /**
- * Detaches each attached stream.
- *
- * Returns null as it's not clear which underlying stream resource to return.
- *
- * {@inheritdoc}
- */
- public function detach()
- {
- $this->pos = $this->current = 0;
- $this->seekable = true;
-
- foreach ($this->streams as $stream) {
- $stream->detach();
- }
-
- $this->streams = [];
- }
-
- public function tell()
- {
- return $this->pos;
- }
-
- /**
- * Tries to calculate the size by adding the size of each stream.
- *
- * If any of the streams do not return a valid number, then the size of the
- * append stream cannot be determined and null is returned.
- *
- * {@inheritdoc}
- */
- public function getSize()
- {
- $size = 0;
-
- foreach ($this->streams as $stream) {
- $s = $stream->getSize();
- if ($s === null) {
- return null;
- }
- $size += $s;
- }
-
- return $size;
- }
-
- public function eof()
- {
- return !$this->streams ||
- ($this->current >= count($this->streams) - 1 &&
- $this->streams[$this->current]->eof());
- }
-
- public function rewind()
- {
- $this->seek(0);
- }
-
- /**
- * Attempts to seek to the given position. Only supports SEEK_SET.
- *
- * {@inheritdoc}
- */
- public function seek($offset, $whence = SEEK_SET)
- {
- if (!$this->seekable) {
- throw new \RuntimeException('This AppendStream is not seekable');
- } elseif ($whence !== SEEK_SET) {
- throw new \RuntimeException('The AppendStream can only seek with SEEK_SET');
- }
-
- $this->pos = $this->current = 0;
-
- // Rewind each stream
- foreach ($this->streams as $i => $stream) {
- try {
- $stream->rewind();
- } catch (\Exception $e) {
- throw new \RuntimeException('Unable to seek stream '
- . $i . ' of the AppendStream', 0, $e);
- }
- }
-
- // Seek to the actual position by reading from each stream
- while ($this->pos < $offset && !$this->eof()) {
- $result = $this->read(min(8096, $offset - $this->pos));
- if ($result === '') {
- break;
- }
- }
- }
-
- /**
- * Reads from all of the appended streams until the length is met or EOF.
- *
- * {@inheritdoc}
- */
- public function read($length)
- {
- $buffer = '';
- $total = count($this->streams) - 1;
- $remaining = $length;
- $progressToNext = false;
-
- while ($remaining > 0) {
-
- // Progress to the next stream if needed.
- if ($progressToNext || $this->streams[$this->current]->eof()) {
- $progressToNext = false;
- if ($this->current === $total) {
- break;
- }
- $this->current++;
- }
-
- $result = $this->streams[$this->current]->read($remaining);
-
- // Using a loose comparison here to match on '', false, and null
- if ($result == null) {
- $progressToNext = true;
- continue;
- }
-
- $buffer .= $result;
- $remaining = $length - strlen($buffer);
- }
-
- $this->pos += strlen($buffer);
-
- return $buffer;
- }
-
- public function isReadable()
- {
- return true;
- }
-
- public function isWritable()
- {
- return false;
- }
-
- public function isSeekable()
- {
- return $this->seekable;
- }
-
- public function write($string)
- {
- throw new \RuntimeException('Cannot write to an AppendStream');
- }
-
- public function getMetadata($key = null)
- {
- return $key ? null : [];
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/BufferStream.php b/vendor/guzzlehttp/psr7/src/BufferStream.php
deleted file mode 100644
index af4d4c2..0000000
--- a/vendor/guzzlehttp/psr7/src/BufferStream.php
+++ /dev/null
@@ -1,137 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Provides a buffer stream that can be written to to fill a buffer, and read
- * from to remove bytes from the buffer.
- *
- * This stream returns a "hwm" metadata value that tells upstream consumers
- * what the configured high water mark of the stream is, or the maximum
- * preferred size of the buffer.
- */
-class BufferStream implements StreamInterface
-{
- private $hwm;
- private $buffer = '';
-
- /**
- * @param int $hwm High water mark, representing the preferred maximum
- * buffer size. If the size of the buffer exceeds the high
- * water mark, then calls to write will continue to succeed
- * but will return false to inform writers to slow down
- * until the buffer has been drained by reading from it.
- */
- public function __construct($hwm = 16384)
- {
- $this->hwm = $hwm;
- }
-
- public function __toString()
- {
- return $this->getContents();
- }
-
- public function getContents()
- {
- $buffer = $this->buffer;
- $this->buffer = '';
-
- return $buffer;
- }
-
- public function close()
- {
- $this->buffer = '';
- }
-
- public function detach()
- {
- $this->close();
- }
-
- public function getSize()
- {
- return strlen($this->buffer);
- }
-
- public function isReadable()
- {
- return true;
- }
-
- public function isWritable()
- {
- return true;
- }
-
- public function isSeekable()
- {
- return false;
- }
-
- public function rewind()
- {
- $this->seek(0);
- }
-
- public function seek($offset, $whence = SEEK_SET)
- {
- throw new \RuntimeException('Cannot seek a BufferStream');
- }
-
- public function eof()
- {
- return strlen($this->buffer) === 0;
- }
-
- public function tell()
- {
- throw new \RuntimeException('Cannot determine the position of a BufferStream');
- }
-
- /**
- * Reads data from the buffer.
- */
- public function read($length)
- {
- $currentLength = strlen($this->buffer);
-
- if ($length >= $currentLength) {
- // No need to slice the buffer because we don't have enough data.
- $result = $this->buffer;
- $this->buffer = '';
- } else {
- // Slice up the result to provide a subset of the buffer.
- $result = substr($this->buffer, 0, $length);
- $this->buffer = substr($this->buffer, $length);
- }
-
- return $result;
- }
-
- /**
- * Writes data to the buffer.
- */
- public function write($string)
- {
- $this->buffer .= $string;
-
- // TODO: What should happen here?
- if (strlen($this->buffer) >= $this->hwm) {
- return false;
- }
-
- return strlen($string);
- }
-
- public function getMetadata($key = null)
- {
- if ($key == 'hwm') {
- return $this->hwm;
- }
-
- return $key ? null : [];
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/CachingStream.php b/vendor/guzzlehttp/psr7/src/CachingStream.php
deleted file mode 100644
index ed68f08..0000000
--- a/vendor/guzzlehttp/psr7/src/CachingStream.php
+++ /dev/null
@@ -1,138 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Stream decorator that can cache previously read bytes from a sequentially
- * read stream.
- */
-class CachingStream implements StreamInterface
-{
- use StreamDecoratorTrait;
-
- /** @var StreamInterface Stream being wrapped */
- private $remoteStream;
-
- /** @var int Number of bytes to skip reading due to a write on the buffer */
- private $skipReadBytes = 0;
-
- /**
- * We will treat the buffer object as the body of the stream
- *
- * @param StreamInterface $stream Stream to cache
- * @param StreamInterface $target Optionally specify where data is cached
- */
- public function __construct(
- StreamInterface $stream,
- StreamInterface $target = null
- ) {
- $this->remoteStream = $stream;
- $this->stream = $target ?: new Stream(fopen('php://temp', 'r+'));
- }
-
- public function getSize()
- {
- return max($this->stream->getSize(), $this->remoteStream->getSize());
- }
-
- public function rewind()
- {
- $this->seek(0);
- }
-
- public function seek($offset, $whence = SEEK_SET)
- {
- if ($whence == SEEK_SET) {
- $byte = $offset;
- } elseif ($whence == SEEK_CUR) {
- $byte = $offset + $this->tell();
- } elseif ($whence == SEEK_END) {
- $size = $this->remoteStream->getSize();
- if ($size === null) {
- $size = $this->cacheEntireStream();
- }
- $byte = $size + $offset;
- } else {
- throw new \InvalidArgumentException('Invalid whence');
- }
-
- $diff = $byte - $this->stream->getSize();
-
- if ($diff > 0) {
- // Read the remoteStream until we have read in at least the amount
- // of bytes requested, or we reach the end of the file.
- while ($diff > 0 && !$this->remoteStream->eof()) {
- $this->read($diff);
- $diff = $byte - $this->stream->getSize();
- }
- } else {
- // We can just do a normal seek since we've already seen this byte.
- $this->stream->seek($byte);
- }
- }
-
- public function read($length)
- {
- // Perform a regular read on any previously read data from the buffer
- $data = $this->stream->read($length);
- $remaining = $length - strlen($data);
-
- // More data was requested so read from the remote stream
- if ($remaining) {
- // If data was written to the buffer in a position that would have
- // been filled from the remote stream, then we must skip bytes on
- // the remote stream to emulate overwriting bytes from that
- // position. This mimics the behavior of other PHP stream wrappers.
- $remoteData = $this->remoteStream->read(
- $remaining + $this->skipReadBytes
- );
-
- if ($this->skipReadBytes) {
- $len = strlen($remoteData);
- $remoteData = substr($remoteData, $this->skipReadBytes);
- $this->skipReadBytes = max(0, $this->skipReadBytes - $len);
- }
-
- $data .= $remoteData;
- $this->stream->write($remoteData);
- }
-
- return $data;
- }
-
- public function write($string)
- {
- // When appending to the end of the currently read stream, you'll want
- // to skip bytes from being read from the remote stream to emulate
- // other stream wrappers. Basically replacing bytes of data of a fixed
- // length.
- $overflow = (strlen($string) + $this->tell()) - $this->remoteStream->tell();
- if ($overflow > 0) {
- $this->skipReadBytes += $overflow;
- }
-
- return $this->stream->write($string);
- }
-
- public function eof()
- {
- return $this->stream->eof() && $this->remoteStream->eof();
- }
-
- /**
- * Close both the remote stream and buffer stream
- */
- public function close()
- {
- $this->remoteStream->close() && $this->stream->close();
- }
-
- private function cacheEntireStream()
- {
- $target = new FnStream(['write' => 'strlen']);
- copy_to_stream($this, $target);
-
- return $this->tell();
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/DroppingStream.php b/vendor/guzzlehttp/psr7/src/DroppingStream.php
deleted file mode 100644
index 8935c80..0000000
--- a/vendor/guzzlehttp/psr7/src/DroppingStream.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Stream decorator that begins dropping data once the size of the underlying
- * stream becomes too full.
- */
-class DroppingStream implements StreamInterface
-{
- use StreamDecoratorTrait;
-
- private $maxLength;
-
- /**
- * @param StreamInterface $stream Underlying stream to decorate.
- * @param int $maxLength Maximum size before dropping data.
- */
- public function __construct(StreamInterface $stream, $maxLength)
- {
- $this->stream = $stream;
- $this->maxLength = $maxLength;
- }
-
- public function write($string)
- {
- $diff = $this->maxLength - $this->stream->getSize();
-
- // Begin returning 0 when the underlying stream is too large.
- if ($diff <= 0) {
- return 0;
- }
-
- // Write the stream or a subset of the stream if needed.
- if (strlen($string) < $diff) {
- return $this->stream->write($string);
- }
-
- return $this->stream->write(substr($string, 0, $diff));
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/FnStream.php b/vendor/guzzlehttp/psr7/src/FnStream.php
deleted file mode 100644
index 73daea6..0000000
--- a/vendor/guzzlehttp/psr7/src/FnStream.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Compose stream implementations based on a hash of functions.
- *
- * Allows for easy testing and extension of a provided stream without needing
- * to create a concrete class for a simple extension point.
- */
-class FnStream implements StreamInterface
-{
- /** @var array */
- private $methods;
-
- /** @var array Methods that must be implemented in the given array */
- private static $slots = ['__toString', 'close', 'detach', 'rewind',
- 'getSize', 'tell', 'eof', 'isSeekable', 'seek', 'isWritable', 'write',
- 'isReadable', 'read', 'getContents', 'getMetadata'];
-
- /**
- * @param array $methods Hash of method name to a callable.
- */
- public function __construct(array $methods)
- {
- $this->methods = $methods;
-
- // Create the functions on the class
- foreach ($methods as $name => $fn) {
- $this->{'_fn_' . $name} = $fn;
- }
- }
-
- /**
- * Lazily determine which methods are not implemented.
- * @throws \BadMethodCallException
- */
- public function __get($name)
- {
- throw new \BadMethodCallException(str_replace('_fn_', '', $name)
- . '() is not implemented in the FnStream');
- }
-
- /**
- * The close method is called on the underlying stream only if possible.
- */
- public function __destruct()
- {
- if (isset($this->_fn_close)) {
- call_user_func($this->_fn_close);
- }
- }
-
- /**
- * An unserialize would allow the __destruct to run when the unserialized value goes out of scope.
- * @throws \LogicException
- */
- public function __wakeup()
- {
- throw new \LogicException('FnStream should never be unserialized');
- }
-
- /**
- * Adds custom functionality to an underlying stream by intercepting
- * specific method calls.
- *
- * @param StreamInterface $stream Stream to decorate
- * @param array $methods Hash of method name to a closure
- *
- * @return FnStream
- */
- public static function decorate(StreamInterface $stream, array $methods)
- {
- // If any of the required methods were not provided, then simply
- // proxy to the decorated stream.
- foreach (array_diff(self::$slots, array_keys($methods)) as $diff) {
- $methods[$diff] = [$stream, $diff];
- }
-
- return new self($methods);
- }
-
- public function __toString()
- {
- return call_user_func($this->_fn___toString);
- }
-
- public function close()
- {
- return call_user_func($this->_fn_close);
- }
-
- public function detach()
- {
- return call_user_func($this->_fn_detach);
- }
-
- public function getSize()
- {
- return call_user_func($this->_fn_getSize);
- }
-
- public function tell()
- {
- return call_user_func($this->_fn_tell);
- }
-
- public function eof()
- {
- return call_user_func($this->_fn_eof);
- }
-
- public function isSeekable()
- {
- return call_user_func($this->_fn_isSeekable);
- }
-
- public function rewind()
- {
- call_user_func($this->_fn_rewind);
- }
-
- public function seek($offset, $whence = SEEK_SET)
- {
- call_user_func($this->_fn_seek, $offset, $whence);
- }
-
- public function isWritable()
- {
- return call_user_func($this->_fn_isWritable);
- }
-
- public function write($string)
- {
- return call_user_func($this->_fn_write, $string);
- }
-
- public function isReadable()
- {
- return call_user_func($this->_fn_isReadable);
- }
-
- public function read($length)
- {
- return call_user_func($this->_fn_read, $length);
- }
-
- public function getContents()
- {
- return call_user_func($this->_fn_getContents);
- }
-
- public function getMetadata($key = null)
- {
- return call_user_func($this->_fn_getMetadata, $key);
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/InflateStream.php b/vendor/guzzlehttp/psr7/src/InflateStream.php
deleted file mode 100644
index 5e4f602..0000000
--- a/vendor/guzzlehttp/psr7/src/InflateStream.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Uses PHP's zlib.inflate filter to inflate deflate or gzipped content.
- *
- * This stream decorator skips the first 10 bytes of the given stream to remove
- * the gzip header, converts the provided stream to a PHP stream resource,
- * then appends the zlib.inflate filter. The stream is then converted back
- * to a Guzzle stream resource to be used as a Guzzle stream.
- *
- * @link http://tools.ietf.org/html/rfc1952
- * @link http://php.net/manual/en/filters.compression.php
- */
-class InflateStream implements StreamInterface
-{
- use StreamDecoratorTrait;
-
- public function __construct(StreamInterface $stream)
- {
- // read the first 10 bytes, ie. gzip header
- $header = $stream->read(10);
- $filenameHeaderLength = $this->getLengthOfPossibleFilenameHeader($stream, $header);
- // Skip the header, that is 10 + length of filename + 1 (nil) bytes
- $stream = new LimitStream($stream, -1, 10 + $filenameHeaderLength);
- $resource = StreamWrapper::getResource($stream);
- stream_filter_append($resource, 'zlib.inflate', STREAM_FILTER_READ);
- $this->stream = $stream->isSeekable() ? new Stream($resource) : new NoSeekStream(new Stream($resource));
- }
-
- /**
- * @param StreamInterface $stream
- * @param $header
- * @return int
- */
- private function getLengthOfPossibleFilenameHeader(StreamInterface $stream, $header)
- {
- $filename_header_length = 0;
-
- if (substr(bin2hex($header), 6, 2) === '08') {
- // we have a filename, read until nil
- $filename_header_length = 1;
- while ($stream->read(1) !== chr(0)) {
- $filename_header_length++;
- }
- }
-
- return $filename_header_length;
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/LazyOpenStream.php b/vendor/guzzlehttp/psr7/src/LazyOpenStream.php
deleted file mode 100644
index 02cec3a..0000000
--- a/vendor/guzzlehttp/psr7/src/LazyOpenStream.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Lazily reads or writes to a file that is opened only after an IO operation
- * take place on the stream.
- */
-class LazyOpenStream implements StreamInterface
-{
- use StreamDecoratorTrait;
-
- /** @var string File to open */
- private $filename;
-
- /** @var string $mode */
- private $mode;
-
- /**
- * @param string $filename File to lazily open
- * @param string $mode fopen mode to use when opening the stream
- */
- public function __construct($filename, $mode)
- {
- $this->filename = $filename;
- $this->mode = $mode;
- }
-
- /**
- * Creates the underlying stream lazily when required.
- *
- * @return StreamInterface
- */
- protected function createStream()
- {
- return stream_for(try_fopen($this->filename, $this->mode));
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/LimitStream.php b/vendor/guzzlehttp/psr7/src/LimitStream.php
deleted file mode 100644
index e4f239e..0000000
--- a/vendor/guzzlehttp/psr7/src/LimitStream.php
+++ /dev/null
@@ -1,155 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-
-/**
- * Decorator used to return only a subset of a stream
- */
-class LimitStream implements StreamInterface
-{
- use StreamDecoratorTrait;
-
- /** @var int Offset to start reading from */
- private $offset;
-
- /** @var int Limit the number of bytes that can be read */
- private $limit;
-
- /**
- * @param StreamInterface $stream Stream to wrap
- * @param int $limit Total number of bytes to allow to be read
- * from the stream. Pass -1 for no limit.
- * @param int $offset Position to seek to before reading (only
- * works on seekable streams).
- */
- public function __construct(
- StreamInterface $stream,
- $limit = -1,
- $offset = 0
- ) {
- $this->stream = $stream;
- $this->setLimit($limit);
- $this->setOffset($offset);
- }
-
- public function eof()
- {
- // Always return true if the underlying stream is EOF
- if ($this->stream->eof()) {
- return true;
- }
-
- // No limit and the underlying stream is not at EOF
- if ($this->limit == -1) {
- return false;
- }
-
- return $this->stream->tell() >= $this->offset + $this->limit;
- }
-
- /**
- * Returns the size of the limited subset of data
- * {@inheritdoc}
- */
- public function getSize()
- {
- if (null === ($length = $this->stream->getSize())) {
- return null;
- } elseif ($this->limit == -1) {
- return $length - $this->offset;
- } else {
- return min($this->limit, $length - $this->offset);
- }
- }
-
- /**
- * Allow for a bounded seek on the read limited stream
- * {@inheritdoc}
- */
- public function seek($offset, $whence = SEEK_SET)
- {
- if ($whence !== SEEK_SET || $offset < 0) {
- throw new \RuntimeException(sprintf(
- 'Cannot seek to offset %s with whence %s',
- $offset,
- $whence
- ));
- }
-
- $offset += $this->offset;
-
- if ($this->limit !== -1) {
- if ($offset > $this->offset + $this->limit) {
- $offset = $this->offset + $this->limit;
- }
- }
-
- $this->stream->seek($offset);
- }
-
- /**
- * Give a relative tell()
- * {@inheritdoc}
- */
- public function tell()
- {
- return $this->stream->tell() - $this->offset;
- }
-
- /**
- * Set the offset to start limiting from
- *
- * @param int $offset Offset to seek to and begin byte limiting from
- *
- * @throws \RuntimeException if the stream cannot be seeked.
- */
- public function setOffset($offset)
- {
- $current = $this->stream->tell();
-
- if ($current !== $offset) {
- // If the stream cannot seek to the offset position, then read to it
- if ($this->stream->isSeekable()) {
- $this->stream->seek($offset);
- } elseif ($current > $offset) {
- throw new \RuntimeException("Could not seek to stream offset $offset");
- } else {
- $this->stream->read($offset - $current);
- }
- }
-
- $this->offset = $offset;
- }
-
- /**
- * Set the limit of bytes that the decorator allows to be read from the
- * stream.
- *
- * @param int $limit Number of bytes to allow to be read from the stream.
- * Use -1 for no limit.
- */
- public function setLimit($limit)
- {
- $this->limit = $limit;
- }
-
- public function read($length)
- {
- if ($this->limit == -1) {
- return $this->stream->read($length);
- }
-
- // Check if the current position is less than the total allowed
- // bytes + original offset
- $remaining = ($this->offset + $this->limit) - $this->stream->tell();
- if ($remaining > 0) {
- // Only return the amount of requested data, ensuring that the byte
- // limit is not exceeded
- return $this->stream->read(min($remaining, $length));
- }
-
- return '';
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/MessageTrait.php b/vendor/guzzlehttp/psr7/src/MessageTrait.php
deleted file mode 100644
index a7966d1..0000000
--- a/vendor/guzzlehttp/psr7/src/MessageTrait.php
+++ /dev/null
@@ -1,213 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Trait implementing functionality common to requests and responses.
- */
-trait MessageTrait
-{
- /** @var array Map of all registered headers, as original name => array of values */
- private $headers = [];
-
- /** @var array Map of lowercase header name => original name at registration */
- private $headerNames = [];
-
- /** @var string */
- private $protocol = '1.1';
-
- /** @var StreamInterface */
- private $stream;
-
- public function getProtocolVersion()
- {
- return $this->protocol;
- }
-
- public function withProtocolVersion($version)
- {
- if ($this->protocol === $version) {
- return $this;
- }
-
- $new = clone $this;
- $new->protocol = $version;
- return $new;
- }
-
- public function getHeaders()
- {
- return $this->headers;
- }
-
- public function hasHeader($header)
- {
- return isset($this->headerNames[strtolower($header)]);
- }
-
- public function getHeader($header)
- {
- $header = strtolower($header);
-
- if (!isset($this->headerNames[$header])) {
- return [];
- }
-
- $header = $this->headerNames[$header];
-
- return $this->headers[$header];
- }
-
- public function getHeaderLine($header)
- {
- return implode(', ', $this->getHeader($header));
- }
-
- public function withHeader($header, $value)
- {
- $this->assertHeader($header);
- $value = $this->normalizeHeaderValue($value);
- $normalized = strtolower($header);
-
- $new = clone $this;
- if (isset($new->headerNames[$normalized])) {
- unset($new->headers[$new->headerNames[$normalized]]);
- }
- $new->headerNames[$normalized] = $header;
- $new->headers[$header] = $value;
-
- return $new;
- }
-
- public function withAddedHeader($header, $value)
- {
- $this->assertHeader($header);
- $value = $this->normalizeHeaderValue($value);
- $normalized = strtolower($header);
-
- $new = clone $this;
- if (isset($new->headerNames[$normalized])) {
- $header = $this->headerNames[$normalized];
- $new->headers[$header] = array_merge($this->headers[$header], $value);
- } else {
- $new->headerNames[$normalized] = $header;
- $new->headers[$header] = $value;
- }
-
- return $new;
- }
-
- public function withoutHeader($header)
- {
- $normalized = strtolower($header);
-
- if (!isset($this->headerNames[$normalized])) {
- return $this;
- }
-
- $header = $this->headerNames[$normalized];
-
- $new = clone $this;
- unset($new->headers[$header], $new->headerNames[$normalized]);
-
- return $new;
- }
-
- public function getBody()
- {
- if (!$this->stream) {
- $this->stream = stream_for('');
- }
-
- return $this->stream;
- }
-
- public function withBody(StreamInterface $body)
- {
- if ($body === $this->stream) {
- return $this;
- }
-
- $new = clone $this;
- $new->stream = $body;
- return $new;
- }
-
- private function setHeaders(array $headers)
- {
- $this->headerNames = $this->headers = [];
- foreach ($headers as $header => $value) {
- if (is_int($header)) {
- // Numeric array keys are converted to int by PHP but having a header name '123' is not forbidden by the spec
- // and also allowed in withHeader(). So we need to cast it to string again for the following assertion to pass.
- $header = (string) $header;
- }
- $this->assertHeader($header);
- $value = $this->normalizeHeaderValue($value);
- $normalized = strtolower($header);
- if (isset($this->headerNames[$normalized])) {
- $header = $this->headerNames[$normalized];
- $this->headers[$header] = array_merge($this->headers[$header], $value);
- } else {
- $this->headerNames[$normalized] = $header;
- $this->headers[$header] = $value;
- }
- }
- }
-
- private function normalizeHeaderValue($value)
- {
- if (!is_array($value)) {
- return $this->trimHeaderValues([$value]);
- }
-
- if (count($value) === 0) {
- throw new \InvalidArgumentException('Header value can not be an empty array.');
- }
-
- return $this->trimHeaderValues($value);
- }
-
- /**
- * Trims whitespace from the header values.
- *
- * Spaces and tabs ought to be excluded by parsers when extracting the field value from a header field.
- *
- * header-field = field-name ":" OWS field-value OWS
- * OWS = *( SP / HTAB )
- *
- * @param string[] $values Header values
- *
- * @return string[] Trimmed header values
- *
- * @see https://tools.ietf.org/html/rfc7230#section-3.2.4
- */
- private function trimHeaderValues(array $values)
- {
- return array_map(function ($value) {
- if (!is_scalar($value) && null !== $value) {
- throw new \InvalidArgumentException(sprintf(
- 'Header value must be scalar or null but %s provided.',
- is_object($value) ? get_class($value) : gettype($value)
- ));
- }
-
- return trim((string) $value, " \t");
- }, $values);
- }
-
- private function assertHeader($header)
- {
- if (!is_string($header)) {
- throw new \InvalidArgumentException(sprintf(
- 'Header name must be a string but %s provided.',
- is_object($header) ? get_class($header) : gettype($header)
- ));
- }
-
- if ($header === '') {
- throw new \InvalidArgumentException('Header name can not be empty.');
- }
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/MultipartStream.php b/vendor/guzzlehttp/psr7/src/MultipartStream.php
deleted file mode 100644
index c0fd584..0000000
--- a/vendor/guzzlehttp/psr7/src/MultipartStream.php
+++ /dev/null
@@ -1,153 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Stream that when read returns bytes for a streaming multipart or
- * multipart/form-data stream.
- */
-class MultipartStream implements StreamInterface
-{
- use StreamDecoratorTrait;
-
- private $boundary;
-
- /**
- * @param array $elements Array of associative arrays, each containing a
- * required "name" key mapping to the form field,
- * name, a required "contents" key mapping to a
- * StreamInterface/resource/string, an optional
- * "headers" associative array of custom headers,
- * and an optional "filename" key mapping to a
- * string to send as the filename in the part.
- * @param string $boundary You can optionally provide a specific boundary
- *
- * @throws \InvalidArgumentException
- */
- public function __construct(array $elements = [], $boundary = null)
- {
- $this->boundary = $boundary ?: sha1(uniqid('', true));
- $this->stream = $this->createStream($elements);
- }
-
- /**
- * Get the boundary
- *
- * @return string
- */
- public function getBoundary()
- {
- return $this->boundary;
- }
-
- public function isWritable()
- {
- return false;
- }
-
- /**
- * Get the headers needed before transferring the content of a POST file
- */
- private function getHeaders(array $headers)
- {
- $str = '';
- foreach ($headers as $key => $value) {
- $str .= "{$key}: {$value}\r\n";
- }
-
- return "--{$this->boundary}\r\n" . trim($str) . "\r\n\r\n";
- }
-
- /**
- * Create the aggregate stream that will be used to upload the POST data
- */
- protected function createStream(array $elements)
- {
- $stream = new AppendStream();
-
- foreach ($elements as $element) {
- $this->addElement($stream, $element);
- }
-
- // Add the trailing boundary with CRLF
- $stream->addStream(stream_for("--{$this->boundary}--\r\n"));
-
- return $stream;
- }
-
- private function addElement(AppendStream $stream, array $element)
- {
- foreach (['contents', 'name'] as $key) {
- if (!array_key_exists($key, $element)) {
- throw new \InvalidArgumentException("A '{$key}' key is required");
- }
- }
-
- $element['contents'] = stream_for($element['contents']);
-
- if (empty($element['filename'])) {
- $uri = $element['contents']->getMetadata('uri');
- if (substr($uri, 0, 6) !== 'php://') {
- $element['filename'] = $uri;
- }
- }
-
- list($body, $headers) = $this->createElement(
- $element['name'],
- $element['contents'],
- isset($element['filename']) ? $element['filename'] : null,
- isset($element['headers']) ? $element['headers'] : []
- );
-
- $stream->addStream(stream_for($this->getHeaders($headers)));
- $stream->addStream($body);
- $stream->addStream(stream_for("\r\n"));
- }
-
- /**
- * @return array
- */
- private function createElement($name, StreamInterface $stream, $filename, array $headers)
- {
- // Set a default content-disposition header if one was no provided
- $disposition = $this->getHeader($headers, 'content-disposition');
- if (!$disposition) {
- $headers['Content-Disposition'] = ($filename === '0' || $filename)
- ? sprintf('form-data; name="%s"; filename="%s"',
- $name,
- basename($filename))
- : "form-data; name=\"{$name}\"";
- }
-
- // Set a default content-length header if one was no provided
- $length = $this->getHeader($headers, 'content-length');
- if (!$length) {
- if ($length = $stream->getSize()) {
- $headers['Content-Length'] = (string) $length;
- }
- }
-
- // Set a default Content-Type if one was not supplied
- $type = $this->getHeader($headers, 'content-type');
- if (!$type && ($filename === '0' || $filename)) {
- if ($type = mimetype_from_filename($filename)) {
- $headers['Content-Type'] = $type;
- }
- }
-
- return [$stream, $headers];
- }
-
- private function getHeader(array $headers, $key)
- {
- $lowercaseHeader = strtolower($key);
- foreach ($headers as $k => $v) {
- if (strtolower($k) === $lowercaseHeader) {
- return $v;
- }
- }
-
- return null;
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/NoSeekStream.php b/vendor/guzzlehttp/psr7/src/NoSeekStream.php
deleted file mode 100644
index 2332218..0000000
--- a/vendor/guzzlehttp/psr7/src/NoSeekStream.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Stream decorator that prevents a stream from being seeked
- */
-class NoSeekStream implements StreamInterface
-{
- use StreamDecoratorTrait;
-
- public function seek($offset, $whence = SEEK_SET)
- {
- throw new \RuntimeException('Cannot seek a NoSeekStream');
- }
-
- public function isSeekable()
- {
- return false;
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/PumpStream.php b/vendor/guzzlehttp/psr7/src/PumpStream.php
deleted file mode 100644
index ffb5440..0000000
--- a/vendor/guzzlehttp/psr7/src/PumpStream.php
+++ /dev/null
@@ -1,165 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Provides a read only stream that pumps data from a PHP callable.
- *
- * When invoking the provided callable, the PumpStream will pass the amount of
- * data requested to read to the callable. The callable can choose to ignore
- * this value and return fewer or more bytes than requested. Any extra data
- * returned by the provided callable is buffered internally until drained using
- * the read() function of the PumpStream. The provided callable MUST return
- * false when there is no more data to read.
- */
-class PumpStream implements StreamInterface
-{
- /** @var callable */
- private $source;
-
- /** @var int */
- private $size;
-
- /** @var int */
- private $tellPos = 0;
-
- /** @var array */
- private $metadata;
-
- /** @var BufferStream */
- private $buffer;
-
- /**
- * @param callable $source Source of the stream data. The callable MAY
- * accept an integer argument used to control the
- * amount of data to return. The callable MUST
- * return a string when called, or false on error
- * or EOF.
- * @param array $options Stream options:
- * - metadata: Hash of metadata to use with stream.
- * - size: Size of the stream, if known.
- */
- public function __construct(callable $source, array $options = [])
- {
- $this->source = $source;
- $this->size = isset($options['size']) ? $options['size'] : null;
- $this->metadata = isset($options['metadata']) ? $options['metadata'] : [];
- $this->buffer = new BufferStream();
- }
-
- public function __toString()
- {
- try {
- return copy_to_string($this);
- } catch (\Exception $e) {
- return '';
- }
- }
-
- public function close()
- {
- $this->detach();
- }
-
- public function detach()
- {
- $this->tellPos = false;
- $this->source = null;
- }
-
- public function getSize()
- {
- return $this->size;
- }
-
- public function tell()
- {
- return $this->tellPos;
- }
-
- public function eof()
- {
- return !$this->source;
- }
-
- public function isSeekable()
- {
- return false;
- }
-
- public function rewind()
- {
- $this->seek(0);
- }
-
- public function seek($offset, $whence = SEEK_SET)
- {
- throw new \RuntimeException('Cannot seek a PumpStream');
- }
-
- public function isWritable()
- {
- return false;
- }
-
- public function write($string)
- {
- throw new \RuntimeException('Cannot write to a PumpStream');
- }
-
- public function isReadable()
- {
- return true;
- }
-
- public function read($length)
- {
- $data = $this->buffer->read($length);
- $readLen = strlen($data);
- $this->tellPos += $readLen;
- $remaining = $length - $readLen;
-
- if ($remaining) {
- $this->pump($remaining);
- $data .= $this->buffer->read($remaining);
- $this->tellPos += strlen($data) - $readLen;
- }
-
- return $data;
- }
-
- public function getContents()
- {
- $result = '';
- while (!$this->eof()) {
- $result .= $this->read(1000000);
- }
-
- return $result;
- }
-
- public function getMetadata($key = null)
- {
- if (!$key) {
- return $this->metadata;
- }
-
- return isset($this->metadata[$key]) ? $this->metadata[$key] : null;
- }
-
- private function pump($length)
- {
- if ($this->source) {
- do {
- $data = call_user_func($this->source, $length);
- if ($data === false || $data === null) {
- $this->source = null;
- return;
- }
- $this->buffer->write($data);
- $length -= strlen($data);
- } while ($length > 0);
- }
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Request.php b/vendor/guzzlehttp/psr7/src/Request.php
deleted file mode 100644
index 59f337d..0000000
--- a/vendor/guzzlehttp/psr7/src/Request.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use InvalidArgumentException;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\StreamInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * PSR-7 request implementation.
- */
-class Request implements RequestInterface
-{
- use MessageTrait;
-
- /** @var string */
- private $method;
-
- /** @var null|string */
- private $requestTarget;
-
- /** @var UriInterface */
- private $uri;
-
- /**
- * @param string $method HTTP method
- * @param string|UriInterface $uri URI
- * @param array $headers Request headers
- * @param string|null|resource|StreamInterface $body Request body
- * @param string $version Protocol version
- */
- public function __construct(
- $method,
- $uri,
- array $headers = [],
- $body = null,
- $version = '1.1'
- ) {
- $this->assertMethod($method);
- if (!($uri instanceof UriInterface)) {
- $uri = new Uri($uri);
- }
-
- $this->method = strtoupper($method);
- $this->uri = $uri;
- $this->setHeaders($headers);
- $this->protocol = $version;
-
- if (!isset($this->headerNames['host'])) {
- $this->updateHostFromUri();
- }
-
- if ($body !== '' && $body !== null) {
- $this->stream = stream_for($body);
- }
- }
-
- public function getRequestTarget()
- {
- if ($this->requestTarget !== null) {
- return $this->requestTarget;
- }
-
- $target = $this->uri->getPath();
- if ($target == '') {
- $target = '/';
- }
- if ($this->uri->getQuery() != '') {
- $target .= '?' . $this->uri->getQuery();
- }
-
- return $target;
- }
-
- public function withRequestTarget($requestTarget)
- {
- if (preg_match('#\s#', $requestTarget)) {
- throw new InvalidArgumentException(
- 'Invalid request target provided; cannot contain whitespace'
- );
- }
-
- $new = clone $this;
- $new->requestTarget = $requestTarget;
- return $new;
- }
-
- public function getMethod()
- {
- return $this->method;
- }
-
- public function withMethod($method)
- {
- $this->assertMethod($method);
- $new = clone $this;
- $new->method = strtoupper($method);
- return $new;
- }
-
- public function getUri()
- {
- return $this->uri;
- }
-
- public function withUri(UriInterface $uri, $preserveHost = false)
- {
- if ($uri === $this->uri) {
- return $this;
- }
-
- $new = clone $this;
- $new->uri = $uri;
-
- if (!$preserveHost || !isset($this->headerNames['host'])) {
- $new->updateHostFromUri();
- }
-
- return $new;
- }
-
- private function updateHostFromUri()
- {
- $host = $this->uri->getHost();
-
- if ($host == '') {
- return;
- }
-
- if (($port = $this->uri->getPort()) !== null) {
- $host .= ':' . $port;
- }
-
- if (isset($this->headerNames['host'])) {
- $header = $this->headerNames['host'];
- } else {
- $header = 'Host';
- $this->headerNames['host'] = 'Host';
- }
- // Ensure Host is the first header.
- // See: http://tools.ietf.org/html/rfc7230#section-5.4
- $this->headers = [$header => [$host]] + $this->headers;
- }
-
- private function assertMethod($method)
- {
- if (!is_string($method) || $method === '') {
- throw new \InvalidArgumentException('Method must be a non-empty string.');
- }
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Response.php b/vendor/guzzlehttp/psr7/src/Response.php
deleted file mode 100644
index e7e04d8..0000000
--- a/vendor/guzzlehttp/psr7/src/Response.php
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\StreamInterface;
-
-/**
- * PSR-7 response implementation.
- */
-class Response implements ResponseInterface
-{
- use MessageTrait;
-
- /** @var array Map of standard HTTP status code/reason phrases */
- private static $phrases = [
- 100 => 'Continue',
- 101 => 'Switching Protocols',
- 102 => 'Processing',
- 200 => 'OK',
- 201 => 'Created',
- 202 => 'Accepted',
- 203 => 'Non-Authoritative Information',
- 204 => 'No Content',
- 205 => 'Reset Content',
- 206 => 'Partial Content',
- 207 => 'Multi-status',
- 208 => 'Already Reported',
- 300 => 'Multiple Choices',
- 301 => 'Moved Permanently',
- 302 => 'Found',
- 303 => 'See Other',
- 304 => 'Not Modified',
- 305 => 'Use Proxy',
- 306 => 'Switch Proxy',
- 307 => 'Temporary Redirect',
- 400 => 'Bad Request',
- 401 => 'Unauthorized',
- 402 => 'Payment Required',
- 403 => 'Forbidden',
- 404 => 'Not Found',
- 405 => 'Method Not Allowed',
- 406 => 'Not Acceptable',
- 407 => 'Proxy Authentication Required',
- 408 => 'Request Time-out',
- 409 => 'Conflict',
- 410 => 'Gone',
- 411 => 'Length Required',
- 412 => 'Precondition Failed',
- 413 => 'Request Entity Too Large',
- 414 => 'Request-URI Too Large',
- 415 => 'Unsupported Media Type',
- 416 => 'Requested range not satisfiable',
- 417 => 'Expectation Failed',
- 418 => 'I\'m a teapot',
- 422 => 'Unprocessable Entity',
- 423 => 'Locked',
- 424 => 'Failed Dependency',
- 425 => 'Unordered Collection',
- 426 => 'Upgrade Required',
- 428 => 'Precondition Required',
- 429 => 'Too Many Requests',
- 431 => 'Request Header Fields Too Large',
- 451 => 'Unavailable For Legal Reasons',
- 500 => 'Internal Server Error',
- 501 => 'Not Implemented',
- 502 => 'Bad Gateway',
- 503 => 'Service Unavailable',
- 504 => 'Gateway Time-out',
- 505 => 'HTTP Version not supported',
- 506 => 'Variant Also Negotiates',
- 507 => 'Insufficient Storage',
- 508 => 'Loop Detected',
- 511 => 'Network Authentication Required',
- ];
-
- /** @var string */
- private $reasonPhrase = '';
-
- /** @var int */
- private $statusCode = 200;
-
- /**
- * @param int $status Status code
- * @param array $headers Response headers
- * @param string|null|resource|StreamInterface $body Response body
- * @param string $version Protocol version
- * @param string|null $reason Reason phrase (when empty a default will be used based on the status code)
- */
- public function __construct(
- $status = 200,
- array $headers = [],
- $body = null,
- $version = '1.1',
- $reason = null
- ) {
- $this->assertStatusCodeIsInteger($status);
- $status = (int) $status;
- $this->assertStatusCodeRange($status);
-
- $this->statusCode = $status;
-
- if ($body !== '' && $body !== null) {
- $this->stream = stream_for($body);
- }
-
- $this->setHeaders($headers);
- if ($reason == '' && isset(self::$phrases[$this->statusCode])) {
- $this->reasonPhrase = self::$phrases[$this->statusCode];
- } else {
- $this->reasonPhrase = (string) $reason;
- }
-
- $this->protocol = $version;
- }
-
- public function getStatusCode()
- {
- return $this->statusCode;
- }
-
- public function getReasonPhrase()
- {
- return $this->reasonPhrase;
- }
-
- public function withStatus($code, $reasonPhrase = '')
- {
- $this->assertStatusCodeIsInteger($code);
- $code = (int) $code;
- $this->assertStatusCodeRange($code);
-
- $new = clone $this;
- $new->statusCode = $code;
- if ($reasonPhrase == '' && isset(self::$phrases[$new->statusCode])) {
- $reasonPhrase = self::$phrases[$new->statusCode];
- }
- $new->reasonPhrase = $reasonPhrase;
- return $new;
- }
-
- private function assertStatusCodeIsInteger($statusCode)
- {
- if (filter_var($statusCode, FILTER_VALIDATE_INT) === false) {
- throw new \InvalidArgumentException('Status code must be an integer value.');
- }
- }
-
- private function assertStatusCodeRange($statusCode)
- {
- if ($statusCode < 100 || $statusCode >= 600) {
- throw new \InvalidArgumentException('Status code must be an integer value between 1xx and 5xx.');
- }
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Rfc7230.php b/vendor/guzzlehttp/psr7/src/Rfc7230.php
deleted file mode 100644
index 505e474..0000000
--- a/vendor/guzzlehttp/psr7/src/Rfc7230.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-final class Rfc7230
-{
- /**
- * Header related regular expressions (copied from amphp/http package)
- * (Note: once we require PHP 7.x we could just depend on the upstream package)
- *
- * Note: header delimiter (\r\n) is modified to \r?\n to accept line feed only delimiters for BC reasons.
- *
- * @link https://github.com/amphp/http/blob/v1.0.1/src/Rfc7230.php#L12-L15
- * @license https://github.com/amphp/http/blob/v1.0.1/LICENSE
- */
- const HEADER_REGEX = "(^([^()<>@,;:\\\"/[\]?={}\x01-\x20\x7F]++):[ \t]*+((?:[ \t]*+[\x21-\x7E\x80-\xFF]++)*+)[ \t]*+\r?\n)m";
- const HEADER_FOLD_REGEX = "(\r?\n[ \t]++)";
-}
diff --git a/vendor/guzzlehttp/psr7/src/ServerRequest.php b/vendor/guzzlehttp/psr7/src/ServerRequest.php
deleted file mode 100644
index 1a09a6c..0000000
--- a/vendor/guzzlehttp/psr7/src/ServerRequest.php
+++ /dev/null
@@ -1,376 +0,0 @@
-<?php
-
-namespace GuzzleHttp\Psr7;
-
-use InvalidArgumentException;
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Message\UriInterface;
-use Psr\Http\Message\StreamInterface;
-use Psr\Http\Message\UploadedFileInterface;
-
-/**
- * Server-side HTTP request
- *
- * Extends the Request definition to add methods for accessing incoming data,
- * specifically server parameters, cookies, matched path parameters, query
- * string arguments, body parameters, and upload file information.
- *
- * "Attributes" are discovered via decomposing the request (and usually
- * specifically the URI path), and typically will be injected by the application.
- *
- * Requests are considered immutable; all methods that might change state are
- * implemented such that they retain the internal state of the current
- * message and return a new instance that contains the changed state.
- */
-class ServerRequest extends Request implements ServerRequestInterface
-{
- /**
- * @var array
- */
- private $attributes = [];
-
- /**
- * @var array
- */
- private $cookieParams = [];
-
- /**
- * @var null|array|object
- */
- private $parsedBody;
-
- /**
- * @var array
- */
- private $queryParams = [];
-
- /**
- * @var array
- */
- private $serverParams;
-
- /**
- * @var array
- */
- private $uploadedFiles = [];
-
- /**
- * @param string $method HTTP method
- * @param string|UriInterface $uri URI
- * @param array $headers Request headers
- * @param string|null|resource|StreamInterface $body Request body
- * @param string $version Protocol version
- * @param array $serverParams Typically the $_SERVER superglobal
- */
- public function __construct(
- $method,
- $uri,
- array $headers = [],
- $body = null,
- $version = '1.1',
- array $serverParams = []
- ) {
- $this->serverParams = $serverParams;
-
- parent::__construct($method, $uri, $headers, $body, $version);
- }
-
- /**
- * Return an UploadedFile instance array.
- *
- * @param array $files A array which respect $_FILES structure
- * @throws InvalidArgumentException for unrecognized values
- * @return array
- */
- public static function normalizeFiles(array $files)
- {
- $normalized = [];
-
- foreach ($files as $key => $value) {
- if ($value instanceof UploadedFileInterface) {
- $normalized[$key] = $value;
- } elseif (is_array($value) && isset($value['tmp_name'])) {
- $normalized[$key] = self::createUploadedFileFromSpec($value);
- } elseif (is_array($value)) {
- $normalized[$key] = self::normalizeFiles($value);
- continue;
- } else {
- throw new InvalidArgumentException('Invalid value in files specification');
- }
- }
-
- return $normalized;
- }
-
- /**
- * Create and return an UploadedFile instance from a $_FILES specification.
- *
- * If the specification represents an array of values, this method will
- * delegate to normalizeNestedFileSpec() and return that return value.
- *
- * @param array $value $_FILES struct
- * @return array|UploadedFileInterface
- */
- private static function createUploadedFileFromSpec(array $value)
- {
- if (is_array($value['tmp_name'])) {
- return self::normalizeNestedFileSpec($value);
- }
-
- return new UploadedFile(
- $value['tmp_name'],
- (int) $value['size'],
- (int) $value['error'],
- $value['name'],
- $value['type']
- );
- }
-
- /**
- * Normalize an array of file specifications.
- *
- * Loops through all nested files and returns a normalized array of
- * UploadedFileInterface instances.
- *
- * @param array $files
- * @return UploadedFileInterface[]
- */
- private static function normalizeNestedFileSpec(array $files = [])
- {
- $normalizedFiles = [];
-
- foreach (array_keys($files['tmp_name']) as $key) {
- $spec = [
- 'tmp_name' => $files['tmp_name'][$key],
- 'size' => $files['size'][$key],
- 'error' => $files['error'][$key],
- 'name' => $files['name'][$key],
- 'type' => $files['type'][$key],
- ];
- $normalizedFiles[$key] = self::createUploadedFileFromSpec($spec);
- }
-
- return $normalizedFiles;
- }
-
- /**
- * Return a ServerRequest populated with superglobals:
- * $_GET
- * $_POST
- * $_COOKIE
- * $_FILES
- * $_SERVER
- *
- * @return ServerRequestInterface
- */
- public static function fromGlobals()
- {
- $method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : 'GET';
- $headers = getallheaders();
- $uri = self::getUriFromGlobals();
- $body = new CachingStream(new LazyOpenStream('php://input', 'r+'));
- $protocol = isset($_SERVER['SERVER_PROTOCOL']) ? str_replace('HTTP/', '', $_SERVER['SERVER_PROTOCOL']) : '1.1';
-
- $serverRequest = new ServerRequest($method, $uri, $headers, $body, $protocol, $_SERVER);
-
- return $serverRequest
- ->withCookieParams($_COOKIE)
- ->withQueryParams($_GET)
- ->withParsedBody($_POST)
- ->withUploadedFiles(self::normalizeFiles($_FILES));
- }
-
- private static function extractHostAndPortFromAuthority($authority)
- {
- $uri = 'http://'.$authority;
- $parts = parse_url($uri);
- if (false === $parts) {
- return [null, null];
- }
-
- $host = isset($parts['host']) ? $parts['host'] : null;
- $port = isset($parts['port']) ? $parts['port'] : null;
-
- return [$host, $port];
- }
-
- /**
- * Get a Uri populated with values from $_SERVER.
- *
- * @return UriInterface
- */
- public static function getUriFromGlobals()
- {
- $uri = new Uri('');
-
- $uri = $uri->withScheme(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' ? 'https' : 'http');
-
- $hasPort = false;
- if (isset($_SERVER['HTTP_HOST'])) {
- list($host, $port) = self::extractHostAndPortFromAuthority($_SERVER['HTTP_HOST']);
- if ($host !== null) {
- $uri = $uri->withHost($host);
- }
-
- if ($port !== null) {
- $hasPort = true;
- $uri = $uri->withPort($port);
- }
- } elseif (isset($_SERVER['SERVER_NAME'])) {
- $uri = $uri->withHost($_SERVER['SERVER_NAME']);
- } elseif (isset($_SERVER['SERVER_ADDR'])) {
- $uri = $uri->withHost($_SERVER['SERVER_ADDR']);
- }
-
- if (!$hasPort && isset($_SERVER['SERVER_PORT'])) {
- $uri = $uri->withPort($_SERVER['SERVER_PORT']);
- }
-
- $hasQuery = false;
- if (isset($_SERVER['REQUEST_URI'])) {
- $requestUriParts = explode('?', $_SERVER['REQUEST_URI'], 2);
- $uri = $uri->withPath($requestUriParts[0]);
- if (isset($requestUriParts[1])) {
- $hasQuery = true;
- $uri = $uri->withQuery($requestUriParts[1]);
- }
- }
-
- if (!$hasQuery && isset($_SERVER['QUERY_STRING'])) {
- $uri = $uri->withQuery($_SERVER['QUERY_STRING']);
- }
-
- return $uri;
- }
-
-
- /**
- * {@inheritdoc}
- */
- public function getServerParams()
- {
- return $this->serverParams;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getUploadedFiles()
- {
- return $this->uploadedFiles;
- }
-
- /**
- * {@inheritdoc}
- */
- public function withUploadedFiles(array $uploadedFiles)
- {
- $new = clone $this;
- $new->uploadedFiles = $uploadedFiles;
-
- return $new;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getCookieParams()
- {
- return $this->cookieParams;
- }
-
- /**
- * {@inheritdoc}
- */
- public function withCookieParams(array $cookies)
- {
- $new = clone $this;
- $new->cookieParams = $cookies;
-
- return $new;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getQueryParams()
- {
- return $this->queryParams;
- }
-
- /**
- * {@inheritdoc}
- */
- public function withQueryParams(array $query)
- {
- $new = clone $this;
- $new->queryParams = $query;
-
- return $new;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getParsedBody()
- {
- return $this->parsedBody;
- }
-
- /**
- * {@inheritdoc}
- */
- public function withParsedBody($data)
- {
- $new = clone $this;
- $new->parsedBody = $data;
-
- return $new;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getAttributes()
- {
- return $this->attributes;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getAttribute($attribute, $default = null)
- {
- if (false === array_key_exists($attribute, $this->attributes)) {
- return $default;
- }
-
- return $this->attributes[$attribute];
- }
-
- /**
- * {@inheritdoc}
- */
- public function withAttribute($attribute, $value)
- {
- $new = clone $this;
- $new->attributes[$attribute] = $value;
-
- return $new;
- }
-
- /**
- * {@inheritdoc}
- */
- public function withoutAttribute($attribute)
- {
- if (false === array_key_exists($attribute, $this->attributes)) {
- return $this;
- }
-
- $new = clone $this;
- unset($new->attributes[$attribute]);
-
- return $new;
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Stream.php b/vendor/guzzlehttp/psr7/src/Stream.php
deleted file mode 100644
index d9e7409..0000000
--- a/vendor/guzzlehttp/psr7/src/Stream.php
+++ /dev/null
@@ -1,267 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * PHP stream implementation.
- *
- * @var $stream
- */
-class Stream implements StreamInterface
-{
- /**
- * Resource modes.
- *
- * @var string
- *
- * @see http://php.net/manual/function.fopen.php
- * @see http://php.net/manual/en/function.gzopen.php
- */
- const READABLE_MODES = '/r|a\+|ab\+|w\+|wb\+|x\+|xb\+|c\+|cb\+/';
- const WRITABLE_MODES = '/a|w|r\+|rb\+|rw|x|c/';
-
- private $stream;
- private $size;
- private $seekable;
- private $readable;
- private $writable;
- private $uri;
- private $customMetadata;
-
- /**
- * This constructor accepts an associative array of options.
- *
- * - size: (int) If a read stream would otherwise have an indeterminate
- * size, but the size is known due to foreknowledge, then you can
- * provide that size, in bytes.
- * - metadata: (array) Any additional metadata to return when the metadata
- * of the stream is accessed.
- *
- * @param resource $stream Stream resource to wrap.
- * @param array $options Associative array of options.
- *
- * @throws \InvalidArgumentException if the stream is not a stream resource
- */
- public function __construct($stream, $options = [])
- {
- if (!is_resource($stream)) {
- throw new \InvalidArgumentException('Stream must be a resource');
- }
-
- if (isset($options['size'])) {
- $this->size = $options['size'];
- }
-
- $this->customMetadata = isset($options['metadata'])
- ? $options['metadata']
- : [];
-
- $this->stream = $stream;
- $meta = stream_get_meta_data($this->stream);
- $this->seekable = $meta['seekable'];
- $this->readable = (bool)preg_match(self::READABLE_MODES, $meta['mode']);
- $this->writable = (bool)preg_match(self::WRITABLE_MODES, $meta['mode']);
- $this->uri = $this->getMetadata('uri');
- }
-
- /**
- * Closes the stream when the destructed
- */
- public function __destruct()
- {
- $this->close();
- }
-
- public function __toString()
- {
- try {
- $this->seek(0);
- return (string) stream_get_contents($this->stream);
- } catch (\Exception $e) {
- return '';
- }
- }
-
- public function getContents()
- {
- if (!isset($this->stream)) {
- throw new \RuntimeException('Stream is detached');
- }
-
- $contents = stream_get_contents($this->stream);
-
- if ($contents === false) {
- throw new \RuntimeException('Unable to read stream contents');
- }
-
- return $contents;
- }
-
- public function close()
- {
- if (isset($this->stream)) {
- if (is_resource($this->stream)) {
- fclose($this->stream);
- }
- $this->detach();
- }
- }
-
- public function detach()
- {
- if (!isset($this->stream)) {
- return null;
- }
-
- $result = $this->stream;
- unset($this->stream);
- $this->size = $this->uri = null;
- $this->readable = $this->writable = $this->seekable = false;
-
- return $result;
- }
-
- public function getSize()
- {
- if ($this->size !== null) {
- return $this->size;
- }
-
- if (!isset($this->stream)) {
- return null;
- }
-
- // Clear the stat cache if the stream has a URI
- if ($this->uri) {
- clearstatcache(true, $this->uri);
- }
-
- $stats = fstat($this->stream);
- if (isset($stats['size'])) {
- $this->size = $stats['size'];
- return $this->size;
- }
-
- return null;
- }
-
- public function isReadable()
- {
- return $this->readable;
- }
-
- public function isWritable()
- {
- return $this->writable;
- }
-
- public function isSeekable()
- {
- return $this->seekable;
- }
-
- public function eof()
- {
- if (!isset($this->stream)) {
- throw new \RuntimeException('Stream is detached');
- }
-
- return feof($this->stream);
- }
-
- public function tell()
- {
- if (!isset($this->stream)) {
- throw new \RuntimeException('Stream is detached');
- }
-
- $result = ftell($this->stream);
-
- if ($result === false) {
- throw new \RuntimeException('Unable to determine stream position');
- }
-
- return $result;
- }
-
- public function rewind()
- {
- $this->seek(0);
- }
-
- public function seek($offset, $whence = SEEK_SET)
- {
- $whence = (int) $whence;
-
- if (!isset($this->stream)) {
- throw new \RuntimeException('Stream is detached');
- }
- if (!$this->seekable) {
- throw new \RuntimeException('Stream is not seekable');
- }
- if (fseek($this->stream, $offset, $whence) === -1) {
- throw new \RuntimeException('Unable to seek to stream position '
- . $offset . ' with whence ' . var_export($whence, true));
- }
- }
-
- public function read($length)
- {
- if (!isset($this->stream)) {
- throw new \RuntimeException('Stream is detached');
- }
- if (!$this->readable) {
- throw new \RuntimeException('Cannot read from non-readable stream');
- }
- if ($length < 0) {
- throw new \RuntimeException('Length parameter cannot be negative');
- }
-
- if (0 === $length) {
- return '';
- }
-
- $string = fread($this->stream, $length);
- if (false === $string) {
- throw new \RuntimeException('Unable to read from stream');
- }
-
- return $string;
- }
-
- public function write($string)
- {
- if (!isset($this->stream)) {
- throw new \RuntimeException('Stream is detached');
- }
- if (!$this->writable) {
- throw new \RuntimeException('Cannot write to a non-writable stream');
- }
-
- // We can't know the size after writing anything
- $this->size = null;
- $result = fwrite($this->stream, $string);
-
- if ($result === false) {
- throw new \RuntimeException('Unable to write to stream');
- }
-
- return $result;
- }
-
- public function getMetadata($key = null)
- {
- if (!isset($this->stream)) {
- return $key ? null : [];
- } elseif (!$key) {
- return $this->customMetadata + stream_get_meta_data($this->stream);
- } elseif (isset($this->customMetadata[$key])) {
- return $this->customMetadata[$key];
- }
-
- $meta = stream_get_meta_data($this->stream);
-
- return isset($meta[$key]) ? $meta[$key] : null;
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php b/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php
deleted file mode 100644
index daec6f5..0000000
--- a/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php
+++ /dev/null
@@ -1,149 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Stream decorator trait
- * @property StreamInterface stream
- */
-trait StreamDecoratorTrait
-{
- /**
- * @param StreamInterface $stream Stream to decorate
- */
- public function __construct(StreamInterface $stream)
- {
- $this->stream = $stream;
- }
-
- /**
- * Magic method used to create a new stream if streams are not added in
- * the constructor of a decorator (e.g., LazyOpenStream).
- *
- * @param string $name Name of the property (allows "stream" only).
- *
- * @return StreamInterface
- */
- public function __get($name)
- {
- if ($name == 'stream') {
- $this->stream = $this->createStream();
- return $this->stream;
- }
-
- throw new \UnexpectedValueException("$name not found on class");
- }
-
- public function __toString()
- {
- try {
- if ($this->isSeekable()) {
- $this->seek(0);
- }
- return $this->getContents();
- } catch (\Exception $e) {
- // Really, PHP? https://bugs.php.net/bug.php?id=53648
- trigger_error('StreamDecorator::__toString exception: '
- . (string) $e, E_USER_ERROR);
- return '';
- }
- }
-
- public function getContents()
- {
- return copy_to_string($this);
- }
-
- /**
- * Allow decorators to implement custom methods
- *
- * @param string $method Missing method name
- * @param array $args Method arguments
- *
- * @return mixed
- */
- public function __call($method, array $args)
- {
- $result = call_user_func_array([$this->stream, $method], $args);
-
- // Always return the wrapped object if the result is a return $this
- return $result === $this->stream ? $this : $result;
- }
-
- public function close()
- {
- $this->stream->close();
- }
-
- public function getMetadata($key = null)
- {
- return $this->stream->getMetadata($key);
- }
-
- public function detach()
- {
- return $this->stream->detach();
- }
-
- public function getSize()
- {
- return $this->stream->getSize();
- }
-
- public function eof()
- {
- return $this->stream->eof();
- }
-
- public function tell()
- {
- return $this->stream->tell();
- }
-
- public function isReadable()
- {
- return $this->stream->isReadable();
- }
-
- public function isWritable()
- {
- return $this->stream->isWritable();
- }
-
- public function isSeekable()
- {
- return $this->stream->isSeekable();
- }
-
- public function rewind()
- {
- $this->seek(0);
- }
-
- public function seek($offset, $whence = SEEK_SET)
- {
- $this->stream->seek($offset, $whence);
- }
-
- public function read($length)
- {
- return $this->stream->read($length);
- }
-
- public function write($string)
- {
- return $this->stream->write($string);
- }
-
- /**
- * Implement in subclasses to dynamically create streams when requested.
- *
- * @return StreamInterface
- * @throws \BadMethodCallException
- */
- protected function createStream()
- {
- throw new \BadMethodCallException('Not implemented');
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/StreamWrapper.php b/vendor/guzzlehttp/psr7/src/StreamWrapper.php
deleted file mode 100644
index 0f3a285..0000000
--- a/vendor/guzzlehttp/psr7/src/StreamWrapper.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Converts Guzzle streams into PHP stream resources.
- */
-class StreamWrapper
-{
- /** @var resource */
- public $context;
-
- /** @var StreamInterface */
- private $stream;
-
- /** @var string r, r+, or w */
- private $mode;
-
- /**
- * Returns a resource representing the stream.
- *
- * @param StreamInterface $stream The stream to get a resource for
- *
- * @return resource
- * @throws \InvalidArgumentException if stream is not readable or writable
- */
- public static function getResource(StreamInterface $stream)
- {
- self::register();
-
- if ($stream->isReadable()) {
- $mode = $stream->isWritable() ? 'r+' : 'r';
- } elseif ($stream->isWritable()) {
- $mode = 'w';
- } else {
- throw new \InvalidArgumentException('The stream must be readable, '
- . 'writable, or both.');
- }
-
- return fopen('guzzle://stream', $mode, null, self::createStreamContext($stream));
- }
-
- /**
- * Creates a stream context that can be used to open a stream as a php stream resource.
- *
- * @param StreamInterface $stream
- *
- * @return resource
- */
- public static function createStreamContext(StreamInterface $stream)
- {
- return stream_context_create([
- 'guzzle' => ['stream' => $stream]
- ]);
- }
-
- /**
- * Registers the stream wrapper if needed
- */
- public static function register()
- {
- if (!in_array('guzzle', stream_get_wrappers())) {
- stream_wrapper_register('guzzle', __CLASS__);
- }
- }
-
- public function stream_open($path, $mode, $options, &$opened_path)
- {
- $options = stream_context_get_options($this->context);
-
- if (!isset($options['guzzle']['stream'])) {
- return false;
- }
-
- $this->mode = $mode;
- $this->stream = $options['guzzle']['stream'];
-
- return true;
- }
-
- public function stream_read($count)
- {
- return $this->stream->read($count);
- }
-
- public function stream_write($data)
- {
- return (int) $this->stream->write($data);
- }
-
- public function stream_tell()
- {
- return $this->stream->tell();
- }
-
- public function stream_eof()
- {
- return $this->stream->eof();
- }
-
- public function stream_seek($offset, $whence)
- {
- $this->stream->seek($offset, $whence);
-
- return true;
- }
-
- public function stream_cast($cast_as)
- {
- $stream = clone($this->stream);
-
- return $stream->detach();
- }
-
- public function stream_stat()
- {
- static $modeMap = [
- 'r' => 33060,
- 'rb' => 33060,
- 'r+' => 33206,
- 'w' => 33188,
- 'wb' => 33188
- ];
-
- return [
- 'dev' => 0,
- 'ino' => 0,
- 'mode' => $modeMap[$this->mode],
- 'nlink' => 0,
- 'uid' => 0,
- 'gid' => 0,
- 'rdev' => 0,
- 'size' => $this->stream->getSize() ?: 0,
- 'atime' => 0,
- 'mtime' => 0,
- 'ctime' => 0,
- 'blksize' => 0,
- 'blocks' => 0
- ];
- }
-
- public function url_stat($path, $flags)
- {
- return [
- 'dev' => 0,
- 'ino' => 0,
- 'mode' => 0,
- 'nlink' => 0,
- 'uid' => 0,
- 'gid' => 0,
- 'rdev' => 0,
- 'size' => 0,
- 'atime' => 0,
- 'mtime' => 0,
- 'ctime' => 0,
- 'blksize' => 0,
- 'blocks' => 0
- ];
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/UploadedFile.php b/vendor/guzzlehttp/psr7/src/UploadedFile.php
deleted file mode 100644
index e62bd5c..0000000
--- a/vendor/guzzlehttp/psr7/src/UploadedFile.php
+++ /dev/null
@@ -1,316 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use InvalidArgumentException;
-use Psr\Http\Message\StreamInterface;
-use Psr\Http\Message\UploadedFileInterface;
-use RuntimeException;
-
-class UploadedFile implements UploadedFileInterface
-{
- /**
- * @var int[]
- */
- private static $errors = [
- UPLOAD_ERR_OK,
- UPLOAD_ERR_INI_SIZE,
- UPLOAD_ERR_FORM_SIZE,
- UPLOAD_ERR_PARTIAL,
- UPLOAD_ERR_NO_FILE,
- UPLOAD_ERR_NO_TMP_DIR,
- UPLOAD_ERR_CANT_WRITE,
- UPLOAD_ERR_EXTENSION,
- ];
-
- /**
- * @var string
- */
- private $clientFilename;
-
- /**
- * @var string
- */
- private $clientMediaType;
-
- /**
- * @var int
- */
- private $error;
-
- /**
- * @var null|string
- */
- private $file;
-
- /**
- * @var bool
- */
- private $moved = false;
-
- /**
- * @var int
- */
- private $size;
-
- /**
- * @var StreamInterface|null
- */
- private $stream;
-
- /**
- * @param StreamInterface|string|resource $streamOrFile
- * @param int $size
- * @param int $errorStatus
- * @param string|null $clientFilename
- * @param string|null $clientMediaType
- */
- public function __construct(
- $streamOrFile,
- $size,
- $errorStatus,
- $clientFilename = null,
- $clientMediaType = null
- ) {
- $this->setError($errorStatus);
- $this->setSize($size);
- $this->setClientFilename($clientFilename);
- $this->setClientMediaType($clientMediaType);
-
- if ($this->isOk()) {
- $this->setStreamOrFile($streamOrFile);
- }
- }
-
- /**
- * Depending on the value set file or stream variable
- *
- * @param mixed $streamOrFile
- * @throws InvalidArgumentException
- */
- private function setStreamOrFile($streamOrFile)
- {
- if (is_string($streamOrFile)) {
- $this->file = $streamOrFile;
- } elseif (is_resource($streamOrFile)) {
- $this->stream = new Stream($streamOrFile);
- } elseif ($streamOrFile instanceof StreamInterface) {
- $this->stream = $streamOrFile;
- } else {
- throw new InvalidArgumentException(
- 'Invalid stream or file provided for UploadedFile'
- );
- }
- }
-
- /**
- * @param int $error
- * @throws InvalidArgumentException
- */
- private function setError($error)
- {
- if (false === is_int($error)) {
- throw new InvalidArgumentException(
- 'Upload file error status must be an integer'
- );
- }
-
- if (false === in_array($error, UploadedFile::$errors)) {
- throw new InvalidArgumentException(
- 'Invalid error status for UploadedFile'
- );
- }
-
- $this->error = $error;
- }
-
- /**
- * @param int $size
- * @throws InvalidArgumentException
- */
- private function setSize($size)
- {
- if (false === is_int($size)) {
- throw new InvalidArgumentException(
- 'Upload file size must be an integer'
- );
- }
-
- $this->size = $size;
- }
-
- /**
- * @param mixed $param
- * @return boolean
- */
- private function isStringOrNull($param)
- {
- return in_array(gettype($param), ['string', 'NULL']);
- }
-
- /**
- * @param mixed $param
- * @return boolean
- */
- private function isStringNotEmpty($param)
- {
- return is_string($param) && false === empty($param);
- }
-
- /**
- * @param string|null $clientFilename
- * @throws InvalidArgumentException
- */
- private function setClientFilename($clientFilename)
- {
- if (false === $this->isStringOrNull($clientFilename)) {
- throw new InvalidArgumentException(
- 'Upload file client filename must be a string or null'
- );
- }
-
- $this->clientFilename = $clientFilename;
- }
-
- /**
- * @param string|null $clientMediaType
- * @throws InvalidArgumentException
- */
- private function setClientMediaType($clientMediaType)
- {
- if (false === $this->isStringOrNull($clientMediaType)) {
- throw new InvalidArgumentException(
- 'Upload file client media type must be a string or null'
- );
- }
-
- $this->clientMediaType = $clientMediaType;
- }
-
- /**
- * Return true if there is no upload error
- *
- * @return boolean
- */
- private function isOk()
- {
- return $this->error === UPLOAD_ERR_OK;
- }
-
- /**
- * @return boolean
- */
- public function isMoved()
- {
- return $this->moved;
- }
-
- /**
- * @throws RuntimeException if is moved or not ok
- */
- private function validateActive()
- {
- if (false === $this->isOk()) {
- throw new RuntimeException('Cannot retrieve stream due to upload error');
- }
-
- if ($this->isMoved()) {
- throw new RuntimeException('Cannot retrieve stream after it has already been moved');
- }
- }
-
- /**
- * {@inheritdoc}
- * @throws RuntimeException if the upload was not successful.
- */
- public function getStream()
- {
- $this->validateActive();
-
- if ($this->stream instanceof StreamInterface) {
- return $this->stream;
- }
-
- return new LazyOpenStream($this->file, 'r+');
- }
-
- /**
- * {@inheritdoc}
- *
- * @see http://php.net/is_uploaded_file
- * @see http://php.net/move_uploaded_file
- * @param string $targetPath Path to which to move the uploaded file.
- * @throws RuntimeException if the upload was not successful.
- * @throws InvalidArgumentException if the $path specified is invalid.
- * @throws RuntimeException on any error during the move operation, or on
- * the second or subsequent call to the method.
- */
- public function moveTo($targetPath)
- {
- $this->validateActive();
-
- if (false === $this->isStringNotEmpty($targetPath)) {
- throw new InvalidArgumentException(
- 'Invalid path provided for move operation; must be a non-empty string'
- );
- }
-
- if ($this->file) {
- $this->moved = php_sapi_name() == 'cli'
- ? rename($this->file, $targetPath)
- : move_uploaded_file($this->file, $targetPath);
- } else {
- copy_to_stream(
- $this->getStream(),
- new LazyOpenStream($targetPath, 'w')
- );
-
- $this->moved = true;
- }
-
- if (false === $this->moved) {
- throw new RuntimeException(
- sprintf('Uploaded file could not be moved to %s', $targetPath)
- );
- }
- }
-
- /**
- * {@inheritdoc}
- *
- * @return int|null The file size in bytes or null if unknown.
- */
- public function getSize()
- {
- return $this->size;
- }
-
- /**
- * {@inheritdoc}
- *
- * @see http://php.net/manual/en/features.file-upload.errors.php
- * @return int One of PHP's UPLOAD_ERR_XXX constants.
- */
- public function getError()
- {
- return $this->error;
- }
-
- /**
- * {@inheritdoc}
- *
- * @return string|null The filename sent by the client or null if none
- * was provided.
- */
- public function getClientFilename()
- {
- return $this->clientFilename;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getClientMediaType()
- {
- return $this->clientMediaType;
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Uri.php b/vendor/guzzlehttp/psr7/src/Uri.php
deleted file mode 100644
index 825a25e..0000000
--- a/vendor/guzzlehttp/psr7/src/Uri.php
+++ /dev/null
@@ -1,760 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\UriInterface;
-
-/**
- * PSR-7 URI implementation.
- *
- * @author Michael Dowling
- * @author Tobias Schultze
- * @author Matthew Weier O'Phinney
- */
-class Uri implements UriInterface
-{
- /**
- * Absolute http and https URIs require a host per RFC 7230 Section 2.7
- * but in generic URIs the host can be empty. So for http(s) URIs
- * we apply this default host when no host is given yet to form a
- * valid URI.
- */
- const HTTP_DEFAULT_HOST = 'localhost';
-
- private static $defaultPorts = [
- 'http' => 80,
- 'https' => 443,
- 'ftp' => 21,
- 'gopher' => 70,
- 'nntp' => 119,
- 'news' => 119,
- 'telnet' => 23,
- 'tn3270' => 23,
- 'imap' => 143,
- 'pop' => 110,
- 'ldap' => 389,
- ];
-
- private static $charUnreserved = 'a-zA-Z0-9_\-\.~';
- private static $charSubDelims = '!\$&\'\(\)\*\+,;=';
- private static $replaceQuery = ['=' => '%3D', '&' => '%26'];
-
- /** @var string Uri scheme. */
- private $scheme = '';
-
- /** @var string Uri user info. */
- private $userInfo = '';
-
- /** @var string Uri host. */
- private $host = '';
-
- /** @var int|null Uri port. */
- private $port;
-
- /** @var string Uri path. */
- private $path = '';
-
- /** @var string Uri query string. */
- private $query = '';
-
- /** @var string Uri fragment. */
- private $fragment = '';
-
- /**
- * @param string $uri URI to parse
- */
- public function __construct($uri = '')
- {
- // weak type check to also accept null until we can add scalar type hints
- if ($uri != '') {
- $parts = parse_url($uri);
- if ($parts === false) {
- throw new \InvalidArgumentException("Unable to parse URI: $uri");
- }
- $this->applyParts($parts);
- }
- }
-
- public function __toString()
- {
- return self::composeComponents(
- $this->scheme,
- $this->getAuthority(),
- $this->path,
- $this->query,
- $this->fragment
- );
- }
-
- /**
- * Composes a URI reference string from its various components.
- *
- * Usually this method does not need to be called manually but instead is used indirectly via
- * `Psr\Http\Message\UriInterface::__toString`.
- *
- * PSR-7 UriInterface treats an empty component the same as a missing component as
- * getQuery(), getFragment() etc. always return a string. This explains the slight
- * difference to RFC 3986 Section 5.3.
- *
- * Another adjustment is that the authority separator is added even when the authority is missing/empty
- * for the "file" scheme. This is because PHP stream functions like `file_get_contents` only work with
- * `file:///myfile` but not with `file:/myfile` although they are equivalent according to RFC 3986. But
- * `file:///` is the more common syntax for the file scheme anyway (Chrome for example redirects to
- * that format).
- *
- * @param string $scheme
- * @param string $authority
- * @param string $path
- * @param string $query
- * @param string $fragment
- *
- * @return string
- *
- * @link https://tools.ietf.org/html/rfc3986#section-5.3
- */
- public static function composeComponents($scheme, $authority, $path, $query, $fragment)
- {
- $uri = '';
-
- // weak type checks to also accept null until we can add scalar type hints
- if ($scheme != '') {
- $uri .= $scheme . ':';
- }
-
- if ($authority != ''|| $scheme === 'file') {
- $uri .= '//' . $authority;
- }
-
- $uri .= $path;
-
- if ($query != '') {
- $uri .= '?' . $query;
- }
-
- if ($fragment != '') {
- $uri .= '#' . $fragment;
- }
-
- return $uri;
- }
-
- /**
- * Whether the URI has the default port of the current scheme.
- *
- * `Psr\Http\Message\UriInterface::getPort` may return null or the standard port. This method can be used
- * independently of the implementation.
- *
- * @param UriInterface $uri
- *
- * @return bool
- */
- public static function isDefaultPort(UriInterface $uri)
- {
- return $uri->getPort() === null
- || (isset(self::$defaultPorts[$uri->getScheme()]) && $uri->getPort() === self::$defaultPorts[$uri->getScheme()]);
- }
-
- /**
- * Whether the URI is absolute, i.e. it has a scheme.
- *
- * An instance of UriInterface can either be an absolute URI or a relative reference. This method returns true
- * if it is the former. An absolute URI has a scheme. A relative reference is used to express a URI relative
- * to another URI, the base URI. Relative references can be divided into several forms:
- * - network-path references, e.g. '//example.com/path'
- * - absolute-path references, e.g. '/path'
- * - relative-path references, e.g. 'subpath'
- *
- * @param UriInterface $uri
- *
- * @return bool
- * @see Uri::isNetworkPathReference
- * @see Uri::isAbsolutePathReference
- * @see Uri::isRelativePathReference
- * @link https://tools.ietf.org/html/rfc3986#section-4
- */
- public static function isAbsolute(UriInterface $uri)
- {
- return $uri->getScheme() !== '';
- }
-
- /**
- * Whether the URI is a network-path reference.
- *
- * A relative reference that begins with two slash characters is termed an network-path reference.
- *
- * @param UriInterface $uri
- *
- * @return bool
- * @link https://tools.ietf.org/html/rfc3986#section-4.2
- */
- public static function isNetworkPathReference(UriInterface $uri)
- {
- return $uri->getScheme() === '' && $uri->getAuthority() !== '';
- }
-
- /**
- * Whether the URI is a absolute-path reference.
- *
- * A relative reference that begins with a single slash character is termed an absolute-path reference.
- *
- * @param UriInterface $uri
- *
- * @return bool
- * @link https://tools.ietf.org/html/rfc3986#section-4.2
- */
- public static function isAbsolutePathReference(UriInterface $uri)
- {
- return $uri->getScheme() === ''
- && $uri->getAuthority() === ''
- && isset($uri->getPath()[0])
- && $uri->getPath()[0] === '/';
- }
-
- /**
- * Whether the URI is a relative-path reference.
- *
- * A relative reference that does not begin with a slash character is termed a relative-path reference.
- *
- * @param UriInterface $uri
- *
- * @return bool
- * @link https://tools.ietf.org/html/rfc3986#section-4.2
- */
- public static function isRelativePathReference(UriInterface $uri)
- {
- return $uri->getScheme() === ''
- && $uri->getAuthority() === ''
- && (!isset($uri->getPath()[0]) || $uri->getPath()[0] !== '/');
- }
-
- /**
- * Whether the URI is a same-document reference.
- *
- * A same-document reference refers to a URI that is, aside from its fragment
- * component, identical to the base URI. When no base URI is given, only an empty
- * URI reference (apart from its fragment) is considered a same-document reference.
- *
- * @param UriInterface $uri The URI to check
- * @param UriInterface|null $base An optional base URI to compare against
- *
- * @return bool
- * @link https://tools.ietf.org/html/rfc3986#section-4.4
- */
- public static function isSameDocumentReference(UriInterface $uri, UriInterface $base = null)
- {
- if ($base !== null) {
- $uri = UriResolver::resolve($base, $uri);
-
- return ($uri->getScheme() === $base->getScheme())
- && ($uri->getAuthority() === $base->getAuthority())
- && ($uri->getPath() === $base->getPath())
- && ($uri->getQuery() === $base->getQuery());
- }
-
- return $uri->getScheme() === '' && $uri->getAuthority() === '' && $uri->getPath() === '' && $uri->getQuery() === '';
- }
-
- /**
- * Removes dot segments from a path and returns the new path.
- *
- * @param string $path
- *
- * @return string
- *
- * @deprecated since version 1.4. Use UriResolver::removeDotSegments instead.
- * @see UriResolver::removeDotSegments
- */
- public static function removeDotSegments($path)
- {
- return UriResolver::removeDotSegments($path);
- }
-
- /**
- * Converts the relative URI into a new URI that is resolved against the base URI.
- *
- * @param UriInterface $base Base URI
- * @param string|UriInterface $rel Relative URI
- *
- * @return UriInterface
- *
- * @deprecated since version 1.4. Use UriResolver::resolve instead.
- * @see UriResolver::resolve
- */
- public static function resolve(UriInterface $base, $rel)
- {
- if (!($rel instanceof UriInterface)) {
- $rel = new self($rel);
- }
-
- return UriResolver::resolve($base, $rel);
- }
-
- /**
- * Creates a new URI with a specific query string value removed.
- *
- * Any existing query string values that exactly match the provided key are
- * removed.
- *
- * @param UriInterface $uri URI to use as a base.
- * @param string $key Query string key to remove.
- *
- * @return UriInterface
- */
- public static function withoutQueryValue(UriInterface $uri, $key)
- {
- $result = self::getFilteredQueryString($uri, [$key]);
-
- return $uri->withQuery(implode('&', $result));
- }
-
- /**
- * Creates a new URI with a specific query string value.
- *
- * Any existing query string values that exactly match the provided key are
- * removed and replaced with the given key value pair.
- *
- * A value of null will set the query string key without a value, e.g. "key"
- * instead of "key=value".
- *
- * @param UriInterface $uri URI to use as a base.
- * @param string $key Key to set.
- * @param string|null $value Value to set
- *
- * @return UriInterface
- */
- public static function withQueryValue(UriInterface $uri, $key, $value)
- {
- $result = self::getFilteredQueryString($uri, [$key]);
-
- $result[] = self::generateQueryString($key, $value);
-
- return $uri->withQuery(implode('&', $result));
- }
-
- /**
- * Creates a new URI with multiple specific query string values.
- *
- * It has the same behavior as withQueryValue() but for an associative array of key => value.
- *
- * @param UriInterface $uri URI to use as a base.
- * @param array $keyValueArray Associative array of key and values
- *
- * @return UriInterface
- */
- public static function withQueryValues(UriInterface $uri, array $keyValueArray)
- {
- $result = self::getFilteredQueryString($uri, array_keys($keyValueArray));
-
- foreach ($keyValueArray as $key => $value) {
- $result[] = self::generateQueryString($key, $value);
- }
-
- return $uri->withQuery(implode('&', $result));
- }
-
- /**
- * Creates a URI from a hash of `parse_url` components.
- *
- * @param array $parts
- *
- * @return UriInterface
- * @link http://php.net/manual/en/function.parse-url.php
- *
- * @throws \InvalidArgumentException If the components do not form a valid URI.
- */
- public static function fromParts(array $parts)
- {
- $uri = new self();
- $uri->applyParts($parts);
- $uri->validateState();
-
- return $uri;
- }
-
- public function getScheme()
- {
- return $this->scheme;
- }
-
- public function getAuthority()
- {
- $authority = $this->host;
- if ($this->userInfo !== '') {
- $authority = $this->userInfo . '@' . $authority;
- }
-
- if ($this->port !== null) {
- $authority .= ':' . $this->port;
- }
-
- return $authority;
- }
-
- public function getUserInfo()
- {
- return $this->userInfo;
- }
-
- public function getHost()
- {
- return $this->host;
- }
-
- public function getPort()
- {
- return $this->port;
- }
-
- public function getPath()
- {
- return $this->path;
- }
-
- public function getQuery()
- {
- return $this->query;
- }
-
- public function getFragment()
- {
- return $this->fragment;
- }
-
- public function withScheme($scheme)
- {
- $scheme = $this->filterScheme($scheme);
-
- if ($this->scheme === $scheme) {
- return $this;
- }
-
- $new = clone $this;
- $new->scheme = $scheme;
- $new->removeDefaultPort();
- $new->validateState();
-
- return $new;
- }
-
- public function withUserInfo($user, $password = null)
- {
- $info = $this->filterUserInfoComponent($user);
- if ($password !== null) {
- $info .= ':' . $this->filterUserInfoComponent($password);
- }
-
- if ($this->userInfo === $info) {
- return $this;
- }
-
- $new = clone $this;
- $new->userInfo = $info;
- $new->validateState();
-
- return $new;
- }
-
- public function withHost($host)
- {
- $host = $this->filterHost($host);
-
- if ($this->host === $host) {
- return $this;
- }
-
- $new = clone $this;
- $new->host = $host;
- $new->validateState();
-
- return $new;
- }
-
- public function withPort($port)
- {
- $port = $this->filterPort($port);
-
- if ($this->port === $port) {
- return $this;
- }
-
- $new = clone $this;
- $new->port = $port;
- $new->removeDefaultPort();
- $new->validateState();
-
- return $new;
- }
-
- public function withPath($path)
- {
- $path = $this->filterPath($path);
-
- if ($this->path === $path) {
- return $this;
- }
-
- $new = clone $this;
- $new->path = $path;
- $new->validateState();
-
- return $new;
- }
-
- public function withQuery($query)
- {
- $query = $this->filterQueryAndFragment($query);
-
- if ($this->query === $query) {
- return $this;
- }
-
- $new = clone $this;
- $new->query = $query;
-
- return $new;
- }
-
- public function withFragment($fragment)
- {
- $fragment = $this->filterQueryAndFragment($fragment);
-
- if ($this->fragment === $fragment) {
- return $this;
- }
-
- $new = clone $this;
- $new->fragment = $fragment;
-
- return $new;
- }
-
- /**
- * Apply parse_url parts to a URI.
- *
- * @param array $parts Array of parse_url parts to apply.
- */
- private function applyParts(array $parts)
- {
- $this->scheme = isset($parts['scheme'])
- ? $this->filterScheme($parts['scheme'])
- : '';
- $this->userInfo = isset($parts['user'])
- ? $this->filterUserInfoComponent($parts['user'])
- : '';
- $this->host = isset($parts['host'])
- ? $this->filterHost($parts['host'])
- : '';
- $this->port = isset($parts['port'])
- ? $this->filterPort($parts['port'])
- : null;
- $this->path = isset($parts['path'])
- ? $this->filterPath($parts['path'])
- : '';
- $this->query = isset($parts['query'])
- ? $this->filterQueryAndFragment($parts['query'])
- : '';
- $this->fragment = isset($parts['fragment'])
- ? $this->filterQueryAndFragment($parts['fragment'])
- : '';
- if (isset($parts['pass'])) {
- $this->userInfo .= ':' . $this->filterUserInfoComponent($parts['pass']);
- }
-
- $this->removeDefaultPort();
- }
-
- /**
- * @param string $scheme
- *
- * @return string
- *
- * @throws \InvalidArgumentException If the scheme is invalid.
- */
- private function filterScheme($scheme)
- {
- if (!is_string($scheme)) {
- throw new \InvalidArgumentException('Scheme must be a string');
- }
-
- return strtolower($scheme);
- }
-
- /**
- * @param string $component
- *
- * @return string
- *
- * @throws \InvalidArgumentException If the user info is invalid.
- */
- private function filterUserInfoComponent($component)
- {
- if (!is_string($component)) {
- throw new \InvalidArgumentException('User info must be a string');
- }
-
- return preg_replace_callback(
- '/(?:[^%' . self::$charUnreserved . self::$charSubDelims . ']+|%(?![A-Fa-f0-9]{2}))/',
- [$this, 'rawurlencodeMatchZero'],
- $component
- );
- }
-
- /**
- * @param string $host
- *
- * @return string
- *
- * @throws \InvalidArgumentException If the host is invalid.
- */
- private function filterHost($host)
- {
- if (!is_string($host)) {
- throw new \InvalidArgumentException('Host must be a string');
- }
-
- return strtolower($host);
- }
-
- /**
- * @param int|null $port
- *
- * @return int|null
- *
- * @throws \InvalidArgumentException If the port is invalid.
- */
- private function filterPort($port)
- {
- if ($port === null) {
- return null;
- }
-
- $port = (int) $port;
- if (0 > $port || 0xffff < $port) {
- throw new \InvalidArgumentException(
- sprintf('Invalid port: %d. Must be between 0 and 65535', $port)
- );
- }
-
- return $port;
- }
-
- /**
- * @param UriInterface $uri
- * @param array $keys
- *
- * @return array
- */
- private static function getFilteredQueryString(UriInterface $uri, array $keys)
- {
- $current = $uri->getQuery();
-
- if ($current === '') {
- return [];
- }
-
- $decodedKeys = array_map('rawurldecode', $keys);
-
- return array_filter(explode('&', $current), function ($part) use ($decodedKeys) {
- return !in_array(rawurldecode(explode('=', $part)[0]), $decodedKeys, true);
- });
- }
-
- /**
- * @param string $key
- * @param string|null $value
- *
- * @return string
- */
- private static function generateQueryString($key, $value)
- {
- // Query string separators ("=", "&") within the key or value need to be encoded
- // (while preventing double-encoding) before setting the query string. All other
- // chars that need percent-encoding will be encoded by withQuery().
- $queryString = strtr($key, self::$replaceQuery);
-
- if ($value !== null) {
- $queryString .= '=' . strtr($value, self::$replaceQuery);
- }
-
- return $queryString;
- }
-
- private function removeDefaultPort()
- {
- if ($this->port !== null && self::isDefaultPort($this)) {
- $this->port = null;
- }
- }
-
- /**
- * Filters the path of a URI
- *
- * @param string $path
- *
- * @return string
- *
- * @throws \InvalidArgumentException If the path is invalid.
- */
- private function filterPath($path)
- {
- if (!is_string($path)) {
- throw new \InvalidArgumentException('Path must be a string');
- }
-
- return preg_replace_callback(
- '/(?:[^' . self::$charUnreserved . self::$charSubDelims . '%:@\/]++|%(?![A-Fa-f0-9]{2}))/',
- [$this, 'rawurlencodeMatchZero'],
- $path
- );
- }
-
- /**
- * Filters the query string or fragment of a URI.
- *
- * @param string $str
- *
- * @return string
- *
- * @throws \InvalidArgumentException If the query or fragment is invalid.
- */
- private function filterQueryAndFragment($str)
- {
- if (!is_string($str)) {
- throw new \InvalidArgumentException('Query and fragment must be a string');
- }
-
- return preg_replace_callback(
- '/(?:[^' . self::$charUnreserved . self::$charSubDelims . '%:@\/\?]++|%(?![A-Fa-f0-9]{2}))/',
- [$this, 'rawurlencodeMatchZero'],
- $str
- );
- }
-
- private function rawurlencodeMatchZero(array $match)
- {
- return rawurlencode($match[0]);
- }
-
- private function validateState()
- {
- if ($this->host === '' && ($this->scheme === 'http' || $this->scheme === 'https')) {
- $this->host = self::HTTP_DEFAULT_HOST;
- }
-
- if ($this->getAuthority() === '') {
- if (0 === strpos($this->path, '//')) {
- throw new \InvalidArgumentException('The path of a URI without an authority must not start with two slashes "//"');
- }
- if ($this->scheme === '' && false !== strpos(explode('/', $this->path, 2)[0], ':')) {
- throw new \InvalidArgumentException('A relative URI must not have a path beginning with a segment containing a colon');
- }
- } elseif (isset($this->path[0]) && $this->path[0] !== '/') {
- @trigger_error(
- 'The path of a URI with an authority must start with a slash "/" or be empty. Automagically fixing the URI ' .
- 'by adding a leading slash to the path is deprecated since version 1.4 and will throw an exception instead.',
- E_USER_DEPRECATED
- );
- $this->path = '/'. $this->path;
- //throw new \InvalidArgumentException('The path of a URI with an authority must start with a slash "/" or be empty');
- }
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/UriNormalizer.php b/vendor/guzzlehttp/psr7/src/UriNormalizer.php
deleted file mode 100644
index 384c29e..0000000
--- a/vendor/guzzlehttp/psr7/src/UriNormalizer.php
+++ /dev/null
@@ -1,216 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\UriInterface;
-
-/**
- * Provides methods to normalize and compare URIs.
- *
- * @author Tobias Schultze
- *
- * @link https://tools.ietf.org/html/rfc3986#section-6
- */
-final class UriNormalizer
-{
- /**
- * Default normalizations which only include the ones that preserve semantics.
- *
- * self::CAPITALIZE_PERCENT_ENCODING | self::DECODE_UNRESERVED_CHARACTERS | self::CONVERT_EMPTY_PATH |
- * self::REMOVE_DEFAULT_HOST | self::REMOVE_DEFAULT_PORT | self::REMOVE_DOT_SEGMENTS
- */
- const PRESERVING_NORMALIZATIONS = 63;
-
- /**
- * All letters within a percent-encoding triplet (e.g., "%3A") are case-insensitive, and should be capitalized.
- *
- * Example: http://example.org/a%c2%b1b → http://example.org/a%C2%B1b
- */
- const CAPITALIZE_PERCENT_ENCODING = 1;
-
- /**
- * Decodes percent-encoded octets of unreserved characters.
- *
- * For consistency, percent-encoded octets in the ranges of ALPHA (%41–%5A and %61–%7A), DIGIT (%30–%39),
- * hyphen (%2D), period (%2E), underscore (%5F), or tilde (%7E) should not be created by URI producers and,
- * when found in a URI, should be decoded to their corresponding unreserved characters by URI normalizers.
- *
- * Example: http://example.org/%7Eusern%61me/ → http://example.org/~username/
- */
- const DECODE_UNRESERVED_CHARACTERS = 2;
-
- /**
- * Converts the empty path to "/" for http and https URIs.
- *
- * Example: http://example.org → http://example.org/
- */
- const CONVERT_EMPTY_PATH = 4;
-
- /**
- * Removes the default host of the given URI scheme from the URI.
- *
- * Only the "file" scheme defines the default host "localhost".
- * All of `file:/myfile`, `file:///myfile`, and `file://localhost/myfile`
- * are equivalent according to RFC 3986. The first format is not accepted
- * by PHPs stream functions and thus already normalized implicitly to the
- * second format in the Uri class. See `GuzzleHttp\Psr7\Uri::composeComponents`.
- *
- * Example: file://localhost/myfile → file:///myfile
- */
- const REMOVE_DEFAULT_HOST = 8;
-
- /**
- * Removes the default port of the given URI scheme from the URI.
- *
- * Example: http://example.org:80/ → http://example.org/
- */
- const REMOVE_DEFAULT_PORT = 16;
-
- /**
- * Removes unnecessary dot-segments.
- *
- * Dot-segments in relative-path references are not removed as it would
- * change the semantics of the URI reference.
- *
- * Example: http://example.org/../a/b/../c/./d.html → http://example.org/a/c/d.html
- */
- const REMOVE_DOT_SEGMENTS = 32;
-
- /**
- * Paths which include two or more adjacent slashes are converted to one.
- *
- * Webservers usually ignore duplicate slashes and treat those URIs equivalent.
- * But in theory those URIs do not need to be equivalent. So this normalization
- * may change the semantics. Encoded slashes (%2F) are not removed.
- *
- * Example: http://example.org//foo///bar.html → http://example.org/foo/bar.html
- */
- const REMOVE_DUPLICATE_SLASHES = 64;
-
- /**
- * Sort query parameters with their values in alphabetical order.
- *
- * However, the order of parameters in a URI may be significant (this is not defined by the standard).
- * So this normalization is not safe and may change the semantics of the URI.
- *
- * Example: ?lang=en&article=fred → ?article=fred&lang=en
- *
- * Note: The sorting is neither locale nor Unicode aware (the URI query does not get decoded at all) as the
- * purpose is to be able to compare URIs in a reproducible way, not to have the params sorted perfectly.
- */
- const SORT_QUERY_PARAMETERS = 128;
-
- /**
- * Returns a normalized URI.
- *
- * The scheme and host component are already normalized to lowercase per PSR-7 UriInterface.
- * This methods adds additional normalizations that can be configured with the $flags parameter.
- *
- * PSR-7 UriInterface cannot distinguish between an empty component and a missing component as
- * getQuery(), getFragment() etc. always return a string. This means the URIs "/?#" and "/" are
- * treated equivalent which is not necessarily true according to RFC 3986. But that difference
- * is highly uncommon in reality. So this potential normalization is implied in PSR-7 as well.
- *
- * @param UriInterface $uri The URI to normalize
- * @param int $flags A bitmask of normalizations to apply, see constants
- *
- * @return UriInterface The normalized URI
- * @link https://tools.ietf.org/html/rfc3986#section-6.2
- */
- public static function normalize(UriInterface $uri, $flags = self::PRESERVING_NORMALIZATIONS)
- {
- if ($flags & self::CAPITALIZE_PERCENT_ENCODING) {
- $uri = self::capitalizePercentEncoding($uri);
- }
-
- if ($flags & self::DECODE_UNRESERVED_CHARACTERS) {
- $uri = self::decodeUnreservedCharacters($uri);
- }
-
- if ($flags & self::CONVERT_EMPTY_PATH && $uri->getPath() === '' &&
- ($uri->getScheme() === 'http' || $uri->getScheme() === 'https')
- ) {
- $uri = $uri->withPath('/');
- }
-
- if ($flags & self::REMOVE_DEFAULT_HOST && $uri->getScheme() === 'file' && $uri->getHost() === 'localhost') {
- $uri = $uri->withHost('');
- }
-
- if ($flags & self::REMOVE_DEFAULT_PORT && $uri->getPort() !== null && Uri::isDefaultPort($uri)) {
- $uri = $uri->withPort(null);
- }
-
- if ($flags & self::REMOVE_DOT_SEGMENTS && !Uri::isRelativePathReference($uri)) {
- $uri = $uri->withPath(UriResolver::removeDotSegments($uri->getPath()));
- }
-
- if ($flags & self::REMOVE_DUPLICATE_SLASHES) {
- $uri = $uri->withPath(preg_replace('#//++#', '/', $uri->getPath()));
- }
-
- if ($flags & self::SORT_QUERY_PARAMETERS && $uri->getQuery() !== '') {
- $queryKeyValues = explode('&', $uri->getQuery());
- sort($queryKeyValues);
- $uri = $uri->withQuery(implode('&', $queryKeyValues));
- }
-
- return $uri;
- }
-
- /**
- * Whether two URIs can be considered equivalent.
- *
- * Both URIs are normalized automatically before comparison with the given $normalizations bitmask. The method also
- * accepts relative URI references and returns true when they are equivalent. This of course assumes they will be
- * resolved against the same base URI. If this is not the case, determination of equivalence or difference of
- * relative references does not mean anything.
- *
- * @param UriInterface $uri1 An URI to compare
- * @param UriInterface $uri2 An URI to compare
- * @param int $normalizations A bitmask of normalizations to apply, see constants
- *
- * @return bool
- * @link https://tools.ietf.org/html/rfc3986#section-6.1
- */
- public static function isEquivalent(UriInterface $uri1, UriInterface $uri2, $normalizations = self::PRESERVING_NORMALIZATIONS)
- {
- return (string) self::normalize($uri1, $normalizations) === (string) self::normalize($uri2, $normalizations);
- }
-
- private static function capitalizePercentEncoding(UriInterface $uri)
- {
- $regex = '/(?:%[A-Fa-f0-9]{2})++/';
-
- $callback = function (array $match) {
- return strtoupper($match[0]);
- };
-
- return
- $uri->withPath(
- preg_replace_callback($regex, $callback, $uri->getPath())
- )->withQuery(
- preg_replace_callback($regex, $callback, $uri->getQuery())
- );
- }
-
- private static function decodeUnreservedCharacters(UriInterface $uri)
- {
- $regex = '/%(?:2D|2E|5F|7E|3[0-9]|[46][1-9A-F]|[57][0-9A])/i';
-
- $callback = function (array $match) {
- return rawurldecode($match[0]);
- };
-
- return
- $uri->withPath(
- preg_replace_callback($regex, $callback, $uri->getPath())
- )->withQuery(
- preg_replace_callback($regex, $callback, $uri->getQuery())
- );
- }
-
- private function __construct()
- {
- // cannot be instantiated
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/UriResolver.php b/vendor/guzzlehttp/psr7/src/UriResolver.php
deleted file mode 100644
index c1cb8a2..0000000
--- a/vendor/guzzlehttp/psr7/src/UriResolver.php
+++ /dev/null
@@ -1,219 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\UriInterface;
-
-/**
- * Resolves a URI reference in the context of a base URI and the opposite way.
- *
- * @author Tobias Schultze
- *
- * @link https://tools.ietf.org/html/rfc3986#section-5
- */
-final class UriResolver
-{
- /**
- * Removes dot segments from a path and returns the new path.
- *
- * @param string $path
- *
- * @return string
- * @link http://tools.ietf.org/html/rfc3986#section-5.2.4
- */
- public static function removeDotSegments($path)
- {
- if ($path === '' || $path === '/') {
- return $path;
- }
-
- $results = [];
- $segments = explode('/', $path);
- foreach ($segments as $segment) {
- if ($segment === '..') {
- array_pop($results);
- } elseif ($segment !== '.') {
- $results[] = $segment;
- }
- }
-
- $newPath = implode('/', $results);
-
- if ($path[0] === '/' && (!isset($newPath[0]) || $newPath[0] !== '/')) {
- // Re-add the leading slash if necessary for cases like "/.."
- $newPath = '/' . $newPath;
- } elseif ($newPath !== '' && ($segment === '.' || $segment === '..')) {
- // Add the trailing slash if necessary
- // If newPath is not empty, then $segment must be set and is the last segment from the foreach
- $newPath .= '/';
- }
-
- return $newPath;
- }
-
- /**
- * Converts the relative URI into a new URI that is resolved against the base URI.
- *
- * @param UriInterface $base Base URI
- * @param UriInterface $rel Relative URI
- *
- * @return UriInterface
- * @link http://tools.ietf.org/html/rfc3986#section-5.2
- */
- public static function resolve(UriInterface $base, UriInterface $rel)
- {
- if ((string) $rel === '') {
- // we can simply return the same base URI instance for this same-document reference
- return $base;
- }
-
- if ($rel->getScheme() != '') {
- return $rel->withPath(self::removeDotSegments($rel->getPath()));
- }
-
- if ($rel->getAuthority() != '') {
- $targetAuthority = $rel->getAuthority();
- $targetPath = self::removeDotSegments($rel->getPath());
- $targetQuery = $rel->getQuery();
- } else {
- $targetAuthority = $base->getAuthority();
- if ($rel->getPath() === '') {
- $targetPath = $base->getPath();
- $targetQuery = $rel->getQuery() != '' ? $rel->getQuery() : $base->getQuery();
- } else {
- if ($rel->getPath()[0] === '/') {
- $targetPath = $rel->getPath();
- } else {
- if ($targetAuthority != '' && $base->getPath() === '') {
- $targetPath = '/' . $rel->getPath();
- } else {
- $lastSlashPos = strrpos($base->getPath(), '/');
- if ($lastSlashPos === false) {
- $targetPath = $rel->getPath();
- } else {
- $targetPath = substr($base->getPath(), 0, $lastSlashPos + 1) . $rel->getPath();
- }
- }
- }
- $targetPath = self::removeDotSegments($targetPath);
- $targetQuery = $rel->getQuery();
- }
- }
-
- return new Uri(Uri::composeComponents(
- $base->getScheme(),
- $targetAuthority,
- $targetPath,
- $targetQuery,
- $rel->getFragment()
- ));
- }
-
- /**
- * Returns the target URI as a relative reference from the base URI.
- *
- * This method is the counterpart to resolve():
- *
- * (string) $target === (string) UriResolver::resolve($base, UriResolver::relativize($base, $target))
- *
- * One use-case is to use the current request URI as base URI and then generate relative links in your documents
- * to reduce the document size or offer self-contained downloadable document archives.
- *
- * $base = new Uri('http://example.com/a/b/');
- * echo UriResolver::relativize($base, new Uri('http://example.com/a/b/c')); // prints 'c'.
- * echo UriResolver::relativize($base, new Uri('http://example.com/a/x/y')); // prints '../x/y'.
- * echo UriResolver::relativize($base, new Uri('http://example.com/a/b/?q')); // prints '?q'.
- * echo UriResolver::relativize($base, new Uri('http://example.org/a/b/')); // prints '//example.org/a/b/'.
- *
- * This method also accepts a target that is already relative and will try to relativize it further. Only a
- * relative-path reference will be returned as-is.
- *
- * echo UriResolver::relativize($base, new Uri('/a/b/c')); // prints 'c' as well
- *
- * @param UriInterface $base Base URI
- * @param UriInterface $target Target URI
- *
- * @return UriInterface The relative URI reference
- */
- public static function relativize(UriInterface $base, UriInterface $target)
- {
- if ($target->getScheme() !== '' &&
- ($base->getScheme() !== $target->getScheme() || $target->getAuthority() === '' && $base->getAuthority() !== '')
- ) {
- return $target;
- }
-
- if (Uri::isRelativePathReference($target)) {
- // As the target is already highly relative we return it as-is. It would be possible to resolve
- // the target with `$target = self::resolve($base, $target);` and then try make it more relative
- // by removing a duplicate query. But let's not do that automatically.
- return $target;
- }
-
- if ($target->getAuthority() !== '' && $base->getAuthority() !== $target->getAuthority()) {
- return $target->withScheme('');
- }
-
- // We must remove the path before removing the authority because if the path starts with two slashes, the URI
- // would turn invalid. And we also cannot set a relative path before removing the authority, as that is also
- // invalid.
- $emptyPathUri = $target->withScheme('')->withPath('')->withUserInfo('')->withPort(null)->withHost('');
-
- if ($base->getPath() !== $target->getPath()) {
- return $emptyPathUri->withPath(self::getRelativePath($base, $target));
- }
-
- if ($base->getQuery() === $target->getQuery()) {
- // Only the target fragment is left. And it must be returned even if base and target fragment are the same.
- return $emptyPathUri->withQuery('');
- }
-
- // If the base URI has a query but the target has none, we cannot return an empty path reference as it would
- // inherit the base query component when resolving.
- if ($target->getQuery() === '') {
- $segments = explode('/', $target->getPath());
- $lastSegment = end($segments);
-
- return $emptyPathUri->withPath($lastSegment === '' ? './' : $lastSegment);
- }
-
- return $emptyPathUri;
- }
-
- private static function getRelativePath(UriInterface $base, UriInterface $target)
- {
- $sourceSegments = explode('/', $base->getPath());
- $targetSegments = explode('/', $target->getPath());
- array_pop($sourceSegments);
- $targetLastSegment = array_pop($targetSegments);
- foreach ($sourceSegments as $i => $segment) {
- if (isset($targetSegments[$i]) && $segment === $targetSegments[$i]) {
- unset($sourceSegments[$i], $targetSegments[$i]);
- } else {
- break;
- }
- }
- $targetSegments[] = $targetLastSegment;
- $relativePath = str_repeat('../', count($sourceSegments)) . implode('/', $targetSegments);
-
- // A reference to am empty last segment or an empty first sub-segment must be prefixed with "./".
- // This also applies to a segment with a colon character (e.g., "file:colon") that cannot be used
- // as the first segment of a relative-path reference, as it would be mistaken for a scheme name.
- if ('' === $relativePath || false !== strpos(explode('/', $relativePath, 2)[0], ':')) {
- $relativePath = "./$relativePath";
- } elseif ('/' === $relativePath[0]) {
- if ($base->getAuthority() != '' && $base->getPath() === '') {
- // In this case an extra slash is added by resolve() automatically. So we must not add one here.
- $relativePath = ".$relativePath";
- } else {
- $relativePath = "./$relativePath";
- }
- }
-
- return $relativePath;
- }
-
- private function __construct()
- {
- // cannot be instantiated
- }
-}
diff --git a/vendor/guzzlehttp/psr7/src/functions.php b/vendor/guzzlehttp/psr7/src/functions.php
deleted file mode 100644
index 8e6dafe..0000000
--- a/vendor/guzzlehttp/psr7/src/functions.php
+++ /dev/null
@@ -1,899 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\MessageInterface;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Message\StreamInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * Returns the string representation of an HTTP message.
- *
- * @param MessageInterface $message Message to convert to a string.
- *
- * @return string
- */
-function str(MessageInterface $message)
-{
- if ($message instanceof RequestInterface) {
- $msg = trim($message->getMethod() . ' '
- . $message->getRequestTarget())
- . ' HTTP/' . $message->getProtocolVersion();
- if (!$message->hasHeader('host')) {
- $msg .= "\r\nHost: " . $message->getUri()->getHost();
- }
- } elseif ($message instanceof ResponseInterface) {
- $msg = 'HTTP/' . $message->getProtocolVersion() . ' '
- . $message->getStatusCode() . ' '
- . $message->getReasonPhrase();
- } else {
- throw new \InvalidArgumentException('Unknown message type');
- }
-
- foreach ($message->getHeaders() as $name => $values) {
- $msg .= "\r\n{$name}: " . implode(', ', $values);
- }
-
- return "{$msg}\r\n\r\n" . $message->getBody();
-}
-
-/**
- * Returns a UriInterface for the given value.
- *
- * This function accepts a string or {@see Psr\Http\Message\UriInterface} and
- * returns a UriInterface for the given value. If the value is already a
- * `UriInterface`, it is returned as-is.
- *
- * @param string|UriInterface $uri
- *
- * @return UriInterface
- * @throws \InvalidArgumentException
- */
-function uri_for($uri)
-{
- if ($uri instanceof UriInterface) {
- return $uri;
- } elseif (is_string($uri)) {
- return new Uri($uri);
- }
-
- throw new \InvalidArgumentException('URI must be a string or UriInterface');
-}
-
-/**
- * Create a new stream based on the input type.
- *
- * Options is an associative array that can contain the following keys:
- * - metadata: Array of custom metadata.
- * - size: Size of the stream.
- *
- * @param resource|string|null|int|float|bool|StreamInterface|callable|\Iterator $resource Entity body data
- * @param array $options Additional options
- *
- * @return StreamInterface
- * @throws \InvalidArgumentException if the $resource arg is not valid.
- */
-function stream_for($resource = '', array $options = [])
-{
- if (is_scalar($resource)) {
- $stream = fopen('php://temp', 'r+');
- if ($resource !== '') {
- fwrite($stream, $resource);
- fseek($stream, 0);
- }
- return new Stream($stream, $options);
- }
-
- switch (gettype($resource)) {
- case 'resource':
- return new Stream($resource, $options);
- case 'object':
- if ($resource instanceof StreamInterface) {
- return $resource;
- } elseif ($resource instanceof \Iterator) {
- return new PumpStream(function () use ($resource) {
- if (!$resource->valid()) {
- return false;
- }
- $result = $resource->current();
- $resource->next();
- return $result;
- }, $options);
- } elseif (method_exists($resource, '__toString')) {
- return stream_for((string) $resource, $options);
- }
- break;
- case 'NULL':
- return new Stream(fopen('php://temp', 'r+'), $options);
- }
-
- if (is_callable($resource)) {
- return new PumpStream($resource, $options);
- }
-
- throw new \InvalidArgumentException('Invalid resource type: ' . gettype($resource));
-}
-
-/**
- * Parse an array of header values containing ";" separated data into an
- * array of associative arrays representing the header key value pair
- * data of the header. When a parameter does not contain a value, but just
- * contains a key, this function will inject a key with a '' string value.
- *
- * @param string|array $header Header to parse into components.
- *
- * @return array Returns the parsed header values.
- */
-function parse_header($header)
-{
- static $trimmed = "\"' \n\t\r";
- $params = $matches = [];
-
- foreach (normalize_header($header) as $val) {
- $part = [];
- foreach (preg_split('/;(?=([^"]*"[^"]*")*[^"]*$)/', $val) as $kvp) {
- if (preg_match_all('/<[^>]+>|[^=]+/', $kvp, $matches)) {
- $m = $matches[0];
- if (isset($m[1])) {
- $part[trim($m[0], $trimmed)] = trim($m[1], $trimmed);
- } else {
- $part[] = trim($m[0], $trimmed);
- }
- }
- }
- if ($part) {
- $params[] = $part;
- }
- }
-
- return $params;
-}
-
-/**
- * Converts an array of header values that may contain comma separated
- * headers into an array of headers with no comma separated values.
- *
- * @param string|array $header Header to normalize.
- *
- * @return array Returns the normalized header field values.
- */
-function normalize_header($header)
-{
- if (!is_array($header)) {
- return array_map('trim', explode(',', $header));
- }
-
- $result = [];
- foreach ($header as $value) {
- foreach ((array) $value as $v) {
- if (strpos($v, ',') === false) {
- $result[] = $v;
- continue;
- }
- foreach (preg_split('/,(?=([^"]*"[^"]*")*[^"]*$)/', $v) as $vv) {
- $result[] = trim($vv);
- }
- }
- }
-
- return $result;
-}
-
-/**
- * Clone and modify a request with the given changes.
- *
- * The changes can be one of:
- * - method: (string) Changes the HTTP method.
- * - set_headers: (array) Sets the given headers.
- * - remove_headers: (array) Remove the given headers.
- * - body: (mixed) Sets the given body.
- * - uri: (UriInterface) Set the URI.
- * - query: (string) Set the query string value of the URI.
- * - version: (string) Set the protocol version.
- *
- * @param RequestInterface $request Request to clone and modify.
- * @param array $changes Changes to apply.
- *
- * @return RequestInterface
- */
-function modify_request(RequestInterface $request, array $changes)
-{
- if (!$changes) {
- return $request;
- }
-
- $headers = $request->getHeaders();
-
- if (!isset($changes['uri'])) {
- $uri = $request->getUri();
- } else {
- // Remove the host header if one is on the URI
- if ($host = $changes['uri']->getHost()) {
- $changes['set_headers']['Host'] = $host;
-
- if ($port = $changes['uri']->getPort()) {
- $standardPorts = ['http' => 80, 'https' => 443];
- $scheme = $changes['uri']->getScheme();
- if (isset($standardPorts[$scheme]) && $port != $standardPorts[$scheme]) {
- $changes['set_headers']['Host'] .= ':'.$port;
- }
- }
- }
- $uri = $changes['uri'];
- }
-
- if (!empty($changes['remove_headers'])) {
- $headers = _caseless_remove($changes['remove_headers'], $headers);
- }
-
- if (!empty($changes['set_headers'])) {
- $headers = _caseless_remove(array_keys($changes['set_headers']), $headers);
- $headers = $changes['set_headers'] + $headers;
- }
-
- if (isset($changes['query'])) {
- $uri = $uri->withQuery($changes['query']);
- }
-
- if ($request instanceof ServerRequestInterface) {
- return (new ServerRequest(
- isset($changes['method']) ? $changes['method'] : $request->getMethod(),
- $uri,
- $headers,
- isset($changes['body']) ? $changes['body'] : $request->getBody(),
- isset($changes['version'])
- ? $changes['version']
- : $request->getProtocolVersion(),
- $request->getServerParams()
- ))
- ->withParsedBody($request->getParsedBody())
- ->withQueryParams($request->getQueryParams())
- ->withCookieParams($request->getCookieParams())
- ->withUploadedFiles($request->getUploadedFiles());
- }
-
- return new Request(
- isset($changes['method']) ? $changes['method'] : $request->getMethod(),
- $uri,
- $headers,
- isset($changes['body']) ? $changes['body'] : $request->getBody(),
- isset($changes['version'])
- ? $changes['version']
- : $request->getProtocolVersion()
- );
-}
-
-/**
- * Attempts to rewind a message body and throws an exception on failure.
- *
- * The body of the message will only be rewound if a call to `tell()` returns a
- * value other than `0`.
- *
- * @param MessageInterface $message Message to rewind
- *
- * @throws \RuntimeException
- */
-function rewind_body(MessageInterface $message)
-{
- $body = $message->getBody();
-
- if ($body->tell()) {
- $body->rewind();
- }
-}
-
-/**
- * Safely opens a PHP stream resource using a filename.
- *
- * When fopen fails, PHP normally raises a warning. This function adds an
- * error handler that checks for errors and throws an exception instead.
- *
- * @param string $filename File to open
- * @param string $mode Mode used to open the file
- *
- * @return resource
- * @throws \RuntimeException if the file cannot be opened
- */
-function try_fopen($filename, $mode)
-{
- $ex = null;
- set_error_handler(function () use ($filename, $mode, &$ex) {
- $ex = new \RuntimeException(sprintf(
- 'Unable to open %s using mode %s: %s',
- $filename,
- $mode,
- func_get_args()[1]
- ));
- });
-
- $handle = fopen($filename, $mode);
- restore_error_handler();
-
- if ($ex) {
- /** @var $ex \RuntimeException */
- throw $ex;
- }
-
- return $handle;
-}
-
-/**
- * Copy the contents of a stream into a string until the given number of
- * bytes have been read.
- *
- * @param StreamInterface $stream Stream to read
- * @param int $maxLen Maximum number of bytes to read. Pass -1
- * to read the entire stream.
- * @return string
- * @throws \RuntimeException on error.
- */
-function copy_to_string(StreamInterface $stream, $maxLen = -1)
-{
- $buffer = '';
-
- if ($maxLen === -1) {
- while (!$stream->eof()) {
- $buf = $stream->read(1048576);
- // Using a loose equality here to match on '' and false.
- if ($buf == null) {
- break;
- }
- $buffer .= $buf;
- }
- return $buffer;
- }
-
- $len = 0;
- while (!$stream->eof() && $len < $maxLen) {
- $buf = $stream->read($maxLen - $len);
- // Using a loose equality here to match on '' and false.
- if ($buf == null) {
- break;
- }
- $buffer .= $buf;
- $len = strlen($buffer);
- }
-
- return $buffer;
-}
-
-/**
- * Copy the contents of a stream into another stream until the given number
- * of bytes have been read.
- *
- * @param StreamInterface $source Stream to read from
- * @param StreamInterface $dest Stream to write to
- * @param int $maxLen Maximum number of bytes to read. Pass -1
- * to read the entire stream.
- *
- * @throws \RuntimeException on error.
- */
-function copy_to_stream(
- StreamInterface $source,
- StreamInterface $dest,
- $maxLen = -1
-) {
- $bufferSize = 8192;
-
- if ($maxLen === -1) {
- while (!$source->eof()) {
- if (!$dest->write($source->read($bufferSize))) {
- break;
- }
- }
- } else {
- $remaining = $maxLen;
- while ($remaining > 0 && !$source->eof()) {
- $buf = $source->read(min($bufferSize, $remaining));
- $len = strlen($buf);
- if (!$len) {
- break;
- }
- $remaining -= $len;
- $dest->write($buf);
- }
- }
-}
-
-/**
- * Calculate a hash of a Stream
- *
- * @param StreamInterface $stream Stream to calculate the hash for
- * @param string $algo Hash algorithm (e.g. md5, crc32, etc)
- * @param bool $rawOutput Whether or not to use raw output
- *
- * @return string Returns the hash of the stream
- * @throws \RuntimeException on error.
- */
-function hash(
- StreamInterface $stream,
- $algo,
- $rawOutput = false
-) {
- $pos = $stream->tell();
-
- if ($pos > 0) {
- $stream->rewind();
- }
-
- $ctx = hash_init($algo);
- while (!$stream->eof()) {
- hash_update($ctx, $stream->read(1048576));
- }
-
- $out = hash_final($ctx, (bool) $rawOutput);
- $stream->seek($pos);
-
- return $out;
-}
-
-/**
- * Read a line from the stream up to the maximum allowed buffer length
- *
- * @param StreamInterface $stream Stream to read from
- * @param int $maxLength Maximum buffer length
- *
- * @return string
- */
-function readline(StreamInterface $stream, $maxLength = null)
-{
- $buffer = '';
- $size = 0;
-
- while (!$stream->eof()) {
- // Using a loose equality here to match on '' and false.
- if (null == ($byte = $stream->read(1))) {
- return $buffer;
- }
- $buffer .= $byte;
- // Break when a new line is found or the max length - 1 is reached
- if ($byte === "\n" || ++$size === $maxLength - 1) {
- break;
- }
- }
-
- return $buffer;
-}
-
-/**
- * Parses a request message string into a request object.
- *
- * @param string $message Request message string.
- *
- * @return Request
- */
-function parse_request($message)
-{
- $data = _parse_message($message);
- $matches = [];
- if (!preg_match('/^[\S]+\s+([a-zA-Z]+:\/\/|\/).*/', $data['start-line'], $matches)) {
- throw new \InvalidArgumentException('Invalid request string');
- }
- $parts = explode(' ', $data['start-line'], 3);
- $version = isset($parts[2]) ? explode('/', $parts[2])[1] : '1.1';
-
- $request = new Request(
- $parts[0],
- $matches[1] === '/' ? _parse_request_uri($parts[1], $data['headers']) : $parts[1],
- $data['headers'],
- $data['body'],
- $version
- );
-
- return $matches[1] === '/' ? $request : $request->withRequestTarget($parts[1]);
-}
-
-/**
- * Parses a response message string into a response object.
- *
- * @param string $message Response message string.
- *
- * @return Response
- */
-function parse_response($message)
-{
- $data = _parse_message($message);
- // According to https://tools.ietf.org/html/rfc7230#section-3.1.2 the space
- // between status-code and reason-phrase is required. But browsers accept
- // responses without space and reason as well.
- if (!preg_match('/^HTTP\/.* [0-9]{3}( .*|$)/', $data['start-line'])) {
- throw new \InvalidArgumentException('Invalid response string: ' . $data['start-line']);
- }
- $parts = explode(' ', $data['start-line'], 3);
-
- return new Response(
- $parts[1],
- $data['headers'],
- $data['body'],
- explode('/', $parts[0])[1],
- isset($parts[2]) ? $parts[2] : null
- );
-}
-
-/**
- * Parse a query string into an associative array.
- *
- * If multiple values are found for the same key, the value of that key
- * value pair will become an array. This function does not parse nested
- * PHP style arrays into an associative array (e.g., foo[a]=1&foo[b]=2 will
- * be parsed into ['foo[a]' => '1', 'foo[b]' => '2']).
- *
- * @param string $str Query string to parse
- * @param int|bool $urlEncoding How the query string is encoded
- *
- * @return array
- */
-function parse_query($str, $urlEncoding = true)
-{
- $result = [];
-
- if ($str === '') {
- return $result;
- }
-
- if ($urlEncoding === true) {
- $decoder = function ($value) {
- return rawurldecode(str_replace('+', ' ', $value));
- };
- } elseif ($urlEncoding === PHP_QUERY_RFC3986) {
- $decoder = 'rawurldecode';
- } elseif ($urlEncoding === PHP_QUERY_RFC1738) {
- $decoder = 'urldecode';
- } else {
- $decoder = function ($str) { return $str; };
- }
-
- foreach (explode('&', $str) as $kvp) {
- $parts = explode('=', $kvp, 2);
- $key = $decoder($parts[0]);
- $value = isset($parts[1]) ? $decoder($parts[1]) : null;
- if (!isset($result[$key])) {
- $result[$key] = $value;
- } else {
- if (!is_array($result[$key])) {
- $result[$key] = [$result[$key]];
- }
- $result[$key][] = $value;
- }
- }
-
- return $result;
-}
-
-/**
- * Build a query string from an array of key value pairs.
- *
- * This function can use the return value of parse_query() to build a query
- * string. This function does not modify the provided keys when an array is
- * encountered (like http_build_query would).
- *
- * @param array $params Query string parameters.
- * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986
- * to encode using RFC3986, or PHP_QUERY_RFC1738
- * to encode using RFC1738.
- * @return string
- */
-function build_query(array $params, $encoding = PHP_QUERY_RFC3986)
-{
- if (!$params) {
- return '';
- }
-
- if ($encoding === false) {
- $encoder = function ($str) { return $str; };
- } elseif ($encoding === PHP_QUERY_RFC3986) {
- $encoder = 'rawurlencode';
- } elseif ($encoding === PHP_QUERY_RFC1738) {
- $encoder = 'urlencode';
- } else {
- throw new \InvalidArgumentException('Invalid type');
- }
-
- $qs = '';
- foreach ($params as $k => $v) {
- $k = $encoder($k);
- if (!is_array($v)) {
- $qs .= $k;
- if ($v !== null) {
- $qs .= '=' . $encoder($v);
- }
- $qs .= '&';
- } else {
- foreach ($v as $vv) {
- $qs .= $k;
- if ($vv !== null) {
- $qs .= '=' . $encoder($vv);
- }
- $qs .= '&';
- }
- }
- }
-
- return $qs ? (string) substr($qs, 0, -1) : '';
-}
-
-/**
- * Determines the mimetype of a file by looking at its extension.
- *
- * @param $filename
- *
- * @return null|string
- */
-function mimetype_from_filename($filename)
-{
- return mimetype_from_extension(pathinfo($filename, PATHINFO_EXTENSION));
-}
-
-/**
- * Maps a file extensions to a mimetype.
- *
- * @param $extension string The file extension.
- *
- * @return string|null
- * @link http://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x/conf/mime.types
- */
-function mimetype_from_extension($extension)
-{
- static $mimetypes = [
- '3gp' => 'video/3gpp',
- '7z' => 'application/x-7z-compressed',
- 'aac' => 'audio/x-aac',
- 'ai' => 'application/postscript',
- 'aif' => 'audio/x-aiff',
- 'asc' => 'text/plain',
- 'asf' => 'video/x-ms-asf',
- 'atom' => 'application/atom+xml',
- 'avi' => 'video/x-msvideo',
- 'bmp' => 'image/bmp',
- 'bz2' => 'application/x-bzip2',
- 'cer' => 'application/pkix-cert',
- 'crl' => 'application/pkix-crl',
- 'crt' => 'application/x-x509-ca-cert',
- 'css' => 'text/css',
- 'csv' => 'text/csv',
- 'cu' => 'application/cu-seeme',
- 'deb' => 'application/x-debian-package',
- 'doc' => 'application/msword',
- 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
- 'dvi' => 'application/x-dvi',
- 'eot' => 'application/vnd.ms-fontobject',
- 'eps' => 'application/postscript',
- 'epub' => 'application/epub+zip',
- 'etx' => 'text/x-setext',
- 'flac' => 'audio/flac',
- 'flv' => 'video/x-flv',
- 'gif' => 'image/gif',
- 'gz' => 'application/gzip',
- 'htm' => 'text/html',
- 'html' => 'text/html',
- 'ico' => 'image/x-icon',
- 'ics' => 'text/calendar',
- 'ini' => 'text/plain',
- 'iso' => 'application/x-iso9660-image',
- 'jar' => 'application/java-archive',
- 'jpe' => 'image/jpeg',
- 'jpeg' => 'image/jpeg',
- 'jpg' => 'image/jpeg',
- 'js' => 'text/javascript',
- 'json' => 'application/json',
- 'latex' => 'application/x-latex',
- 'log' => 'text/plain',
- 'm4a' => 'audio/mp4',
- 'm4v' => 'video/mp4',
- 'mid' => 'audio/midi',
- 'midi' => 'audio/midi',
- 'mov' => 'video/quicktime',
- 'mkv' => 'video/x-matroska',
- 'mp3' => 'audio/mpeg',
- 'mp4' => 'video/mp4',
- 'mp4a' => 'audio/mp4',
- 'mp4v' => 'video/mp4',
- 'mpe' => 'video/mpeg',
- 'mpeg' => 'video/mpeg',
- 'mpg' => 'video/mpeg',
- 'mpg4' => 'video/mp4',
- 'oga' => 'audio/ogg',
- 'ogg' => 'audio/ogg',
- 'ogv' => 'video/ogg',
- 'ogx' => 'application/ogg',
- 'pbm' => 'image/x-portable-bitmap',
- 'pdf' => 'application/pdf',
- 'pgm' => 'image/x-portable-graymap',
- 'png' => 'image/png',
- 'pnm' => 'image/x-portable-anymap',
- 'ppm' => 'image/x-portable-pixmap',
- 'ppt' => 'application/vnd.ms-powerpoint',
- 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
- 'ps' => 'application/postscript',
- 'qt' => 'video/quicktime',
- 'rar' => 'application/x-rar-compressed',
- 'ras' => 'image/x-cmu-raster',
- 'rss' => 'application/rss+xml',
- 'rtf' => 'application/rtf',
- 'sgm' => 'text/sgml',
- 'sgml' => 'text/sgml',
- 'svg' => 'image/svg+xml',
- 'swf' => 'application/x-shockwave-flash',
- 'tar' => 'application/x-tar',
- 'tif' => 'image/tiff',
- 'tiff' => 'image/tiff',
- 'torrent' => 'application/x-bittorrent',
- 'ttf' => 'application/x-font-ttf',
- 'txt' => 'text/plain',
- 'wav' => 'audio/x-wav',
- 'webm' => 'video/webm',
- 'webp' => 'image/webp',
- 'wma' => 'audio/x-ms-wma',
- 'wmv' => 'video/x-ms-wmv',
- 'woff' => 'application/x-font-woff',
- 'wsdl' => 'application/wsdl+xml',
- 'xbm' => 'image/x-xbitmap',
- 'xls' => 'application/vnd.ms-excel',
- 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
- 'xml' => 'application/xml',
- 'xpm' => 'image/x-xpixmap',
- 'xwd' => 'image/x-xwindowdump',
- 'yaml' => 'text/yaml',
- 'yml' => 'text/yaml',
- 'zip' => 'application/zip',
- ];
-
- $extension = strtolower($extension);
-
- return isset($mimetypes[$extension])
- ? $mimetypes[$extension]
- : null;
-}
-
-/**
- * Parses an HTTP message into an associative array.
- *
- * The array contains the "start-line" key containing the start line of
- * the message, "headers" key containing an associative array of header
- * array values, and a "body" key containing the body of the message.
- *
- * @param string $message HTTP request or response to parse.
- *
- * @return array
- * @internal
- */
-function _parse_message($message)
-{
- if (!$message) {
- throw new \InvalidArgumentException('Invalid message');
- }
-
- $message = ltrim($message, "\r\n");
-
- $messageParts = preg_split("/\r?\n\r?\n/", $message, 2);
-
- if ($messageParts === false || count($messageParts) !== 2) {
- throw new \InvalidArgumentException('Invalid message: Missing header delimiter');
- }
-
- list($rawHeaders, $body) = $messageParts;
- $rawHeaders .= "\r\n"; // Put back the delimiter we split previously
- $headerParts = preg_split("/\r?\n/", $rawHeaders, 2);
-
- if ($headerParts === false || count($headerParts) !== 2) {
- throw new \InvalidArgumentException('Invalid message: Missing status line');
- }
-
- list($startLine, $rawHeaders) = $headerParts;
-
- if (preg_match("/(?:^HTTP\/|^[A-Z]+ \S+ HTTP\/)(\d+(?:\.\d+)?)/i", $startLine, $matches) && $matches[1] === '1.0') {
- // Header folding is deprecated for HTTP/1.1, but allowed in HTTP/1.0
- $rawHeaders = preg_replace(Rfc7230::HEADER_FOLD_REGEX, ' ', $rawHeaders);
- }
-
- /** @var array[] $headerLines */
- $count = preg_match_all(Rfc7230::HEADER_REGEX, $rawHeaders, $headerLines, PREG_SET_ORDER);
-
- // If these aren't the same, then one line didn't match and there's an invalid header.
- if ($count !== substr_count($rawHeaders, "\n")) {
- // Folding is deprecated, see https://tools.ietf.org/html/rfc7230#section-3.2.4
- if (preg_match(Rfc7230::HEADER_FOLD_REGEX, $rawHeaders)) {
- throw new \InvalidArgumentException('Invalid header syntax: Obsolete line folding');
- }
-
- throw new \InvalidArgumentException('Invalid header syntax');
- }
-
- $headers = [];
-
- foreach ($headerLines as $headerLine) {
- $headers[$headerLine[1]][] = $headerLine[2];
- }
-
- return [
- 'start-line' => $startLine,
- 'headers' => $headers,
- 'body' => $body,
- ];
-}
-
-/**
- * Constructs a URI for an HTTP request message.
- *
- * @param string $path Path from the start-line
- * @param array $headers Array of headers (each value an array).
- *
- * @return string
- * @internal
- */
-function _parse_request_uri($path, array $headers)
-{
- $hostKey = array_filter(array_keys($headers), function ($k) {
- return strtolower($k) === 'host';
- });
-
- // If no host is found, then a full URI cannot be constructed.
- if (!$hostKey) {
- return $path;
- }
-
- $host = $headers[reset($hostKey)][0];
- $scheme = substr($host, -4) === ':443' ? 'https' : 'http';
-
- return $scheme . '://' . $host . '/' . ltrim($path, '/');
-}
-
-/**
- * Get a short summary of the message body
- *
- * Will return `null` if the response is not printable.
- *
- * @param MessageInterface $message The message to get the body summary
- * @param int $truncateAt The maximum allowed size of the summary
- *
- * @return null|string
- */
-function get_message_body_summary(MessageInterface $message, $truncateAt = 120)
-{
- $body = $message->getBody();
-
- if (!$body->isSeekable() || !$body->isReadable()) {
- return null;
- }
-
- $size = $body->getSize();
-
- if ($size === 0) {
- return null;
- }
-
- $summary = $body->read($truncateAt);
- $body->rewind();
-
- if ($size > $truncateAt) {
- $summary .= ' (truncated...)';
- }
-
- // Matches any printable character, including unicode characters:
- // letters, marks, numbers, punctuation, spacing, and separators.
- if (preg_match('/[^\pL\pM\pN\pP\pS\pZ\n\r\t]/', $summary)) {
- return null;
- }
-
- return $summary;
-}
-
-/** @internal */
-function _caseless_remove($keys, array $data)
-{
- $result = [];
-
- foreach ($keys as &$key) {
- $key = strtolower($key);
- }
-
- foreach ($data as $k => $v) {
- if (!in_array(strtolower($k), $keys)) {
- $result[$k] = $v;
- }
- }
-
- return $result;
-}
diff --git a/vendor/guzzlehttp/psr7/src/functions_include.php b/vendor/guzzlehttp/psr7/src/functions_include.php
deleted file mode 100644
index 96a4a83..0000000
--- a/vendor/guzzlehttp/psr7/src/functions_include.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-
-// Don't redefine the functions if included multiple times.
-if (!function_exists('GuzzleHttp\Psr7\str')) {
- require __DIR__ . '/functions.php';
-}
diff --git a/vendor/paragonie/random_compat/LICENSE b/vendor/paragonie/random_compat/LICENSE
deleted file mode 100644
index 45c7017..0000000
--- a/vendor/paragonie/random_compat/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Paragon Initiative Enterprises
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
diff --git a/vendor/paragonie/random_compat/build-phar.sh b/vendor/paragonie/random_compat/build-phar.sh
deleted file mode 100644
index b4a5ba3..0000000
--- a/vendor/paragonie/random_compat/build-phar.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env bash
-
-basedir=$( dirname $( readlink -f ${BASH_SOURCE[0]} ) )
-
-php -dphar.readonly=0 "$basedir/other/build_phar.php" $* \ No newline at end of file
diff --git a/vendor/paragonie/random_compat/composer.json b/vendor/paragonie/random_compat/composer.json
deleted file mode 100644
index 1fa8de9..0000000
--- a/vendor/paragonie/random_compat/composer.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "name": "paragonie/random_compat",
- "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
- "keywords": [
- "csprng",
- "random",
- "polyfill",
- "pseudorandom"
- ],
- "license": "MIT",
- "type": "library",
- "authors": [
- {
- "name": "Paragon Initiative Enterprises",
- "email": "[email protected]",
- "homepage": "https://paragonie.com"
- }
- ],
- "support": {
- "issues": "https://github.com/paragonie/random_compat/issues",
- "email": "[email protected]",
- "source": "https://github.com/paragonie/random_compat"
- },
- "require": {
- "php": "^7"
- },
- "require-dev": {
- "vimeo/psalm": "^1",
- "phpunit/phpunit": "4.*|5.*"
- },
- "suggest": {
- "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
- }
-}
diff --git a/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey b/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey
deleted file mode 100644
index eb50ebf..0000000
--- a/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey
+++ /dev/null
@@ -1,5 +0,0 @@
------BEGIN PUBLIC KEY-----
-MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEEd+wCqJDrx5B4OldM0dQE0ZMX+lx1ZWm
-pui0SUqD4G29L3NGsz9UhJ/0HjBdbnkhIK5xviT0X5vtjacF6ajgcCArbTB+ds+p
-+h7Q084NuSuIpNb6YPfoUFgC/CL9kAoc
------END PUBLIC KEY-----
diff --git a/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc b/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc
deleted file mode 100644
index 6a1d7f3..0000000
--- a/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc
+++ /dev/null
@@ -1,11 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v2.0.22 (MingW32)
-
-iQEcBAABAgAGBQJWtW1hAAoJEGuXocKCZATaJf0H+wbZGgskK1dcRTsuVJl9IWip
-QwGw/qIKI280SD6/ckoUMxKDCJiFuPR14zmqnS36k7N5UNPnpdTJTS8T11jttSpg
-1LCmgpbEIpgaTah+cELDqFCav99fS+bEiAL5lWDAHBTE/XPjGVCqeehyPYref4IW
-NDBIEsvnHPHPLsn6X5jq4+Yj5oUixgxaMPiR+bcO4Sh+RzOVB6i2D0upWfRXBFXA
-NNnsg9/zjvoC7ZW73y9uSH+dPJTt/Vgfeiv52/v41XliyzbUyLalf02GNPY+9goV
-JHG1ulEEBJOCiUD9cE1PUIJwHA/HqyhHIvV350YoEFiHl8iSwm7SiZu5kPjaq74=
-=B6+8
------END PGP SIGNATURE-----
diff --git a/vendor/paragonie/random_compat/lib/random.php b/vendor/paragonie/random_compat/lib/random.php
deleted file mode 100644
index c7731a5..0000000
--- a/vendor/paragonie/random_compat/lib/random.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library
- * for using the new PHP 7 random_* API in PHP 5 projects
- *
- * @version 2.99.99
- * @released 2018-06-06
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-// NOP
diff --git a/vendor/paragonie/random_compat/other/build_phar.php b/vendor/paragonie/random_compat/other/build_phar.php
deleted file mode 100644
index 70ef4b2..0000000
--- a/vendor/paragonie/random_compat/other/build_phar.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-$dist = dirname(__DIR__).'/dist';
-if (!is_dir($dist)) {
- mkdir($dist, 0755);
-}
-if (file_exists($dist.'/random_compat.phar')) {
- unlink($dist.'/random_compat.phar');
-}
-$phar = new Phar(
- $dist.'/random_compat.phar',
- FilesystemIterator::CURRENT_AS_FILEINFO | \FilesystemIterator::KEY_AS_FILENAME,
- 'random_compat.phar'
-);
-rename(
- dirname(__DIR__).'/lib/random.php',
- dirname(__DIR__).'/lib/index.php'
-);
-$phar->buildFromDirectory(dirname(__DIR__).'/lib');
-rename(
- dirname(__DIR__).'/lib/index.php',
- dirname(__DIR__).'/lib/random.php'
-);
-
-/**
- * If we pass an (optional) path to a private key as a second argument, we will
- * sign the Phar with OpenSSL.
- *
- * If you leave this out, it will produce an unsigned .phar!
- */
-if ($argc > 1) {
- if (!@is_readable($argv[1])) {
- echo 'Could not read the private key file:', $argv[1], "\n";
- exit(255);
- }
- $pkeyFile = file_get_contents($argv[1]);
-
- $private = openssl_get_privatekey($pkeyFile);
- if ($private !== false) {
- $pkey = '';
- openssl_pkey_export($private, $pkey);
- $phar->setSignatureAlgorithm(Phar::OPENSSL, $pkey);
-
- /**
- * Save the corresponding public key to the file
- */
- if (!@is_readable($dist.'/random_compat.phar.pubkey')) {
- $details = openssl_pkey_get_details($private);
- file_put_contents(
- $dist.'/random_compat.phar.pubkey',
- $details['key']
- );
- }
- } else {
- echo 'An error occurred reading the private key from OpenSSL.', "\n";
- exit(255);
- }
-}
diff --git a/vendor/paragonie/random_compat/psalm-autoload.php b/vendor/paragonie/random_compat/psalm-autoload.php
deleted file mode 100644
index d71d1b8..0000000
--- a/vendor/paragonie/random_compat/psalm-autoload.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-
-require_once 'lib/byte_safe_strings.php';
-require_once 'lib/cast_to_int.php';
-require_once 'lib/error_polyfill.php';
-require_once 'other/ide_stubs/libsodium.php';
-require_once 'lib/random.php';
-
-$int = random_int(0, 65536);
diff --git a/vendor/paragonie/random_compat/psalm.xml b/vendor/paragonie/random_compat/psalm.xml
deleted file mode 100644
index 596d99d..0000000
--- a/vendor/paragonie/random_compat/psalm.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<psalm
- autoloader="psalm-autoload.php"
- stopOnFirstError="false"
- useDocblockTypes="true"
->
- <projectFiles>
- <directory name="lib" />
- </projectFiles>
- <issueHandlers>
- <RedundantConditionGivenDocblockType errorLevel="info" />
- <UnresolvableInclude errorLevel="info" />
- <DuplicateClass errorLevel="info" />
- <InvalidOperand errorLevel="info" />
- <UndefinedConstant errorLevel="info" />
- <MissingReturnType errorLevel="info" />
- <InvalidReturnType errorLevel="info" />
- </issueHandlers>
-</psalm>
diff --git a/vendor/psr/http-message/CHANGELOG.md b/vendor/psr/http-message/CHANGELOG.md
deleted file mode 100644
index 74b1ef9..0000000
--- a/vendor/psr/http-message/CHANGELOG.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file, in reverse chronological order by release.
-
-## 1.0.1 - 2016-08-06
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Updated all `@return self` annotation references in interfaces to use
- `@return static`, which more closelly follows the semantics of the
- specification.
-- Updated the `MessageInterface::getHeaders()` return annotation to use the
- value `string[][]`, indicating the format is a nested array of strings.
-- Updated the `@link` annotation for `RequestInterface::withRequestTarget()`
- to point to the correct section of RFC 7230.
-- Updated the `ServerRequestInterface::withUploadedFiles()` parameter annotation
- to add the parameter name (`$uploadedFiles`).
-- Updated a `@throws` annotation for the `UploadedFileInterface::moveTo()`
- method to correctly reference the method parameter (it was referencing an
- incorrect parameter name previously).
-
-## 1.0.0 - 2016-05-18
-
-Initial stable release; reflects accepted PSR-7 specification.
diff --git a/vendor/psr/http-message/LICENSE b/vendor/psr/http-message/LICENSE
deleted file mode 100644
index c2d8e45..0000000
--- a/vendor/psr/http-message/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2014 PHP Framework Interoperability Group
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/psr/http-message/README.md b/vendor/psr/http-message/README.md
deleted file mode 100644
index 2818533..0000000
--- a/vendor/psr/http-message/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-PSR Http Message
-================
-
-This repository holds all interfaces/classes/traits related to
-[PSR-7](http://www.php-fig.org/psr/psr-7/).
-
-Note that this is not a HTTP message implementation of its own. It is merely an
-interface that describes a HTTP message. See the specification for more details.
-
-Usage
------
-
-We'll certainly need some stuff in here. \ No newline at end of file
diff --git a/vendor/psr/http-message/composer.json b/vendor/psr/http-message/composer.json
deleted file mode 100644
index b0d2937..0000000
--- a/vendor/psr/http-message/composer.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "name": "psr/http-message",
- "description": "Common interface for HTTP messages",
- "keywords": ["psr", "psr-7", "http", "http-message", "request", "response"],
- "homepage": "https://github.com/php-fig/http-message",
- "license": "MIT",
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "require": {
- "php": ">=5.3.0"
- },
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Message\\": "src/"
- }
- },
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- }
-}
diff --git a/vendor/psr/http-message/src/MessageInterface.php b/vendor/psr/http-message/src/MessageInterface.php
deleted file mode 100644
index dd46e5e..0000000
--- a/vendor/psr/http-message/src/MessageInterface.php
+++ /dev/null
@@ -1,187 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * HTTP messages consist of requests from a client to a server and responses
- * from a server to a client. This interface defines the methods common to
- * each.
- *
- * Messages are considered immutable; all methods that might change state MUST
- * be implemented such that they retain the internal state of the current
- * message and return an instance that contains the changed state.
- *
- * @link http://www.ietf.org/rfc/rfc7230.txt
- * @link http://www.ietf.org/rfc/rfc7231.txt
- */
-interface MessageInterface
-{
- /**
- * Retrieves the HTTP protocol version as a string.
- *
- * The string MUST contain only the HTTP version number (e.g., "1.1", "1.0").
- *
- * @return string HTTP protocol version.
- */
- public function getProtocolVersion();
-
- /**
- * Return an instance with the specified HTTP protocol version.
- *
- * The version string MUST contain only the HTTP version number (e.g.,
- * "1.1", "1.0").
- *
- * This method MUST be implemented in such a way as to retain the
- * immutability of the message, and MUST return an instance that has the
- * new protocol version.
- *
- * @param string $version HTTP protocol version
- * @return static
- */
- public function withProtocolVersion($version);
-
- /**
- * Retrieves all message header values.
- *
- * The keys represent the header name as it will be sent over the wire, and
- * each value is an array of strings associated with the header.
- *
- * // Represent the headers as a string
- * foreach ($message->getHeaders() as $name => $values) {
- * echo $name . ": " . implode(", ", $values);
- * }
- *
- * // Emit headers iteratively:
- * foreach ($message->getHeaders() as $name => $values) {
- * foreach ($values as $value) {
- * header(sprintf('%s: %s', $name, $value), false);
- * }
- * }
- *
- * While header names are not case-sensitive, getHeaders() will preserve the
- * exact case in which headers were originally specified.
- *
- * @return string[][] Returns an associative array of the message's headers. Each
- * key MUST be a header name, and each value MUST be an array of strings
- * for that header.
- */
- public function getHeaders();
-
- /**
- * Checks if a header exists by the given case-insensitive name.
- *
- * @param string $name Case-insensitive header field name.
- * @return bool Returns true if any header names match the given header
- * name using a case-insensitive string comparison. Returns false if
- * no matching header name is found in the message.
- */
- public function hasHeader($name);
-
- /**
- * Retrieves a message header value by the given case-insensitive name.
- *
- * This method returns an array of all the header values of the given
- * case-insensitive header name.
- *
- * If the header does not appear in the message, this method MUST return an
- * empty array.
- *
- * @param string $name Case-insensitive header field name.
- * @return string[] An array of string values as provided for the given
- * header. If the header does not appear in the message, this method MUST
- * return an empty array.
- */
- public function getHeader($name);
-
- /**
- * Retrieves a comma-separated string of the values for a single header.
- *
- * This method returns all of the header values of the given
- * case-insensitive header name as a string concatenated together using
- * a comma.
- *
- * NOTE: Not all header values may be appropriately represented using
- * comma concatenation. For such headers, use getHeader() instead
- * and supply your own delimiter when concatenating.
- *
- * If the header does not appear in the message, this method MUST return
- * an empty string.
- *
- * @param string $name Case-insensitive header field name.
- * @return string A string of values as provided for the given header
- * concatenated together using a comma. If the header does not appear in
- * the message, this method MUST return an empty string.
- */
- public function getHeaderLine($name);
-
- /**
- * Return an instance with the provided value replacing the specified header.
- *
- * While header names are case-insensitive, the casing of the header will
- * be preserved by this function, and returned from getHeaders().
- *
- * This method MUST be implemented in such a way as to retain the
- * immutability of the message, and MUST return an instance that has the
- * new and/or updated header and value.
- *
- * @param string $name Case-insensitive header field name.
- * @param string|string[] $value Header value(s).
- * @return static
- * @throws \InvalidArgumentException for invalid header names or values.
- */
- public function withHeader($name, $value);
-
- /**
- * Return an instance with the specified header appended with the given value.
- *
- * Existing values for the specified header will be maintained. The new
- * value(s) will be appended to the existing list. If the header did not
- * exist previously, it will be added.
- *
- * This method MUST be implemented in such a way as to retain the
- * immutability of the message, and MUST return an instance that has the
- * new header and/or value.
- *
- * @param string $name Case-insensitive header field name to add.
- * @param string|string[] $value Header value(s).
- * @return static
- * @throws \InvalidArgumentException for invalid header names or values.
- */
- public function withAddedHeader($name, $value);
-
- /**
- * Return an instance without the specified header.
- *
- * Header resolution MUST be done without case-sensitivity.
- *
- * This method MUST be implemented in such a way as to retain the
- * immutability of the message, and MUST return an instance that removes
- * the named header.
- *
- * @param string $name Case-insensitive header field name to remove.
- * @return static
- */
- public function withoutHeader($name);
-
- /**
- * Gets the body of the message.
- *
- * @return StreamInterface Returns the body as a stream.
- */
- public function getBody();
-
- /**
- * Return an instance with the specified message body.
- *
- * The body MUST be a StreamInterface object.
- *
- * This method MUST be implemented in such a way as to retain the
- * immutability of the message, and MUST return a new instance that has the
- * new body stream.
- *
- * @param StreamInterface $body Body.
- * @return static
- * @throws \InvalidArgumentException When the body is not valid.
- */
- public function withBody(StreamInterface $body);
-}
diff --git a/vendor/psr/http-message/src/RequestInterface.php b/vendor/psr/http-message/src/RequestInterface.php
deleted file mode 100644
index a96d4fd..0000000
--- a/vendor/psr/http-message/src/RequestInterface.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Representation of an outgoing, client-side request.
- *
- * Per the HTTP specification, this interface includes properties for
- * each of the following:
- *
- * - Protocol version
- * - HTTP method
- * - URI
- * - Headers
- * - Message body
- *
- * During construction, implementations MUST attempt to set the Host header from
- * a provided URI if no Host header is provided.
- *
- * Requests are considered immutable; all methods that might change state MUST
- * be implemented such that they retain the internal state of the current
- * message and return an instance that contains the changed state.
- */
-interface RequestInterface extends MessageInterface
-{
- /**
- * Retrieves the message's request target.
- *
- * Retrieves the message's request-target either as it will appear (for
- * clients), as it appeared at request (for servers), or as it was
- * specified for the instance (see withRequestTarget()).
- *
- * In most cases, this will be the origin-form of the composed URI,
- * unless a value was provided to the concrete implementation (see
- * withRequestTarget() below).
- *
- * If no URI is available, and no request-target has been specifically
- * provided, this method MUST return the string "/".
- *
- * @return string
- */
- public function getRequestTarget();
-
- /**
- * Return an instance with the specific request-target.
- *
- * If the request needs a non-origin-form request-target — e.g., for
- * specifying an absolute-form, authority-form, or asterisk-form —
- * this method may be used to create an instance with the specified
- * request-target, verbatim.
- *
- * This method MUST be implemented in such a way as to retain the
- * immutability of the message, and MUST return an instance that has the
- * changed request target.
- *
- * @link http://tools.ietf.org/html/rfc7230#section-5.3 (for the various
- * request-target forms allowed in request messages)
- * @param mixed $requestTarget
- * @return static
- */
- public function withRequestTarget($requestTarget);
-
- /**
- * Retrieves the HTTP method of the request.
- *
- * @return string Returns the request method.
- */
- public function getMethod();
-
- /**
- * Return an instance with the provided HTTP method.
- *
- * While HTTP method names are typically all uppercase characters, HTTP
- * method names are case-sensitive and thus implementations SHOULD NOT
- * modify the given string.
- *
- * This method MUST be implemented in such a way as to retain the
- * immutability of the message, and MUST return an instance that has the
- * changed request method.
- *
- * @param string $method Case-sensitive method.
- * @return static
- * @throws \InvalidArgumentException for invalid HTTP methods.
- */
- public function withMethod($method);
-
- /**
- * Retrieves the URI instance.
- *
- * This method MUST return a UriInterface instance.
- *
- * @link http://tools.ietf.org/html/rfc3986#section-4.3
- * @return UriInterface Returns a UriInterface instance
- * representing the URI of the request.
- */
- public function getUri();
-
- /**
- * Returns an instance with the provided URI.
- *
- * This method MUST update the Host header of the returned request by
- * default if the URI contains a host component. If the URI does not
- * contain a host component, any pre-existing Host header MUST be carried
- * over to the returned request.
- *
- * You can opt-in to preserving the original state of the Host header by
- * setting `$preserveHost` to `true`. When `$preserveHost` is set to
- * `true`, this method interacts with the Host header in the following ways:
- *
- * - If the Host header is missing or empty, and the new URI contains
- * a host component, this method MUST update the Host header in the returned
- * request.
- * - If the Host header is missing or empty, and the new URI does not contain a
- * host component, this method MUST NOT update the Host header in the returned
- * request.
- * - If a Host header is present and non-empty, this method MUST NOT update
- * the Host header in the returned request.
- *
- * This method MUST be implemented in such a way as to retain the
- * immutability of the message, and MUST return an instance that has the
- * new UriInterface instance.
- *
- * @link http://tools.ietf.org/html/rfc3986#section-4.3
- * @param UriInterface $uri New request URI to use.
- * @param bool $preserveHost Preserve the original state of the Host header.
- * @return static
- */
- public function withUri(UriInterface $uri, $preserveHost = false);
-}
diff --git a/vendor/psr/http-message/src/ResponseInterface.php b/vendor/psr/http-message/src/ResponseInterface.php
deleted file mode 100644
index c306514..0000000
--- a/vendor/psr/http-message/src/ResponseInterface.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Representation of an outgoing, server-side response.
- *
- * Per the HTTP specification, this interface includes properties for
- * each of the following:
- *
- * - Protocol version
- * - Status code and reason phrase
- * - Headers
- * - Message body
- *
- * Responses are considered immutable; all methods that might change state MUST
- * be implemented such that they retain the internal state of the current
- * message and return an instance that contains the changed state.
- */
-interface ResponseInterface extends MessageInterface
-{
- /**
- * Gets the response status code.
- *
- * The status code is a 3-digit integer result code of the server's attempt
- * to understand and satisfy the request.
- *
- * @return int Status code.
- */
- public function getStatusCode();
-
- /**
- * Return an instance with the specified status code and, optionally, reason phrase.
- *
- * If no reason phrase is specified, implementations MAY choose to default
- * to the RFC 7231 or IANA recommended reason phrase for the response's
- * status code.
- *
- * This method MUST be implemented in such a way as to retain the
- * immutability of the message, and MUST return an instance that has the
- * updated status and reason phrase.
- *
- * @link http://tools.ietf.org/html/rfc7231#section-6
- * @link http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
- * @param int $code The 3-digit integer result code to set.
- * @param string $reasonPhrase The reason phrase to use with the
- * provided status code; if none is provided, implementations MAY
- * use the defaults as suggested in the HTTP specification.
- * @return static
- * @throws \InvalidArgumentException For invalid status code arguments.
- */
- public function withStatus($code, $reasonPhrase = '');
-
- /**
- * Gets the response reason phrase associated with the status code.
- *
- * Because a reason phrase is not a required element in a response
- * status line, the reason phrase value MAY be null. Implementations MAY
- * choose to return the default RFC 7231 recommended reason phrase (or those
- * listed in the IANA HTTP Status Code Registry) for the response's
- * status code.
- *
- * @link http://tools.ietf.org/html/rfc7231#section-6
- * @link http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
- * @return string Reason phrase; must return an empty string if none present.
- */
- public function getReasonPhrase();
-}
diff --git a/vendor/psr/http-message/src/ServerRequestInterface.php b/vendor/psr/http-message/src/ServerRequestInterface.php
deleted file mode 100644
index 0251234..0000000
--- a/vendor/psr/http-message/src/ServerRequestInterface.php
+++ /dev/null
@@ -1,261 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Representation of an incoming, server-side HTTP request.
- *
- * Per the HTTP specification, this interface includes properties for
- * each of the following:
- *
- * - Protocol version
- * - HTTP method
- * - URI
- * - Headers
- * - Message body
- *
- * Additionally, it encapsulates all data as it has arrived to the
- * application from the CGI and/or PHP environment, including:
- *
- * - The values represented in $_SERVER.
- * - Any cookies provided (generally via $_COOKIE)
- * - Query string arguments (generally via $_GET, or as parsed via parse_str())
- * - Upload files, if any (as represented by $_FILES)
- * - Deserialized body parameters (generally from $_POST)
- *
- * $_SERVER values MUST be treated as immutable, as they represent application
- * state at the time of request; as such, no methods are provided to allow
- * modification of those values. The other values provide such methods, as they
- * can be restored from $_SERVER or the request body, and may need treatment
- * during the application (e.g., body parameters may be deserialized based on
- * content type).
- *
- * Additionally, this interface recognizes the utility of introspecting a
- * request to derive and match additional parameters (e.g., via URI path
- * matching, decrypting cookie values, deserializing non-form-encoded body
- * content, matching authorization headers to users, etc). These parameters
- * are stored in an "attributes" property.
- *
- * Requests are considered immutable; all methods that might change state MUST
- * be implemented such that they retain the internal state of the current
- * message and return an instance that contains the changed state.
- */
-interface ServerRequestInterface extends RequestInterface
-{
- /**
- * Retrieve server parameters.
- *
- * Retrieves data related to the incoming request environment,
- * typically derived from PHP's $_SERVER superglobal. The data IS NOT
- * REQUIRED to originate from $_SERVER.
- *
- * @return array
- */
- public function getServerParams();
-
- /**
- * Retrieve cookies.
- *
- * Retrieves cookies sent by the client to the server.
- *
- * The data MUST be compatible with the structure of the $_COOKIE
- * superglobal.
- *
- * @return array
- */
- public function getCookieParams();
-
- /**
- * Return an instance with the specified cookies.
- *
- * The data IS NOT REQUIRED to come from the $_COOKIE superglobal, but MUST
- * be compatible with the structure of $_COOKIE. Typically, this data will
- * be injected at instantiation.
- *
- * This method MUST NOT update the related Cookie header of the request
- * instance, nor related values in the server params.
- *
- * This method MUST be implemented in such a way as to retain the
- * immutability of the message, and MUST return an instance that has the
- * updated cookie values.
- *
- * @param array $cookies Array of key/value pairs representing cookies.
- * @return static
- */
- public function withCookieParams(array $cookies);
-
- /**
- * Retrieve query string arguments.
- *
- * Retrieves the deserialized query string arguments, if any.
- *
- * Note: the query params might not be in sync with the URI or server
- * params. If you need to ensure you are only getting the original
- * values, you may need to parse the query string from `getUri()->getQuery()`
- * or from the `QUERY_STRING` server param.
- *
- * @return array
- */
- public function getQueryParams();
-
- /**
- * Return an instance with the specified query string arguments.
- *
- * These values SHOULD remain immutable over the course of the incoming
- * request. They MAY be injected during instantiation, such as from PHP's
- * $_GET superglobal, or MAY be derived from some other value such as the
- * URI. In cases where the arguments are parsed from the URI, the data
- * MUST be compatible with what PHP's parse_str() would return for
- * purposes of how duplicate query parameters are handled, and how nested
- * sets are handled.
- *
- * Setting query string arguments MUST NOT change the URI stored by the
- * request, nor the values in the server params.
- *
- * This method MUST be implemented in such a way as to retain the
- * immutability of the message, and MUST return an instance that has the
- * updated query string arguments.
- *
- * @param array $query Array of query string arguments, typically from
- * $_GET.
- * @return static
- */
- public function withQueryParams(array $query);
-
- /**
- * Retrieve normalized file upload data.
- *
- * This method returns upload metadata in a normalized tree, with each leaf
- * an instance of Psr\Http\Message\UploadedFileInterface.
- *
- * These values MAY be prepared from $_FILES or the message body during
- * instantiation, or MAY be injected via withUploadedFiles().
- *
- * @return array An array tree of UploadedFileInterface instances; an empty
- * array MUST be returned if no data is present.
- */
- public function getUploadedFiles();
-
- /**
- * Create a new instance with the specified uploaded files.
- *
- * This method MUST be implemented in such a way as to retain the
- * immutability of the message, and MUST return an instance that has the
- * updated body parameters.
- *
- * @param array $uploadedFiles An array tree of UploadedFileInterface instances.
- * @return static
- * @throws \InvalidArgumentException if an invalid structure is provided.
- */
- public function withUploadedFiles(array $uploadedFiles);
-
- /**
- * Retrieve any parameters provided in the request body.
- *
- * If the request Content-Type is either application/x-www-form-urlencoded
- * or multipart/form-data, and the request method is POST, this method MUST
- * return the contents of $_POST.
- *
- * Otherwise, this method may return any results of deserializing
- * the request body content; as parsing returns structured content, the
- * potential types MUST be arrays or objects only. A null value indicates
- * the absence of body content.
- *
- * @return null|array|object The deserialized body parameters, if any.
- * These will typically be an array or object.
- */
- public function getParsedBody();
-
- /**
- * Return an instance with the specified body parameters.
- *
- * These MAY be injected during instantiation.
- *
- * If the request Content-Type is either application/x-www-form-urlencoded
- * or multipart/form-data, and the request method is POST, use this method
- * ONLY to inject the contents of $_POST.
- *
- * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of
- * deserializing the request body content. Deserialization/parsing returns
- * structured data, and, as such, this method ONLY accepts arrays or objects,
- * or a null value if nothing was available to parse.
- *
- * As an example, if content negotiation determines that the request data
- * is a JSON payload, this method could be used to create a request
- * instance with the deserialized parameters.
- *
- * This method MUST be implemented in such a way as to retain the
- * immutability of the message, and MUST return an instance that has the
- * updated body parameters.
- *
- * @param null|array|object $data The deserialized body data. This will
- * typically be in an array or object.
- * @return static
- * @throws \InvalidArgumentException if an unsupported argument type is
- * provided.
- */
- public function withParsedBody($data);
-
- /**
- * Retrieve attributes derived from the request.
- *
- * The request "attributes" may be used to allow injection of any
- * parameters derived from the request: e.g., the results of path
- * match operations; the results of decrypting cookies; the results of
- * deserializing non-form-encoded message bodies; etc. Attributes
- * will be application and request specific, and CAN be mutable.
- *
- * @return array Attributes derived from the request.
- */
- public function getAttributes();
-
- /**
- * Retrieve a single derived request attribute.
- *
- * Retrieves a single derived request attribute as described in
- * getAttributes(). If the attribute has not been previously set, returns
- * the default value as provided.
- *
- * This method obviates the need for a hasAttribute() method, as it allows
- * specifying a default value to return if the attribute is not found.
- *
- * @see getAttributes()
- * @param string $name The attribute name.
- * @param mixed $default Default value to return if the attribute does not exist.
- * @return mixed
- */
- public function getAttribute($name, $default = null);
-
- /**
- * Return an instance with the specified derived request attribute.
- *
- * This method allows setting a single derived request attribute as
- * described in getAttributes().
- *
- * This method MUST be implemented in such a way as to retain the
- * immutability of the message, and MUST return an instance that has the
- * updated attribute.
- *
- * @see getAttributes()
- * @param string $name The attribute name.
- * @param mixed $value The value of the attribute.
- * @return static
- */
- public function withAttribute($name, $value);
-
- /**
- * Return an instance that removes the specified derived request attribute.
- *
- * This method allows removing a single derived request attribute as
- * described in getAttributes().
- *
- * This method MUST be implemented in such a way as to retain the
- * immutability of the message, and MUST return an instance that removes
- * the attribute.
- *
- * @see getAttributes()
- * @param string $name The attribute name.
- * @return static
- */
- public function withoutAttribute($name);
-}
diff --git a/vendor/psr/http-message/src/StreamInterface.php b/vendor/psr/http-message/src/StreamInterface.php
deleted file mode 100644
index f68f391..0000000
--- a/vendor/psr/http-message/src/StreamInterface.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Describes a data stream.
- *
- * Typically, an instance will wrap a PHP stream; this interface provides
- * a wrapper around the most common operations, including serialization of
- * the entire stream to a string.
- */
-interface StreamInterface
-{
- /**
- * Reads all data from the stream into a string, from the beginning to end.
- *
- * This method MUST attempt to seek to the beginning of the stream before
- * reading data and read the stream until the end is reached.
- *
- * Warning: This could attempt to load a large amount of data into memory.
- *
- * This method MUST NOT raise an exception in order to conform with PHP's
- * string casting operations.
- *
- * @see http://php.net/manual/en/language.oop5.magic.php#object.tostring
- * @return string
- */
- public function __toString();
-
- /**
- * Closes the stream and any underlying resources.
- *
- * @return void
- */
- public function close();
-
- /**
- * Separates any underlying resources from the stream.
- *
- * After the stream has been detached, the stream is in an unusable state.
- *
- * @return resource|null Underlying PHP stream, if any
- */
- public function detach();
-
- /**
- * Get the size of the stream if known.
- *
- * @return int|null Returns the size in bytes if known, or null if unknown.
- */
- public function getSize();
-
- /**
- * Returns the current position of the file read/write pointer
- *
- * @return int Position of the file pointer
- * @throws \RuntimeException on error.
- */
- public function tell();
-
- /**
- * Returns true if the stream is at the end of the stream.
- *
- * @return bool
- */
- public function eof();
-
- /**
- * Returns whether or not the stream is seekable.
- *
- * @return bool
- */
- public function isSeekable();
-
- /**
- * Seek to a position in the stream.
- *
- * @link http://www.php.net/manual/en/function.fseek.php
- * @param int $offset Stream offset
- * @param int $whence Specifies how the cursor position will be calculated
- * based on the seek offset. Valid values are identical to the built-in
- * PHP $whence values for `fseek()`. SEEK_SET: Set position equal to
- * offset bytes SEEK_CUR: Set position to current location plus offset
- * SEEK_END: Set position to end-of-stream plus offset.
- * @throws \RuntimeException on failure.
- */
- public function seek($offset, $whence = SEEK_SET);
-
- /**
- * Seek to the beginning of the stream.
- *
- * If the stream is not seekable, this method will raise an exception;
- * otherwise, it will perform a seek(0).
- *
- * @see seek()
- * @link http://www.php.net/manual/en/function.fseek.php
- * @throws \RuntimeException on failure.
- */
- public function rewind();
-
- /**
- * Returns whether or not the stream is writable.
- *
- * @return bool
- */
- public function isWritable();
-
- /**
- * Write data to the stream.
- *
- * @param string $string The string that is to be written.
- * @return int Returns the number of bytes written to the stream.
- * @throws \RuntimeException on failure.
- */
- public function write($string);
-
- /**
- * Returns whether or not the stream is readable.
- *
- * @return bool
- */
- public function isReadable();
-
- /**
- * Read data from the stream.
- *
- * @param int $length Read up to $length bytes from the object and return
- * them. Fewer than $length bytes may be returned if underlying stream
- * call returns fewer bytes.
- * @return string Returns the data read from the stream, or an empty string
- * if no bytes are available.
- * @throws \RuntimeException if an error occurs.
- */
- public function read($length);
-
- /**
- * Returns the remaining contents in a string
- *
- * @return string
- * @throws \RuntimeException if unable to read or an error occurs while
- * reading.
- */
- public function getContents();
-
- /**
- * Get stream metadata as an associative array or retrieve a specific key.
- *
- * The keys returned are identical to the keys returned from PHP's
- * stream_get_meta_data() function.
- *
- * @link http://php.net/manual/en/function.stream-get-meta-data.php
- * @param string $key Specific metadata to retrieve.
- * @return array|mixed|null Returns an associative array if no key is
- * provided. Returns a specific key value if a key is provided and the
- * value is found, or null if the key is not found.
- */
- public function getMetadata($key = null);
-}
diff --git a/vendor/psr/http-message/src/UploadedFileInterface.php b/vendor/psr/http-message/src/UploadedFileInterface.php
deleted file mode 100644
index f8a6901..0000000
--- a/vendor/psr/http-message/src/UploadedFileInterface.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Value object representing a file uploaded through an HTTP request.
- *
- * Instances of this interface are considered immutable; all methods that
- * might change state MUST be implemented such that they retain the internal
- * state of the current instance and return an instance that contains the
- * changed state.
- */
-interface UploadedFileInterface
-{
- /**
- * Retrieve a stream representing the uploaded file.
- *
- * This method MUST return a StreamInterface instance, representing the
- * uploaded file. The purpose of this method is to allow utilizing native PHP
- * stream functionality to manipulate the file upload, such as
- * stream_copy_to_stream() (though the result will need to be decorated in a
- * native PHP stream wrapper to work with such functions).
- *
- * If the moveTo() method has been called previously, this method MUST raise
- * an exception.
- *
- * @return StreamInterface Stream representation of the uploaded file.
- * @throws \RuntimeException in cases when no stream is available or can be
- * created.
- */
- public function getStream();
-
- /**
- * Move the uploaded file to a new location.
- *
- * Use this method as an alternative to move_uploaded_file(). This method is
- * guaranteed to work in both SAPI and non-SAPI environments.
- * Implementations must determine which environment they are in, and use the
- * appropriate method (move_uploaded_file(), rename(), or a stream
- * operation) to perform the operation.
- *
- * $targetPath may be an absolute path, or a relative path. If it is a
- * relative path, resolution should be the same as used by PHP's rename()
- * function.
- *
- * The original file or stream MUST be removed on completion.
- *
- * If this method is called more than once, any subsequent calls MUST raise
- * an exception.
- *
- * When used in an SAPI environment where $_FILES is populated, when writing
- * files via moveTo(), is_uploaded_file() and move_uploaded_file() SHOULD be
- * used to ensure permissions and upload status are verified correctly.
- *
- * If you wish to move to a stream, use getStream(), as SAPI operations
- * cannot guarantee writing to stream destinations.
- *
- * @see http://php.net/is_uploaded_file
- * @see http://php.net/move_uploaded_file
- * @param string $targetPath Path to which to move the uploaded file.
- * @throws \InvalidArgumentException if the $targetPath specified is invalid.
- * @throws \RuntimeException on any error during the move operation, or on
- * the second or subsequent call to the method.
- */
- public function moveTo($targetPath);
-
- /**
- * Retrieve the file size.
- *
- * Implementations SHOULD return the value stored in the "size" key of
- * the file in the $_FILES array if available, as PHP calculates this based
- * on the actual size transmitted.
- *
- * @return int|null The file size in bytes or null if unknown.
- */
- public function getSize();
-
- /**
- * Retrieve the error associated with the uploaded file.
- *
- * The return value MUST be one of PHP's UPLOAD_ERR_XXX constants.
- *
- * If the file was uploaded successfully, this method MUST return
- * UPLOAD_ERR_OK.
- *
- * Implementations SHOULD return the value stored in the "error" key of
- * the file in the $_FILES array.
- *
- * @see http://php.net/manual/en/features.file-upload.errors.php
- * @return int One of PHP's UPLOAD_ERR_XXX constants.
- */
- public function getError();
-
- /**
- * Retrieve the filename sent by the client.
- *
- * Do not trust the value returned by this method. A client could send
- * a malicious filename with the intention to corrupt or hack your
- * application.
- *
- * Implementations SHOULD return the value stored in the "name" key of
- * the file in the $_FILES array.
- *
- * @return string|null The filename sent by the client or null if none
- * was provided.
- */
- public function getClientFilename();
-
- /**
- * Retrieve the media type sent by the client.
- *
- * Do not trust the value returned by this method. A client could send
- * a malicious media type with the intention to corrupt or hack your
- * application.
- *
- * Implementations SHOULD return the value stored in the "type" key of
- * the file in the $_FILES array.
- *
- * @return string|null The media type sent by the client or null if none
- * was provided.
- */
- public function getClientMediaType();
-}
diff --git a/vendor/psr/http-message/src/UriInterface.php b/vendor/psr/http-message/src/UriInterface.php
deleted file mode 100644
index 9d7ab9e..0000000
--- a/vendor/psr/http-message/src/UriInterface.php
+++ /dev/null
@@ -1,323 +0,0 @@
-<?php
-namespace Psr\Http\Message;
-
-/**
- * Value object representing a URI.
- *
- * This interface is meant to represent URIs according to RFC 3986 and to
- * provide methods for most common operations. Additional functionality for
- * working with URIs can be provided on top of the interface or externally.
- * Its primary use is for HTTP requests, but may also be used in other
- * contexts.
- *
- * Instances of this interface are considered immutable; all methods that
- * might change state MUST be implemented such that they retain the internal
- * state of the current instance and return an instance that contains the
- * changed state.
- *
- * Typically the Host header will be also be present in the request message.
- * For server-side requests, the scheme will typically be discoverable in the
- * server parameters.
- *
- * @link http://tools.ietf.org/html/rfc3986 (the URI specification)
- */
-interface UriInterface
-{
- /**
- * Retrieve the scheme component of the URI.
- *
- * If no scheme is present, this method MUST return an empty string.
- *
- * The value returned MUST be normalized to lowercase, per RFC 3986
- * Section 3.1.
- *
- * The trailing ":" character is not part of the scheme and MUST NOT be
- * added.
- *
- * @see https://tools.ietf.org/html/rfc3986#section-3.1
- * @return string The URI scheme.
- */
- public function getScheme();
-
- /**
- * Retrieve the authority component of the URI.
- *
- * If no authority information is present, this method MUST return an empty
- * string.
- *
- * The authority syntax of the URI is:
- *
- * <pre>
- * [user-info@]host[:port]
- * </pre>
- *
- * If the port component is not set or is the standard port for the current
- * scheme, it SHOULD NOT be included.
- *
- * @see https://tools.ietf.org/html/rfc3986#section-3.2
- * @return string The URI authority, in "[user-info@]host[:port]" format.
- */
- public function getAuthority();
-
- /**
- * Retrieve the user information component of the URI.
- *
- * If no user information is present, this method MUST return an empty
- * string.
- *
- * If a user is present in the URI, this will return that value;
- * additionally, if the password is also present, it will be appended to the
- * user value, with a colon (":") separating the values.
- *
- * The trailing "@" character is not part of the user information and MUST
- * NOT be added.
- *
- * @return string The URI user information, in "username[:password]" format.
- */
- public function getUserInfo();
-
- /**
- * Retrieve the host component of the URI.
- *
- * If no host is present, this method MUST return an empty string.
- *
- * The value returned MUST be normalized to lowercase, per RFC 3986
- * Section 3.2.2.
- *
- * @see http://tools.ietf.org/html/rfc3986#section-3.2.2
- * @return string The URI host.
- */
- public function getHost();
-
- /**
- * Retrieve the port component of the URI.
- *
- * If a port is present, and it is non-standard for the current scheme,
- * this method MUST return it as an integer. If the port is the standard port
- * used with the current scheme, this method SHOULD return null.
- *
- * If no port is present, and no scheme is present, this method MUST return
- * a null value.
- *
- * If no port is present, but a scheme is present, this method MAY return
- * the standard port for that scheme, but SHOULD return null.
- *
- * @return null|int The URI port.
- */
- public function getPort();
-
- /**
- * Retrieve the path component of the URI.
- *
- * The path can either be empty or absolute (starting with a slash) or
- * rootless (not starting with a slash). Implementations MUST support all
- * three syntaxes.
- *
- * Normally, the empty path "" and absolute path "/" are considered equal as
- * defined in RFC 7230 Section 2.7.3. But this method MUST NOT automatically
- * do this normalization because in contexts with a trimmed base path, e.g.
- * the front controller, this difference becomes significant. It's the task
- * of the user to handle both "" and "/".
- *
- * The value returned MUST be percent-encoded, but MUST NOT double-encode
- * any characters. To determine what characters to encode, please refer to
- * RFC 3986, Sections 2 and 3.3.
- *
- * As an example, if the value should include a slash ("/") not intended as
- * delimiter between path segments, that value MUST be passed in encoded
- * form (e.g., "%2F") to the instance.
- *
- * @see https://tools.ietf.org/html/rfc3986#section-2
- * @see https://tools.ietf.org/html/rfc3986#section-3.3
- * @return string The URI path.
- */
- public function getPath();
-
- /**
- * Retrieve the query string of the URI.
- *
- * If no query string is present, this method MUST return an empty string.
- *
- * The leading "?" character is not part of the query and MUST NOT be
- * added.
- *
- * The value returned MUST be percent-encoded, but MUST NOT double-encode
- * any characters. To determine what characters to encode, please refer to
- * RFC 3986, Sections 2 and 3.4.
- *
- * As an example, if a value in a key/value pair of the query string should
- * include an ampersand ("&") not intended as a delimiter between values,
- * that value MUST be passed in encoded form (e.g., "%26") to the instance.
- *
- * @see https://tools.ietf.org/html/rfc3986#section-2
- * @see https://tools.ietf.org/html/rfc3986#section-3.4
- * @return string The URI query string.
- */
- public function getQuery();
-
- /**
- * Retrieve the fragment component of the URI.
- *
- * If no fragment is present, this method MUST return an empty string.
- *
- * The leading "#" character is not part of the fragment and MUST NOT be
- * added.
- *
- * The value returned MUST be percent-encoded, but MUST NOT double-encode
- * any characters. To determine what characters to encode, please refer to
- * RFC 3986, Sections 2 and 3.5.
- *
- * @see https://tools.ietf.org/html/rfc3986#section-2
- * @see https://tools.ietf.org/html/rfc3986#section-3.5
- * @return string The URI fragment.
- */
- public function getFragment();
-
- /**
- * Return an instance with the specified scheme.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the specified scheme.
- *
- * Implementations MUST support the schemes "http" and "https" case
- * insensitively, and MAY accommodate other schemes if required.
- *
- * An empty scheme is equivalent to removing the scheme.
- *
- * @param string $scheme The scheme to use with the new instance.
- * @return static A new instance with the specified scheme.
- * @throws \InvalidArgumentException for invalid or unsupported schemes.
- */
- public function withScheme($scheme);
-
- /**
- * Return an instance with the specified user information.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the specified user information.
- *
- * Password is optional, but the user information MUST include the
- * user; an empty string for the user is equivalent to removing user
- * information.
- *
- * @param string $user The user name to use for authority.
- * @param null|string $password The password associated with $user.
- * @return static A new instance with the specified user information.
- */
- public function withUserInfo($user, $password = null);
-
- /**
- * Return an instance with the specified host.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the specified host.
- *
- * An empty host value is equivalent to removing the host.
- *
- * @param string $host The hostname to use with the new instance.
- * @return static A new instance with the specified host.
- * @throws \InvalidArgumentException for invalid hostnames.
- */
- public function withHost($host);
-
- /**
- * Return an instance with the specified port.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the specified port.
- *
- * Implementations MUST raise an exception for ports outside the
- * established TCP and UDP port ranges.
- *
- * A null value provided for the port is equivalent to removing the port
- * information.
- *
- * @param null|int $port The port to use with the new instance; a null value
- * removes the port information.
- * @return static A new instance with the specified port.
- * @throws \InvalidArgumentException for invalid ports.
- */
- public function withPort($port);
-
- /**
- * Return an instance with the specified path.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the specified path.
- *
- * The path can either be empty or absolute (starting with a slash) or
- * rootless (not starting with a slash). Implementations MUST support all
- * three syntaxes.
- *
- * If the path is intended to be domain-relative rather than path relative then
- * it must begin with a slash ("/"). Paths not starting with a slash ("/")
- * are assumed to be relative to some base path known to the application or
- * consumer.
- *
- * Users can provide both encoded and decoded path characters.
- * Implementations ensure the correct encoding as outlined in getPath().
- *
- * @param string $path The path to use with the new instance.
- * @return static A new instance with the specified path.
- * @throws \InvalidArgumentException for invalid paths.
- */
- public function withPath($path);
-
- /**
- * Return an instance with the specified query string.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the specified query string.
- *
- * Users can provide both encoded and decoded query characters.
- * Implementations ensure the correct encoding as outlined in getQuery().
- *
- * An empty query string value is equivalent to removing the query string.
- *
- * @param string $query The query string to use with the new instance.
- * @return static A new instance with the specified query string.
- * @throws \InvalidArgumentException for invalid query strings.
- */
- public function withQuery($query);
-
- /**
- * Return an instance with the specified URI fragment.
- *
- * This method MUST retain the state of the current instance, and return
- * an instance that contains the specified URI fragment.
- *
- * Users can provide both encoded and decoded fragment characters.
- * Implementations ensure the correct encoding as outlined in getFragment().
- *
- * An empty fragment value is equivalent to removing the fragment.
- *
- * @param string $fragment The fragment to use with the new instance.
- * @return static A new instance with the specified fragment.
- */
- public function withFragment($fragment);
-
- /**
- * Return the string representation as a URI reference.
- *
- * Depending on which components of the URI are present, the resulting
- * string is either a full URI or relative reference according to RFC 3986,
- * Section 4.1. The method concatenates the various components of the URI,
- * using the appropriate delimiters:
- *
- * - If a scheme is present, it MUST be suffixed by ":".
- * - If an authority is present, it MUST be prefixed by "//".
- * - The path can be concatenated without delimiters. But there are two
- * cases where the path has to be adjusted to make the URI reference
- * valid as PHP does not allow to throw an exception in __toString():
- * - If the path is rootless and an authority is present, the path MUST
- * be prefixed by "/".
- * - If the path is starting with more than one "/" and no authority is
- * present, the starting slashes MUST be reduced to one.
- * - If a query is present, it MUST be prefixed by "?".
- * - If a fragment is present, it MUST be prefixed by "#".
- *
- * @see http://tools.ietf.org/html/rfc3986#section-4.1
- * @return string
- */
- public function __toString();
-}
diff --git a/vendor/ralouphie/getallheaders/LICENSE b/vendor/ralouphie/getallheaders/LICENSE
deleted file mode 100644
index be5540c..0000000
--- a/vendor/ralouphie/getallheaders/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Ralph Khattar
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/ralouphie/getallheaders/README.md b/vendor/ralouphie/getallheaders/README.md
deleted file mode 100644
index 9430d76..0000000
--- a/vendor/ralouphie/getallheaders/README.md
+++ /dev/null
@@ -1,27 +0,0 @@
-getallheaders
-=============
-
-PHP `getallheaders()` polyfill. Compatible with PHP >= 5.3.
-
-[![Build Status](https://travis-ci.org/ralouphie/getallheaders.svg?branch=master)](https://travis-ci.org/ralouphie/getallheaders)
-[![Coverage Status](https://coveralls.io/repos/ralouphie/getallheaders/badge.png?branch=master)](https://coveralls.io/r/ralouphie/getallheaders?branch=master)
-[![Latest Stable Version](https://poser.pugx.org/ralouphie/getallheaders/v/stable.png)](https://packagist.org/packages/ralouphie/getallheaders)
-[![Latest Unstable Version](https://poser.pugx.org/ralouphie/getallheaders/v/unstable.png)](https://packagist.org/packages/ralouphie/getallheaders)
-[![License](https://poser.pugx.org/ralouphie/getallheaders/license.png)](https://packagist.org/packages/ralouphie/getallheaders)
-
-
-This is a simple polyfill for [`getallheaders()`](http://www.php.net/manual/en/function.getallheaders.php).
-
-## Install
-
-For PHP version **`>= 5.6`**:
-
-```
-composer require ralouphie/getallheaders
-```
-
-For PHP version **`< 5.6`**:
-
-```
-composer require ralouphie/getallheaders "^2"
-```
diff --git a/vendor/ralouphie/getallheaders/composer.json b/vendor/ralouphie/getallheaders/composer.json
deleted file mode 100644
index de8ce62..0000000
--- a/vendor/ralouphie/getallheaders/composer.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "name": "ralouphie/getallheaders",
- "description": "A polyfill for getallheaders.",
- "license": "MIT",
- "authors": [
- {
- "name": "Ralph Khattar",
- "email": "[email protected]"
- }
- ],
- "require": {
- "php": ">=5.6"
- },
- "require-dev": {
- "phpunit/phpunit": "^5 || ^6.5",
- "php-coveralls/php-coveralls": "^2.1"
- },
- "autoload": {
- "files": ["src/getallheaders.php"]
- },
- "autoload-dev": {
- "psr-4": {
- "getallheaders\\Tests\\": "tests/"
- }
- }
-}
diff --git a/vendor/ralouphie/getallheaders/src/getallheaders.php b/vendor/ralouphie/getallheaders/src/getallheaders.php
deleted file mode 100644
index c7285a5..0000000
--- a/vendor/ralouphie/getallheaders/src/getallheaders.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-if (!function_exists('getallheaders')) {
-
- /**
- * Get all HTTP header key/values as an associative array for the current request.
- *
- * @return string[string] The HTTP header key/value pairs.
- */
- function getallheaders()
- {
- $headers = array();
-
- $copy_server = array(
- 'CONTENT_TYPE' => 'Content-Type',
- 'CONTENT_LENGTH' => 'Content-Length',
- 'CONTENT_MD5' => 'Content-Md5',
- );
-
- foreach ($_SERVER as $key => $value) {
- if (substr($key, 0, 5) === 'HTTP_') {
- $key = substr($key, 5);
- if (!isset($copy_server[$key]) || !isset($_SERVER[$key])) {
- $key = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', $key))));
- $headers[$key] = $value;
- }
- } elseif (isset($copy_server[$key])) {
- $headers[$copy_server[$key]] = $value;
- }
- }
-
- if (!isset($headers['Authorization'])) {
- if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) {
- $headers['Authorization'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION'];
- } elseif (isset($_SERVER['PHP_AUTH_USER'])) {
- $basic_pass = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : '';
- $headers['Authorization'] = 'Basic ' . base64_encode($_SERVER['PHP_AUTH_USER'] . ':' . $basic_pass);
- } elseif (isset($_SERVER['PHP_AUTH_DIGEST'])) {
- $headers['Authorization'] = $_SERVER['PHP_AUTH_DIGEST'];
- }
- }
-
- return $headers;
- }
-
-}
diff --git a/vendor/symfony/polyfill-intl-idn/Idn.php b/vendor/symfony/polyfill-intl-idn/Idn.php
deleted file mode 100644
index 127437e..0000000
--- a/vendor/symfony/polyfill-intl-idn/Idn.php
+++ /dev/null
@@ -1,915 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <[email protected]> and Trevor Rowbotham <[email protected]>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Intl\Idn;
-
-use Exception;
-use Normalizer;
-use Symfony\Polyfill\Intl\Idn\Resources\unidata\DisallowedRanges;
-use Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex;
-
-/**
- * @see https://www.unicode.org/reports/tr46/
- *
- * @internal
- */
-final class Idn
-{
- const ERROR_EMPTY_LABEL = 1;
- const ERROR_LABEL_TOO_LONG = 2;
- const ERROR_DOMAIN_NAME_TOO_LONG = 4;
- const ERROR_LEADING_HYPHEN = 8;
- const ERROR_TRAILING_HYPHEN = 0x10;
- const ERROR_HYPHEN_3_4 = 0x20;
- const ERROR_LEADING_COMBINING_MARK = 0x40;
- const ERROR_DISALLOWED = 0x80;
- const ERROR_PUNYCODE = 0x100;
- const ERROR_LABEL_HAS_DOT = 0x200;
- const ERROR_INVALID_ACE_LABEL = 0x400;
- const ERROR_BIDI = 0x800;
- const ERROR_CONTEXTJ = 0x1000;
- const ERROR_CONTEXTO_PUNCTUATION = 0x2000;
- const ERROR_CONTEXTO_DIGITS = 0x4000;
-
- const INTL_IDNA_VARIANT_2003 = 0;
- const INTL_IDNA_VARIANT_UTS46 = 1;
-
- const MAX_DOMAIN_SIZE = 253;
- const MAX_LABEL_SIZE = 63;
-
- const BASE = 36;
- const TMIN = 1;
- const TMAX = 26;
- const SKEW = 38;
- const DAMP = 700;
- const INITIAL_BIAS = 72;
- const INITIAL_N = 128;
- const DELIMITER = '-';
- const MAX_INT = 2147483647;
-
- /**
- * Contains the numeric value of a basic code point (for use in representing integers) in the
- * range 0 to BASE-1, or -1 if b is does not represent a value.
- *
- * @var array<int, int>
- */
- private static $basicToDigit = array(
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1,
-
- -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-
- -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- );
-
- /**
- * @var array<int, int>
- */
- private static $virama;
-
- /**
- * @var array<int, string>
- */
- private static $mapped;
-
- /**
- * @var array<int, bool>
- */
- private static $ignored;
-
- /**
- * @var array<int, string>
- */
- private static $deviation;
-
- /**
- * @var array<int, bool>
- */
- private static $disallowed;
-
- /**
- * @var array<int, string>
- */
- private static $disallowed_STD3_mapped;
-
- /**
- * @var array<int, bool>
- */
- private static $disallowed_STD3_valid;
-
- /**
- * @var bool
- */
- private static $mappingTableLoaded = false;
-
- /**
- * @see https://www.unicode.org/reports/tr46/#ToASCII
- *
- * @param string $domainName
- * @param int $options
- * @param int $variant
- * @param array $idna_info
- *
- * @return string|false
- */
- public static function idn_to_ascii($domainName, $options = IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = array())
- {
- if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
- @trigger_error('idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated', E_USER_DEPRECATED);
- }
-
- $options = array(
- 'CheckHyphens' => true,
- 'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & \IDNA_CHECK_BIDI),
- 'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & \IDNA_CHECK_CONTEXTJ),
- 'UseSTD3ASCIIRules' => 0 !== ($options & \IDNA_USE_STD3_RULES),
- 'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & \IDNA_NONTRANSITIONAL_TO_ASCII),
- 'VerifyDnsLength' => true,
- );
- $info = new Info();
- $labels = self::process((string) $domainName, $options, $info);
-
- foreach ($labels as $i => $label) {
- // Only convert labels to punycode that contain non-ASCII code points
- if (1 === preg_match('/[^\x00-\x7F]/', $label)) {
- try {
- $label = 'xn--'.self::punycodeEncode($label);
- } catch (Exception $e) {
- $info->errors |= self::ERROR_PUNYCODE;
- }
-
- $labels[$i] = $label;
- }
- }
-
- if ($options['VerifyDnsLength']) {
- self::validateDomainAndLabelLength($labels, $info);
- }
-
- $idna_info = array(
- 'result' => implode('.', $labels),
- 'isTransitionalDifferent' => $info->transitionalDifferent,
- 'errors' => $info->errors,
- );
-
- return 0 === $info->errors ? $idna_info['result'] : false;
- }
-
- /**
- * @see https://www.unicode.org/reports/tr46/#ToUnicode
- *
- * @param string $domainName
- * @param int $options
- * @param int $variant
- * @param array $idna_info
- *
- * @return string|false
- */
- public static function idn_to_utf8($domainName, $options = IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = array())
- {
- if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
- @trigger_error('idn_to_utf8(): INTL_IDNA_VARIANT_2003 is deprecated', E_USER_DEPRECATED);
- }
-
- $info = new Info();
- $labels = self::process((string) $domainName, array(
- 'CheckHyphens' => true,
- 'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & \IDNA_CHECK_BIDI),
- 'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & \IDNA_CHECK_CONTEXTJ),
- 'UseSTD3ASCIIRules' => 0 !== ($options & \IDNA_USE_STD3_RULES),
- 'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & \IDNA_NONTRANSITIONAL_TO_UNICODE),
- ), $info);
- $idna_info = array(
- 'result' => implode('.', $labels),
- 'isTransitionalDifferent' => $info->transitionalDifferent,
- 'errors' => $info->errors,
- );
-
- return 0 === $info->errors ? $idna_info['result'] : false;
- }
-
- /**
- * @param string $label
- *
- * @return bool
- */
- private static function isValidContextJ(array $codePoints, $label)
- {
- if (!isset(self::$virama)) {
- self::$virama = require __DIR__.\DIRECTORY_SEPARATOR.'Resources'.\DIRECTORY_SEPARATOR.'unidata'.\DIRECTORY_SEPARATOR.'virama.php';
- }
-
- $offset = 0;
-
- foreach ($codePoints as $i => $codePoint) {
- if (0x200C !== $codePoint && 0x200D !== $codePoint) {
- continue;
- }
-
- if (!isset($codePoints[$i - 1])) {
- return false;
- }
-
- // If Canonical_Combining_Class(Before(cp)) .eq. Virama Then True;
- if (isset(self::$virama[$codePoints[$i - 1]])) {
- continue;
- }
-
- // If RegExpMatch((Joining_Type:{L,D})(Joining_Type:T)*\u200C(Joining_Type:T)*(Joining_Type:{R,D})) Then
- // True;
- // Generated RegExp = ([Joining_Type:{L,D}][Joining_Type:T]*\u200C[Joining_Type:T]*)[Joining_Type:{R,D}]
- if (0x200C === $codePoint && 1 === preg_match(Regex::ZWNJ, $label, $matches, PREG_OFFSET_CAPTURE, $offset)) {
- $offset += \strlen($matches[1][0]);
-
- continue;
- }
-
- return false;
- }
-
- return true;
- }
-
- /**
- * @see https://www.unicode.org/reports/tr46/#ProcessingStepMap
- *
- * @param string $input
- * @param array<string, bool> $options
- *
- * @return string
- */
- private static function mapCodePoints($input, array $options, Info $info)
- {
- $str = '';
- $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
- $transitional = $options['Transitional_Processing'];
-
- foreach (self::utf8Decode($input) as $codePoint) {
- $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
-
- switch ($data['status']) {
- case 'disallowed':
- $info->errors |= self::ERROR_DISALLOWED;
-
- // no break.
-
- case 'valid':
- $str .= mb_chr($codePoint, 'utf-8');
-
- break;
-
- case 'ignored':
- // Do nothing.
- break;
-
- case 'mapped':
- $str .= $data['mapping'];
-
- break;
-
- case 'deviation':
- $info->transitionalDifferent = true;
- $str .= ($transitional ? $data['mapping'] : mb_chr($codePoint, 'utf-8'));
-
- break;
- }
- }
-
- return $str;
- }
-
- /**
- * @see https://www.unicode.org/reports/tr46/#Processing
- *
- * @param string $domain
- * @param array<string, bool> $options
- *
- * @return array<int, string>
- */
- private static function process($domain, array $options, Info $info)
- {
- // If VerifyDnsLength is not set, we are doing ToUnicode otherwise we are doing ToASCII and
- // we need to respect the VerifyDnsLength option.
- $checkForEmptyLabels = !isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'];
-
- if ($checkForEmptyLabels && '' === $domain) {
- $info->errors |= self::ERROR_EMPTY_LABEL;
-
- return array($domain);
- }
-
- // Step 1. Map each code point in the domain name string
- $domain = self::mapCodePoints($domain, $options, $info);
-
- // Step 2. Normalize the domain name string to Unicode Normalization Form C.
- if (!Normalizer::isNormalized($domain, Normalizer::FORM_C)) {
- $domain = Normalizer::normalize($domain, Normalizer::FORM_C);
- }
-
- // Step 3. Break the string into labels at U+002E (.) FULL STOP.
- $labels = explode('.', $domain);
- $lastLabelIndex = \count($labels) - 1;
-
- // Step 4. Convert and validate each label in the domain name string.
- foreach ($labels as $i => $label) {
- $validationOptions = $options;
-
- if ('xn--' === substr($label, 0, 4)) {
- try {
- $label = self::punycodeDecode(substr($label, 4));
- } catch (Exception $e) {
- $info->errors |= self::ERROR_PUNYCODE;
-
- continue;
- }
-
- $validationOptions['Transitional_Processing'] = false;
- $labels[$i] = $label;
- }
-
- self::validateLabel($label, $info, $validationOptions, $i > 0 && $i === $lastLabelIndex);
- }
-
- if ($info->bidiDomain && !$info->validBidiDomain) {
- $info->errors |= self::ERROR_BIDI;
- }
-
- // Any input domain name string that does not record an error has been successfully
- // processed according to this specification. Conversely, if an input domain_name string
- // causes an error, then the processing of the input domain_name string fails. Determining
- // what to do with error input is up to the caller, and not in the scope of this document.
- return $labels;
- }
-
- /**
- * @see https://tools.ietf.org/html/rfc5893#section-2
- *
- * @param string $label
- */
- private static function validateBidiLabel($label, Info $info)
- {
- if (1 === preg_match(Regex::RTL_LABEL, $label)) {
- $info->bidiDomain = true;
-
- // Step 1. The first character must be a character with Bidi property L, R, or AL.
- // If it has the R or AL property, it is an RTL label
- if (1 !== preg_match(Regex::BIDI_STEP_1_RTL, $label)) {
- $info->validBidiDomain = false;
-
- return;
- }
-
- // Step 2. In an RTL label, only characters with the Bidi properties R, AL, AN, EN, ES,
- // CS, ET, ON, BN, or NSM are allowed.
- if (1 === preg_match(Regex::BIDI_STEP_2, $label)) {
- $info->validBidiDomain = false;
-
- return;
- }
-
- // Step 3. In an RTL label, the end of the label must be a character with Bidi property
- // R, AL, EN, or AN, followed by zero or more characters with Bidi property NSM.
- if (1 !== preg_match(Regex::BIDI_STEP_3, $label)) {
- $info->validBidiDomain = false;
-
- return;
- }
-
- // Step 4. In an RTL label, if an EN is present, no AN may be present, and vice versa.
- if (1 === preg_match(Regex::BIDI_STEP_4_AN, $label) && 1 === preg_match(Regex::BIDI_STEP_4_EN, $label)) {
- $info->validBidiDomain = false;
-
- return;
- }
-
- return;
- }
-
- // We are a LTR label
- // Step 1. The first character must be a character with Bidi property L, R, or AL.
- // If it has the L property, it is an LTR label.
- if (1 !== preg_match(Regex::BIDI_STEP_1_LTR, $label)) {
- $info->validBidiDomain = false;
-
- return;
- }
-
- // Step 5. In an LTR label, only characters with the Bidi properties L, EN,
- // ES, CS, ET, ON, BN, or NSM are allowed.
- if (1 === preg_match(Regex::BIDI_STEP_5, $label)) {
- $info->validBidiDomain = false;
-
- return;
- }
-
- // Step 6.In an LTR label, the end of the label must be a character with Bidi property L or
- // EN, followed by zero or more characters with Bidi property NSM.
- if (1 !== preg_match(Regex::BIDI_STEP_6, $label)) {
- $info->validBidiDomain = false;
-
- return;
- }
- }
-
- /**
- * @param array<int, string> $labels
- */
- private static function validateDomainAndLabelLength(array $labels, Info $info)
- {
- $maxDomainSize = self::MAX_DOMAIN_SIZE;
- $length = \count($labels);
-
- // Number of "." delimiters.
- $domainLength = $length - 1;
-
- // If the last label is empty and it is not the first label, then it is the root label.
- // Increase the max size by 1, making it 254, to account for the root label's "."
- // delimiter. This also means we don't need to check the last label's length for being too
- // long.
- if ($length > 1 && '' === $labels[$length - 1]) {
- ++$maxDomainSize;
- --$length;
- }
-
- for ($i = 0; $i < $length; ++$i) {
- $bytes = \strlen($labels[$i]);
- $domainLength += $bytes;
-
- if ($bytes > self::MAX_LABEL_SIZE) {
- $info->errors |= self::ERROR_LABEL_TOO_LONG;
- }
- }
-
- if ($domainLength > $maxDomainSize) {
- $info->errors |= self::ERROR_DOMAIN_NAME_TOO_LONG;
- }
- }
-
- /**
- * @see https://www.unicode.org/reports/tr46/#Validity_Criteria
- *
- * @param string $label
- * @param array<string, bool> $options
- * @param bool $canBeEmpty
- */
- private static function validateLabel($label, Info $info, array $options, $canBeEmpty)
- {
- if ('' === $label) {
- if (!$canBeEmpty && (!isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'])) {
- $info->errors |= self::ERROR_EMPTY_LABEL;
- }
-
- return;
- }
-
- // Step 1. The label must be in Unicode Normalization Form C.
- if (!Normalizer::isNormalized($label, Normalizer::FORM_C)) {
- $info->errors |= self::ERROR_INVALID_ACE_LABEL;
- }
-
- $codePoints = self::utf8Decode($label);
-
- if ($options['CheckHyphens']) {
- // Step 2. If CheckHyphens, the label must not contain a U+002D HYPHEN-MINUS character
- // in both the thrid and fourth positions.
- if (isset($codePoints[2], $codePoints[3]) && 0x002D === $codePoints[2] && 0x002D === $codePoints[3]) {
- $info->errors |= self::ERROR_HYPHEN_3_4;
- }
-
- // Step 3. If CheckHyphens, the label must neither begin nor end with a U+002D
- // HYPHEN-MINUS character.
- if ('-' === substr($label, 0, 1)) {
- $info->errors |= self::ERROR_LEADING_HYPHEN;
- }
-
- if ('-' === substr($label, -1, 1)) {
- $info->errors |= self::ERROR_TRAILING_HYPHEN;
- }
- }
-
- // Step 4. The label must not contain a U+002E (.) FULL STOP.
- if (false !== strpos($label, '.')) {
- $info->errors |= self::ERROR_LABEL_HAS_DOT;
- }
-
- // Step 5. The label must not begin with a combining mark, that is: General_Category=Mark.
- if (1 === preg_match(Regex::COMBINING_MARK, $label)) {
- $info->errors |= self::ERROR_LEADING_COMBINING_MARK;
- }
-
- // Step 6. Each code point in the label must only have certain status values according to
- // Section 5, IDNA Mapping Table:
- $transitional = $options['Transitional_Processing'];
- $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
-
- foreach ($codePoints as $codePoint) {
- $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
- $status = $data['status'];
-
- if ('valid' === $status || (!$transitional && 'deviation' === $status)) {
- continue;
- }
-
- $info->errors |= self::ERROR_DISALLOWED;
-
- break;
- }
-
- // Step 7. If CheckJoiners, the label must satisify the ContextJ rules from Appendix A, in
- // The Unicode Code Points and Internationalized Domain Names for Applications (IDNA)
- // [IDNA2008].
- if ($options['CheckJoiners'] && !self::isValidContextJ($codePoints, $label)) {
- $info->errors |= self::ERROR_CONTEXTJ;
- }
-
- // Step 8. If CheckBidi, and if the domain name is a Bidi domain name, then the label must
- // satisfy all six of the numbered conditions in [IDNA2008] RFC 5893, Section 2.
- if ($options['CheckBidi'] && (!$info->bidiDomain || $info->validBidiDomain)) {
- self::validateBidiLabel($label, $info);
- }
- }
-
- /**
- * @see https://tools.ietf.org/html/rfc3492#section-6.2
- *
- * @param string $input
- *
- * @return string
- */
- private static function punycodeDecode($input)
- {
- $n = self::INITIAL_N;
- $out = 0;
- $i = 0;
- $bias = self::INITIAL_BIAS;
- $lastDelimIndex = strrpos($input, self::DELIMITER);
- $b = false === $lastDelimIndex ? 0 : $lastDelimIndex;
- $inputLength = \strlen($input);
- $output = array();
- $bytes = array_map('ord', str_split($input));
-
- for ($j = 0; $j < $b; ++$j) {
- if ($bytes[$j] > 0x7F) {
- throw new Exception('Invalid input');
- }
-
- $output[$out++] = $input[$j];
- }
-
- if ($b > 0) {
- ++$b;
- }
-
- for ($in = $b; $in < $inputLength; ++$out) {
- $oldi = $i;
- $w = 1;
-
- for ($k = self::BASE; /* no condition */; $k += self::BASE) {
- if ($in >= $inputLength) {
- throw new Exception('Invalid input');
- }
-
- $digit = self::$basicToDigit[$bytes[$in++] & 0xFF];
-
- if ($digit < 0) {
- throw new Exception('Invalid input');
- }
-
- if ($digit > intdiv(self::MAX_INT - $i, $w)) {
- throw new Exception('Integer overflow');
- }
-
- $i += $digit * $w;
-
- if ($k <= $bias) {
- $t = self::TMIN;
- } elseif ($k >= $bias + self::TMAX) {
- $t = self::TMAX;
- } else {
- $t = $k - $bias;
- }
-
- if ($digit < $t) {
- break;
- }
-
- $baseMinusT = self::BASE - $t;
-
- if ($w > intdiv(self::MAX_INT, $baseMinusT)) {
- throw new Exception('Integer overflow');
- }
-
- $w *= $baseMinusT;
- }
-
- $outPlusOne = $out + 1;
- $bias = self::adaptBias($i - $oldi, $outPlusOne, 0 === $oldi);
-
- if (intdiv($i, $outPlusOne) > self::MAX_INT - $n) {
- throw new Exception('Integer overflow');
- }
-
- $n += intdiv($i, $outPlusOne);
- $i %= $outPlusOne;
- array_splice($output, $i++, 0, array(mb_chr($n, 'utf-8')));
- }
-
- return implode('', $output);
- }
-
- /**
- * @see https://tools.ietf.org/html/rfc3492#section-6.3
- *
- * @param string $input
- *
- * @return string
- */
- private static function punycodeEncode($input)
- {
- $n = self::INITIAL_N;
- $delta = 0;
- $out = 0;
- $bias = self::INITIAL_BIAS;
- $inputLength = 0;
- $output = '';
- $iter = self::utf8Decode($input);
-
- foreach ($iter as $codePoint) {
- ++$inputLength;
-
- if ($codePoint < 0x80) {
- $output .= \chr($codePoint);
- ++$out;
- }
- }
-
- $h = $out;
- $b = $out;
-
- if ($b > 0) {
- $output .= self::DELIMITER;
- ++$out;
- }
-
- while ($h < $inputLength) {
- $m = self::MAX_INT;
-
- foreach ($iter as $codePoint) {
- if ($codePoint >= $n && $codePoint < $m) {
- $m = $codePoint;
- }
- }
-
- if ($m - $n > intdiv(self::MAX_INT - $delta, $h + 1)) {
- throw new Exception('Integer overflow');
- }
-
- $delta += ($m - $n) * ($h + 1);
- $n = $m;
-
- foreach ($iter as $codePoint) {
- if ($codePoint < $n && 0 === ++$delta) {
- throw new Exception('Integer overflow');
- } elseif ($codePoint === $n) {
- $q = $delta;
-
- for ($k = self::BASE; /* no condition */; $k += self::BASE) {
- if ($k <= $bias) {
- $t = self::TMIN;
- } elseif ($k >= $bias + self::TMAX) {
- $t = self::TMAX;
- } else {
- $t = $k - $bias;
- }
-
- if ($q < $t) {
- break;
- }
-
- $qMinusT = $q - $t;
- $baseMinusT = self::BASE - $t;
- $output .= self::encodeDigit($t + ($qMinusT) % ($baseMinusT), false);
- ++$out;
- $q = intdiv($qMinusT, $baseMinusT);
- }
-
- $output .= self::encodeDigit($q, false);
- ++$out;
- $bias = self::adaptBias($delta, $h + 1, $h === $b);
- $delta = 0;
- ++$h;
- }
- }
-
- ++$delta;
- ++$n;
- }
-
- return $output;
- }
-
- /**
- * @see https://tools.ietf.org/html/rfc3492#section-6.1
- *
- * @param int $delta
- * @param int $numPoints
- * @param bool $firstTime
- *
- * @return int
- */
- private static function adaptBias($delta, $numPoints, $firstTime)
- {
- // xxx >> 1 is a faster way of doing intdiv(xxx, 2)
- $delta = $firstTime ? intdiv($delta, self::DAMP) : $delta >> 1;
- $delta += intdiv($delta, $numPoints);
- $k = 0;
-
- while ($delta > ((self::BASE - self::TMIN) * self::TMAX) >> 1) {
- $delta = intdiv($delta, self::BASE - self::TMIN);
- $k += self::BASE;
- }
-
- return $k + intdiv((self::BASE - self::TMIN + 1) * $delta, $delta + self::SKEW);
- }
-
- /**
- * @param int $d
- * @param bool $flag
- *
- * @return string
- */
- private static function encodeDigit($d, $flag)
- {
- return \chr($d + 22 + 75 * ($d < 26 ? 1 : 0) - (($flag ? 1 : 0) << 5));
- }
-
- /**
- * Takes a UTF-8 encoded string and converts it into a series of integer code points. Any
- * invalid byte sequences will be replaced by a U+FFFD replacement code point.
- *
- * @see https://encoding.spec.whatwg.org/#utf-8-decoder
- *
- * @param string $input
- *
- * @return array<int, int>
- */
- private static function utf8Decode($input)
- {
- $bytesSeen = 0;
- $bytesNeeded = 0;
- $lowerBoundary = 0x80;
- $upperBoundary = 0xBF;
- $codePoint = 0;
- $codePoints = array();
- $length = \strlen($input);
-
- for ($i = 0; $i < $length; ++$i) {
- $byte = \ord($input[$i]);
-
- if (0 === $bytesNeeded) {
- if ($byte >= 0x00 && $byte <= 0x7F) {
- $codePoints[] = $byte;
-
- continue;
- }
-
- if ($byte >= 0xC2 && $byte <= 0xDF) {
- $bytesNeeded = 1;
- $codePoint = $byte & 0x1F;
- } elseif ($byte >= 0xE0 && $byte <= 0xEF) {
- if (0xE0 === $byte) {
- $lowerBoundary = 0xA0;
- } elseif (0xED === $byte) {
- $upperBoundary = 0x9F;
- }
-
- $bytesNeeded = 2;
- $codePoint = $byte & 0xF;
- } elseif ($byte >= 0xF0 && $byte <= 0xF4) {
- if (0xF0 === $byte) {
- $lowerBoundary = 0x90;
- } elseif (0xF4 === $byte) {
- $upperBoundary = 0x8F;
- }
-
- $bytesNeeded = 3;
- $codePoint = $byte & 0x7;
- } else {
- $codePoints[] = 0xFFFD;
- }
-
- continue;
- }
-
- if ($byte < $lowerBoundary || $byte > $upperBoundary) {
- $codePoint = 0;
- $bytesNeeded = 0;
- $bytesSeen = 0;
- $lowerBoundary = 0x80;
- $upperBoundary = 0xBF;
- --$i;
- $codePoints[] = 0xFFFD;
-
- continue;
- }
-
- $lowerBoundary = 0x80;
- $upperBoundary = 0xBF;
- $codePoint = ($codePoint << 6) | ($byte & 0x3F);
-
- if (++$bytesSeen !== $bytesNeeded) {
- continue;
- }
-
- $codePoints[] = $codePoint;
- $codePoint = 0;
- $bytesNeeded = 0;
- $bytesSeen = 0;
- }
-
- // String unexpectedly ended, so append a U+FFFD code point.
- if (0 !== $bytesNeeded) {
- $codePoints[] = 0xFFFD;
- }
-
- return $codePoints;
- }
-
- /**
- * @param int $codePoint
- * @param bool $useSTD3ASCIIRules
- *
- * @return array{status: string, mapping?: string}
- */
- private static function lookupCodePointStatus($codePoint, $useSTD3ASCIIRules)
- {
- if (!self::$mappingTableLoaded) {
- self::$mappingTableLoaded = true;
- self::$mapped = require __DIR__.'/Resources/unidata/mapped.php';
- self::$ignored = require __DIR__.'/Resources/unidata/ignored.php';
- self::$deviation = require __DIR__.'/Resources/unidata/deviation.php';
- self::$disallowed = require __DIR__.'/Resources/unidata/disallowed.php';
- self::$disallowed_STD3_mapped = require __DIR__.'/Resources/unidata/disallowed_STD3_mapped.php';
- self::$disallowed_STD3_valid = require __DIR__.'/Resources/unidata/disallowed_STD3_valid.php';
- }
-
- if (isset(self::$mapped[$codePoint])) {
- return array('status' => 'mapped', 'mapping' => self::$mapped[$codePoint]);
- }
-
- if (isset(self::$ignored[$codePoint])) {
- return array('status' => 'ignored');
- }
-
- if (isset(self::$deviation[$codePoint])) {
- return array('status' => 'deviation', 'mapping' => self::$deviation[$codePoint]);
- }
-
- if (isset(self::$disallowed[$codePoint]) || DisallowedRanges::inRange($codePoint)) {
- return array('status' => 'disallowed');
- }
-
- $isDisallowedMapped = isset(self::$disallowed_STD3_mapped[$codePoint]);
-
- if ($isDisallowedMapped || isset(self::$disallowed_STD3_valid[$codePoint])) {
- $status = 'disallowed';
-
- if (!$useSTD3ASCIIRules) {
- $status = $isDisallowedMapped ? 'mapped' : 'valid';
- }
-
- if ($isDisallowedMapped) {
- return array('status' => $status, 'mapping' => self::$disallowed_STD3_mapped[$codePoint]);
- }
-
- return array('status' => $status);
- }
-
- return array('status' => 'valid');
- }
-}
diff --git a/vendor/symfony/polyfill-intl-idn/Info.php b/vendor/symfony/polyfill-intl-idn/Info.php
deleted file mode 100644
index 25c3582..0000000
--- a/vendor/symfony/polyfill-intl-idn/Info.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <[email protected]> and Trevor Rowbotham <[email protected]>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Intl\Idn;
-
-/**
- * @internal
- */
-class Info
-{
- public $bidiDomain = false;
- public $errors = 0;
- public $validBidiDomain = true;
- public $transitionalDifferent = false;
-}
diff --git a/vendor/symfony/polyfill-intl-idn/LICENSE b/vendor/symfony/polyfill-intl-idn/LICENSE
deleted file mode 100644
index 03c5e25..0000000
--- a/vendor/symfony/polyfill-intl-idn/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2018-2019 Fabien Potencier and Trevor Rowbotham <[email protected]>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/polyfill-intl-idn/README.md b/vendor/symfony/polyfill-intl-idn/README.md
deleted file mode 100644
index 2e75f2e..0000000
--- a/vendor/symfony/polyfill-intl-idn/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-Symfony Polyfill / Intl: Idn
-============================
-
-This component provides [`idn_to_ascii`](https://php.net/idn-to-ascii) and [`idn_to_utf8`](https://php.net/idn-to-utf8) functions to users who run php versions without the [Intl](https://php.net/intl) extension.
-
-More information can be found in the
-[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
-
-License
-=======
-
-This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php
deleted file mode 100644
index 5bb70e4..0000000
--- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php
+++ /dev/null
@@ -1,375 +0,0 @@
-<?php
-
-namespace Symfony\Polyfill\Intl\Idn\Resources\unidata;
-
-/**
- * @internal
- */
-final class DisallowedRanges
-{
- /**
- * @param int $codePoint
- *
- * @return bool
- */
- public static function inRange($codePoint)
- {
- if ($codePoint >= 128 && $codePoint <= 159) {
- return true;
- }
-
- if ($codePoint >= 2155 && $codePoint <= 2207) {
- return true;
- }
-
- if ($codePoint >= 3676 && $codePoint <= 3712) {
- return true;
- }
-
- if ($codePoint >= 3808 && $codePoint <= 3839) {
- return true;
- }
-
- if ($codePoint >= 4059 && $codePoint <= 4095) {
- return true;
- }
-
- if ($codePoint >= 4256 && $codePoint <= 4293) {
- return true;
- }
-
- if ($codePoint >= 6849 && $codePoint <= 6911) {
- return true;
- }
-
- if ($codePoint >= 11859 && $codePoint <= 11903) {
- return true;
- }
-
- if ($codePoint >= 42955 && $codePoint <= 42996) {
- return true;
- }
-
- if ($codePoint >= 55296 && $codePoint <= 57343) {
- return true;
- }
-
- if ($codePoint >= 57344 && $codePoint <= 63743) {
- return true;
- }
-
- if ($codePoint >= 64218 && $codePoint <= 64255) {
- return true;
- }
-
- if ($codePoint >= 64976 && $codePoint <= 65007) {
- return true;
- }
-
- if ($codePoint >= 65630 && $codePoint <= 65663) {
- return true;
- }
-
- if ($codePoint >= 65953 && $codePoint <= 65999) {
- return true;
- }
-
- if ($codePoint >= 66046 && $codePoint <= 66175) {
- return true;
- }
-
- if ($codePoint >= 66518 && $codePoint <= 66559) {
- return true;
- }
-
- if ($codePoint >= 66928 && $codePoint <= 67071) {
- return true;
- }
-
- if ($codePoint >= 67432 && $codePoint <= 67583) {
- return true;
- }
-
- if ($codePoint >= 67760 && $codePoint <= 67807) {
- return true;
- }
-
- if ($codePoint >= 67904 && $codePoint <= 67967) {
- return true;
- }
-
- if ($codePoint >= 68256 && $codePoint <= 68287) {
- return true;
- }
-
- if ($codePoint >= 68528 && $codePoint <= 68607) {
- return true;
- }
-
- if ($codePoint >= 68681 && $codePoint <= 68735) {
- return true;
- }
-
- if ($codePoint >= 68922 && $codePoint <= 69215) {
- return true;
- }
-
- if ($codePoint >= 69298 && $codePoint <= 69375) {
- return true;
- }
-
- if ($codePoint >= 69466 && $codePoint <= 69551) {
- return true;
- }
-
- if ($codePoint >= 70207 && $codePoint <= 70271) {
- return true;
- }
-
- if ($codePoint >= 70517 && $codePoint <= 70655) {
- return true;
- }
-
- if ($codePoint >= 70874 && $codePoint <= 71039) {
- return true;
- }
-
- if ($codePoint >= 71134 && $codePoint <= 71167) {
- return true;
- }
-
- if ($codePoint >= 71370 && $codePoint <= 71423) {
- return true;
- }
-
- if ($codePoint >= 71488 && $codePoint <= 71679) {
- return true;
- }
-
- if ($codePoint >= 71740 && $codePoint <= 71839) {
- return true;
- }
-
- if ($codePoint >= 72026 && $codePoint <= 72095) {
- return true;
- }
-
- if ($codePoint >= 72441 && $codePoint <= 72703) {
- return true;
- }
-
- if ($codePoint >= 72887 && $codePoint <= 72959) {
- return true;
- }
-
- if ($codePoint >= 73130 && $codePoint <= 73439) {
- return true;
- }
-
- if ($codePoint >= 73465 && $codePoint <= 73647) {
- return true;
- }
-
- if ($codePoint >= 74650 && $codePoint <= 74751) {
- return true;
- }
-
- if ($codePoint >= 75076 && $codePoint <= 77823) {
- return true;
- }
-
- if ($codePoint >= 78905 && $codePoint <= 82943) {
- return true;
- }
-
- if ($codePoint >= 83527 && $codePoint <= 92159) {
- return true;
- }
-
- if ($codePoint >= 92784 && $codePoint <= 92879) {
- return true;
- }
-
- if ($codePoint >= 93072 && $codePoint <= 93759) {
- return true;
- }
-
- if ($codePoint >= 93851 && $codePoint <= 93951) {
- return true;
- }
-
- if ($codePoint >= 94112 && $codePoint <= 94175) {
- return true;
- }
-
- if ($codePoint >= 101590 && $codePoint <= 101631) {
- return true;
- }
-
- if ($codePoint >= 101641 && $codePoint <= 110591) {
- return true;
- }
-
- if ($codePoint >= 110879 && $codePoint <= 110927) {
- return true;
- }
-
- if ($codePoint >= 111356 && $codePoint <= 113663) {
- return true;
- }
-
- if ($codePoint >= 113828 && $codePoint <= 118783) {
- return true;
- }
-
- if ($codePoint >= 119366 && $codePoint <= 119519) {
- return true;
- }
-
- if ($codePoint >= 119673 && $codePoint <= 119807) {
- return true;
- }
-
- if ($codePoint >= 121520 && $codePoint <= 122879) {
- return true;
- }
-
- if ($codePoint >= 122923 && $codePoint <= 123135) {
- return true;
- }
-
- if ($codePoint >= 123216 && $codePoint <= 123583) {
- return true;
- }
-
- if ($codePoint >= 123648 && $codePoint <= 124927) {
- return true;
- }
-
- if ($codePoint >= 125143 && $codePoint <= 125183) {
- return true;
- }
-
- if ($codePoint >= 125280 && $codePoint <= 126064) {
- return true;
- }
-
- if ($codePoint >= 126133 && $codePoint <= 126208) {
- return true;
- }
-
- if ($codePoint >= 126270 && $codePoint <= 126463) {
- return true;
- }
-
- if ($codePoint >= 126652 && $codePoint <= 126703) {
- return true;
- }
-
- if ($codePoint >= 126706 && $codePoint <= 126975) {
- return true;
- }
-
- if ($codePoint >= 127406 && $codePoint <= 127461) {
- return true;
- }
-
- if ($codePoint >= 127590 && $codePoint <= 127743) {
- return true;
- }
-
- if ($codePoint >= 129202 && $codePoint <= 129279) {
- return true;
- }
-
- if ($codePoint >= 129751 && $codePoint <= 129791) {
- return true;
- }
-
- if ($codePoint >= 129995 && $codePoint <= 130031) {
- return true;
- }
-
- if ($codePoint >= 130042 && $codePoint <= 131069) {
- return true;
- }
-
- if ($codePoint >= 173790 && $codePoint <= 173823) {
- return true;
- }
-
- if ($codePoint >= 191457 && $codePoint <= 194559) {
- return true;
- }
-
- if ($codePoint >= 195102 && $codePoint <= 196605) {
- return true;
- }
-
- if ($codePoint >= 201547 && $codePoint <= 262141) {
- return true;
- }
-
- if ($codePoint >= 262144 && $codePoint <= 327677) {
- return true;
- }
-
- if ($codePoint >= 327680 && $codePoint <= 393213) {
- return true;
- }
-
- if ($codePoint >= 393216 && $codePoint <= 458749) {
- return true;
- }
-
- if ($codePoint >= 458752 && $codePoint <= 524285) {
- return true;
- }
-
- if ($codePoint >= 524288 && $codePoint <= 589821) {
- return true;
- }
-
- if ($codePoint >= 589824 && $codePoint <= 655357) {
- return true;
- }
-
- if ($codePoint >= 655360 && $codePoint <= 720893) {
- return true;
- }
-
- if ($codePoint >= 720896 && $codePoint <= 786429) {
- return true;
- }
-
- if ($codePoint >= 786432 && $codePoint <= 851965) {
- return true;
- }
-
- if ($codePoint >= 851968 && $codePoint <= 917501) {
- return true;
- }
-
- if ($codePoint >= 917536 && $codePoint <= 917631) {
- return true;
- }
-
- if ($codePoint >= 917632 && $codePoint <= 917759) {
- return true;
- }
-
- if ($codePoint >= 918000 && $codePoint <= 983037) {
- return true;
- }
-
- if ($codePoint >= 983040 && $codePoint <= 1048573) {
- return true;
- }
-
- if ($codePoint >= 1048576 && $codePoint <= 1114109) {
- return true;
- }
-
- return false;
- }
-}
diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php
deleted file mode 100644
index 5c1c51d..0000000
--- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-namespace Symfony\Polyfill\Intl\Idn\Resources\unidata;
-
-/**
- * @internal
- */
-final class Regex
-{
- const COMBINING_MARK = '/^[\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{0903}\x{093A}\x{093B}\x{093C}\x{093E}-\x{0940}\x{0941}-\x{0948}\x{0949}-\x{094C}\x{094D}\x{094E}-\x{094F}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{0982}-\x{0983}\x{09BC}\x{09BE}-\x{09C0}\x{09C1}-\x{09C4}\x{09C7}-\x{09C8}\x{09CB}-\x{09CC}\x{09CD}\x{09D7}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A03}\x{0A3C}\x{0A3E}-\x{0A40}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0A83}\x{0ABC}\x{0ABE}-\x{0AC0}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0AC9}\x{0ACB}-\x{0ACC}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B02}-\x{0B03}\x{0B3C}\x{0B3E}\x{0B3F}\x{0B40}\x{0B41}-\x{0B44}\x{0B47}-\x{0B48}\x{0B4B}-\x{0B4C}\x{0B4D}\x{0B55}-\x{0B56}\x{0B57}\x{0B62}-\x{0B63}\x{0B82}\x{0BBE}-\x{0BBF}\x{0BC0}\x{0BC1}-\x{0BC2}\x{0BC6}-\x{0BC8}\x{0BCA}-\x{0BCC}\x{0BCD}\x{0BD7}\x{0C00}\x{0C01}-\x{0C03}\x{0C04}\x{0C3E}-\x{0C40}\x{0C41}-\x{0C44}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0C82}-\x{0C83}\x{0CBC}\x{0CBE}\x{0CBF}\x{0CC0}-\x{0CC4}\x{0CC6}\x{0CC7}-\x{0CC8}\x{0CCA}-\x{0CCB}\x{0CCC}-\x{0CCD}\x{0CD5}-\x{0CD6}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D02}-\x{0D03}\x{0D3B}-\x{0D3C}\x{0D3E}-\x{0D40}\x{0D41}-\x{0D44}\x{0D46}-\x{0D48}\x{0D4A}-\x{0D4C}\x{0D4D}\x{0D57}\x{0D62}-\x{0D63}\x{0D81}\x{0D82}-\x{0D83}\x{0DCA}\x{0DCF}-\x{0DD1}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0DD8}-\x{0DDF}\x{0DF2}-\x{0DF3}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3E}-\x{0F3F}\x{0F71}-\x{0F7E}\x{0F7F}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102B}-\x{102C}\x{102D}-\x{1030}\x{1031}\x{1032}-\x{1037}\x{1038}\x{1039}-\x{103A}\x{103B}-\x{103C}\x{103D}-\x{103E}\x{1056}-\x{1057}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1062}-\x{1064}\x{1067}-\x{106D}\x{1071}-\x{1074}\x{1082}\x{1083}-\x{1084}\x{1085}-\x{1086}\x{1087}-\x{108C}\x{108D}\x{108F}\x{109A}-\x{109C}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B6}\x{17B7}-\x{17BD}\x{17BE}-\x{17C5}\x{17C6}\x{17C7}-\x{17C8}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1923}-\x{1926}\x{1927}-\x{1928}\x{1929}-\x{192B}\x{1930}-\x{1931}\x{1932}\x{1933}-\x{1938}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A19}-\x{1A1A}\x{1A1B}\x{1A55}\x{1A56}\x{1A57}\x{1A58}-\x{1A5E}\x{1A60}\x{1A61}\x{1A62}\x{1A63}-\x{1A64}\x{1A65}-\x{1A6C}\x{1A6D}-\x{1A72}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B04}\x{1B34}\x{1B35}\x{1B36}-\x{1B3A}\x{1B3B}\x{1B3C}\x{1B3D}-\x{1B41}\x{1B42}\x{1B43}-\x{1B44}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1B82}\x{1BA1}\x{1BA2}-\x{1BA5}\x{1BA6}-\x{1BA7}\x{1BA8}-\x{1BA9}\x{1BAA}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE7}\x{1BE8}-\x{1BE9}\x{1BEA}-\x{1BEC}\x{1BED}\x{1BEE}\x{1BEF}-\x{1BF1}\x{1BF2}-\x{1BF3}\x{1C24}-\x{1C2B}\x{1C2C}-\x{1C33}\x{1C34}-\x{1C35}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE1}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF7}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{302E}-\x{302F}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A823}-\x{A824}\x{A825}-\x{A826}\x{A827}\x{A82C}\x{A880}-\x{A881}\x{A8B4}-\x{A8C3}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A952}-\x{A953}\x{A980}-\x{A982}\x{A983}\x{A9B3}\x{A9B4}-\x{A9B5}\x{A9B6}-\x{A9B9}\x{A9BA}-\x{A9BB}\x{A9BC}-\x{A9BD}\x{A9BE}-\x{A9C0}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA2F}-\x{AA30}\x{AA31}-\x{AA32}\x{AA33}-\x{AA34}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA4D}\x{AA7B}\x{AA7C}\x{AA7D}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEB}\x{AAEC}-\x{AAED}\x{AAEE}-\x{AAEF}\x{AAF5}\x{AAF6}\x{ABE3}-\x{ABE4}\x{ABE5}\x{ABE6}-\x{ABE7}\x{ABE8}\x{ABE9}-\x{ABEA}\x{ABEC}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11000}\x{11001}\x{11002}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{11082}\x{110B0}-\x{110B2}\x{110B3}-\x{110B6}\x{110B7}-\x{110B8}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112C}\x{1112D}-\x{11134}\x{11145}-\x{11146}\x{11173}\x{11180}-\x{11181}\x{11182}\x{111B3}-\x{111B5}\x{111B6}-\x{111BE}\x{111BF}-\x{111C0}\x{111C9}-\x{111CC}\x{111CE}\x{111CF}\x{1122C}-\x{1122E}\x{1122F}-\x{11231}\x{11232}-\x{11233}\x{11234}\x{11235}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E0}-\x{112E2}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{11302}-\x{11303}\x{1133B}-\x{1133C}\x{1133E}-\x{1133F}\x{11340}\x{11341}-\x{11344}\x{11347}-\x{11348}\x{1134B}-\x{1134D}\x{11357}\x{11362}-\x{11363}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11435}-\x{11437}\x{11438}-\x{1143F}\x{11440}-\x{11441}\x{11442}-\x{11444}\x{11445}\x{11446}\x{1145E}\x{114B0}-\x{114B2}\x{114B3}-\x{114B8}\x{114B9}\x{114BA}\x{114BB}-\x{114BE}\x{114BF}-\x{114C0}\x{114C1}\x{114C2}-\x{114C3}\x{115AF}-\x{115B1}\x{115B2}-\x{115B5}\x{115B8}-\x{115BB}\x{115BC}-\x{115BD}\x{115BE}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11630}-\x{11632}\x{11633}-\x{1163A}\x{1163B}-\x{1163C}\x{1163D}\x{1163E}\x{1163F}-\x{11640}\x{116AB}\x{116AC}\x{116AD}\x{116AE}-\x{116AF}\x{116B0}-\x{116B5}\x{116B6}\x{116B7}\x{1171D}-\x{1171F}\x{11720}-\x{11721}\x{11722}-\x{11725}\x{11726}\x{11727}-\x{1172B}\x{1182C}-\x{1182E}\x{1182F}-\x{11837}\x{11838}\x{11839}-\x{1183A}\x{11930}-\x{11935}\x{11937}-\x{11938}\x{1193B}-\x{1193C}\x{1193D}\x{1193E}\x{11940}\x{11942}\x{11943}\x{119D1}-\x{119D3}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119DC}-\x{119DF}\x{119E0}\x{119E4}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A39}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A57}-\x{11A58}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A97}\x{11A98}-\x{11A99}\x{11C2F}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3E}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CA9}\x{11CAA}-\x{11CB0}\x{11CB1}\x{11CB2}-\x{11CB3}\x{11CB4}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D8A}-\x{11D8E}\x{11D90}-\x{11D91}\x{11D93}-\x{11D94}\x{11D95}\x{11D96}\x{11D97}\x{11EF3}-\x{11EF4}\x{11EF5}-\x{11EF6}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F51}-\x{16F87}\x{16F8F}-\x{16F92}\x{16FE4}\x{16FF0}-\x{16FF1}\x{1BC9D}-\x{1BC9E}\x{1D165}-\x{1D166}\x{1D167}-\x{1D169}\x{1D16D}-\x{1D172}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{E0100}-\x{E01EF}]/u';
-
- const RTL_LABEL = '/[\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06DD}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08E2}\x{200F}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}]/u';
-
- const BIDI_STEP_1_LTR = '/^[^\x{0000}-\x{0008}\x{0009}\x{000A}\x{000B}\x{000C}\x{000D}\x{000E}-\x{001B}\x{001C}-\x{001E}\x{001F}\x{0020}\x{0021}-\x{0022}\x{0023}\x{0024}\x{0025}\x{0026}-\x{0027}\x{0028}\x{0029}\x{002A}\x{002B}\x{002C}\x{002D}\x{002E}-\x{002F}\x{0030}-\x{0039}\x{003A}\x{003B}\x{003C}-\x{003E}\x{003F}-\x{0040}\x{005B}\x{005C}\x{005D}\x{005E}\x{005F}\x{0060}\x{007B}\x{007C}\x{007D}\x{007E}\x{007F}-\x{0084}\x{0085}\x{0086}-\x{009F}\x{00A0}\x{00A1}\x{00A2}-\x{00A5}\x{00A6}\x{00A7}\x{00A8}\x{00A9}\x{00AB}\x{00AC}\x{00AD}\x{00AE}\x{00AF}\x{00B0}\x{00B1}\x{00B2}-\x{00B3}\x{00B4}\x{00B6}-\x{00B7}\x{00B8}\x{00B9}\x{00BB}\x{00BC}-\x{00BE}\x{00BF}\x{00D7}\x{00F7}\x{02B9}-\x{02BA}\x{02C2}-\x{02C5}\x{02C6}-\x{02CF}\x{02D2}-\x{02DF}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037E}\x{0384}-\x{0385}\x{0387}\x{03F6}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{058A}\x{058D}-\x{058E}\x{058F}\x{0590}\x{0591}-\x{05BD}\x{05BE}\x{05BF}\x{05C0}\x{05C1}-\x{05C2}\x{05C3}\x{05C4}-\x{05C5}\x{05C6}\x{05C7}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0606}-\x{0607}\x{0608}\x{0609}-\x{060A}\x{060B}\x{060C}\x{060D}\x{060E}-\x{060F}\x{0610}-\x{061A}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{064B}-\x{065F}\x{0660}-\x{0669}\x{066A}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0670}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06D6}-\x{06DC}\x{06DD}\x{06DE}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06E9}\x{06EA}-\x{06ED}\x{06EE}-\x{06EF}\x{06F0}-\x{06F9}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0711}\x{0712}-\x{072F}\x{0730}-\x{074A}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07A6}-\x{07B0}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07F6}\x{07F7}-\x{07F9}\x{07FA}\x{07FB}-\x{07FC}\x{07FD}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{0859}-\x{085B}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08D3}-\x{08E1}\x{08E2}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09F2}-\x{09F3}\x{09FB}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AF1}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0BF3}-\x{0BF8}\x{0BF9}\x{0BFA}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C78}-\x{0C7E}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E3F}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3A}\x{0F3B}\x{0F3C}\x{0F3D}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1390}-\x{1399}\x{1400}\x{1680}\x{169B}\x{169C}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DB}\x{17DD}\x{17F0}-\x{17F9}\x{1800}-\x{1805}\x{1806}\x{1807}-\x{180A}\x{180B}-\x{180D}\x{180E}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1940}\x{1944}-\x{1945}\x{19DE}-\x{19FF}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{1FBD}\x{1FBF}-\x{1FC1}\x{1FCD}-\x{1FCF}\x{1FDD}-\x{1FDF}\x{1FED}-\x{1FEF}\x{1FFD}-\x{1FFE}\x{2000}-\x{200A}\x{200B}-\x{200D}\x{200F}\x{2010}-\x{2015}\x{2016}-\x{2017}\x{2018}\x{2019}\x{201A}\x{201B}-\x{201C}\x{201D}\x{201E}\x{201F}\x{2020}-\x{2027}\x{2028}\x{2029}\x{202A}\x{202B}\x{202C}\x{202D}\x{202E}\x{202F}\x{2030}-\x{2034}\x{2035}-\x{2038}\x{2039}\x{203A}\x{203B}-\x{203E}\x{203F}-\x{2040}\x{2041}-\x{2043}\x{2044}\x{2045}\x{2046}\x{2047}-\x{2051}\x{2052}\x{2053}\x{2054}\x{2055}-\x{205E}\x{205F}\x{2060}-\x{2064}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}\x{206A}-\x{206F}\x{2070}\x{2074}-\x{2079}\x{207A}-\x{207B}\x{207C}\x{207D}\x{207E}\x{2080}-\x{2089}\x{208A}-\x{208B}\x{208C}\x{208D}\x{208E}\x{20A0}-\x{20BF}\x{20C0}-\x{20CF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2100}-\x{2101}\x{2103}-\x{2106}\x{2108}-\x{2109}\x{2114}\x{2116}-\x{2117}\x{2118}\x{211E}-\x{2123}\x{2125}\x{2127}\x{2129}\x{212E}\x{213A}-\x{213B}\x{2140}-\x{2144}\x{214A}\x{214B}\x{214C}-\x{214D}\x{2150}-\x{215F}\x{2189}\x{218A}-\x{218B}\x{2190}-\x{2194}\x{2195}-\x{2199}\x{219A}-\x{219B}\x{219C}-\x{219F}\x{21A0}\x{21A1}-\x{21A2}\x{21A3}\x{21A4}-\x{21A5}\x{21A6}\x{21A7}-\x{21AD}\x{21AE}\x{21AF}-\x{21CD}\x{21CE}-\x{21CF}\x{21D0}-\x{21D1}\x{21D2}\x{21D3}\x{21D4}\x{21D5}-\x{21F3}\x{21F4}-\x{2211}\x{2212}\x{2213}\x{2214}-\x{22FF}\x{2300}-\x{2307}\x{2308}\x{2309}\x{230A}\x{230B}\x{230C}-\x{231F}\x{2320}-\x{2321}\x{2322}-\x{2328}\x{2329}\x{232A}\x{232B}-\x{2335}\x{237B}\x{237C}\x{237D}-\x{2394}\x{2396}-\x{239A}\x{239B}-\x{23B3}\x{23B4}-\x{23DB}\x{23DC}-\x{23E1}\x{23E2}-\x{2426}\x{2440}-\x{244A}\x{2460}-\x{2487}\x{2488}-\x{249B}\x{24EA}-\x{24FF}\x{2500}-\x{25B6}\x{25B7}\x{25B8}-\x{25C0}\x{25C1}\x{25C2}-\x{25F7}\x{25F8}-\x{25FF}\x{2600}-\x{266E}\x{266F}\x{2670}-\x{26AB}\x{26AD}-\x{2767}\x{2768}\x{2769}\x{276A}\x{276B}\x{276C}\x{276D}\x{276E}\x{276F}\x{2770}\x{2771}\x{2772}\x{2773}\x{2774}\x{2775}\x{2776}-\x{2793}\x{2794}-\x{27BF}\x{27C0}-\x{27C4}\x{27C5}\x{27C6}\x{27C7}-\x{27E5}\x{27E6}\x{27E7}\x{27E8}\x{27E9}\x{27EA}\x{27EB}\x{27EC}\x{27ED}\x{27EE}\x{27EF}\x{27F0}-\x{27FF}\x{2900}-\x{2982}\x{2983}\x{2984}\x{2985}\x{2986}\x{2987}\x{2988}\x{2989}\x{298A}\x{298B}\x{298C}\x{298D}\x{298E}\x{298F}\x{2990}\x{2991}\x{2992}\x{2993}\x{2994}\x{2995}\x{2996}\x{2997}\x{2998}\x{2999}-\x{29D7}\x{29D8}\x{29D9}\x{29DA}\x{29DB}\x{29DC}-\x{29FB}\x{29FC}\x{29FD}\x{29FE}-\x{2AFF}\x{2B00}-\x{2B2F}\x{2B30}-\x{2B44}\x{2B45}-\x{2B46}\x{2B47}-\x{2B4C}\x{2B4D}-\x{2B73}\x{2B76}-\x{2B95}\x{2B97}-\x{2BFF}\x{2CE5}-\x{2CEA}\x{2CEF}-\x{2CF1}\x{2CF9}-\x{2CFC}\x{2CFD}\x{2CFE}-\x{2CFF}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E00}-\x{2E01}\x{2E02}\x{2E03}\x{2E04}\x{2E05}\x{2E06}-\x{2E08}\x{2E09}\x{2E0A}\x{2E0B}\x{2E0C}\x{2E0D}\x{2E0E}-\x{2E16}\x{2E17}\x{2E18}-\x{2E19}\x{2E1A}\x{2E1B}\x{2E1C}\x{2E1D}\x{2E1E}-\x{2E1F}\x{2E20}\x{2E21}\x{2E22}\x{2E23}\x{2E24}\x{2E25}\x{2E26}\x{2E27}\x{2E28}\x{2E29}\x{2E2A}-\x{2E2E}\x{2E2F}\x{2E30}-\x{2E39}\x{2E3A}-\x{2E3B}\x{2E3C}-\x{2E3F}\x{2E40}\x{2E41}\x{2E42}\x{2E43}-\x{2E4F}\x{2E50}-\x{2E51}\x{2E52}\x{2E80}-\x{2E99}\x{2E9B}-\x{2EF3}\x{2F00}-\x{2FD5}\x{2FF0}-\x{2FFB}\x{3000}\x{3001}-\x{3003}\x{3004}\x{3008}\x{3009}\x{300A}\x{300B}\x{300C}\x{300D}\x{300E}\x{300F}\x{3010}\x{3011}\x{3012}-\x{3013}\x{3014}\x{3015}\x{3016}\x{3017}\x{3018}\x{3019}\x{301A}\x{301B}\x{301C}\x{301D}\x{301E}-\x{301F}\x{3020}\x{302A}-\x{302D}\x{3030}\x{3036}-\x{3037}\x{303D}\x{303E}-\x{303F}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{30A0}\x{30FB}\x{31C0}-\x{31E3}\x{321D}-\x{321E}\x{3250}\x{3251}-\x{325F}\x{327C}-\x{327E}\x{32B1}-\x{32BF}\x{32CC}-\x{32CF}\x{3377}-\x{337A}\x{33DE}-\x{33DF}\x{33FF}\x{4DC0}-\x{4DFF}\x{A490}-\x{A4C6}\x{A60D}-\x{A60F}\x{A66F}\x{A670}-\x{A672}\x{A673}\x{A674}-\x{A67D}\x{A67E}\x{A67F}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A788}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A828}-\x{A82B}\x{A82C}\x{A838}\x{A839}\x{A874}-\x{A877}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{AB6A}-\x{AB6B}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1D}\x{FB1E}\x{FB1F}-\x{FB28}\x{FB29}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD3E}\x{FD3F}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDD0}-\x{FDEF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFD}\x{FDFE}-\x{FDFF}\x{FE00}-\x{FE0F}\x{FE10}-\x{FE16}\x{FE17}\x{FE18}\x{FE19}\x{FE20}-\x{FE2F}\x{FE30}\x{FE31}-\x{FE32}\x{FE33}-\x{FE34}\x{FE35}\x{FE36}\x{FE37}\x{FE38}\x{FE39}\x{FE3A}\x{FE3B}\x{FE3C}\x{FE3D}\x{FE3E}\x{FE3F}\x{FE40}\x{FE41}\x{FE42}\x{FE43}\x{FE44}\x{FE45}-\x{FE46}\x{FE47}\x{FE48}\x{FE49}-\x{FE4C}\x{FE4D}-\x{FE4F}\x{FE50}\x{FE51}\x{FE52}\x{FE54}\x{FE55}\x{FE56}-\x{FE57}\x{FE58}\x{FE59}\x{FE5A}\x{FE5B}\x{FE5C}\x{FE5D}\x{FE5E}\x{FE5F}\x{FE60}-\x{FE61}\x{FE62}\x{FE63}\x{FE64}-\x{FE66}\x{FE68}\x{FE69}\x{FE6A}\x{FE6B}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FEFF}\x{FF01}-\x{FF02}\x{FF03}\x{FF04}\x{FF05}\x{FF06}-\x{FF07}\x{FF08}\x{FF09}\x{FF0A}\x{FF0B}\x{FF0C}\x{FF0D}\x{FF0E}-\x{FF0F}\x{FF10}-\x{FF19}\x{FF1A}\x{FF1B}\x{FF1C}-\x{FF1E}\x{FF1F}-\x{FF20}\x{FF3B}\x{FF3C}\x{FF3D}\x{FF3E}\x{FF3F}\x{FF40}\x{FF5B}\x{FF5C}\x{FF5D}\x{FF5E}\x{FF5F}\x{FF60}\x{FF61}\x{FF62}\x{FF63}\x{FF64}-\x{FF65}\x{FFE0}-\x{FFE1}\x{FFE2}\x{FFE3}\x{FFE4}\x{FFE5}-\x{FFE6}\x{FFE8}\x{FFE9}-\x{FFEC}\x{FFED}-\x{FFEE}\x{FFF0}-\x{FFF8}\x{FFF9}-\x{FFFB}\x{FFFC}-\x{FFFD}\x{FFFE}-\x{FFFF}\x{10101}\x{10140}-\x{10174}\x{10175}-\x{10178}\x{10179}-\x{10189}\x{1018A}-\x{1018B}\x{1018C}\x{10190}-\x{1019C}\x{101A0}\x{101FD}\x{102E0}\x{102E1}-\x{102FB}\x{10376}-\x{1037A}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{1091F}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A01}-\x{10A03}\x{10A04}\x{10A05}-\x{10A06}\x{10A07}-\x{10A0B}\x{10A0C}-\x{10A0F}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A38}-\x{10A3A}\x{10A3B}-\x{10A3E}\x{10A3F}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE5}-\x{10AE6}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B39}-\x{10B3F}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D24}-\x{10D27}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAB}-\x{10EAC}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F46}-\x{10F50}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{11001}\x{11038}-\x{11046}\x{11052}-\x{11065}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{11660}-\x{1166C}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{11FD5}-\x{11FDC}\x{11FDD}-\x{11FE0}\x{11FE1}-\x{11FF1}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE2}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D200}-\x{1D241}\x{1D242}-\x{1D244}\x{1D245}\x{1D300}-\x{1D356}\x{1D6DB}\x{1D715}\x{1D74F}\x{1D789}\x{1D7C3}\x{1D7CE}-\x{1D7FF}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E2FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D0}-\x{1E8D6}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E944}-\x{1E94A}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF0}-\x{1EEF1}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F000}-\x{1F02B}\x{1F030}-\x{1F093}\x{1F0A0}-\x{1F0AE}\x{1F0B1}-\x{1F0BF}\x{1F0C1}-\x{1F0CF}\x{1F0D1}-\x{1F0F5}\x{1F100}-\x{1F10A}\x{1F10B}-\x{1F10C}\x{1F10D}-\x{1F10F}\x{1F12F}\x{1F16A}-\x{1F16F}\x{1F1AD}\x{1F260}-\x{1F265}\x{1F300}-\x{1F3FA}\x{1F3FB}-\x{1F3FF}\x{1F400}-\x{1F6D7}\x{1F6E0}-\x{1F6EC}\x{1F6F0}-\x{1F6FC}\x{1F700}-\x{1F773}\x{1F780}-\x{1F7D8}\x{1F7E0}-\x{1F7EB}\x{1F800}-\x{1F80B}\x{1F810}-\x{1F847}\x{1F850}-\x{1F859}\x{1F860}-\x{1F887}\x{1F890}-\x{1F8AD}\x{1F8B0}-\x{1F8B1}\x{1F900}-\x{1F978}\x{1F97A}-\x{1F9CB}\x{1F9CD}-\x{1FA53}\x{1FA60}-\x{1FA6D}\x{1FA70}-\x{1FA74}\x{1FA78}-\x{1FA7A}\x{1FA80}-\x{1FA86}\x{1FA90}-\x{1FAA8}\x{1FAB0}-\x{1FAB6}\x{1FAC0}-\x{1FAC2}\x{1FAD0}-\x{1FAD6}\x{1FB00}-\x{1FB92}\x{1FB94}-\x{1FBCA}\x{1FBF0}-\x{1FBF9}\x{1FFFE}-\x{1FFFF}\x{2FFFE}-\x{2FFFF}\x{3FFFE}-\x{3FFFF}\x{4FFFE}-\x{4FFFF}\x{5FFFE}-\x{5FFFF}\x{6FFFE}-\x{6FFFF}\x{7FFFE}-\x{7FFFF}\x{8FFFE}-\x{8FFFF}\x{9FFFE}-\x{9FFFF}\x{AFFFE}-\x{AFFFF}\x{BFFFE}-\x{BFFFF}\x{CFFFE}-\x{CFFFF}\x{DFFFE}-\x{E0000}\x{E0001}\x{E0002}-\x{E001F}\x{E0020}-\x{E007F}\x{E0080}-\x{E00FF}\x{E0100}-\x{E01EF}\x{E01F0}-\x{E0FFF}\x{EFFFE}-\x{EFFFF}\x{FFFFE}-\x{FFFFF}\x{10FFFE}-\x{10FFFF}]/u';
- const BIDI_STEP_1_RTL = '/^[\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{200F}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}]/u';
- const BIDI_STEP_2 = '/[^\x{0000}-\x{0008}\x{000E}-\x{001B}\x{0021}-\x{0022}\x{0023}\x{0024}\x{0025}\x{0026}-\x{0027}\x{0028}\x{0029}\x{002A}\x{002B}\x{002C}\x{002D}\x{002E}-\x{002F}\x{0030}-\x{0039}\x{003A}\x{003B}\x{003C}-\x{003E}\x{003F}-\x{0040}\x{005B}\x{005C}\x{005D}\x{005E}\x{005F}\x{0060}\x{007B}\x{007C}\x{007D}\x{007E}\x{007F}-\x{0084}\x{0086}-\x{009F}\x{00A0}\x{00A1}\x{00A2}-\x{00A5}\x{00A6}\x{00A7}\x{00A8}\x{00A9}\x{00AB}\x{00AC}\x{00AD}\x{00AE}\x{00AF}\x{00B0}\x{00B1}\x{00B2}-\x{00B3}\x{00B4}\x{00B6}-\x{00B7}\x{00B8}\x{00B9}\x{00BB}\x{00BC}-\x{00BE}\x{00BF}\x{00D7}\x{00F7}\x{02B9}-\x{02BA}\x{02C2}-\x{02C5}\x{02C6}-\x{02CF}\x{02D2}-\x{02DF}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037E}\x{0384}-\x{0385}\x{0387}\x{03F6}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{058A}\x{058D}-\x{058E}\x{058F}\x{0590}\x{0591}-\x{05BD}\x{05BE}\x{05BF}\x{05C0}\x{05C1}-\x{05C2}\x{05C3}\x{05C4}-\x{05C5}\x{05C6}\x{05C7}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0606}-\x{0607}\x{0608}\x{0609}-\x{060A}\x{060B}\x{060C}\x{060D}\x{060E}-\x{060F}\x{0610}-\x{061A}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{064B}-\x{065F}\x{0660}-\x{0669}\x{066A}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0670}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06D6}-\x{06DC}\x{06DD}\x{06DE}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06E9}\x{06EA}-\x{06ED}\x{06EE}-\x{06EF}\x{06F0}-\x{06F9}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0711}\x{0712}-\x{072F}\x{0730}-\x{074A}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07A6}-\x{07B0}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07F6}\x{07F7}-\x{07F9}\x{07FA}\x{07FB}-\x{07FC}\x{07FD}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{0859}-\x{085B}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08D3}-\x{08E1}\x{08E2}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09F2}-\x{09F3}\x{09FB}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AF1}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0BF3}-\x{0BF8}\x{0BF9}\x{0BFA}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C78}-\x{0C7E}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E3F}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3A}\x{0F3B}\x{0F3C}\x{0F3D}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1390}-\x{1399}\x{1400}\x{169B}\x{169C}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DB}\x{17DD}\x{17F0}-\x{17F9}\x{1800}-\x{1805}\x{1806}\x{1807}-\x{180A}\x{180B}-\x{180D}\x{180E}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1940}\x{1944}-\x{1945}\x{19DE}-\x{19FF}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{1FBD}\x{1FBF}-\x{1FC1}\x{1FCD}-\x{1FCF}\x{1FDD}-\x{1FDF}\x{1FED}-\x{1FEF}\x{1FFD}-\x{1FFE}\x{200B}-\x{200D}\x{200F}\x{2010}-\x{2015}\x{2016}-\x{2017}\x{2018}\x{2019}\x{201A}\x{201B}-\x{201C}\x{201D}\x{201E}\x{201F}\x{2020}-\x{2027}\x{202F}\x{2030}-\x{2034}\x{2035}-\x{2038}\x{2039}\x{203A}\x{203B}-\x{203E}\x{203F}-\x{2040}\x{2041}-\x{2043}\x{2044}\x{2045}\x{2046}\x{2047}-\x{2051}\x{2052}\x{2053}\x{2054}\x{2055}-\x{205E}\x{2060}-\x{2064}\x{2065}\x{206A}-\x{206F}\x{2070}\x{2074}-\x{2079}\x{207A}-\x{207B}\x{207C}\x{207D}\x{207E}\x{2080}-\x{2089}\x{208A}-\x{208B}\x{208C}\x{208D}\x{208E}\x{20A0}-\x{20BF}\x{20C0}-\x{20CF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2100}-\x{2101}\x{2103}-\x{2106}\x{2108}-\x{2109}\x{2114}\x{2116}-\x{2117}\x{2118}\x{211E}-\x{2123}\x{2125}\x{2127}\x{2129}\x{212E}\x{213A}-\x{213B}\x{2140}-\x{2144}\x{214A}\x{214B}\x{214C}-\x{214D}\x{2150}-\x{215F}\x{2189}\x{218A}-\x{218B}\x{2190}-\x{2194}\x{2195}-\x{2199}\x{219A}-\x{219B}\x{219C}-\x{219F}\x{21A0}\x{21A1}-\x{21A2}\x{21A3}\x{21A4}-\x{21A5}\x{21A6}\x{21A7}-\x{21AD}\x{21AE}\x{21AF}-\x{21CD}\x{21CE}-\x{21CF}\x{21D0}-\x{21D1}\x{21D2}\x{21D3}\x{21D4}\x{21D5}-\x{21F3}\x{21F4}-\x{2211}\x{2212}\x{2213}\x{2214}-\x{22FF}\x{2300}-\x{2307}\x{2308}\x{2309}\x{230A}\x{230B}\x{230C}-\x{231F}\x{2320}-\x{2321}\x{2322}-\x{2328}\x{2329}\x{232A}\x{232B}-\x{2335}\x{237B}\x{237C}\x{237D}-\x{2394}\x{2396}-\x{239A}\x{239B}-\x{23B3}\x{23B4}-\x{23DB}\x{23DC}-\x{23E1}\x{23E2}-\x{2426}\x{2440}-\x{244A}\x{2460}-\x{2487}\x{2488}-\x{249B}\x{24EA}-\x{24FF}\x{2500}-\x{25B6}\x{25B7}\x{25B8}-\x{25C0}\x{25C1}\x{25C2}-\x{25F7}\x{25F8}-\x{25FF}\x{2600}-\x{266E}\x{266F}\x{2670}-\x{26AB}\x{26AD}-\x{2767}\x{2768}\x{2769}\x{276A}\x{276B}\x{276C}\x{276D}\x{276E}\x{276F}\x{2770}\x{2771}\x{2772}\x{2773}\x{2774}\x{2775}\x{2776}-\x{2793}\x{2794}-\x{27BF}\x{27C0}-\x{27C4}\x{27C5}\x{27C6}\x{27C7}-\x{27E5}\x{27E6}\x{27E7}\x{27E8}\x{27E9}\x{27EA}\x{27EB}\x{27EC}\x{27ED}\x{27EE}\x{27EF}\x{27F0}-\x{27FF}\x{2900}-\x{2982}\x{2983}\x{2984}\x{2985}\x{2986}\x{2987}\x{2988}\x{2989}\x{298A}\x{298B}\x{298C}\x{298D}\x{298E}\x{298F}\x{2990}\x{2991}\x{2992}\x{2993}\x{2994}\x{2995}\x{2996}\x{2997}\x{2998}\x{2999}-\x{29D7}\x{29D8}\x{29D9}\x{29DA}\x{29DB}\x{29DC}-\x{29FB}\x{29FC}\x{29FD}\x{29FE}-\x{2AFF}\x{2B00}-\x{2B2F}\x{2B30}-\x{2B44}\x{2B45}-\x{2B46}\x{2B47}-\x{2B4C}\x{2B4D}-\x{2B73}\x{2B76}-\x{2B95}\x{2B97}-\x{2BFF}\x{2CE5}-\x{2CEA}\x{2CEF}-\x{2CF1}\x{2CF9}-\x{2CFC}\x{2CFD}\x{2CFE}-\x{2CFF}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E00}-\x{2E01}\x{2E02}\x{2E03}\x{2E04}\x{2E05}\x{2E06}-\x{2E08}\x{2E09}\x{2E0A}\x{2E0B}\x{2E0C}\x{2E0D}\x{2E0E}-\x{2E16}\x{2E17}\x{2E18}-\x{2E19}\x{2E1A}\x{2E1B}\x{2E1C}\x{2E1D}\x{2E1E}-\x{2E1F}\x{2E20}\x{2E21}\x{2E22}\x{2E23}\x{2E24}\x{2E25}\x{2E26}\x{2E27}\x{2E28}\x{2E29}\x{2E2A}-\x{2E2E}\x{2E2F}\x{2E30}-\x{2E39}\x{2E3A}-\x{2E3B}\x{2E3C}-\x{2E3F}\x{2E40}\x{2E41}\x{2E42}\x{2E43}-\x{2E4F}\x{2E50}-\x{2E51}\x{2E52}\x{2E80}-\x{2E99}\x{2E9B}-\x{2EF3}\x{2F00}-\x{2FD5}\x{2FF0}-\x{2FFB}\x{3001}-\x{3003}\x{3004}\x{3008}\x{3009}\x{300A}\x{300B}\x{300C}\x{300D}\x{300E}\x{300F}\x{3010}\x{3011}\x{3012}-\x{3013}\x{3014}\x{3015}\x{3016}\x{3017}\x{3018}\x{3019}\x{301A}\x{301B}\x{301C}\x{301D}\x{301E}-\x{301F}\x{3020}\x{302A}-\x{302D}\x{3030}\x{3036}-\x{3037}\x{303D}\x{303E}-\x{303F}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{30A0}\x{30FB}\x{31C0}-\x{31E3}\x{321D}-\x{321E}\x{3250}\x{3251}-\x{325F}\x{327C}-\x{327E}\x{32B1}-\x{32BF}\x{32CC}-\x{32CF}\x{3377}-\x{337A}\x{33DE}-\x{33DF}\x{33FF}\x{4DC0}-\x{4DFF}\x{A490}-\x{A4C6}\x{A60D}-\x{A60F}\x{A66F}\x{A670}-\x{A672}\x{A673}\x{A674}-\x{A67D}\x{A67E}\x{A67F}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A788}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A828}-\x{A82B}\x{A82C}\x{A838}\x{A839}\x{A874}-\x{A877}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{AB6A}-\x{AB6B}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1D}\x{FB1E}\x{FB1F}-\x{FB28}\x{FB29}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD3E}\x{FD3F}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDD0}-\x{FDEF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFD}\x{FDFE}-\x{FDFF}\x{FE00}-\x{FE0F}\x{FE10}-\x{FE16}\x{FE17}\x{FE18}\x{FE19}\x{FE20}-\x{FE2F}\x{FE30}\x{FE31}-\x{FE32}\x{FE33}-\x{FE34}\x{FE35}\x{FE36}\x{FE37}\x{FE38}\x{FE39}\x{FE3A}\x{FE3B}\x{FE3C}\x{FE3D}\x{FE3E}\x{FE3F}\x{FE40}\x{FE41}\x{FE42}\x{FE43}\x{FE44}\x{FE45}-\x{FE46}\x{FE47}\x{FE48}\x{FE49}-\x{FE4C}\x{FE4D}-\x{FE4F}\x{FE50}\x{FE51}\x{FE52}\x{FE54}\x{FE55}\x{FE56}-\x{FE57}\x{FE58}\x{FE59}\x{FE5A}\x{FE5B}\x{FE5C}\x{FE5D}\x{FE5E}\x{FE5F}\x{FE60}-\x{FE61}\x{FE62}\x{FE63}\x{FE64}-\x{FE66}\x{FE68}\x{FE69}\x{FE6A}\x{FE6B}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FEFF}\x{FF01}-\x{FF02}\x{FF03}\x{FF04}\x{FF05}\x{FF06}-\x{FF07}\x{FF08}\x{FF09}\x{FF0A}\x{FF0B}\x{FF0C}\x{FF0D}\x{FF0E}-\x{FF0F}\x{FF10}-\x{FF19}\x{FF1A}\x{FF1B}\x{FF1C}-\x{FF1E}\x{FF1F}-\x{FF20}\x{FF3B}\x{FF3C}\x{FF3D}\x{FF3E}\x{FF3F}\x{FF40}\x{FF5B}\x{FF5C}\x{FF5D}\x{FF5E}\x{FF5F}\x{FF60}\x{FF61}\x{FF62}\x{FF63}\x{FF64}-\x{FF65}\x{FFE0}-\x{FFE1}\x{FFE2}\x{FFE3}\x{FFE4}\x{FFE5}-\x{FFE6}\x{FFE8}\x{FFE9}-\x{FFEC}\x{FFED}-\x{FFEE}\x{FFF0}-\x{FFF8}\x{FFF9}-\x{FFFB}\x{FFFC}-\x{FFFD}\x{FFFE}-\x{FFFF}\x{10101}\x{10140}-\x{10174}\x{10175}-\x{10178}\x{10179}-\x{10189}\x{1018A}-\x{1018B}\x{1018C}\x{10190}-\x{1019C}\x{101A0}\x{101FD}\x{102E0}\x{102E1}-\x{102FB}\x{10376}-\x{1037A}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{1091F}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A01}-\x{10A03}\x{10A04}\x{10A05}-\x{10A06}\x{10A07}-\x{10A0B}\x{10A0C}-\x{10A0F}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A38}-\x{10A3A}\x{10A3B}-\x{10A3E}\x{10A3F}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE5}-\x{10AE6}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B39}-\x{10B3F}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D24}-\x{10D27}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAB}-\x{10EAC}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F46}-\x{10F50}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{11001}\x{11038}-\x{11046}\x{11052}-\x{11065}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{11660}-\x{1166C}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{11FD5}-\x{11FDC}\x{11FDD}-\x{11FE0}\x{11FE1}-\x{11FF1}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE2}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D200}-\x{1D241}\x{1D242}-\x{1D244}\x{1D245}\x{1D300}-\x{1D356}\x{1D6DB}\x{1D715}\x{1D74F}\x{1D789}\x{1D7C3}\x{1D7CE}-\x{1D7FF}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E2FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D0}-\x{1E8D6}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E944}-\x{1E94A}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF0}-\x{1EEF1}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F000}-\x{1F02B}\x{1F030}-\x{1F093}\x{1F0A0}-\x{1F0AE}\x{1F0B1}-\x{1F0BF}\x{1F0C1}-\x{1F0CF}\x{1F0D1}-\x{1F0F5}\x{1F100}-\x{1F10A}\x{1F10B}-\x{1F10C}\x{1F10D}-\x{1F10F}\x{1F12F}\x{1F16A}-\x{1F16F}\x{1F1AD}\x{1F260}-\x{1F265}\x{1F300}-\x{1F3FA}\x{1F3FB}-\x{1F3FF}\x{1F400}-\x{1F6D7}\x{1F6E0}-\x{1F6EC}\x{1F6F0}-\x{1F6FC}\x{1F700}-\x{1F773}\x{1F780}-\x{1F7D8}\x{1F7E0}-\x{1F7EB}\x{1F800}-\x{1F80B}\x{1F810}-\x{1F847}\x{1F850}-\x{1F859}\x{1F860}-\x{1F887}\x{1F890}-\x{1F8AD}\x{1F8B0}-\x{1F8B1}\x{1F900}-\x{1F978}\x{1F97A}-\x{1F9CB}\x{1F9CD}-\x{1FA53}\x{1FA60}-\x{1FA6D}\x{1FA70}-\x{1FA74}\x{1FA78}-\x{1FA7A}\x{1FA80}-\x{1FA86}\x{1FA90}-\x{1FAA8}\x{1FAB0}-\x{1FAB6}\x{1FAC0}-\x{1FAC2}\x{1FAD0}-\x{1FAD6}\x{1FB00}-\x{1FB92}\x{1FB94}-\x{1FBCA}\x{1FBF0}-\x{1FBF9}\x{1FFFE}-\x{1FFFF}\x{2FFFE}-\x{2FFFF}\x{3FFFE}-\x{3FFFF}\x{4FFFE}-\x{4FFFF}\x{5FFFE}-\x{5FFFF}\x{6FFFE}-\x{6FFFF}\x{7FFFE}-\x{7FFFF}\x{8FFFE}-\x{8FFFF}\x{9FFFE}-\x{9FFFF}\x{AFFFE}-\x{AFFFF}\x{BFFFE}-\x{BFFFF}\x{CFFFE}-\x{CFFFF}\x{DFFFE}-\x{E0000}\x{E0001}\x{E0002}-\x{E001F}\x{E0020}-\x{E007F}\x{E0080}-\x{E00FF}\x{E0100}-\x{E01EF}\x{E01F0}-\x{E0FFF}\x{EFFFE}-\x{EFFFF}\x{FFFFE}-\x{FFFFF}\x{10FFFE}-\x{10FFFF}]/u';
- const BIDI_STEP_3 = '/[\x{0030}-\x{0039}\x{00B2}-\x{00B3}\x{00B9}\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06DD}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06F0}-\x{06F9}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08E2}\x{200F}\x{2070}\x{2074}-\x{2079}\x{2080}-\x{2089}\x{2488}-\x{249B}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FF10}-\x{FF19}\x{102E1}-\x{102FB}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1D7CE}-\x{1D7FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F100}-\x{1F10A}\x{1FBF0}-\x{1FBF9}][\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1D167}-\x{1D169}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{E0100}-\x{E01EF}]*$/u';
- const BIDI_STEP_4_AN = '/[\x{0600}-\x{0605}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{06DD}\x{08E2}\x{10D30}-\x{10D39}\x{10E60}-\x{10E7E}]/u';
- const BIDI_STEP_4_EN = '/[\x{0030}-\x{0039}\x{00B2}-\x{00B3}\x{00B9}\x{06F0}-\x{06F9}\x{2070}\x{2074}-\x{2079}\x{2080}-\x{2089}\x{2488}-\x{249B}\x{FF10}-\x{FF19}\x{102E1}-\x{102FB}\x{1D7CE}-\x{1D7FF}\x{1F100}-\x{1F10A}\x{1FBF0}-\x{1FBF9}]/u';
- const BIDI_STEP_5 = '/[\x{0009}\x{000A}\x{000B}\x{000C}\x{000D}\x{001C}-\x{001E}\x{001F}\x{0020}\x{0085}\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06DD}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08E2}\x{1680}\x{2000}-\x{200A}\x{200F}\x{2028}\x{2029}\x{202A}\x{202B}\x{202C}\x{202D}\x{202E}\x{205F}\x{2066}\x{2067}\x{2068}\x{2069}\x{3000}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}]/u';
- const BIDI_STEP_6 = '/[^\x{0000}-\x{0008}\x{0009}\x{000A}\x{000B}\x{000C}\x{000D}\x{000E}-\x{001B}\x{001C}-\x{001E}\x{001F}\x{0020}\x{0021}-\x{0022}\x{0023}\x{0024}\x{0025}\x{0026}-\x{0027}\x{0028}\x{0029}\x{002A}\x{002B}\x{002C}\x{002D}\x{002E}-\x{002F}\x{003A}\x{003B}\x{003C}-\x{003E}\x{003F}-\x{0040}\x{005B}\x{005C}\x{005D}\x{005E}\x{005F}\x{0060}\x{007B}\x{007C}\x{007D}\x{007E}\x{007F}-\x{0084}\x{0085}\x{0086}-\x{009F}\x{00A0}\x{00A1}\x{00A2}-\x{00A5}\x{00A6}\x{00A7}\x{00A8}\x{00A9}\x{00AB}\x{00AC}\x{00AD}\x{00AE}\x{00AF}\x{00B0}\x{00B1}\x{00B4}\x{00B6}-\x{00B7}\x{00B8}\x{00BB}\x{00BC}-\x{00BE}\x{00BF}\x{00D7}\x{00F7}\x{02B9}-\x{02BA}\x{02C2}-\x{02C5}\x{02C6}-\x{02CF}\x{02D2}-\x{02DF}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037E}\x{0384}-\x{0385}\x{0387}\x{03F6}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{058A}\x{058D}-\x{058E}\x{058F}\x{0590}\x{0591}-\x{05BD}\x{05BE}\x{05BF}\x{05C0}\x{05C1}-\x{05C2}\x{05C3}\x{05C4}-\x{05C5}\x{05C6}\x{05C7}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0606}-\x{0607}\x{0608}\x{0609}-\x{060A}\x{060B}\x{060C}\x{060D}\x{060E}-\x{060F}\x{0610}-\x{061A}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{064B}-\x{065F}\x{0660}-\x{0669}\x{066A}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0670}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06D6}-\x{06DC}\x{06DD}\x{06DE}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06E9}\x{06EA}-\x{06ED}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0711}\x{0712}-\x{072F}\x{0730}-\x{074A}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07A6}-\x{07B0}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07F6}\x{07F7}-\x{07F9}\x{07FA}\x{07FB}-\x{07FC}\x{07FD}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{0859}-\x{085B}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08D3}-\x{08E1}\x{08E2}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09F2}-\x{09F3}\x{09FB}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AF1}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0BF3}-\x{0BF8}\x{0BF9}\x{0BFA}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C78}-\x{0C7E}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E3F}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3A}\x{0F3B}\x{0F3C}\x{0F3D}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1390}-\x{1399}\x{1400}\x{1680}\x{169B}\x{169C}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DB}\x{17DD}\x{17F0}-\x{17F9}\x{1800}-\x{1805}\x{1806}\x{1807}-\x{180A}\x{180B}-\x{180D}\x{180E}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1940}\x{1944}-\x{1945}\x{19DE}-\x{19FF}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{1FBD}\x{1FBF}-\x{1FC1}\x{1FCD}-\x{1FCF}\x{1FDD}-\x{1FDF}\x{1FED}-\x{1FEF}\x{1FFD}-\x{1FFE}\x{2000}-\x{200A}\x{200B}-\x{200D}\x{200F}\x{2010}-\x{2015}\x{2016}-\x{2017}\x{2018}\x{2019}\x{201A}\x{201B}-\x{201C}\x{201D}\x{201E}\x{201F}\x{2020}-\x{2027}\x{2028}\x{2029}\x{202A}\x{202B}\x{202C}\x{202D}\x{202E}\x{202F}\x{2030}-\x{2034}\x{2035}-\x{2038}\x{2039}\x{203A}\x{203B}-\x{203E}\x{203F}-\x{2040}\x{2041}-\x{2043}\x{2044}\x{2045}\x{2046}\x{2047}-\x{2051}\x{2052}\x{2053}\x{2054}\x{2055}-\x{205E}\x{205F}\x{2060}-\x{2064}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}\x{206A}-\x{206F}\x{207A}-\x{207B}\x{207C}\x{207D}\x{207E}\x{208A}-\x{208B}\x{208C}\x{208D}\x{208E}\x{20A0}-\x{20BF}\x{20C0}-\x{20CF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2100}-\x{2101}\x{2103}-\x{2106}\x{2108}-\x{2109}\x{2114}\x{2116}-\x{2117}\x{2118}\x{211E}-\x{2123}\x{2125}\x{2127}\x{2129}\x{212E}\x{213A}-\x{213B}\x{2140}-\x{2144}\x{214A}\x{214B}\x{214C}-\x{214D}\x{2150}-\x{215F}\x{2189}\x{218A}-\x{218B}\x{2190}-\x{2194}\x{2195}-\x{2199}\x{219A}-\x{219B}\x{219C}-\x{219F}\x{21A0}\x{21A1}-\x{21A2}\x{21A3}\x{21A4}-\x{21A5}\x{21A6}\x{21A7}-\x{21AD}\x{21AE}\x{21AF}-\x{21CD}\x{21CE}-\x{21CF}\x{21D0}-\x{21D1}\x{21D2}\x{21D3}\x{21D4}\x{21D5}-\x{21F3}\x{21F4}-\x{2211}\x{2212}\x{2213}\x{2214}-\x{22FF}\x{2300}-\x{2307}\x{2308}\x{2309}\x{230A}\x{230B}\x{230C}-\x{231F}\x{2320}-\x{2321}\x{2322}-\x{2328}\x{2329}\x{232A}\x{232B}-\x{2335}\x{237B}\x{237C}\x{237D}-\x{2394}\x{2396}-\x{239A}\x{239B}-\x{23B3}\x{23B4}-\x{23DB}\x{23DC}-\x{23E1}\x{23E2}-\x{2426}\x{2440}-\x{244A}\x{2460}-\x{2487}\x{24EA}-\x{24FF}\x{2500}-\x{25B6}\x{25B7}\x{25B8}-\x{25C0}\x{25C1}\x{25C2}-\x{25F7}\x{25F8}-\x{25FF}\x{2600}-\x{266E}\x{266F}\x{2670}-\x{26AB}\x{26AD}-\x{2767}\x{2768}\x{2769}\x{276A}\x{276B}\x{276C}\x{276D}\x{276E}\x{276F}\x{2770}\x{2771}\x{2772}\x{2773}\x{2774}\x{2775}\x{2776}-\x{2793}\x{2794}-\x{27BF}\x{27C0}-\x{27C4}\x{27C5}\x{27C6}\x{27C7}-\x{27E5}\x{27E6}\x{27E7}\x{27E8}\x{27E9}\x{27EA}\x{27EB}\x{27EC}\x{27ED}\x{27EE}\x{27EF}\x{27F0}-\x{27FF}\x{2900}-\x{2982}\x{2983}\x{2984}\x{2985}\x{2986}\x{2987}\x{2988}\x{2989}\x{298A}\x{298B}\x{298C}\x{298D}\x{298E}\x{298F}\x{2990}\x{2991}\x{2992}\x{2993}\x{2994}\x{2995}\x{2996}\x{2997}\x{2998}\x{2999}-\x{29D7}\x{29D8}\x{29D9}\x{29DA}\x{29DB}\x{29DC}-\x{29FB}\x{29FC}\x{29FD}\x{29FE}-\x{2AFF}\x{2B00}-\x{2B2F}\x{2B30}-\x{2B44}\x{2B45}-\x{2B46}\x{2B47}-\x{2B4C}\x{2B4D}-\x{2B73}\x{2B76}-\x{2B95}\x{2B97}-\x{2BFF}\x{2CE5}-\x{2CEA}\x{2CEF}-\x{2CF1}\x{2CF9}-\x{2CFC}\x{2CFD}\x{2CFE}-\x{2CFF}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E00}-\x{2E01}\x{2E02}\x{2E03}\x{2E04}\x{2E05}\x{2E06}-\x{2E08}\x{2E09}\x{2E0A}\x{2E0B}\x{2E0C}\x{2E0D}\x{2E0E}-\x{2E16}\x{2E17}\x{2E18}-\x{2E19}\x{2E1A}\x{2E1B}\x{2E1C}\x{2E1D}\x{2E1E}-\x{2E1F}\x{2E20}\x{2E21}\x{2E22}\x{2E23}\x{2E24}\x{2E25}\x{2E26}\x{2E27}\x{2E28}\x{2E29}\x{2E2A}-\x{2E2E}\x{2E2F}\x{2E30}-\x{2E39}\x{2E3A}-\x{2E3B}\x{2E3C}-\x{2E3F}\x{2E40}\x{2E41}\x{2E42}\x{2E43}-\x{2E4F}\x{2E50}-\x{2E51}\x{2E52}\x{2E80}-\x{2E99}\x{2E9B}-\x{2EF3}\x{2F00}-\x{2FD5}\x{2FF0}-\x{2FFB}\x{3000}\x{3001}-\x{3003}\x{3004}\x{3008}\x{3009}\x{300A}\x{300B}\x{300C}\x{300D}\x{300E}\x{300F}\x{3010}\x{3011}\x{3012}-\x{3013}\x{3014}\x{3015}\x{3016}\x{3017}\x{3018}\x{3019}\x{301A}\x{301B}\x{301C}\x{301D}\x{301E}-\x{301F}\x{3020}\x{302A}-\x{302D}\x{3030}\x{3036}-\x{3037}\x{303D}\x{303E}-\x{303F}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{30A0}\x{30FB}\x{31C0}-\x{31E3}\x{321D}-\x{321E}\x{3250}\x{3251}-\x{325F}\x{327C}-\x{327E}\x{32B1}-\x{32BF}\x{32CC}-\x{32CF}\x{3377}-\x{337A}\x{33DE}-\x{33DF}\x{33FF}\x{4DC0}-\x{4DFF}\x{A490}-\x{A4C6}\x{A60D}-\x{A60F}\x{A66F}\x{A670}-\x{A672}\x{A673}\x{A674}-\x{A67D}\x{A67E}\x{A67F}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A788}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A828}-\x{A82B}\x{A82C}\x{A838}\x{A839}\x{A874}-\x{A877}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{AB6A}-\x{AB6B}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1D}\x{FB1E}\x{FB1F}-\x{FB28}\x{FB29}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD3E}\x{FD3F}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDD0}-\x{FDEF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFD}\x{FDFE}-\x{FDFF}\x{FE00}-\x{FE0F}\x{FE10}-\x{FE16}\x{FE17}\x{FE18}\x{FE19}\x{FE20}-\x{FE2F}\x{FE30}\x{FE31}-\x{FE32}\x{FE33}-\x{FE34}\x{FE35}\x{FE36}\x{FE37}\x{FE38}\x{FE39}\x{FE3A}\x{FE3B}\x{FE3C}\x{FE3D}\x{FE3E}\x{FE3F}\x{FE40}\x{FE41}\x{FE42}\x{FE43}\x{FE44}\x{FE45}-\x{FE46}\x{FE47}\x{FE48}\x{FE49}-\x{FE4C}\x{FE4D}-\x{FE4F}\x{FE50}\x{FE51}\x{FE52}\x{FE54}\x{FE55}\x{FE56}-\x{FE57}\x{FE58}\x{FE59}\x{FE5A}\x{FE5B}\x{FE5C}\x{FE5D}\x{FE5E}\x{FE5F}\x{FE60}-\x{FE61}\x{FE62}\x{FE63}\x{FE64}-\x{FE66}\x{FE68}\x{FE69}\x{FE6A}\x{FE6B}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FEFF}\x{FF01}-\x{FF02}\x{FF03}\x{FF04}\x{FF05}\x{FF06}-\x{FF07}\x{FF08}\x{FF09}\x{FF0A}\x{FF0B}\x{FF0C}\x{FF0D}\x{FF0E}-\x{FF0F}\x{FF1A}\x{FF1B}\x{FF1C}-\x{FF1E}\x{FF1F}-\x{FF20}\x{FF3B}\x{FF3C}\x{FF3D}\x{FF3E}\x{FF3F}\x{FF40}\x{FF5B}\x{FF5C}\x{FF5D}\x{FF5E}\x{FF5F}\x{FF60}\x{FF61}\x{FF62}\x{FF63}\x{FF64}-\x{FF65}\x{FFE0}-\x{FFE1}\x{FFE2}\x{FFE3}\x{FFE4}\x{FFE5}-\x{FFE6}\x{FFE8}\x{FFE9}-\x{FFEC}\x{FFED}-\x{FFEE}\x{FFF0}-\x{FFF8}\x{FFF9}-\x{FFFB}\x{FFFC}-\x{FFFD}\x{FFFE}-\x{FFFF}\x{10101}\x{10140}-\x{10174}\x{10175}-\x{10178}\x{10179}-\x{10189}\x{1018A}-\x{1018B}\x{1018C}\x{10190}-\x{1019C}\x{101A0}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{1091F}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A01}-\x{10A03}\x{10A04}\x{10A05}-\x{10A06}\x{10A07}-\x{10A0B}\x{10A0C}-\x{10A0F}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A38}-\x{10A3A}\x{10A3B}-\x{10A3E}\x{10A3F}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE5}-\x{10AE6}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B39}-\x{10B3F}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D24}-\x{10D27}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAB}-\x{10EAC}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F46}-\x{10F50}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{11001}\x{11038}-\x{11046}\x{11052}-\x{11065}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{11660}-\x{1166C}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{11FD5}-\x{11FDC}\x{11FDD}-\x{11FE0}\x{11FE1}-\x{11FF1}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE2}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D200}-\x{1D241}\x{1D242}-\x{1D244}\x{1D245}\x{1D300}-\x{1D356}\x{1D6DB}\x{1D715}\x{1D74F}\x{1D789}\x{1D7C3}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E2FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D0}-\x{1E8D6}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E944}-\x{1E94A}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF0}-\x{1EEF1}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F000}-\x{1F02B}\x{1F030}-\x{1F093}\x{1F0A0}-\x{1F0AE}\x{1F0B1}-\x{1F0BF}\x{1F0C1}-\x{1F0CF}\x{1F0D1}-\x{1F0F5}\x{1F10B}-\x{1F10C}\x{1F10D}-\x{1F10F}\x{1F12F}\x{1F16A}-\x{1F16F}\x{1F1AD}\x{1F260}-\x{1F265}\x{1F300}-\x{1F3FA}\x{1F3FB}-\x{1F3FF}\x{1F400}-\x{1F6D7}\x{1F6E0}-\x{1F6EC}\x{1F6F0}-\x{1F6FC}\x{1F700}-\x{1F773}\x{1F780}-\x{1F7D8}\x{1F7E0}-\x{1F7EB}\x{1F800}-\x{1F80B}\x{1F810}-\x{1F847}\x{1F850}-\x{1F859}\x{1F860}-\x{1F887}\x{1F890}-\x{1F8AD}\x{1F8B0}-\x{1F8B1}\x{1F900}-\x{1F978}\x{1F97A}-\x{1F9CB}\x{1F9CD}-\x{1FA53}\x{1FA60}-\x{1FA6D}\x{1FA70}-\x{1FA74}\x{1FA78}-\x{1FA7A}\x{1FA80}-\x{1FA86}\x{1FA90}-\x{1FAA8}\x{1FAB0}-\x{1FAB6}\x{1FAC0}-\x{1FAC2}\x{1FAD0}-\x{1FAD6}\x{1FB00}-\x{1FB92}\x{1FB94}-\x{1FBCA}\x{1FFFE}-\x{1FFFF}\x{2FFFE}-\x{2FFFF}\x{3FFFE}-\x{3FFFF}\x{4FFFE}-\x{4FFFF}\x{5FFFE}-\x{5FFFF}\x{6FFFE}-\x{6FFFF}\x{7FFFE}-\x{7FFFF}\x{8FFFE}-\x{8FFFF}\x{9FFFE}-\x{9FFFF}\x{AFFFE}-\x{AFFFF}\x{BFFFE}-\x{BFFFF}\x{CFFFE}-\x{CFFFF}\x{DFFFE}-\x{E0000}\x{E0001}\x{E0002}-\x{E001F}\x{E0020}-\x{E007F}\x{E0080}-\x{E00FF}\x{E0100}-\x{E01EF}\x{E01F0}-\x{E0FFF}\x{EFFFE}-\x{EFFFF}\x{FFFFE}-\x{FFFFF}\x{10FFFE}-\x{10FFFF}][\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1D167}-\x{1D169}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{E0100}-\x{E01EF}]*$/u';
-
- const ZWNJ = '/([\x{A872}\x{10ACD}\x{10AD7}\x{10D00}\x{10FCB}\x{0620}\x{0626}\x{0628}\x{062A}-\x{062E}\x{0633}-\x{063F}\x{0641}-\x{0647}\x{0649}-\x{064A}\x{066E}-\x{066F}\x{0678}-\x{0687}\x{069A}-\x{06BF}\x{06C1}-\x{06C2}\x{06CC}\x{06CE}\x{06D0}-\x{06D1}\x{06FA}-\x{06FC}\x{06FF}\x{0712}-\x{0714}\x{071A}-\x{071D}\x{071F}-\x{0727}\x{0729}\x{072B}\x{072D}-\x{072E}\x{074E}-\x{0758}\x{075C}-\x{076A}\x{076D}-\x{0770}\x{0772}\x{0775}-\x{0777}\x{077A}-\x{077F}\x{07CA}-\x{07EA}\x{0841}-\x{0845}\x{0848}\x{084A}-\x{0853}\x{0855}\x{0860}\x{0862}-\x{0865}\x{0868}\x{08A0}-\x{08A9}\x{08AF}-\x{08B0}\x{08B3}-\x{08B4}\x{08B6}-\x{08B8}\x{08BA}-\x{08C7}\x{1807}\x{1820}-\x{1842}\x{1843}\x{1844}-\x{1878}\x{1887}-\x{18A8}\x{18AA}\x{A840}-\x{A871}\x{10AC0}-\x{10AC4}\x{10AD3}-\x{10AD6}\x{10AD8}-\x{10ADC}\x{10ADE}-\x{10AE0}\x{10AEB}-\x{10AEE}\x{10B80}\x{10B82}\x{10B86}-\x{10B88}\x{10B8A}-\x{10B8B}\x{10B8D}\x{10B90}\x{10BAD}-\x{10BAE}\x{10D01}-\x{10D21}\x{10D23}\x{10F30}-\x{10F32}\x{10F34}-\x{10F44}\x{10F51}-\x{10F53}\x{10FB0}\x{10FB2}-\x{10FB3}\x{10FB8}\x{10FBB}-\x{10FBC}\x{10FBE}-\x{10FBF}\x{10FC1}\x{10FC4}\x{10FCA}\x{1E900}-\x{1E943}][\x{00AD}\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{061C}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{070F}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CBF}\x{0CC6}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{200B}\x{200E}-\x{200F}\x{202A}-\x{202E}\x{2060}-\x{2064}\x{206A}-\x{206F}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{FEFF}\x{FFF9}-\x{FFFB}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{13430}-\x{13438}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{1E94B}\x{E0001}\x{E0020}-\x{E007F}\x{E0100}-\x{E01EF}]*\x{200C}[\x{00AD}\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{061C}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{070F}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CBF}\x{0CC6}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{200B}\x{200E}-\x{200F}\x{202A}-\x{202E}\x{2060}-\x{2064}\x{206A}-\x{206F}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{FEFF}\x{FFF9}-\x{FFFB}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{13430}-\x{13438}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{1E94B}\x{E0001}\x{E0020}-\x{E007F}\x{E0100}-\x{E01EF}]*)[\x{0622}-\x{0625}\x{0627}\x{0629}\x{062F}-\x{0632}\x{0648}\x{0671}-\x{0673}\x{0675}-\x{0677}\x{0688}-\x{0699}\x{06C0}\x{06C3}-\x{06CB}\x{06CD}\x{06CF}\x{06D2}-\x{06D3}\x{06D5}\x{06EE}-\x{06EF}\x{0710}\x{0715}-\x{0719}\x{071E}\x{0728}\x{072A}\x{072C}\x{072F}\x{074D}\x{0759}-\x{075B}\x{076B}-\x{076C}\x{0771}\x{0773}-\x{0774}\x{0778}-\x{0779}\x{0840}\x{0846}-\x{0847}\x{0849}\x{0854}\x{0856}-\x{0858}\x{0867}\x{0869}-\x{086A}\x{08AA}-\x{08AC}\x{08AE}\x{08B1}-\x{08B2}\x{08B9}\x{10AC5}\x{10AC7}\x{10AC9}-\x{10ACA}\x{10ACE}-\x{10AD2}\x{10ADD}\x{10AE1}\x{10AE4}\x{10AEF}\x{10B81}\x{10B83}-\x{10B85}\x{10B89}\x{10B8C}\x{10B8E}-\x{10B8F}\x{10B91}\x{10BA9}-\x{10BAC}\x{10D22}\x{10F33}\x{10F54}\x{10FB4}-\x{10FB6}\x{10FB9}-\x{10FBA}\x{10FBD}\x{10FC2}-\x{10FC3}\x{10FC9}\x{0620}\x{0626}\x{0628}\x{062A}-\x{062E}\x{0633}-\x{063F}\x{0641}-\x{0647}\x{0649}-\x{064A}\x{066E}-\x{066F}\x{0678}-\x{0687}\x{069A}-\x{06BF}\x{06C1}-\x{06C2}\x{06CC}\x{06CE}\x{06D0}-\x{06D1}\x{06FA}-\x{06FC}\x{06FF}\x{0712}-\x{0714}\x{071A}-\x{071D}\x{071F}-\x{0727}\x{0729}\x{072B}\x{072D}-\x{072E}\x{074E}-\x{0758}\x{075C}-\x{076A}\x{076D}-\x{0770}\x{0772}\x{0775}-\x{0777}\x{077A}-\x{077F}\x{07CA}-\x{07EA}\x{0841}-\x{0845}\x{0848}\x{084A}-\x{0853}\x{0855}\x{0860}\x{0862}-\x{0865}\x{0868}\x{08A0}-\x{08A9}\x{08AF}-\x{08B0}\x{08B3}-\x{08B4}\x{08B6}-\x{08B8}\x{08BA}-\x{08C7}\x{1807}\x{1820}-\x{1842}\x{1843}\x{1844}-\x{1878}\x{1887}-\x{18A8}\x{18AA}\x{A840}-\x{A871}\x{10AC0}-\x{10AC4}\x{10AD3}-\x{10AD6}\x{10AD8}-\x{10ADC}\x{10ADE}-\x{10AE0}\x{10AEB}-\x{10AEE}\x{10B80}\x{10B82}\x{10B86}-\x{10B88}\x{10B8A}-\x{10B8B}\x{10B8D}\x{10B90}\x{10BAD}-\x{10BAE}\x{10D01}-\x{10D21}\x{10D23}\x{10F30}-\x{10F32}\x{10F34}-\x{10F44}\x{10F51}-\x{10F53}\x{10FB0}\x{10FB2}-\x{10FB3}\x{10FB8}\x{10FBB}-\x{10FBC}\x{10FBE}-\x{10FBF}\x{10FC1}\x{10FC4}\x{10FCA}\x{1E900}-\x{1E943}]/u';
-}
diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/deviation.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/deviation.php
deleted file mode 100644
index 0bbd335..0000000
--- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/deviation.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-return array (
- 223 => 'ss',
- 962 => 'σ',
- 8204 => '',
- 8205 => '',
-);
diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php
deleted file mode 100644
index 25a5f56..0000000
--- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php
+++ /dev/null
@@ -1,2638 +0,0 @@
-<?php
-
-return array (
- 888 => true,
- 889 => true,
- 896 => true,
- 897 => true,
- 898 => true,
- 899 => true,
- 907 => true,
- 909 => true,
- 930 => true,
- 1216 => true,
- 1328 => true,
- 1367 => true,
- 1368 => true,
- 1419 => true,
- 1420 => true,
- 1424 => true,
- 1480 => true,
- 1481 => true,
- 1482 => true,
- 1483 => true,
- 1484 => true,
- 1485 => true,
- 1486 => true,
- 1487 => true,
- 1515 => true,
- 1516 => true,
- 1517 => true,
- 1518 => true,
- 1525 => true,
- 1526 => true,
- 1527 => true,
- 1528 => true,
- 1529 => true,
- 1530 => true,
- 1531 => true,
- 1532 => true,
- 1533 => true,
- 1534 => true,
- 1535 => true,
- 1536 => true,
- 1537 => true,
- 1538 => true,
- 1539 => true,
- 1540 => true,
- 1541 => true,
- 1564 => true,
- 1565 => true,
- 1757 => true,
- 1806 => true,
- 1807 => true,
- 1867 => true,
- 1868 => true,
- 1970 => true,
- 1971 => true,
- 1972 => true,
- 1973 => true,
- 1974 => true,
- 1975 => true,
- 1976 => true,
- 1977 => true,
- 1978 => true,
- 1979 => true,
- 1980 => true,
- 1981 => true,
- 1982 => true,
- 1983 => true,
- 2043 => true,
- 2044 => true,
- 2094 => true,
- 2095 => true,
- 2111 => true,
- 2140 => true,
- 2141 => true,
- 2143 => true,
- 2229 => true,
- 2248 => true,
- 2249 => true,
- 2250 => true,
- 2251 => true,
- 2252 => true,
- 2253 => true,
- 2254 => true,
- 2255 => true,
- 2256 => true,
- 2257 => true,
- 2258 => true,
- 2274 => true,
- 2436 => true,
- 2445 => true,
- 2446 => true,
- 2449 => true,
- 2450 => true,
- 2473 => true,
- 2481 => true,
- 2483 => true,
- 2484 => true,
- 2485 => true,
- 2490 => true,
- 2491 => true,
- 2501 => true,
- 2502 => true,
- 2505 => true,
- 2506 => true,
- 2511 => true,
- 2512 => true,
- 2513 => true,
- 2514 => true,
- 2515 => true,
- 2516 => true,
- 2517 => true,
- 2518 => true,
- 2520 => true,
- 2521 => true,
- 2522 => true,
- 2523 => true,
- 2526 => true,
- 2532 => true,
- 2533 => true,
- 2559 => true,
- 2560 => true,
- 2564 => true,
- 2571 => true,
- 2572 => true,
- 2573 => true,
- 2574 => true,
- 2577 => true,
- 2578 => true,
- 2601 => true,
- 2609 => true,
- 2612 => true,
- 2615 => true,
- 2618 => true,
- 2619 => true,
- 2621 => true,
- 2627 => true,
- 2628 => true,
- 2629 => true,
- 2630 => true,
- 2633 => true,
- 2634 => true,
- 2638 => true,
- 2639 => true,
- 2640 => true,
- 2642 => true,
- 2643 => true,
- 2644 => true,
- 2645 => true,
- 2646 => true,
- 2647 => true,
- 2648 => true,
- 2653 => true,
- 2655 => true,
- 2656 => true,
- 2657 => true,
- 2658 => true,
- 2659 => true,
- 2660 => true,
- 2661 => true,
- 2679 => true,
- 2680 => true,
- 2681 => true,
- 2682 => true,
- 2683 => true,
- 2684 => true,
- 2685 => true,
- 2686 => true,
- 2687 => true,
- 2688 => true,
- 2692 => true,
- 2702 => true,
- 2706 => true,
- 2729 => true,
- 2737 => true,
- 2740 => true,
- 2746 => true,
- 2747 => true,
- 2758 => true,
- 2762 => true,
- 2766 => true,
- 2767 => true,
- 2769 => true,
- 2770 => true,
- 2771 => true,
- 2772 => true,
- 2773 => true,
- 2774 => true,
- 2775 => true,
- 2776 => true,
- 2777 => true,
- 2778 => true,
- 2779 => true,
- 2780 => true,
- 2781 => true,
- 2782 => true,
- 2783 => true,
- 2788 => true,
- 2789 => true,
- 2802 => true,
- 2803 => true,
- 2804 => true,
- 2805 => true,
- 2806 => true,
- 2807 => true,
- 2808 => true,
- 2816 => true,
- 2820 => true,
- 2829 => true,
- 2830 => true,
- 2833 => true,
- 2834 => true,
- 2857 => true,
- 2865 => true,
- 2868 => true,
- 2874 => true,
- 2875 => true,
- 2885 => true,
- 2886 => true,
- 2889 => true,
- 2890 => true,
- 2894 => true,
- 2895 => true,
- 2896 => true,
- 2897 => true,
- 2898 => true,
- 2899 => true,
- 2900 => true,
- 2904 => true,
- 2905 => true,
- 2906 => true,
- 2907 => true,
- 2910 => true,
- 2916 => true,
- 2917 => true,
- 2936 => true,
- 2937 => true,
- 2938 => true,
- 2939 => true,
- 2940 => true,
- 2941 => true,
- 2942 => true,
- 2943 => true,
- 2944 => true,
- 2945 => true,
- 2948 => true,
- 2955 => true,
- 2956 => true,
- 2957 => true,
- 2961 => true,
- 2966 => true,
- 2967 => true,
- 2968 => true,
- 2971 => true,
- 2973 => true,
- 2976 => true,
- 2977 => true,
- 2978 => true,
- 2981 => true,
- 2982 => true,
- 2983 => true,
- 2987 => true,
- 2988 => true,
- 2989 => true,
- 3002 => true,
- 3003 => true,
- 3004 => true,
- 3005 => true,
- 3011 => true,
- 3012 => true,
- 3013 => true,
- 3017 => true,
- 3022 => true,
- 3023 => true,
- 3025 => true,
- 3026 => true,
- 3027 => true,
- 3028 => true,
- 3029 => true,
- 3030 => true,
- 3032 => true,
- 3033 => true,
- 3034 => true,
- 3035 => true,
- 3036 => true,
- 3037 => true,
- 3038 => true,
- 3039 => true,
- 3040 => true,
- 3041 => true,
- 3042 => true,
- 3043 => true,
- 3044 => true,
- 3045 => true,
- 3067 => true,
- 3068 => true,
- 3069 => true,
- 3070 => true,
- 3071 => true,
- 3085 => true,
- 3089 => true,
- 3113 => true,
- 3130 => true,
- 3131 => true,
- 3132 => true,
- 3141 => true,
- 3145 => true,
- 3150 => true,
- 3151 => true,
- 3152 => true,
- 3153 => true,
- 3154 => true,
- 3155 => true,
- 3156 => true,
- 3159 => true,
- 3163 => true,
- 3164 => true,
- 3165 => true,
- 3166 => true,
- 3167 => true,
- 3172 => true,
- 3173 => true,
- 3184 => true,
- 3185 => true,
- 3186 => true,
- 3187 => true,
- 3188 => true,
- 3189 => true,
- 3190 => true,
- 3213 => true,
- 3217 => true,
- 3241 => true,
- 3252 => true,
- 3258 => true,
- 3259 => true,
- 3269 => true,
- 3273 => true,
- 3278 => true,
- 3279 => true,
- 3280 => true,
- 3281 => true,
- 3282 => true,
- 3283 => true,
- 3284 => true,
- 3287 => true,
- 3288 => true,
- 3289 => true,
- 3290 => true,
- 3291 => true,
- 3292 => true,
- 3293 => true,
- 3295 => true,
- 3300 => true,
- 3301 => true,
- 3312 => true,
- 3315 => true,
- 3316 => true,
- 3317 => true,
- 3318 => true,
- 3319 => true,
- 3320 => true,
- 3321 => true,
- 3322 => true,
- 3323 => true,
- 3324 => true,
- 3325 => true,
- 3326 => true,
- 3327 => true,
- 3341 => true,
- 3345 => true,
- 3397 => true,
- 3401 => true,
- 3408 => true,
- 3409 => true,
- 3410 => true,
- 3411 => true,
- 3428 => true,
- 3429 => true,
- 3456 => true,
- 3460 => true,
- 3479 => true,
- 3480 => true,
- 3481 => true,
- 3506 => true,
- 3516 => true,
- 3518 => true,
- 3519 => true,
- 3527 => true,
- 3528 => true,
- 3529 => true,
- 3531 => true,
- 3532 => true,
- 3533 => true,
- 3534 => true,
- 3541 => true,
- 3543 => true,
- 3552 => true,
- 3553 => true,
- 3554 => true,
- 3555 => true,
- 3556 => true,
- 3557 => true,
- 3568 => true,
- 3569 => true,
- 3573 => true,
- 3574 => true,
- 3575 => true,
- 3576 => true,
- 3577 => true,
- 3578 => true,
- 3579 => true,
- 3580 => true,
- 3581 => true,
- 3582 => true,
- 3583 => true,
- 3584 => true,
- 3643 => true,
- 3644 => true,
- 3645 => true,
- 3646 => true,
- 3715 => true,
- 3717 => true,
- 3723 => true,
- 3748 => true,
- 3750 => true,
- 3774 => true,
- 3775 => true,
- 3781 => true,
- 3783 => true,
- 3790 => true,
- 3791 => true,
- 3802 => true,
- 3803 => true,
- 3912 => true,
- 3949 => true,
- 3950 => true,
- 3951 => true,
- 3952 => true,
- 3992 => true,
- 4029 => true,
- 4045 => true,
- 4294 => true,
- 4296 => true,
- 4297 => true,
- 4298 => true,
- 4299 => true,
- 4300 => true,
- 4302 => true,
- 4303 => true,
- 4447 => true,
- 4448 => true,
- 4681 => true,
- 4686 => true,
- 4687 => true,
- 4695 => true,
- 4697 => true,
- 4702 => true,
- 4703 => true,
- 4745 => true,
- 4750 => true,
- 4751 => true,
- 4785 => true,
- 4790 => true,
- 4791 => true,
- 4799 => true,
- 4801 => true,
- 4806 => true,
- 4807 => true,
- 4823 => true,
- 4881 => true,
- 4886 => true,
- 4887 => true,
- 4955 => true,
- 4956 => true,
- 4989 => true,
- 4990 => true,
- 4991 => true,
- 5018 => true,
- 5019 => true,
- 5020 => true,
- 5021 => true,
- 5022 => true,
- 5023 => true,
- 5110 => true,
- 5111 => true,
- 5118 => true,
- 5119 => true,
- 5760 => true,
- 5789 => true,
- 5790 => true,
- 5791 => true,
- 5881 => true,
- 5882 => true,
- 5883 => true,
- 5884 => true,
- 5885 => true,
- 5886 => true,
- 5887 => true,
- 5901 => true,
- 5909 => true,
- 5910 => true,
- 5911 => true,
- 5912 => true,
- 5913 => true,
- 5914 => true,
- 5915 => true,
- 5916 => true,
- 5917 => true,
- 5918 => true,
- 5919 => true,
- 5943 => true,
- 5944 => true,
- 5945 => true,
- 5946 => true,
- 5947 => true,
- 5948 => true,
- 5949 => true,
- 5950 => true,
- 5951 => true,
- 5972 => true,
- 5973 => true,
- 5974 => true,
- 5975 => true,
- 5976 => true,
- 5977 => true,
- 5978 => true,
- 5979 => true,
- 5980 => true,
- 5981 => true,
- 5982 => true,
- 5983 => true,
- 5997 => true,
- 6001 => true,
- 6004 => true,
- 6005 => true,
- 6006 => true,
- 6007 => true,
- 6008 => true,
- 6009 => true,
- 6010 => true,
- 6011 => true,
- 6012 => true,
- 6013 => true,
- 6014 => true,
- 6015 => true,
- 6068 => true,
- 6069 => true,
- 6110 => true,
- 6111 => true,
- 6122 => true,
- 6123 => true,
- 6124 => true,
- 6125 => true,
- 6126 => true,
- 6127 => true,
- 6138 => true,
- 6139 => true,
- 6140 => true,
- 6141 => true,
- 6142 => true,
- 6143 => true,
- 6150 => true,
- 6158 => true,
- 6159 => true,
- 6170 => true,
- 6171 => true,
- 6172 => true,
- 6173 => true,
- 6174 => true,
- 6175 => true,
- 6265 => true,
- 6266 => true,
- 6267 => true,
- 6268 => true,
- 6269 => true,
- 6270 => true,
- 6271 => true,
- 6315 => true,
- 6316 => true,
- 6317 => true,
- 6318 => true,
- 6319 => true,
- 6390 => true,
- 6391 => true,
- 6392 => true,
- 6393 => true,
- 6394 => true,
- 6395 => true,
- 6396 => true,
- 6397 => true,
- 6398 => true,
- 6399 => true,
- 6431 => true,
- 6444 => true,
- 6445 => true,
- 6446 => true,
- 6447 => true,
- 6460 => true,
- 6461 => true,
- 6462 => true,
- 6463 => true,
- 6465 => true,
- 6466 => true,
- 6467 => true,
- 6510 => true,
- 6511 => true,
- 6517 => true,
- 6518 => true,
- 6519 => true,
- 6520 => true,
- 6521 => true,
- 6522 => true,
- 6523 => true,
- 6524 => true,
- 6525 => true,
- 6526 => true,
- 6527 => true,
- 6572 => true,
- 6573 => true,
- 6574 => true,
- 6575 => true,
- 6602 => true,
- 6603 => true,
- 6604 => true,
- 6605 => true,
- 6606 => true,
- 6607 => true,
- 6619 => true,
- 6620 => true,
- 6621 => true,
- 6684 => true,
- 6685 => true,
- 6751 => true,
- 6781 => true,
- 6782 => true,
- 6794 => true,
- 6795 => true,
- 6796 => true,
- 6797 => true,
- 6798 => true,
- 6799 => true,
- 6810 => true,
- 6811 => true,
- 6812 => true,
- 6813 => true,
- 6814 => true,
- 6815 => true,
- 6830 => true,
- 6831 => true,
- 6988 => true,
- 6989 => true,
- 6990 => true,
- 6991 => true,
- 7037 => true,
- 7038 => true,
- 7039 => true,
- 7156 => true,
- 7157 => true,
- 7158 => true,
- 7159 => true,
- 7160 => true,
- 7161 => true,
- 7162 => true,
- 7163 => true,
- 7224 => true,
- 7225 => true,
- 7226 => true,
- 7242 => true,
- 7243 => true,
- 7244 => true,
- 7305 => true,
- 7306 => true,
- 7307 => true,
- 7308 => true,
- 7309 => true,
- 7310 => true,
- 7311 => true,
- 7355 => true,
- 7356 => true,
- 7368 => true,
- 7369 => true,
- 7370 => true,
- 7371 => true,
- 7372 => true,
- 7373 => true,
- 7374 => true,
- 7375 => true,
- 7419 => true,
- 7420 => true,
- 7421 => true,
- 7422 => true,
- 7423 => true,
- 7674 => true,
- 7958 => true,
- 7959 => true,
- 7966 => true,
- 7967 => true,
- 8006 => true,
- 8007 => true,
- 8014 => true,
- 8015 => true,
- 8024 => true,
- 8026 => true,
- 8028 => true,
- 8030 => true,
- 8062 => true,
- 8063 => true,
- 8117 => true,
- 8133 => true,
- 8148 => true,
- 8149 => true,
- 8156 => true,
- 8176 => true,
- 8177 => true,
- 8181 => true,
- 8191 => true,
- 8206 => true,
- 8207 => true,
- 8228 => true,
- 8229 => true,
- 8230 => true,
- 8232 => true,
- 8233 => true,
- 8234 => true,
- 8235 => true,
- 8236 => true,
- 8237 => true,
- 8238 => true,
- 8289 => true,
- 8290 => true,
- 8291 => true,
- 8293 => true,
- 8294 => true,
- 8295 => true,
- 8296 => true,
- 8297 => true,
- 8298 => true,
- 8299 => true,
- 8300 => true,
- 8301 => true,
- 8302 => true,
- 8303 => true,
- 8306 => true,
- 8307 => true,
- 8335 => true,
- 8349 => true,
- 8350 => true,
- 8351 => true,
- 8384 => true,
- 8385 => true,
- 8386 => true,
- 8387 => true,
- 8388 => true,
- 8389 => true,
- 8390 => true,
- 8391 => true,
- 8392 => true,
- 8393 => true,
- 8394 => true,
- 8395 => true,
- 8396 => true,
- 8397 => true,
- 8398 => true,
- 8399 => true,
- 8433 => true,
- 8434 => true,
- 8435 => true,
- 8436 => true,
- 8437 => true,
- 8438 => true,
- 8439 => true,
- 8440 => true,
- 8441 => true,
- 8442 => true,
- 8443 => true,
- 8444 => true,
- 8445 => true,
- 8446 => true,
- 8447 => true,
- 8498 => true,
- 8579 => true,
- 8588 => true,
- 8589 => true,
- 8590 => true,
- 8591 => true,
- 9255 => true,
- 9256 => true,
- 9257 => true,
- 9258 => true,
- 9259 => true,
- 9260 => true,
- 9261 => true,
- 9262 => true,
- 9263 => true,
- 9264 => true,
- 9265 => true,
- 9266 => true,
- 9267 => true,
- 9268 => true,
- 9269 => true,
- 9270 => true,
- 9271 => true,
- 9272 => true,
- 9273 => true,
- 9274 => true,
- 9275 => true,
- 9276 => true,
- 9277 => true,
- 9278 => true,
- 9279 => true,
- 9291 => true,
- 9292 => true,
- 9293 => true,
- 9294 => true,
- 9295 => true,
- 9296 => true,
- 9297 => true,
- 9298 => true,
- 9299 => true,
- 9300 => true,
- 9301 => true,
- 9302 => true,
- 9303 => true,
- 9304 => true,
- 9305 => true,
- 9306 => true,
- 9307 => true,
- 9308 => true,
- 9309 => true,
- 9310 => true,
- 9311 => true,
- 9352 => true,
- 9353 => true,
- 9354 => true,
- 9355 => true,
- 9356 => true,
- 9357 => true,
- 9358 => true,
- 9359 => true,
- 9360 => true,
- 9361 => true,
- 9362 => true,
- 9363 => true,
- 9364 => true,
- 9365 => true,
- 9366 => true,
- 9367 => true,
- 9368 => true,
- 9369 => true,
- 9370 => true,
- 9371 => true,
- 11124 => true,
- 11125 => true,
- 11158 => true,
- 11311 => true,
- 11359 => true,
- 11508 => true,
- 11509 => true,
- 11510 => true,
- 11511 => true,
- 11512 => true,
- 11558 => true,
- 11560 => true,
- 11561 => true,
- 11562 => true,
- 11563 => true,
- 11564 => true,
- 11566 => true,
- 11567 => true,
- 11624 => true,
- 11625 => true,
- 11626 => true,
- 11627 => true,
- 11628 => true,
- 11629 => true,
- 11630 => true,
- 11633 => true,
- 11634 => true,
- 11635 => true,
- 11636 => true,
- 11637 => true,
- 11638 => true,
- 11639 => true,
- 11640 => true,
- 11641 => true,
- 11642 => true,
- 11643 => true,
- 11644 => true,
- 11645 => true,
- 11646 => true,
- 11671 => true,
- 11672 => true,
- 11673 => true,
- 11674 => true,
- 11675 => true,
- 11676 => true,
- 11677 => true,
- 11678 => true,
- 11679 => true,
- 11687 => true,
- 11695 => true,
- 11703 => true,
- 11711 => true,
- 11719 => true,
- 11727 => true,
- 11735 => true,
- 11743 => true,
- 11930 => true,
- 12020 => true,
- 12021 => true,
- 12022 => true,
- 12023 => true,
- 12024 => true,
- 12025 => true,
- 12026 => true,
- 12027 => true,
- 12028 => true,
- 12029 => true,
- 12030 => true,
- 12031 => true,
- 12246 => true,
- 12247 => true,
- 12248 => true,
- 12249 => true,
- 12250 => true,
- 12251 => true,
- 12252 => true,
- 12253 => true,
- 12254 => true,
- 12255 => true,
- 12256 => true,
- 12257 => true,
- 12258 => true,
- 12259 => true,
- 12260 => true,
- 12261 => true,
- 12262 => true,
- 12263 => true,
- 12264 => true,
- 12265 => true,
- 12266 => true,
- 12267 => true,
- 12268 => true,
- 12269 => true,
- 12270 => true,
- 12271 => true,
- 12272 => true,
- 12273 => true,
- 12274 => true,
- 12275 => true,
- 12276 => true,
- 12277 => true,
- 12278 => true,
- 12279 => true,
- 12280 => true,
- 12281 => true,
- 12282 => true,
- 12283 => true,
- 12284 => true,
- 12285 => true,
- 12286 => true,
- 12287 => true,
- 12352 => true,
- 12439 => true,
- 12440 => true,
- 12544 => true,
- 12545 => true,
- 12546 => true,
- 12547 => true,
- 12548 => true,
- 12592 => true,
- 12644 => true,
- 12687 => true,
- 12772 => true,
- 12773 => true,
- 12774 => true,
- 12775 => true,
- 12776 => true,
- 12777 => true,
- 12778 => true,
- 12779 => true,
- 12780 => true,
- 12781 => true,
- 12782 => true,
- 12783 => true,
- 12831 => true,
- 13250 => true,
- 13255 => true,
- 13272 => true,
- 40957 => true,
- 40958 => true,
- 40959 => true,
- 42125 => true,
- 42126 => true,
- 42127 => true,
- 42183 => true,
- 42184 => true,
- 42185 => true,
- 42186 => true,
- 42187 => true,
- 42188 => true,
- 42189 => true,
- 42190 => true,
- 42191 => true,
- 42540 => true,
- 42541 => true,
- 42542 => true,
- 42543 => true,
- 42544 => true,
- 42545 => true,
- 42546 => true,
- 42547 => true,
- 42548 => true,
- 42549 => true,
- 42550 => true,
- 42551 => true,
- 42552 => true,
- 42553 => true,
- 42554 => true,
- 42555 => true,
- 42556 => true,
- 42557 => true,
- 42558 => true,
- 42559 => true,
- 42744 => true,
- 42745 => true,
- 42746 => true,
- 42747 => true,
- 42748 => true,
- 42749 => true,
- 42750 => true,
- 42751 => true,
- 42944 => true,
- 42945 => true,
- 43053 => true,
- 43054 => true,
- 43055 => true,
- 43066 => true,
- 43067 => true,
- 43068 => true,
- 43069 => true,
- 43070 => true,
- 43071 => true,
- 43128 => true,
- 43129 => true,
- 43130 => true,
- 43131 => true,
- 43132 => true,
- 43133 => true,
- 43134 => true,
- 43135 => true,
- 43206 => true,
- 43207 => true,
- 43208 => true,
- 43209 => true,
- 43210 => true,
- 43211 => true,
- 43212 => true,
- 43213 => true,
- 43226 => true,
- 43227 => true,
- 43228 => true,
- 43229 => true,
- 43230 => true,
- 43231 => true,
- 43348 => true,
- 43349 => true,
- 43350 => true,
- 43351 => true,
- 43352 => true,
- 43353 => true,
- 43354 => true,
- 43355 => true,
- 43356 => true,
- 43357 => true,
- 43358 => true,
- 43389 => true,
- 43390 => true,
- 43391 => true,
- 43470 => true,
- 43482 => true,
- 43483 => true,
- 43484 => true,
- 43485 => true,
- 43519 => true,
- 43575 => true,
- 43576 => true,
- 43577 => true,
- 43578 => true,
- 43579 => true,
- 43580 => true,
- 43581 => true,
- 43582 => true,
- 43583 => true,
- 43598 => true,
- 43599 => true,
- 43610 => true,
- 43611 => true,
- 43715 => true,
- 43716 => true,
- 43717 => true,
- 43718 => true,
- 43719 => true,
- 43720 => true,
- 43721 => true,
- 43722 => true,
- 43723 => true,
- 43724 => true,
- 43725 => true,
- 43726 => true,
- 43727 => true,
- 43728 => true,
- 43729 => true,
- 43730 => true,
- 43731 => true,
- 43732 => true,
- 43733 => true,
- 43734 => true,
- 43735 => true,
- 43736 => true,
- 43737 => true,
- 43738 => true,
- 43767 => true,
- 43768 => true,
- 43769 => true,
- 43770 => true,
- 43771 => true,
- 43772 => true,
- 43773 => true,
- 43774 => true,
- 43775 => true,
- 43776 => true,
- 43783 => true,
- 43784 => true,
- 43791 => true,
- 43792 => true,
- 43799 => true,
- 43800 => true,
- 43801 => true,
- 43802 => true,
- 43803 => true,
- 43804 => true,
- 43805 => true,
- 43806 => true,
- 43807 => true,
- 43815 => true,
- 43823 => true,
- 43884 => true,
- 43885 => true,
- 43886 => true,
- 43887 => true,
- 44014 => true,
- 44015 => true,
- 44026 => true,
- 44027 => true,
- 44028 => true,
- 44029 => true,
- 44030 => true,
- 44031 => true,
- 55204 => true,
- 55205 => true,
- 55206 => true,
- 55207 => true,
- 55208 => true,
- 55209 => true,
- 55210 => true,
- 55211 => true,
- 55212 => true,
- 55213 => true,
- 55214 => true,
- 55215 => true,
- 55239 => true,
- 55240 => true,
- 55241 => true,
- 55242 => true,
- 55292 => true,
- 55293 => true,
- 55294 => true,
- 55295 => true,
- 64110 => true,
- 64111 => true,
- 64263 => true,
- 64264 => true,
- 64265 => true,
- 64266 => true,
- 64267 => true,
- 64268 => true,
- 64269 => true,
- 64270 => true,
- 64271 => true,
- 64272 => true,
- 64273 => true,
- 64274 => true,
- 64280 => true,
- 64281 => true,
- 64282 => true,
- 64283 => true,
- 64284 => true,
- 64311 => true,
- 64317 => true,
- 64319 => true,
- 64322 => true,
- 64325 => true,
- 64450 => true,
- 64451 => true,
- 64452 => true,
- 64453 => true,
- 64454 => true,
- 64455 => true,
- 64456 => true,
- 64457 => true,
- 64458 => true,
- 64459 => true,
- 64460 => true,
- 64461 => true,
- 64462 => true,
- 64463 => true,
- 64464 => true,
- 64465 => true,
- 64466 => true,
- 64832 => true,
- 64833 => true,
- 64834 => true,
- 64835 => true,
- 64836 => true,
- 64837 => true,
- 64838 => true,
- 64839 => true,
- 64840 => true,
- 64841 => true,
- 64842 => true,
- 64843 => true,
- 64844 => true,
- 64845 => true,
- 64846 => true,
- 64847 => true,
- 64912 => true,
- 64913 => true,
- 64968 => true,
- 64969 => true,
- 64970 => true,
- 64971 => true,
- 64972 => true,
- 64973 => true,
- 64974 => true,
- 64975 => true,
- 65022 => true,
- 65023 => true,
- 65042 => true,
- 65049 => true,
- 65050 => true,
- 65051 => true,
- 65052 => true,
- 65053 => true,
- 65054 => true,
- 65055 => true,
- 65072 => true,
- 65106 => true,
- 65107 => true,
- 65127 => true,
- 65132 => true,
- 65133 => true,
- 65134 => true,
- 65135 => true,
- 65141 => true,
- 65277 => true,
- 65278 => true,
- 65280 => true,
- 65440 => true,
- 65471 => true,
- 65472 => true,
- 65473 => true,
- 65480 => true,
- 65481 => true,
- 65488 => true,
- 65489 => true,
- 65496 => true,
- 65497 => true,
- 65501 => true,
- 65502 => true,
- 65503 => true,
- 65511 => true,
- 65519 => true,
- 65520 => true,
- 65521 => true,
- 65522 => true,
- 65523 => true,
- 65524 => true,
- 65525 => true,
- 65526 => true,
- 65527 => true,
- 65528 => true,
- 65529 => true,
- 65530 => true,
- 65531 => true,
- 65532 => true,
- 65533 => true,
- 65534 => true,
- 65535 => true,
- 65548 => true,
- 65575 => true,
- 65595 => true,
- 65598 => true,
- 65614 => true,
- 65615 => true,
- 65787 => true,
- 65788 => true,
- 65789 => true,
- 65790 => true,
- 65791 => true,
- 65795 => true,
- 65796 => true,
- 65797 => true,
- 65798 => true,
- 65844 => true,
- 65845 => true,
- 65846 => true,
- 65935 => true,
- 65949 => true,
- 65950 => true,
- 65951 => true,
- 66205 => true,
- 66206 => true,
- 66207 => true,
- 66257 => true,
- 66258 => true,
- 66259 => true,
- 66260 => true,
- 66261 => true,
- 66262 => true,
- 66263 => true,
- 66264 => true,
- 66265 => true,
- 66266 => true,
- 66267 => true,
- 66268 => true,
- 66269 => true,
- 66270 => true,
- 66271 => true,
- 66300 => true,
- 66301 => true,
- 66302 => true,
- 66303 => true,
- 66340 => true,
- 66341 => true,
- 66342 => true,
- 66343 => true,
- 66344 => true,
- 66345 => true,
- 66346 => true,
- 66347 => true,
- 66348 => true,
- 66379 => true,
- 66380 => true,
- 66381 => true,
- 66382 => true,
- 66383 => true,
- 66427 => true,
- 66428 => true,
- 66429 => true,
- 66430 => true,
- 66431 => true,
- 66462 => true,
- 66500 => true,
- 66501 => true,
- 66502 => true,
- 66503 => true,
- 66718 => true,
- 66719 => true,
- 66730 => true,
- 66731 => true,
- 66732 => true,
- 66733 => true,
- 66734 => true,
- 66735 => true,
- 66772 => true,
- 66773 => true,
- 66774 => true,
- 66775 => true,
- 66812 => true,
- 66813 => true,
- 66814 => true,
- 66815 => true,
- 66856 => true,
- 66857 => true,
- 66858 => true,
- 66859 => true,
- 66860 => true,
- 66861 => true,
- 66862 => true,
- 66863 => true,
- 66916 => true,
- 66917 => true,
- 66918 => true,
- 66919 => true,
- 66920 => true,
- 66921 => true,
- 66922 => true,
- 66923 => true,
- 66924 => true,
- 66925 => true,
- 66926 => true,
- 67383 => true,
- 67384 => true,
- 67385 => true,
- 67386 => true,
- 67387 => true,
- 67388 => true,
- 67389 => true,
- 67390 => true,
- 67391 => true,
- 67414 => true,
- 67415 => true,
- 67416 => true,
- 67417 => true,
- 67418 => true,
- 67419 => true,
- 67420 => true,
- 67421 => true,
- 67422 => true,
- 67423 => true,
- 67590 => true,
- 67591 => true,
- 67593 => true,
- 67638 => true,
- 67641 => true,
- 67642 => true,
- 67643 => true,
- 67645 => true,
- 67646 => true,
- 67670 => true,
- 67743 => true,
- 67744 => true,
- 67745 => true,
- 67746 => true,
- 67747 => true,
- 67748 => true,
- 67749 => true,
- 67750 => true,
- 67827 => true,
- 67830 => true,
- 67831 => true,
- 67832 => true,
- 67833 => true,
- 67834 => true,
- 67868 => true,
- 67869 => true,
- 67870 => true,
- 67898 => true,
- 67899 => true,
- 67900 => true,
- 67901 => true,
- 67902 => true,
- 68024 => true,
- 68025 => true,
- 68026 => true,
- 68027 => true,
- 68048 => true,
- 68049 => true,
- 68100 => true,
- 68103 => true,
- 68104 => true,
- 68105 => true,
- 68106 => true,
- 68107 => true,
- 68116 => true,
- 68120 => true,
- 68150 => true,
- 68151 => true,
- 68155 => true,
- 68156 => true,
- 68157 => true,
- 68158 => true,
- 68169 => true,
- 68170 => true,
- 68171 => true,
- 68172 => true,
- 68173 => true,
- 68174 => true,
- 68175 => true,
- 68185 => true,
- 68186 => true,
- 68187 => true,
- 68188 => true,
- 68189 => true,
- 68190 => true,
- 68191 => true,
- 68327 => true,
- 68328 => true,
- 68329 => true,
- 68330 => true,
- 68343 => true,
- 68344 => true,
- 68345 => true,
- 68346 => true,
- 68347 => true,
- 68348 => true,
- 68349 => true,
- 68350 => true,
- 68351 => true,
- 68406 => true,
- 68407 => true,
- 68408 => true,
- 68438 => true,
- 68439 => true,
- 68467 => true,
- 68468 => true,
- 68469 => true,
- 68470 => true,
- 68471 => true,
- 68498 => true,
- 68499 => true,
- 68500 => true,
- 68501 => true,
- 68502 => true,
- 68503 => true,
- 68504 => true,
- 68509 => true,
- 68510 => true,
- 68511 => true,
- 68512 => true,
- 68513 => true,
- 68514 => true,
- 68515 => true,
- 68516 => true,
- 68517 => true,
- 68518 => true,
- 68519 => true,
- 68520 => true,
- 68787 => true,
- 68788 => true,
- 68789 => true,
- 68790 => true,
- 68791 => true,
- 68792 => true,
- 68793 => true,
- 68794 => true,
- 68795 => true,
- 68796 => true,
- 68797 => true,
- 68798 => true,
- 68799 => true,
- 68851 => true,
- 68852 => true,
- 68853 => true,
- 68854 => true,
- 68855 => true,
- 68856 => true,
- 68857 => true,
- 68904 => true,
- 68905 => true,
- 68906 => true,
- 68907 => true,
- 68908 => true,
- 68909 => true,
- 68910 => true,
- 68911 => true,
- 69247 => true,
- 69290 => true,
- 69294 => true,
- 69295 => true,
- 69416 => true,
- 69417 => true,
- 69418 => true,
- 69419 => true,
- 69420 => true,
- 69421 => true,
- 69422 => true,
- 69423 => true,
- 69580 => true,
- 69581 => true,
- 69582 => true,
- 69583 => true,
- 69584 => true,
- 69585 => true,
- 69586 => true,
- 69587 => true,
- 69588 => true,
- 69589 => true,
- 69590 => true,
- 69591 => true,
- 69592 => true,
- 69593 => true,
- 69594 => true,
- 69595 => true,
- 69596 => true,
- 69597 => true,
- 69598 => true,
- 69599 => true,
- 69623 => true,
- 69624 => true,
- 69625 => true,
- 69626 => true,
- 69627 => true,
- 69628 => true,
- 69629 => true,
- 69630 => true,
- 69631 => true,
- 69710 => true,
- 69711 => true,
- 69712 => true,
- 69713 => true,
- 69744 => true,
- 69745 => true,
- 69746 => true,
- 69747 => true,
- 69748 => true,
- 69749 => true,
- 69750 => true,
- 69751 => true,
- 69752 => true,
- 69753 => true,
- 69754 => true,
- 69755 => true,
- 69756 => true,
- 69757 => true,
- 69758 => true,
- 69821 => true,
- 69826 => true,
- 69827 => true,
- 69828 => true,
- 69829 => true,
- 69830 => true,
- 69831 => true,
- 69832 => true,
- 69833 => true,
- 69834 => true,
- 69835 => true,
- 69836 => true,
- 69837 => true,
- 69838 => true,
- 69839 => true,
- 69865 => true,
- 69866 => true,
- 69867 => true,
- 69868 => true,
- 69869 => true,
- 69870 => true,
- 69871 => true,
- 69882 => true,
- 69883 => true,
- 69884 => true,
- 69885 => true,
- 69886 => true,
- 69887 => true,
- 69941 => true,
- 69960 => true,
- 69961 => true,
- 69962 => true,
- 69963 => true,
- 69964 => true,
- 69965 => true,
- 69966 => true,
- 69967 => true,
- 70007 => true,
- 70008 => true,
- 70009 => true,
- 70010 => true,
- 70011 => true,
- 70012 => true,
- 70013 => true,
- 70014 => true,
- 70015 => true,
- 70112 => true,
- 70133 => true,
- 70134 => true,
- 70135 => true,
- 70136 => true,
- 70137 => true,
- 70138 => true,
- 70139 => true,
- 70140 => true,
- 70141 => true,
- 70142 => true,
- 70143 => true,
- 70162 => true,
- 70279 => true,
- 70281 => true,
- 70286 => true,
- 70302 => true,
- 70314 => true,
- 70315 => true,
- 70316 => true,
- 70317 => true,
- 70318 => true,
- 70319 => true,
- 70379 => true,
- 70380 => true,
- 70381 => true,
- 70382 => true,
- 70383 => true,
- 70394 => true,
- 70395 => true,
- 70396 => true,
- 70397 => true,
- 70398 => true,
- 70399 => true,
- 70404 => true,
- 70413 => true,
- 70414 => true,
- 70417 => true,
- 70418 => true,
- 70441 => true,
- 70449 => true,
- 70452 => true,
- 70458 => true,
- 70469 => true,
- 70470 => true,
- 70473 => true,
- 70474 => true,
- 70478 => true,
- 70479 => true,
- 70481 => true,
- 70482 => true,
- 70483 => true,
- 70484 => true,
- 70485 => true,
- 70486 => true,
- 70488 => true,
- 70489 => true,
- 70490 => true,
- 70491 => true,
- 70492 => true,
- 70500 => true,
- 70501 => true,
- 70509 => true,
- 70510 => true,
- 70511 => true,
- 70748 => true,
- 70754 => true,
- 70755 => true,
- 70756 => true,
- 70757 => true,
- 70758 => true,
- 70759 => true,
- 70760 => true,
- 70761 => true,
- 70762 => true,
- 70763 => true,
- 70764 => true,
- 70765 => true,
- 70766 => true,
- 70767 => true,
- 70768 => true,
- 70769 => true,
- 70770 => true,
- 70771 => true,
- 70772 => true,
- 70773 => true,
- 70774 => true,
- 70775 => true,
- 70776 => true,
- 70777 => true,
- 70778 => true,
- 70779 => true,
- 70780 => true,
- 70781 => true,
- 70782 => true,
- 70783 => true,
- 70856 => true,
- 70857 => true,
- 70858 => true,
- 70859 => true,
- 70860 => true,
- 70861 => true,
- 70862 => true,
- 70863 => true,
- 71094 => true,
- 71095 => true,
- 71237 => true,
- 71238 => true,
- 71239 => true,
- 71240 => true,
- 71241 => true,
- 71242 => true,
- 71243 => true,
- 71244 => true,
- 71245 => true,
- 71246 => true,
- 71247 => true,
- 71258 => true,
- 71259 => true,
- 71260 => true,
- 71261 => true,
- 71262 => true,
- 71263 => true,
- 71277 => true,
- 71278 => true,
- 71279 => true,
- 71280 => true,
- 71281 => true,
- 71282 => true,
- 71283 => true,
- 71284 => true,
- 71285 => true,
- 71286 => true,
- 71287 => true,
- 71288 => true,
- 71289 => true,
- 71290 => true,
- 71291 => true,
- 71292 => true,
- 71293 => true,
- 71294 => true,
- 71295 => true,
- 71353 => true,
- 71354 => true,
- 71355 => true,
- 71356 => true,
- 71357 => true,
- 71358 => true,
- 71359 => true,
- 71451 => true,
- 71452 => true,
- 71468 => true,
- 71469 => true,
- 71470 => true,
- 71471 => true,
- 71923 => true,
- 71924 => true,
- 71925 => true,
- 71926 => true,
- 71927 => true,
- 71928 => true,
- 71929 => true,
- 71930 => true,
- 71931 => true,
- 71932 => true,
- 71933 => true,
- 71934 => true,
- 71943 => true,
- 71944 => true,
- 71946 => true,
- 71947 => true,
- 71956 => true,
- 71959 => true,
- 71990 => true,
- 71993 => true,
- 71994 => true,
- 72007 => true,
- 72008 => true,
- 72009 => true,
- 72010 => true,
- 72011 => true,
- 72012 => true,
- 72013 => true,
- 72014 => true,
- 72015 => true,
- 72104 => true,
- 72105 => true,
- 72152 => true,
- 72153 => true,
- 72165 => true,
- 72166 => true,
- 72167 => true,
- 72168 => true,
- 72169 => true,
- 72170 => true,
- 72171 => true,
- 72172 => true,
- 72173 => true,
- 72174 => true,
- 72175 => true,
- 72176 => true,
- 72177 => true,
- 72178 => true,
- 72179 => true,
- 72180 => true,
- 72181 => true,
- 72182 => true,
- 72183 => true,
- 72184 => true,
- 72185 => true,
- 72186 => true,
- 72187 => true,
- 72188 => true,
- 72189 => true,
- 72190 => true,
- 72191 => true,
- 72264 => true,
- 72265 => true,
- 72266 => true,
- 72267 => true,
- 72268 => true,
- 72269 => true,
- 72270 => true,
- 72271 => true,
- 72355 => true,
- 72356 => true,
- 72357 => true,
- 72358 => true,
- 72359 => true,
- 72360 => true,
- 72361 => true,
- 72362 => true,
- 72363 => true,
- 72364 => true,
- 72365 => true,
- 72366 => true,
- 72367 => true,
- 72368 => true,
- 72369 => true,
- 72370 => true,
- 72371 => true,
- 72372 => true,
- 72373 => true,
- 72374 => true,
- 72375 => true,
- 72376 => true,
- 72377 => true,
- 72378 => true,
- 72379 => true,
- 72380 => true,
- 72381 => true,
- 72382 => true,
- 72383 => true,
- 72713 => true,
- 72759 => true,
- 72774 => true,
- 72775 => true,
- 72776 => true,
- 72777 => true,
- 72778 => true,
- 72779 => true,
- 72780 => true,
- 72781 => true,
- 72782 => true,
- 72783 => true,
- 72813 => true,
- 72814 => true,
- 72815 => true,
- 72848 => true,
- 72849 => true,
- 72872 => true,
- 72967 => true,
- 72970 => true,
- 73015 => true,
- 73016 => true,
- 73017 => true,
- 73019 => true,
- 73022 => true,
- 73032 => true,
- 73033 => true,
- 73034 => true,
- 73035 => true,
- 73036 => true,
- 73037 => true,
- 73038 => true,
- 73039 => true,
- 73050 => true,
- 73051 => true,
- 73052 => true,
- 73053 => true,
- 73054 => true,
- 73055 => true,
- 73062 => true,
- 73065 => true,
- 73103 => true,
- 73106 => true,
- 73113 => true,
- 73114 => true,
- 73115 => true,
- 73116 => true,
- 73117 => true,
- 73118 => true,
- 73119 => true,
- 73649 => true,
- 73650 => true,
- 73651 => true,
- 73652 => true,
- 73653 => true,
- 73654 => true,
- 73655 => true,
- 73656 => true,
- 73657 => true,
- 73658 => true,
- 73659 => true,
- 73660 => true,
- 73661 => true,
- 73662 => true,
- 73663 => true,
- 73714 => true,
- 73715 => true,
- 73716 => true,
- 73717 => true,
- 73718 => true,
- 73719 => true,
- 73720 => true,
- 73721 => true,
- 73722 => true,
- 73723 => true,
- 73724 => true,
- 73725 => true,
- 73726 => true,
- 74863 => true,
- 74869 => true,
- 74870 => true,
- 74871 => true,
- 74872 => true,
- 74873 => true,
- 74874 => true,
- 74875 => true,
- 74876 => true,
- 74877 => true,
- 74878 => true,
- 74879 => true,
- 78895 => true,
- 78896 => true,
- 78897 => true,
- 78898 => true,
- 78899 => true,
- 78900 => true,
- 78901 => true,
- 78902 => true,
- 78903 => true,
- 78904 => true,
- 92729 => true,
- 92730 => true,
- 92731 => true,
- 92732 => true,
- 92733 => true,
- 92734 => true,
- 92735 => true,
- 92767 => true,
- 92778 => true,
- 92779 => true,
- 92780 => true,
- 92781 => true,
- 92910 => true,
- 92911 => true,
- 92918 => true,
- 92919 => true,
- 92920 => true,
- 92921 => true,
- 92922 => true,
- 92923 => true,
- 92924 => true,
- 92925 => true,
- 92926 => true,
- 92927 => true,
- 92998 => true,
- 92999 => true,
- 93000 => true,
- 93001 => true,
- 93002 => true,
- 93003 => true,
- 93004 => true,
- 93005 => true,
- 93006 => true,
- 93007 => true,
- 93018 => true,
- 93026 => true,
- 93048 => true,
- 93049 => true,
- 93050 => true,
- 93051 => true,
- 93052 => true,
- 94027 => true,
- 94028 => true,
- 94029 => true,
- 94030 => true,
- 94088 => true,
- 94089 => true,
- 94090 => true,
- 94091 => true,
- 94092 => true,
- 94093 => true,
- 94094 => true,
- 94181 => true,
- 94182 => true,
- 94183 => true,
- 94184 => true,
- 94185 => true,
- 94186 => true,
- 94187 => true,
- 94188 => true,
- 94189 => true,
- 94190 => true,
- 94191 => true,
- 94194 => true,
- 94195 => true,
- 94196 => true,
- 94197 => true,
- 94198 => true,
- 94199 => true,
- 94200 => true,
- 94201 => true,
- 94202 => true,
- 94203 => true,
- 94204 => true,
- 94205 => true,
- 94206 => true,
- 94207 => true,
- 100344 => true,
- 100345 => true,
- 100346 => true,
- 100347 => true,
- 100348 => true,
- 100349 => true,
- 100350 => true,
- 100351 => true,
- 110931 => true,
- 110932 => true,
- 110933 => true,
- 110934 => true,
- 110935 => true,
- 110936 => true,
- 110937 => true,
- 110938 => true,
- 110939 => true,
- 110940 => true,
- 110941 => true,
- 110942 => true,
- 110943 => true,
- 110944 => true,
- 110945 => true,
- 110946 => true,
- 110947 => true,
- 110952 => true,
- 110953 => true,
- 110954 => true,
- 110955 => true,
- 110956 => true,
- 110957 => true,
- 110958 => true,
- 110959 => true,
- 113771 => true,
- 113772 => true,
- 113773 => true,
- 113774 => true,
- 113775 => true,
- 113789 => true,
- 113790 => true,
- 113791 => true,
- 113801 => true,
- 113802 => true,
- 113803 => true,
- 113804 => true,
- 113805 => true,
- 113806 => true,
- 113807 => true,
- 113818 => true,
- 113819 => true,
- 119030 => true,
- 119031 => true,
- 119032 => true,
- 119033 => true,
- 119034 => true,
- 119035 => true,
- 119036 => true,
- 119037 => true,
- 119038 => true,
- 119039 => true,
- 119079 => true,
- 119080 => true,
- 119155 => true,
- 119156 => true,
- 119157 => true,
- 119158 => true,
- 119159 => true,
- 119160 => true,
- 119161 => true,
- 119162 => true,
- 119273 => true,
- 119274 => true,
- 119275 => true,
- 119276 => true,
- 119277 => true,
- 119278 => true,
- 119279 => true,
- 119280 => true,
- 119281 => true,
- 119282 => true,
- 119283 => true,
- 119284 => true,
- 119285 => true,
- 119286 => true,
- 119287 => true,
- 119288 => true,
- 119289 => true,
- 119290 => true,
- 119291 => true,
- 119292 => true,
- 119293 => true,
- 119294 => true,
- 119295 => true,
- 119540 => true,
- 119541 => true,
- 119542 => true,
- 119543 => true,
- 119544 => true,
- 119545 => true,
- 119546 => true,
- 119547 => true,
- 119548 => true,
- 119549 => true,
- 119550 => true,
- 119551 => true,
- 119639 => true,
- 119640 => true,
- 119641 => true,
- 119642 => true,
- 119643 => true,
- 119644 => true,
- 119645 => true,
- 119646 => true,
- 119647 => true,
- 119893 => true,
- 119965 => true,
- 119968 => true,
- 119969 => true,
- 119971 => true,
- 119972 => true,
- 119975 => true,
- 119976 => true,
- 119981 => true,
- 119994 => true,
- 119996 => true,
- 120004 => true,
- 120070 => true,
- 120075 => true,
- 120076 => true,
- 120085 => true,
- 120093 => true,
- 120122 => true,
- 120127 => true,
- 120133 => true,
- 120135 => true,
- 120136 => true,
- 120137 => true,
- 120145 => true,
- 120486 => true,
- 120487 => true,
- 120780 => true,
- 120781 => true,
- 121484 => true,
- 121485 => true,
- 121486 => true,
- 121487 => true,
- 121488 => true,
- 121489 => true,
- 121490 => true,
- 121491 => true,
- 121492 => true,
- 121493 => true,
- 121494 => true,
- 121495 => true,
- 121496 => true,
- 121497 => true,
- 121498 => true,
- 121504 => true,
- 122887 => true,
- 122905 => true,
- 122906 => true,
- 122914 => true,
- 122917 => true,
- 123181 => true,
- 123182 => true,
- 123183 => true,
- 123198 => true,
- 123199 => true,
- 123210 => true,
- 123211 => true,
- 123212 => true,
- 123213 => true,
- 123642 => true,
- 123643 => true,
- 123644 => true,
- 123645 => true,
- 123646 => true,
- 125125 => true,
- 125126 => true,
- 125260 => true,
- 125261 => true,
- 125262 => true,
- 125263 => true,
- 125274 => true,
- 125275 => true,
- 125276 => true,
- 125277 => true,
- 126468 => true,
- 126496 => true,
- 126499 => true,
- 126501 => true,
- 126502 => true,
- 126504 => true,
- 126515 => true,
- 126520 => true,
- 126522 => true,
- 126524 => true,
- 126525 => true,
- 126526 => true,
- 126527 => true,
- 126528 => true,
- 126529 => true,
- 126531 => true,
- 126532 => true,
- 126533 => true,
- 126534 => true,
- 126536 => true,
- 126538 => true,
- 126540 => true,
- 126544 => true,
- 126547 => true,
- 126549 => true,
- 126550 => true,
- 126552 => true,
- 126554 => true,
- 126556 => true,
- 126558 => true,
- 126560 => true,
- 126563 => true,
- 126565 => true,
- 126566 => true,
- 126571 => true,
- 126579 => true,
- 126584 => true,
- 126589 => true,
- 126591 => true,
- 126602 => true,
- 126620 => true,
- 126621 => true,
- 126622 => true,
- 126623 => true,
- 126624 => true,
- 126628 => true,
- 126634 => true,
- 127020 => true,
- 127021 => true,
- 127022 => true,
- 127023 => true,
- 127124 => true,
- 127125 => true,
- 127126 => true,
- 127127 => true,
- 127128 => true,
- 127129 => true,
- 127130 => true,
- 127131 => true,
- 127132 => true,
- 127133 => true,
- 127134 => true,
- 127135 => true,
- 127151 => true,
- 127152 => true,
- 127168 => true,
- 127184 => true,
- 127222 => true,
- 127223 => true,
- 127224 => true,
- 127225 => true,
- 127226 => true,
- 127227 => true,
- 127228 => true,
- 127229 => true,
- 127230 => true,
- 127231 => true,
- 127232 => true,
- 127491 => true,
- 127492 => true,
- 127493 => true,
- 127494 => true,
- 127495 => true,
- 127496 => true,
- 127497 => true,
- 127498 => true,
- 127499 => true,
- 127500 => true,
- 127501 => true,
- 127502 => true,
- 127503 => true,
- 127548 => true,
- 127549 => true,
- 127550 => true,
- 127551 => true,
- 127561 => true,
- 127562 => true,
- 127563 => true,
- 127564 => true,
- 127565 => true,
- 127566 => true,
- 127567 => true,
- 127570 => true,
- 127571 => true,
- 127572 => true,
- 127573 => true,
- 127574 => true,
- 127575 => true,
- 127576 => true,
- 127577 => true,
- 127578 => true,
- 127579 => true,
- 127580 => true,
- 127581 => true,
- 127582 => true,
- 127583 => true,
- 128728 => true,
- 128729 => true,
- 128730 => true,
- 128731 => true,
- 128732 => true,
- 128733 => true,
- 128734 => true,
- 128735 => true,
- 128749 => true,
- 128750 => true,
- 128751 => true,
- 128765 => true,
- 128766 => true,
- 128767 => true,
- 128884 => true,
- 128885 => true,
- 128886 => true,
- 128887 => true,
- 128888 => true,
- 128889 => true,
- 128890 => true,
- 128891 => true,
- 128892 => true,
- 128893 => true,
- 128894 => true,
- 128895 => true,
- 128985 => true,
- 128986 => true,
- 128987 => true,
- 128988 => true,
- 128989 => true,
- 128990 => true,
- 128991 => true,
- 129004 => true,
- 129005 => true,
- 129006 => true,
- 129007 => true,
- 129008 => true,
- 129009 => true,
- 129010 => true,
- 129011 => true,
- 129012 => true,
- 129013 => true,
- 129014 => true,
- 129015 => true,
- 129016 => true,
- 129017 => true,
- 129018 => true,
- 129019 => true,
- 129020 => true,
- 129021 => true,
- 129022 => true,
- 129023 => true,
- 129036 => true,
- 129037 => true,
- 129038 => true,
- 129039 => true,
- 129096 => true,
- 129097 => true,
- 129098 => true,
- 129099 => true,
- 129100 => true,
- 129101 => true,
- 129102 => true,
- 129103 => true,
- 129114 => true,
- 129115 => true,
- 129116 => true,
- 129117 => true,
- 129118 => true,
- 129119 => true,
- 129160 => true,
- 129161 => true,
- 129162 => true,
- 129163 => true,
- 129164 => true,
- 129165 => true,
- 129166 => true,
- 129167 => true,
- 129198 => true,
- 129199 => true,
- 129401 => true,
- 129484 => true,
- 129620 => true,
- 129621 => true,
- 129622 => true,
- 129623 => true,
- 129624 => true,
- 129625 => true,
- 129626 => true,
- 129627 => true,
- 129628 => true,
- 129629 => true,
- 129630 => true,
- 129631 => true,
- 129646 => true,
- 129647 => true,
- 129653 => true,
- 129654 => true,
- 129655 => true,
- 129659 => true,
- 129660 => true,
- 129661 => true,
- 129662 => true,
- 129663 => true,
- 129671 => true,
- 129672 => true,
- 129673 => true,
- 129674 => true,
- 129675 => true,
- 129676 => true,
- 129677 => true,
- 129678 => true,
- 129679 => true,
- 129705 => true,
- 129706 => true,
- 129707 => true,
- 129708 => true,
- 129709 => true,
- 129710 => true,
- 129711 => true,
- 129719 => true,
- 129720 => true,
- 129721 => true,
- 129722 => true,
- 129723 => true,
- 129724 => true,
- 129725 => true,
- 129726 => true,
- 129727 => true,
- 129731 => true,
- 129732 => true,
- 129733 => true,
- 129734 => true,
- 129735 => true,
- 129736 => true,
- 129737 => true,
- 129738 => true,
- 129739 => true,
- 129740 => true,
- 129741 => true,
- 129742 => true,
- 129743 => true,
- 129939 => true,
- 131070 => true,
- 131071 => true,
- 177973 => true,
- 177974 => true,
- 177975 => true,
- 177976 => true,
- 177977 => true,
- 177978 => true,
- 177979 => true,
- 177980 => true,
- 177981 => true,
- 177982 => true,
- 177983 => true,
- 178206 => true,
- 178207 => true,
- 183970 => true,
- 183971 => true,
- 183972 => true,
- 183973 => true,
- 183974 => true,
- 183975 => true,
- 183976 => true,
- 183977 => true,
- 183978 => true,
- 183979 => true,
- 183980 => true,
- 183981 => true,
- 183982 => true,
- 183983 => true,
- 194664 => true,
- 194676 => true,
- 194847 => true,
- 194911 => true,
- 195007 => true,
- 196606 => true,
- 196607 => true,
- 262142 => true,
- 262143 => true,
- 327678 => true,
- 327679 => true,
- 393214 => true,
- 393215 => true,
- 458750 => true,
- 458751 => true,
- 524286 => true,
- 524287 => true,
- 589822 => true,
- 589823 => true,
- 655358 => true,
- 655359 => true,
- 720894 => true,
- 720895 => true,
- 786430 => true,
- 786431 => true,
- 851966 => true,
- 851967 => true,
- 917502 => true,
- 917503 => true,
- 917504 => true,
- 917505 => true,
- 917506 => true,
- 917507 => true,
- 917508 => true,
- 917509 => true,
- 917510 => true,
- 917511 => true,
- 917512 => true,
- 917513 => true,
- 917514 => true,
- 917515 => true,
- 917516 => true,
- 917517 => true,
- 917518 => true,
- 917519 => true,
- 917520 => true,
- 917521 => true,
- 917522 => true,
- 917523 => true,
- 917524 => true,
- 917525 => true,
- 917526 => true,
- 917527 => true,
- 917528 => true,
- 917529 => true,
- 917530 => true,
- 917531 => true,
- 917532 => true,
- 917533 => true,
- 917534 => true,
- 917535 => true,
- 983038 => true,
- 983039 => true,
- 1048574 => true,
- 1048575 => true,
- 1114110 => true,
- 1114111 => true,
-);
diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php
deleted file mode 100644
index 54f21cc..0000000
--- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php
+++ /dev/null
@@ -1,308 +0,0 @@
-<?php
-
-return array (
- 160 => ' ',
- 168 => ' ̈',
- 175 => ' ̄',
- 180 => ' ́',
- 184 => ' ̧',
- 728 => ' ̆',
- 729 => ' ̇',
- 730 => ' ̊',
- 731 => ' ̨',
- 732 => ' ̃',
- 733 => ' ̋',
- 890 => ' ι',
- 894 => ';',
- 900 => ' ́',
- 901 => ' ̈́',
- 8125 => ' ̓',
- 8127 => ' ̓',
- 8128 => ' ͂',
- 8129 => ' ̈͂',
- 8141 => ' ̓̀',
- 8142 => ' ̓́',
- 8143 => ' ̓͂',
- 8157 => ' ̔̀',
- 8158 => ' ̔́',
- 8159 => ' ̔͂',
- 8173 => ' ̈̀',
- 8174 => ' ̈́',
- 8175 => '`',
- 8189 => ' ́',
- 8190 => ' ̔',
- 8192 => ' ',
- 8193 => ' ',
- 8194 => ' ',
- 8195 => ' ',
- 8196 => ' ',
- 8197 => ' ',
- 8198 => ' ',
- 8199 => ' ',
- 8200 => ' ',
- 8201 => ' ',
- 8202 => ' ',
- 8215 => ' ̳',
- 8239 => ' ',
- 8252 => '!!',
- 8254 => ' ̅',
- 8263 => '??',
- 8264 => '?!',
- 8265 => '!?',
- 8287 => ' ',
- 8314 => '+',
- 8316 => '=',
- 8317 => '(',
- 8318 => ')',
- 8330 => '+',
- 8332 => '=',
- 8333 => '(',
- 8334 => ')',
- 8448 => 'a/c',
- 8449 => 'a/s',
- 8453 => 'c/o',
- 8454 => 'c/u',
- 9332 => '(1)',
- 9333 => '(2)',
- 9334 => '(3)',
- 9335 => '(4)',
- 9336 => '(5)',
- 9337 => '(6)',
- 9338 => '(7)',
- 9339 => '(8)',
- 9340 => '(9)',
- 9341 => '(10)',
- 9342 => '(11)',
- 9343 => '(12)',
- 9344 => '(13)',
- 9345 => '(14)',
- 9346 => '(15)',
- 9347 => '(16)',
- 9348 => '(17)',
- 9349 => '(18)',
- 9350 => '(19)',
- 9351 => '(20)',
- 9372 => '(a)',
- 9373 => '(b)',
- 9374 => '(c)',
- 9375 => '(d)',
- 9376 => '(e)',
- 9377 => '(f)',
- 9378 => '(g)',
- 9379 => '(h)',
- 9380 => '(i)',
- 9381 => '(j)',
- 9382 => '(k)',
- 9383 => '(l)',
- 9384 => '(m)',
- 9385 => '(n)',
- 9386 => '(o)',
- 9387 => '(p)',
- 9388 => '(q)',
- 9389 => '(r)',
- 9390 => '(s)',
- 9391 => '(t)',
- 9392 => '(u)',
- 9393 => '(v)',
- 9394 => '(w)',
- 9395 => '(x)',
- 9396 => '(y)',
- 9397 => '(z)',
- 10868 => '::=',
- 10869 => '==',
- 10870 => '===',
- 12288 => ' ',
- 12443 => ' ゙',
- 12444 => ' ゚',
- 12800 => '(ᄀ)',
- 12801 => '(ᄂ)',
- 12802 => '(ᄃ)',
- 12803 => '(ᄅ)',
- 12804 => '(ᄆ)',
- 12805 => '(ᄇ)',
- 12806 => '(ᄉ)',
- 12807 => '(ᄋ)',
- 12808 => '(ᄌ)',
- 12809 => '(ᄎ)',
- 12810 => '(ᄏ)',
- 12811 => '(ᄐ)',
- 12812 => '(ᄑ)',
- 12813 => '(ᄒ)',
- 12814 => '(가)',
- 12815 => '(나)',
- 12816 => '(다)',
- 12817 => '(라)',
- 12818 => '(마)',
- 12819 => '(바)',
- 12820 => '(사)',
- 12821 => '(아)',
- 12822 => '(자)',
- 12823 => '(차)',
- 12824 => '(카)',
- 12825 => '(타)',
- 12826 => '(파)',
- 12827 => '(하)',
- 12828 => '(주)',
- 12829 => '(오전)',
- 12830 => '(오후)',
- 12832 => '(一)',
- 12833 => '(二)',
- 12834 => '(三)',
- 12835 => '(四)',
- 12836 => '(五)',
- 12837 => '(六)',
- 12838 => '(七)',
- 12839 => '(八)',
- 12840 => '(九)',
- 12841 => '(十)',
- 12842 => '(月)',
- 12843 => '(火)',
- 12844 => '(水)',
- 12845 => '(木)',
- 12846 => '(金)',
- 12847 => '(土)',
- 12848 => '(日)',
- 12849 => '(株)',
- 12850 => '(有)',
- 12851 => '(社)',
- 12852 => '(名)',
- 12853 => '(特)',
- 12854 => '(財)',
- 12855 => '(祝)',
- 12856 => '(労)',
- 12857 => '(代)',
- 12858 => '(呼)',
- 12859 => '(学)',
- 12860 => '(監)',
- 12861 => '(企)',
- 12862 => '(資)',
- 12863 => '(協)',
- 12864 => '(祭)',
- 12865 => '(休)',
- 12866 => '(自)',
- 12867 => '(至)',
- 64297 => '+',
- 64606 => ' ٌّ',
- 64607 => ' ٍّ',
- 64608 => ' َّ',
- 64609 => ' ُّ',
- 64610 => ' ِّ',
- 64611 => ' ّٰ',
- 65018 => 'صلى الله عليه وسلم',
- 65019 => 'جل جلاله',
- 65040 => ',',
- 65043 => ':',
- 65044 => ';',
- 65045 => '!',
- 65046 => '?',
- 65075 => '_',
- 65076 => '_',
- 65077 => '(',
- 65078 => ')',
- 65079 => '{',
- 65080 => '}',
- 65095 => '[',
- 65096 => ']',
- 65097 => ' ̅',
- 65098 => ' ̅',
- 65099 => ' ̅',
- 65100 => ' ̅',
- 65101 => '_',
- 65102 => '_',
- 65103 => '_',
- 65104 => ',',
- 65108 => ';',
- 65109 => ':',
- 65110 => '?',
- 65111 => '!',
- 65113 => '(',
- 65114 => ')',
- 65115 => '{',
- 65116 => '}',
- 65119 => '#',
- 65120 => '&',
- 65121 => '*',
- 65122 => '+',
- 65124 => '<',
- 65125 => '>',
- 65126 => '=',
- 65128 => '\\',
- 65129 => '$',
- 65130 => '%',
- 65131 => '@',
- 65136 => ' ً',
- 65138 => ' ٌ',
- 65140 => ' ٍ',
- 65142 => ' َ',
- 65144 => ' ُ',
- 65146 => ' ِ',
- 65148 => ' ّ',
- 65150 => ' ْ',
- 65281 => '!',
- 65282 => '"',
- 65283 => '#',
- 65284 => '$',
- 65285 => '%',
- 65286 => '&',
- 65287 => '\'',
- 65288 => '(',
- 65289 => ')',
- 65290 => '*',
- 65291 => '+',
- 65292 => ',',
- 65295 => '/',
- 65306 => ':',
- 65307 => ';',
- 65308 => '<',
- 65309 => '=',
- 65310 => '>',
- 65311 => '?',
- 65312 => '@',
- 65339 => '[',
- 65340 => '\\',
- 65341 => ']',
- 65342 => '^',
- 65343 => '_',
- 65344 => '`',
- 65371 => '{',
- 65372 => '|',
- 65373 => '}',
- 65374 => '~',
- 65507 => ' ̄',
- 127233 => '0,',
- 127234 => '1,',
- 127235 => '2,',
- 127236 => '3,',
- 127237 => '4,',
- 127238 => '5,',
- 127239 => '6,',
- 127240 => '7,',
- 127241 => '8,',
- 127242 => '9,',
- 127248 => '(a)',
- 127249 => '(b)',
- 127250 => '(c)',
- 127251 => '(d)',
- 127252 => '(e)',
- 127253 => '(f)',
- 127254 => '(g)',
- 127255 => '(h)',
- 127256 => '(i)',
- 127257 => '(j)',
- 127258 => '(k)',
- 127259 => '(l)',
- 127260 => '(m)',
- 127261 => '(n)',
- 127262 => '(o)',
- 127263 => '(p)',
- 127264 => '(q)',
- 127265 => '(r)',
- 127266 => '(s)',
- 127267 => '(t)',
- 127268 => '(u)',
- 127269 => '(v)',
- 127270 => '(w)',
- 127271 => '(x)',
- 127272 => '(y)',
- 127273 => '(z)',
-);
diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php
deleted file mode 100644
index 223396e..0000000
--- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-return array (
- 0 => true,
- 1 => true,
- 2 => true,
- 3 => true,
- 4 => true,
- 5 => true,
- 6 => true,
- 7 => true,
- 8 => true,
- 9 => true,
- 10 => true,
- 11 => true,
- 12 => true,
- 13 => true,
- 14 => true,
- 15 => true,
- 16 => true,
- 17 => true,
- 18 => true,
- 19 => true,
- 20 => true,
- 21 => true,
- 22 => true,
- 23 => true,
- 24 => true,
- 25 => true,
- 26 => true,
- 27 => true,
- 28 => true,
- 29 => true,
- 30 => true,
- 31 => true,
- 32 => true,
- 33 => true,
- 34 => true,
- 35 => true,
- 36 => true,
- 37 => true,
- 38 => true,
- 39 => true,
- 40 => true,
- 41 => true,
- 42 => true,
- 43 => true,
- 44 => true,
- 47 => true,
- 58 => true,
- 59 => true,
- 60 => true,
- 61 => true,
- 62 => true,
- 63 => true,
- 64 => true,
- 91 => true,
- 92 => true,
- 93 => true,
- 94 => true,
- 95 => true,
- 96 => true,
- 123 => true,
- 124 => true,
- 125 => true,
- 126 => true,
- 127 => true,
- 8800 => true,
- 8814 => true,
- 8815 => true,
-);
diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php
deleted file mode 100644
index b377844..0000000
--- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php
+++ /dev/null
@@ -1,273 +0,0 @@
-<?php
-
-return array (
- 173 => true,
- 847 => true,
- 6155 => true,
- 6156 => true,
- 6157 => true,
- 8203 => true,
- 8288 => true,
- 8292 => true,
- 65024 => true,
- 65025 => true,
- 65026 => true,
- 65027 => true,
- 65028 => true,
- 65029 => true,
- 65030 => true,
- 65031 => true,
- 65032 => true,
- 65033 => true,
- 65034 => true,
- 65035 => true,
- 65036 => true,
- 65037 => true,
- 65038 => true,
- 65039 => true,
- 65279 => true,
- 113824 => true,
- 113825 => true,
- 113826 => true,
- 113827 => true,
- 917760 => true,
- 917761 => true,
- 917762 => true,
- 917763 => true,
- 917764 => true,
- 917765 => true,
- 917766 => true,
- 917767 => true,
- 917768 => true,
- 917769 => true,
- 917770 => true,
- 917771 => true,
- 917772 => true,
- 917773 => true,
- 917774 => true,
- 917775 => true,
- 917776 => true,
- 917777 => true,
- 917778 => true,
- 917779 => true,
- 917780 => true,
- 917781 => true,
- 917782 => true,
- 917783 => true,
- 917784 => true,
- 917785 => true,
- 917786 => true,
- 917787 => true,
- 917788 => true,
- 917789 => true,
- 917790 => true,
- 917791 => true,
- 917792 => true,
- 917793 => true,
- 917794 => true,
- 917795 => true,
- 917796 => true,
- 917797 => true,
- 917798 => true,
- 917799 => true,
- 917800 => true,
- 917801 => true,
- 917802 => true,
- 917803 => true,
- 917804 => true,
- 917805 => true,
- 917806 => true,
- 917807 => true,
- 917808 => true,
- 917809 => true,
- 917810 => true,
- 917811 => true,
- 917812 => true,
- 917813 => true,
- 917814 => true,
- 917815 => true,
- 917816 => true,
- 917817 => true,
- 917818 => true,
- 917819 => true,
- 917820 => true,
- 917821 => true,
- 917822 => true,
- 917823 => true,
- 917824 => true,
- 917825 => true,
- 917826 => true,
- 917827 => true,
- 917828 => true,
- 917829 => true,
- 917830 => true,
- 917831 => true,
- 917832 => true,
- 917833 => true,
- 917834 => true,
- 917835 => true,
- 917836 => true,
- 917837 => true,
- 917838 => true,
- 917839 => true,
- 917840 => true,
- 917841 => true,
- 917842 => true,
- 917843 => true,
- 917844 => true,
- 917845 => true,
- 917846 => true,
- 917847 => true,
- 917848 => true,
- 917849 => true,
- 917850 => true,
- 917851 => true,
- 917852 => true,
- 917853 => true,
- 917854 => true,
- 917855 => true,
- 917856 => true,
- 917857 => true,
- 917858 => true,
- 917859 => true,
- 917860 => true,
- 917861 => true,
- 917862 => true,
- 917863 => true,
- 917864 => true,
- 917865 => true,
- 917866 => true,
- 917867 => true,
- 917868 => true,
- 917869 => true,
- 917870 => true,
- 917871 => true,
- 917872 => true,
- 917873 => true,
- 917874 => true,
- 917875 => true,
- 917876 => true,
- 917877 => true,
- 917878 => true,
- 917879 => true,
- 917880 => true,
- 917881 => true,
- 917882 => true,
- 917883 => true,
- 917884 => true,
- 917885 => true,
- 917886 => true,
- 917887 => true,
- 917888 => true,
- 917889 => true,
- 917890 => true,
- 917891 => true,
- 917892 => true,
- 917893 => true,
- 917894 => true,
- 917895 => true,
- 917896 => true,
- 917897 => true,
- 917898 => true,
- 917899 => true,
- 917900 => true,
- 917901 => true,
- 917902 => true,
- 917903 => true,
- 917904 => true,
- 917905 => true,
- 917906 => true,
- 917907 => true,
- 917908 => true,
- 917909 => true,
- 917910 => true,
- 917911 => true,
- 917912 => true,
- 917913 => true,
- 917914 => true,
- 917915 => true,
- 917916 => true,
- 917917 => true,
- 917918 => true,
- 917919 => true,
- 917920 => true,
- 917921 => true,
- 917922 => true,
- 917923 => true,
- 917924 => true,
- 917925 => true,
- 917926 => true,
- 917927 => true,
- 917928 => true,
- 917929 => true,
- 917930 => true,
- 917931 => true,
- 917932 => true,
- 917933 => true,
- 917934 => true,
- 917935 => true,
- 917936 => true,
- 917937 => true,
- 917938 => true,
- 917939 => true,
- 917940 => true,
- 917941 => true,
- 917942 => true,
- 917943 => true,
- 917944 => true,
- 917945 => true,
- 917946 => true,
- 917947 => true,
- 917948 => true,
- 917949 => true,
- 917950 => true,
- 917951 => true,
- 917952 => true,
- 917953 => true,
- 917954 => true,
- 917955 => true,
- 917956 => true,
- 917957 => true,
- 917958 => true,
- 917959 => true,
- 917960 => true,
- 917961 => true,
- 917962 => true,
- 917963 => true,
- 917964 => true,
- 917965 => true,
- 917966 => true,
- 917967 => true,
- 917968 => true,
- 917969 => true,
- 917970 => true,
- 917971 => true,
- 917972 => true,
- 917973 => true,
- 917974 => true,
- 917975 => true,
- 917976 => true,
- 917977 => true,
- 917978 => true,
- 917979 => true,
- 917980 => true,
- 917981 => true,
- 917982 => true,
- 917983 => true,
- 917984 => true,
- 917985 => true,
- 917986 => true,
- 917987 => true,
- 917988 => true,
- 917989 => true,
- 917990 => true,
- 917991 => true,
- 917992 => true,
- 917993 => true,
- 917994 => true,
- 917995 => true,
- 917996 => true,
- 917997 => true,
- 917998 => true,
- 917999 => true,
-);
diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php
deleted file mode 100644
index 9b85fe9..0000000
--- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php
+++ /dev/null
@@ -1,5778 +0,0 @@
-<?php
-
-return array (
- 65 => 'a',
- 66 => 'b',
- 67 => 'c',
- 68 => 'd',
- 69 => 'e',
- 70 => 'f',
- 71 => 'g',
- 72 => 'h',
- 73 => 'i',
- 74 => 'j',
- 75 => 'k',
- 76 => 'l',
- 77 => 'm',
- 78 => 'n',
- 79 => 'o',
- 80 => 'p',
- 81 => 'q',
- 82 => 'r',
- 83 => 's',
- 84 => 't',
- 85 => 'u',
- 86 => 'v',
- 87 => 'w',
- 88 => 'x',
- 89 => 'y',
- 90 => 'z',
- 170 => 'a',
- 178 => '2',
- 179 => '3',
- 181 => 'μ',
- 185 => '1',
- 186 => 'o',
- 188 => '1⁄4',
- 189 => '1⁄2',
- 190 => '3⁄4',
- 192 => 'à',
- 193 => 'á',
- 194 => 'â',
- 195 => 'ã',
- 196 => 'ä',
- 197 => 'å',
- 198 => 'æ',
- 199 => 'ç',
- 200 => 'è',
- 201 => 'é',
- 202 => 'ê',
- 203 => 'ë',
- 204 => 'ì',
- 205 => 'í',
- 206 => 'î',
- 207 => 'ï',
- 208 => 'ð',
- 209 => 'ñ',
- 210 => 'ò',
- 211 => 'ó',
- 212 => 'ô',
- 213 => 'õ',
- 214 => 'ö',
- 216 => 'ø',
- 217 => 'ù',
- 218 => 'ú',
- 219 => 'û',
- 220 => 'ü',
- 221 => 'ý',
- 222 => 'þ',
- 256 => 'ā',
- 258 => 'ă',
- 260 => 'ą',
- 262 => 'ć',
- 264 => 'ĉ',
- 266 => 'ċ',
- 268 => 'č',
- 270 => 'ď',
- 272 => 'đ',
- 274 => 'ē',
- 276 => 'ĕ',
- 278 => 'ė',
- 280 => 'ę',
- 282 => 'ě',
- 284 => 'ĝ',
- 286 => 'ğ',
- 288 => 'ġ',
- 290 => 'ģ',
- 292 => 'ĥ',
- 294 => 'ħ',
- 296 => 'ĩ',
- 298 => 'ī',
- 300 => 'ĭ',
- 302 => 'į',
- 304 => 'i̇',
- 306 => 'ij',
- 307 => 'ij',
- 308 => 'ĵ',
- 310 => 'ķ',
- 313 => 'ĺ',
- 315 => 'ļ',
- 317 => 'ľ',
- 319 => 'l·',
- 320 => 'l·',
- 321 => 'ł',
- 323 => 'ń',
- 325 => 'ņ',
- 327 => 'ň',
- 329 => 'ʼn',
- 330 => 'ŋ',
- 332 => 'ō',
- 334 => 'ŏ',
- 336 => 'ő',
- 338 => 'œ',
- 340 => 'ŕ',
- 342 => 'ŗ',
- 344 => 'ř',
- 346 => 'ś',
- 348 => 'ŝ',
- 350 => 'ş',
- 352 => 'š',
- 354 => 'ţ',
- 356 => 'ť',
- 358 => 'ŧ',
- 360 => 'ũ',
- 362 => 'ū',
- 364 => 'ŭ',
- 366 => 'ů',
- 368 => 'ű',
- 370 => 'ų',
- 372 => 'ŵ',
- 374 => 'ŷ',
- 376 => 'ÿ',
- 377 => 'ź',
- 379 => 'ż',
- 381 => 'ž',
- 383 => 's',
- 385 => 'ɓ',
- 386 => 'ƃ',
- 388 => 'ƅ',
- 390 => 'ɔ',
- 391 => 'ƈ',
- 393 => 'ɖ',
- 394 => 'ɗ',
- 395 => 'ƌ',
- 398 => 'ǝ',
- 399 => 'ə',
- 400 => 'ɛ',
- 401 => 'ƒ',
- 403 => 'ɠ',
- 404 => 'ɣ',
- 406 => 'ɩ',
- 407 => 'ɨ',
- 408 => 'ƙ',
- 412 => 'ɯ',
- 413 => 'ɲ',
- 415 => 'ɵ',
- 416 => 'ơ',
- 418 => 'ƣ',
- 420 => 'ƥ',
- 422 => 'ʀ',
- 423 => 'ƨ',
- 425 => 'ʃ',
- 428 => 'ƭ',
- 430 => 'ʈ',
- 431 => 'ư',
- 433 => 'ʊ',
- 434 => 'ʋ',
- 435 => 'ƴ',
- 437 => 'ƶ',
- 439 => 'ʒ',
- 440 => 'ƹ',
- 444 => 'ƽ',
- 452 => 'dž',
- 453 => 'dž',
- 454 => 'dž',
- 455 => 'lj',
- 456 => 'lj',
- 457 => 'lj',
- 458 => 'nj',
- 459 => 'nj',
- 460 => 'nj',
- 461 => 'ǎ',
- 463 => 'ǐ',
- 465 => 'ǒ',
- 467 => 'ǔ',
- 469 => 'ǖ',
- 471 => 'ǘ',
- 473 => 'ǚ',
- 475 => 'ǜ',
- 478 => 'ǟ',
- 480 => 'ǡ',
- 482 => 'ǣ',
- 484 => 'ǥ',
- 486 => 'ǧ',
- 488 => 'ǩ',
- 490 => 'ǫ',
- 492 => 'ǭ',
- 494 => 'ǯ',
- 497 => 'dz',
- 498 => 'dz',
- 499 => 'dz',
- 500 => 'ǵ',
- 502 => 'ƕ',
- 503 => 'ƿ',
- 504 => 'ǹ',
- 506 => 'ǻ',
- 508 => 'ǽ',
- 510 => 'ǿ',
- 512 => 'ȁ',
- 514 => 'ȃ',
- 516 => 'ȅ',
- 518 => 'ȇ',
- 520 => 'ȉ',
- 522 => 'ȋ',
- 524 => 'ȍ',
- 526 => 'ȏ',
- 528 => 'ȑ',
- 530 => 'ȓ',
- 532 => 'ȕ',
- 534 => 'ȗ',
- 536 => 'ș',
- 538 => 'ț',
- 540 => 'ȝ',
- 542 => 'ȟ',
- 544 => 'ƞ',
- 546 => 'ȣ',
- 548 => 'ȥ',
- 550 => 'ȧ',
- 552 => 'ȩ',
- 554 => 'ȫ',
- 556 => 'ȭ',
- 558 => 'ȯ',
- 560 => 'ȱ',
- 562 => 'ȳ',
- 570 => 'ⱥ',
- 571 => 'ȼ',
- 573 => 'ƚ',
- 574 => 'ⱦ',
- 577 => 'ɂ',
- 579 => 'ƀ',
- 580 => 'ʉ',
- 581 => 'ʌ',
- 582 => 'ɇ',
- 584 => 'ɉ',
- 586 => 'ɋ',
- 588 => 'ɍ',
- 590 => 'ɏ',
- 688 => 'h',
- 689 => 'ɦ',
- 690 => 'j',
- 691 => 'r',
- 692 => 'ɹ',
- 693 => 'ɻ',
- 694 => 'ʁ',
- 695 => 'w',
- 696 => 'y',
- 736 => 'ɣ',
- 737 => 'l',
- 738 => 's',
- 739 => 'x',
- 740 => 'ʕ',
- 832 => '̀',
- 833 => '́',
- 835 => '̓',
- 836 => '̈́',
- 837 => 'ι',
- 880 => 'ͱ',
- 882 => 'ͳ',
- 884 => 'ʹ',
- 886 => 'ͷ',
- 895 => 'ϳ',
- 902 => 'ά',
- 903 => '·',
- 904 => 'έ',
- 905 => 'ή',
- 906 => 'ί',
- 908 => 'ό',
- 910 => 'ύ',
- 911 => 'ώ',
- 913 => 'α',
- 914 => 'β',
- 915 => 'γ',
- 916 => 'δ',
- 917 => 'ε',
- 918 => 'ζ',
- 919 => 'η',
- 920 => 'θ',
- 921 => 'ι',
- 922 => 'κ',
- 923 => 'λ',
- 924 => 'μ',
- 925 => 'ν',
- 926 => 'ξ',
- 927 => 'ο',
- 928 => 'π',
- 929 => 'ρ',
- 931 => 'σ',
- 932 => 'τ',
- 933 => 'υ',
- 934 => 'φ',
- 935 => 'χ',
- 936 => 'ψ',
- 937 => 'ω',
- 938 => 'ϊ',
- 939 => 'ϋ',
- 975 => 'ϗ',
- 976 => 'β',
- 977 => 'θ',
- 978 => 'υ',
- 979 => 'ύ',
- 980 => 'ϋ',
- 981 => 'φ',
- 982 => 'π',
- 984 => 'ϙ',
- 986 => 'ϛ',
- 988 => 'ϝ',
- 990 => 'ϟ',
- 992 => 'ϡ',
- 994 => 'ϣ',
- 996 => 'ϥ',
- 998 => 'ϧ',
- 1000 => 'ϩ',
- 1002 => 'ϫ',
- 1004 => 'ϭ',
- 1006 => 'ϯ',
- 1008 => 'κ',
- 1009 => 'ρ',
- 1010 => 'σ',
- 1012 => 'θ',
- 1013 => 'ε',
- 1015 => 'ϸ',
- 1017 => 'σ',
- 1018 => 'ϻ',
- 1021 => 'ͻ',
- 1022 => 'ͼ',
- 1023 => 'ͽ',
- 1024 => 'ѐ',
- 1025 => 'ё',
- 1026 => 'ђ',
- 1027 => 'ѓ',
- 1028 => 'є',
- 1029 => 'ѕ',
- 1030 => 'і',
- 1031 => 'ї',
- 1032 => 'ј',
- 1033 => 'љ',
- 1034 => 'њ',
- 1035 => 'ћ',
- 1036 => 'ќ',
- 1037 => 'ѝ',
- 1038 => 'ў',
- 1039 => 'џ',
- 1040 => 'а',
- 1041 => 'б',
- 1042 => 'в',
- 1043 => 'г',
- 1044 => 'д',
- 1045 => 'е',
- 1046 => 'ж',
- 1047 => 'з',
- 1048 => 'и',
- 1049 => 'й',
- 1050 => 'к',
- 1051 => 'л',
- 1052 => 'м',
- 1053 => 'н',
- 1054 => 'о',
- 1055 => 'п',
- 1056 => 'р',
- 1057 => 'с',
- 1058 => 'т',
- 1059 => 'у',
- 1060 => 'ф',
- 1061 => 'х',
- 1062 => 'ц',
- 1063 => 'ч',
- 1064 => 'ш',
- 1065 => 'щ',
- 1066 => 'ъ',
- 1067 => 'ы',
- 1068 => 'ь',
- 1069 => 'э',
- 1070 => 'ю',
- 1071 => 'я',
- 1120 => 'ѡ',
- 1122 => 'ѣ',
- 1124 => 'ѥ',
- 1126 => 'ѧ',
- 1128 => 'ѩ',
- 1130 => 'ѫ',
- 1132 => 'ѭ',
- 1134 => 'ѯ',
- 1136 => 'ѱ',
- 1138 => 'ѳ',
- 1140 => 'ѵ',
- 1142 => 'ѷ',
- 1144 => 'ѹ',
- 1146 => 'ѻ',
- 1148 => 'ѽ',
- 1150 => 'ѿ',
- 1152 => 'ҁ',
- 1162 => 'ҋ',
- 1164 => 'ҍ',
- 1166 => 'ҏ',
- 1168 => 'ґ',
- 1170 => 'ғ',
- 1172 => 'ҕ',
- 1174 => 'җ',
- 1176 => 'ҙ',
- 1178 => 'қ',
- 1180 => 'ҝ',
- 1182 => 'ҟ',
- 1184 => 'ҡ',
- 1186 => 'ң',
- 1188 => 'ҥ',
- 1190 => 'ҧ',
- 1192 => 'ҩ',
- 1194 => 'ҫ',
- 1196 => 'ҭ',
- 1198 => 'ү',
- 1200 => 'ұ',
- 1202 => 'ҳ',
- 1204 => 'ҵ',
- 1206 => 'ҷ',
- 1208 => 'ҹ',
- 1210 => 'һ',
- 1212 => 'ҽ',
- 1214 => 'ҿ',
- 1217 => 'ӂ',
- 1219 => 'ӄ',
- 1221 => 'ӆ',
- 1223 => 'ӈ',
- 1225 => 'ӊ',
- 1227 => 'ӌ',
- 1229 => 'ӎ',
- 1232 => 'ӑ',
- 1234 => 'ӓ',
- 1236 => 'ӕ',
- 1238 => 'ӗ',
- 1240 => 'ә',
- 1242 => 'ӛ',
- 1244 => 'ӝ',
- 1246 => 'ӟ',
- 1248 => 'ӡ',
- 1250 => 'ӣ',
- 1252 => 'ӥ',
- 1254 => 'ӧ',
- 1256 => 'ө',
- 1258 => 'ӫ',
- 1260 => 'ӭ',
- 1262 => 'ӯ',
- 1264 => 'ӱ',
- 1266 => 'ӳ',
- 1268 => 'ӵ',
- 1270 => 'ӷ',
- 1272 => 'ӹ',
- 1274 => 'ӻ',
- 1276 => 'ӽ',
- 1278 => 'ӿ',
- 1280 => 'ԁ',
- 1282 => 'ԃ',
- 1284 => 'ԅ',
- 1286 => 'ԇ',
- 1288 => 'ԉ',
- 1290 => 'ԋ',
- 1292 => 'ԍ',
- 1294 => 'ԏ',
- 1296 => 'ԑ',
- 1298 => 'ԓ',
- 1300 => 'ԕ',
- 1302 => 'ԗ',
- 1304 => 'ԙ',
- 1306 => 'ԛ',
- 1308 => 'ԝ',
- 1310 => 'ԟ',
- 1312 => 'ԡ',
- 1314 => 'ԣ',
- 1316 => 'ԥ',
- 1318 => 'ԧ',
- 1320 => 'ԩ',
- 1322 => 'ԫ',
- 1324 => 'ԭ',
- 1326 => 'ԯ',
- 1329 => 'ա',
- 1330 => 'բ',
- 1331 => 'գ',
- 1332 => 'դ',
- 1333 => 'ե',
- 1334 => 'զ',
- 1335 => 'է',
- 1336 => 'ը',
- 1337 => 'թ',
- 1338 => 'ժ',
- 1339 => 'ի',
- 1340 => 'լ',
- 1341 => 'խ',
- 1342 => 'ծ',
- 1343 => 'կ',
- 1344 => 'հ',
- 1345 => 'ձ',
- 1346 => 'ղ',
- 1347 => 'ճ',
- 1348 => 'մ',
- 1349 => 'յ',
- 1350 => 'ն',
- 1351 => 'շ',
- 1352 => 'ո',
- 1353 => 'չ',
- 1354 => 'պ',
- 1355 => 'ջ',
- 1356 => 'ռ',
- 1357 => 'ս',
- 1358 => 'վ',
- 1359 => 'տ',
- 1360 => 'ր',
- 1361 => 'ց',
- 1362 => 'ւ',
- 1363 => 'փ',
- 1364 => 'ք',
- 1365 => 'օ',
- 1366 => 'ֆ',
- 1415 => 'եւ',
- 1653 => 'اٴ',
- 1654 => 'وٴ',
- 1655 => 'ۇٴ',
- 1656 => 'يٴ',
- 2392 => 'क़',
- 2393 => 'ख़',
- 2394 => 'ग़',
- 2395 => 'ज़',
- 2396 => 'ड़',
- 2397 => 'ढ़',
- 2398 => 'फ़',
- 2399 => 'य़',
- 2524 => 'ড়',
- 2525 => 'ঢ়',
- 2527 => 'য়',
- 2611 => 'ਲ਼',
- 2614 => 'ਸ਼',
- 2649 => 'ਖ਼',
- 2650 => 'ਗ਼',
- 2651 => 'ਜ਼',
- 2654 => 'ਫ਼',
- 2908 => 'ଡ଼',
- 2909 => 'ଢ଼',
- 3635 => 'ํา',
- 3763 => 'ໍາ',
- 3804 => 'ຫນ',
- 3805 => 'ຫມ',
- 3852 => '་',
- 3907 => 'གྷ',
- 3917 => 'ཌྷ',
- 3922 => 'དྷ',
- 3927 => 'བྷ',
- 3932 => 'ཛྷ',
- 3945 => 'ཀྵ',
- 3955 => 'ཱི',
- 3957 => 'ཱུ',
- 3958 => 'ྲྀ',
- 3959 => 'ྲཱྀ',
- 3960 => 'ླྀ',
- 3961 => 'ླཱྀ',
- 3969 => 'ཱྀ',
- 3987 => 'ྒྷ',
- 3997 => 'ྜྷ',
- 4002 => 'ྡྷ',
- 4007 => 'ྦྷ',
- 4012 => 'ྫྷ',
- 4025 => 'ྐྵ',
- 4295 => 'ⴧ',
- 4301 => 'ⴭ',
- 4348 => 'ნ',
- 5112 => 'Ᏸ',
- 5113 => 'Ᏹ',
- 5114 => 'Ᏺ',
- 5115 => 'Ᏻ',
- 5116 => 'Ᏼ',
- 5117 => 'Ᏽ',
- 7296 => 'в',
- 7297 => 'д',
- 7298 => 'о',
- 7299 => 'с',
- 7300 => 'т',
- 7301 => 'т',
- 7302 => 'ъ',
- 7303 => 'ѣ',
- 7304 => 'ꙋ',
- 7312 => 'ა',
- 7313 => 'ბ',
- 7314 => 'გ',
- 7315 => 'დ',
- 7316 => 'ე',
- 7317 => 'ვ',
- 7318 => 'ზ',
- 7319 => 'თ',
- 7320 => 'ი',
- 7321 => 'კ',
- 7322 => 'ლ',
- 7323 => 'მ',
- 7324 => 'ნ',
- 7325 => 'ო',
- 7326 => 'პ',
- 7327 => 'ჟ',
- 7328 => 'რ',
- 7329 => 'ს',
- 7330 => 'ტ',
- 7331 => 'უ',
- 7332 => 'ფ',
- 7333 => 'ქ',
- 7334 => 'ღ',
- 7335 => 'ყ',
- 7336 => 'შ',
- 7337 => 'ჩ',
- 7338 => 'ც',
- 7339 => 'ძ',
- 7340 => 'წ',
- 7341 => 'ჭ',
- 7342 => 'ხ',
- 7343 => 'ჯ',
- 7344 => 'ჰ',
- 7345 => 'ჱ',
- 7346 => 'ჲ',
- 7347 => 'ჳ',
- 7348 => 'ჴ',
- 7349 => 'ჵ',
- 7350 => 'ჶ',
- 7351 => 'ჷ',
- 7352 => 'ჸ',
- 7353 => 'ჹ',
- 7354 => 'ჺ',
- 7357 => 'ჽ',
- 7358 => 'ჾ',
- 7359 => 'ჿ',
- 7468 => 'a',
- 7469 => 'æ',
- 7470 => 'b',
- 7472 => 'd',
- 7473 => 'e',
- 7474 => 'ǝ',
- 7475 => 'g',
- 7476 => 'h',
- 7477 => 'i',
- 7478 => 'j',
- 7479 => 'k',
- 7480 => 'l',
- 7481 => 'm',
- 7482 => 'n',
- 7484 => 'o',
- 7485 => 'ȣ',
- 7486 => 'p',
- 7487 => 'r',
- 7488 => 't',
- 7489 => 'u',
- 7490 => 'w',
- 7491 => 'a',
- 7492 => 'ɐ',
- 7493 => 'ɑ',
- 7494 => 'ᴂ',
- 7495 => 'b',
- 7496 => 'd',
- 7497 => 'e',
- 7498 => 'ə',
- 7499 => 'ɛ',
- 7500 => 'ɜ',
- 7501 => 'g',
- 7503 => 'k',
- 7504 => 'm',
- 7505 => 'ŋ',
- 7506 => 'o',
- 7507 => 'ɔ',
- 7508 => 'ᴖ',
- 7509 => 'ᴗ',
- 7510 => 'p',
- 7511 => 't',
- 7512 => 'u',
- 7513 => 'ᴝ',
- 7514 => 'ɯ',
- 7515 => 'v',
- 7516 => 'ᴥ',
- 7517 => 'β',
- 7518 => 'γ',
- 7519 => 'δ',
- 7520 => 'φ',
- 7521 => 'χ',
- 7522 => 'i',
- 7523 => 'r',
- 7524 => 'u',
- 7525 => 'v',
- 7526 => 'β',
- 7527 => 'γ',
- 7528 => 'ρ',
- 7529 => 'φ',
- 7530 => 'χ',
- 7544 => 'н',
- 7579 => 'ɒ',
- 7580 => 'c',
- 7581 => 'ɕ',
- 7582 => 'ð',
- 7583 => 'ɜ',
- 7584 => 'f',
- 7585 => 'ɟ',
- 7586 => 'ɡ',
- 7587 => 'ɥ',
- 7588 => 'ɨ',
- 7589 => 'ɩ',
- 7590 => 'ɪ',
- 7591 => 'ᵻ',
- 7592 => 'ʝ',
- 7593 => 'ɭ',
- 7594 => 'ᶅ',
- 7595 => 'ʟ',
- 7596 => 'ɱ',
- 7597 => 'ɰ',
- 7598 => 'ɲ',
- 7599 => 'ɳ',
- 7600 => 'ɴ',
- 7601 => 'ɵ',
- 7602 => 'ɸ',
- 7603 => 'ʂ',
- 7604 => 'ʃ',
- 7605 => 'ƫ',
- 7606 => 'ʉ',
- 7607 => 'ʊ',
- 7608 => 'ᴜ',
- 7609 => 'ʋ',
- 7610 => 'ʌ',
- 7611 => 'z',
- 7612 => 'ʐ',
- 7613 => 'ʑ',
- 7614 => 'ʒ',
- 7615 => 'θ',
- 7680 => 'ḁ',
- 7682 => 'ḃ',
- 7684 => 'ḅ',
- 7686 => 'ḇ',
- 7688 => 'ḉ',
- 7690 => 'ḋ',
- 7692 => 'ḍ',
- 7694 => 'ḏ',
- 7696 => 'ḑ',
- 7698 => 'ḓ',
- 7700 => 'ḕ',
- 7702 => 'ḗ',
- 7704 => 'ḙ',
- 7706 => 'ḛ',
- 7708 => 'ḝ',
- 7710 => 'ḟ',
- 7712 => 'ḡ',
- 7714 => 'ḣ',
- 7716 => 'ḥ',
- 7718 => 'ḧ',
- 7720 => 'ḩ',
- 7722 => 'ḫ',
- 7724 => 'ḭ',
- 7726 => 'ḯ',
- 7728 => 'ḱ',
- 7730 => 'ḳ',
- 7732 => 'ḵ',
- 7734 => 'ḷ',
- 7736 => 'ḹ',
- 7738 => 'ḻ',
- 7740 => 'ḽ',
- 7742 => 'ḿ',
- 7744 => 'ṁ',
- 7746 => 'ṃ',
- 7748 => 'ṅ',
- 7750 => 'ṇ',
- 7752 => 'ṉ',
- 7754 => 'ṋ',
- 7756 => 'ṍ',
- 7758 => 'ṏ',
- 7760 => 'ṑ',
- 7762 => 'ṓ',
- 7764 => 'ṕ',
- 7766 => 'ṗ',
- 7768 => 'ṙ',
- 7770 => 'ṛ',
- 7772 => 'ṝ',
- 7774 => 'ṟ',
- 7776 => 'ṡ',
- 7778 => 'ṣ',
- 7780 => 'ṥ',
- 7782 => 'ṧ',
- 7784 => 'ṩ',
- 7786 => 'ṫ',
- 7788 => 'ṭ',
- 7790 => 'ṯ',
- 7792 => 'ṱ',
- 7794 => 'ṳ',
- 7796 => 'ṵ',
- 7798 => 'ṷ',
- 7800 => 'ṹ',
- 7802 => 'ṻ',
- 7804 => 'ṽ',
- 7806 => 'ṿ',
- 7808 => 'ẁ',
- 7810 => 'ẃ',
- 7812 => 'ẅ',
- 7814 => 'ẇ',
- 7816 => 'ẉ',
- 7818 => 'ẋ',
- 7820 => 'ẍ',
- 7822 => 'ẏ',
- 7824 => 'ẑ',
- 7826 => 'ẓ',
- 7828 => 'ẕ',
- 7834 => 'aʾ',
- 7835 => 'ṡ',
- 7838 => 'ss',
- 7840 => 'ạ',
- 7842 => 'ả',
- 7844 => 'ấ',
- 7846 => 'ầ',
- 7848 => 'ẩ',
- 7850 => 'ẫ',
- 7852 => 'ậ',
- 7854 => 'ắ',
- 7856 => 'ằ',
- 7858 => 'ẳ',
- 7860 => 'ẵ',
- 7862 => 'ặ',
- 7864 => 'ẹ',
- 7866 => 'ẻ',
- 7868 => 'ẽ',
- 7870 => 'ế',
- 7872 => 'ề',
- 7874 => 'ể',
- 7876 => 'ễ',
- 7878 => 'ệ',
- 7880 => 'ỉ',
- 7882 => 'ị',
- 7884 => 'ọ',
- 7886 => 'ỏ',
- 7888 => 'ố',
- 7890 => 'ồ',
- 7892 => 'ổ',
- 7894 => 'ỗ',
- 7896 => 'ộ',
- 7898 => 'ớ',
- 7900 => 'ờ',
- 7902 => 'ở',
- 7904 => 'ỡ',
- 7906 => 'ợ',
- 7908 => 'ụ',
- 7910 => 'ủ',
- 7912 => 'ứ',
- 7914 => 'ừ',
- 7916 => 'ử',
- 7918 => 'ữ',
- 7920 => 'ự',
- 7922 => 'ỳ',
- 7924 => 'ỵ',
- 7926 => 'ỷ',
- 7928 => 'ỹ',
- 7930 => 'ỻ',
- 7932 => 'ỽ',
- 7934 => 'ỿ',
- 7944 => 'ἀ',
- 7945 => 'ἁ',
- 7946 => 'ἂ',
- 7947 => 'ἃ',
- 7948 => 'ἄ',
- 7949 => 'ἅ',
- 7950 => 'ἆ',
- 7951 => 'ἇ',
- 7960 => 'ἐ',
- 7961 => 'ἑ',
- 7962 => 'ἒ',
- 7963 => 'ἓ',
- 7964 => 'ἔ',
- 7965 => 'ἕ',
- 7976 => 'ἠ',
- 7977 => 'ἡ',
- 7978 => 'ἢ',
- 7979 => 'ἣ',
- 7980 => 'ἤ',
- 7981 => 'ἥ',
- 7982 => 'ἦ',
- 7983 => 'ἧ',
- 7992 => 'ἰ',
- 7993 => 'ἱ',
- 7994 => 'ἲ',
- 7995 => 'ἳ',
- 7996 => 'ἴ',
- 7997 => 'ἵ',
- 7998 => 'ἶ',
- 7999 => 'ἷ',
- 8008 => 'ὀ',
- 8009 => 'ὁ',
- 8010 => 'ὂ',
- 8011 => 'ὃ',
- 8012 => 'ὄ',
- 8013 => 'ὅ',
- 8025 => 'ὑ',
- 8027 => 'ὓ',
- 8029 => 'ὕ',
- 8031 => 'ὗ',
- 8040 => 'ὠ',
- 8041 => 'ὡ',
- 8042 => 'ὢ',
- 8043 => 'ὣ',
- 8044 => 'ὤ',
- 8045 => 'ὥ',
- 8046 => 'ὦ',
- 8047 => 'ὧ',
- 8049 => 'ά',
- 8051 => 'έ',
- 8053 => 'ή',
- 8055 => 'ί',
- 8057 => 'ό',
- 8059 => 'ύ',
- 8061 => 'ώ',
- 8064 => 'ἀι',
- 8065 => 'ἁι',
- 8066 => 'ἂι',
- 8067 => 'ἃι',
- 8068 => 'ἄι',
- 8069 => 'ἅι',
- 8070 => 'ἆι',
- 8071 => 'ἇι',
- 8072 => 'ἀι',
- 8073 => 'ἁι',
- 8074 => 'ἂι',
- 8075 => 'ἃι',
- 8076 => 'ἄι',
- 8077 => 'ἅι',
- 8078 => 'ἆι',
- 8079 => 'ἇι',
- 8080 => 'ἠι',
- 8081 => 'ἡι',
- 8082 => 'ἢι',
- 8083 => 'ἣι',
- 8084 => 'ἤι',
- 8085 => 'ἥι',
- 8086 => 'ἦι',
- 8087 => 'ἧι',
- 8088 => 'ἠι',
- 8089 => 'ἡι',
- 8090 => 'ἢι',
- 8091 => 'ἣι',
- 8092 => 'ἤι',
- 8093 => 'ἥι',
- 8094 => 'ἦι',
- 8095 => 'ἧι',
- 8096 => 'ὠι',
- 8097 => 'ὡι',
- 8098 => 'ὢι',
- 8099 => 'ὣι',
- 8100 => 'ὤι',
- 8101 => 'ὥι',
- 8102 => 'ὦι',
- 8103 => 'ὧι',
- 8104 => 'ὠι',
- 8105 => 'ὡι',
- 8106 => 'ὢι',
- 8107 => 'ὣι',
- 8108 => 'ὤι',
- 8109 => 'ὥι',
- 8110 => 'ὦι',
- 8111 => 'ὧι',
- 8114 => 'ὰι',
- 8115 => 'αι',
- 8116 => 'άι',
- 8119 => 'ᾶι',
- 8120 => 'ᾰ',
- 8121 => 'ᾱ',
- 8122 => 'ὰ',
- 8123 => 'ά',
- 8124 => 'αι',
- 8126 => 'ι',
- 8130 => 'ὴι',
- 8131 => 'ηι',
- 8132 => 'ήι',
- 8135 => 'ῆι',
- 8136 => 'ὲ',
- 8137 => 'έ',
- 8138 => 'ὴ',
- 8139 => 'ή',
- 8140 => 'ηι',
- 8147 => 'ΐ',
- 8152 => 'ῐ',
- 8153 => 'ῑ',
- 8154 => 'ὶ',
- 8155 => 'ί',
- 8163 => 'ΰ',
- 8168 => 'ῠ',
- 8169 => 'ῡ',
- 8170 => 'ὺ',
- 8171 => 'ύ',
- 8172 => 'ῥ',
- 8178 => 'ὼι',
- 8179 => 'ωι',
- 8180 => 'ώι',
- 8183 => 'ῶι',
- 8184 => 'ὸ',
- 8185 => 'ό',
- 8186 => 'ὼ',
- 8187 => 'ώ',
- 8188 => 'ωι',
- 8209 => '‐',
- 8243 => '′′',
- 8244 => '′′′',
- 8246 => '‵‵',
- 8247 => '‵‵‵',
- 8279 => '′′′′',
- 8304 => '0',
- 8305 => 'i',
- 8308 => '4',
- 8309 => '5',
- 8310 => '6',
- 8311 => '7',
- 8312 => '8',
- 8313 => '9',
- 8315 => '−',
- 8319 => 'n',
- 8320 => '0',
- 8321 => '1',
- 8322 => '2',
- 8323 => '3',
- 8324 => '4',
- 8325 => '5',
- 8326 => '6',
- 8327 => '7',
- 8328 => '8',
- 8329 => '9',
- 8331 => '−',
- 8336 => 'a',
- 8337 => 'e',
- 8338 => 'o',
- 8339 => 'x',
- 8340 => 'ə',
- 8341 => 'h',
- 8342 => 'k',
- 8343 => 'l',
- 8344 => 'm',
- 8345 => 'n',
- 8346 => 'p',
- 8347 => 's',
- 8348 => 't',
- 8360 => 'rs',
- 8450 => 'c',
- 8451 => '°c',
- 8455 => 'ɛ',
- 8457 => '°f',
- 8458 => 'g',
- 8459 => 'h',
- 8460 => 'h',
- 8461 => 'h',
- 8462 => 'h',
- 8463 => 'ħ',
- 8464 => 'i',
- 8465 => 'i',
- 8466 => 'l',
- 8467 => 'l',
- 8469 => 'n',
- 8470 => 'no',
- 8473 => 'p',
- 8474 => 'q',
- 8475 => 'r',
- 8476 => 'r',
- 8477 => 'r',
- 8480 => 'sm',
- 8481 => 'tel',
- 8482 => 'tm',
- 8484 => 'z',
- 8486 => 'ω',
- 8488 => 'z',
- 8490 => 'k',
- 8491 => 'å',
- 8492 => 'b',
- 8493 => 'c',
- 8495 => 'e',
- 8496 => 'e',
- 8497 => 'f',
- 8499 => 'm',
- 8500 => 'o',
- 8501 => 'א',
- 8502 => 'ב',
- 8503 => 'ג',
- 8504 => 'ד',
- 8505 => 'i',
- 8507 => 'fax',
- 8508 => 'π',
- 8509 => 'γ',
- 8510 => 'γ',
- 8511 => 'π',
- 8512 => '∑',
- 8517 => 'd',
- 8518 => 'd',
- 8519 => 'e',
- 8520 => 'i',
- 8521 => 'j',
- 8528 => '1⁄7',
- 8529 => '1⁄9',
- 8530 => '1⁄10',
- 8531 => '1⁄3',
- 8532 => '2⁄3',
- 8533 => '1⁄5',
- 8534 => '2⁄5',
- 8535 => '3⁄5',
- 8536 => '4⁄5',
- 8537 => '1⁄6',
- 8538 => '5⁄6',
- 8539 => '1⁄8',
- 8540 => '3⁄8',
- 8541 => '5⁄8',
- 8542 => '7⁄8',
- 8543 => '1⁄',
- 8544 => 'i',
- 8545 => 'ii',
- 8546 => 'iii',
- 8547 => 'iv',
- 8548 => 'v',
- 8549 => 'vi',
- 8550 => 'vii',
- 8551 => 'viii',
- 8552 => 'ix',
- 8553 => 'x',
- 8554 => 'xi',
- 8555 => 'xii',
- 8556 => 'l',
- 8557 => 'c',
- 8558 => 'd',
- 8559 => 'm',
- 8560 => 'i',
- 8561 => 'ii',
- 8562 => 'iii',
- 8563 => 'iv',
- 8564 => 'v',
- 8565 => 'vi',
- 8566 => 'vii',
- 8567 => 'viii',
- 8568 => 'ix',
- 8569 => 'x',
- 8570 => 'xi',
- 8571 => 'xii',
- 8572 => 'l',
- 8573 => 'c',
- 8574 => 'd',
- 8575 => 'm',
- 8585 => '0⁄3',
- 8748 => '∫∫',
- 8749 => '∫∫∫',
- 8751 => '∮∮',
- 8752 => '∮∮∮',
- 9001 => '〈',
- 9002 => '〉',
- 9312 => '1',
- 9313 => '2',
- 9314 => '3',
- 9315 => '4',
- 9316 => '5',
- 9317 => '6',
- 9318 => '7',
- 9319 => '8',
- 9320 => '9',
- 9321 => '10',
- 9322 => '11',
- 9323 => '12',
- 9324 => '13',
- 9325 => '14',
- 9326 => '15',
- 9327 => '16',
- 9328 => '17',
- 9329 => '18',
- 9330 => '19',
- 9331 => '20',
- 9398 => 'a',
- 9399 => 'b',
- 9400 => 'c',
- 9401 => 'd',
- 9402 => 'e',
- 9403 => 'f',
- 9404 => 'g',
- 9405 => 'h',
- 9406 => 'i',
- 9407 => 'j',
- 9408 => 'k',
- 9409 => 'l',
- 9410 => 'm',
- 9411 => 'n',
- 9412 => 'o',
- 9413 => 'p',
- 9414 => 'q',
- 9415 => 'r',
- 9416 => 's',
- 9417 => 't',
- 9418 => 'u',
- 9419 => 'v',
- 9420 => 'w',
- 9421 => 'x',
- 9422 => 'y',
- 9423 => 'z',
- 9424 => 'a',
- 9425 => 'b',
- 9426 => 'c',
- 9427 => 'd',
- 9428 => 'e',
- 9429 => 'f',
- 9430 => 'g',
- 9431 => 'h',
- 9432 => 'i',
- 9433 => 'j',
- 9434 => 'k',
- 9435 => 'l',
- 9436 => 'm',
- 9437 => 'n',
- 9438 => 'o',
- 9439 => 'p',
- 9440 => 'q',
- 9441 => 'r',
- 9442 => 's',
- 9443 => 't',
- 9444 => 'u',
- 9445 => 'v',
- 9446 => 'w',
- 9447 => 'x',
- 9448 => 'y',
- 9449 => 'z',
- 9450 => '0',
- 10764 => '∫∫∫∫',
- 10972 => '⫝̸',
- 11264 => 'ⰰ',
- 11265 => 'ⰱ',
- 11266 => 'ⰲ',
- 11267 => 'ⰳ',
- 11268 => 'ⰴ',
- 11269 => 'ⰵ',
- 11270 => 'ⰶ',
- 11271 => 'ⰷ',
- 11272 => 'ⰸ',
- 11273 => 'ⰹ',
- 11274 => 'ⰺ',
- 11275 => 'ⰻ',
- 11276 => 'ⰼ',
- 11277 => 'ⰽ',
- 11278 => 'ⰾ',
- 11279 => 'ⰿ',
- 11280 => 'ⱀ',
- 11281 => 'ⱁ',
- 11282 => 'ⱂ',
- 11283 => 'ⱃ',
- 11284 => 'ⱄ',
- 11285 => 'ⱅ',
- 11286 => 'ⱆ',
- 11287 => 'ⱇ',
- 11288 => 'ⱈ',
- 11289 => 'ⱉ',
- 11290 => 'ⱊ',
- 11291 => 'ⱋ',
- 11292 => 'ⱌ',
- 11293 => 'ⱍ',
- 11294 => 'ⱎ',
- 11295 => 'ⱏ',
- 11296 => 'ⱐ',
- 11297 => 'ⱑ',
- 11298 => 'ⱒ',
- 11299 => 'ⱓ',
- 11300 => 'ⱔ',
- 11301 => 'ⱕ',
- 11302 => 'ⱖ',
- 11303 => 'ⱗ',
- 11304 => 'ⱘ',
- 11305 => 'ⱙ',
- 11306 => 'ⱚ',
- 11307 => 'ⱛ',
- 11308 => 'ⱜ',
- 11309 => 'ⱝ',
- 11310 => 'ⱞ',
- 11360 => 'ⱡ',
- 11362 => 'ɫ',
- 11363 => 'ᵽ',
- 11364 => 'ɽ',
- 11367 => 'ⱨ',
- 11369 => 'ⱪ',
- 11371 => 'ⱬ',
- 11373 => 'ɑ',
- 11374 => 'ɱ',
- 11375 => 'ɐ',
- 11376 => 'ɒ',
- 11378 => 'ⱳ',
- 11381 => 'ⱶ',
- 11388 => 'j',
- 11389 => 'v',
- 11390 => 'ȿ',
- 11391 => 'ɀ',
- 11392 => 'ⲁ',
- 11394 => 'ⲃ',
- 11396 => 'ⲅ',
- 11398 => 'ⲇ',
- 11400 => 'ⲉ',
- 11402 => 'ⲋ',
- 11404 => 'ⲍ',
- 11406 => 'ⲏ',
- 11408 => 'ⲑ',
- 11410 => 'ⲓ',
- 11412 => 'ⲕ',
- 11414 => 'ⲗ',
- 11416 => 'ⲙ',
- 11418 => 'ⲛ',
- 11420 => 'ⲝ',
- 11422 => 'ⲟ',
- 11424 => 'ⲡ',
- 11426 => 'ⲣ',
- 11428 => 'ⲥ',
- 11430 => 'ⲧ',
- 11432 => 'ⲩ',
- 11434 => 'ⲫ',
- 11436 => 'ⲭ',
- 11438 => 'ⲯ',
- 11440 => 'ⲱ',
- 11442 => 'ⲳ',
- 11444 => 'ⲵ',
- 11446 => 'ⲷ',
- 11448 => 'ⲹ',
- 11450 => 'ⲻ',
- 11452 => 'ⲽ',
- 11454 => 'ⲿ',
- 11456 => 'ⳁ',
- 11458 => 'ⳃ',
- 11460 => 'ⳅ',
- 11462 => 'ⳇ',
- 11464 => 'ⳉ',
- 11466 => 'ⳋ',
- 11468 => 'ⳍ',
- 11470 => 'ⳏ',
- 11472 => 'ⳑ',
- 11474 => 'ⳓ',
- 11476 => 'ⳕ',
- 11478 => 'ⳗ',
- 11480 => 'ⳙ',
- 11482 => 'ⳛ',
- 11484 => 'ⳝ',
- 11486 => 'ⳟ',
- 11488 => 'ⳡ',
- 11490 => 'ⳣ',
- 11499 => 'ⳬ',
- 11501 => 'ⳮ',
- 11506 => 'ⳳ',
- 11631 => 'ⵡ',
- 11935 => '母',
- 12019 => '龟',
- 12032 => '一',
- 12033 => '丨',
- 12034 => '丶',
- 12035 => '丿',
- 12036 => '乙',
- 12037 => '亅',
- 12038 => '二',
- 12039 => '亠',
- 12040 => '人',
- 12041 => '儿',
- 12042 => '入',
- 12043 => '八',
- 12044 => '冂',
- 12045 => '冖',
- 12046 => '冫',
- 12047 => '几',
- 12048 => '凵',
- 12049 => '刀',
- 12050 => '力',
- 12051 => '勹',
- 12052 => '匕',
- 12053 => '匚',
- 12054 => '匸',
- 12055 => '十',
- 12056 => '卜',
- 12057 => '卩',
- 12058 => '厂',
- 12059 => '厶',
- 12060 => '又',
- 12061 => '口',
- 12062 => '囗',
- 12063 => '土',
- 12064 => '士',
- 12065 => '夂',
- 12066 => '夊',
- 12067 => '夕',
- 12068 => '大',
- 12069 => '女',
- 12070 => '子',
- 12071 => '宀',
- 12072 => '寸',
- 12073 => '小',
- 12074 => '尢',
- 12075 => '尸',
- 12076 => '屮',
- 12077 => '山',
- 12078 => '巛',
- 12079 => '工',
- 12080 => '己',
- 12081 => '巾',
- 12082 => '干',
- 12083 => '幺',
- 12084 => '广',
- 12085 => '廴',
- 12086 => '廾',
- 12087 => '弋',
- 12088 => '弓',
- 12089 => '彐',
- 12090 => '彡',
- 12091 => '彳',
- 12092 => '心',
- 12093 => '戈',
- 12094 => '戶',
- 12095 => '手',
- 12096 => '支',
- 12097 => '攴',
- 12098 => '文',
- 12099 => '斗',
- 12100 => '斤',
- 12101 => '方',
- 12102 => '无',
- 12103 => '日',
- 12104 => '曰',
- 12105 => '月',
- 12106 => '木',
- 12107 => '欠',
- 12108 => '止',
- 12109 => '歹',
- 12110 => '殳',
- 12111 => '毋',
- 12112 => '比',
- 12113 => '毛',
- 12114 => '氏',
- 12115 => '气',
- 12116 => '水',
- 12117 => '火',
- 12118 => '爪',
- 12119 => '父',
- 12120 => '爻',
- 12121 => '爿',
- 12122 => '片',
- 12123 => '牙',
- 12124 => '牛',
- 12125 => '犬',
- 12126 => '玄',
- 12127 => '玉',
- 12128 => '瓜',
- 12129 => '瓦',
- 12130 => '甘',
- 12131 => '生',
- 12132 => '用',
- 12133 => '田',
- 12134 => '疋',
- 12135 => '疒',
- 12136 => '癶',
- 12137 => '白',
- 12138 => '皮',
- 12139 => '皿',
- 12140 => '目',
- 12141 => '矛',
- 12142 => '矢',
- 12143 => '石',
- 12144 => '示',
- 12145 => '禸',
- 12146 => '禾',
- 12147 => '穴',
- 12148 => '立',
- 12149 => '竹',
- 12150 => '米',
- 12151 => '糸',
- 12152 => '缶',
- 12153 => '网',
- 12154 => '羊',
- 12155 => '羽',
- 12156 => '老',
- 12157 => '而',
- 12158 => '耒',
- 12159 => '耳',
- 12160 => '聿',
- 12161 => '肉',
- 12162 => '臣',
- 12163 => '自',
- 12164 => '至',
- 12165 => '臼',
- 12166 => '舌',
- 12167 => '舛',
- 12168 => '舟',
- 12169 => '艮',
- 12170 => '色',
- 12171 => '艸',
- 12172 => '虍',
- 12173 => '虫',
- 12174 => '血',
- 12175 => '行',
- 12176 => '衣',
- 12177 => '襾',
- 12178 => '見',
- 12179 => '角',
- 12180 => '言',
- 12181 => '谷',
- 12182 => '豆',
- 12183 => '豕',
- 12184 => '豸',
- 12185 => '貝',
- 12186 => '赤',
- 12187 => '走',
- 12188 => '足',
- 12189 => '身',
- 12190 => '車',
- 12191 => '辛',
- 12192 => '辰',
- 12193 => '辵',
- 12194 => '邑',
- 12195 => '酉',
- 12196 => '釆',
- 12197 => '里',
- 12198 => '金',
- 12199 => '長',
- 12200 => '門',
- 12201 => '阜',
- 12202 => '隶',
- 12203 => '隹',
- 12204 => '雨',
- 12205 => '靑',
- 12206 => '非',
- 12207 => '面',
- 12208 => '革',
- 12209 => '韋',
- 12210 => '韭',
- 12211 => '音',
- 12212 => '頁',
- 12213 => '風',
- 12214 => '飛',
- 12215 => '食',
- 12216 => '首',
- 12217 => '香',
- 12218 => '馬',
- 12219 => '骨',
- 12220 => '高',
- 12221 => '髟',
- 12222 => '鬥',
- 12223 => '鬯',
- 12224 => '鬲',
- 12225 => '鬼',
- 12226 => '魚',
- 12227 => '鳥',
- 12228 => '鹵',
- 12229 => '鹿',
- 12230 => '麥',
- 12231 => '麻',
- 12232 => '黃',
- 12233 => '黍',
- 12234 => '黑',
- 12235 => '黹',
- 12236 => '黽',
- 12237 => '鼎',
- 12238 => '鼓',
- 12239 => '鼠',
- 12240 => '鼻',
- 12241 => '齊',
- 12242 => '齒',
- 12243 => '龍',
- 12244 => '龜',
- 12245 => '龠',
- 12290 => '.',
- 12342 => '〒',
- 12344 => '十',
- 12345 => '卄',
- 12346 => '卅',
- 12447 => 'より',
- 12543 => 'コト',
- 12593 => 'ᄀ',
- 12594 => 'ᄁ',
- 12595 => 'ᆪ',
- 12596 => 'ᄂ',
- 12597 => 'ᆬ',
- 12598 => 'ᆭ',
- 12599 => 'ᄃ',
- 12600 => 'ᄄ',
- 12601 => 'ᄅ',
- 12602 => 'ᆰ',
- 12603 => 'ᆱ',
- 12604 => 'ᆲ',
- 12605 => 'ᆳ',
- 12606 => 'ᆴ',
- 12607 => 'ᆵ',
- 12608 => 'ᄚ',
- 12609 => 'ᄆ',
- 12610 => 'ᄇ',
- 12611 => 'ᄈ',
- 12612 => 'ᄡ',
- 12613 => 'ᄉ',
- 12614 => 'ᄊ',
- 12615 => 'ᄋ',
- 12616 => 'ᄌ',
- 12617 => 'ᄍ',
- 12618 => 'ᄎ',
- 12619 => 'ᄏ',
- 12620 => 'ᄐ',
- 12621 => 'ᄑ',
- 12622 => 'ᄒ',
- 12623 => 'ᅡ',
- 12624 => 'ᅢ',
- 12625 => 'ᅣ',
- 12626 => 'ᅤ',
- 12627 => 'ᅥ',
- 12628 => 'ᅦ',
- 12629 => 'ᅧ',
- 12630 => 'ᅨ',
- 12631 => 'ᅩ',
- 12632 => 'ᅪ',
- 12633 => 'ᅫ',
- 12634 => 'ᅬ',
- 12635 => 'ᅭ',
- 12636 => 'ᅮ',
- 12637 => 'ᅯ',
- 12638 => 'ᅰ',
- 12639 => 'ᅱ',
- 12640 => 'ᅲ',
- 12641 => 'ᅳ',
- 12642 => 'ᅴ',
- 12643 => 'ᅵ',
- 12645 => 'ᄔ',
- 12646 => 'ᄕ',
- 12647 => 'ᇇ',
- 12648 => 'ᇈ',
- 12649 => 'ᇌ',
- 12650 => 'ᇎ',
- 12651 => 'ᇓ',
- 12652 => 'ᇗ',
- 12653 => 'ᇙ',
- 12654 => 'ᄜ',
- 12655 => 'ᇝ',
- 12656 => 'ᇟ',
- 12657 => 'ᄝ',
- 12658 => 'ᄞ',
- 12659 => 'ᄠ',
- 12660 => 'ᄢ',
- 12661 => 'ᄣ',
- 12662 => 'ᄧ',
- 12663 => 'ᄩ',
- 12664 => 'ᄫ',
- 12665 => 'ᄬ',
- 12666 => 'ᄭ',
- 12667 => 'ᄮ',
- 12668 => 'ᄯ',
- 12669 => 'ᄲ',
- 12670 => 'ᄶ',
- 12671 => 'ᅀ',
- 12672 => 'ᅇ',
- 12673 => 'ᅌ',
- 12674 => 'ᇱ',
- 12675 => 'ᇲ',
- 12676 => 'ᅗ',
- 12677 => 'ᅘ',
- 12678 => 'ᅙ',
- 12679 => 'ᆄ',
- 12680 => 'ᆅ',
- 12681 => 'ᆈ',
- 12682 => 'ᆑ',
- 12683 => 'ᆒ',
- 12684 => 'ᆔ',
- 12685 => 'ᆞ',
- 12686 => 'ᆡ',
- 12690 => '一',
- 12691 => '二',
- 12692 => '三',
- 12693 => '四',
- 12694 => '上',
- 12695 => '中',
- 12696 => '下',
- 12697 => '甲',
- 12698 => '乙',
- 12699 => '丙',
- 12700 => '丁',
- 12701 => '天',
- 12702 => '地',
- 12703 => '人',
- 12868 => '問',
- 12869 => '幼',
- 12870 => '文',
- 12871 => '箏',
- 12880 => 'pte',
- 12881 => '21',
- 12882 => '22',
- 12883 => '23',
- 12884 => '24',
- 12885 => '25',
- 12886 => '26',
- 12887 => '27',
- 12888 => '28',
- 12889 => '29',
- 12890 => '30',
- 12891 => '31',
- 12892 => '32',
- 12893 => '33',
- 12894 => '34',
- 12895 => '35',
- 12896 => 'ᄀ',
- 12897 => 'ᄂ',
- 12898 => 'ᄃ',
- 12899 => 'ᄅ',
- 12900 => 'ᄆ',
- 12901 => 'ᄇ',
- 12902 => 'ᄉ',
- 12903 => 'ᄋ',
- 12904 => 'ᄌ',
- 12905 => 'ᄎ',
- 12906 => 'ᄏ',
- 12907 => 'ᄐ',
- 12908 => 'ᄑ',
- 12909 => 'ᄒ',
- 12910 => '가',
- 12911 => '나',
- 12912 => '다',
- 12913 => '라',
- 12914 => '마',
- 12915 => '바',
- 12916 => '사',
- 12917 => '아',
- 12918 => '자',
- 12919 => '차',
- 12920 => '카',
- 12921 => '타',
- 12922 => '파',
- 12923 => '하',
- 12924 => '참고',
- 12925 => '주의',
- 12926 => '우',
- 12928 => '一',
- 12929 => '二',
- 12930 => '三',
- 12931 => '四',
- 12932 => '五',
- 12933 => '六',
- 12934 => '七',
- 12935 => '八',
- 12936 => '九',
- 12937 => '十',
- 12938 => '月',
- 12939 => '火',
- 12940 => '水',
- 12941 => '木',
- 12942 => '金',
- 12943 => '土',
- 12944 => '日',
- 12945 => '株',
- 12946 => '有',
- 12947 => '社',
- 12948 => '名',
- 12949 => '特',
- 12950 => '財',
- 12951 => '祝',
- 12952 => '労',
- 12953 => '秘',
- 12954 => '男',
- 12955 => '女',
- 12956 => '適',
- 12957 => '優',
- 12958 => '印',
- 12959 => '注',
- 12960 => '項',
- 12961 => '休',
- 12962 => '写',
- 12963 => '正',
- 12964 => '上',
- 12965 => '中',
- 12966 => '下',
- 12967 => '左',
- 12968 => '右',
- 12969 => '医',
- 12970 => '宗',
- 12971 => '学',
- 12972 => '監',
- 12973 => '企',
- 12974 => '資',
- 12975 => '協',
- 12976 => '夜',
- 12977 => '36',
- 12978 => '37',
- 12979 => '38',
- 12980 => '39',
- 12981 => '40',
- 12982 => '41',
- 12983 => '42',
- 12984 => '43',
- 12985 => '44',
- 12986 => '45',
- 12987 => '46',
- 12988 => '47',
- 12989 => '48',
- 12990 => '49',
- 12991 => '50',
- 12992 => '1月',
- 12993 => '2月',
- 12994 => '3月',
- 12995 => '4月',
- 12996 => '5月',
- 12997 => '6月',
- 12998 => '7月',
- 12999 => '8月',
- 13000 => '9月',
- 13001 => '10月',
- 13002 => '11月',
- 13003 => '12月',
- 13004 => 'hg',
- 13005 => 'erg',
- 13006 => 'ev',
- 13007 => 'ltd',
- 13008 => 'ア',
- 13009 => 'イ',
- 13010 => 'ウ',
- 13011 => 'エ',
- 13012 => 'オ',
- 13013 => 'カ',
- 13014 => 'キ',
- 13015 => 'ク',
- 13016 => 'ケ',
- 13017 => 'コ',
- 13018 => 'サ',
- 13019 => 'シ',
- 13020 => 'ス',
- 13021 => 'セ',
- 13022 => 'ソ',
- 13023 => 'タ',
- 13024 => 'チ',
- 13025 => 'ツ',
- 13026 => 'テ',
- 13027 => 'ト',
- 13028 => 'ナ',
- 13029 => 'ニ',
- 13030 => 'ヌ',
- 13031 => 'ネ',
- 13032 => 'ノ',
- 13033 => 'ハ',
- 13034 => 'ヒ',
- 13035 => 'フ',
- 13036 => 'ヘ',
- 13037 => 'ホ',
- 13038 => 'マ',
- 13039 => 'ミ',
- 13040 => 'ム',
- 13041 => 'メ',
- 13042 => 'モ',
- 13043 => 'ヤ',
- 13044 => 'ユ',
- 13045 => 'ヨ',
- 13046 => 'ラ',
- 13047 => 'リ',
- 13048 => 'ル',
- 13049 => 'レ',
- 13050 => 'ロ',
- 13051 => 'ワ',
- 13052 => 'ヰ',
- 13053 => 'ヱ',
- 13054 => 'ヲ',
- 13055 => '令和',
- 13056 => 'アパート',
- 13057 => 'アルファ',
- 13058 => 'アンペア',
- 13059 => 'アール',
- 13060 => 'イニング',
- 13061 => 'インチ',
- 13062 => 'ウォン',
- 13063 => 'エスクード',
- 13064 => 'エーカー',
- 13065 => 'オンス',
- 13066 => 'オーム',
- 13067 => 'カイリ',
- 13068 => 'カラット',
- 13069 => 'カロリー',
- 13070 => 'ガロン',
- 13071 => 'ガンマ',
- 13072 => 'ギガ',
- 13073 => 'ギニー',
- 13074 => 'キュリー',
- 13075 => 'ギルダー',
- 13076 => 'キロ',
- 13077 => 'キログラム',
- 13078 => 'キロメートル',
- 13079 => 'キロワット',
- 13080 => 'グラム',
- 13081 => 'グラムトン',
- 13082 => 'クルゼイロ',
- 13083 => 'クローネ',
- 13084 => 'ケース',
- 13085 => 'コルナ',
- 13086 => 'コーポ',
- 13087 => 'サイクル',
- 13088 => 'サンチーム',
- 13089 => 'シリング',
- 13090 => 'センチ',
- 13091 => 'セント',
- 13092 => 'ダース',
- 13093 => 'デシ',
- 13094 => 'ドル',
- 13095 => 'トン',
- 13096 => 'ナノ',
- 13097 => 'ノット',
- 13098 => 'ハイツ',
- 13099 => 'パーセント',
- 13100 => 'パーツ',
- 13101 => 'バーレル',
- 13102 => 'ピアストル',
- 13103 => 'ピクル',
- 13104 => 'ピコ',
- 13105 => 'ビル',
- 13106 => 'ファラッド',
- 13107 => 'フィート',
- 13108 => 'ブッシェル',
- 13109 => 'フラン',
- 13110 => 'ヘクタール',
- 13111 => 'ペソ',
- 13112 => 'ペニヒ',
- 13113 => 'ヘルツ',
- 13114 => 'ペンス',
- 13115 => 'ページ',
- 13116 => 'ベータ',
- 13117 => 'ポイント',
- 13118 => 'ボルト',
- 13119 => 'ホン',
- 13120 => 'ポンド',
- 13121 => 'ホール',
- 13122 => 'ホーン',
- 13123 => 'マイクロ',
- 13124 => 'マイル',
- 13125 => 'マッハ',
- 13126 => 'マルク',
- 13127 => 'マンション',
- 13128 => 'ミクロン',
- 13129 => 'ミリ',
- 13130 => 'ミリバール',
- 13131 => 'メガ',
- 13132 => 'メガトン',
- 13133 => 'メートル',
- 13134 => 'ヤード',
- 13135 => 'ヤール',
- 13136 => 'ユアン',
- 13137 => 'リットル',
- 13138 => 'リラ',
- 13139 => 'ルピー',
- 13140 => 'ルーブル',
- 13141 => 'レム',
- 13142 => 'レントゲン',
- 13143 => 'ワット',
- 13144 => '0点',
- 13145 => '1点',
- 13146 => '2点',
- 13147 => '3点',
- 13148 => '4点',
- 13149 => '5点',
- 13150 => '6点',
- 13151 => '7点',
- 13152 => '8点',
- 13153 => '9点',
- 13154 => '10点',
- 13155 => '11点',
- 13156 => '12点',
- 13157 => '13点',
- 13158 => '14点',
- 13159 => '15点',
- 13160 => '16点',
- 13161 => '17点',
- 13162 => '18点',
- 13163 => '19点',
- 13164 => '20点',
- 13165 => '21点',
- 13166 => '22点',
- 13167 => '23点',
- 13168 => '24点',
- 13169 => 'hpa',
- 13170 => 'da',
- 13171 => 'au',
- 13172 => 'bar',
- 13173 => 'ov',
- 13174 => 'pc',
- 13175 => 'dm',
- 13176 => 'dm2',
- 13177 => 'dm3',
- 13178 => 'iu',
- 13179 => '平成',
- 13180 => '昭和',
- 13181 => '大正',
- 13182 => '明治',
- 13183 => '株式会社',
- 13184 => 'pa',
- 13185 => 'na',
- 13186 => 'μa',
- 13187 => 'ma',
- 13188 => 'ka',
- 13189 => 'kb',
- 13190 => 'mb',
- 13191 => 'gb',
- 13192 => 'cal',
- 13193 => 'kcal',
- 13194 => 'pf',
- 13195 => 'nf',
- 13196 => 'μf',
- 13197 => 'μg',
- 13198 => 'mg',
- 13199 => 'kg',
- 13200 => 'hz',
- 13201 => 'khz',
- 13202 => 'mhz',
- 13203 => 'ghz',
- 13204 => 'thz',
- 13205 => 'μl',
- 13206 => 'ml',
- 13207 => 'dl',
- 13208 => 'kl',
- 13209 => 'fm',
- 13210 => 'nm',
- 13211 => 'μm',
- 13212 => 'mm',
- 13213 => 'cm',
- 13214 => 'km',
- 13215 => 'mm2',
- 13216 => 'cm2',
- 13217 => 'm2',
- 13218 => 'km2',
- 13219 => 'mm3',
- 13220 => 'cm3',
- 13221 => 'm3',
- 13222 => 'km3',
- 13223 => 'm∕s',
- 13224 => 'm∕s2',
- 13225 => 'pa',
- 13226 => 'kpa',
- 13227 => 'mpa',
- 13228 => 'gpa',
- 13229 => 'rad',
- 13230 => 'rad∕s',
- 13231 => 'rad∕s2',
- 13232 => 'ps',
- 13233 => 'ns',
- 13234 => 'μs',
- 13235 => 'ms',
- 13236 => 'pv',
- 13237 => 'nv',
- 13238 => 'μv',
- 13239 => 'mv',
- 13240 => 'kv',
- 13241 => 'mv',
- 13242 => 'pw',
- 13243 => 'nw',
- 13244 => 'μw',
- 13245 => 'mw',
- 13246 => 'kw',
- 13247 => 'mw',
- 13248 => 'kω',
- 13249 => 'mω',
- 13251 => 'bq',
- 13252 => 'cc',
- 13253 => 'cd',
- 13254 => 'c∕kg',
- 13256 => 'db',
- 13257 => 'gy',
- 13258 => 'ha',
- 13259 => 'hp',
- 13260 => 'in',
- 13261 => 'kk',
- 13262 => 'km',
- 13263 => 'kt',
- 13264 => 'lm',
- 13265 => 'ln',
- 13266 => 'log',
- 13267 => 'lx',
- 13268 => 'mb',
- 13269 => 'mil',
- 13270 => 'mol',
- 13271 => 'ph',
- 13273 => 'ppm',
- 13274 => 'pr',
- 13275 => 'sr',
- 13276 => 'sv',
- 13277 => 'wb',
- 13278 => 'v∕m',
- 13279 => 'a∕m',
- 13280 => '1日',
- 13281 => '2日',
- 13282 => '3日',
- 13283 => '4日',
- 13284 => '5日',
- 13285 => '6日',
- 13286 => '7日',
- 13287 => '8日',
- 13288 => '9日',
- 13289 => '10日',
- 13290 => '11日',
- 13291 => '12日',
- 13292 => '13日',
- 13293 => '14日',
- 13294 => '15日',
- 13295 => '16日',
- 13296 => '17日',
- 13297 => '18日',
- 13298 => '19日',
- 13299 => '20日',
- 13300 => '21日',
- 13301 => '22日',
- 13302 => '23日',
- 13303 => '24日',
- 13304 => '25日',
- 13305 => '26日',
- 13306 => '27日',
- 13307 => '28日',
- 13308 => '29日',
- 13309 => '30日',
- 13310 => '31日',
- 13311 => 'gal',
- 42560 => 'ꙁ',
- 42562 => 'ꙃ',
- 42564 => 'ꙅ',
- 42566 => 'ꙇ',
- 42568 => 'ꙉ',
- 42570 => 'ꙋ',
- 42572 => 'ꙍ',
- 42574 => 'ꙏ',
- 42576 => 'ꙑ',
- 42578 => 'ꙓ',
- 42580 => 'ꙕ',
- 42582 => 'ꙗ',
- 42584 => 'ꙙ',
- 42586 => 'ꙛ',
- 42588 => 'ꙝ',
- 42590 => 'ꙟ',
- 42592 => 'ꙡ',
- 42594 => 'ꙣ',
- 42596 => 'ꙥ',
- 42598 => 'ꙧ',
- 42600 => 'ꙩ',
- 42602 => 'ꙫ',
- 42604 => 'ꙭ',
- 42624 => 'ꚁ',
- 42626 => 'ꚃ',
- 42628 => 'ꚅ',
- 42630 => 'ꚇ',
- 42632 => 'ꚉ',
- 42634 => 'ꚋ',
- 42636 => 'ꚍ',
- 42638 => 'ꚏ',
- 42640 => 'ꚑ',
- 42642 => 'ꚓ',
- 42644 => 'ꚕ',
- 42646 => 'ꚗ',
- 42648 => 'ꚙ',
- 42650 => 'ꚛ',
- 42652 => 'ъ',
- 42653 => 'ь',
- 42786 => 'ꜣ',
- 42788 => 'ꜥ',
- 42790 => 'ꜧ',
- 42792 => 'ꜩ',
- 42794 => 'ꜫ',
- 42796 => 'ꜭ',
- 42798 => 'ꜯ',
- 42802 => 'ꜳ',
- 42804 => 'ꜵ',
- 42806 => 'ꜷ',
- 42808 => 'ꜹ',
- 42810 => 'ꜻ',
- 42812 => 'ꜽ',
- 42814 => 'ꜿ',
- 42816 => 'ꝁ',
- 42818 => 'ꝃ',
- 42820 => 'ꝅ',
- 42822 => 'ꝇ',
- 42824 => 'ꝉ',
- 42826 => 'ꝋ',
- 42828 => 'ꝍ',
- 42830 => 'ꝏ',
- 42832 => 'ꝑ',
- 42834 => 'ꝓ',
- 42836 => 'ꝕ',
- 42838 => 'ꝗ',
- 42840 => 'ꝙ',
- 42842 => 'ꝛ',
- 42844 => 'ꝝ',
- 42846 => 'ꝟ',
- 42848 => 'ꝡ',
- 42850 => 'ꝣ',
- 42852 => 'ꝥ',
- 42854 => 'ꝧ',
- 42856 => 'ꝩ',
- 42858 => 'ꝫ',
- 42860 => 'ꝭ',
- 42862 => 'ꝯ',
- 42864 => 'ꝯ',
- 42873 => 'ꝺ',
- 42875 => 'ꝼ',
- 42877 => 'ᵹ',
- 42878 => 'ꝿ',
- 42880 => 'ꞁ',
- 42882 => 'ꞃ',
- 42884 => 'ꞅ',
- 42886 => 'ꞇ',
- 42891 => 'ꞌ',
- 42893 => 'ɥ',
- 42896 => 'ꞑ',
- 42898 => 'ꞓ',
- 42902 => 'ꞗ',
- 42904 => 'ꞙ',
- 42906 => 'ꞛ',
- 42908 => 'ꞝ',
- 42910 => 'ꞟ',
- 42912 => 'ꞡ',
- 42914 => 'ꞣ',
- 42916 => 'ꞥ',
- 42918 => 'ꞧ',
- 42920 => 'ꞩ',
- 42922 => 'ɦ',
- 42923 => 'ɜ',
- 42924 => 'ɡ',
- 42925 => 'ɬ',
- 42926 => 'ɪ',
- 42928 => 'ʞ',
- 42929 => 'ʇ',
- 42930 => 'ʝ',
- 42931 => 'ꭓ',
- 42932 => 'ꞵ',
- 42934 => 'ꞷ',
- 42936 => 'ꞹ',
- 42938 => 'ꞻ',
- 42940 => 'ꞽ',
- 42942 => 'ꞿ',
- 42946 => 'ꟃ',
- 42948 => 'ꞔ',
- 42949 => 'ʂ',
- 42950 => 'ᶎ',
- 42951 => 'ꟈ',
- 42953 => 'ꟊ',
- 42997 => 'ꟶ',
- 43000 => 'ħ',
- 43001 => 'œ',
- 43868 => 'ꜧ',
- 43869 => 'ꬷ',
- 43870 => 'ɫ',
- 43871 => 'ꭒ',
- 43881 => 'ʍ',
- 43888 => 'Ꭰ',
- 43889 => 'Ꭱ',
- 43890 => 'Ꭲ',
- 43891 => 'Ꭳ',
- 43892 => 'Ꭴ',
- 43893 => 'Ꭵ',
- 43894 => 'Ꭶ',
- 43895 => 'Ꭷ',
- 43896 => 'Ꭸ',
- 43897 => 'Ꭹ',
- 43898 => 'Ꭺ',
- 43899 => 'Ꭻ',
- 43900 => 'Ꭼ',
- 43901 => 'Ꭽ',
- 43902 => 'Ꭾ',
- 43903 => 'Ꭿ',
- 43904 => 'Ꮀ',
- 43905 => 'Ꮁ',
- 43906 => 'Ꮂ',
- 43907 => 'Ꮃ',
- 43908 => 'Ꮄ',
- 43909 => 'Ꮅ',
- 43910 => 'Ꮆ',
- 43911 => 'Ꮇ',
- 43912 => 'Ꮈ',
- 43913 => 'Ꮉ',
- 43914 => 'Ꮊ',
- 43915 => 'Ꮋ',
- 43916 => 'Ꮌ',
- 43917 => 'Ꮍ',
- 43918 => 'Ꮎ',
- 43919 => 'Ꮏ',
- 43920 => 'Ꮐ',
- 43921 => 'Ꮑ',
- 43922 => 'Ꮒ',
- 43923 => 'Ꮓ',
- 43924 => 'Ꮔ',
- 43925 => 'Ꮕ',
- 43926 => 'Ꮖ',
- 43927 => 'Ꮗ',
- 43928 => 'Ꮘ',
- 43929 => 'Ꮙ',
- 43930 => 'Ꮚ',
- 43931 => 'Ꮛ',
- 43932 => 'Ꮜ',
- 43933 => 'Ꮝ',
- 43934 => 'Ꮞ',
- 43935 => 'Ꮟ',
- 43936 => 'Ꮠ',
- 43937 => 'Ꮡ',
- 43938 => 'Ꮢ',
- 43939 => 'Ꮣ',
- 43940 => 'Ꮤ',
- 43941 => 'Ꮥ',
- 43942 => 'Ꮦ',
- 43943 => 'Ꮧ',
- 43944 => 'Ꮨ',
- 43945 => 'Ꮩ',
- 43946 => 'Ꮪ',
- 43947 => 'Ꮫ',
- 43948 => 'Ꮬ',
- 43949 => 'Ꮭ',
- 43950 => 'Ꮮ',
- 43951 => 'Ꮯ',
- 43952 => 'Ꮰ',
- 43953 => 'Ꮱ',
- 43954 => 'Ꮲ',
- 43955 => 'Ꮳ',
- 43956 => 'Ꮴ',
- 43957 => 'Ꮵ',
- 43958 => 'Ꮶ',
- 43959 => 'Ꮷ',
- 43960 => 'Ꮸ',
- 43961 => 'Ꮹ',
- 43962 => 'Ꮺ',
- 43963 => 'Ꮻ',
- 43964 => 'Ꮼ',
- 43965 => 'Ꮽ',
- 43966 => 'Ꮾ',
- 43967 => 'Ꮿ',
- 63744 => '豈',
- 63745 => '更',
- 63746 => '車',
- 63747 => '賈',
- 63748 => '滑',
- 63749 => '串',
- 63750 => '句',
- 63751 => '龜',
- 63752 => '龜',
- 63753 => '契',
- 63754 => '金',
- 63755 => '喇',
- 63756 => '奈',
- 63757 => '懶',
- 63758 => '癩',
- 63759 => '羅',
- 63760 => '蘿',
- 63761 => '螺',
- 63762 => '裸',
- 63763 => '邏',
- 63764 => '樂',
- 63765 => '洛',
- 63766 => '烙',
- 63767 => '珞',
- 63768 => '落',
- 63769 => '酪',
- 63770 => '駱',
- 63771 => '亂',
- 63772 => '卵',
- 63773 => '欄',
- 63774 => '爛',
- 63775 => '蘭',
- 63776 => '鸞',
- 63777 => '嵐',
- 63778 => '濫',
- 63779 => '藍',
- 63780 => '襤',
- 63781 => '拉',
- 63782 => '臘',
- 63783 => '蠟',
- 63784 => '廊',
- 63785 => '朗',
- 63786 => '浪',
- 63787 => '狼',
- 63788 => '郎',
- 63789 => '來',
- 63790 => '冷',
- 63791 => '勞',
- 63792 => '擄',
- 63793 => '櫓',
- 63794 => '爐',
- 63795 => '盧',
- 63796 => '老',
- 63797 => '蘆',
- 63798 => '虜',
- 63799 => '路',
- 63800 => '露',
- 63801 => '魯',
- 63802 => '鷺',
- 63803 => '碌',
- 63804 => '祿',
- 63805 => '綠',
- 63806 => '菉',
- 63807 => '錄',
- 63808 => '鹿',
- 63809 => '論',
- 63810 => '壟',
- 63811 => '弄',
- 63812 => '籠',
- 63813 => '聾',
- 63814 => '牢',
- 63815 => '磊',
- 63816 => '賂',
- 63817 => '雷',
- 63818 => '壘',
- 63819 => '屢',
- 63820 => '樓',
- 63821 => '淚',
- 63822 => '漏',
- 63823 => '累',
- 63824 => '縷',
- 63825 => '陋',
- 63826 => '勒',
- 63827 => '肋',
- 63828 => '凜',
- 63829 => '凌',
- 63830 => '稜',
- 63831 => '綾',
- 63832 => '菱',
- 63833 => '陵',
- 63834 => '讀',
- 63835 => '拏',
- 63836 => '樂',
- 63837 => '諾',
- 63838 => '丹',
- 63839 => '寧',
- 63840 => '怒',
- 63841 => '率',
- 63842 => '異',
- 63843 => '北',
- 63844 => '磻',
- 63845 => '便',
- 63846 => '復',
- 63847 => '不',
- 63848 => '泌',
- 63849 => '數',
- 63850 => '索',
- 63851 => '參',
- 63852 => '塞',
- 63853 => '省',
- 63854 => '葉',
- 63855 => '說',
- 63856 => '殺',
- 63857 => '辰',
- 63858 => '沈',
- 63859 => '拾',
- 63860 => '若',
- 63861 => '掠',
- 63862 => '略',
- 63863 => '亮',
- 63864 => '兩',
- 63865 => '凉',
- 63866 => '梁',
- 63867 => '糧',
- 63868 => '良',
- 63869 => '諒',
- 63870 => '量',
- 63871 => '勵',
- 63872 => '呂',
- 63873 => '女',
- 63874 => '廬',
- 63875 => '旅',
- 63876 => '濾',
- 63877 => '礪',
- 63878 => '閭',
- 63879 => '驪',
- 63880 => '麗',
- 63881 => '黎',
- 63882 => '力',
- 63883 => '曆',
- 63884 => '歷',
- 63885 => '轢',
- 63886 => '年',
- 63887 => '憐',
- 63888 => '戀',
- 63889 => '撚',
- 63890 => '漣',
- 63891 => '煉',
- 63892 => '璉',
- 63893 => '秊',
- 63894 => '練',
- 63895 => '聯',
- 63896 => '輦',
- 63897 => '蓮',
- 63898 => '連',
- 63899 => '鍊',
- 63900 => '列',
- 63901 => '劣',
- 63902 => '咽',
- 63903 => '烈',
- 63904 => '裂',
- 63905 => '說',
- 63906 => '廉',
- 63907 => '念',
- 63908 => '捻',
- 63909 => '殮',
- 63910 => '簾',
- 63911 => '獵',
- 63912 => '令',
- 63913 => '囹',
- 63914 => '寧',
- 63915 => '嶺',
- 63916 => '怜',
- 63917 => '玲',
- 63918 => '瑩',
- 63919 => '羚',
- 63920 => '聆',
- 63921 => '鈴',
- 63922 => '零',
- 63923 => '靈',
- 63924 => '領',
- 63925 => '例',
- 63926 => '禮',
- 63927 => '醴',
- 63928 => '隸',
- 63929 => '惡',
- 63930 => '了',
- 63931 => '僚',
- 63932 => '寮',
- 63933 => '尿',
- 63934 => '料',
- 63935 => '樂',
- 63936 => '燎',
- 63937 => '療',
- 63938 => '蓼',
- 63939 => '遼',
- 63940 => '龍',
- 63941 => '暈',
- 63942 => '阮',
- 63943 => '劉',
- 63944 => '杻',
- 63945 => '柳',
- 63946 => '流',
- 63947 => '溜',
- 63948 => '琉',
- 63949 => '留',
- 63950 => '硫',
- 63951 => '紐',
- 63952 => '類',
- 63953 => '六',
- 63954 => '戮',
- 63955 => '陸',
- 63956 => '倫',
- 63957 => '崙',
- 63958 => '淪',
- 63959 => '輪',
- 63960 => '律',
- 63961 => '慄',
- 63962 => '栗',
- 63963 => '率',
- 63964 => '隆',
- 63965 => '利',
- 63966 => '吏',
- 63967 => '履',
- 63968 => '易',
- 63969 => '李',
- 63970 => '梨',
- 63971 => '泥',
- 63972 => '理',
- 63973 => '痢',
- 63974 => '罹',
- 63975 => '裏',
- 63976 => '裡',
- 63977 => '里',
- 63978 => '離',
- 63979 => '匿',
- 63980 => '溺',
- 63981 => '吝',
- 63982 => '燐',
- 63983 => '璘',
- 63984 => '藺',
- 63985 => '隣',
- 63986 => '鱗',
- 63987 => '麟',
- 63988 => '林',
- 63989 => '淋',
- 63990 => '臨',
- 63991 => '立',
- 63992 => '笠',
- 63993 => '粒',
- 63994 => '狀',
- 63995 => '炙',
- 63996 => '識',
- 63997 => '什',
- 63998 => '茶',
- 63999 => '刺',
- 64000 => '切',
- 64001 => '度',
- 64002 => '拓',
- 64003 => '糖',
- 64004 => '宅',
- 64005 => '洞',
- 64006 => '暴',
- 64007 => '輻',
- 64008 => '行',
- 64009 => '降',
- 64010 => '見',
- 64011 => '廓',
- 64012 => '兀',
- 64013 => '嗀',
- 64016 => '塚',
- 64018 => '晴',
- 64021 => '凞',
- 64022 => '猪',
- 64023 => '益',
- 64024 => '礼',
- 64025 => '神',
- 64026 => '祥',
- 64027 => '福',
- 64028 => '靖',
- 64029 => '精',
- 64030 => '羽',
- 64032 => '蘒',
- 64034 => '諸',
- 64037 => '逸',
- 64038 => '都',
- 64042 => '飯',
- 64043 => '飼',
- 64044 => '館',
- 64045 => '鶴',
- 64046 => '郞',
- 64047 => '隷',
- 64048 => '侮',
- 64049 => '僧',
- 64050 => '免',
- 64051 => '勉',
- 64052 => '勤',
- 64053 => '卑',
- 64054 => '喝',
- 64055 => '嘆',
- 64056 => '器',
- 64057 => '塀',
- 64058 => '墨',
- 64059 => '層',
- 64060 => '屮',
- 64061 => '悔',
- 64062 => '慨',
- 64063 => '憎',
- 64064 => '懲',
- 64065 => '敏',
- 64066 => '既',
- 64067 => '暑',
- 64068 => '梅',
- 64069 => '海',
- 64070 => '渚',
- 64071 => '漢',
- 64072 => '煮',
- 64073 => '爫',
- 64074 => '琢',
- 64075 => '碑',
- 64076 => '社',
- 64077 => '祉',
- 64078 => '祈',
- 64079 => '祐',
- 64080 => '祖',
- 64081 => '祝',
- 64082 => '禍',
- 64083 => '禎',
- 64084 => '穀',
- 64085 => '突',
- 64086 => '節',
- 64087 => '練',
- 64088 => '縉',
- 64089 => '繁',
- 64090 => '署',
- 64091 => '者',
- 64092 => '臭',
- 64093 => '艹',
- 64094 => '艹',
- 64095 => '著',
- 64096 => '褐',
- 64097 => '視',
- 64098 => '謁',
- 64099 => '謹',
- 64100 => '賓',
- 64101 => '贈',
- 64102 => '辶',
- 64103 => '逸',
- 64104 => '難',
- 64105 => '響',
- 64106 => '頻',
- 64107 => '恵',
- 64108 => '𤋮',
- 64109 => '舘',
- 64112 => '並',
- 64113 => '况',
- 64114 => '全',
- 64115 => '侀',
- 64116 => '充',
- 64117 => '冀',
- 64118 => '勇',
- 64119 => '勺',
- 64120 => '喝',
- 64121 => '啕',
- 64122 => '喙',
- 64123 => '嗢',
- 64124 => '塚',
- 64125 => '墳',
- 64126 => '奄',
- 64127 => '奔',
- 64128 => '婢',
- 64129 => '嬨',
- 64130 => '廒',
- 64131 => '廙',
- 64132 => '彩',
- 64133 => '徭',
- 64134 => '惘',
- 64135 => '慎',
- 64136 => '愈',
- 64137 => '憎',
- 64138 => '慠',
- 64139 => '懲',
- 64140 => '戴',
- 64141 => '揄',
- 64142 => '搜',
- 64143 => '摒',
- 64144 => '敖',
- 64145 => '晴',
- 64146 => '朗',
- 64147 => '望',
- 64148 => '杖',
- 64149 => '歹',
- 64150 => '殺',
- 64151 => '流',
- 64152 => '滛',
- 64153 => '滋',
- 64154 => '漢',
- 64155 => '瀞',
- 64156 => '煮',
- 64157 => '瞧',
- 64158 => '爵',
- 64159 => '犯',
- 64160 => '猪',
- 64161 => '瑱',
- 64162 => '甆',
- 64163 => '画',
- 64164 => '瘝',
- 64165 => '瘟',
- 64166 => '益',
- 64167 => '盛',
- 64168 => '直',
- 64169 => '睊',
- 64170 => '着',
- 64171 => '磌',
- 64172 => '窱',
- 64173 => '節',
- 64174 => '类',
- 64175 => '絛',
- 64176 => '練',
- 64177 => '缾',
- 64178 => '者',
- 64179 => '荒',
- 64180 => '華',
- 64181 => '蝹',
- 64182 => '襁',
- 64183 => '覆',
- 64184 => '視',
- 64185 => '調',
- 64186 => '諸',
- 64187 => '請',
- 64188 => '謁',
- 64189 => '諾',
- 64190 => '諭',
- 64191 => '謹',
- 64192 => '變',
- 64193 => '贈',
- 64194 => '輸',
- 64195 => '遲',
- 64196 => '醙',
- 64197 => '鉶',
- 64198 => '陼',
- 64199 => '難',
- 64200 => '靖',
- 64201 => '韛',
- 64202 => '響',
- 64203 => '頋',
- 64204 => '頻',
- 64205 => '鬒',
- 64206 => '龜',
- 64207 => '𢡊',
- 64208 => '𢡄',
- 64209 => '𣏕',
- 64210 => '㮝',
- 64211 => '䀘',
- 64212 => '䀹',
- 64213 => '𥉉',
- 64214 => '𥳐',
- 64215 => '𧻓',
- 64216 => '齃',
- 64217 => '龎',
- 64256 => 'ff',
- 64257 => 'fi',
- 64258 => 'fl',
- 64259 => 'ffi',
- 64260 => 'ffl',
- 64261 => 'st',
- 64262 => 'st',
- 64275 => 'մն',
- 64276 => 'մե',
- 64277 => 'մի',
- 64278 => 'վն',
- 64279 => 'մխ',
- 64285 => 'יִ',
- 64287 => 'ײַ',
- 64288 => 'ע',
- 64289 => 'א',
- 64290 => 'ד',
- 64291 => 'ה',
- 64292 => 'כ',
- 64293 => 'ל',
- 64294 => 'ם',
- 64295 => 'ר',
- 64296 => 'ת',
- 64298 => 'שׁ',
- 64299 => 'שׂ',
- 64300 => 'שּׁ',
- 64301 => 'שּׂ',
- 64302 => 'אַ',
- 64303 => 'אָ',
- 64304 => 'אּ',
- 64305 => 'בּ',
- 64306 => 'גּ',
- 64307 => 'דּ',
- 64308 => 'הּ',
- 64309 => 'וּ',
- 64310 => 'זּ',
- 64312 => 'טּ',
- 64313 => 'יּ',
- 64314 => 'ךּ',
- 64315 => 'כּ',
- 64316 => 'לּ',
- 64318 => 'מּ',
- 64320 => 'נּ',
- 64321 => 'סּ',
- 64323 => 'ףּ',
- 64324 => 'פּ',
- 64326 => 'צּ',
- 64327 => 'קּ',
- 64328 => 'רּ',
- 64329 => 'שּ',
- 64330 => 'תּ',
- 64331 => 'וֹ',
- 64332 => 'בֿ',
- 64333 => 'כֿ',
- 64334 => 'פֿ',
- 64335 => 'אל',
- 64336 => 'ٱ',
- 64337 => 'ٱ',
- 64338 => 'ٻ',
- 64339 => 'ٻ',
- 64340 => 'ٻ',
- 64341 => 'ٻ',
- 64342 => 'پ',
- 64343 => 'پ',
- 64344 => 'پ',
- 64345 => 'پ',
- 64346 => 'ڀ',
- 64347 => 'ڀ',
- 64348 => 'ڀ',
- 64349 => 'ڀ',
- 64350 => 'ٺ',
- 64351 => 'ٺ',
- 64352 => 'ٺ',
- 64353 => 'ٺ',
- 64354 => 'ٿ',
- 64355 => 'ٿ',
- 64356 => 'ٿ',
- 64357 => 'ٿ',
- 64358 => 'ٹ',
- 64359 => 'ٹ',
- 64360 => 'ٹ',
- 64361 => 'ٹ',
- 64362 => 'ڤ',
- 64363 => 'ڤ',
- 64364 => 'ڤ',
- 64365 => 'ڤ',
- 64366 => 'ڦ',
- 64367 => 'ڦ',
- 64368 => 'ڦ',
- 64369 => 'ڦ',
- 64370 => 'ڄ',
- 64371 => 'ڄ',
- 64372 => 'ڄ',
- 64373 => 'ڄ',
- 64374 => 'ڃ',
- 64375 => 'ڃ',
- 64376 => 'ڃ',
- 64377 => 'ڃ',
- 64378 => 'چ',
- 64379 => 'چ',
- 64380 => 'چ',
- 64381 => 'چ',
- 64382 => 'ڇ',
- 64383 => 'ڇ',
- 64384 => 'ڇ',
- 64385 => 'ڇ',
- 64386 => 'ڍ',
- 64387 => 'ڍ',
- 64388 => 'ڌ',
- 64389 => 'ڌ',
- 64390 => 'ڎ',
- 64391 => 'ڎ',
- 64392 => 'ڈ',
- 64393 => 'ڈ',
- 64394 => 'ژ',
- 64395 => 'ژ',
- 64396 => 'ڑ',
- 64397 => 'ڑ',
- 64398 => 'ک',
- 64399 => 'ک',
- 64400 => 'ک',
- 64401 => 'ک',
- 64402 => 'گ',
- 64403 => 'گ',
- 64404 => 'گ',
- 64405 => 'گ',
- 64406 => 'ڳ',
- 64407 => 'ڳ',
- 64408 => 'ڳ',
- 64409 => 'ڳ',
- 64410 => 'ڱ',
- 64411 => 'ڱ',
- 64412 => 'ڱ',
- 64413 => 'ڱ',
- 64414 => 'ں',
- 64415 => 'ں',
- 64416 => 'ڻ',
- 64417 => 'ڻ',
- 64418 => 'ڻ',
- 64419 => 'ڻ',
- 64420 => 'ۀ',
- 64421 => 'ۀ',
- 64422 => 'ہ',
- 64423 => 'ہ',
- 64424 => 'ہ',
- 64425 => 'ہ',
- 64426 => 'ھ',
- 64427 => 'ھ',
- 64428 => 'ھ',
- 64429 => 'ھ',
- 64430 => 'ے',
- 64431 => 'ے',
- 64432 => 'ۓ',
- 64433 => 'ۓ',
- 64467 => 'ڭ',
- 64468 => 'ڭ',
- 64469 => 'ڭ',
- 64470 => 'ڭ',
- 64471 => 'ۇ',
- 64472 => 'ۇ',
- 64473 => 'ۆ',
- 64474 => 'ۆ',
- 64475 => 'ۈ',
- 64476 => 'ۈ',
- 64477 => 'ۇٴ',
- 64478 => 'ۋ',
- 64479 => 'ۋ',
- 64480 => 'ۅ',
- 64481 => 'ۅ',
- 64482 => 'ۉ',
- 64483 => 'ۉ',
- 64484 => 'ې',
- 64485 => 'ې',
- 64486 => 'ې',
- 64487 => 'ې',
- 64488 => 'ى',
- 64489 => 'ى',
- 64490 => 'ئا',
- 64491 => 'ئا',
- 64492 => 'ئە',
- 64493 => 'ئە',
- 64494 => 'ئو',
- 64495 => 'ئو',
- 64496 => 'ئۇ',
- 64497 => 'ئۇ',
- 64498 => 'ئۆ',
- 64499 => 'ئۆ',
- 64500 => 'ئۈ',
- 64501 => 'ئۈ',
- 64502 => 'ئې',
- 64503 => 'ئې',
- 64504 => 'ئې',
- 64505 => 'ئى',
- 64506 => 'ئى',
- 64507 => 'ئى',
- 64508 => 'ی',
- 64509 => 'ی',
- 64510 => 'ی',
- 64511 => 'ی',
- 64512 => 'ئج',
- 64513 => 'ئح',
- 64514 => 'ئم',
- 64515 => 'ئى',
- 64516 => 'ئي',
- 64517 => 'بج',
- 64518 => 'بح',
- 64519 => 'بخ',
- 64520 => 'بم',
- 64521 => 'بى',
- 64522 => 'بي',
- 64523 => 'تج',
- 64524 => 'تح',
- 64525 => 'تخ',
- 64526 => 'تم',
- 64527 => 'تى',
- 64528 => 'تي',
- 64529 => 'ثج',
- 64530 => 'ثم',
- 64531 => 'ثى',
- 64532 => 'ثي',
- 64533 => 'جح',
- 64534 => 'جم',
- 64535 => 'حج',
- 64536 => 'حم',
- 64537 => 'خج',
- 64538 => 'خح',
- 64539 => 'خم',
- 64540 => 'سج',
- 64541 => 'سح',
- 64542 => 'سخ',
- 64543 => 'سم',
- 64544 => 'صح',
- 64545 => 'صم',
- 64546 => 'ضج',
- 64547 => 'ضح',
- 64548 => 'ضخ',
- 64549 => 'ضم',
- 64550 => 'طح',
- 64551 => 'طم',
- 64552 => 'ظم',
- 64553 => 'عج',
- 64554 => 'عم',
- 64555 => 'غج',
- 64556 => 'غم',
- 64557 => 'فج',
- 64558 => 'فح',
- 64559 => 'فخ',
- 64560 => 'فم',
- 64561 => 'فى',
- 64562 => 'في',
- 64563 => 'قح',
- 64564 => 'قم',
- 64565 => 'قى',
- 64566 => 'قي',
- 64567 => 'كا',
- 64568 => 'كج',
- 64569 => 'كح',
- 64570 => 'كخ',
- 64571 => 'كل',
- 64572 => 'كم',
- 64573 => 'كى',
- 64574 => 'كي',
- 64575 => 'لج',
- 64576 => 'لح',
- 64577 => 'لخ',
- 64578 => 'لم',
- 64579 => 'لى',
- 64580 => 'لي',
- 64581 => 'مج',
- 64582 => 'مح',
- 64583 => 'مخ',
- 64584 => 'مم',
- 64585 => 'مى',
- 64586 => 'مي',
- 64587 => 'نج',
- 64588 => 'نح',
- 64589 => 'نخ',
- 64590 => 'نم',
- 64591 => 'نى',
- 64592 => 'ني',
- 64593 => 'هج',
- 64594 => 'هم',
- 64595 => 'هى',
- 64596 => 'هي',
- 64597 => 'يج',
- 64598 => 'يح',
- 64599 => 'يخ',
- 64600 => 'يم',
- 64601 => 'يى',
- 64602 => 'يي',
- 64603 => 'ذٰ',
- 64604 => 'رٰ',
- 64605 => 'ىٰ',
- 64612 => 'ئر',
- 64613 => 'ئز',
- 64614 => 'ئم',
- 64615 => 'ئن',
- 64616 => 'ئى',
- 64617 => 'ئي',
- 64618 => 'بر',
- 64619 => 'بز',
- 64620 => 'بم',
- 64621 => 'بن',
- 64622 => 'بى',
- 64623 => 'بي',
- 64624 => 'تر',
- 64625 => 'تز',
- 64626 => 'تم',
- 64627 => 'تن',
- 64628 => 'تى',
- 64629 => 'تي',
- 64630 => 'ثر',
- 64631 => 'ثز',
- 64632 => 'ثم',
- 64633 => 'ثن',
- 64634 => 'ثى',
- 64635 => 'ثي',
- 64636 => 'فى',
- 64637 => 'في',
- 64638 => 'قى',
- 64639 => 'قي',
- 64640 => 'كا',
- 64641 => 'كل',
- 64642 => 'كم',
- 64643 => 'كى',
- 64644 => 'كي',
- 64645 => 'لم',
- 64646 => 'لى',
- 64647 => 'لي',
- 64648 => 'ما',
- 64649 => 'مم',
- 64650 => 'نر',
- 64651 => 'نز',
- 64652 => 'نم',
- 64653 => 'نن',
- 64654 => 'نى',
- 64655 => 'ني',
- 64656 => 'ىٰ',
- 64657 => 'ير',
- 64658 => 'يز',
- 64659 => 'يم',
- 64660 => 'ين',
- 64661 => 'يى',
- 64662 => 'يي',
- 64663 => 'ئج',
- 64664 => 'ئح',
- 64665 => 'ئخ',
- 64666 => 'ئم',
- 64667 => 'ئه',
- 64668 => 'بج',
- 64669 => 'بح',
- 64670 => 'بخ',
- 64671 => 'بم',
- 64672 => 'به',
- 64673 => 'تج',
- 64674 => 'تح',
- 64675 => 'تخ',
- 64676 => 'تم',
- 64677 => 'ته',
- 64678 => 'ثم',
- 64679 => 'جح',
- 64680 => 'جم',
- 64681 => 'حج',
- 64682 => 'حم',
- 64683 => 'خج',
- 64684 => 'خم',
- 64685 => 'سج',
- 64686 => 'سح',
- 64687 => 'سخ',
- 64688 => 'سم',
- 64689 => 'صح',
- 64690 => 'صخ',
- 64691 => 'صم',
- 64692 => 'ضج',
- 64693 => 'ضح',
- 64694 => 'ضخ',
- 64695 => 'ضم',
- 64696 => 'طح',
- 64697 => 'ظم',
- 64698 => 'عج',
- 64699 => 'عم',
- 64700 => 'غج',
- 64701 => 'غم',
- 64702 => 'فج',
- 64703 => 'فح',
- 64704 => 'فخ',
- 64705 => 'فم',
- 64706 => 'قح',
- 64707 => 'قم',
- 64708 => 'كج',
- 64709 => 'كح',
- 64710 => 'كخ',
- 64711 => 'كل',
- 64712 => 'كم',
- 64713 => 'لج',
- 64714 => 'لح',
- 64715 => 'لخ',
- 64716 => 'لم',
- 64717 => 'له',
- 64718 => 'مج',
- 64719 => 'مح',
- 64720 => 'مخ',
- 64721 => 'مم',
- 64722 => 'نج',
- 64723 => 'نح',
- 64724 => 'نخ',
- 64725 => 'نم',
- 64726 => 'نه',
- 64727 => 'هج',
- 64728 => 'هم',
- 64729 => 'هٰ',
- 64730 => 'يج',
- 64731 => 'يح',
- 64732 => 'يخ',
- 64733 => 'يم',
- 64734 => 'يه',
- 64735 => 'ئم',
- 64736 => 'ئه',
- 64737 => 'بم',
- 64738 => 'به',
- 64739 => 'تم',
- 64740 => 'ته',
- 64741 => 'ثم',
- 64742 => 'ثه',
- 64743 => 'سم',
- 64744 => 'سه',
- 64745 => 'شم',
- 64746 => 'شه',
- 64747 => 'كل',
- 64748 => 'كم',
- 64749 => 'لم',
- 64750 => 'نم',
- 64751 => 'نه',
- 64752 => 'يم',
- 64753 => 'يه',
- 64754 => 'ـَّ',
- 64755 => 'ـُّ',
- 64756 => 'ـِّ',
- 64757 => 'طى',
- 64758 => 'طي',
- 64759 => 'عى',
- 64760 => 'عي',
- 64761 => 'غى',
- 64762 => 'غي',
- 64763 => 'سى',
- 64764 => 'سي',
- 64765 => 'شى',
- 64766 => 'شي',
- 64767 => 'حى',
- 64768 => 'حي',
- 64769 => 'جى',
- 64770 => 'جي',
- 64771 => 'خى',
- 64772 => 'خي',
- 64773 => 'صى',
- 64774 => 'صي',
- 64775 => 'ضى',
- 64776 => 'ضي',
- 64777 => 'شج',
- 64778 => 'شح',
- 64779 => 'شخ',
- 64780 => 'شم',
- 64781 => 'شر',
- 64782 => 'سر',
- 64783 => 'صر',
- 64784 => 'ضر',
- 64785 => 'طى',
- 64786 => 'طي',
- 64787 => 'عى',
- 64788 => 'عي',
- 64789 => 'غى',
- 64790 => 'غي',
- 64791 => 'سى',
- 64792 => 'سي',
- 64793 => 'شى',
- 64794 => 'شي',
- 64795 => 'حى',
- 64796 => 'حي',
- 64797 => 'جى',
- 64798 => 'جي',
- 64799 => 'خى',
- 64800 => 'خي',
- 64801 => 'صى',
- 64802 => 'صي',
- 64803 => 'ضى',
- 64804 => 'ضي',
- 64805 => 'شج',
- 64806 => 'شح',
- 64807 => 'شخ',
- 64808 => 'شم',
- 64809 => 'شر',
- 64810 => 'سر',
- 64811 => 'صر',
- 64812 => 'ضر',
- 64813 => 'شج',
- 64814 => 'شح',
- 64815 => 'شخ',
- 64816 => 'شم',
- 64817 => 'سه',
- 64818 => 'شه',
- 64819 => 'طم',
- 64820 => 'سج',
- 64821 => 'سح',
- 64822 => 'سخ',
- 64823 => 'شج',
- 64824 => 'شح',
- 64825 => 'شخ',
- 64826 => 'طم',
- 64827 => 'ظم',
- 64828 => 'اً',
- 64829 => 'اً',
- 64848 => 'تجم',
- 64849 => 'تحج',
- 64850 => 'تحج',
- 64851 => 'تحم',
- 64852 => 'تخم',
- 64853 => 'تمج',
- 64854 => 'تمح',
- 64855 => 'تمخ',
- 64856 => 'جمح',
- 64857 => 'جمح',
- 64858 => 'حمي',
- 64859 => 'حمى',
- 64860 => 'سحج',
- 64861 => 'سجح',
- 64862 => 'سجى',
- 64863 => 'سمح',
- 64864 => 'سمح',
- 64865 => 'سمج',
- 64866 => 'سمم',
- 64867 => 'سمم',
- 64868 => 'صحح',
- 64869 => 'صحح',
- 64870 => 'صمم',
- 64871 => 'شحم',
- 64872 => 'شحم',
- 64873 => 'شجي',
- 64874 => 'شمخ',
- 64875 => 'شمخ',
- 64876 => 'شمم',
- 64877 => 'شمم',
- 64878 => 'ضحى',
- 64879 => 'ضخم',
- 64880 => 'ضخم',
- 64881 => 'طمح',
- 64882 => 'طمح',
- 64883 => 'طمم',
- 64884 => 'طمي',
- 64885 => 'عجم',
- 64886 => 'عمم',
- 64887 => 'عمم',
- 64888 => 'عمى',
- 64889 => 'غمم',
- 64890 => 'غمي',
- 64891 => 'غمى',
- 64892 => 'فخم',
- 64893 => 'فخم',
- 64894 => 'قمح',
- 64895 => 'قمم',
- 64896 => 'لحم',
- 64897 => 'لحي',
- 64898 => 'لحى',
- 64899 => 'لجج',
- 64900 => 'لجج',
- 64901 => 'لخم',
- 64902 => 'لخم',
- 64903 => 'لمح',
- 64904 => 'لمح',
- 64905 => 'محج',
- 64906 => 'محم',
- 64907 => 'محي',
- 64908 => 'مجح',
- 64909 => 'مجم',
- 64910 => 'مخج',
- 64911 => 'مخم',
- 64914 => 'مجخ',
- 64915 => 'همج',
- 64916 => 'همم',
- 64917 => 'نحم',
- 64918 => 'نحى',
- 64919 => 'نجم',
- 64920 => 'نجم',
- 64921 => 'نجى',
- 64922 => 'نمي',
- 64923 => 'نمى',
- 64924 => 'يمم',
- 64925 => 'يمم',
- 64926 => 'بخي',
- 64927 => 'تجي',
- 64928 => 'تجى',
- 64929 => 'تخي',
- 64930 => 'تخى',
- 64931 => 'تمي',
- 64932 => 'تمى',
- 64933 => 'جمي',
- 64934 => 'جحى',
- 64935 => 'جمى',
- 64936 => 'سخى',
- 64937 => 'صحي',
- 64938 => 'شحي',
- 64939 => 'ضحي',
- 64940 => 'لجي',
- 64941 => 'لمي',
- 64942 => 'يحي',
- 64943 => 'يجي',
- 64944 => 'يمي',
- 64945 => 'ممي',
- 64946 => 'قمي',
- 64947 => 'نحي',
- 64948 => 'قمح',
- 64949 => 'لحم',
- 64950 => 'عمي',
- 64951 => 'كمي',
- 64952 => 'نجح',
- 64953 => 'مخي',
- 64954 => 'لجم',
- 64955 => 'كمم',
- 64956 => 'لجم',
- 64957 => 'نجح',
- 64958 => 'جحي',
- 64959 => 'حجي',
- 64960 => 'مجي',
- 64961 => 'فمي',
- 64962 => 'بحي',
- 64963 => 'كمم',
- 64964 => 'عجم',
- 64965 => 'صمم',
- 64966 => 'سخي',
- 64967 => 'نجي',
- 65008 => 'صلے',
- 65009 => 'قلے',
- 65010 => 'الله',
- 65011 => 'اكبر',
- 65012 => 'محمد',
- 65013 => 'صلعم',
- 65014 => 'رسول',
- 65015 => 'عليه',
- 65016 => 'وسلم',
- 65017 => 'صلى',
- 65020 => 'ریال',
- 65041 => '、',
- 65047 => '〖',
- 65048 => '〗',
- 65073 => '—',
- 65074 => '–',
- 65081 => '〔',
- 65082 => '〕',
- 65083 => '【',
- 65084 => '】',
- 65085 => '《',
- 65086 => '》',
- 65087 => '〈',
- 65088 => '〉',
- 65089 => '「',
- 65090 => '」',
- 65091 => '『',
- 65092 => '』',
- 65105 => '、',
- 65112 => '—',
- 65117 => '〔',
- 65118 => '〕',
- 65123 => '-',
- 65137 => 'ـً',
- 65143 => 'ـَ',
- 65145 => 'ـُ',
- 65147 => 'ـِ',
- 65149 => 'ـّ',
- 65151 => 'ـْ',
- 65152 => 'ء',
- 65153 => 'آ',
- 65154 => 'آ',
- 65155 => 'أ',
- 65156 => 'أ',
- 65157 => 'ؤ',
- 65158 => 'ؤ',
- 65159 => 'إ',
- 65160 => 'إ',
- 65161 => 'ئ',
- 65162 => 'ئ',
- 65163 => 'ئ',
- 65164 => 'ئ',
- 65165 => 'ا',
- 65166 => 'ا',
- 65167 => 'ب',
- 65168 => 'ب',
- 65169 => 'ب',
- 65170 => 'ب',
- 65171 => 'ة',
- 65172 => 'ة',
- 65173 => 'ت',
- 65174 => 'ت',
- 65175 => 'ت',
- 65176 => 'ت',
- 65177 => 'ث',
- 65178 => 'ث',
- 65179 => 'ث',
- 65180 => 'ث',
- 65181 => 'ج',
- 65182 => 'ج',
- 65183 => 'ج',
- 65184 => 'ج',
- 65185 => 'ح',
- 65186 => 'ح',
- 65187 => 'ح',
- 65188 => 'ح',
- 65189 => 'خ',
- 65190 => 'خ',
- 65191 => 'خ',
- 65192 => 'خ',
- 65193 => 'د',
- 65194 => 'د',
- 65195 => 'ذ',
- 65196 => 'ذ',
- 65197 => 'ر',
- 65198 => 'ر',
- 65199 => 'ز',
- 65200 => 'ز',
- 65201 => 'س',
- 65202 => 'س',
- 65203 => 'س',
- 65204 => 'س',
- 65205 => 'ش',
- 65206 => 'ش',
- 65207 => 'ش',
- 65208 => 'ش',
- 65209 => 'ص',
- 65210 => 'ص',
- 65211 => 'ص',
- 65212 => 'ص',
- 65213 => 'ض',
- 65214 => 'ض',
- 65215 => 'ض',
- 65216 => 'ض',
- 65217 => 'ط',
- 65218 => 'ط',
- 65219 => 'ط',
- 65220 => 'ط',
- 65221 => 'ظ',
- 65222 => 'ظ',
- 65223 => 'ظ',
- 65224 => 'ظ',
- 65225 => 'ع',
- 65226 => 'ع',
- 65227 => 'ع',
- 65228 => 'ع',
- 65229 => 'غ',
- 65230 => 'غ',
- 65231 => 'غ',
- 65232 => 'غ',
- 65233 => 'ف',
- 65234 => 'ف',
- 65235 => 'ف',
- 65236 => 'ف',
- 65237 => 'ق',
- 65238 => 'ق',
- 65239 => 'ق',
- 65240 => 'ق',
- 65241 => 'ك',
- 65242 => 'ك',
- 65243 => 'ك',
- 65244 => 'ك',
- 65245 => 'ل',
- 65246 => 'ل',
- 65247 => 'ل',
- 65248 => 'ل',
- 65249 => 'م',
- 65250 => 'م',
- 65251 => 'م',
- 65252 => 'م',
- 65253 => 'ن',
- 65254 => 'ن',
- 65255 => 'ن',
- 65256 => 'ن',
- 65257 => 'ه',
- 65258 => 'ه',
- 65259 => 'ه',
- 65260 => 'ه',
- 65261 => 'و',
- 65262 => 'و',
- 65263 => 'ى',
- 65264 => 'ى',
- 65265 => 'ي',
- 65266 => 'ي',
- 65267 => 'ي',
- 65268 => 'ي',
- 65269 => 'لآ',
- 65270 => 'لآ',
- 65271 => 'لأ',
- 65272 => 'لأ',
- 65273 => 'لإ',
- 65274 => 'لإ',
- 65275 => 'لا',
- 65276 => 'لا',
- 65293 => '-',
- 65294 => '.',
- 65296 => '0',
- 65297 => '1',
- 65298 => '2',
- 65299 => '3',
- 65300 => '4',
- 65301 => '5',
- 65302 => '6',
- 65303 => '7',
- 65304 => '8',
- 65305 => '9',
- 65313 => 'a',
- 65314 => 'b',
- 65315 => 'c',
- 65316 => 'd',
- 65317 => 'e',
- 65318 => 'f',
- 65319 => 'g',
- 65320 => 'h',
- 65321 => 'i',
- 65322 => 'j',
- 65323 => 'k',
- 65324 => 'l',
- 65325 => 'm',
- 65326 => 'n',
- 65327 => 'o',
- 65328 => 'p',
- 65329 => 'q',
- 65330 => 'r',
- 65331 => 's',
- 65332 => 't',
- 65333 => 'u',
- 65334 => 'v',
- 65335 => 'w',
- 65336 => 'x',
- 65337 => 'y',
- 65338 => 'z',
- 65345 => 'a',
- 65346 => 'b',
- 65347 => 'c',
- 65348 => 'd',
- 65349 => 'e',
- 65350 => 'f',
- 65351 => 'g',
- 65352 => 'h',
- 65353 => 'i',
- 65354 => 'j',
- 65355 => 'k',
- 65356 => 'l',
- 65357 => 'm',
- 65358 => 'n',
- 65359 => 'o',
- 65360 => 'p',
- 65361 => 'q',
- 65362 => 'r',
- 65363 => 's',
- 65364 => 't',
- 65365 => 'u',
- 65366 => 'v',
- 65367 => 'w',
- 65368 => 'x',
- 65369 => 'y',
- 65370 => 'z',
- 65375 => '⦅',
- 65376 => '⦆',
- 65377 => '.',
- 65378 => '「',
- 65379 => '」',
- 65380 => '、',
- 65381 => '・',
- 65382 => 'ヲ',
- 65383 => 'ァ',
- 65384 => 'ィ',
- 65385 => 'ゥ',
- 65386 => 'ェ',
- 65387 => 'ォ',
- 65388 => 'ャ',
- 65389 => 'ュ',
- 65390 => 'ョ',
- 65391 => 'ッ',
- 65392 => 'ー',
- 65393 => 'ア',
- 65394 => 'イ',
- 65395 => 'ウ',
- 65396 => 'エ',
- 65397 => 'オ',
- 65398 => 'カ',
- 65399 => 'キ',
- 65400 => 'ク',
- 65401 => 'ケ',
- 65402 => 'コ',
- 65403 => 'サ',
- 65404 => 'シ',
- 65405 => 'ス',
- 65406 => 'セ',
- 65407 => 'ソ',
- 65408 => 'タ',
- 65409 => 'チ',
- 65410 => 'ツ',
- 65411 => 'テ',
- 65412 => 'ト',
- 65413 => 'ナ',
- 65414 => 'ニ',
- 65415 => 'ヌ',
- 65416 => 'ネ',
- 65417 => 'ノ',
- 65418 => 'ハ',
- 65419 => 'ヒ',
- 65420 => 'フ',
- 65421 => 'ヘ',
- 65422 => 'ホ',
- 65423 => 'マ',
- 65424 => 'ミ',
- 65425 => 'ム',
- 65426 => 'メ',
- 65427 => 'モ',
- 65428 => 'ヤ',
- 65429 => 'ユ',
- 65430 => 'ヨ',
- 65431 => 'ラ',
- 65432 => 'リ',
- 65433 => 'ル',
- 65434 => 'レ',
- 65435 => 'ロ',
- 65436 => 'ワ',
- 65437 => 'ン',
- 65438 => '゙',
- 65439 => '゚',
- 65441 => 'ᄀ',
- 65442 => 'ᄁ',
- 65443 => 'ᆪ',
- 65444 => 'ᄂ',
- 65445 => 'ᆬ',
- 65446 => 'ᆭ',
- 65447 => 'ᄃ',
- 65448 => 'ᄄ',
- 65449 => 'ᄅ',
- 65450 => 'ᆰ',
- 65451 => 'ᆱ',
- 65452 => 'ᆲ',
- 65453 => 'ᆳ',
- 65454 => 'ᆴ',
- 65455 => 'ᆵ',
- 65456 => 'ᄚ',
- 65457 => 'ᄆ',
- 65458 => 'ᄇ',
- 65459 => 'ᄈ',
- 65460 => 'ᄡ',
- 65461 => 'ᄉ',
- 65462 => 'ᄊ',
- 65463 => 'ᄋ',
- 65464 => 'ᄌ',
- 65465 => 'ᄍ',
- 65466 => 'ᄎ',
- 65467 => 'ᄏ',
- 65468 => 'ᄐ',
- 65469 => 'ᄑ',
- 65470 => 'ᄒ',
- 65474 => 'ᅡ',
- 65475 => 'ᅢ',
- 65476 => 'ᅣ',
- 65477 => 'ᅤ',
- 65478 => 'ᅥ',
- 65479 => 'ᅦ',
- 65482 => 'ᅧ',
- 65483 => 'ᅨ',
- 65484 => 'ᅩ',
- 65485 => 'ᅪ',
- 65486 => 'ᅫ',
- 65487 => 'ᅬ',
- 65490 => 'ᅭ',
- 65491 => 'ᅮ',
- 65492 => 'ᅯ',
- 65493 => 'ᅰ',
- 65494 => 'ᅱ',
- 65495 => 'ᅲ',
- 65498 => 'ᅳ',
- 65499 => 'ᅴ',
- 65500 => 'ᅵ',
- 65504 => '¢',
- 65505 => '£',
- 65506 => '¬',
- 65508 => '¦',
- 65509 => '¥',
- 65510 => '₩',
- 65512 => '│',
- 65513 => '←',
- 65514 => '↑',
- 65515 => '→',
- 65516 => '↓',
- 65517 => '■',
- 65518 => '○',
- 66560 => '𐐨',
- 66561 => '𐐩',
- 66562 => '𐐪',
- 66563 => '𐐫',
- 66564 => '𐐬',
- 66565 => '𐐭',
- 66566 => '𐐮',
- 66567 => '𐐯',
- 66568 => '𐐰',
- 66569 => '𐐱',
- 66570 => '𐐲',
- 66571 => '𐐳',
- 66572 => '𐐴',
- 66573 => '𐐵',
- 66574 => '𐐶',
- 66575 => '𐐷',
- 66576 => '𐐸',
- 66577 => '𐐹',
- 66578 => '𐐺',
- 66579 => '𐐻',
- 66580 => '𐐼',
- 66581 => '𐐽',
- 66582 => '𐐾',
- 66583 => '𐐿',
- 66584 => '𐑀',
- 66585 => '𐑁',
- 66586 => '𐑂',
- 66587 => '𐑃',
- 66588 => '𐑄',
- 66589 => '𐑅',
- 66590 => '𐑆',
- 66591 => '𐑇',
- 66592 => '𐑈',
- 66593 => '𐑉',
- 66594 => '𐑊',
- 66595 => '𐑋',
- 66596 => '𐑌',
- 66597 => '𐑍',
- 66598 => '𐑎',
- 66599 => '𐑏',
- 66736 => '𐓘',
- 66737 => '𐓙',
- 66738 => '𐓚',
- 66739 => '𐓛',
- 66740 => '𐓜',
- 66741 => '𐓝',
- 66742 => '𐓞',
- 66743 => '𐓟',
- 66744 => '𐓠',
- 66745 => '𐓡',
- 66746 => '𐓢',
- 66747 => '𐓣',
- 66748 => '𐓤',
- 66749 => '𐓥',
- 66750 => '𐓦',
- 66751 => '𐓧',
- 66752 => '𐓨',
- 66753 => '𐓩',
- 66754 => '𐓪',
- 66755 => '𐓫',
- 66756 => '𐓬',
- 66757 => '𐓭',
- 66758 => '𐓮',
- 66759 => '𐓯',
- 66760 => '𐓰',
- 66761 => '𐓱',
- 66762 => '𐓲',
- 66763 => '𐓳',
- 66764 => '𐓴',
- 66765 => '𐓵',
- 66766 => '𐓶',
- 66767 => '𐓷',
- 66768 => '𐓸',
- 66769 => '𐓹',
- 66770 => '𐓺',
- 66771 => '𐓻',
- 68736 => '𐳀',
- 68737 => '𐳁',
- 68738 => '𐳂',
- 68739 => '𐳃',
- 68740 => '𐳄',
- 68741 => '𐳅',
- 68742 => '𐳆',
- 68743 => '𐳇',
- 68744 => '𐳈',
- 68745 => '𐳉',
- 68746 => '𐳊',
- 68747 => '𐳋',
- 68748 => '𐳌',
- 68749 => '𐳍',
- 68750 => '𐳎',
- 68751 => '𐳏',
- 68752 => '𐳐',
- 68753 => '𐳑',
- 68754 => '𐳒',
- 68755 => '𐳓',
- 68756 => '𐳔',
- 68757 => '𐳕',
- 68758 => '𐳖',
- 68759 => '𐳗',
- 68760 => '𐳘',
- 68761 => '𐳙',
- 68762 => '𐳚',
- 68763 => '𐳛',
- 68764 => '𐳜',
- 68765 => '𐳝',
- 68766 => '𐳞',
- 68767 => '𐳟',
- 68768 => '𐳠',
- 68769 => '𐳡',
- 68770 => '𐳢',
- 68771 => '𐳣',
- 68772 => '𐳤',
- 68773 => '𐳥',
- 68774 => '𐳦',
- 68775 => '𐳧',
- 68776 => '𐳨',
- 68777 => '𐳩',
- 68778 => '𐳪',
- 68779 => '𐳫',
- 68780 => '𐳬',
- 68781 => '𐳭',
- 68782 => '𐳮',
- 68783 => '𐳯',
- 68784 => '𐳰',
- 68785 => '𐳱',
- 68786 => '𐳲',
- 71840 => '𑣀',
- 71841 => '𑣁',
- 71842 => '𑣂',
- 71843 => '𑣃',
- 71844 => '𑣄',
- 71845 => '𑣅',
- 71846 => '𑣆',
- 71847 => '𑣇',
- 71848 => '𑣈',
- 71849 => '𑣉',
- 71850 => '𑣊',
- 71851 => '𑣋',
- 71852 => '𑣌',
- 71853 => '𑣍',
- 71854 => '𑣎',
- 71855 => '𑣏',
- 71856 => '𑣐',
- 71857 => '𑣑',
- 71858 => '𑣒',
- 71859 => '𑣓',
- 71860 => '𑣔',
- 71861 => '𑣕',
- 71862 => '𑣖',
- 71863 => '𑣗',
- 71864 => '𑣘',
- 71865 => '𑣙',
- 71866 => '𑣚',
- 71867 => '𑣛',
- 71868 => '𑣜',
- 71869 => '𑣝',
- 71870 => '𑣞',
- 71871 => '𑣟',
- 93760 => '𖹠',
- 93761 => '𖹡',
- 93762 => '𖹢',
- 93763 => '𖹣',
- 93764 => '𖹤',
- 93765 => '𖹥',
- 93766 => '𖹦',
- 93767 => '𖹧',
- 93768 => '𖹨',
- 93769 => '𖹩',
- 93770 => '𖹪',
- 93771 => '𖹫',
- 93772 => '𖹬',
- 93773 => '𖹭',
- 93774 => '𖹮',
- 93775 => '𖹯',
- 93776 => '𖹰',
- 93777 => '𖹱',
- 93778 => '𖹲',
- 93779 => '𖹳',
- 93780 => '𖹴',
- 93781 => '𖹵',
- 93782 => '𖹶',
- 93783 => '𖹷',
- 93784 => '𖹸',
- 93785 => '𖹹',
- 93786 => '𖹺',
- 93787 => '𖹻',
- 93788 => '𖹼',
- 93789 => '𖹽',
- 93790 => '𖹾',
- 93791 => '𖹿',
- 119134 => '𝅗𝅥',
- 119135 => '𝅘𝅥',
- 119136 => '𝅘𝅥𝅮',
- 119137 => '𝅘𝅥𝅯',
- 119138 => '𝅘𝅥𝅰',
- 119139 => '𝅘𝅥𝅱',
- 119140 => '𝅘𝅥𝅲',
- 119227 => '𝆹𝅥',
- 119228 => '𝆺𝅥',
- 119229 => '𝆹𝅥𝅮',
- 119230 => '𝆺𝅥𝅮',
- 119231 => '𝆹𝅥𝅯',
- 119232 => '𝆺𝅥𝅯',
- 119808 => 'a',
- 119809 => 'b',
- 119810 => 'c',
- 119811 => 'd',
- 119812 => 'e',
- 119813 => 'f',
- 119814 => 'g',
- 119815 => 'h',
- 119816 => 'i',
- 119817 => 'j',
- 119818 => 'k',
- 119819 => 'l',
- 119820 => 'm',
- 119821 => 'n',
- 119822 => 'o',
- 119823 => 'p',
- 119824 => 'q',
- 119825 => 'r',
- 119826 => 's',
- 119827 => 't',
- 119828 => 'u',
- 119829 => 'v',
- 119830 => 'w',
- 119831 => 'x',
- 119832 => 'y',
- 119833 => 'z',
- 119834 => 'a',
- 119835 => 'b',
- 119836 => 'c',
- 119837 => 'd',
- 119838 => 'e',
- 119839 => 'f',
- 119840 => 'g',
- 119841 => 'h',
- 119842 => 'i',
- 119843 => 'j',
- 119844 => 'k',
- 119845 => 'l',
- 119846 => 'm',
- 119847 => 'n',
- 119848 => 'o',
- 119849 => 'p',
- 119850 => 'q',
- 119851 => 'r',
- 119852 => 's',
- 119853 => 't',
- 119854 => 'u',
- 119855 => 'v',
- 119856 => 'w',
- 119857 => 'x',
- 119858 => 'y',
- 119859 => 'z',
- 119860 => 'a',
- 119861 => 'b',
- 119862 => 'c',
- 119863 => 'd',
- 119864 => 'e',
- 119865 => 'f',
- 119866 => 'g',
- 119867 => 'h',
- 119868 => 'i',
- 119869 => 'j',
- 119870 => 'k',
- 119871 => 'l',
- 119872 => 'm',
- 119873 => 'n',
- 119874 => 'o',
- 119875 => 'p',
- 119876 => 'q',
- 119877 => 'r',
- 119878 => 's',
- 119879 => 't',
- 119880 => 'u',
- 119881 => 'v',
- 119882 => 'w',
- 119883 => 'x',
- 119884 => 'y',
- 119885 => 'z',
- 119886 => 'a',
- 119887 => 'b',
- 119888 => 'c',
- 119889 => 'd',
- 119890 => 'e',
- 119891 => 'f',
- 119892 => 'g',
- 119894 => 'i',
- 119895 => 'j',
- 119896 => 'k',
- 119897 => 'l',
- 119898 => 'm',
- 119899 => 'n',
- 119900 => 'o',
- 119901 => 'p',
- 119902 => 'q',
- 119903 => 'r',
- 119904 => 's',
- 119905 => 't',
- 119906 => 'u',
- 119907 => 'v',
- 119908 => 'w',
- 119909 => 'x',
- 119910 => 'y',
- 119911 => 'z',
- 119912 => 'a',
- 119913 => 'b',
- 119914 => 'c',
- 119915 => 'd',
- 119916 => 'e',
- 119917 => 'f',
- 119918 => 'g',
- 119919 => 'h',
- 119920 => 'i',
- 119921 => 'j',
- 119922 => 'k',
- 119923 => 'l',
- 119924 => 'm',
- 119925 => 'n',
- 119926 => 'o',
- 119927 => 'p',
- 119928 => 'q',
- 119929 => 'r',
- 119930 => 's',
- 119931 => 't',
- 119932 => 'u',
- 119933 => 'v',
- 119934 => 'w',
- 119935 => 'x',
- 119936 => 'y',
- 119937 => 'z',
- 119938 => 'a',
- 119939 => 'b',
- 119940 => 'c',
- 119941 => 'd',
- 119942 => 'e',
- 119943 => 'f',
- 119944 => 'g',
- 119945 => 'h',
- 119946 => 'i',
- 119947 => 'j',
- 119948 => 'k',
- 119949 => 'l',
- 119950 => 'm',
- 119951 => 'n',
- 119952 => 'o',
- 119953 => 'p',
- 119954 => 'q',
- 119955 => 'r',
- 119956 => 's',
- 119957 => 't',
- 119958 => 'u',
- 119959 => 'v',
- 119960 => 'w',
- 119961 => 'x',
- 119962 => 'y',
- 119963 => 'z',
- 119964 => 'a',
- 119966 => 'c',
- 119967 => 'd',
- 119970 => 'g',
- 119973 => 'j',
- 119974 => 'k',
- 119977 => 'n',
- 119978 => 'o',
- 119979 => 'p',
- 119980 => 'q',
- 119982 => 's',
- 119983 => 't',
- 119984 => 'u',
- 119985 => 'v',
- 119986 => 'w',
- 119987 => 'x',
- 119988 => 'y',
- 119989 => 'z',
- 119990 => 'a',
- 119991 => 'b',
- 119992 => 'c',
- 119993 => 'd',
- 119995 => 'f',
- 119997 => 'h',
- 119998 => 'i',
- 119999 => 'j',
- 120000 => 'k',
- 120001 => 'l',
- 120002 => 'm',
- 120003 => 'n',
- 120005 => 'p',
- 120006 => 'q',
- 120007 => 'r',
- 120008 => 's',
- 120009 => 't',
- 120010 => 'u',
- 120011 => 'v',
- 120012 => 'w',
- 120013 => 'x',
- 120014 => 'y',
- 120015 => 'z',
- 120016 => 'a',
- 120017 => 'b',
- 120018 => 'c',
- 120019 => 'd',
- 120020 => 'e',
- 120021 => 'f',
- 120022 => 'g',
- 120023 => 'h',
- 120024 => 'i',
- 120025 => 'j',
- 120026 => 'k',
- 120027 => 'l',
- 120028 => 'm',
- 120029 => 'n',
- 120030 => 'o',
- 120031 => 'p',
- 120032 => 'q',
- 120033 => 'r',
- 120034 => 's',
- 120035 => 't',
- 120036 => 'u',
- 120037 => 'v',
- 120038 => 'w',
- 120039 => 'x',
- 120040 => 'y',
- 120041 => 'z',
- 120042 => 'a',
- 120043 => 'b',
- 120044 => 'c',
- 120045 => 'd',
- 120046 => 'e',
- 120047 => 'f',
- 120048 => 'g',
- 120049 => 'h',
- 120050 => 'i',
- 120051 => 'j',
- 120052 => 'k',
- 120053 => 'l',
- 120054 => 'm',
- 120055 => 'n',
- 120056 => 'o',
- 120057 => 'p',
- 120058 => 'q',
- 120059 => 'r',
- 120060 => 's',
- 120061 => 't',
- 120062 => 'u',
- 120063 => 'v',
- 120064 => 'w',
- 120065 => 'x',
- 120066 => 'y',
- 120067 => 'z',
- 120068 => 'a',
- 120069 => 'b',
- 120071 => 'd',
- 120072 => 'e',
- 120073 => 'f',
- 120074 => 'g',
- 120077 => 'j',
- 120078 => 'k',
- 120079 => 'l',
- 120080 => 'm',
- 120081 => 'n',
- 120082 => 'o',
- 120083 => 'p',
- 120084 => 'q',
- 120086 => 's',
- 120087 => 't',
- 120088 => 'u',
- 120089 => 'v',
- 120090 => 'w',
- 120091 => 'x',
- 120092 => 'y',
- 120094 => 'a',
- 120095 => 'b',
- 120096 => 'c',
- 120097 => 'd',
- 120098 => 'e',
- 120099 => 'f',
- 120100 => 'g',
- 120101 => 'h',
- 120102 => 'i',
- 120103 => 'j',
- 120104 => 'k',
- 120105 => 'l',
- 120106 => 'm',
- 120107 => 'n',
- 120108 => 'o',
- 120109 => 'p',
- 120110 => 'q',
- 120111 => 'r',
- 120112 => 's',
- 120113 => 't',
- 120114 => 'u',
- 120115 => 'v',
- 120116 => 'w',
- 120117 => 'x',
- 120118 => 'y',
- 120119 => 'z',
- 120120 => 'a',
- 120121 => 'b',
- 120123 => 'd',
- 120124 => 'e',
- 120125 => 'f',
- 120126 => 'g',
- 120128 => 'i',
- 120129 => 'j',
- 120130 => 'k',
- 120131 => 'l',
- 120132 => 'm',
- 120134 => 'o',
- 120138 => 's',
- 120139 => 't',
- 120140 => 'u',
- 120141 => 'v',
- 120142 => 'w',
- 120143 => 'x',
- 120144 => 'y',
- 120146 => 'a',
- 120147 => 'b',
- 120148 => 'c',
- 120149 => 'd',
- 120150 => 'e',
- 120151 => 'f',
- 120152 => 'g',
- 120153 => 'h',
- 120154 => 'i',
- 120155 => 'j',
- 120156 => 'k',
- 120157 => 'l',
- 120158 => 'm',
- 120159 => 'n',
- 120160 => 'o',
- 120161 => 'p',
- 120162 => 'q',
- 120163 => 'r',
- 120164 => 's',
- 120165 => 't',
- 120166 => 'u',
- 120167 => 'v',
- 120168 => 'w',
- 120169 => 'x',
- 120170 => 'y',
- 120171 => 'z',
- 120172 => 'a',
- 120173 => 'b',
- 120174 => 'c',
- 120175 => 'd',
- 120176 => 'e',
- 120177 => 'f',
- 120178 => 'g',
- 120179 => 'h',
- 120180 => 'i',
- 120181 => 'j',
- 120182 => 'k',
- 120183 => 'l',
- 120184 => 'm',
- 120185 => 'n',
- 120186 => 'o',
- 120187 => 'p',
- 120188 => 'q',
- 120189 => 'r',
- 120190 => 's',
- 120191 => 't',
- 120192 => 'u',
- 120193 => 'v',
- 120194 => 'w',
- 120195 => 'x',
- 120196 => 'y',
- 120197 => 'z',
- 120198 => 'a',
- 120199 => 'b',
- 120200 => 'c',
- 120201 => 'd',
- 120202 => 'e',
- 120203 => 'f',
- 120204 => 'g',
- 120205 => 'h',
- 120206 => 'i',
- 120207 => 'j',
- 120208 => 'k',
- 120209 => 'l',
- 120210 => 'm',
- 120211 => 'n',
- 120212 => 'o',
- 120213 => 'p',
- 120214 => 'q',
- 120215 => 'r',
- 120216 => 's',
- 120217 => 't',
- 120218 => 'u',
- 120219 => 'v',
- 120220 => 'w',
- 120221 => 'x',
- 120222 => 'y',
- 120223 => 'z',
- 120224 => 'a',
- 120225 => 'b',
- 120226 => 'c',
- 120227 => 'd',
- 120228 => 'e',
- 120229 => 'f',
- 120230 => 'g',
- 120231 => 'h',
- 120232 => 'i',
- 120233 => 'j',
- 120234 => 'k',
- 120235 => 'l',
- 120236 => 'm',
- 120237 => 'n',
- 120238 => 'o',
- 120239 => 'p',
- 120240 => 'q',
- 120241 => 'r',
- 120242 => 's',
- 120243 => 't',
- 120244 => 'u',
- 120245 => 'v',
- 120246 => 'w',
- 120247 => 'x',
- 120248 => 'y',
- 120249 => 'z',
- 120250 => 'a',
- 120251 => 'b',
- 120252 => 'c',
- 120253 => 'd',
- 120254 => 'e',
- 120255 => 'f',
- 120256 => 'g',
- 120257 => 'h',
- 120258 => 'i',
- 120259 => 'j',
- 120260 => 'k',
- 120261 => 'l',
- 120262 => 'm',
- 120263 => 'n',
- 120264 => 'o',
- 120265 => 'p',
- 120266 => 'q',
- 120267 => 'r',
- 120268 => 's',
- 120269 => 't',
- 120270 => 'u',
- 120271 => 'v',
- 120272 => 'w',
- 120273 => 'x',
- 120274 => 'y',
- 120275 => 'z',
- 120276 => 'a',
- 120277 => 'b',
- 120278 => 'c',
- 120279 => 'd',
- 120280 => 'e',
- 120281 => 'f',
- 120282 => 'g',
- 120283 => 'h',
- 120284 => 'i',
- 120285 => 'j',
- 120286 => 'k',
- 120287 => 'l',
- 120288 => 'm',
- 120289 => 'n',
- 120290 => 'o',
- 120291 => 'p',
- 120292 => 'q',
- 120293 => 'r',
- 120294 => 's',
- 120295 => 't',
- 120296 => 'u',
- 120297 => 'v',
- 120298 => 'w',
- 120299 => 'x',
- 120300 => 'y',
- 120301 => 'z',
- 120302 => 'a',
- 120303 => 'b',
- 120304 => 'c',
- 120305 => 'd',
- 120306 => 'e',
- 120307 => 'f',
- 120308 => 'g',
- 120309 => 'h',
- 120310 => 'i',
- 120311 => 'j',
- 120312 => 'k',
- 120313 => 'l',
- 120314 => 'm',
- 120315 => 'n',
- 120316 => 'o',
- 120317 => 'p',
- 120318 => 'q',
- 120319 => 'r',
- 120320 => 's',
- 120321 => 't',
- 120322 => 'u',
- 120323 => 'v',
- 120324 => 'w',
- 120325 => 'x',
- 120326 => 'y',
- 120327 => 'z',
- 120328 => 'a',
- 120329 => 'b',
- 120330 => 'c',
- 120331 => 'd',
- 120332 => 'e',
- 120333 => 'f',
- 120334 => 'g',
- 120335 => 'h',
- 120336 => 'i',
- 120337 => 'j',
- 120338 => 'k',
- 120339 => 'l',
- 120340 => 'm',
- 120341 => 'n',
- 120342 => 'o',
- 120343 => 'p',
- 120344 => 'q',
- 120345 => 'r',
- 120346 => 's',
- 120347 => 't',
- 120348 => 'u',
- 120349 => 'v',
- 120350 => 'w',
- 120351 => 'x',
- 120352 => 'y',
- 120353 => 'z',
- 120354 => 'a',
- 120355 => 'b',
- 120356 => 'c',
- 120357 => 'd',
- 120358 => 'e',
- 120359 => 'f',
- 120360 => 'g',
- 120361 => 'h',
- 120362 => 'i',
- 120363 => 'j',
- 120364 => 'k',
- 120365 => 'l',
- 120366 => 'm',
- 120367 => 'n',
- 120368 => 'o',
- 120369 => 'p',
- 120370 => 'q',
- 120371 => 'r',
- 120372 => 's',
- 120373 => 't',
- 120374 => 'u',
- 120375 => 'v',
- 120376 => 'w',
- 120377 => 'x',
- 120378 => 'y',
- 120379 => 'z',
- 120380 => 'a',
- 120381 => 'b',
- 120382 => 'c',
- 120383 => 'd',
- 120384 => 'e',
- 120385 => 'f',
- 120386 => 'g',
- 120387 => 'h',
- 120388 => 'i',
- 120389 => 'j',
- 120390 => 'k',
- 120391 => 'l',
- 120392 => 'm',
- 120393 => 'n',
- 120394 => 'o',
- 120395 => 'p',
- 120396 => 'q',
- 120397 => 'r',
- 120398 => 's',
- 120399 => 't',
- 120400 => 'u',
- 120401 => 'v',
- 120402 => 'w',
- 120403 => 'x',
- 120404 => 'y',
- 120405 => 'z',
- 120406 => 'a',
- 120407 => 'b',
- 120408 => 'c',
- 120409 => 'd',
- 120410 => 'e',
- 120411 => 'f',
- 120412 => 'g',
- 120413 => 'h',
- 120414 => 'i',
- 120415 => 'j',
- 120416 => 'k',
- 120417 => 'l',
- 120418 => 'm',
- 120419 => 'n',
- 120420 => 'o',
- 120421 => 'p',
- 120422 => 'q',
- 120423 => 'r',
- 120424 => 's',
- 120425 => 't',
- 120426 => 'u',
- 120427 => 'v',
- 120428 => 'w',
- 120429 => 'x',
- 120430 => 'y',
- 120431 => 'z',
- 120432 => 'a',
- 120433 => 'b',
- 120434 => 'c',
- 120435 => 'd',
- 120436 => 'e',
- 120437 => 'f',
- 120438 => 'g',
- 120439 => 'h',
- 120440 => 'i',
- 120441 => 'j',
- 120442 => 'k',
- 120443 => 'l',
- 120444 => 'm',
- 120445 => 'n',
- 120446 => 'o',
- 120447 => 'p',
- 120448 => 'q',
- 120449 => 'r',
- 120450 => 's',
- 120451 => 't',
- 120452 => 'u',
- 120453 => 'v',
- 120454 => 'w',
- 120455 => 'x',
- 120456 => 'y',
- 120457 => 'z',
- 120458 => 'a',
- 120459 => 'b',
- 120460 => 'c',
- 120461 => 'd',
- 120462 => 'e',
- 120463 => 'f',
- 120464 => 'g',
- 120465 => 'h',
- 120466 => 'i',
- 120467 => 'j',
- 120468 => 'k',
- 120469 => 'l',
- 120470 => 'm',
- 120471 => 'n',
- 120472 => 'o',
- 120473 => 'p',
- 120474 => 'q',
- 120475 => 'r',
- 120476 => 's',
- 120477 => 't',
- 120478 => 'u',
- 120479 => 'v',
- 120480 => 'w',
- 120481 => 'x',
- 120482 => 'y',
- 120483 => 'z',
- 120484 => 'ı',
- 120485 => 'ȷ',
- 120488 => 'α',
- 120489 => 'β',
- 120490 => 'γ',
- 120491 => 'δ',
- 120492 => 'ε',
- 120493 => 'ζ',
- 120494 => 'η',
- 120495 => 'θ',
- 120496 => 'ι',
- 120497 => 'κ',
- 120498 => 'λ',
- 120499 => 'μ',
- 120500 => 'ν',
- 120501 => 'ξ',
- 120502 => 'ο',
- 120503 => 'π',
- 120504 => 'ρ',
- 120505 => 'θ',
- 120506 => 'σ',
- 120507 => 'τ',
- 120508 => 'υ',
- 120509 => 'φ',
- 120510 => 'χ',
- 120511 => 'ψ',
- 120512 => 'ω',
- 120513 => '∇',
- 120514 => 'α',
- 120515 => 'β',
- 120516 => 'γ',
- 120517 => 'δ',
- 120518 => 'ε',
- 120519 => 'ζ',
- 120520 => 'η',
- 120521 => 'θ',
- 120522 => 'ι',
- 120523 => 'κ',
- 120524 => 'λ',
- 120525 => 'μ',
- 120526 => 'ν',
- 120527 => 'ξ',
- 120528 => 'ο',
- 120529 => 'π',
- 120530 => 'ρ',
- 120531 => 'σ',
- 120532 => 'σ',
- 120533 => 'τ',
- 120534 => 'υ',
- 120535 => 'φ',
- 120536 => 'χ',
- 120537 => 'ψ',
- 120538 => 'ω',
- 120539 => '∂',
- 120540 => 'ε',
- 120541 => 'θ',
- 120542 => 'κ',
- 120543 => 'φ',
- 120544 => 'ρ',
- 120545 => 'π',
- 120546 => 'α',
- 120547 => 'β',
- 120548 => 'γ',
- 120549 => 'δ',
- 120550 => 'ε',
- 120551 => 'ζ',
- 120552 => 'η',
- 120553 => 'θ',
- 120554 => 'ι',
- 120555 => 'κ',
- 120556 => 'λ',
- 120557 => 'μ',
- 120558 => 'ν',
- 120559 => 'ξ',
- 120560 => 'ο',
- 120561 => 'π',
- 120562 => 'ρ',
- 120563 => 'θ',
- 120564 => 'σ',
- 120565 => 'τ',
- 120566 => 'υ',
- 120567 => 'φ',
- 120568 => 'χ',
- 120569 => 'ψ',
- 120570 => 'ω',
- 120571 => '∇',
- 120572 => 'α',
- 120573 => 'β',
- 120574 => 'γ',
- 120575 => 'δ',
- 120576 => 'ε',
- 120577 => 'ζ',
- 120578 => 'η',
- 120579 => 'θ',
- 120580 => 'ι',
- 120581 => 'κ',
- 120582 => 'λ',
- 120583 => 'μ',
- 120584 => 'ν',
- 120585 => 'ξ',
- 120586 => 'ο',
- 120587 => 'π',
- 120588 => 'ρ',
- 120589 => 'σ',
- 120590 => 'σ',
- 120591 => 'τ',
- 120592 => 'υ',
- 120593 => 'φ',
- 120594 => 'χ',
- 120595 => 'ψ',
- 120596 => 'ω',
- 120597 => '∂',
- 120598 => 'ε',
- 120599 => 'θ',
- 120600 => 'κ',
- 120601 => 'φ',
- 120602 => 'ρ',
- 120603 => 'π',
- 120604 => 'α',
- 120605 => 'β',
- 120606 => 'γ',
- 120607 => 'δ',
- 120608 => 'ε',
- 120609 => 'ζ',
- 120610 => 'η',
- 120611 => 'θ',
- 120612 => 'ι',
- 120613 => 'κ',
- 120614 => 'λ',
- 120615 => 'μ',
- 120616 => 'ν',
- 120617 => 'ξ',
- 120618 => 'ο',
- 120619 => 'π',
- 120620 => 'ρ',
- 120621 => 'θ',
- 120622 => 'σ',
- 120623 => 'τ',
- 120624 => 'υ',
- 120625 => 'φ',
- 120626 => 'χ',
- 120627 => 'ψ',
- 120628 => 'ω',
- 120629 => '∇',
- 120630 => 'α',
- 120631 => 'β',
- 120632 => 'γ',
- 120633 => 'δ',
- 120634 => 'ε',
- 120635 => 'ζ',
- 120636 => 'η',
- 120637 => 'θ',
- 120638 => 'ι',
- 120639 => 'κ',
- 120640 => 'λ',
- 120641 => 'μ',
- 120642 => 'ν',
- 120643 => 'ξ',
- 120644 => 'ο',
- 120645 => 'π',
- 120646 => 'ρ',
- 120647 => 'σ',
- 120648 => 'σ',
- 120649 => 'τ',
- 120650 => 'υ',
- 120651 => 'φ',
- 120652 => 'χ',
- 120653 => 'ψ',
- 120654 => 'ω',
- 120655 => '∂',
- 120656 => 'ε',
- 120657 => 'θ',
- 120658 => 'κ',
- 120659 => 'φ',
- 120660 => 'ρ',
- 120661 => 'π',
- 120662 => 'α',
- 120663 => 'β',
- 120664 => 'γ',
- 120665 => 'δ',
- 120666 => 'ε',
- 120667 => 'ζ',
- 120668 => 'η',
- 120669 => 'θ',
- 120670 => 'ι',
- 120671 => 'κ',
- 120672 => 'λ',
- 120673 => 'μ',
- 120674 => 'ν',
- 120675 => 'ξ',
- 120676 => 'ο',
- 120677 => 'π',
- 120678 => 'ρ',
- 120679 => 'θ',
- 120680 => 'σ',
- 120681 => 'τ',
- 120682 => 'υ',
- 120683 => 'φ',
- 120684 => 'χ',
- 120685 => 'ψ',
- 120686 => 'ω',
- 120687 => '∇',
- 120688 => 'α',
- 120689 => 'β',
- 120690 => 'γ',
- 120691 => 'δ',
- 120692 => 'ε',
- 120693 => 'ζ',
- 120694 => 'η',
- 120695 => 'θ',
- 120696 => 'ι',
- 120697 => 'κ',
- 120698 => 'λ',
- 120699 => 'μ',
- 120700 => 'ν',
- 120701 => 'ξ',
- 120702 => 'ο',
- 120703 => 'π',
- 120704 => 'ρ',
- 120705 => 'σ',
- 120706 => 'σ',
- 120707 => 'τ',
- 120708 => 'υ',
- 120709 => 'φ',
- 120710 => 'χ',
- 120711 => 'ψ',
- 120712 => 'ω',
- 120713 => '∂',
- 120714 => 'ε',
- 120715 => 'θ',
- 120716 => 'κ',
- 120717 => 'φ',
- 120718 => 'ρ',
- 120719 => 'π',
- 120720 => 'α',
- 120721 => 'β',
- 120722 => 'γ',
- 120723 => 'δ',
- 120724 => 'ε',
- 120725 => 'ζ',
- 120726 => 'η',
- 120727 => 'θ',
- 120728 => 'ι',
- 120729 => 'κ',
- 120730 => 'λ',
- 120731 => 'μ',
- 120732 => 'ν',
- 120733 => 'ξ',
- 120734 => 'ο',
- 120735 => 'π',
- 120736 => 'ρ',
- 120737 => 'θ',
- 120738 => 'σ',
- 120739 => 'τ',
- 120740 => 'υ',
- 120741 => 'φ',
- 120742 => 'χ',
- 120743 => 'ψ',
- 120744 => 'ω',
- 120745 => '∇',
- 120746 => 'α',
- 120747 => 'β',
- 120748 => 'γ',
- 120749 => 'δ',
- 120750 => 'ε',
- 120751 => 'ζ',
- 120752 => 'η',
- 120753 => 'θ',
- 120754 => 'ι',
- 120755 => 'κ',
- 120756 => 'λ',
- 120757 => 'μ',
- 120758 => 'ν',
- 120759 => 'ξ',
- 120760 => 'ο',
- 120761 => 'π',
- 120762 => 'ρ',
- 120763 => 'σ',
- 120764 => 'σ',
- 120765 => 'τ',
- 120766 => 'υ',
- 120767 => 'φ',
- 120768 => 'χ',
- 120769 => 'ψ',
- 120770 => 'ω',
- 120771 => '∂',
- 120772 => 'ε',
- 120773 => 'θ',
- 120774 => 'κ',
- 120775 => 'φ',
- 120776 => 'ρ',
- 120777 => 'π',
- 120778 => 'ϝ',
- 120779 => 'ϝ',
- 120782 => '0',
- 120783 => '1',
- 120784 => '2',
- 120785 => '3',
- 120786 => '4',
- 120787 => '5',
- 120788 => '6',
- 120789 => '7',
- 120790 => '8',
- 120791 => '9',
- 120792 => '0',
- 120793 => '1',
- 120794 => '2',
- 120795 => '3',
- 120796 => '4',
- 120797 => '5',
- 120798 => '6',
- 120799 => '7',
- 120800 => '8',
- 120801 => '9',
- 120802 => '0',
- 120803 => '1',
- 120804 => '2',
- 120805 => '3',
- 120806 => '4',
- 120807 => '5',
- 120808 => '6',
- 120809 => '7',
- 120810 => '8',
- 120811 => '9',
- 120812 => '0',
- 120813 => '1',
- 120814 => '2',
- 120815 => '3',
- 120816 => '4',
- 120817 => '5',
- 120818 => '6',
- 120819 => '7',
- 120820 => '8',
- 120821 => '9',
- 120822 => '0',
- 120823 => '1',
- 120824 => '2',
- 120825 => '3',
- 120826 => '4',
- 120827 => '5',
- 120828 => '6',
- 120829 => '7',
- 120830 => '8',
- 120831 => '9',
- 125184 => '𞤢',
- 125185 => '𞤣',
- 125186 => '𞤤',
- 125187 => '𞤥',
- 125188 => '𞤦',
- 125189 => '𞤧',
- 125190 => '𞤨',
- 125191 => '𞤩',
- 125192 => '𞤪',
- 125193 => '𞤫',
- 125194 => '𞤬',
- 125195 => '𞤭',
- 125196 => '𞤮',
- 125197 => '𞤯',
- 125198 => '𞤰',
- 125199 => '𞤱',
- 125200 => '𞤲',
- 125201 => '𞤳',
- 125202 => '𞤴',
- 125203 => '𞤵',
- 125204 => '𞤶',
- 125205 => '𞤷',
- 125206 => '𞤸',
- 125207 => '𞤹',
- 125208 => '𞤺',
- 125209 => '𞤻',
- 125210 => '𞤼',
- 125211 => '𞤽',
- 125212 => '𞤾',
- 125213 => '𞤿',
- 125214 => '𞥀',
- 125215 => '𞥁',
- 125216 => '𞥂',
- 125217 => '𞥃',
- 126464 => 'ا',
- 126465 => 'ب',
- 126466 => 'ج',
- 126467 => 'د',
- 126469 => 'و',
- 126470 => 'ز',
- 126471 => 'ح',
- 126472 => 'ط',
- 126473 => 'ي',
- 126474 => 'ك',
- 126475 => 'ل',
- 126476 => 'م',
- 126477 => 'ن',
- 126478 => 'س',
- 126479 => 'ع',
- 126480 => 'ف',
- 126481 => 'ص',
- 126482 => 'ق',
- 126483 => 'ر',
- 126484 => 'ش',
- 126485 => 'ت',
- 126486 => 'ث',
- 126487 => 'خ',
- 126488 => 'ذ',
- 126489 => 'ض',
- 126490 => 'ظ',
- 126491 => 'غ',
- 126492 => 'ٮ',
- 126493 => 'ں',
- 126494 => 'ڡ',
- 126495 => 'ٯ',
- 126497 => 'ب',
- 126498 => 'ج',
- 126500 => 'ه',
- 126503 => 'ح',
- 126505 => 'ي',
- 126506 => 'ك',
- 126507 => 'ل',
- 126508 => 'م',
- 126509 => 'ن',
- 126510 => 'س',
- 126511 => 'ع',
- 126512 => 'ف',
- 126513 => 'ص',
- 126514 => 'ق',
- 126516 => 'ش',
- 126517 => 'ت',
- 126518 => 'ث',
- 126519 => 'خ',
- 126521 => 'ض',
- 126523 => 'غ',
- 126530 => 'ج',
- 126535 => 'ح',
- 126537 => 'ي',
- 126539 => 'ل',
- 126541 => 'ن',
- 126542 => 'س',
- 126543 => 'ع',
- 126545 => 'ص',
- 126546 => 'ق',
- 126548 => 'ش',
- 126551 => 'خ',
- 126553 => 'ض',
- 126555 => 'غ',
- 126557 => 'ں',
- 126559 => 'ٯ',
- 126561 => 'ب',
- 126562 => 'ج',
- 126564 => 'ه',
- 126567 => 'ح',
- 126568 => 'ط',
- 126569 => 'ي',
- 126570 => 'ك',
- 126572 => 'م',
- 126573 => 'ن',
- 126574 => 'س',
- 126575 => 'ع',
- 126576 => 'ف',
- 126577 => 'ص',
- 126578 => 'ق',
- 126580 => 'ش',
- 126581 => 'ت',
- 126582 => 'ث',
- 126583 => 'خ',
- 126585 => 'ض',
- 126586 => 'ظ',
- 126587 => 'غ',
- 126588 => 'ٮ',
- 126590 => 'ڡ',
- 126592 => 'ا',
- 126593 => 'ب',
- 126594 => 'ج',
- 126595 => 'د',
- 126596 => 'ه',
- 126597 => 'و',
- 126598 => 'ز',
- 126599 => 'ح',
- 126600 => 'ط',
- 126601 => 'ي',
- 126603 => 'ل',
- 126604 => 'م',
- 126605 => 'ن',
- 126606 => 'س',
- 126607 => 'ع',
- 126608 => 'ف',
- 126609 => 'ص',
- 126610 => 'ق',
- 126611 => 'ر',
- 126612 => 'ش',
- 126613 => 'ت',
- 126614 => 'ث',
- 126615 => 'خ',
- 126616 => 'ذ',
- 126617 => 'ض',
- 126618 => 'ظ',
- 126619 => 'غ',
- 126625 => 'ب',
- 126626 => 'ج',
- 126627 => 'د',
- 126629 => 'و',
- 126630 => 'ز',
- 126631 => 'ح',
- 126632 => 'ط',
- 126633 => 'ي',
- 126635 => 'ل',
- 126636 => 'م',
- 126637 => 'ن',
- 126638 => 'س',
- 126639 => 'ع',
- 126640 => 'ف',
- 126641 => 'ص',
- 126642 => 'ق',
- 126643 => 'ر',
- 126644 => 'ش',
- 126645 => 'ت',
- 126646 => 'ث',
- 126647 => 'خ',
- 126648 => 'ذ',
- 126649 => 'ض',
- 126650 => 'ظ',
- 126651 => 'غ',
- 127274 => '〔s〕',
- 127275 => 'c',
- 127276 => 'r',
- 127277 => 'cd',
- 127278 => 'wz',
- 127280 => 'a',
- 127281 => 'b',
- 127282 => 'c',
- 127283 => 'd',
- 127284 => 'e',
- 127285 => 'f',
- 127286 => 'g',
- 127287 => 'h',
- 127288 => 'i',
- 127289 => 'j',
- 127290 => 'k',
- 127291 => 'l',
- 127292 => 'm',
- 127293 => 'n',
- 127294 => 'o',
- 127295 => 'p',
- 127296 => 'q',
- 127297 => 'r',
- 127298 => 's',
- 127299 => 't',
- 127300 => 'u',
- 127301 => 'v',
- 127302 => 'w',
- 127303 => 'x',
- 127304 => 'y',
- 127305 => 'z',
- 127306 => 'hv',
- 127307 => 'mv',
- 127308 => 'sd',
- 127309 => 'ss',
- 127310 => 'ppv',
- 127311 => 'wc',
- 127338 => 'mc',
- 127339 => 'md',
- 127340 => 'mr',
- 127376 => 'dj',
- 127488 => 'ほか',
- 127489 => 'ココ',
- 127490 => 'サ',
- 127504 => '手',
- 127505 => '字',
- 127506 => '双',
- 127507 => 'デ',
- 127508 => '二',
- 127509 => '多',
- 127510 => '解',
- 127511 => '天',
- 127512 => '交',
- 127513 => '映',
- 127514 => '無',
- 127515 => '料',
- 127516 => '前',
- 127517 => '後',
- 127518 => '再',
- 127519 => '新',
- 127520 => '初',
- 127521 => '終',
- 127522 => '生',
- 127523 => '販',
- 127524 => '声',
- 127525 => '吹',
- 127526 => '演',
- 127527 => '投',
- 127528 => '捕',
- 127529 => '一',
- 127530 => '三',
- 127531 => '遊',
- 127532 => '左',
- 127533 => '中',
- 127534 => '右',
- 127535 => '指',
- 127536 => '走',
- 127537 => '打',
- 127538 => '禁',
- 127539 => '空',
- 127540 => '合',
- 127541 => '満',
- 127542 => '有',
- 127543 => '月',
- 127544 => '申',
- 127545 => '割',
- 127546 => '営',
- 127547 => '配',
- 127552 => '〔本〕',
- 127553 => '〔三〕',
- 127554 => '〔二〕',
- 127555 => '〔安〕',
- 127556 => '〔点〕',
- 127557 => '〔打〕',
- 127558 => '〔盗〕',
- 127559 => '〔勝〕',
- 127560 => '〔敗〕',
- 127568 => '得',
- 127569 => '可',
- 130032 => '0',
- 130033 => '1',
- 130034 => '2',
- 130035 => '3',
- 130036 => '4',
- 130037 => '5',
- 130038 => '6',
- 130039 => '7',
- 130040 => '8',
- 130041 => '9',
- 194560 => '丽',
- 194561 => '丸',
- 194562 => '乁',
- 194563 => '𠄢',
- 194564 => '你',
- 194565 => '侮',
- 194566 => '侻',
- 194567 => '倂',
- 194568 => '偺',
- 194569 => '備',
- 194570 => '僧',
- 194571 => '像',
- 194572 => '㒞',
- 194573 => '𠘺',
- 194574 => '免',
- 194575 => '兔',
- 194576 => '兤',
- 194577 => '具',
- 194578 => '𠔜',
- 194579 => '㒹',
- 194580 => '內',
- 194581 => '再',
- 194582 => '𠕋',
- 194583 => '冗',
- 194584 => '冤',
- 194585 => '仌',
- 194586 => '冬',
- 194587 => '况',
- 194588 => '𩇟',
- 194589 => '凵',
- 194590 => '刃',
- 194591 => '㓟',
- 194592 => '刻',
- 194593 => '剆',
- 194594 => '割',
- 194595 => '剷',
- 194596 => '㔕',
- 194597 => '勇',
- 194598 => '勉',
- 194599 => '勤',
- 194600 => '勺',
- 194601 => '包',
- 194602 => '匆',
- 194603 => '北',
- 194604 => '卉',
- 194605 => '卑',
- 194606 => '博',
- 194607 => '即',
- 194608 => '卽',
- 194609 => '卿',
- 194610 => '卿',
- 194611 => '卿',
- 194612 => '𠨬',
- 194613 => '灰',
- 194614 => '及',
- 194615 => '叟',
- 194616 => '𠭣',
- 194617 => '叫',
- 194618 => '叱',
- 194619 => '吆',
- 194620 => '咞',
- 194621 => '吸',
- 194622 => '呈',
- 194623 => '周',
- 194624 => '咢',
- 194625 => '哶',
- 194626 => '唐',
- 194627 => '啓',
- 194628 => '啣',
- 194629 => '善',
- 194630 => '善',
- 194631 => '喙',
- 194632 => '喫',
- 194633 => '喳',
- 194634 => '嗂',
- 194635 => '圖',
- 194636 => '嘆',
- 194637 => '圗',
- 194638 => '噑',
- 194639 => '噴',
- 194640 => '切',
- 194641 => '壮',
- 194642 => '城',
- 194643 => '埴',
- 194644 => '堍',
- 194645 => '型',
- 194646 => '堲',
- 194647 => '報',
- 194648 => '墬',
- 194649 => '𡓤',
- 194650 => '売',
- 194651 => '壷',
- 194652 => '夆',
- 194653 => '多',
- 194654 => '夢',
- 194655 => '奢',
- 194656 => '𡚨',
- 194657 => '𡛪',
- 194658 => '姬',
- 194659 => '娛',
- 194660 => '娧',
- 194661 => '姘',
- 194662 => '婦',
- 194663 => '㛮',
- 194665 => '嬈',
- 194666 => '嬾',
- 194667 => '嬾',
- 194668 => '𡧈',
- 194669 => '寃',
- 194670 => '寘',
- 194671 => '寧',
- 194672 => '寳',
- 194673 => '𡬘',
- 194674 => '寿',
- 194675 => '将',
- 194677 => '尢',
- 194678 => '㞁',
- 194679 => '屠',
- 194680 => '屮',
- 194681 => '峀',
- 194682 => '岍',
- 194683 => '𡷤',
- 194684 => '嵃',
- 194685 => '𡷦',
- 194686 => '嵮',
- 194687 => '嵫',
- 194688 => '嵼',
- 194689 => '巡',
- 194690 => '巢',
- 194691 => '㠯',
- 194692 => '巽',
- 194693 => '帨',
- 194694 => '帽',
- 194695 => '幩',
- 194696 => '㡢',
- 194697 => '𢆃',
- 194698 => '㡼',
- 194699 => '庰',
- 194700 => '庳',
- 194701 => '庶',
- 194702 => '廊',
- 194703 => '𪎒',
- 194704 => '廾',
- 194705 => '𢌱',
- 194706 => '𢌱',
- 194707 => '舁',
- 194708 => '弢',
- 194709 => '弢',
- 194710 => '㣇',
- 194711 => '𣊸',
- 194712 => '𦇚',
- 194713 => '形',
- 194714 => '彫',
- 194715 => '㣣',
- 194716 => '徚',
- 194717 => '忍',
- 194718 => '志',
- 194719 => '忹',
- 194720 => '悁',
- 194721 => '㤺',
- 194722 => '㤜',
- 194723 => '悔',
- 194724 => '𢛔',
- 194725 => '惇',
- 194726 => '慈',
- 194727 => '慌',
- 194728 => '慎',
- 194729 => '慌',
- 194730 => '慺',
- 194731 => '憎',
- 194732 => '憲',
- 194733 => '憤',
- 194734 => '憯',
- 194735 => '懞',
- 194736 => '懲',
- 194737 => '懶',
- 194738 => '成',
- 194739 => '戛',
- 194740 => '扝',
- 194741 => '抱',
- 194742 => '拔',
- 194743 => '捐',
- 194744 => '𢬌',
- 194745 => '挽',
- 194746 => '拼',
- 194747 => '捨',
- 194748 => '掃',
- 194749 => '揤',
- 194750 => '𢯱',
- 194751 => '搢',
- 194752 => '揅',
- 194753 => '掩',
- 194754 => '㨮',
- 194755 => '摩',
- 194756 => '摾',
- 194757 => '撝',
- 194758 => '摷',
- 194759 => '㩬',
- 194760 => '敏',
- 194761 => '敬',
- 194762 => '𣀊',
- 194763 => '旣',
- 194764 => '書',
- 194765 => '晉',
- 194766 => '㬙',
- 194767 => '暑',
- 194768 => '㬈',
- 194769 => '㫤',
- 194770 => '冒',
- 194771 => '冕',
- 194772 => '最',
- 194773 => '暜',
- 194774 => '肭',
- 194775 => '䏙',
- 194776 => '朗',
- 194777 => '望',
- 194778 => '朡',
- 194779 => '杞',
- 194780 => '杓',
- 194781 => '𣏃',
- 194782 => '㭉',
- 194783 => '柺',
- 194784 => '枅',
- 194785 => '桒',
- 194786 => '梅',
- 194787 => '𣑭',
- 194788 => '梎',
- 194789 => '栟',
- 194790 => '椔',
- 194791 => '㮝',
- 194792 => '楂',
- 194793 => '榣',
- 194794 => '槪',
- 194795 => '檨',
- 194796 => '𣚣',
- 194797 => '櫛',
- 194798 => '㰘',
- 194799 => '次',
- 194800 => '𣢧',
- 194801 => '歔',
- 194802 => '㱎',
- 194803 => '歲',
- 194804 => '殟',
- 194805 => '殺',
- 194806 => '殻',
- 194807 => '𣪍',
- 194808 => '𡴋',
- 194809 => '𣫺',
- 194810 => '汎',
- 194811 => '𣲼',
- 194812 => '沿',
- 194813 => '泍',
- 194814 => '汧',
- 194815 => '洖',
- 194816 => '派',
- 194817 => '海',
- 194818 => '流',
- 194819 => '浩',
- 194820 => '浸',
- 194821 => '涅',
- 194822 => '𣴞',
- 194823 => '洴',
- 194824 => '港',
- 194825 => '湮',
- 194826 => '㴳',
- 194827 => '滋',
- 194828 => '滇',
- 194829 => '𣻑',
- 194830 => '淹',
- 194831 => '潮',
- 194832 => '𣽞',
- 194833 => '𣾎',
- 194834 => '濆',
- 194835 => '瀹',
- 194836 => '瀞',
- 194837 => '瀛',
- 194838 => '㶖',
- 194839 => '灊',
- 194840 => '災',
- 194841 => '灷',
- 194842 => '炭',
- 194843 => '𠔥',
- 194844 => '煅',
- 194845 => '𤉣',
- 194846 => '熜',
- 194848 => '爨',
- 194849 => '爵',
- 194850 => '牐',
- 194851 => '𤘈',
- 194852 => '犀',
- 194853 => '犕',
- 194854 => '𤜵',
- 194855 => '𤠔',
- 194856 => '獺',
- 194857 => '王',
- 194858 => '㺬',
- 194859 => '玥',
- 194860 => '㺸',
- 194861 => '㺸',
- 194862 => '瑇',
- 194863 => '瑜',
- 194864 => '瑱',
- 194865 => '璅',
- 194866 => '瓊',
- 194867 => '㼛',
- 194868 => '甤',
- 194869 => '𤰶',
- 194870 => '甾',
- 194871 => '𤲒',
- 194872 => '異',
- 194873 => '𢆟',
- 194874 => '瘐',
- 194875 => '𤾡',
- 194876 => '𤾸',
- 194877 => '𥁄',
- 194878 => '㿼',
- 194879 => '䀈',
- 194880 => '直',
- 194881 => '𥃳',
- 194882 => '𥃲',
- 194883 => '𥄙',
- 194884 => '𥄳',
- 194885 => '眞',
- 194886 => '真',
- 194887 => '真',
- 194888 => '睊',
- 194889 => '䀹',
- 194890 => '瞋',
- 194891 => '䁆',
- 194892 => '䂖',
- 194893 => '𥐝',
- 194894 => '硎',
- 194895 => '碌',
- 194896 => '磌',
- 194897 => '䃣',
- 194898 => '𥘦',
- 194899 => '祖',
- 194900 => '𥚚',
- 194901 => '𥛅',
- 194902 => '福',
- 194903 => '秫',
- 194904 => '䄯',
- 194905 => '穀',
- 194906 => '穊',
- 194907 => '穏',
- 194908 => '𥥼',
- 194909 => '𥪧',
- 194910 => '𥪧',
- 194912 => '䈂',
- 194913 => '𥮫',
- 194914 => '篆',
- 194915 => '築',
- 194916 => '䈧',
- 194917 => '𥲀',
- 194918 => '糒',
- 194919 => '䊠',
- 194920 => '糨',
- 194921 => '糣',
- 194922 => '紀',
- 194923 => '𥾆',
- 194924 => '絣',
- 194925 => '䌁',
- 194926 => '緇',
- 194927 => '縂',
- 194928 => '繅',
- 194929 => '䌴',
- 194930 => '𦈨',
- 194931 => '𦉇',
- 194932 => '䍙',
- 194933 => '𦋙',
- 194934 => '罺',
- 194935 => '𦌾',
- 194936 => '羕',
- 194937 => '翺',
- 194938 => '者',
- 194939 => '𦓚',
- 194940 => '𦔣',
- 194941 => '聠',
- 194942 => '𦖨',
- 194943 => '聰',
- 194944 => '𣍟',
- 194945 => '䏕',
- 194946 => '育',
- 194947 => '脃',
- 194948 => '䐋',
- 194949 => '脾',
- 194950 => '媵',
- 194951 => '𦞧',
- 194952 => '𦞵',
- 194953 => '𣎓',
- 194954 => '𣎜',
- 194955 => '舁',
- 194956 => '舄',
- 194957 => '辞',
- 194958 => '䑫',
- 194959 => '芑',
- 194960 => '芋',
- 194961 => '芝',
- 194962 => '劳',
- 194963 => '花',
- 194964 => '芳',
- 194965 => '芽',
- 194966 => '苦',
- 194967 => '𦬼',
- 194968 => '若',
- 194969 => '茝',
- 194970 => '荣',
- 194971 => '莭',
- 194972 => '茣',
- 194973 => '莽',
- 194974 => '菧',
- 194975 => '著',
- 194976 => '荓',
- 194977 => '菊',
- 194978 => '菌',
- 194979 => '菜',
- 194980 => '𦰶',
- 194981 => '𦵫',
- 194982 => '𦳕',
- 194983 => '䔫',
- 194984 => '蓱',
- 194985 => '蓳',
- 194986 => '蔖',
- 194987 => '𧏊',
- 194988 => '蕤',
- 194989 => '𦼬',
- 194990 => '䕝',
- 194991 => '䕡',
- 194992 => '𦾱',
- 194993 => '𧃒',
- 194994 => '䕫',
- 194995 => '虐',
- 194996 => '虜',
- 194997 => '虧',
- 194998 => '虩',
- 194999 => '蚩',
- 195000 => '蚈',
- 195001 => '蜎',
- 195002 => '蛢',
- 195003 => '蝹',
- 195004 => '蜨',
- 195005 => '蝫',
- 195006 => '螆',
- 195008 => '蟡',
- 195009 => '蠁',
- 195010 => '䗹',
- 195011 => '衠',
- 195012 => '衣',
- 195013 => '𧙧',
- 195014 => '裗',
- 195015 => '裞',
- 195016 => '䘵',
- 195017 => '裺',
- 195018 => '㒻',
- 195019 => '𧢮',
- 195020 => '𧥦',
- 195021 => '䚾',
- 195022 => '䛇',
- 195023 => '誠',
- 195024 => '諭',
- 195025 => '變',
- 195026 => '豕',
- 195027 => '𧲨',
- 195028 => '貫',
- 195029 => '賁',
- 195030 => '贛',
- 195031 => '起',
- 195032 => '𧼯',
- 195033 => '𠠄',
- 195034 => '跋',
- 195035 => '趼',
- 195036 => '跰',
- 195037 => '𠣞',
- 195038 => '軔',
- 195039 => '輸',
- 195040 => '𨗒',
- 195041 => '𨗭',
- 195042 => '邔',
- 195043 => '郱',
- 195044 => '鄑',
- 195045 => '𨜮',
- 195046 => '鄛',
- 195047 => '鈸',
- 195048 => '鋗',
- 195049 => '鋘',
- 195050 => '鉼',
- 195051 => '鏹',
- 195052 => '鐕',
- 195053 => '𨯺',
- 195054 => '開',
- 195055 => '䦕',
- 195056 => '閷',
- 195057 => '𨵷',
- 195058 => '䧦',
- 195059 => '雃',
- 195060 => '嶲',
- 195061 => '霣',
- 195062 => '𩅅',
- 195063 => '𩈚',
- 195064 => '䩮',
- 195065 => '䩶',
- 195066 => '韠',
- 195067 => '𩐊',
- 195068 => '䪲',
- 195069 => '𩒖',
- 195070 => '頋',
- 195071 => '頋',
- 195072 => '頩',
- 195073 => '𩖶',
- 195074 => '飢',
- 195075 => '䬳',
- 195076 => '餩',
- 195077 => '馧',
- 195078 => '駂',
- 195079 => '駾',
- 195080 => '䯎',
- 195081 => '𩬰',
- 195082 => '鬒',
- 195083 => '鱀',
- 195084 => '鳽',
- 195085 => '䳎',
- 195086 => '䳭',
- 195087 => '鵧',
- 195088 => '𪃎',
- 195089 => '䳸',
- 195090 => '𪄅',
- 195091 => '𪈎',
- 195092 => '𪊑',
- 195093 => '麻',
- 195094 => '䵖',
- 195095 => '黹',
- 195096 => '黾',
- 195097 => '鼅',
- 195098 => '鼏',
- 195099 => '鼖',
- 195100 => '鼻',
- 195101 => '𪘀',
-);
diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php
deleted file mode 100644
index 1958e37..0000000
--- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-return array (
- 2381 => 9,
- 2509 => 9,
- 2637 => 9,
- 2765 => 9,
- 2893 => 9,
- 3021 => 9,
- 3149 => 9,
- 3277 => 9,
- 3387 => 9,
- 3388 => 9,
- 3405 => 9,
- 3530 => 9,
- 3642 => 9,
- 3770 => 9,
- 3972 => 9,
- 4153 => 9,
- 4154 => 9,
- 5908 => 9,
- 5940 => 9,
- 6098 => 9,
- 6752 => 9,
- 6980 => 9,
- 7082 => 9,
- 7083 => 9,
- 7154 => 9,
- 7155 => 9,
- 11647 => 9,
- 43014 => 9,
- 43052 => 9,
- 43204 => 9,
- 43347 => 9,
- 43456 => 9,
- 43766 => 9,
- 44013 => 9,
- 68159 => 9,
- 69702 => 9,
- 69759 => 9,
- 69817 => 9,
- 69939 => 9,
- 69940 => 9,
- 70080 => 9,
- 70197 => 9,
- 70378 => 9,
- 70477 => 9,
- 70722 => 9,
- 70850 => 9,
- 71103 => 9,
- 71231 => 9,
- 71350 => 9,
- 71467 => 9,
- 71737 => 9,
- 71997 => 9,
- 71998 => 9,
- 72160 => 9,
- 72244 => 9,
- 72263 => 9,
- 72345 => 9,
- 72767 => 9,
- 73028 => 9,
- 73029 => 9,
- 73111 => 9,
-);
diff --git a/vendor/symfony/polyfill-intl-idn/bootstrap.php b/vendor/symfony/polyfill-intl-idn/bootstrap.php
deleted file mode 100644
index f02d5de..0000000
--- a/vendor/symfony/polyfill-intl-idn/bootstrap.php
+++ /dev/null
@@ -1,141 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <[email protected]>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Intl\Idn as p;
-
-if (extension_loaded('intl')) {
- return;
-}
-
-if (!defined('U_IDNA_PROHIBITED_ERROR')) {
- define('U_IDNA_PROHIBITED_ERROR', 66560);
-}
-if (!defined('U_IDNA_ERROR_START')) {
- define('U_IDNA_ERROR_START', 66560);
-}
-if (!defined('U_IDNA_UNASSIGNED_ERROR')) {
- define('U_IDNA_UNASSIGNED_ERROR', 66561);
-}
-if (!defined('U_IDNA_CHECK_BIDI_ERROR')) {
- define('U_IDNA_CHECK_BIDI_ERROR', 66562);
-}
-if (!defined('U_IDNA_STD3_ASCII_RULES_ERROR')) {
- define('U_IDNA_STD3_ASCII_RULES_ERROR', 66563);
-}
-if (!defined('U_IDNA_ACE_PREFIX_ERROR')) {
- define('U_IDNA_ACE_PREFIX_ERROR', 66564);
-}
-if (!defined('U_IDNA_VERIFICATION_ERROR')) {
- define('U_IDNA_VERIFICATION_ERROR', 66565);
-}
-if (!defined('U_IDNA_LABEL_TOO_LONG_ERROR')) {
- define('U_IDNA_LABEL_TOO_LONG_ERROR', 66566);
-}
-if (!defined('U_IDNA_ZERO_LENGTH_LABEL_ERROR')) {
- define('U_IDNA_ZERO_LENGTH_LABEL_ERROR', 66567);
-}
-if (!defined('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR')) {
- define('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR', 66568);
-}
-if (!defined('U_IDNA_ERROR_LIMIT')) {
- define('U_IDNA_ERROR_LIMIT', 66569);
-}
-if (!defined('U_STRINGPREP_PROHIBITED_ERROR')) {
- define('U_STRINGPREP_PROHIBITED_ERROR', 66560);
-}
-if (!defined('U_STRINGPREP_UNASSIGNED_ERROR')) {
- define('U_STRINGPREP_UNASSIGNED_ERROR', 66561);
-}
-if (!defined('U_STRINGPREP_CHECK_BIDI_ERROR')) {
- define('U_STRINGPREP_CHECK_BIDI_ERROR', 66562);
-}
-if (!defined('IDNA_DEFAULT')) {
- define('IDNA_DEFAULT', 0);
-}
-if (!defined('IDNA_ALLOW_UNASSIGNED')) {
- define('IDNA_ALLOW_UNASSIGNED', 1);
-}
-if (!defined('IDNA_USE_STD3_RULES')) {
- define('IDNA_USE_STD3_RULES', 2);
-}
-if (!defined('IDNA_CHECK_BIDI')) {
- define('IDNA_CHECK_BIDI', 4);
-}
-if (!defined('IDNA_CHECK_CONTEXTJ')) {
- define('IDNA_CHECK_CONTEXTJ', 8);
-}
-if (!defined('IDNA_NONTRANSITIONAL_TO_ASCII')) {
- define('IDNA_NONTRANSITIONAL_TO_ASCII', 16);
-}
-if (!defined('IDNA_NONTRANSITIONAL_TO_UNICODE')) {
- define('IDNA_NONTRANSITIONAL_TO_UNICODE', 32);
-}
-if (!defined('INTL_IDNA_VARIANT_2003')) {
- define('INTL_IDNA_VARIANT_2003', 0);
-}
-if (!defined('INTL_IDNA_VARIANT_UTS46')) {
- define('INTL_IDNA_VARIANT_UTS46', 1);
-}
-if (!defined('IDNA_ERROR_EMPTY_LABEL')) {
- define('IDNA_ERROR_EMPTY_LABEL', 1);
-}
-if (!defined('IDNA_ERROR_LABEL_TOO_LONG')) {
- define('IDNA_ERROR_LABEL_TOO_LONG', 2);
-}
-if (!defined('IDNA_ERROR_DOMAIN_NAME_TOO_LONG')) {
- define('IDNA_ERROR_DOMAIN_NAME_TOO_LONG', 4);
-}
-if (!defined('IDNA_ERROR_LEADING_HYPHEN')) {
- define('IDNA_ERROR_LEADING_HYPHEN', 8);
-}
-if (!defined('IDNA_ERROR_TRAILING_HYPHEN')) {
- define('IDNA_ERROR_TRAILING_HYPHEN', 16);
-}
-if (!defined('IDNA_ERROR_HYPHEN_3_4')) {
- define('IDNA_ERROR_HYPHEN_3_4', 32);
-}
-if (!defined('IDNA_ERROR_LEADING_COMBINING_MARK')) {
- define('IDNA_ERROR_LEADING_COMBINING_MARK', 64);
-}
-if (!defined('IDNA_ERROR_DISALLOWED')) {
- define('IDNA_ERROR_DISALLOWED', 128);
-}
-if (!defined('IDNA_ERROR_PUNYCODE')) {
- define('IDNA_ERROR_PUNYCODE', 256);
-}
-if (!defined('IDNA_ERROR_LABEL_HAS_DOT')) {
- define('IDNA_ERROR_LABEL_HAS_DOT', 512);
-}
-if (!defined('IDNA_ERROR_INVALID_ACE_LABEL')) {
- define('IDNA_ERROR_INVALID_ACE_LABEL', 1024);
-}
-if (!defined('IDNA_ERROR_BIDI')) {
- define('IDNA_ERROR_BIDI', 2048);
-}
-if (!defined('IDNA_ERROR_CONTEXTJ')) {
- define('IDNA_ERROR_CONTEXTJ', 4096);
-}
-
-if (PHP_VERSION_ID < 70400) {
- if (!function_exists('idn_to_ascii')) {
- function idn_to_ascii($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_2003, &$idna_info = array()) { return p\Idn::idn_to_ascii($domain, $options, $variant, $idna_info); }
- }
- if (!function_exists('idn_to_utf8')) {
- function idn_to_utf8($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_2003, &$idna_info = array()) { return p\Idn::idn_to_utf8($domain, $options, $variant, $idna_info); }
- }
-} else {
- if (!function_exists('idn_to_ascii')) {
- function idn_to_ascii($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = array()) { return p\Idn::idn_to_ascii($domain, $options, $variant, $idna_info); }
- }
- if (!function_exists('idn_to_utf8')) {
- function idn_to_utf8($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = array()) { return p\Idn::idn_to_utf8($domain, $options, $variant, $idna_info); }
- }
-}
diff --git a/vendor/symfony/polyfill-intl-idn/composer.json b/vendor/symfony/polyfill-intl-idn/composer.json
deleted file mode 100644
index af34193..0000000
--- a/vendor/symfony/polyfill-intl-idn/composer.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "symfony/polyfill-intl-idn",
- "type": "library",
- "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
- "keywords": ["polyfill", "shim", "compatibility", "portable", "intl", "idn"],
- "homepage": "https://symfony.com",
- "license": "MIT",
- "authors": [
- {
- "name": "Laurent Bassin",
- "email": "[email protected]"
- },
- {
- "name": "Trevor Rowbotham",
- "email": "[email protected]"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "require": {
- "php": ">=5.3.3",
- "symfony/polyfill-intl-normalizer": "^1.10",
- "symfony/polyfill-php70": "^1.10",
- "symfony/polyfill-php72": "^1.10"
- },
- "autoload": {
- "psr-4": { "Symfony\\Polyfill\\Intl\\Idn\\": "" },
- "files": [ "bootstrap.php" ]
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "minimum-stability": "dev",
- "extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- }
-}
diff --git a/vendor/symfony/polyfill-intl-normalizer/LICENSE b/vendor/symfony/polyfill-intl-normalizer/LICENSE
deleted file mode 100644
index 4cd8bdd..0000000
--- a/vendor/symfony/polyfill-intl-normalizer/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2015-2019 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/polyfill-intl-normalizer/Normalizer.php b/vendor/symfony/polyfill-intl-normalizer/Normalizer.php
deleted file mode 100644
index a60fae6..0000000
--- a/vendor/symfony/polyfill-intl-normalizer/Normalizer.php
+++ /dev/null
@@ -1,308 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <[email protected]>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Intl\Normalizer;
-
-/**
- * Normalizer is a PHP fallback implementation of the Normalizer class provided by the intl extension.
- *
- * It has been validated with Unicode 6.3 Normalization Conformance Test.
- * See http://www.unicode.org/reports/tr15/ for detailed info about Unicode normalizations.
- *
- * @author Nicolas Grekas <[email protected]>
- *
- * @internal
- */
-class Normalizer
-{
- const FORM_D = \Normalizer::FORM_D;
- const FORM_KD = \Normalizer::FORM_KD;
- const FORM_C = \Normalizer::FORM_C;
- const FORM_KC = \Normalizer::FORM_KC;
- const NFD = \Normalizer::NFD;
- const NFKD = \Normalizer::NFKD;
- const NFC = \Normalizer::NFC;
- const NFKC = \Normalizer::NFKC;
-
- private static $C;
- private static $D;
- private static $KD;
- private static $cC;
- private static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4);
- private static $ASCII = "\x20\x65\x69\x61\x73\x6E\x74\x72\x6F\x6C\x75\x64\x5D\x5B\x63\x6D\x70\x27\x0A\x67\x7C\x68\x76\x2E\x66\x62\x2C\x3A\x3D\x2D\x71\x31\x30\x43\x32\x2A\x79\x78\x29\x28\x4C\x39\x41\x53\x2F\x50\x22\x45\x6A\x4D\x49\x6B\x33\x3E\x35\x54\x3C\x44\x34\x7D\x42\x7B\x38\x46\x77\x52\x36\x37\x55\x47\x4E\x3B\x4A\x7A\x56\x23\x48\x4F\x57\x5F\x26\x21\x4B\x3F\x58\x51\x25\x59\x5C\x09\x5A\x2B\x7E\x5E\x24\x40\x60\x7F\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F";
-
- public static function isNormalized($s, $form = self::NFC)
- {
- if (!\in_array($form, array(self::NFD, self::NFKD, self::NFC, self::NFKC))) {
- return false;
- }
- $s = (string) $s;
- if (!isset($s[strspn($s, self::$ASCII)])) {
- return true;
- }
- if (self::NFC == $form && preg_match('//u', $s) && !preg_match('/[^\x00-\x{2FF}]/u', $s)) {
- return true;
- }
-
- return self::normalize($s, $form) === $s;
- }
-
- public static function normalize($s, $form = self::NFC)
- {
- $s = (string) $s;
- if (!preg_match('//u', $s)) {
- return false;
- }
-
- switch ($form) {
- case self::NFC: $C = true; $K = false; break;
- case self::NFD: $C = false; $K = false; break;
- case self::NFKC: $C = true; $K = true; break;
- case self::NFKD: $C = false; $K = true; break;
- default:
- if (\defined('Normalizer::NONE') && \Normalizer::NONE == $form) {
- return $s;
- }
-
- return false;
- }
-
- if ('' === $s) {
- return '';
- }
-
- if ($K && null === self::$KD) {
- self::$KD = self::getData('compatibilityDecomposition');
- }
-
- if (null === self::$D) {
- self::$D = self::getData('canonicalDecomposition');
- self::$cC = self::getData('combiningClass');
- }
-
- if (null !== $mbEncoding = (2 /* MB_OVERLOAD_STRING */ & (int) ini_get('mbstring.func_overload')) ? mb_internal_encoding() : null) {
- mb_internal_encoding('8bit');
- }
-
- $r = self::decompose($s, $K);
-
- if ($C) {
- if (null === self::$C) {
- self::$C = self::getData('canonicalComposition');
- }
-
- $r = self::recompose($r);
- }
- if (null !== $mbEncoding) {
- mb_internal_encoding($mbEncoding);
- }
-
- return $r;
- }
-
- private static function recompose($s)
- {
- $ASCII = self::$ASCII;
- $compMap = self::$C;
- $combClass = self::$cC;
- $ulenMask = self::$ulenMask;
-
- $result = $tail = '';
-
- $i = $s[0] < "\x80" ? 1 : $ulenMask[$s[0] & "\xF0"];
- $len = \strlen($s);
-
- $lastUchr = substr($s, 0, $i);
- $lastUcls = isset($combClass[$lastUchr]) ? 256 : 0;
-
- while ($i < $len) {
- if ($s[$i] < "\x80") {
- // ASCII chars
-
- if ($tail) {
- $lastUchr .= $tail;
- $tail = '';
- }
-
- if ($j = strspn($s, $ASCII, $i + 1)) {
- $lastUchr .= substr($s, $i, $j);
- $i += $j;
- }
-
- $result .= $lastUchr;
- $lastUchr = $s[$i];
- $lastUcls = 0;
- ++$i;
- continue;
- }
-
- $ulen = $ulenMask[$s[$i] & "\xF0"];
- $uchr = substr($s, $i, $ulen);
-
- if ($lastUchr < "\xE1\x84\x80" || "\xE1\x84\x92" < $lastUchr
- || $uchr < "\xE1\x85\xA1" || "\xE1\x85\xB5" < $uchr
- || $lastUcls) {
- // Table lookup and combining chars composition
-
- $ucls = isset($combClass[$uchr]) ? $combClass[$uchr] : 0;
-
- if (isset($compMap[$lastUchr.$uchr]) && (!$lastUcls || $lastUcls < $ucls)) {
- $lastUchr = $compMap[$lastUchr.$uchr];
- } elseif ($lastUcls = $ucls) {
- $tail .= $uchr;
- } else {
- if ($tail) {
- $lastUchr .= $tail;
- $tail = '';
- }
-
- $result .= $lastUchr;
- $lastUchr = $uchr;
- }
- } else {
- // Hangul chars
-
- $L = \ord($lastUchr[2]) - 0x80;
- $V = \ord($uchr[2]) - 0xA1;
- $T = 0;
-
- $uchr = substr($s, $i + $ulen, 3);
-
- if ("\xE1\x86\xA7" <= $uchr && $uchr <= "\xE1\x87\x82") {
- $T = \ord($uchr[2]) - 0xA7;
- 0 > $T && $T += 0x40;
- $ulen += 3;
- }
-
- $L = 0xAC00 + ($L * 21 + $V) * 28 + $T;
- $lastUchr = \chr(0xE0 | $L >> 12).\chr(0x80 | $L >> 6 & 0x3F).\chr(0x80 | $L & 0x3F);
- }
-
- $i += $ulen;
- }
-
- return $result.$lastUchr.$tail;
- }
-
- private static function decompose($s, $c)
- {
- $result = '';
-
- $ASCII = self::$ASCII;
- $decompMap = self::$D;
- $combClass = self::$cC;
- $ulenMask = self::$ulenMask;
- if ($c) {
- $compatMap = self::$KD;
- }
-
- $c = array();
- $i = 0;
- $len = \strlen($s);
-
- while ($i < $len) {
- if ($s[$i] < "\x80") {
- // ASCII chars
-
- if ($c) {
- ksort($c);
- $result .= implode('', $c);
- $c = array();
- }
-
- $j = 1 + strspn($s, $ASCII, $i + 1);
- $result .= substr($s, $i, $j);
- $i += $j;
- continue;
- }
-
- $ulen = $ulenMask[$s[$i] & "\xF0"];
- $uchr = substr($s, $i, $ulen);
- $i += $ulen;
-
- if ($uchr < "\xEA\xB0\x80" || "\xED\x9E\xA3" < $uchr) {
- // Table lookup
-
- if ($uchr !== $j = isset($compatMap[$uchr]) ? $compatMap[$uchr] : (isset($decompMap[$uchr]) ? $decompMap[$uchr] : $uchr)) {
- $uchr = $j;
-
- $j = \strlen($uchr);
- $ulen = $uchr[0] < "\x80" ? 1 : $ulenMask[$uchr[0] & "\xF0"];
-
- if ($ulen != $j) {
- // Put trailing chars in $s
-
- $j -= $ulen;
- $i -= $j;
-
- if (0 > $i) {
- $s = str_repeat(' ', -$i).$s;
- $len -= $i;
- $i = 0;
- }
-
- while ($j--) {
- $s[$i + $j] = $uchr[$ulen + $j];
- }
-
- $uchr = substr($uchr, 0, $ulen);
- }
- }
- if (isset($combClass[$uchr])) {
- // Combining chars, for sorting
-
- if (!isset($c[$combClass[$uchr]])) {
- $c[$combClass[$uchr]] = '';
- }
- $c[$combClass[$uchr]] .= $uchr;
- continue;
- }
- } else {
- // Hangul chars
-
- $uchr = unpack('C*', $uchr);
- $j = (($uchr[1] - 224) << 12) + (($uchr[2] - 128) << 6) + $uchr[3] - 0xAC80;
-
- $uchr = "\xE1\x84".\chr(0x80 + (int) ($j / 588))
- ."\xE1\x85".\chr(0xA1 + (int) (($j % 588) / 28));
-
- if ($j %= 28) {
- $uchr .= $j < 25
- ? ("\xE1\x86".\chr(0xA7 + $j))
- : ("\xE1\x87".\chr(0x67 + $j));
- }
- }
- if ($c) {
- ksort($c);
- $result .= implode('', $c);
- $c = array();
- }
-
- $result .= $uchr;
- }
-
- if ($c) {
- ksort($c);
- $result .= implode('', $c);
- }
-
- return $result;
- }
-
- private static function getData($file)
- {
- if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) {
- return require $file;
- }
-
- return false;
- }
-}
diff --git a/vendor/symfony/polyfill-intl-normalizer/README.md b/vendor/symfony/polyfill-intl-normalizer/README.md
deleted file mode 100644
index 15060c5..0000000
--- a/vendor/symfony/polyfill-intl-normalizer/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Symfony Polyfill / Intl: Normalizer
-===================================
-
-This component provides a fallback implementation for the
-[`Normalizer`](https://php.net/Normalizer) class provided
-by the [Intl](https://php.net/intl) extension.
-
-More information can be found in the
-[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
-
-License
-=======
-
-This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php b/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php
deleted file mode 100644
index ca18eff..0000000
--- a/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class Normalizer extends Symfony\Polyfill\Intl\Normalizer\Normalizer
-{
- /**
- * @deprecated since ICU 56 and removed in PHP 8
- */
- const NONE = 1;
- const FORM_D = 2;
- const FORM_KD = 3;
- const FORM_C = 4;
- const FORM_KC = 5;
- const NFD = 2;
- const NFKD = 3;
- const NFC = 4;
- const NFKC = 5;
-}
diff --git a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php b/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php
deleted file mode 100644
index db47644..0000000
--- a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php
+++ /dev/null
@@ -1,945 +0,0 @@
-<?php
-
-return array (
- 'À' => 'À',
- 'Á' => 'Á',
- 'Â' => 'Â',
- 'Ã' => 'Ã',
- 'Ä' => 'Ä',
- 'Å' => 'Å',
- 'Ç' => 'Ç',
- 'È' => 'È',
- 'É' => 'É',
- 'Ê' => 'Ê',
- 'Ë' => 'Ë',
- 'Ì' => 'Ì',
- 'Í' => 'Í',
- 'Î' => 'Î',
- 'Ï' => 'Ï',
- 'Ñ' => 'Ñ',
- 'Ò' => 'Ò',
- 'Ó' => 'Ó',
- 'Ô' => 'Ô',
- 'Õ' => 'Õ',
- 'Ö' => 'Ö',
- 'Ù' => 'Ù',
- 'Ú' => 'Ú',
- 'Û' => 'Û',
- 'Ü' => 'Ü',
- 'Ý' => 'Ý',
- 'à' => 'à',
- 'á' => 'á',
- 'â' => 'â',
- 'ã' => 'ã',
- 'ä' => 'ä',
- 'å' => 'å',
- 'ç' => 'ç',
- 'è' => 'è',
- 'é' => 'é',
- 'ê' => 'ê',
- 'ë' => 'ë',
- 'ì' => 'ì',
- 'í' => 'í',
- 'î' => 'î',
- 'ï' => 'ï',
- 'ñ' => 'ñ',
- 'ò' => 'ò',
- 'ó' => 'ó',
- 'ô' => 'ô',
- 'õ' => 'õ',
- 'ö' => 'ö',
- 'ù' => 'ù',
- 'ú' => 'ú',
- 'û' => 'û',
- 'ü' => 'ü',
- 'ý' => 'ý',
- 'ÿ' => 'ÿ',
- 'Ā' => 'Ā',
- 'ā' => 'ā',
- 'Ă' => 'Ă',
- 'ă' => 'ă',
- 'Ą' => 'Ą',
- 'ą' => 'ą',
- 'Ć' => 'Ć',
- 'ć' => 'ć',
- 'Ĉ' => 'Ĉ',
- 'ĉ' => 'ĉ',
- 'Ċ' => 'Ċ',
- 'ċ' => 'ċ',
- 'Č' => 'Č',
- 'č' => 'č',
- 'Ď' => 'Ď',
- 'ď' => 'ď',
- 'Ē' => 'Ē',
- 'ē' => 'ē',
- 'Ĕ' => 'Ĕ',
- 'ĕ' => 'ĕ',
- 'Ė' => 'Ė',
- 'ė' => 'ė',
- 'Ę' => 'Ę',
- 'ę' => 'ę',
- 'Ě' => 'Ě',
- 'ě' => 'ě',
- 'Ĝ' => 'Ĝ',
- 'ĝ' => 'ĝ',
- 'Ğ' => 'Ğ',
- 'ğ' => 'ğ',
- 'Ġ' => 'Ġ',
- 'ġ' => 'ġ',
- 'Ģ' => 'Ģ',
- 'ģ' => 'ģ',
- 'Ĥ' => 'Ĥ',
- 'ĥ' => 'ĥ',
- 'Ĩ' => 'Ĩ',
- 'ĩ' => 'ĩ',
- 'Ī' => 'Ī',
- 'ī' => 'ī',
- 'Ĭ' => 'Ĭ',
- 'ĭ' => 'ĭ',
- 'Į' => 'Į',
- 'į' => 'į',
- 'İ' => 'İ',
- 'Ĵ' => 'Ĵ',
- 'ĵ' => 'ĵ',
- 'Ķ' => 'Ķ',
- 'ķ' => 'ķ',
- 'Ĺ' => 'Ĺ',
- 'ĺ' => 'ĺ',
- 'Ļ' => 'Ļ',
- 'ļ' => 'ļ',
- 'Ľ' => 'Ľ',
- 'ľ' => 'ľ',
- 'Ń' => 'Ń',
- 'ń' => 'ń',
- 'Ņ' => 'Ņ',
- 'ņ' => 'ņ',
- 'Ň' => 'Ň',
- 'ň' => 'ň',
- 'Ō' => 'Ō',
- 'ō' => 'ō',
- 'Ŏ' => 'Ŏ',
- 'ŏ' => 'ŏ',
- 'Ő' => 'Ő',
- 'ő' => 'ő',
- 'Ŕ' => 'Ŕ',
- 'ŕ' => 'ŕ',
- 'Ŗ' => 'Ŗ',
- 'ŗ' => 'ŗ',
- 'Ř' => 'Ř',
- 'ř' => 'ř',
- 'Ś' => 'Ś',
- 'ś' => 'ś',
- 'Ŝ' => 'Ŝ',
- 'ŝ' => 'ŝ',
- 'Ş' => 'Ş',
- 'ş' => 'ş',
- 'Š' => 'Š',
- 'š' => 'š',
- 'Ţ' => 'Ţ',
- 'ţ' => 'ţ',
- 'Ť' => 'Ť',
- 'ť' => 'ť',
- 'Ũ' => 'Ũ',
- 'ũ' => 'ũ',
- 'Ū' => 'Ū',
- 'ū' => 'ū',
- 'Ŭ' => 'Ŭ',
- 'ŭ' => 'ŭ',
- 'Ů' => 'Ů',
- 'ů' => 'ů',
- 'Ű' => 'Ű',
- 'ű' => 'ű',
- 'Ų' => 'Ų',
- 'ų' => 'ų',
- 'Ŵ' => 'Ŵ',
- 'ŵ' => 'ŵ',
- 'Ŷ' => 'Ŷ',
- 'ŷ' => 'ŷ',
- 'Ÿ' => 'Ÿ',
- 'Ź' => 'Ź',
- 'ź' => 'ź',
- 'Ż' => 'Ż',
- 'ż' => 'ż',
- 'Ž' => 'Ž',
- 'ž' => 'ž',
- 'Ơ' => 'Ơ',
- 'ơ' => 'ơ',
- 'Ư' => 'Ư',
- 'ư' => 'ư',
- 'Ǎ' => 'Ǎ',
- 'ǎ' => 'ǎ',
- 'Ǐ' => 'Ǐ',
- 'ǐ' => 'ǐ',
- 'Ǒ' => 'Ǒ',
- 'ǒ' => 'ǒ',
- 'Ǔ' => 'Ǔ',
- 'ǔ' => 'ǔ',
- 'Ǖ' => 'Ǖ',
- 'ǖ' => 'ǖ',
- 'Ǘ' => 'Ǘ',
- 'ǘ' => 'ǘ',
- 'Ǚ' => 'Ǚ',
- 'ǚ' => 'ǚ',
- 'Ǜ' => 'Ǜ',
- 'ǜ' => 'ǜ',
- 'Ǟ' => 'Ǟ',
- 'ǟ' => 'ǟ',
- 'Ǡ' => 'Ǡ',
- 'ǡ' => 'ǡ',
- 'Ǣ' => 'Ǣ',
- 'ǣ' => 'ǣ',
- 'Ǧ' => 'Ǧ',
- 'ǧ' => 'ǧ',
- 'Ǩ' => 'Ǩ',
- 'ǩ' => 'ǩ',
- 'Ǫ' => 'Ǫ',
- 'ǫ' => 'ǫ',
- 'Ǭ' => 'Ǭ',
- 'ǭ' => 'ǭ',
- 'Ǯ' => 'Ǯ',
- 'ǯ' => 'ǯ',
- 'ǰ' => 'ǰ',
- 'Ǵ' => 'Ǵ',
- 'ǵ' => 'ǵ',
- 'Ǹ' => 'Ǹ',
- 'ǹ' => 'ǹ',
- 'Ǻ' => 'Ǻ',
- 'ǻ' => 'ǻ',
- 'Ǽ' => 'Ǽ',
- 'ǽ' => 'ǽ',
- 'Ǿ' => 'Ǿ',
- 'ǿ' => 'ǿ',
- 'Ȁ' => 'Ȁ',
- 'ȁ' => 'ȁ',
- 'Ȃ' => 'Ȃ',
- 'ȃ' => 'ȃ',
- 'Ȅ' => 'Ȅ',
- 'ȅ' => 'ȅ',
- 'Ȇ' => 'Ȇ',
- 'ȇ' => 'ȇ',
- 'Ȉ' => 'Ȉ',
- 'ȉ' => 'ȉ',
- 'Ȋ' => 'Ȋ',
- 'ȋ' => 'ȋ',
- 'Ȍ' => 'Ȍ',
- 'ȍ' => 'ȍ',
- 'Ȏ' => 'Ȏ',
- 'ȏ' => 'ȏ',
- 'Ȑ' => 'Ȑ',
- 'ȑ' => 'ȑ',
- 'Ȓ' => 'Ȓ',
- 'ȓ' => 'ȓ',
- 'Ȕ' => 'Ȕ',
- 'ȕ' => 'ȕ',
- 'Ȗ' => 'Ȗ',
- 'ȗ' => 'ȗ',
- 'Ș' => 'Ș',
- 'ș' => 'ș',
- 'Ț' => 'Ț',
- 'ț' => 'ț',
- 'Ȟ' => 'Ȟ',
- 'ȟ' => 'ȟ',
- 'Ȧ' => 'Ȧ',
- 'ȧ' => 'ȧ',
- 'Ȩ' => 'Ȩ',
- 'ȩ' => 'ȩ',
- 'Ȫ' => 'Ȫ',
- 'ȫ' => 'ȫ',
- 'Ȭ' => 'Ȭ',
- 'ȭ' => 'ȭ',
- 'Ȯ' => 'Ȯ',
- 'ȯ' => 'ȯ',
- 'Ȱ' => 'Ȱ',
- 'ȱ' => 'ȱ',
- 'Ȳ' => 'Ȳ',
- 'ȳ' => 'ȳ',
- '΅' => '΅',
- 'Ά' => 'Ά',
- 'Έ' => 'Έ',
- 'Ή' => 'Ή',
- 'Ί' => 'Ί',
- 'Ό' => 'Ό',
- 'Ύ' => 'Ύ',
- 'Ώ' => 'Ώ',
- 'ΐ' => 'ΐ',
- 'Ϊ' => 'Ϊ',
- 'Ϋ' => 'Ϋ',
- 'ά' => 'ά',
- 'έ' => 'έ',
- 'ή' => 'ή',
- 'ί' => 'ί',
- 'ΰ' => 'ΰ',
- 'ϊ' => 'ϊ',
- 'ϋ' => 'ϋ',
- 'ό' => 'ό',
- 'ύ' => 'ύ',
- 'ώ' => 'ώ',
- 'ϓ' => 'ϓ',
- 'ϔ' => 'ϔ',
- 'Ѐ' => 'Ѐ',
- 'Ё' => 'Ё',
- 'Ѓ' => 'Ѓ',
- 'Ї' => 'Ї',
- 'Ќ' => 'Ќ',
- 'Ѝ' => 'Ѝ',
- 'Ў' => 'Ў',
- 'Й' => 'Й',
- 'й' => 'й',
- 'ѐ' => 'ѐ',
- 'ё' => 'ё',
- 'ѓ' => 'ѓ',
- 'ї' => 'ї',
- 'ќ' => 'ќ',
- 'ѝ' => 'ѝ',
- 'ў' => 'ў',
- 'Ѷ' => 'Ѷ',
- 'ѷ' => 'ѷ',
- 'Ӂ' => 'Ӂ',
- 'ӂ' => 'ӂ',
- 'Ӑ' => 'Ӑ',
- 'ӑ' => 'ӑ',
- 'Ӓ' => 'Ӓ',
- 'ӓ' => 'ӓ',
- 'Ӗ' => 'Ӗ',
- 'ӗ' => 'ӗ',
- 'Ӛ' => 'Ӛ',
- 'ӛ' => 'ӛ',
- 'Ӝ' => 'Ӝ',
- 'ӝ' => 'ӝ',
- 'Ӟ' => 'Ӟ',
- 'ӟ' => 'ӟ',
- 'Ӣ' => 'Ӣ',
- 'ӣ' => 'ӣ',
- 'Ӥ' => 'Ӥ',
- 'ӥ' => 'ӥ',
- 'Ӧ' => 'Ӧ',
- 'ӧ' => 'ӧ',
- 'Ӫ' => 'Ӫ',
- 'ӫ' => 'ӫ',
- 'Ӭ' => 'Ӭ',
- 'ӭ' => 'ӭ',
- 'Ӯ' => 'Ӯ',
- 'ӯ' => 'ӯ',
- 'Ӱ' => 'Ӱ',
- 'ӱ' => 'ӱ',
- 'Ӳ' => 'Ӳ',
- 'ӳ' => 'ӳ',
- 'Ӵ' => 'Ӵ',
- 'ӵ' => 'ӵ',
- 'Ӹ' => 'Ӹ',
- 'ӹ' => 'ӹ',
- 'آ' => 'آ',
- 'أ' => 'أ',
- 'ؤ' => 'ؤ',
- 'إ' => 'إ',
- 'ئ' => 'ئ',
- 'ۀ' => 'ۀ',
- 'ۂ' => 'ۂ',
- 'ۓ' => 'ۓ',
- 'ऩ' => 'ऩ',
- 'ऱ' => 'ऱ',
- 'ऴ' => 'ऴ',
- 'ো' => 'ো',
- 'ৌ' => 'ৌ',
- 'ୈ' => 'ୈ',
- 'ୋ' => 'ୋ',
- 'ୌ' => 'ୌ',
- 'ஔ' => 'ஔ',
- 'ொ' => 'ொ',
- 'ோ' => 'ோ',
- 'ௌ' => 'ௌ',
- 'ై' => 'ై',
- 'ೀ' => 'ೀ',
- 'ೇ' => 'ೇ',
- 'ೈ' => 'ೈ',
- 'ೊ' => 'ೊ',
- 'ೋ' => 'ೋ',
- 'ൊ' => 'ൊ',
- 'ോ' => 'ോ',
- 'ൌ' => 'ൌ',
- 'ේ' => 'ේ',
- 'ො' => 'ො',
- 'ෝ' => 'ෝ',
- 'ෞ' => 'ෞ',
- 'ဦ' => 'ဦ',
- 'ᬆ' => 'ᬆ',
- 'ᬈ' => 'ᬈ',
- 'ᬊ' => 'ᬊ',
- 'ᬌ' => 'ᬌ',
- 'ᬎ' => 'ᬎ',
- 'ᬒ' => 'ᬒ',
- 'ᬻ' => 'ᬻ',
- 'ᬽ' => 'ᬽ',
- 'ᭀ' => 'ᭀ',
- 'ᭁ' => 'ᭁ',
- 'ᭃ' => 'ᭃ',
- 'Ḁ' => 'Ḁ',
- 'ḁ' => 'ḁ',
- 'Ḃ' => 'Ḃ',
- 'ḃ' => 'ḃ',
- 'Ḅ' => 'Ḅ',
- 'ḅ' => 'ḅ',
- 'Ḇ' => 'Ḇ',
- 'ḇ' => 'ḇ',
- 'Ḉ' => 'Ḉ',
- 'ḉ' => 'ḉ',
- 'Ḋ' => 'Ḋ',
- 'ḋ' => 'ḋ',
- 'Ḍ' => 'Ḍ',
- 'ḍ' => 'ḍ',
- 'Ḏ' => 'Ḏ',
- 'ḏ' => 'ḏ',
- 'Ḑ' => 'Ḑ',
- 'ḑ' => 'ḑ',
- 'Ḓ' => 'Ḓ',
- 'ḓ' => 'ḓ',
- 'Ḕ' => 'Ḕ',
- 'ḕ' => 'ḕ',
- 'Ḗ' => 'Ḗ',
- 'ḗ' => 'ḗ',
- 'Ḙ' => 'Ḙ',
- 'ḙ' => 'ḙ',
- 'Ḛ' => 'Ḛ',
- 'ḛ' => 'ḛ',
- 'Ḝ' => 'Ḝ',
- 'ḝ' => 'ḝ',
- 'Ḟ' => 'Ḟ',
- 'ḟ' => 'ḟ',
- 'Ḡ' => 'Ḡ',
- 'ḡ' => 'ḡ',
- 'Ḣ' => 'Ḣ',
- 'ḣ' => 'ḣ',
- 'Ḥ' => 'Ḥ',
- 'ḥ' => 'ḥ',
- 'Ḧ' => 'Ḧ',
- 'ḧ' => 'ḧ',
- 'Ḩ' => 'Ḩ',
- 'ḩ' => 'ḩ',
- 'Ḫ' => 'Ḫ',
- 'ḫ' => 'ḫ',
- 'Ḭ' => 'Ḭ',
- 'ḭ' => 'ḭ',
- 'Ḯ' => 'Ḯ',
- 'ḯ' => 'ḯ',
- 'Ḱ' => 'Ḱ',
- 'ḱ' => 'ḱ',
- 'Ḳ' => 'Ḳ',
- 'ḳ' => 'ḳ',
- 'Ḵ' => 'Ḵ',
- 'ḵ' => 'ḵ',
- 'Ḷ' => 'Ḷ',
- 'ḷ' => 'ḷ',
- 'Ḹ' => 'Ḹ',
- 'ḹ' => 'ḹ',
- 'Ḻ' => 'Ḻ',
- 'ḻ' => 'ḻ',
- 'Ḽ' => 'Ḽ',
- 'ḽ' => 'ḽ',
- 'Ḿ' => 'Ḿ',
- 'ḿ' => 'ḿ',
- 'Ṁ' => 'Ṁ',
- 'ṁ' => 'ṁ',
- 'Ṃ' => 'Ṃ',
- 'ṃ' => 'ṃ',
- 'Ṅ' => 'Ṅ',
- 'ṅ' => 'ṅ',
- 'Ṇ' => 'Ṇ',
- 'ṇ' => 'ṇ',
- 'Ṉ' => 'Ṉ',
- 'ṉ' => 'ṉ',
- 'Ṋ' => 'Ṋ',
- 'ṋ' => 'ṋ',
- 'Ṍ' => 'Ṍ',
- 'ṍ' => 'ṍ',
- 'Ṏ' => 'Ṏ',
- 'ṏ' => 'ṏ',
- 'Ṑ' => 'Ṑ',
- 'ṑ' => 'ṑ',
- 'Ṓ' => 'Ṓ',
- 'ṓ' => 'ṓ',
- 'Ṕ' => 'Ṕ',
- 'ṕ' => 'ṕ',
- 'Ṗ' => 'Ṗ',
- 'ṗ' => 'ṗ',
- 'Ṙ' => 'Ṙ',
- 'ṙ' => 'ṙ',
- 'Ṛ' => 'Ṛ',
- 'ṛ' => 'ṛ',
- 'Ṝ' => 'Ṝ',
- 'ṝ' => 'ṝ',
- 'Ṟ' => 'Ṟ',
- 'ṟ' => 'ṟ',
- 'Ṡ' => 'Ṡ',
- 'ṡ' => 'ṡ',
- 'Ṣ' => 'Ṣ',
- 'ṣ' => 'ṣ',
- 'Ṥ' => 'Ṥ',
- 'ṥ' => 'ṥ',
- 'Ṧ' => 'Ṧ',
- 'ṧ' => 'ṧ',
- 'Ṩ' => 'Ṩ',
- 'ṩ' => 'ṩ',
- 'Ṫ' => 'Ṫ',
- 'ṫ' => 'ṫ',
- 'Ṭ' => 'Ṭ',
- 'ṭ' => 'ṭ',
- 'Ṯ' => 'Ṯ',
- 'ṯ' => 'ṯ',
- 'Ṱ' => 'Ṱ',
- 'ṱ' => 'ṱ',
- 'Ṳ' => 'Ṳ',
- 'ṳ' => 'ṳ',
- 'Ṵ' => 'Ṵ',
- 'ṵ' => 'ṵ',
- 'Ṷ' => 'Ṷ',
- 'ṷ' => 'ṷ',
- 'Ṹ' => 'Ṹ',
- 'ṹ' => 'ṹ',
- 'Ṻ' => 'Ṻ',
- 'ṻ' => 'ṻ',
- 'Ṽ' => 'Ṽ',
- 'ṽ' => 'ṽ',
- 'Ṿ' => 'Ṿ',
- 'ṿ' => 'ṿ',
- 'Ẁ' => 'Ẁ',
- 'ẁ' => 'ẁ',
- 'Ẃ' => 'Ẃ',
- 'ẃ' => 'ẃ',
- 'Ẅ' => 'Ẅ',
- 'ẅ' => 'ẅ',
- 'Ẇ' => 'Ẇ',
- 'ẇ' => 'ẇ',
- 'Ẉ' => 'Ẉ',
- 'ẉ' => 'ẉ',
- 'Ẋ' => 'Ẋ',
- 'ẋ' => 'ẋ',
- 'Ẍ' => 'Ẍ',
- 'ẍ' => 'ẍ',
- 'Ẏ' => 'Ẏ',
- 'ẏ' => 'ẏ',
- 'Ẑ' => 'Ẑ',
- 'ẑ' => 'ẑ',
- 'Ẓ' => 'Ẓ',
- 'ẓ' => 'ẓ',
- 'Ẕ' => 'Ẕ',
- 'ẕ' => 'ẕ',
- 'ẖ' => 'ẖ',
- 'ẗ' => 'ẗ',
- 'ẘ' => 'ẘ',
- 'ẙ' => 'ẙ',
- 'ẛ' => 'ẛ',
- 'Ạ' => 'Ạ',
- 'ạ' => 'ạ',
- 'Ả' => 'Ả',
- 'ả' => 'ả',
- 'Ấ' => 'Ấ',
- 'ấ' => 'ấ',
- 'Ầ' => 'Ầ',
- 'ầ' => 'ầ',
- 'Ẩ' => 'Ẩ',
- 'ẩ' => 'ẩ',
- 'Ẫ' => 'Ẫ',
- 'ẫ' => 'ẫ',
- 'Ậ' => 'Ậ',
- 'ậ' => 'ậ',
- 'Ắ' => 'Ắ',
- 'ắ' => 'ắ',
- 'Ằ' => 'Ằ',
- 'ằ' => 'ằ',
- 'Ẳ' => 'Ẳ',
- 'ẳ' => 'ẳ',
- 'Ẵ' => 'Ẵ',
- 'ẵ' => 'ẵ',
- 'Ặ' => 'Ặ',
- 'ặ' => 'ặ',
- 'Ẹ' => 'Ẹ',
- 'ẹ' => 'ẹ',
- 'Ẻ' => 'Ẻ',
- 'ẻ' => 'ẻ',
- 'Ẽ' => 'Ẽ',
- 'ẽ' => 'ẽ',
- 'Ế' => 'Ế',
- 'ế' => 'ế',
- 'Ề' => 'Ề',
- 'ề' => 'ề',
- 'Ể' => 'Ể',
- 'ể' => 'ể',
- 'Ễ' => 'Ễ',
- 'ễ' => 'ễ',
- 'Ệ' => 'Ệ',
- 'ệ' => 'ệ',
- 'Ỉ' => 'Ỉ',
- 'ỉ' => 'ỉ',
- 'Ị' => 'Ị',
- 'ị' => 'ị',
- 'Ọ' => 'Ọ',
- 'ọ' => 'ọ',
- 'Ỏ' => 'Ỏ',
- 'ỏ' => 'ỏ',
- 'Ố' => 'Ố',
- 'ố' => 'ố',
- 'Ồ' => 'Ồ',
- 'ồ' => 'ồ',
- 'Ổ' => 'Ổ',
- 'ổ' => 'ổ',
- 'Ỗ' => 'Ỗ',
- 'ỗ' => 'ỗ',
- 'Ộ' => 'Ộ',
- 'ộ' => 'ộ',
- 'Ớ' => 'Ớ',
- 'ớ' => 'ớ',
- 'Ờ' => 'Ờ',
- 'ờ' => 'ờ',
- 'Ở' => 'Ở',
- 'ở' => 'ở',
- 'Ỡ' => 'Ỡ',
- 'ỡ' => 'ỡ',
- 'Ợ' => 'Ợ',
- 'ợ' => 'ợ',
- 'Ụ' => 'Ụ',
- 'ụ' => 'ụ',
- 'Ủ' => 'Ủ',
- 'ủ' => 'ủ',
- 'Ứ' => 'Ứ',
- 'ứ' => 'ứ',
- 'Ừ' => 'Ừ',
- 'ừ' => 'ừ',
- 'Ử' => 'Ử',
- 'ử' => 'ử',
- 'Ữ' => 'Ữ',
- 'ữ' => 'ữ',
- 'Ự' => 'Ự',
- 'ự' => 'ự',
- 'Ỳ' => 'Ỳ',
- 'ỳ' => 'ỳ',
- 'Ỵ' => 'Ỵ',
- 'ỵ' => 'ỵ',
- 'Ỷ' => 'Ỷ',
- 'ỷ' => 'ỷ',
- 'Ỹ' => 'Ỹ',
- 'ỹ' => 'ỹ',
- 'ἀ' => 'ἀ',
- 'ἁ' => 'ἁ',
- 'ἂ' => 'ἂ',
- 'ἃ' => 'ἃ',
- 'ἄ' => 'ἄ',
- 'ἅ' => 'ἅ',
- 'ἆ' => 'ἆ',
- 'ἇ' => 'ἇ',
- 'Ἀ' => 'Ἀ',
- 'Ἁ' => 'Ἁ',
- 'Ἂ' => 'Ἂ',
- 'Ἃ' => 'Ἃ',
- 'Ἄ' => 'Ἄ',
- 'Ἅ' => 'Ἅ',
- 'Ἆ' => 'Ἆ',
- 'Ἇ' => 'Ἇ',
- 'ἐ' => 'ἐ',
- 'ἑ' => 'ἑ',
- 'ἒ' => 'ἒ',
- 'ἓ' => 'ἓ',
- 'ἔ' => 'ἔ',
- 'ἕ' => 'ἕ',
- 'Ἐ' => 'Ἐ',
- 'Ἑ' => 'Ἑ',
- 'Ἒ' => 'Ἒ',
- 'Ἓ' => 'Ἓ',
- 'Ἔ' => 'Ἔ',
- 'Ἕ' => 'Ἕ',
- 'ἠ' => 'ἠ',
- 'ἡ' => 'ἡ',
- 'ἢ' => 'ἢ',
- 'ἣ' => 'ἣ',
- 'ἤ' => 'ἤ',
- 'ἥ' => 'ἥ',
- 'ἦ' => 'ἦ',
- 'ἧ' => 'ἧ',
- 'Ἠ' => 'Ἠ',
- 'Ἡ' => 'Ἡ',
- 'Ἢ' => 'Ἢ',
- 'Ἣ' => 'Ἣ',
- 'Ἤ' => 'Ἤ',
- 'Ἥ' => 'Ἥ',
- 'Ἦ' => 'Ἦ',
- 'Ἧ' => 'Ἧ',
- 'ἰ' => 'ἰ',
- 'ἱ' => 'ἱ',
- 'ἲ' => 'ἲ',
- 'ἳ' => 'ἳ',
- 'ἴ' => 'ἴ',
- 'ἵ' => 'ἵ',
- 'ἶ' => 'ἶ',
- 'ἷ' => 'ἷ',
- 'Ἰ' => 'Ἰ',
- 'Ἱ' => 'Ἱ',
- 'Ἲ' => 'Ἲ',
- 'Ἳ' => 'Ἳ',
- 'Ἴ' => 'Ἴ',
- 'Ἵ' => 'Ἵ',
- 'Ἶ' => 'Ἶ',
- 'Ἷ' => 'Ἷ',
- 'ὀ' => 'ὀ',
- 'ὁ' => 'ὁ',
- 'ὂ' => 'ὂ',
- 'ὃ' => 'ὃ',
- 'ὄ' => 'ὄ',
- 'ὅ' => 'ὅ',
- 'Ὀ' => 'Ὀ',
- 'Ὁ' => 'Ὁ',
- 'Ὂ' => 'Ὂ',
- 'Ὃ' => 'Ὃ',
- 'Ὄ' => 'Ὄ',
- 'Ὅ' => 'Ὅ',
- 'ὐ' => 'ὐ',
- 'ὑ' => 'ὑ',
- 'ὒ' => 'ὒ',
- 'ὓ' => 'ὓ',
- 'ὔ' => 'ὔ',
- 'ὕ' => 'ὕ',
- 'ὖ' => 'ὖ',
- 'ὗ' => 'ὗ',
- 'Ὑ' => 'Ὑ',
- 'Ὓ' => 'Ὓ',
- 'Ὕ' => 'Ὕ',
- 'Ὗ' => 'Ὗ',
- 'ὠ' => 'ὠ',
- 'ὡ' => 'ὡ',
- 'ὢ' => 'ὢ',
- 'ὣ' => 'ὣ',
- 'ὤ' => 'ὤ',
- 'ὥ' => 'ὥ',
- 'ὦ' => 'ὦ',
- 'ὧ' => 'ὧ',
- 'Ὠ' => 'Ὠ',
- 'Ὡ' => 'Ὡ',
- 'Ὢ' => 'Ὢ',
- 'Ὣ' => 'Ὣ',
- 'Ὤ' => 'Ὤ',
- 'Ὥ' => 'Ὥ',
- 'Ὦ' => 'Ὦ',
- 'Ὧ' => 'Ὧ',
- 'ὰ' => 'ὰ',
- 'ὲ' => 'ὲ',
- 'ὴ' => 'ὴ',
- 'ὶ' => 'ὶ',
- 'ὸ' => 'ὸ',
- 'ὺ' => 'ὺ',
- 'ὼ' => 'ὼ',
- 'ᾀ' => 'ᾀ',
- 'ᾁ' => 'ᾁ',
- 'ᾂ' => 'ᾂ',
- 'ᾃ' => 'ᾃ',
- 'ᾄ' => 'ᾄ',
- 'ᾅ' => 'ᾅ',
- 'ᾆ' => 'ᾆ',
- 'ᾇ' => 'ᾇ',
- 'ᾈ' => 'ᾈ',
- 'ᾉ' => 'ᾉ',
- 'ᾊ' => 'ᾊ',
- 'ᾋ' => 'ᾋ',
- 'ᾌ' => 'ᾌ',
- 'ᾍ' => 'ᾍ',
- 'ᾎ' => 'ᾎ',
- 'ᾏ' => 'ᾏ',
- 'ᾐ' => 'ᾐ',
- 'ᾑ' => 'ᾑ',
- 'ᾒ' => 'ᾒ',
- 'ᾓ' => 'ᾓ',
- 'ᾔ' => 'ᾔ',
- 'ᾕ' => 'ᾕ',
- 'ᾖ' => 'ᾖ',
- 'ᾗ' => 'ᾗ',
- 'ᾘ' => 'ᾘ',
- 'ᾙ' => 'ᾙ',
- 'ᾚ' => 'ᾚ',
- 'ᾛ' => 'ᾛ',
- 'ᾜ' => 'ᾜ',
- 'ᾝ' => 'ᾝ',
- 'ᾞ' => 'ᾞ',
- 'ᾟ' => 'ᾟ',
- 'ᾠ' => 'ᾠ',
- 'ᾡ' => 'ᾡ',
- 'ᾢ' => 'ᾢ',
- 'ᾣ' => 'ᾣ',
- 'ᾤ' => 'ᾤ',
- 'ᾥ' => 'ᾥ',
- 'ᾦ' => 'ᾦ',
- 'ᾧ' => 'ᾧ',
- 'ᾨ' => 'ᾨ',
- 'ᾩ' => 'ᾩ',
- 'ᾪ' => 'ᾪ',
- 'ᾫ' => 'ᾫ',
- 'ᾬ' => 'ᾬ',
- 'ᾭ' => 'ᾭ',
- 'ᾮ' => 'ᾮ',
- 'ᾯ' => 'ᾯ',
- 'ᾰ' => 'ᾰ',
- 'ᾱ' => 'ᾱ',
- 'ᾲ' => 'ᾲ',
- 'ᾳ' => 'ᾳ',
- 'ᾴ' => 'ᾴ',
- 'ᾶ' => 'ᾶ',
- 'ᾷ' => 'ᾷ',
- 'Ᾰ' => 'Ᾰ',
- 'Ᾱ' => 'Ᾱ',
- 'Ὰ' => 'Ὰ',
- 'ᾼ' => 'ᾼ',
- '῁' => '῁',
- 'ῂ' => 'ῂ',
- 'ῃ' => 'ῃ',
- 'ῄ' => 'ῄ',
- 'ῆ' => 'ῆ',
- 'ῇ' => 'ῇ',
- 'Ὲ' => 'Ὲ',
- 'Ὴ' => 'Ὴ',
- 'ῌ' => 'ῌ',
- '῍' => '῍',
- '῎' => '῎',
- '῏' => '῏',
- 'ῐ' => 'ῐ',
- 'ῑ' => 'ῑ',
- 'ῒ' => 'ῒ',
- 'ῖ' => 'ῖ',
- 'ῗ' => 'ῗ',
- 'Ῐ' => 'Ῐ',
- 'Ῑ' => 'Ῑ',
- 'Ὶ' => 'Ὶ',
- '῝' => '῝',
- '῞' => '῞',
- '῟' => '῟',
- 'ῠ' => 'ῠ',
- 'ῡ' => 'ῡ',
- 'ῢ' => 'ῢ',
- 'ῤ' => 'ῤ',
- 'ῥ' => 'ῥ',
- 'ῦ' => 'ῦ',
- 'ῧ' => 'ῧ',
- 'Ῠ' => 'Ῠ',
- 'Ῡ' => 'Ῡ',
- 'Ὺ' => 'Ὺ',
- 'Ῥ' => 'Ῥ',
- '῭' => '῭',
- 'ῲ' => 'ῲ',
- 'ῳ' => 'ῳ',
- 'ῴ' => 'ῴ',
- 'ῶ' => 'ῶ',
- 'ῷ' => 'ῷ',
- 'Ὸ' => 'Ὸ',
- 'Ὼ' => 'Ὼ',
- 'ῼ' => 'ῼ',
- '↚' => '↚',
- '↛' => '↛',
- '↮' => '↮',
- '⇍' => '⇍',
- '⇎' => '⇎',
- '⇏' => '⇏',
- '∄' => '∄',
- '∉' => '∉',
- '∌' => '∌',
- '∤' => '∤',
- '∦' => '∦',
- '≁' => '≁',
- '≄' => '≄',
- '≇' => '≇',
- '≉' => '≉',
- '≠' => '≠',
- '≢' => '≢',
- '≭' => '≭',
- '≮' => '≮',
- '≯' => '≯',
- '≰' => '≰',
- '≱' => '≱',
- '≴' => '≴',
- '≵' => '≵',
- '≸' => '≸',
- '≹' => '≹',
- '⊀' => '⊀',
- '⊁' => '⊁',
- '⊄' => '⊄',
- '⊅' => '⊅',
- '⊈' => '⊈',
- '⊉' => '⊉',
- '⊬' => '⊬',
- '⊭' => '⊭',
- '⊮' => '⊮',
- '⊯' => '⊯',
- '⋠' => '⋠',
- '⋡' => '⋡',
- '⋢' => '⋢',
- '⋣' => '⋣',
- '⋪' => '⋪',
- '⋫' => '⋫',
- '⋬' => '⋬',
- '⋭' => '⋭',
- 'が' => 'が',
- 'ぎ' => 'ぎ',
- 'ぐ' => 'ぐ',
- 'げ' => 'げ',
- 'ご' => 'ご',
- 'ざ' => 'ざ',
- 'じ' => 'じ',
- 'ず' => 'ず',
- 'ぜ' => 'ぜ',
- 'ぞ' => 'ぞ',
- 'だ' => 'だ',
- 'ぢ' => 'ぢ',
- 'づ' => 'づ',
- 'で' => 'で',
- 'ど' => 'ど',
- 'ば' => 'ば',
- 'ぱ' => 'ぱ',
- 'び' => 'び',
- 'ぴ' => 'ぴ',
- 'ぶ' => 'ぶ',
- 'ぷ' => 'ぷ',
- 'べ' => 'べ',
- 'ぺ' => 'ぺ',
- 'ぼ' => 'ぼ',
- 'ぽ' => 'ぽ',
- 'ゔ' => 'ゔ',
- 'ゞ' => 'ゞ',
- 'ガ' => 'ガ',
- 'ギ' => 'ギ',
- 'グ' => 'グ',
- 'ゲ' => 'ゲ',
- 'ゴ' => 'ゴ',
- 'ザ' => 'ザ',
- 'ジ' => 'ジ',
- 'ズ' => 'ズ',
- 'ゼ' => 'ゼ',
- 'ゾ' => 'ゾ',
- 'ダ' => 'ダ',
- 'ヂ' => 'ヂ',
- 'ヅ' => 'ヅ',
- 'デ' => 'デ',
- 'ド' => 'ド',
- 'バ' => 'バ',
- 'パ' => 'パ',
- 'ビ' => 'ビ',
- 'ピ' => 'ピ',
- 'ブ' => 'ブ',
- 'プ' => 'プ',
- 'ベ' => 'ベ',
- 'ペ' => 'ペ',
- 'ボ' => 'ボ',
- 'ポ' => 'ポ',
- 'ヴ' => 'ヴ',
- 'ヷ' => 'ヷ',
- 'ヸ' => 'ヸ',
- 'ヹ' => 'ヹ',
- 'ヺ' => 'ヺ',
- 'ヾ' => 'ヾ',
- '𑂚' => '𑂚',
- '𑂜' => '𑂜',
- '𑂫' => '𑂫',
- '𑄮' => '𑄮',
- '𑄯' => '𑄯',
- '𑍋' => '𑍋',
- '𑍌' => '𑍌',
- '𑒻' => '𑒻',
- '𑒼' => '𑒼',
- '𑒾' => '𑒾',
- '𑖺' => '𑖺',
- '𑖻' => '𑖻',
- '𑤸' => '𑤸',
-);
diff --git a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php b/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php
deleted file mode 100644
index 5a3e8e0..0000000
--- a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php
+++ /dev/null
@@ -1,2065 +0,0 @@
-<?php
-
-return array (
- 'À' => 'À',
- 'Á' => 'Á',
- 'Â' => 'Â',
- 'Ã' => 'Ã',
- 'Ä' => 'Ä',
- 'Å' => 'Å',
- 'Ç' => 'Ç',
- 'È' => 'È',
- 'É' => 'É',
- 'Ê' => 'Ê',
- 'Ë' => 'Ë',
- 'Ì' => 'Ì',
- 'Í' => 'Í',
- 'Î' => 'Î',
- 'Ï' => 'Ï',
- 'Ñ' => 'Ñ',
- 'Ò' => 'Ò',
- 'Ó' => 'Ó',
- 'Ô' => 'Ô',
- 'Õ' => 'Õ',
- 'Ö' => 'Ö',
- 'Ù' => 'Ù',
- 'Ú' => 'Ú',
- 'Û' => 'Û',
- 'Ü' => 'Ü',
- 'Ý' => 'Ý',
- 'à' => 'à',
- 'á' => 'á',
- 'â' => 'â',
- 'ã' => 'ã',
- 'ä' => 'ä',
- 'å' => 'å',
- 'ç' => 'ç',
- 'è' => 'è',
- 'é' => 'é',
- 'ê' => 'ê',
- 'ë' => 'ë',
- 'ì' => 'ì',
- 'í' => 'í',
- 'î' => 'î',
- 'ï' => 'ï',
- 'ñ' => 'ñ',
- 'ò' => 'ò',
- 'ó' => 'ó',
- 'ô' => 'ô',
- 'õ' => 'õ',
- 'ö' => 'ö',
- 'ù' => 'ù',
- 'ú' => 'ú',
- 'û' => 'û',
- 'ü' => 'ü',
- 'ý' => 'ý',
- 'ÿ' => 'ÿ',
- 'Ā' => 'Ā',
- 'ā' => 'ā',
- 'Ă' => 'Ă',
- 'ă' => 'ă',
- 'Ą' => 'Ą',
- 'ą' => 'ą',
- 'Ć' => 'Ć',
- 'ć' => 'ć',
- 'Ĉ' => 'Ĉ',
- 'ĉ' => 'ĉ',
- 'Ċ' => 'Ċ',
- 'ċ' => 'ċ',
- 'Č' => 'Č',
- 'č' => 'č',
- 'Ď' => 'Ď',
- 'ď' => 'ď',
- 'Ē' => 'Ē',
- 'ē' => 'ē',
- 'Ĕ' => 'Ĕ',
- 'ĕ' => 'ĕ',
- 'Ė' => 'Ė',
- 'ė' => 'ė',
- 'Ę' => 'Ę',
- 'ę' => 'ę',
- 'Ě' => 'Ě',
- 'ě' => 'ě',
- 'Ĝ' => 'Ĝ',
- 'ĝ' => 'ĝ',
- 'Ğ' => 'Ğ',
- 'ğ' => 'ğ',
- 'Ġ' => 'Ġ',
- 'ġ' => 'ġ',
- 'Ģ' => 'Ģ',
- 'ģ' => 'ģ',
- 'Ĥ' => 'Ĥ',
- 'ĥ' => 'ĥ',
- 'Ĩ' => 'Ĩ',
- 'ĩ' => 'ĩ',
- 'Ī' => 'Ī',
- 'ī' => 'ī',
- 'Ĭ' => 'Ĭ',
- 'ĭ' => 'ĭ',
- 'Į' => 'Į',
- 'į' => 'į',
- 'İ' => 'İ',
- 'Ĵ' => 'Ĵ',
- 'ĵ' => 'ĵ',
- 'Ķ' => 'Ķ',
- 'ķ' => 'ķ',
- 'Ĺ' => 'Ĺ',
- 'ĺ' => 'ĺ',
- 'Ļ' => 'Ļ',
- 'ļ' => 'ļ',
- 'Ľ' => 'Ľ',
- 'ľ' => 'ľ',
- 'Ń' => 'Ń',
- 'ń' => 'ń',
- 'Ņ' => 'Ņ',
- 'ņ' => 'ņ',
- 'Ň' => 'Ň',
- 'ň' => 'ň',
- 'Ō' => 'Ō',
- 'ō' => 'ō',
- 'Ŏ' => 'Ŏ',
- 'ŏ' => 'ŏ',
- 'Ő' => 'Ő',
- 'ő' => 'ő',
- 'Ŕ' => 'Ŕ',
- 'ŕ' => 'ŕ',
- 'Ŗ' => 'Ŗ',
- 'ŗ' => 'ŗ',
- 'Ř' => 'Ř',
- 'ř' => 'ř',
- 'Ś' => 'Ś',
- 'ś' => 'ś',
- 'Ŝ' => 'Ŝ',
- 'ŝ' => 'ŝ',
- 'Ş' => 'Ş',
- 'ş' => 'ş',
- 'Š' => 'Š',
- 'š' => 'š',
- 'Ţ' => 'Ţ',
- 'ţ' => 'ţ',
- 'Ť' => 'Ť',
- 'ť' => 'ť',
- 'Ũ' => 'Ũ',
- 'ũ' => 'ũ',
- 'Ū' => 'Ū',
- 'ū' => 'ū',
- 'Ŭ' => 'Ŭ',
- 'ŭ' => 'ŭ',
- 'Ů' => 'Ů',
- 'ů' => 'ů',
- 'Ű' => 'Ű',
- 'ű' => 'ű',
- 'Ų' => 'Ų',
- 'ų' => 'ų',
- 'Ŵ' => 'Ŵ',
- 'ŵ' => 'ŵ',
- 'Ŷ' => 'Ŷ',
- 'ŷ' => 'ŷ',
- 'Ÿ' => 'Ÿ',
- 'Ź' => 'Ź',
- 'ź' => 'ź',
- 'Ż' => 'Ż',
- 'ż' => 'ż',
- 'Ž' => 'Ž',
- 'ž' => 'ž',
- 'Ơ' => 'Ơ',
- 'ơ' => 'ơ',
- 'Ư' => 'Ư',
- 'ư' => 'ư',
- 'Ǎ' => 'Ǎ',
- 'ǎ' => 'ǎ',
- 'Ǐ' => 'Ǐ',
- 'ǐ' => 'ǐ',
- 'Ǒ' => 'Ǒ',
- 'ǒ' => 'ǒ',
- 'Ǔ' => 'Ǔ',
- 'ǔ' => 'ǔ',
- 'Ǖ' => 'Ǖ',
- 'ǖ' => 'ǖ',
- 'Ǘ' => 'Ǘ',
- 'ǘ' => 'ǘ',
- 'Ǚ' => 'Ǚ',
- 'ǚ' => 'ǚ',
- 'Ǜ' => 'Ǜ',
- 'ǜ' => 'ǜ',
- 'Ǟ' => 'Ǟ',
- 'ǟ' => 'ǟ',
- 'Ǡ' => 'Ǡ',
- 'ǡ' => 'ǡ',
- 'Ǣ' => 'Ǣ',
- 'ǣ' => 'ǣ',
- 'Ǧ' => 'Ǧ',
- 'ǧ' => 'ǧ',
- 'Ǩ' => 'Ǩ',
- 'ǩ' => 'ǩ',
- 'Ǫ' => 'Ǫ',
- 'ǫ' => 'ǫ',
- 'Ǭ' => 'Ǭ',
- 'ǭ' => 'ǭ',
- 'Ǯ' => 'Ǯ',
- 'ǯ' => 'ǯ',
- 'ǰ' => 'ǰ',
- 'Ǵ' => 'Ǵ',
- 'ǵ' => 'ǵ',
- 'Ǹ' => 'Ǹ',
- 'ǹ' => 'ǹ',
- 'Ǻ' => 'Ǻ',
- 'ǻ' => 'ǻ',
- 'Ǽ' => 'Ǽ',
- 'ǽ' => 'ǽ',
- 'Ǿ' => 'Ǿ',
- 'ǿ' => 'ǿ',
- 'Ȁ' => 'Ȁ',
- 'ȁ' => 'ȁ',
- 'Ȃ' => 'Ȃ',
- 'ȃ' => 'ȃ',
- 'Ȅ' => 'Ȅ',
- 'ȅ' => 'ȅ',
- 'Ȇ' => 'Ȇ',
- 'ȇ' => 'ȇ',
- 'Ȉ' => 'Ȉ',
- 'ȉ' => 'ȉ',
- 'Ȋ' => 'Ȋ',
- 'ȋ' => 'ȋ',
- 'Ȍ' => 'Ȍ',
- 'ȍ' => 'ȍ',
- 'Ȏ' => 'Ȏ',
- 'ȏ' => 'ȏ',
- 'Ȑ' => 'Ȑ',
- 'ȑ' => 'ȑ',
- 'Ȓ' => 'Ȓ',
- 'ȓ' => 'ȓ',
- 'Ȕ' => 'Ȕ',
- 'ȕ' => 'ȕ',
- 'Ȗ' => 'Ȗ',
- 'ȗ' => 'ȗ',
- 'Ș' => 'Ș',
- 'ș' => 'ș',
- 'Ț' => 'Ț',
- 'ț' => 'ț',
- 'Ȟ' => 'Ȟ',
- 'ȟ' => 'ȟ',
- 'Ȧ' => 'Ȧ',
- 'ȧ' => 'ȧ',
- 'Ȩ' => 'Ȩ',
- 'ȩ' => 'ȩ',
- 'Ȫ' => 'Ȫ',
- 'ȫ' => 'ȫ',
- 'Ȭ' => 'Ȭ',
- 'ȭ' => 'ȭ',
- 'Ȯ' => 'Ȯ',
- 'ȯ' => 'ȯ',
- 'Ȱ' => 'Ȱ',
- 'ȱ' => 'ȱ',
- 'Ȳ' => 'Ȳ',
- 'ȳ' => 'ȳ',
- '̀' => '̀',
- '́' => '́',
- '̓' => '̓',
- '̈́' => '̈́',
- 'ʹ' => 'ʹ',
- ';' => ';',
- '΅' => '΅',
- 'Ά' => 'Ά',
- '·' => '·',
- 'Έ' => 'Έ',
- 'Ή' => 'Ή',
- 'Ί' => 'Ί',
- 'Ό' => 'Ό',
- 'Ύ' => 'Ύ',
- 'Ώ' => 'Ώ',
- 'ΐ' => 'ΐ',
- 'Ϊ' => 'Ϊ',
- 'Ϋ' => 'Ϋ',
- 'ά' => 'ά',
- 'έ' => 'έ',
- 'ή' => 'ή',
- 'ί' => 'ί',
- 'ΰ' => 'ΰ',
- 'ϊ' => 'ϊ',
- 'ϋ' => 'ϋ',
- 'ό' => 'ό',
- 'ύ' => 'ύ',
- 'ώ' => 'ώ',
- 'ϓ' => 'ϓ',
- 'ϔ' => 'ϔ',
- 'Ѐ' => 'Ѐ',
- 'Ё' => 'Ё',
- 'Ѓ' => 'Ѓ',
- 'Ї' => 'Ї',
- 'Ќ' => 'Ќ',
- 'Ѝ' => 'Ѝ',
- 'Ў' => 'Ў',
- 'Й' => 'Й',
- 'й' => 'й',
- 'ѐ' => 'ѐ',
- 'ё' => 'ё',
- 'ѓ' => 'ѓ',
- 'ї' => 'ї',
- 'ќ' => 'ќ',
- 'ѝ' => 'ѝ',
- 'ў' => 'ў',
- 'Ѷ' => 'Ѷ',
- 'ѷ' => 'ѷ',
- 'Ӂ' => 'Ӂ',
- 'ӂ' => 'ӂ',
- 'Ӑ' => 'Ӑ',
- 'ӑ' => 'ӑ',
- 'Ӓ' => 'Ӓ',
- 'ӓ' => 'ӓ',
- 'Ӗ' => 'Ӗ',
- 'ӗ' => 'ӗ',
- 'Ӛ' => 'Ӛ',
- 'ӛ' => 'ӛ',
- 'Ӝ' => 'Ӝ',
- 'ӝ' => 'ӝ',
- 'Ӟ' => 'Ӟ',
- 'ӟ' => 'ӟ',
- 'Ӣ' => 'Ӣ',
- 'ӣ' => 'ӣ',
- 'Ӥ' => 'Ӥ',
- 'ӥ' => 'ӥ',
- 'Ӧ' => 'Ӧ',
- 'ӧ' => 'ӧ',
- 'Ӫ' => 'Ӫ',
- 'ӫ' => 'ӫ',
- 'Ӭ' => 'Ӭ',
- 'ӭ' => 'ӭ',
- 'Ӯ' => 'Ӯ',
- 'ӯ' => 'ӯ',
- 'Ӱ' => 'Ӱ',
- 'ӱ' => 'ӱ',
- 'Ӳ' => 'Ӳ',
- 'ӳ' => 'ӳ',
- 'Ӵ' => 'Ӵ',
- 'ӵ' => 'ӵ',
- 'Ӹ' => 'Ӹ',
- 'ӹ' => 'ӹ',
- 'آ' => 'آ',
- 'أ' => 'أ',
- 'ؤ' => 'ؤ',
- 'إ' => 'إ',
- 'ئ' => 'ئ',
- 'ۀ' => 'ۀ',
- 'ۂ' => 'ۂ',
- 'ۓ' => 'ۓ',
- 'ऩ' => 'ऩ',
- 'ऱ' => 'ऱ',
- 'ऴ' => 'ऴ',
- 'क़' => 'क़',
- 'ख़' => 'ख़',
- 'ग़' => 'ग़',
- 'ज़' => 'ज़',
- 'ड़' => 'ड़',
- 'ढ़' => 'ढ़',
- 'फ़' => 'फ़',
- 'य़' => 'य़',
- 'ো' => 'ো',
- 'ৌ' => 'ৌ',
- 'ড়' => 'ড়',
- 'ঢ়' => 'ঢ়',
- 'য়' => 'য়',
- 'ਲ਼' => 'ਲ਼',
- 'ਸ਼' => 'ਸ਼',
- 'ਖ਼' => 'ਖ਼',
- 'ਗ਼' => 'ਗ਼',
- 'ਜ਼' => 'ਜ਼',
- 'ਫ਼' => 'ਫ਼',
- 'ୈ' => 'ୈ',
- 'ୋ' => 'ୋ',
- 'ୌ' => 'ୌ',
- 'ଡ଼' => 'ଡ଼',
- 'ଢ଼' => 'ଢ଼',
- 'ஔ' => 'ஔ',
- 'ொ' => 'ொ',
- 'ோ' => 'ோ',
- 'ௌ' => 'ௌ',
- 'ై' => 'ై',
- 'ೀ' => 'ೀ',
- 'ೇ' => 'ೇ',
- 'ೈ' => 'ೈ',
- 'ೊ' => 'ೊ',
- 'ೋ' => 'ೋ',
- 'ൊ' => 'ൊ',
- 'ോ' => 'ോ',
- 'ൌ' => 'ൌ',
- 'ේ' => 'ේ',
- 'ො' => 'ො',
- 'ෝ' => 'ෝ',
- 'ෞ' => 'ෞ',
- 'གྷ' => 'གྷ',
- 'ཌྷ' => 'ཌྷ',
- 'དྷ' => 'དྷ',
- 'བྷ' => 'བྷ',
- 'ཛྷ' => 'ཛྷ',
- 'ཀྵ' => 'ཀྵ',
- 'ཱི' => 'ཱི',
- 'ཱུ' => 'ཱུ',
- 'ྲྀ' => 'ྲྀ',
- 'ླྀ' => 'ླྀ',
- 'ཱྀ' => 'ཱྀ',
- 'ྒྷ' => 'ྒྷ',
- 'ྜྷ' => 'ྜྷ',
- 'ྡྷ' => 'ྡྷ',
- 'ྦྷ' => 'ྦྷ',
- 'ྫྷ' => 'ྫྷ',
- 'ྐྵ' => 'ྐྵ',
- 'ဦ' => 'ဦ',
- 'ᬆ' => 'ᬆ',
- 'ᬈ' => 'ᬈ',
- 'ᬊ' => 'ᬊ',
- 'ᬌ' => 'ᬌ',
- 'ᬎ' => 'ᬎ',
- 'ᬒ' => 'ᬒ',
- 'ᬻ' => 'ᬻ',
- 'ᬽ' => 'ᬽ',
- 'ᭀ' => 'ᭀ',
- 'ᭁ' => 'ᭁ',
- 'ᭃ' => 'ᭃ',
- 'Ḁ' => 'Ḁ',
- 'ḁ' => 'ḁ',
- 'Ḃ' => 'Ḃ',
- 'ḃ' => 'ḃ',
- 'Ḅ' => 'Ḅ',
- 'ḅ' => 'ḅ',
- 'Ḇ' => 'Ḇ',
- 'ḇ' => 'ḇ',
- 'Ḉ' => 'Ḉ',
- 'ḉ' => 'ḉ',
- 'Ḋ' => 'Ḋ',
- 'ḋ' => 'ḋ',
- 'Ḍ' => 'Ḍ',
- 'ḍ' => 'ḍ',
- 'Ḏ' => 'Ḏ',
- 'ḏ' => 'ḏ',
- 'Ḑ' => 'Ḑ',
- 'ḑ' => 'ḑ',
- 'Ḓ' => 'Ḓ',
- 'ḓ' => 'ḓ',
- 'Ḕ' => 'Ḕ',
- 'ḕ' => 'ḕ',
- 'Ḗ' => 'Ḗ',
- 'ḗ' => 'ḗ',
- 'Ḙ' => 'Ḙ',
- 'ḙ' => 'ḙ',
- 'Ḛ' => 'Ḛ',
- 'ḛ' => 'ḛ',
- 'Ḝ' => 'Ḝ',
- 'ḝ' => 'ḝ',
- 'Ḟ' => 'Ḟ',
- 'ḟ' => 'ḟ',
- 'Ḡ' => 'Ḡ',
- 'ḡ' => 'ḡ',
- 'Ḣ' => 'Ḣ',
- 'ḣ' => 'ḣ',
- 'Ḥ' => 'Ḥ',
- 'ḥ' => 'ḥ',
- 'Ḧ' => 'Ḧ',
- 'ḧ' => 'ḧ',
- 'Ḩ' => 'Ḩ',
- 'ḩ' => 'ḩ',
- 'Ḫ' => 'Ḫ',
- 'ḫ' => 'ḫ',
- 'Ḭ' => 'Ḭ',
- 'ḭ' => 'ḭ',
- 'Ḯ' => 'Ḯ',
- 'ḯ' => 'ḯ',
- 'Ḱ' => 'Ḱ',
- 'ḱ' => 'ḱ',
- 'Ḳ' => 'Ḳ',
- 'ḳ' => 'ḳ',
- 'Ḵ' => 'Ḵ',
- 'ḵ' => 'ḵ',
- 'Ḷ' => 'Ḷ',
- 'ḷ' => 'ḷ',
- 'Ḹ' => 'Ḹ',
- 'ḹ' => 'ḹ',
- 'Ḻ' => 'Ḻ',
- 'ḻ' => 'ḻ',
- 'Ḽ' => 'Ḽ',
- 'ḽ' => 'ḽ',
- 'Ḿ' => 'Ḿ',
- 'ḿ' => 'ḿ',
- 'Ṁ' => 'Ṁ',
- 'ṁ' => 'ṁ',
- 'Ṃ' => 'Ṃ',
- 'ṃ' => 'ṃ',
- 'Ṅ' => 'Ṅ',
- 'ṅ' => 'ṅ',
- 'Ṇ' => 'Ṇ',
- 'ṇ' => 'ṇ',
- 'Ṉ' => 'Ṉ',
- 'ṉ' => 'ṉ',
- 'Ṋ' => 'Ṋ',
- 'ṋ' => 'ṋ',
- 'Ṍ' => 'Ṍ',
- 'ṍ' => 'ṍ',
- 'Ṏ' => 'Ṏ',
- 'ṏ' => 'ṏ',
- 'Ṑ' => 'Ṑ',
- 'ṑ' => 'ṑ',
- 'Ṓ' => 'Ṓ',
- 'ṓ' => 'ṓ',
- 'Ṕ' => 'Ṕ',
- 'ṕ' => 'ṕ',
- 'Ṗ' => 'Ṗ',
- 'ṗ' => 'ṗ',
- 'Ṙ' => 'Ṙ',
- 'ṙ' => 'ṙ',
- 'Ṛ' => 'Ṛ',
- 'ṛ' => 'ṛ',
- 'Ṝ' => 'Ṝ',
- 'ṝ' => 'ṝ',
- 'Ṟ' => 'Ṟ',
- 'ṟ' => 'ṟ',
- 'Ṡ' => 'Ṡ',
- 'ṡ' => 'ṡ',
- 'Ṣ' => 'Ṣ',
- 'ṣ' => 'ṣ',
- 'Ṥ' => 'Ṥ',
- 'ṥ' => 'ṥ',
- 'Ṧ' => 'Ṧ',
- 'ṧ' => 'ṧ',
- 'Ṩ' => 'Ṩ',
- 'ṩ' => 'ṩ',
- 'Ṫ' => 'Ṫ',
- 'ṫ' => 'ṫ',
- 'Ṭ' => 'Ṭ',
- 'ṭ' => 'ṭ',
- 'Ṯ' => 'Ṯ',
- 'ṯ' => 'ṯ',
- 'Ṱ' => 'Ṱ',
- 'ṱ' => 'ṱ',
- 'Ṳ' => 'Ṳ',
- 'ṳ' => 'ṳ',
- 'Ṵ' => 'Ṵ',
- 'ṵ' => 'ṵ',
- 'Ṷ' => 'Ṷ',
- 'ṷ' => 'ṷ',
- 'Ṹ' => 'Ṹ',
- 'ṹ' => 'ṹ',
- 'Ṻ' => 'Ṻ',
- 'ṻ' => 'ṻ',
- 'Ṽ' => 'Ṽ',
- 'ṽ' => 'ṽ',
- 'Ṿ' => 'Ṿ',
- 'ṿ' => 'ṿ',
- 'Ẁ' => 'Ẁ',
- 'ẁ' => 'ẁ',
- 'Ẃ' => 'Ẃ',
- 'ẃ' => 'ẃ',
- 'Ẅ' => 'Ẅ',
- 'ẅ' => 'ẅ',
- 'Ẇ' => 'Ẇ',
- 'ẇ' => 'ẇ',
- 'Ẉ' => 'Ẉ',
- 'ẉ' => 'ẉ',
- 'Ẋ' => 'Ẋ',
- 'ẋ' => 'ẋ',
- 'Ẍ' => 'Ẍ',
- 'ẍ' => 'ẍ',
- 'Ẏ' => 'Ẏ',
- 'ẏ' => 'ẏ',
- 'Ẑ' => 'Ẑ',
- 'ẑ' => 'ẑ',
- 'Ẓ' => 'Ẓ',
- 'ẓ' => 'ẓ',
- 'Ẕ' => 'Ẕ',
- 'ẕ' => 'ẕ',
- 'ẖ' => 'ẖ',
- 'ẗ' => 'ẗ',
- 'ẘ' => 'ẘ',
- 'ẙ' => 'ẙ',
- 'ẛ' => 'ẛ',
- 'Ạ' => 'Ạ',
- 'ạ' => 'ạ',
- 'Ả' => 'Ả',
- 'ả' => 'ả',
- 'Ấ' => 'Ấ',
- 'ấ' => 'ấ',
- 'Ầ' => 'Ầ',
- 'ầ' => 'ầ',
- 'Ẩ' => 'Ẩ',
- 'ẩ' => 'ẩ',
- 'Ẫ' => 'Ẫ',
- 'ẫ' => 'ẫ',
- 'Ậ' => 'Ậ',
- 'ậ' => 'ậ',
- 'Ắ' => 'Ắ',
- 'ắ' => 'ắ',
- 'Ằ' => 'Ằ',
- 'ằ' => 'ằ',
- 'Ẳ' => 'Ẳ',
- 'ẳ' => 'ẳ',
- 'Ẵ' => 'Ẵ',
- 'ẵ' => 'ẵ',
- 'Ặ' => 'Ặ',
- 'ặ' => 'ặ',
- 'Ẹ' => 'Ẹ',
- 'ẹ' => 'ẹ',
- 'Ẻ' => 'Ẻ',
- 'ẻ' => 'ẻ',
- 'Ẽ' => 'Ẽ',
- 'ẽ' => 'ẽ',
- 'Ế' => 'Ế',
- 'ế' => 'ế',
- 'Ề' => 'Ề',
- 'ề' => 'ề',
- 'Ể' => 'Ể',
- 'ể' => 'ể',
- 'Ễ' => 'Ễ',
- 'ễ' => 'ễ',
- 'Ệ' => 'Ệ',
- 'ệ' => 'ệ',
- 'Ỉ' => 'Ỉ',
- 'ỉ' => 'ỉ',
- 'Ị' => 'Ị',
- 'ị' => 'ị',
- 'Ọ' => 'Ọ',
- 'ọ' => 'ọ',
- 'Ỏ' => 'Ỏ',
- 'ỏ' => 'ỏ',
- 'Ố' => 'Ố',
- 'ố' => 'ố',
- 'Ồ' => 'Ồ',
- 'ồ' => 'ồ',
- 'Ổ' => 'Ổ',
- 'ổ' => 'ổ',
- 'Ỗ' => 'Ỗ',
- 'ỗ' => 'ỗ',
- 'Ộ' => 'Ộ',
- 'ộ' => 'ộ',
- 'Ớ' => 'Ớ',
- 'ớ' => 'ớ',
- 'Ờ' => 'Ờ',
- 'ờ' => 'ờ',
- 'Ở' => 'Ở',
- 'ở' => 'ở',
- 'Ỡ' => 'Ỡ',
- 'ỡ' => 'ỡ',
- 'Ợ' => 'Ợ',
- 'ợ' => 'ợ',
- 'Ụ' => 'Ụ',
- 'ụ' => 'ụ',
- 'Ủ' => 'Ủ',
- 'ủ' => 'ủ',
- 'Ứ' => 'Ứ',
- 'ứ' => 'ứ',
- 'Ừ' => 'Ừ',
- 'ừ' => 'ừ',
- 'Ử' => 'Ử',
- 'ử' => 'ử',
- 'Ữ' => 'Ữ',
- 'ữ' => 'ữ',
- 'Ự' => 'Ự',
- 'ự' => 'ự',
- 'Ỳ' => 'Ỳ',
- 'ỳ' => 'ỳ',
- 'Ỵ' => 'Ỵ',
- 'ỵ' => 'ỵ',
- 'Ỷ' => 'Ỷ',
- 'ỷ' => 'ỷ',
- 'Ỹ' => 'Ỹ',
- 'ỹ' => 'ỹ',
- 'ἀ' => 'ἀ',
- 'ἁ' => 'ἁ',
- 'ἂ' => 'ἂ',
- 'ἃ' => 'ἃ',
- 'ἄ' => 'ἄ',
- 'ἅ' => 'ἅ',
- 'ἆ' => 'ἆ',
- 'ἇ' => 'ἇ',
- 'Ἀ' => 'Ἀ',
- 'Ἁ' => 'Ἁ',
- 'Ἂ' => 'Ἂ',
- 'Ἃ' => 'Ἃ',
- 'Ἄ' => 'Ἄ',
- 'Ἅ' => 'Ἅ',
- 'Ἆ' => 'Ἆ',
- 'Ἇ' => 'Ἇ',
- 'ἐ' => 'ἐ',
- 'ἑ' => 'ἑ',
- 'ἒ' => 'ἒ',
- 'ἓ' => 'ἓ',
- 'ἔ' => 'ἔ',
- 'ἕ' => 'ἕ',
- 'Ἐ' => 'Ἐ',
- 'Ἑ' => 'Ἑ',
- 'Ἒ' => 'Ἒ',
- 'Ἓ' => 'Ἓ',
- 'Ἔ' => 'Ἔ',
- 'Ἕ' => 'Ἕ',
- 'ἠ' => 'ἠ',
- 'ἡ' => 'ἡ',
- 'ἢ' => 'ἢ',
- 'ἣ' => 'ἣ',
- 'ἤ' => 'ἤ',
- 'ἥ' => 'ἥ',
- 'ἦ' => 'ἦ',
- 'ἧ' => 'ἧ',
- 'Ἠ' => 'Ἠ',
- 'Ἡ' => 'Ἡ',
- 'Ἢ' => 'Ἢ',
- 'Ἣ' => 'Ἣ',
- 'Ἤ' => 'Ἤ',
- 'Ἥ' => 'Ἥ',
- 'Ἦ' => 'Ἦ',
- 'Ἧ' => 'Ἧ',
- 'ἰ' => 'ἰ',
- 'ἱ' => 'ἱ',
- 'ἲ' => 'ἲ',
- 'ἳ' => 'ἳ',
- 'ἴ' => 'ἴ',
- 'ἵ' => 'ἵ',
- 'ἶ' => 'ἶ',
- 'ἷ' => 'ἷ',
- 'Ἰ' => 'Ἰ',
- 'Ἱ' => 'Ἱ',
- 'Ἲ' => 'Ἲ',
- 'Ἳ' => 'Ἳ',
- 'Ἴ' => 'Ἴ',
- 'Ἵ' => 'Ἵ',
- 'Ἶ' => 'Ἶ',
- 'Ἷ' => 'Ἷ',
- 'ὀ' => 'ὀ',
- 'ὁ' => 'ὁ',
- 'ὂ' => 'ὂ',
- 'ὃ' => 'ὃ',
- 'ὄ' => 'ὄ',
- 'ὅ' => 'ὅ',
- 'Ὀ' => 'Ὀ',
- 'Ὁ' => 'Ὁ',
- 'Ὂ' => 'Ὂ',
- 'Ὃ' => 'Ὃ',
- 'Ὄ' => 'Ὄ',
- 'Ὅ' => 'Ὅ',
- 'ὐ' => 'ὐ',
- 'ὑ' => 'ὑ',
- 'ὒ' => 'ὒ',
- 'ὓ' => 'ὓ',
- 'ὔ' => 'ὔ',
- 'ὕ' => 'ὕ',
- 'ὖ' => 'ὖ',
- 'ὗ' => 'ὗ',
- 'Ὑ' => 'Ὑ',
- 'Ὓ' => 'Ὓ',
- 'Ὕ' => 'Ὕ',
- 'Ὗ' => 'Ὗ',
- 'ὠ' => 'ὠ',
- 'ὡ' => 'ὡ',
- 'ὢ' => 'ὢ',
- 'ὣ' => 'ὣ',
- 'ὤ' => 'ὤ',
- 'ὥ' => 'ὥ',
- 'ὦ' => 'ὦ',
- 'ὧ' => 'ὧ',
- 'Ὠ' => 'Ὠ',
- 'Ὡ' => 'Ὡ',
- 'Ὢ' => 'Ὢ',
- 'Ὣ' => 'Ὣ',
- 'Ὤ' => 'Ὤ',
- 'Ὥ' => 'Ὥ',
- 'Ὦ' => 'Ὦ',
- 'Ὧ' => 'Ὧ',
- 'ὰ' => 'ὰ',
- 'ά' => 'ά',
- 'ὲ' => 'ὲ',
- 'έ' => 'έ',
- 'ὴ' => 'ὴ',
- 'ή' => 'ή',
- 'ὶ' => 'ὶ',
- 'ί' => 'ί',
- 'ὸ' => 'ὸ',
- 'ό' => 'ό',
- 'ὺ' => 'ὺ',
- 'ύ' => 'ύ',
- 'ὼ' => 'ὼ',
- 'ώ' => 'ώ',
- 'ᾀ' => 'ᾀ',
- 'ᾁ' => 'ᾁ',
- 'ᾂ' => 'ᾂ',
- 'ᾃ' => 'ᾃ',
- 'ᾄ' => 'ᾄ',
- 'ᾅ' => 'ᾅ',
- 'ᾆ' => 'ᾆ',
- 'ᾇ' => 'ᾇ',
- 'ᾈ' => 'ᾈ',
- 'ᾉ' => 'ᾉ',
- 'ᾊ' => 'ᾊ',
- 'ᾋ' => 'ᾋ',
- 'ᾌ' => 'ᾌ',
- 'ᾍ' => 'ᾍ',
- 'ᾎ' => 'ᾎ',
- 'ᾏ' => 'ᾏ',
- 'ᾐ' => 'ᾐ',
- 'ᾑ' => 'ᾑ',
- 'ᾒ' => 'ᾒ',
- 'ᾓ' => 'ᾓ',
- 'ᾔ' => 'ᾔ',
- 'ᾕ' => 'ᾕ',
- 'ᾖ' => 'ᾖ',
- 'ᾗ' => 'ᾗ',
- 'ᾘ' => 'ᾘ',
- 'ᾙ' => 'ᾙ',
- 'ᾚ' => 'ᾚ',
- 'ᾛ' => 'ᾛ',
- 'ᾜ' => 'ᾜ',
- 'ᾝ' => 'ᾝ',
- 'ᾞ' => 'ᾞ',
- 'ᾟ' => 'ᾟ',
- 'ᾠ' => 'ᾠ',
- 'ᾡ' => 'ᾡ',
- 'ᾢ' => 'ᾢ',
- 'ᾣ' => 'ᾣ',
- 'ᾤ' => 'ᾤ',
- 'ᾥ' => 'ᾥ',
- 'ᾦ' => 'ᾦ',
- 'ᾧ' => 'ᾧ',
- 'ᾨ' => 'ᾨ',
- 'ᾩ' => 'ᾩ',
- 'ᾪ' => 'ᾪ',
- 'ᾫ' => 'ᾫ',
- 'ᾬ' => 'ᾬ',
- 'ᾭ' => 'ᾭ',
- 'ᾮ' => 'ᾮ',
- 'ᾯ' => 'ᾯ',
- 'ᾰ' => 'ᾰ',
- 'ᾱ' => 'ᾱ',
- 'ᾲ' => 'ᾲ',
- 'ᾳ' => 'ᾳ',
- 'ᾴ' => 'ᾴ',
- 'ᾶ' => 'ᾶ',
- 'ᾷ' => 'ᾷ',
- 'Ᾰ' => 'Ᾰ',
- 'Ᾱ' => 'Ᾱ',
- 'Ὰ' => 'Ὰ',
- 'Ά' => 'Ά',
- 'ᾼ' => 'ᾼ',
- 'ι' => 'ι',
- '῁' => '῁',
- 'ῂ' => 'ῂ',
- 'ῃ' => 'ῃ',
- 'ῄ' => 'ῄ',
- 'ῆ' => 'ῆ',
- 'ῇ' => 'ῇ',
- 'Ὲ' => 'Ὲ',
- 'Έ' => 'Έ',
- 'Ὴ' => 'Ὴ',
- 'Ή' => 'Ή',
- 'ῌ' => 'ῌ',
- '῍' => '῍',
- '῎' => '῎',
- '῏' => '῏',
- 'ῐ' => 'ῐ',
- 'ῑ' => 'ῑ',
- 'ῒ' => 'ῒ',
- 'ΐ' => 'ΐ',
- 'ῖ' => 'ῖ',
- 'ῗ' => 'ῗ',
- 'Ῐ' => 'Ῐ',
- 'Ῑ' => 'Ῑ',
- 'Ὶ' => 'Ὶ',
- 'Ί' => 'Ί',
- '῝' => '῝',
- '῞' => '῞',
- '῟' => '῟',
- 'ῠ' => 'ῠ',
- 'ῡ' => 'ῡ',
- 'ῢ' => 'ῢ',
- 'ΰ' => 'ΰ',
- 'ῤ' => 'ῤ',
- 'ῥ' => 'ῥ',
- 'ῦ' => 'ῦ',
- 'ῧ' => 'ῧ',
- 'Ῠ' => 'Ῠ',
- 'Ῡ' => 'Ῡ',
- 'Ὺ' => 'Ὺ',
- 'Ύ' => 'Ύ',
- 'Ῥ' => 'Ῥ',
- '῭' => '῭',
- '΅' => '΅',
- '`' => '`',
- 'ῲ' => 'ῲ',
- 'ῳ' => 'ῳ',
- 'ῴ' => 'ῴ',
- 'ῶ' => 'ῶ',
- 'ῷ' => 'ῷ',
- 'Ὸ' => 'Ὸ',
- 'Ό' => 'Ό',
- 'Ὼ' => 'Ὼ',
- 'Ώ' => 'Ώ',
- 'ῼ' => 'ῼ',
- '´' => '´',
- ' ' => ' ',
- ' ' => ' ',
- 'Ω' => 'Ω',
- 'K' => 'K',
- 'Å' => 'Å',
- '↚' => '↚',
- '↛' => '↛',
- '↮' => '↮',
- '⇍' => '⇍',
- '⇎' => '⇎',
- '⇏' => '⇏',
- '∄' => '∄',
- '∉' => '∉',
- '∌' => '∌',
- '∤' => '∤',
- '∦' => '∦',
- '≁' => '≁',
- '≄' => '≄',
- '≇' => '≇',
- '≉' => '≉',
- '≠' => '≠',
- '≢' => '≢',
- '≭' => '≭',
- '≮' => '≮',
- '≯' => '≯',
- '≰' => '≰',
- '≱' => '≱',
- '≴' => '≴',
- '≵' => '≵',
- '≸' => '≸',
- '≹' => '≹',
- '⊀' => '⊀',
- '⊁' => '⊁',
- '⊄' => '⊄',
- '⊅' => '⊅',
- '⊈' => '⊈',
- '⊉' => '⊉',
- '⊬' => '⊬',
- '⊭' => '⊭',
- '⊮' => '⊮',
- '⊯' => '⊯',
- '⋠' => '⋠',
- '⋡' => '⋡',
- '⋢' => '⋢',
- '⋣' => '⋣',
- '⋪' => '⋪',
- '⋫' => '⋫',
- '⋬' => '⋬',
- '⋭' => '⋭',
- '〈' => '〈',
- '〉' => '〉',
- '⫝̸' => '⫝̸',
- 'が' => 'が',
- 'ぎ' => 'ぎ',
- 'ぐ' => 'ぐ',
- 'げ' => 'げ',
- 'ご' => 'ご',
- 'ざ' => 'ざ',
- 'じ' => 'じ',
- 'ず' => 'ず',
- 'ぜ' => 'ぜ',
- 'ぞ' => 'ぞ',
- 'だ' => 'だ',
- 'ぢ' => 'ぢ',
- 'づ' => 'づ',
- 'で' => 'で',
- 'ど' => 'ど',
- 'ば' => 'ば',
- 'ぱ' => 'ぱ',
- 'び' => 'び',
- 'ぴ' => 'ぴ',
- 'ぶ' => 'ぶ',
- 'ぷ' => 'ぷ',
- 'べ' => 'べ',
- 'ぺ' => 'ぺ',
- 'ぼ' => 'ぼ',
- 'ぽ' => 'ぽ',
- 'ゔ' => 'ゔ',
- 'ゞ' => 'ゞ',
- 'ガ' => 'ガ',
- 'ギ' => 'ギ',
- 'グ' => 'グ',
- 'ゲ' => 'ゲ',
- 'ゴ' => 'ゴ',
- 'ザ' => 'ザ',
- 'ジ' => 'ジ',
- 'ズ' => 'ズ',
- 'ゼ' => 'ゼ',
- 'ゾ' => 'ゾ',
- 'ダ' => 'ダ',
- 'ヂ' => 'ヂ',
- 'ヅ' => 'ヅ',
- 'デ' => 'デ',
- 'ド' => 'ド',
- 'バ' => 'バ',
- 'パ' => 'パ',
- 'ビ' => 'ビ',
- 'ピ' => 'ピ',
- 'ブ' => 'ブ',
- 'プ' => 'プ',
- 'ベ' => 'ベ',
- 'ペ' => 'ペ',
- 'ボ' => 'ボ',
- 'ポ' => 'ポ',
- 'ヴ' => 'ヴ',
- 'ヷ' => 'ヷ',
- 'ヸ' => 'ヸ',
- 'ヹ' => 'ヹ',
- 'ヺ' => 'ヺ',
- 'ヾ' => 'ヾ',
- '豈' => '豈',
- '更' => '更',
- '車' => '車',
- '賈' => '賈',
- '滑' => '滑',
- '串' => '串',
- '句' => '句',
- '龜' => '龜',
- '龜' => '龜',
- '契' => '契',
- '金' => '金',
- '喇' => '喇',
- '奈' => '奈',
- '懶' => '懶',
- '癩' => '癩',
- '羅' => '羅',
- '蘿' => '蘿',
- '螺' => '螺',
- '裸' => '裸',
- '邏' => '邏',
- '樂' => '樂',
- '洛' => '洛',
- '烙' => '烙',
- '珞' => '珞',
- '落' => '落',
- '酪' => '酪',
- '駱' => '駱',
- '亂' => '亂',
- '卵' => '卵',
- '欄' => '欄',
- '爛' => '爛',
- '蘭' => '蘭',
- '鸞' => '鸞',
- '嵐' => '嵐',
- '濫' => '濫',
- '藍' => '藍',
- '襤' => '襤',
- '拉' => '拉',
- '臘' => '臘',
- '蠟' => '蠟',
- '廊' => '廊',
- '朗' => '朗',
- '浪' => '浪',
- '狼' => '狼',
- '郎' => '郎',
- '來' => '來',
- '冷' => '冷',
- '勞' => '勞',
- '擄' => '擄',
- '櫓' => '櫓',
- '爐' => '爐',
- '盧' => '盧',
- '老' => '老',
- '蘆' => '蘆',
- '虜' => '虜',
- '路' => '路',
- '露' => '露',
- '魯' => '魯',
- '鷺' => '鷺',
- '碌' => '碌',
- '祿' => '祿',
- '綠' => '綠',
- '菉' => '菉',
- '錄' => '錄',
- '鹿' => '鹿',
- '論' => '論',
- '壟' => '壟',
- '弄' => '弄',
- '籠' => '籠',
- '聾' => '聾',
- '牢' => '牢',
- '磊' => '磊',
- '賂' => '賂',
- '雷' => '雷',
- '壘' => '壘',
- '屢' => '屢',
- '樓' => '樓',
- '淚' => '淚',
- '漏' => '漏',
- '累' => '累',
- '縷' => '縷',
- '陋' => '陋',
- '勒' => '勒',
- '肋' => '肋',
- '凜' => '凜',
- '凌' => '凌',
- '稜' => '稜',
- '綾' => '綾',
- '菱' => '菱',
- '陵' => '陵',
- '讀' => '讀',
- '拏' => '拏',
- '樂' => '樂',
- '諾' => '諾',
- '丹' => '丹',
- '寧' => '寧',
- '怒' => '怒',
- '率' => '率',
- '異' => '異',
- '北' => '北',
- '磻' => '磻',
- '便' => '便',
- '復' => '復',
- '不' => '不',
- '泌' => '泌',
- '數' => '數',
- '索' => '索',
- '參' => '參',
- '塞' => '塞',
- '省' => '省',
- '葉' => '葉',
- '說' => '說',
- '殺' => '殺',
- '辰' => '辰',
- '沈' => '沈',
- '拾' => '拾',
- '若' => '若',
- '掠' => '掠',
- '略' => '略',
- '亮' => '亮',
- '兩' => '兩',
- '凉' => '凉',
- '梁' => '梁',
- '糧' => '糧',
- '良' => '良',
- '諒' => '諒',
- '量' => '量',
- '勵' => '勵',
- '呂' => '呂',
- '女' => '女',
- '廬' => '廬',
- '旅' => '旅',
- '濾' => '濾',
- '礪' => '礪',
- '閭' => '閭',
- '驪' => '驪',
- '麗' => '麗',
- '黎' => '黎',
- '力' => '力',
- '曆' => '曆',
- '歷' => '歷',
- '轢' => '轢',
- '年' => '年',
- '憐' => '憐',
- '戀' => '戀',
- '撚' => '撚',
- '漣' => '漣',
- '煉' => '煉',
- '璉' => '璉',
- '秊' => '秊',
- '練' => '練',
- '聯' => '聯',
- '輦' => '輦',
- '蓮' => '蓮',
- '連' => '連',
- '鍊' => '鍊',
- '列' => '列',
- '劣' => '劣',
- '咽' => '咽',
- '烈' => '烈',
- '裂' => '裂',
- '說' => '說',
- '廉' => '廉',
- '念' => '念',
- '捻' => '捻',
- '殮' => '殮',
- '簾' => '簾',
- '獵' => '獵',
- '令' => '令',
- '囹' => '囹',
- '寧' => '寧',
- '嶺' => '嶺',
- '怜' => '怜',
- '玲' => '玲',
- '瑩' => '瑩',
- '羚' => '羚',
- '聆' => '聆',
- '鈴' => '鈴',
- '零' => '零',
- '靈' => '靈',
- '領' => '領',
- '例' => '例',
- '禮' => '禮',
- '醴' => '醴',
- '隸' => '隸',
- '惡' => '惡',
- '了' => '了',
- '僚' => '僚',
- '寮' => '寮',
- '尿' => '尿',
- '料' => '料',
- '樂' => '樂',
- '燎' => '燎',
- '療' => '療',
- '蓼' => '蓼',
- '遼' => '遼',
- '龍' => '龍',
- '暈' => '暈',
- '阮' => '阮',
- '劉' => '劉',
- '杻' => '杻',
- '柳' => '柳',
- '流' => '流',
- '溜' => '溜',
- '琉' => '琉',
- '留' => '留',
- '硫' => '硫',
- '紐' => '紐',
- '類' => '類',
- '六' => '六',
- '戮' => '戮',
- '陸' => '陸',
- '倫' => '倫',
- '崙' => '崙',
- '淪' => '淪',
- '輪' => '輪',
- '律' => '律',
- '慄' => '慄',
- '栗' => '栗',
- '率' => '率',
- '隆' => '隆',
- '利' => '利',
- '吏' => '吏',
- '履' => '履',
- '易' => '易',
- '李' => '李',
- '梨' => '梨',
- '泥' => '泥',
- '理' => '理',
- '痢' => '痢',
- '罹' => '罹',
- '裏' => '裏',
- '裡' => '裡',
- '里' => '里',
- '離' => '離',
- '匿' => '匿',
- '溺' => '溺',
- '吝' => '吝',
- '燐' => '燐',
- '璘' => '璘',
- '藺' => '藺',
- '隣' => '隣',
- '鱗' => '鱗',
- '麟' => '麟',
- '林' => '林',
- '淋' => '淋',
- '臨' => '臨',
- '立' => '立',
- '笠' => '笠',
- '粒' => '粒',
- '狀' => '狀',
- '炙' => '炙',
- '識' => '識',
- '什' => '什',
- '茶' => '茶',
- '刺' => '刺',
- '切' => '切',
- '度' => '度',
- '拓' => '拓',
- '糖' => '糖',
- '宅' => '宅',
- '洞' => '洞',
- '暴' => '暴',
- '輻' => '輻',
- '行' => '行',
- '降' => '降',
- '見' => '見',
- '廓' => '廓',
- '兀' => '兀',
- '嗀' => '嗀',
- '塚' => '塚',
- '晴' => '晴',
- '凞' => '凞',
- '猪' => '猪',
- '益' => '益',
- '礼' => '礼',
- '神' => '神',
- '祥' => '祥',
- '福' => '福',
- '靖' => '靖',
- '精' => '精',
- '羽' => '羽',
- '蘒' => '蘒',
- '諸' => '諸',
- '逸' => '逸',
- '都' => '都',
- '飯' => '飯',
- '飼' => '飼',
- '館' => '館',
- '鶴' => '鶴',
- '郞' => '郞',
- '隷' => '隷',
- '侮' => '侮',
- '僧' => '僧',
- '免' => '免',
- '勉' => '勉',
- '勤' => '勤',
- '卑' => '卑',
- '喝' => '喝',
- '嘆' => '嘆',
- '器' => '器',
- '塀' => '塀',
- '墨' => '墨',
- '層' => '層',
- '屮' => '屮',
- '悔' => '悔',
- '慨' => '慨',
- '憎' => '憎',
- '懲' => '懲',
- '敏' => '敏',
- '既' => '既',
- '暑' => '暑',
- '梅' => '梅',
- '海' => '海',
- '渚' => '渚',
- '漢' => '漢',
- '煮' => '煮',
- '爫' => '爫',
- '琢' => '琢',
- '碑' => '碑',
- '社' => '社',
- '祉' => '祉',
- '祈' => '祈',
- '祐' => '祐',
- '祖' => '祖',
- '祝' => '祝',
- '禍' => '禍',
- '禎' => '禎',
- '穀' => '穀',
- '突' => '突',
- '節' => '節',
- '練' => '練',
- '縉' => '縉',
- '繁' => '繁',
- '署' => '署',
- '者' => '者',
- '臭' => '臭',
- '艹' => '艹',
- '艹' => '艹',
- '著' => '著',
- '褐' => '褐',
- '視' => '視',
- '謁' => '謁',
- '謹' => '謹',
- '賓' => '賓',
- '贈' => '贈',
- '辶' => '辶',
- '逸' => '逸',
- '難' => '難',
- '響' => '響',
- '頻' => '頻',
- '恵' => '恵',
- '𤋮' => '𤋮',
- '舘' => '舘',
- '並' => '並',
- '况' => '况',
- '全' => '全',
- '侀' => '侀',
- '充' => '充',
- '冀' => '冀',
- '勇' => '勇',
- '勺' => '勺',
- '喝' => '喝',
- '啕' => '啕',
- '喙' => '喙',
- '嗢' => '嗢',
- '塚' => '塚',
- '墳' => '墳',
- '奄' => '奄',
- '奔' => '奔',
- '婢' => '婢',
- '嬨' => '嬨',
- '廒' => '廒',
- '廙' => '廙',
- '彩' => '彩',
- '徭' => '徭',
- '惘' => '惘',
- '慎' => '慎',
- '愈' => '愈',
- '憎' => '憎',
- '慠' => '慠',
- '懲' => '懲',
- '戴' => '戴',
- '揄' => '揄',
- '搜' => '搜',
- '摒' => '摒',
- '敖' => '敖',
- '晴' => '晴',
- '朗' => '朗',
- '望' => '望',
- '杖' => '杖',
- '歹' => '歹',
- '殺' => '殺',
- '流' => '流',
- '滛' => '滛',
- '滋' => '滋',
- '漢' => '漢',
- '瀞' => '瀞',
- '煮' => '煮',
- '瞧' => '瞧',
- '爵' => '爵',
- '犯' => '犯',
- '猪' => '猪',
- '瑱' => '瑱',
- '甆' => '甆',
- '画' => '画',
- '瘝' => '瘝',
- '瘟' => '瘟',
- '益' => '益',
- '盛' => '盛',
- '直' => '直',
- '睊' => '睊',
- '着' => '着',
- '磌' => '磌',
- '窱' => '窱',
- '節' => '節',
- '类' => '类',
- '絛' => '絛',
- '練' => '練',
- '缾' => '缾',
- '者' => '者',
- '荒' => '荒',
- '華' => '華',
- '蝹' => '蝹',
- '襁' => '襁',
- '覆' => '覆',
- '視' => '視',
- '調' => '調',
- '諸' => '諸',
- '請' => '請',
- '謁' => '謁',
- '諾' => '諾',
- '諭' => '諭',
- '謹' => '謹',
- '變' => '變',
- '贈' => '贈',
- '輸' => '輸',
- '遲' => '遲',
- '醙' => '醙',
- '鉶' => '鉶',
- '陼' => '陼',
- '難' => '難',
- '靖' => '靖',
- '韛' => '韛',
- '響' => '響',
- '頋' => '頋',
- '頻' => '頻',
- '鬒' => '鬒',
- '龜' => '龜',
- '𢡊' => '𢡊',
- '𢡄' => '𢡄',
- '𣏕' => '𣏕',
- '㮝' => '㮝',
- '䀘' => '䀘',
- '䀹' => '䀹',
- '𥉉' => '𥉉',
- '𥳐' => '𥳐',
- '𧻓' => '𧻓',
- '齃' => '齃',
- '龎' => '龎',
- 'יִ' => 'יִ',
- 'ײַ' => 'ײַ',
- 'שׁ' => 'שׁ',
- 'שׂ' => 'שׂ',
- 'שּׁ' => 'שּׁ',
- 'שּׂ' => 'שּׂ',
- 'אַ' => 'אַ',
- 'אָ' => 'אָ',
- 'אּ' => 'אּ',
- 'בּ' => 'בּ',
- 'גּ' => 'גּ',
- 'דּ' => 'דּ',
- 'הּ' => 'הּ',
- 'וּ' => 'וּ',
- 'זּ' => 'זּ',
- 'טּ' => 'טּ',
- 'יּ' => 'יּ',
- 'ךּ' => 'ךּ',
- 'כּ' => 'כּ',
- 'לּ' => 'לּ',
- 'מּ' => 'מּ',
- 'נּ' => 'נּ',
- 'סּ' => 'סּ',
- 'ףּ' => 'ףּ',
- 'פּ' => 'פּ',
- 'צּ' => 'צּ',
- 'קּ' => 'קּ',
- 'רּ' => 'רּ',
- 'שּ' => 'שּ',
- 'תּ' => 'תּ',
- 'וֹ' => 'וֹ',
- 'בֿ' => 'בֿ',
- 'כֿ' => 'כֿ',
- 'פֿ' => 'פֿ',
- '𑂚' => '𑂚',
- '𑂜' => '𑂜',
- '𑂫' => '𑂫',
- '𑄮' => '𑄮',
- '𑄯' => '𑄯',
- '𑍋' => '𑍋',
- '𑍌' => '𑍌',
- '𑒻' => '𑒻',
- '𑒼' => '𑒼',
- '𑒾' => '𑒾',
- '𑖺' => '𑖺',
- '𑖻' => '𑖻',
- '𑤸' => '𑤸',
- '𝅗𝅥' => '𝅗𝅥',
- '𝅘𝅥' => '𝅘𝅥',
- '𝅘𝅥𝅮' => '𝅘𝅥𝅮',
- '𝅘𝅥𝅯' => '𝅘𝅥𝅯',
- '𝅘𝅥𝅰' => '𝅘𝅥𝅰',
- '𝅘𝅥𝅱' => '𝅘𝅥𝅱',
- '𝅘𝅥𝅲' => '𝅘𝅥𝅲',
- '𝆹𝅥' => '𝆹𝅥',
- '𝆺𝅥' => '𝆺𝅥',
- '𝆹𝅥𝅮' => '𝆹𝅥𝅮',
- '𝆺𝅥𝅮' => '𝆺𝅥𝅮',
- '𝆹𝅥𝅯' => '𝆹𝅥𝅯',
- '𝆺𝅥𝅯' => '𝆺𝅥𝅯',
- '丽' => '丽',
- '丸' => '丸',
- '乁' => '乁',
- '𠄢' => '𠄢',
- '你' => '你',
- '侮' => '侮',
- '侻' => '侻',
- '倂' => '倂',
- '偺' => '偺',
- '備' => '備',
- '僧' => '僧',
- '像' => '像',
- '㒞' => '㒞',
- '𠘺' => '𠘺',
- '免' => '免',
- '兔' => '兔',
- '兤' => '兤',
- '具' => '具',
- '𠔜' => '𠔜',
- '㒹' => '㒹',
- '內' => '內',
- '再' => '再',
- '𠕋' => '𠕋',
- '冗' => '冗',
- '冤' => '冤',
- '仌' => '仌',
- '冬' => '冬',
- '况' => '况',
- '𩇟' => '𩇟',
- '凵' => '凵',
- '刃' => '刃',
- '㓟' => '㓟',
- '刻' => '刻',
- '剆' => '剆',
- '割' => '割',
- '剷' => '剷',
- '㔕' => '㔕',
- '勇' => '勇',
- '勉' => '勉',
- '勤' => '勤',
- '勺' => '勺',
- '包' => '包',
- '匆' => '匆',
- '北' => '北',
- '卉' => '卉',
- '卑' => '卑',
- '博' => '博',
- '即' => '即',
- '卽' => '卽',
- '卿' => '卿',
- '卿' => '卿',
- '卿' => '卿',
- '𠨬' => '𠨬',
- '灰' => '灰',
- '及' => '及',
- '叟' => '叟',
- '𠭣' => '𠭣',
- '叫' => '叫',
- '叱' => '叱',
- '吆' => '吆',
- '咞' => '咞',
- '吸' => '吸',
- '呈' => '呈',
- '周' => '周',
- '咢' => '咢',
- '哶' => '哶',
- '唐' => '唐',
- '啓' => '啓',
- '啣' => '啣',
- '善' => '善',
- '善' => '善',
- '喙' => '喙',
- '喫' => '喫',
- '喳' => '喳',
- '嗂' => '嗂',
- '圖' => '圖',
- '嘆' => '嘆',
- '圗' => '圗',
- '噑' => '噑',
- '噴' => '噴',
- '切' => '切',
- '壮' => '壮',
- '城' => '城',
- '埴' => '埴',
- '堍' => '堍',
- '型' => '型',
- '堲' => '堲',
- '報' => '報',
- '墬' => '墬',
- '𡓤' => '𡓤',
- '売' => '売',
- '壷' => '壷',
- '夆' => '夆',
- '多' => '多',
- '夢' => '夢',
- '奢' => '奢',
- '𡚨' => '𡚨',
- '𡛪' => '𡛪',
- '姬' => '姬',
- '娛' => '娛',
- '娧' => '娧',
- '姘' => '姘',
- '婦' => '婦',
- '㛮' => '㛮',
- '㛼' => '㛼',
- '嬈' => '嬈',
- '嬾' => '嬾',
- '嬾' => '嬾',
- '𡧈' => '𡧈',
- '寃' => '寃',
- '寘' => '寘',
- '寧' => '寧',
- '寳' => '寳',
- '𡬘' => '𡬘',
- '寿' => '寿',
- '将' => '将',
- '当' => '当',
- '尢' => '尢',
- '㞁' => '㞁',
- '屠' => '屠',
- '屮' => '屮',
- '峀' => '峀',
- '岍' => '岍',
- '𡷤' => '𡷤',
- '嵃' => '嵃',
- '𡷦' => '𡷦',
- '嵮' => '嵮',
- '嵫' => '嵫',
- '嵼' => '嵼',
- '巡' => '巡',
- '巢' => '巢',
- '㠯' => '㠯',
- '巽' => '巽',
- '帨' => '帨',
- '帽' => '帽',
- '幩' => '幩',
- '㡢' => '㡢',
- '𢆃' => '𢆃',
- '㡼' => '㡼',
- '庰' => '庰',
- '庳' => '庳',
- '庶' => '庶',
- '廊' => '廊',
- '𪎒' => '𪎒',
- '廾' => '廾',
- '𢌱' => '𢌱',
- '𢌱' => '𢌱',
- '舁' => '舁',
- '弢' => '弢',
- '弢' => '弢',
- '㣇' => '㣇',
- '𣊸' => '𣊸',
- '𦇚' => '𦇚',
- '形' => '形',
- '彫' => '彫',
- '㣣' => '㣣',
- '徚' => '徚',
- '忍' => '忍',
- '志' => '志',
- '忹' => '忹',
- '悁' => '悁',
- '㤺' => '㤺',
- '㤜' => '㤜',
- '悔' => '悔',
- '𢛔' => '𢛔',
- '惇' => '惇',
- '慈' => '慈',
- '慌' => '慌',
- '慎' => '慎',
- '慌' => '慌',
- '慺' => '慺',
- '憎' => '憎',
- '憲' => '憲',
- '憤' => '憤',
- '憯' => '憯',
- '懞' => '懞',
- '懲' => '懲',
- '懶' => '懶',
- '成' => '成',
- '戛' => '戛',
- '扝' => '扝',
- '抱' => '抱',
- '拔' => '拔',
- '捐' => '捐',
- '𢬌' => '𢬌',
- '挽' => '挽',
- '拼' => '拼',
- '捨' => '捨',
- '掃' => '掃',
- '揤' => '揤',
- '𢯱' => '𢯱',
- '搢' => '搢',
- '揅' => '揅',
- '掩' => '掩',
- '㨮' => '㨮',
- '摩' => '摩',
- '摾' => '摾',
- '撝' => '撝',
- '摷' => '摷',
- '㩬' => '㩬',
- '敏' => '敏',
- '敬' => '敬',
- '𣀊' => '𣀊',
- '旣' => '旣',
- '書' => '書',
- '晉' => '晉',
- '㬙' => '㬙',
- '暑' => '暑',
- '㬈' => '㬈',
- '㫤' => '㫤',
- '冒' => '冒',
- '冕' => '冕',
- '最' => '最',
- '暜' => '暜',
- '肭' => '肭',
- '䏙' => '䏙',
- '朗' => '朗',
- '望' => '望',
- '朡' => '朡',
- '杞' => '杞',
- '杓' => '杓',
- '𣏃' => '𣏃',
- '㭉' => '㭉',
- '柺' => '柺',
- '枅' => '枅',
- '桒' => '桒',
- '梅' => '梅',
- '𣑭' => '𣑭',
- '梎' => '梎',
- '栟' => '栟',
- '椔' => '椔',
- '㮝' => '㮝',
- '楂' => '楂',
- '榣' => '榣',
- '槪' => '槪',
- '檨' => '檨',
- '𣚣' => '𣚣',
- '櫛' => '櫛',
- '㰘' => '㰘',
- '次' => '次',
- '𣢧' => '𣢧',
- '歔' => '歔',
- '㱎' => '㱎',
- '歲' => '歲',
- '殟' => '殟',
- '殺' => '殺',
- '殻' => '殻',
- '𣪍' => '𣪍',
- '𡴋' => '𡴋',
- '𣫺' => '𣫺',
- '汎' => '汎',
- '𣲼' => '𣲼',
- '沿' => '沿',
- '泍' => '泍',
- '汧' => '汧',
- '洖' => '洖',
- '派' => '派',
- '海' => '海',
- '流' => '流',
- '浩' => '浩',
- '浸' => '浸',
- '涅' => '涅',
- '𣴞' => '𣴞',
- '洴' => '洴',
- '港' => '港',
- '湮' => '湮',
- '㴳' => '㴳',
- '滋' => '滋',
- '滇' => '滇',
- '𣻑' => '𣻑',
- '淹' => '淹',
- '潮' => '潮',
- '𣽞' => '𣽞',
- '𣾎' => '𣾎',
- '濆' => '濆',
- '瀹' => '瀹',
- '瀞' => '瀞',
- '瀛' => '瀛',
- '㶖' => '㶖',
- '灊' => '灊',
- '災' => '災',
- '灷' => '灷',
- '炭' => '炭',
- '𠔥' => '𠔥',
- '煅' => '煅',
- '𤉣' => '𤉣',
- '熜' => '熜',
- '𤎫' => '𤎫',
- '爨' => '爨',
- '爵' => '爵',
- '牐' => '牐',
- '𤘈' => '𤘈',
- '犀' => '犀',
- '犕' => '犕',
- '𤜵' => '𤜵',
- '𤠔' => '𤠔',
- '獺' => '獺',
- '王' => '王',
- '㺬' => '㺬',
- '玥' => '玥',
- '㺸' => '㺸',
- '㺸' => '㺸',
- '瑇' => '瑇',
- '瑜' => '瑜',
- '瑱' => '瑱',
- '璅' => '璅',
- '瓊' => '瓊',
- '㼛' => '㼛',
- '甤' => '甤',
- '𤰶' => '𤰶',
- '甾' => '甾',
- '𤲒' => '𤲒',
- '異' => '異',
- '𢆟' => '𢆟',
- '瘐' => '瘐',
- '𤾡' => '𤾡',
- '𤾸' => '𤾸',
- '𥁄' => '𥁄',
- '㿼' => '㿼',
- '䀈' => '䀈',
- '直' => '直',
- '𥃳' => '𥃳',
- '𥃲' => '𥃲',
- '𥄙' => '𥄙',
- '𥄳' => '𥄳',
- '眞' => '眞',
- '真' => '真',
- '真' => '真',
- '睊' => '睊',
- '䀹' => '䀹',
- '瞋' => '瞋',
- '䁆' => '䁆',
- '䂖' => '䂖',
- '𥐝' => '𥐝',
- '硎' => '硎',
- '碌' => '碌',
- '磌' => '磌',
- '䃣' => '䃣',
- '𥘦' => '𥘦',
- '祖' => '祖',
- '𥚚' => '𥚚',
- '𥛅' => '𥛅',
- '福' => '福',
- '秫' => '秫',
- '䄯' => '䄯',
- '穀' => '穀',
- '穊' => '穊',
- '穏' => '穏',
- '𥥼' => '𥥼',
- '𥪧' => '𥪧',
- '𥪧' => '𥪧',
- '竮' => '竮',
- '䈂' => '䈂',
- '𥮫' => '𥮫',
- '篆' => '篆',
- '築' => '築',
- '䈧' => '䈧',
- '𥲀' => '𥲀',
- '糒' => '糒',
- '䊠' => '䊠',
- '糨' => '糨',
- '糣' => '糣',
- '紀' => '紀',
- '𥾆' => '𥾆',
- '絣' => '絣',
- '䌁' => '䌁',
- '緇' => '緇',
- '縂' => '縂',
- '繅' => '繅',
- '䌴' => '䌴',
- '𦈨' => '𦈨',
- '𦉇' => '𦉇',
- '䍙' => '䍙',
- '𦋙' => '𦋙',
- '罺' => '罺',
- '𦌾' => '𦌾',
- '羕' => '羕',
- '翺' => '翺',
- '者' => '者',
- '𦓚' => '𦓚',
- '𦔣' => '𦔣',
- '聠' => '聠',
- '𦖨' => '𦖨',
- '聰' => '聰',
- '𣍟' => '𣍟',
- '䏕' => '䏕',
- '育' => '育',
- '脃' => '脃',
- '䐋' => '䐋',
- '脾' => '脾',
- '媵' => '媵',
- '𦞧' => '𦞧',
- '𦞵' => '𦞵',
- '𣎓' => '𣎓',
- '𣎜' => '𣎜',
- '舁' => '舁',
- '舄' => '舄',
- '辞' => '辞',
- '䑫' => '䑫',
- '芑' => '芑',
- '芋' => '芋',
- '芝' => '芝',
- '劳' => '劳',
- '花' => '花',
- '芳' => '芳',
- '芽' => '芽',
- '苦' => '苦',
- '𦬼' => '𦬼',
- '若' => '若',
- '茝' => '茝',
- '荣' => '荣',
- '莭' => '莭',
- '茣' => '茣',
- '莽' => '莽',
- '菧' => '菧',
- '著' => '著',
- '荓' => '荓',
- '菊' => '菊',
- '菌' => '菌',
- '菜' => '菜',
- '𦰶' => '𦰶',
- '𦵫' => '𦵫',
- '𦳕' => '𦳕',
- '䔫' => '䔫',
- '蓱' => '蓱',
- '蓳' => '蓳',
- '蔖' => '蔖',
- '𧏊' => '𧏊',
- '蕤' => '蕤',
- '𦼬' => '𦼬',
- '䕝' => '䕝',
- '䕡' => '䕡',
- '𦾱' => '𦾱',
- '𧃒' => '𧃒',
- '䕫' => '䕫',
- '虐' => '虐',
- '虜' => '虜',
- '虧' => '虧',
- '虩' => '虩',
- '蚩' => '蚩',
- '蚈' => '蚈',
- '蜎' => '蜎',
- '蛢' => '蛢',
- '蝹' => '蝹',
- '蜨' => '蜨',
- '蝫' => '蝫',
- '螆' => '螆',
- '䗗' => '䗗',
- '蟡' => '蟡',
- '蠁' => '蠁',
- '䗹' => '䗹',
- '衠' => '衠',
- '衣' => '衣',
- '𧙧' => '𧙧',
- '裗' => '裗',
- '裞' => '裞',
- '䘵' => '䘵',
- '裺' => '裺',
- '㒻' => '㒻',
- '𧢮' => '𧢮',
- '𧥦' => '𧥦',
- '䚾' => '䚾',
- '䛇' => '䛇',
- '誠' => '誠',
- '諭' => '諭',
- '變' => '變',
- '豕' => '豕',
- '𧲨' => '𧲨',
- '貫' => '貫',
- '賁' => '賁',
- '贛' => '贛',
- '起' => '起',
- '𧼯' => '𧼯',
- '𠠄' => '𠠄',
- '跋' => '跋',
- '趼' => '趼',
- '跰' => '跰',
- '𠣞' => '𠣞',
- '軔' => '軔',
- '輸' => '輸',
- '𨗒' => '𨗒',
- '𨗭' => '𨗭',
- '邔' => '邔',
- '郱' => '郱',
- '鄑' => '鄑',
- '𨜮' => '𨜮',
- '鄛' => '鄛',
- '鈸' => '鈸',
- '鋗' => '鋗',
- '鋘' => '鋘',
- '鉼' => '鉼',
- '鏹' => '鏹',
- '鐕' => '鐕',
- '𨯺' => '𨯺',
- '開' => '開',
- '䦕' => '䦕',
- '閷' => '閷',
- '𨵷' => '𨵷',
- '䧦' => '䧦',
- '雃' => '雃',
- '嶲' => '嶲',
- '霣' => '霣',
- '𩅅' => '𩅅',
- '𩈚' => '𩈚',
- '䩮' => '䩮',
- '䩶' => '䩶',
- '韠' => '韠',
- '𩐊' => '𩐊',
- '䪲' => '䪲',
- '𩒖' => '𩒖',
- '頋' => '頋',
- '頋' => '頋',
- '頩' => '頩',
- '𩖶' => '𩖶',
- '飢' => '飢',
- '䬳' => '䬳',
- '餩' => '餩',
- '馧' => '馧',
- '駂' => '駂',
- '駾' => '駾',
- '䯎' => '䯎',
- '𩬰' => '𩬰',
- '鬒' => '鬒',
- '鱀' => '鱀',
- '鳽' => '鳽',
- '䳎' => '䳎',
- '䳭' => '䳭',
- '鵧' => '鵧',
- '𪃎' => '𪃎',
- '䳸' => '䳸',
- '𪄅' => '𪄅',
- '𪈎' => '𪈎',
- '𪊑' => '𪊑',
- '麻' => '麻',
- '䵖' => '䵖',
- '黹' => '黹',
- '黾' => '黾',
- '鼅' => '鼅',
- '鼏' => '鼏',
- '鼖' => '鼖',
- '鼻' => '鼻',
- '𪘀' => '𪘀',
-);
diff --git a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php b/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php
deleted file mode 100644
index ec90f36..0000000
--- a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php
+++ /dev/null
@@ -1,876 +0,0 @@
-<?php
-
-return array (
- '̀' => 230,
- '́' => 230,
- '̂' => 230,
- '̃' => 230,
- '̄' => 230,
- '̅' => 230,
- '̆' => 230,
- '̇' => 230,
- '̈' => 230,
- '̉' => 230,
- '̊' => 230,
- '̋' => 230,
- '̌' => 230,
- '̍' => 230,
- '̎' => 230,
- '̏' => 230,
- '̐' => 230,
- '̑' => 230,
- '̒' => 230,
- '̓' => 230,
- '̔' => 230,
- '̕' => 232,
- '̖' => 220,
- '̗' => 220,
- '̘' => 220,
- '̙' => 220,
- '̚' => 232,
- '̛' => 216,
- '̜' => 220,
- '̝' => 220,
- '̞' => 220,
- '̟' => 220,
- '̠' => 220,
- '̡' => 202,
- '̢' => 202,
- '̣' => 220,
- '̤' => 220,
- '̥' => 220,
- '̦' => 220,
- '̧' => 202,
- '̨' => 202,
- '̩' => 220,
- '̪' => 220,
- '̫' => 220,
- '̬' => 220,
- '̭' => 220,
- '̮' => 220,
- '̯' => 220,
- '̰' => 220,
- '̱' => 220,
- '̲' => 220,
- '̳' => 220,
- '̴' => 1,
- '̵' => 1,
- '̶' => 1,
- '̷' => 1,
- '̸' => 1,
- '̹' => 220,
- '̺' => 220,
- '̻' => 220,
- '̼' => 220,
- '̽' => 230,
- '̾' => 230,
- '̿' => 230,
- '̀' => 230,
- '́' => 230,
- '͂' => 230,
- '̓' => 230,
- '̈́' => 230,
- 'ͅ' => 240,
- '͆' => 230,
- '͇' => 220,
- '͈' => 220,
- '͉' => 220,
- '͊' => 230,
- '͋' => 230,
- '͌' => 230,
- '͍' => 220,
- '͎' => 220,
- '͐' => 230,
- '͑' => 230,
- '͒' => 230,
- '͓' => 220,
- '͔' => 220,
- '͕' => 220,
- '͖' => 220,
- '͗' => 230,
- '͘' => 232,
- '͙' => 220,
- '͚' => 220,
- '͛' => 230,
- '͜' => 233,
- '͝' => 234,
- '͞' => 234,
- '͟' => 233,
- '͠' => 234,
- '͡' => 234,
- '͢' => 233,
- 'ͣ' => 230,
- 'ͤ' => 230,
- 'ͥ' => 230,
- 'ͦ' => 230,
- 'ͧ' => 230,
- 'ͨ' => 230,
- 'ͩ' => 230,
- 'ͪ' => 230,
- 'ͫ' => 230,
- 'ͬ' => 230,
- 'ͭ' => 230,
- 'ͮ' => 230,
- 'ͯ' => 230,
- '҃' => 230,
- '҄' => 230,
- '҅' => 230,
- '҆' => 230,
- '҇' => 230,
- '֑' => 220,
- '֒' => 230,
- '֓' => 230,
- '֔' => 230,
- '֕' => 230,
- '֖' => 220,
- '֗' => 230,
- '֘' => 230,
- '֙' => 230,
- '֚' => 222,
- '֛' => 220,
- '֜' => 230,
- '֝' => 230,
- '֞' => 230,
- '֟' => 230,
- '֠' => 230,
- '֡' => 230,
- '֢' => 220,
- '֣' => 220,
- '֤' => 220,
- '֥' => 220,
- '֦' => 220,
- '֧' => 220,
- '֨' => 230,
- '֩' => 230,
- '֪' => 220,
- '֫' => 230,
- '֬' => 230,
- '֭' => 222,
- '֮' => 228,
- '֯' => 230,
- 'ְ' => 10,
- 'ֱ' => 11,
- 'ֲ' => 12,
- 'ֳ' => 13,
- 'ִ' => 14,
- 'ֵ' => 15,
- 'ֶ' => 16,
- 'ַ' => 17,
- 'ָ' => 18,
- 'ֹ' => 19,
- 'ֺ' => 19,
- 'ֻ' => 20,
- 'ּ' => 21,
- 'ֽ' => 22,
- 'ֿ' => 23,
- 'ׁ' => 24,
- 'ׂ' => 25,
- 'ׄ' => 230,
- 'ׅ' => 220,
- 'ׇ' => 18,
- 'ؐ' => 230,
- 'ؑ' => 230,
- 'ؒ' => 230,
- 'ؓ' => 230,
- 'ؔ' => 230,
- 'ؕ' => 230,
- 'ؖ' => 230,
- 'ؗ' => 230,
- 'ؘ' => 30,
- 'ؙ' => 31,
- 'ؚ' => 32,
- 'ً' => 27,
- 'ٌ' => 28,
- 'ٍ' => 29,
- 'َ' => 30,
- 'ُ' => 31,
- 'ِ' => 32,
- 'ّ' => 33,
- 'ْ' => 34,
- 'ٓ' => 230,
- 'ٔ' => 230,
- 'ٕ' => 220,
- 'ٖ' => 220,
- 'ٗ' => 230,
- '٘' => 230,
- 'ٙ' => 230,
- 'ٚ' => 230,
- 'ٛ' => 230,
- 'ٜ' => 220,
- 'ٝ' => 230,
- 'ٞ' => 230,
- 'ٟ' => 220,
- 'ٰ' => 35,
- 'ۖ' => 230,
- 'ۗ' => 230,
- 'ۘ' => 230,
- 'ۙ' => 230,
- 'ۚ' => 230,
- 'ۛ' => 230,
- 'ۜ' => 230,
- '۟' => 230,
- '۠' => 230,
- 'ۡ' => 230,
- 'ۢ' => 230,
- 'ۣ' => 220,
- 'ۤ' => 230,
- 'ۧ' => 230,
- 'ۨ' => 230,
- '۪' => 220,
- '۫' => 230,
- '۬' => 230,
- 'ۭ' => 220,
- 'ܑ' => 36,
- 'ܰ' => 230,
- 'ܱ' => 220,
- 'ܲ' => 230,
- 'ܳ' => 230,
- 'ܴ' => 220,
- 'ܵ' => 230,
- 'ܶ' => 230,
- 'ܷ' => 220,
- 'ܸ' => 220,
- 'ܹ' => 220,
- 'ܺ' => 230,
- 'ܻ' => 220,
- 'ܼ' => 220,
- 'ܽ' => 230,
- 'ܾ' => 220,
- 'ܿ' => 230,
- '݀' => 230,
- '݁' => 230,
- '݂' => 220,
- '݃' => 230,
- '݄' => 220,
- '݅' => 230,
- '݆' => 220,
- '݇' => 230,
- '݈' => 220,
- '݉' => 230,
- '݊' => 230,
- '߫' => 230,
- '߬' => 230,
- '߭' => 230,
- '߮' => 230,
- '߯' => 230,
- '߰' => 230,
- '߱' => 230,
- '߲' => 220,
- '߳' => 230,
- '߽' => 220,
- 'ࠖ' => 230,
- 'ࠗ' => 230,
- '࠘' => 230,
- '࠙' => 230,
- 'ࠛ' => 230,
- 'ࠜ' => 230,
- 'ࠝ' => 230,
- 'ࠞ' => 230,
- 'ࠟ' => 230,
- 'ࠠ' => 230,
- 'ࠡ' => 230,
- 'ࠢ' => 230,
- 'ࠣ' => 230,
- 'ࠥ' => 230,
- 'ࠦ' => 230,
- 'ࠧ' => 230,
- 'ࠩ' => 230,
- 'ࠪ' => 230,
- 'ࠫ' => 230,
- 'ࠬ' => 230,
- '࠭' => 230,
- '࡙' => 220,
- '࡚' => 220,
- '࡛' => 220,
- '࣓' => 220,
- 'ࣔ' => 230,
- 'ࣕ' => 230,
- 'ࣖ' => 230,
- 'ࣗ' => 230,
- 'ࣘ' => 230,
- 'ࣙ' => 230,
- 'ࣚ' => 230,
- 'ࣛ' => 230,
- 'ࣜ' => 230,
- 'ࣝ' => 230,
- 'ࣞ' => 230,
- 'ࣟ' => 230,
- '࣠' => 230,
- '࣡' => 230,
- 'ࣣ' => 220,
- 'ࣤ' => 230,
- 'ࣥ' => 230,
- 'ࣦ' => 220,
- 'ࣧ' => 230,
- 'ࣨ' => 230,
- 'ࣩ' => 220,
- '࣪' => 230,
- '࣫' => 230,
- '࣬' => 230,
- '࣭' => 220,
- '࣮' => 220,
- '࣯' => 220,
- 'ࣰ' => 27,
- 'ࣱ' => 28,
- 'ࣲ' => 29,
- 'ࣳ' => 230,
- 'ࣴ' => 230,
- 'ࣵ' => 230,
- 'ࣶ' => 220,
- 'ࣷ' => 230,
- 'ࣸ' => 230,
- 'ࣹ' => 220,
- 'ࣺ' => 220,
- 'ࣻ' => 230,
- 'ࣼ' => 230,
- 'ࣽ' => 230,
- 'ࣾ' => 230,
- 'ࣿ' => 230,
- '़' => 7,
- '्' => 9,
- '॑' => 230,
- '॒' => 220,
- '॓' => 230,
- '॔' => 230,
- '়' => 7,
- '্' => 9,
- '৾' => 230,
- '਼' => 7,
- '੍' => 9,
- '઼' => 7,
- '્' => 9,
- '଼' => 7,
- '୍' => 9,
- '்' => 9,
- '్' => 9,
- 'ౕ' => 84,
- 'ౖ' => 91,
- '಼' => 7,
- '್' => 9,
- '഻' => 9,
- '഼' => 9,
- '്' => 9,
- '්' => 9,
- 'ุ' => 103,
- 'ู' => 103,
- 'ฺ' => 9,
- '่' => 107,
- '้' => 107,
- '๊' => 107,
- '๋' => 107,
- 'ຸ' => 118,
- 'ູ' => 118,
- '຺' => 9,
- '່' => 122,
- '້' => 122,
- '໊' => 122,
- '໋' => 122,
- '༘' => 220,
- '༙' => 220,
- '༵' => 220,
- '༷' => 220,
- '༹' => 216,
- 'ཱ' => 129,
- 'ི' => 130,
- 'ུ' => 132,
- 'ེ' => 130,
- 'ཻ' => 130,
- 'ོ' => 130,
- 'ཽ' => 130,
- 'ྀ' => 130,
- 'ྂ' => 230,
- 'ྃ' => 230,
- '྄' => 9,
- '྆' => 230,
- '྇' => 230,
- '࿆' => 220,
- '့' => 7,
- '္' => 9,
- '်' => 9,
- 'ႍ' => 220,
- '፝' => 230,
- '፞' => 230,
- '፟' => 230,
- '᜔' => 9,
- '᜴' => 9,
- '្' => 9,
- '៝' => 230,
- 'ᢩ' => 228,
- '᤹' => 222,
- '᤺' => 230,
- '᤻' => 220,
- 'ᨗ' => 230,
- 'ᨘ' => 220,
- '᩠' => 9,
- '᩵' => 230,
- '᩶' => 230,
- '᩷' => 230,
- '᩸' => 230,
- '᩹' => 230,
- '᩺' => 230,
- '᩻' => 230,
- '᩼' => 230,
- '᩿' => 220,
- '᪰' => 230,
- '᪱' => 230,
- '᪲' => 230,
- '᪳' => 230,
- '᪴' => 230,
- '᪵' => 220,
- '᪶' => 220,
- '᪷' => 220,
- '᪸' => 220,
- '᪹' => 220,
- '᪺' => 220,
- '᪻' => 230,
- '᪼' => 230,
- '᪽' => 220,
- 'ᪿ' => 220,
- 'ᫀ' => 220,
- '᬴' => 7,
- '᭄' => 9,
- '᭫' => 230,
- '᭬' => 220,
- '᭭' => 230,
- '᭮' => 230,
- '᭯' => 230,
- '᭰' => 230,
- '᭱' => 230,
- '᭲' => 230,
- '᭳' => 230,
- '᮪' => 9,
- '᮫' => 9,
- '᯦' => 7,
- '᯲' => 9,
- '᯳' => 9,
- '᰷' => 7,
- '᳐' => 230,
- '᳑' => 230,
- '᳒' => 230,
- '᳔' => 1,
- '᳕' => 220,
- '᳖' => 220,
- '᳗' => 220,
- '᳘' => 220,
- '᳙' => 220,
- '᳚' => 230,
- '᳛' => 230,
- '᳜' => 220,
- '᳝' => 220,
- '᳞' => 220,
- '᳟' => 220,
- '᳠' => 230,
- '᳢' => 1,
- '᳣' => 1,
- '᳤' => 1,
- '᳥' => 1,
- '᳦' => 1,
- '᳧' => 1,
- '᳨' => 1,
- '᳭' => 220,
- '᳴' => 230,
- '᳸' => 230,
- '᳹' => 230,
- '᷀' => 230,
- '᷁' => 230,
- '᷂' => 220,
- '᷃' => 230,
- '᷄' => 230,
- '᷅' => 230,
- '᷆' => 230,
- '᷇' => 230,
- '᷈' => 230,
- '᷉' => 230,
- '᷊' => 220,
- '᷋' => 230,
- '᷌' => 230,
- '᷍' => 234,
- '᷎' => 214,
- '᷏' => 220,
- '᷐' => 202,
- '᷑' => 230,
- '᷒' => 230,
- 'ᷓ' => 230,
- 'ᷔ' => 230,
- 'ᷕ' => 230,
- 'ᷖ' => 230,
- 'ᷗ' => 230,
- 'ᷘ' => 230,
- 'ᷙ' => 230,
- 'ᷚ' => 230,
- 'ᷛ' => 230,
- 'ᷜ' => 230,
- 'ᷝ' => 230,
- 'ᷞ' => 230,
- 'ᷟ' => 230,
- 'ᷠ' => 230,
- 'ᷡ' => 230,
- 'ᷢ' => 230,
- 'ᷣ' => 230,
- 'ᷤ' => 230,
- 'ᷥ' => 230,
- 'ᷦ' => 230,
- 'ᷧ' => 230,
- 'ᷨ' => 230,
- 'ᷩ' => 230,
- 'ᷪ' => 230,
- 'ᷫ' => 230,
- 'ᷬ' => 230,
- 'ᷭ' => 230,
- 'ᷮ' => 230,
- 'ᷯ' => 230,
- 'ᷰ' => 230,
- 'ᷱ' => 230,
- 'ᷲ' => 230,
- 'ᷳ' => 230,
- 'ᷴ' => 230,
- '᷵' => 230,
- '᷶' => 232,
- '᷷' => 228,
- '᷸' => 228,
- '᷹' => 220,
- '᷻' => 230,
- '᷼' => 233,
- '᷽' => 220,
- '᷾' => 230,
- '᷿' => 220,
- '⃐' => 230,
- '⃑' => 230,
- '⃒' => 1,
- '⃓' => 1,
- '⃔' => 230,
- '⃕' => 230,
- '⃖' => 230,
- '⃗' => 230,
- '⃘' => 1,
- '⃙' => 1,
- '⃚' => 1,
- '⃛' => 230,
- '⃜' => 230,
- '⃡' => 230,
- '⃥' => 1,
- '⃦' => 1,
- '⃧' => 230,
- '⃨' => 220,
- '⃩' => 230,
- '⃪' => 1,
- '⃫' => 1,
- '⃬' => 220,
- '⃭' => 220,
- '⃮' => 220,
- '⃯' => 220,
- '⃰' => 230,
- '⳯' => 230,
- '⳰' => 230,
- '⳱' => 230,
- '⵿' => 9,
- 'ⷠ' => 230,
- 'ⷡ' => 230,
- 'ⷢ' => 230,
- 'ⷣ' => 230,
- 'ⷤ' => 230,
- 'ⷥ' => 230,
- 'ⷦ' => 230,
- 'ⷧ' => 230,
- 'ⷨ' => 230,
- 'ⷩ' => 230,
- 'ⷪ' => 230,
- 'ⷫ' => 230,
- 'ⷬ' => 230,
- 'ⷭ' => 230,
- 'ⷮ' => 230,
- 'ⷯ' => 230,
- 'ⷰ' => 230,
- 'ⷱ' => 230,
- 'ⷲ' => 230,
- 'ⷳ' => 230,
- 'ⷴ' => 230,
- 'ⷵ' => 230,
- 'ⷶ' => 230,
- 'ⷷ' => 230,
- 'ⷸ' => 230,
- 'ⷹ' => 230,
- 'ⷺ' => 230,
- 'ⷻ' => 230,
- 'ⷼ' => 230,
- 'ⷽ' => 230,
- 'ⷾ' => 230,
- 'ⷿ' => 230,
- '〪' => 218,
- '〫' => 228,
- '〬' => 232,
- '〭' => 222,
- '〮' => 224,
- '〯' => 224,
- '゙' => 8,
- '゚' => 8,
- '꙯' => 230,
- 'ꙴ' => 230,
- 'ꙵ' => 230,
- 'ꙶ' => 230,
- 'ꙷ' => 230,
- 'ꙸ' => 230,
- 'ꙹ' => 230,
- 'ꙺ' => 230,
- 'ꙻ' => 230,
- '꙼' => 230,
- '꙽' => 230,
- 'ꚞ' => 230,
- 'ꚟ' => 230,
- '꛰' => 230,
- '꛱' => 230,
- '꠆' => 9,
- '꠬' => 9,
- '꣄' => 9,
- '꣠' => 230,
- '꣡' => 230,
- '꣢' => 230,
- '꣣' => 230,
- '꣤' => 230,
- '꣥' => 230,
- '꣦' => 230,
- '꣧' => 230,
- '꣨' => 230,
- '꣩' => 230,
- '꣪' => 230,
- '꣫' => 230,
- '꣬' => 230,
- '꣭' => 230,
- '꣮' => 230,
- '꣯' => 230,
- '꣰' => 230,
- '꣱' => 230,
- '꤫' => 220,
- '꤬' => 220,
- '꤭' => 220,
- '꥓' => 9,
- '꦳' => 7,
- '꧀' => 9,
- 'ꪰ' => 230,
- 'ꪲ' => 230,
- 'ꪳ' => 230,
- 'ꪴ' => 220,
- 'ꪷ' => 230,
- 'ꪸ' => 230,
- 'ꪾ' => 230,
- '꪿' => 230,
- '꫁' => 230,
- '꫶' => 9,
- '꯭' => 9,
- 'ﬞ' => 26,
- '︠' => 230,
- '︡' => 230,
- '︢' => 230,
- '︣' => 230,
- '︤' => 230,
- '︥' => 230,
- '︦' => 230,
- '︧' => 220,
- '︨' => 220,
- '︩' => 220,
- '︪' => 220,
- '︫' => 220,
- '︬' => 220,
- '︭' => 220,
- '︮' => 230,
- '︯' => 230,
- '𐇽' => 220,
- '𐋠' => 220,
- '𐍶' => 230,
- '𐍷' => 230,
- '𐍸' => 230,
- '𐍹' => 230,
- '𐍺' => 230,
- '𐨍' => 220,
- '𐨏' => 230,
- '𐨸' => 230,
- '𐨹' => 1,
- '𐨺' => 220,
- '𐨿' => 9,
- '𐫥' => 230,
- '𐫦' => 220,
- '𐴤' => 230,
- '𐴥' => 230,
- '𐴦' => 230,
- '𐴧' => 230,
- '𐺫' => 230,
- '𐺬' => 230,
- '𐽆' => 220,
- '𐽇' => 220,
- '𐽈' => 230,
- '𐽉' => 230,
- '𐽊' => 230,
- '𐽋' => 220,
- '𐽌' => 230,
- '𐽍' => 220,
- '𐽎' => 220,
- '𐽏' => 220,
- '𐽐' => 220,
- '𑁆' => 9,
- '𑁿' => 9,
- '𑂹' => 9,
- '𑂺' => 7,
- '𑄀' => 230,
- '𑄁' => 230,
- '𑄂' => 230,
- '𑄳' => 9,
- '𑄴' => 9,
- '𑅳' => 7,
- '𑇀' => 9,
- '𑇊' => 7,
- '𑈵' => 9,
- '𑈶' => 7,
- '𑋩' => 7,
- '𑋪' => 9,
- '𑌻' => 7,
- '𑌼' => 7,
- '𑍍' => 9,
- '𑍦' => 230,
- '𑍧' => 230,
- '𑍨' => 230,
- '𑍩' => 230,
- '𑍪' => 230,
- '𑍫' => 230,
- '𑍬' => 230,
- '𑍰' => 230,
- '𑍱' => 230,
- '𑍲' => 230,
- '𑍳' => 230,
- '𑍴' => 230,
- '𑑂' => 9,
- '𑑆' => 7,
- '𑑞' => 230,
- '𑓂' => 9,
- '𑓃' => 7,
- '𑖿' => 9,
- '𑗀' => 7,
- '𑘿' => 9,
- '𑚶' => 9,
- '𑚷' => 7,
- '𑜫' => 9,
- '𑠹' => 9,
- '𑠺' => 7,
- '𑤽' => 9,
- '𑤾' => 9,
- '𑥃' => 7,
- '𑧠' => 9,
- '𑨴' => 9,
- '𑩇' => 9,
- '𑪙' => 9,
- '𑰿' => 9,
- '𑵂' => 7,
- '𑵄' => 9,
- '𑵅' => 9,
- '𑶗' => 9,
- '𖫰' => 1,
- '𖫱' => 1,
- '𖫲' => 1,
- '𖫳' => 1,
- '𖫴' => 1,
- '𖬰' => 230,
- '𖬱' => 230,
- '𖬲' => 230,
- '𖬳' => 230,
- '𖬴' => 230,
- '𖬵' => 230,
- '𖬶' => 230,
- '𖿰' => 6,
- '𖿱' => 6,
- '𛲞' => 1,
- '𝅥' => 216,
- '𝅦' => 216,
- '𝅧' => 1,
- '𝅨' => 1,
- '𝅩' => 1,
- '𝅭' => 226,
- '𝅮' => 216,
- '𝅯' => 216,
- '𝅰' => 216,
- '𝅱' => 216,
- '𝅲' => 216,
- '𝅻' => 220,
- '𝅼' => 220,
- '𝅽' => 220,
- '𝅾' => 220,
- '𝅿' => 220,
- '𝆀' => 220,
- '𝆁' => 220,
- '𝆂' => 220,
- '𝆅' => 230,
- '𝆆' => 230,
- '𝆇' => 230,
- '𝆈' => 230,
- '𝆉' => 230,
- '𝆊' => 220,
- '𝆋' => 220,
- '𝆪' => 230,
- '𝆫' => 230,
- '𝆬' => 230,
- '𝆭' => 230,
- '𝉂' => 230,
- '𝉃' => 230,
- '𝉄' => 230,
- '𞀀' => 230,
- '𞀁' => 230,
- '𞀂' => 230,
- '𞀃' => 230,
- '𞀄' => 230,
- '𞀅' => 230,
- '𞀆' => 230,
- '𞀈' => 230,
- '𞀉' => 230,
- '𞀊' => 230,
- '𞀋' => 230,
- '𞀌' => 230,
- '𞀍' => 230,
- '𞀎' => 230,
- '𞀏' => 230,
- '𞀐' => 230,
- '𞀑' => 230,
- '𞀒' => 230,
- '𞀓' => 230,
- '𞀔' => 230,
- '𞀕' => 230,
- '𞀖' => 230,
- '𞀗' => 230,
- '𞀘' => 230,
- '𞀛' => 230,
- '𞀜' => 230,
- '𞀝' => 230,
- '𞀞' => 230,
- '𞀟' => 230,
- '𞀠' => 230,
- '𞀡' => 230,
- '𞀣' => 230,
- '𞀤' => 230,
- '𞀦' => 230,
- '𞀧' => 230,
- '𞀨' => 230,
- '𞀩' => 230,
- '𞀪' => 230,
- '𞄰' => 230,
- '𞄱' => 230,
- '𞄲' => 230,
- '𞄳' => 230,
- '𞄴' => 230,
- '𞄵' => 230,
- '𞄶' => 230,
- '𞋬' => 230,
- '𞋭' => 230,
- '𞋮' => 230,
- '𞋯' => 230,
- '𞣐' => 220,
- '𞣑' => 220,
- '𞣒' => 220,
- '𞣓' => 220,
- '𞣔' => 220,
- '𞣕' => 220,
- '𞣖' => 220,
- '𞥄' => 230,
- '𞥅' => 230,
- '𞥆' => 230,
- '𞥇' => 230,
- '𞥈' => 230,
- '𞥉' => 230,
- '𞥊' => 7,
-);
diff --git a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php b/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php
deleted file mode 100644
index 1574902..0000000
--- a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php
+++ /dev/null
@@ -1,3695 +0,0 @@
-<?php
-
-return array (
- ' ' => ' ',
- '¨' => ' ̈',
- 'ª' => 'a',
- '¯' => ' ̄',
- '²' => '2',
- '³' => '3',
- '´' => ' ́',
- 'µ' => 'μ',
- '¸' => ' ̧',
- '¹' => '1',
- 'º' => 'o',
- '¼' => '1⁄4',
- '½' => '1⁄2',
- '¾' => '3⁄4',
- 'IJ' => 'IJ',
- 'ij' => 'ij',
- 'Ŀ' => 'L·',
- 'ŀ' => 'l·',
- 'ʼn' => 'ʼn',
- 'ſ' => 's',
- 'DŽ' => 'DŽ',
- 'Dž' => 'Dž',
- 'dž' => 'dž',
- 'LJ' => 'LJ',
- 'Lj' => 'Lj',
- 'lj' => 'lj',
- 'NJ' => 'NJ',
- 'Nj' => 'Nj',
- 'nj' => 'nj',
- 'DZ' => 'DZ',
- 'Dz' => 'Dz',
- 'dz' => 'dz',
- 'ʰ' => 'h',
- 'ʱ' => 'ɦ',
- 'ʲ' => 'j',
- 'ʳ' => 'r',
- 'ʴ' => 'ɹ',
- 'ʵ' => 'ɻ',
- 'ʶ' => 'ʁ',
- 'ʷ' => 'w',
- 'ʸ' => 'y',
- '˘' => ' ̆',
- '˙' => ' ̇',
- '˚' => ' ̊',
- '˛' => ' ̨',
- '˜' => ' ̃',
- '˝' => ' ̋',
- 'ˠ' => 'ɣ',
- 'ˡ' => 'l',
- 'ˢ' => 's',
- 'ˣ' => 'x',
- 'ˤ' => 'ʕ',
- 'ͺ' => ' ͅ',
- '΄' => ' ́',
- '΅' => ' ̈́',
- 'ϐ' => 'β',
- 'ϑ' => 'θ',
- 'ϒ' => 'Υ',
- 'ϓ' => 'Ύ',
- 'ϔ' => 'Ϋ',
- 'ϕ' => 'φ',
- 'ϖ' => 'π',
- 'ϰ' => 'κ',
- 'ϱ' => 'ρ',
- 'ϲ' => 'ς',
- 'ϴ' => 'Θ',
- 'ϵ' => 'ε',
- 'Ϲ' => 'Σ',
- 'և' => 'եւ',
- 'ٵ' => 'اٴ',
- 'ٶ' => 'وٴ',
- 'ٷ' => 'ۇٴ',
- 'ٸ' => 'يٴ',
- 'ำ' => 'ํา',
- 'ຳ' => 'ໍາ',
- 'ໜ' => 'ຫນ',
- 'ໝ' => 'ຫມ',
- '༌' => '་',
- 'ཷ' => 'ྲཱྀ',
- 'ཹ' => 'ླཱྀ',
- 'ჼ' => 'ნ',
- 'ᴬ' => 'A',
- 'ᴭ' => 'Æ',
- 'ᴮ' => 'B',
- 'ᴰ' => 'D',
- 'ᴱ' => 'E',
- 'ᴲ' => 'Ǝ',
- 'ᴳ' => 'G',
- 'ᴴ' => 'H',
- 'ᴵ' => 'I',
- 'ᴶ' => 'J',
- 'ᴷ' => 'K',
- 'ᴸ' => 'L',
- 'ᴹ' => 'M',
- 'ᴺ' => 'N',
- 'ᴼ' => 'O',
- 'ᴽ' => 'Ȣ',
- 'ᴾ' => 'P',
- 'ᴿ' => 'R',
- 'ᵀ' => 'T',
- 'ᵁ' => 'U',
- 'ᵂ' => 'W',
- 'ᵃ' => 'a',
- 'ᵄ' => 'ɐ',
- 'ᵅ' => 'ɑ',
- 'ᵆ' => 'ᴂ',
- 'ᵇ' => 'b',
- 'ᵈ' => 'd',
- 'ᵉ' => 'e',
- 'ᵊ' => 'ə',
- 'ᵋ' => 'ɛ',
- 'ᵌ' => 'ɜ',
- 'ᵍ' => 'g',
- 'ᵏ' => 'k',
- 'ᵐ' => 'm',
- 'ᵑ' => 'ŋ',
- 'ᵒ' => 'o',
- 'ᵓ' => 'ɔ',
- 'ᵔ' => 'ᴖ',
- 'ᵕ' => 'ᴗ',
- 'ᵖ' => 'p',
- 'ᵗ' => 't',
- 'ᵘ' => 'u',
- 'ᵙ' => 'ᴝ',
- 'ᵚ' => 'ɯ',
- 'ᵛ' => 'v',
- 'ᵜ' => 'ᴥ',
- 'ᵝ' => 'β',
- 'ᵞ' => 'γ',
- 'ᵟ' => 'δ',
- 'ᵠ' => 'φ',
- 'ᵡ' => 'χ',
- 'ᵢ' => 'i',
- 'ᵣ' => 'r',
- 'ᵤ' => 'u',
- 'ᵥ' => 'v',
- 'ᵦ' => 'β',
- 'ᵧ' => 'γ',
- 'ᵨ' => 'ρ',
- 'ᵩ' => 'φ',
- 'ᵪ' => 'χ',
- 'ᵸ' => 'н',
- 'ᶛ' => 'ɒ',
- 'ᶜ' => 'c',
- 'ᶝ' => 'ɕ',
- 'ᶞ' => 'ð',
- 'ᶟ' => 'ɜ',
- 'ᶠ' => 'f',
- 'ᶡ' => 'ɟ',
- 'ᶢ' => 'ɡ',
- 'ᶣ' => 'ɥ',
- 'ᶤ' => 'ɨ',
- 'ᶥ' => 'ɩ',
- 'ᶦ' => 'ɪ',
- 'ᶧ' => 'ᵻ',
- 'ᶨ' => 'ʝ',
- 'ᶩ' => 'ɭ',
- 'ᶪ' => 'ᶅ',
- 'ᶫ' => 'ʟ',
- 'ᶬ' => 'ɱ',
- 'ᶭ' => 'ɰ',
- 'ᶮ' => 'ɲ',
- 'ᶯ' => 'ɳ',
- 'ᶰ' => 'ɴ',
- 'ᶱ' => 'ɵ',
- 'ᶲ' => 'ɸ',
- 'ᶳ' => 'ʂ',
- 'ᶴ' => 'ʃ',
- 'ᶵ' => 'ƫ',
- 'ᶶ' => 'ʉ',
- 'ᶷ' => 'ʊ',
- 'ᶸ' => 'ᴜ',
- 'ᶹ' => 'ʋ',
- 'ᶺ' => 'ʌ',
- 'ᶻ' => 'z',
- 'ᶼ' => 'ʐ',
- 'ᶽ' => 'ʑ',
- 'ᶾ' => 'ʒ',
- 'ᶿ' => 'θ',
- 'ẚ' => 'aʾ',
- 'ẛ' => 'ṡ',
- '᾽' => ' ̓',
- '᾿' => ' ̓',
- '῀' => ' ͂',
- '῁' => ' ̈͂',
- '῍' => ' ̓̀',
- '῎' => ' ̓́',
- '῏' => ' ̓͂',
- '῝' => ' ̔̀',
- '῞' => ' ̔́',
- '῟' => ' ̔͂',
- '῭' => ' ̈̀',
- '΅' => ' ̈́',
- '´' => ' ́',
- '῾' => ' ̔',
- ' ' => ' ',
- ' ' => ' ',
- ' ' => ' ',
- ' ' => ' ',
- ' ' => ' ',
- ' ' => ' ',
- ' ' => ' ',
- ' ' => ' ',
- ' ' => ' ',
- ' ' => ' ',
- ' ' => ' ',
- '‑' => '‐',
- '‗' => ' ̳',
- '․' => '.',
- '‥' => '..',
- '…' => '...',
- ' ' => ' ',
- '″' => '′′',
- '‴' => '′′′',
- '‶' => '‵‵',
- '‷' => '‵‵‵',
- '‼' => '!!',
- '‾' => ' ̅',
- '⁇' => '??',
- '⁈' => '?!',
- '⁉' => '!?',
- '⁗' => '′′′′',
- ' ' => ' ',
- '⁰' => '0',
- 'ⁱ' => 'i',
- '⁴' => '4',
- '⁵' => '5',
- '⁶' => '6',
- '⁷' => '7',
- '⁸' => '8',
- '⁹' => '9',
- '⁺' => '+',
- '⁻' => '−',
- '⁼' => '=',
- '⁽' => '(',
- '⁾' => ')',
- 'ⁿ' => 'n',
- '₀' => '0',
- '₁' => '1',
- '₂' => '2',
- '₃' => '3',
- '₄' => '4',
- '₅' => '5',
- '₆' => '6',
- '₇' => '7',
- '₈' => '8',
- '₉' => '9',
- '₊' => '+',
- '₋' => '−',
- '₌' => '=',
- '₍' => '(',
- '₎' => ')',
- 'ₐ' => 'a',
- 'ₑ' => 'e',
- 'ₒ' => 'o',
- 'ₓ' => 'x',
- 'ₔ' => 'ə',
- 'ₕ' => 'h',
- 'ₖ' => 'k',
- 'ₗ' => 'l',
- 'ₘ' => 'm',
- 'ₙ' => 'n',
- 'ₚ' => 'p',
- 'ₛ' => 's',
- 'ₜ' => 't',
- '₨' => 'Rs',
- '℀' => 'a/c',
- '℁' => 'a/s',
- 'ℂ' => 'C',
- '℃' => '°C',
- '℅' => 'c/o',
- '℆' => 'c/u',
- 'ℇ' => 'Ɛ',
- '℉' => '°F',
- 'ℊ' => 'g',
- 'ℋ' => 'H',
- 'ℌ' => 'H',
- 'ℍ' => 'H',
- 'ℎ' => 'h',
- 'ℏ' => 'ħ',
- 'ℐ' => 'I',
- 'ℑ' => 'I',
- 'ℒ' => 'L',
- 'ℓ' => 'l',
- 'ℕ' => 'N',
- '№' => 'No',
- 'ℙ' => 'P',
- 'ℚ' => 'Q',
- 'ℛ' => 'R',
- 'ℜ' => 'R',
- 'ℝ' => 'R',
- '℠' => 'SM',
- '℡' => 'TEL',
- '™' => 'TM',
- 'ℤ' => 'Z',
- 'ℨ' => 'Z',
- 'ℬ' => 'B',
- 'ℭ' => 'C',
- 'ℯ' => 'e',
- 'ℰ' => 'E',
- 'ℱ' => 'F',
- 'ℳ' => 'M',
- 'ℴ' => 'o',
- 'ℵ' => 'א',
- 'ℶ' => 'ב',
- 'ℷ' => 'ג',
- 'ℸ' => 'ד',
- 'ℹ' => 'i',
- '℻' => 'FAX',
- 'ℼ' => 'π',
- 'ℽ' => 'γ',
- 'ℾ' => 'Γ',
- 'ℿ' => 'Π',
- '⅀' => '∑',
- 'ⅅ' => 'D',
- 'ⅆ' => 'd',
- 'ⅇ' => 'e',
- 'ⅈ' => 'i',
- 'ⅉ' => 'j',
- '⅐' => '1⁄7',
- '⅑' => '1⁄9',
- '⅒' => '1⁄10',
- '⅓' => '1⁄3',
- '⅔' => '2⁄3',
- '⅕' => '1⁄5',
- '⅖' => '2⁄5',
- '⅗' => '3⁄5',
- '⅘' => '4⁄5',
- '⅙' => '1⁄6',
- '⅚' => '5⁄6',
- '⅛' => '1⁄8',
- '⅜' => '3⁄8',
- '⅝' => '5⁄8',
- '⅞' => '7⁄8',
- '⅟' => '1⁄',
- 'Ⅰ' => 'I',
- 'Ⅱ' => 'II',
- 'Ⅲ' => 'III',
- 'Ⅳ' => 'IV',
- 'Ⅴ' => 'V',
- 'Ⅵ' => 'VI',
- 'Ⅶ' => 'VII',
- 'Ⅷ' => 'VIII',
- 'Ⅸ' => 'IX',
- 'Ⅹ' => 'X',
- 'Ⅺ' => 'XI',
- 'Ⅻ' => 'XII',
- 'Ⅼ' => 'L',
- 'Ⅽ' => 'C',
- 'Ⅾ' => 'D',
- 'Ⅿ' => 'M',
- 'ⅰ' => 'i',
- 'ⅱ' => 'ii',
- 'ⅲ' => 'iii',
- 'ⅳ' => 'iv',
- 'ⅴ' => 'v',
- 'ⅵ' => 'vi',
- 'ⅶ' => 'vii',
- 'ⅷ' => 'viii',
- 'ⅸ' => 'ix',
- 'ⅹ' => 'x',
- 'ⅺ' => 'xi',
- 'ⅻ' => 'xii',
- 'ⅼ' => 'l',
- 'ⅽ' => 'c',
- 'ⅾ' => 'd',
- 'ⅿ' => 'm',
- '↉' => '0⁄3',
- '∬' => '∫∫',
- '∭' => '∫∫∫',
- '∯' => '∮∮',
- '∰' => '∮∮∮',
- '①' => '1',
- '②' => '2',
- '③' => '3',
- '④' => '4',
- '⑤' => '5',
- '⑥' => '6',
- '⑦' => '7',
- '⑧' => '8',
- '⑨' => '9',
- '⑩' => '10',
- '⑪' => '11',
- '⑫' => '12',
- '⑬' => '13',
- '⑭' => '14',
- '⑮' => '15',
- '⑯' => '16',
- '⑰' => '17',
- '⑱' => '18',
- '⑲' => '19',
- '⑳' => '20',
- '⑴' => '(1)',
- '⑵' => '(2)',
- '⑶' => '(3)',
- '⑷' => '(4)',
- '⑸' => '(5)',
- '⑹' => '(6)',
- '⑺' => '(7)',
- '⑻' => '(8)',
- '⑼' => '(9)',
- '⑽' => '(10)',
- '⑾' => '(11)',
- '⑿' => '(12)',
- '⒀' => '(13)',
- '⒁' => '(14)',
- '⒂' => '(15)',
- '⒃' => '(16)',
- '⒄' => '(17)',
- '⒅' => '(18)',
- '⒆' => '(19)',
- '⒇' => '(20)',
- '⒈' => '1.',
- '⒉' => '2.',
- '⒊' => '3.',
- '⒋' => '4.',
- '⒌' => '5.',
- '⒍' => '6.',
- '⒎' => '7.',
- '⒏' => '8.',
- '⒐' => '9.',
- '⒑' => '10.',
- '⒒' => '11.',
- '⒓' => '12.',
- '⒔' => '13.',
- '⒕' => '14.',
- '⒖' => '15.',
- '⒗' => '16.',
- '⒘' => '17.',
- '⒙' => '18.',
- '⒚' => '19.',
- '⒛' => '20.',
- '⒜' => '(a)',
- '⒝' => '(b)',
- '⒞' => '(c)',
- '⒟' => '(d)',
- '⒠' => '(e)',
- '⒡' => '(f)',
- '⒢' => '(g)',
- '⒣' => '(h)',
- '⒤' => '(i)',
- '⒥' => '(j)',
- '⒦' => '(k)',
- '⒧' => '(l)',
- '⒨' => '(m)',
- '⒩' => '(n)',
- '⒪' => '(o)',
- '⒫' => '(p)',
- '⒬' => '(q)',
- '⒭' => '(r)',
- '⒮' => '(s)',
- '⒯' => '(t)',
- '⒰' => '(u)',
- '⒱' => '(v)',
- '⒲' => '(w)',
- '⒳' => '(x)',
- '⒴' => '(y)',
- '⒵' => '(z)',
- 'Ⓐ' => 'A',
- 'Ⓑ' => 'B',
- 'Ⓒ' => 'C',
- 'Ⓓ' => 'D',
- 'Ⓔ' => 'E',
- 'Ⓕ' => 'F',
- 'Ⓖ' => 'G',
- 'Ⓗ' => 'H',
- 'Ⓘ' => 'I',
- 'Ⓙ' => 'J',
- 'Ⓚ' => 'K',
- 'Ⓛ' => 'L',
- 'Ⓜ' => 'M',
- 'Ⓝ' => 'N',
- 'Ⓞ' => 'O',
- 'Ⓟ' => 'P',
- 'Ⓠ' => 'Q',
- 'Ⓡ' => 'R',
- 'Ⓢ' => 'S',
- 'Ⓣ' => 'T',
- 'Ⓤ' => 'U',
- 'Ⓥ' => 'V',
- 'Ⓦ' => 'W',
- 'Ⓧ' => 'X',
- 'Ⓨ' => 'Y',
- 'Ⓩ' => 'Z',
- 'ⓐ' => 'a',
- 'ⓑ' => 'b',
- 'ⓒ' => 'c',
- 'ⓓ' => 'd',
- 'ⓔ' => 'e',
- 'ⓕ' => 'f',
- 'ⓖ' => 'g',
- 'ⓗ' => 'h',
- 'ⓘ' => 'i',
- 'ⓙ' => 'j',
- 'ⓚ' => 'k',
- 'ⓛ' => 'l',
- 'ⓜ' => 'm',
- 'ⓝ' => 'n',
- 'ⓞ' => 'o',
- 'ⓟ' => 'p',
- 'ⓠ' => 'q',
- 'ⓡ' => 'r',
- 'ⓢ' => 's',
- 'ⓣ' => 't',
- 'ⓤ' => 'u',
- 'ⓥ' => 'v',
- 'ⓦ' => 'w',
- 'ⓧ' => 'x',
- 'ⓨ' => 'y',
- 'ⓩ' => 'z',
- '⓪' => '0',
- '⨌' => '∫∫∫∫',
- '⩴' => '::=',
- '⩵' => '==',
- '⩶' => '===',
- 'ⱼ' => 'j',
- 'ⱽ' => 'V',
- 'ⵯ' => 'ⵡ',
- '⺟' => '母',
- '⻳' => '龟',
- '⼀' => '一',
- '⼁' => '丨',
- '⼂' => '丶',
- '⼃' => '丿',
- '⼄' => '乙',
- '⼅' => '亅',
- '⼆' => '二',
- '⼇' => '亠',
- '⼈' => '人',
- '⼉' => '儿',
- '⼊' => '入',
- '⼋' => '八',
- '⼌' => '冂',
- '⼍' => '冖',
- '⼎' => '冫',
- '⼏' => '几',
- '⼐' => '凵',
- '⼑' => '刀',
- '⼒' => '力',
- '⼓' => '勹',
- '⼔' => '匕',
- '⼕' => '匚',
- '⼖' => '匸',
- '⼗' => '十',
- '⼘' => '卜',
- '⼙' => '卩',
- '⼚' => '厂',
- '⼛' => '厶',
- '⼜' => '又',
- '⼝' => '口',
- '⼞' => '囗',
- '⼟' => '土',
- '⼠' => '士',
- '⼡' => '夂',
- '⼢' => '夊',
- '⼣' => '夕',
- '⼤' => '大',
- '⼥' => '女',
- '⼦' => '子',
- '⼧' => '宀',
- '⼨' => '寸',
- '⼩' => '小',
- '⼪' => '尢',
- '⼫' => '尸',
- '⼬' => '屮',
- '⼭' => '山',
- '⼮' => '巛',
- '⼯' => '工',
- '⼰' => '己',
- '⼱' => '巾',
- '⼲' => '干',
- '⼳' => '幺',
- '⼴' => '广',
- '⼵' => '廴',
- '⼶' => '廾',
- '⼷' => '弋',
- '⼸' => '弓',
- '⼹' => '彐',
- '⼺' => '彡',
- '⼻' => '彳',
- '⼼' => '心',
- '⼽' => '戈',
- '⼾' => '戶',
- '⼿' => '手',
- '⽀' => '支',
- '⽁' => '攴',
- '⽂' => '文',
- '⽃' => '斗',
- '⽄' => '斤',
- '⽅' => '方',
- '⽆' => '无',
- '⽇' => '日',
- '⽈' => '曰',
- '⽉' => '月',
- '⽊' => '木',
- '⽋' => '欠',
- '⽌' => '止',
- '⽍' => '歹',
- '⽎' => '殳',
- '⽏' => '毋',
- '⽐' => '比',
- '⽑' => '毛',
- '⽒' => '氏',
- '⽓' => '气',
- '⽔' => '水',
- '⽕' => '火',
- '⽖' => '爪',
- '⽗' => '父',
- '⽘' => '爻',
- '⽙' => '爿',
- '⽚' => '片',
- '⽛' => '牙',
- '⽜' => '牛',
- '⽝' => '犬',
- '⽞' => '玄',
- '⽟' => '玉',
- '⽠' => '瓜',
- '⽡' => '瓦',
- '⽢' => '甘',
- '⽣' => '生',
- '⽤' => '用',
- '⽥' => '田',
- '⽦' => '疋',
- '⽧' => '疒',
- '⽨' => '癶',
- '⽩' => '白',
- '⽪' => '皮',
- '⽫' => '皿',
- '⽬' => '目',
- '⽭' => '矛',
- '⽮' => '矢',
- '⽯' => '石',
- '⽰' => '示',
- '⽱' => '禸',
- '⽲' => '禾',
- '⽳' => '穴',
- '⽴' => '立',
- '⽵' => '竹',
- '⽶' => '米',
- '⽷' => '糸',
- '⽸' => '缶',
- '⽹' => '网',
- '⽺' => '羊',
- '⽻' => '羽',
- '⽼' => '老',
- '⽽' => '而',
- '⽾' => '耒',
- '⽿' => '耳',
- '⾀' => '聿',
- '⾁' => '肉',
- '⾂' => '臣',
- '⾃' => '自',
- '⾄' => '至',
- '⾅' => '臼',
- '⾆' => '舌',
- '⾇' => '舛',
- '⾈' => '舟',
- '⾉' => '艮',
- '⾊' => '色',
- '⾋' => '艸',
- '⾌' => '虍',
- '⾍' => '虫',
- '⾎' => '血',
- '⾏' => '行',
- '⾐' => '衣',
- '⾑' => '襾',
- '⾒' => '見',
- '⾓' => '角',
- '⾔' => '言',
- '⾕' => '谷',
- '⾖' => '豆',
- '⾗' => '豕',
- '⾘' => '豸',
- '⾙' => '貝',
- '⾚' => '赤',
- '⾛' => '走',
- '⾜' => '足',
- '⾝' => '身',
- '⾞' => '車',
- '⾟' => '辛',
- '⾠' => '辰',
- '⾡' => '辵',
- '⾢' => '邑',
- '⾣' => '酉',
- '⾤' => '釆',
- '⾥' => '里',
- '⾦' => '金',
- '⾧' => '長',
- '⾨' => '門',
- '⾩' => '阜',
- '⾪' => '隶',
- '⾫' => '隹',
- '⾬' => '雨',
- '⾭' => '靑',
- '⾮' => '非',
- '⾯' => '面',
- '⾰' => '革',
- '⾱' => '韋',
- '⾲' => '韭',
- '⾳' => '音',
- '⾴' => '頁',
- '⾵' => '風',
- '⾶' => '飛',
- '⾷' => '食',
- '⾸' => '首',
- '⾹' => '香',
- '⾺' => '馬',
- '⾻' => '骨',
- '⾼' => '高',
- '⾽' => '髟',
- '⾾' => '鬥',
- '⾿' => '鬯',
- '⿀' => '鬲',
- '⿁' => '鬼',
- '⿂' => '魚',
- '⿃' => '鳥',
- '⿄' => '鹵',
- '⿅' => '鹿',
- '⿆' => '麥',
- '⿇' => '麻',
- '⿈' => '黃',
- '⿉' => '黍',
- '⿊' => '黑',
- '⿋' => '黹',
- '⿌' => '黽',
- '⿍' => '鼎',
- '⿎' => '鼓',
- '⿏' => '鼠',
- '⿐' => '鼻',
- '⿑' => '齊',
- '⿒' => '齒',
- '⿓' => '龍',
- '⿔' => '龜',
- '⿕' => '龠',
- ' ' => ' ',
- '〶' => '〒',
- '〸' => '十',
- '〹' => '卄',
- '〺' => '卅',
- '゛' => ' ゙',
- '゜' => ' ゚',
- 'ゟ' => 'より',
- 'ヿ' => 'コト',
- 'ㄱ' => 'ᄀ',
- 'ㄲ' => 'ᄁ',
- 'ㄳ' => 'ᆪ',
- 'ㄴ' => 'ᄂ',
- 'ㄵ' => 'ᆬ',
- 'ㄶ' => 'ᆭ',
- 'ㄷ' => 'ᄃ',
- 'ㄸ' => 'ᄄ',
- 'ㄹ' => 'ᄅ',
- 'ㄺ' => 'ᆰ',
- 'ㄻ' => 'ᆱ',
- 'ㄼ' => 'ᆲ',
- 'ㄽ' => 'ᆳ',
- 'ㄾ' => 'ᆴ',
- 'ㄿ' => 'ᆵ',
- 'ㅀ' => 'ᄚ',
- 'ㅁ' => 'ᄆ',
- 'ㅂ' => 'ᄇ',
- 'ㅃ' => 'ᄈ',
- 'ㅄ' => 'ᄡ',
- 'ㅅ' => 'ᄉ',
- 'ㅆ' => 'ᄊ',
- 'ㅇ' => 'ᄋ',
- 'ㅈ' => 'ᄌ',
- 'ㅉ' => 'ᄍ',
- 'ㅊ' => 'ᄎ',
- 'ㅋ' => 'ᄏ',
- 'ㅌ' => 'ᄐ',
- 'ㅍ' => 'ᄑ',
- 'ㅎ' => 'ᄒ',
- 'ㅏ' => 'ᅡ',
- 'ㅐ' => 'ᅢ',
- 'ㅑ' => 'ᅣ',
- 'ㅒ' => 'ᅤ',
- 'ㅓ' => 'ᅥ',
- 'ㅔ' => 'ᅦ',
- 'ㅕ' => 'ᅧ',
- 'ㅖ' => 'ᅨ',
- 'ㅗ' => 'ᅩ',
- 'ㅘ' => 'ᅪ',
- 'ㅙ' => 'ᅫ',
- 'ㅚ' => 'ᅬ',
- 'ㅛ' => 'ᅭ',
- 'ㅜ' => 'ᅮ',
- 'ㅝ' => 'ᅯ',
- 'ㅞ' => 'ᅰ',
- 'ㅟ' => 'ᅱ',
- 'ㅠ' => 'ᅲ',
- 'ㅡ' => 'ᅳ',
- 'ㅢ' => 'ᅴ',
- 'ㅣ' => 'ᅵ',
- 'ㅤ' => 'ᅠ',
- 'ㅥ' => 'ᄔ',
- 'ㅦ' => 'ᄕ',
- 'ㅧ' => 'ᇇ',
- 'ㅨ' => 'ᇈ',
- 'ㅩ' => 'ᇌ',
- 'ㅪ' => 'ᇎ',
- 'ㅫ' => 'ᇓ',
- 'ㅬ' => 'ᇗ',
- 'ㅭ' => 'ᇙ',
- 'ㅮ' => 'ᄜ',
- 'ㅯ' => 'ᇝ',
- 'ㅰ' => 'ᇟ',
- 'ㅱ' => 'ᄝ',
- 'ㅲ' => 'ᄞ',
- 'ㅳ' => 'ᄠ',
- 'ㅴ' => 'ᄢ',
- 'ㅵ' => 'ᄣ',
- 'ㅶ' => 'ᄧ',
- 'ㅷ' => 'ᄩ',
- 'ㅸ' => 'ᄫ',
- 'ㅹ' => 'ᄬ',
- 'ㅺ' => 'ᄭ',
- 'ㅻ' => 'ᄮ',
- 'ㅼ' => 'ᄯ',
- 'ㅽ' => 'ᄲ',
- 'ㅾ' => 'ᄶ',
- 'ㅿ' => 'ᅀ',
- 'ㆀ' => 'ᅇ',
- 'ㆁ' => 'ᅌ',
- 'ㆂ' => 'ᇱ',
- 'ㆃ' => 'ᇲ',
- 'ㆄ' => 'ᅗ',
- 'ㆅ' => 'ᅘ',
- 'ㆆ' => 'ᅙ',
- 'ㆇ' => 'ᆄ',
- 'ㆈ' => 'ᆅ',
- 'ㆉ' => 'ᆈ',
- 'ㆊ' => 'ᆑ',
- 'ㆋ' => 'ᆒ',
- 'ㆌ' => 'ᆔ',
- 'ㆍ' => 'ᆞ',
- 'ㆎ' => 'ᆡ',
- '㆒' => '一',
- '㆓' => '二',
- '㆔' => '三',
- '㆕' => '四',
- '㆖' => '上',
- '㆗' => '中',
- '㆘' => '下',
- '㆙' => '甲',
- '㆚' => '乙',
- '㆛' => '丙',
- '㆜' => '丁',
- '㆝' => '天',
- '㆞' => '地',
- '㆟' => '人',
- '㈀' => '(ᄀ)',
- '㈁' => '(ᄂ)',
- '㈂' => '(ᄃ)',
- '㈃' => '(ᄅ)',
- '㈄' => '(ᄆ)',
- '㈅' => '(ᄇ)',
- '㈆' => '(ᄉ)',
- '㈇' => '(ᄋ)',
- '㈈' => '(ᄌ)',
- '㈉' => '(ᄎ)',
- '㈊' => '(ᄏ)',
- '㈋' => '(ᄐ)',
- '㈌' => '(ᄑ)',
- '㈍' => '(ᄒ)',
- '㈎' => '(가)',
- '㈏' => '(나)',
- '㈐' => '(다)',
- '㈑' => '(라)',
- '㈒' => '(마)',
- '㈓' => '(바)',
- '㈔' => '(사)',
- '㈕' => '(아)',
- '㈖' => '(자)',
- '㈗' => '(차)',
- '㈘' => '(카)',
- '㈙' => '(타)',
- '㈚' => '(파)',
- '㈛' => '(하)',
- '㈜' => '(주)',
- '㈝' => '(오전)',
- '㈞' => '(오후)',
- '㈠' => '(一)',
- '㈡' => '(二)',
- '㈢' => '(三)',
- '㈣' => '(四)',
- '㈤' => '(五)',
- '㈥' => '(六)',
- '㈦' => '(七)',
- '㈧' => '(八)',
- '㈨' => '(九)',
- '㈩' => '(十)',
- '㈪' => '(月)',
- '㈫' => '(火)',
- '㈬' => '(水)',
- '㈭' => '(木)',
- '㈮' => '(金)',
- '㈯' => '(土)',
- '㈰' => '(日)',
- '㈱' => '(株)',
- '㈲' => '(有)',
- '㈳' => '(社)',
- '㈴' => '(名)',
- '㈵' => '(特)',
- '㈶' => '(財)',
- '㈷' => '(祝)',
- '㈸' => '(労)',
- '㈹' => '(代)',
- '㈺' => '(呼)',
- '㈻' => '(学)',
- '㈼' => '(監)',
- '㈽' => '(企)',
- '㈾' => '(資)',
- '㈿' => '(協)',
- '㉀' => '(祭)',
- '㉁' => '(休)',
- '㉂' => '(自)',
- '㉃' => '(至)',
- '㉄' => '問',
- '㉅' => '幼',
- '㉆' => '文',
- '㉇' => '箏',
- '㉐' => 'PTE',
- '㉑' => '21',
- '㉒' => '22',
- '㉓' => '23',
- '㉔' => '24',
- '㉕' => '25',
- '㉖' => '26',
- '㉗' => '27',
- '㉘' => '28',
- '㉙' => '29',
- '㉚' => '30',
- '㉛' => '31',
- '㉜' => '32',
- '㉝' => '33',
- '㉞' => '34',
- '㉟' => '35',
- '㉠' => 'ᄀ',
- '㉡' => 'ᄂ',
- '㉢' => 'ᄃ',
- '㉣' => 'ᄅ',
- '㉤' => 'ᄆ',
- '㉥' => 'ᄇ',
- '㉦' => 'ᄉ',
- '㉧' => 'ᄋ',
- '㉨' => 'ᄌ',
- '㉩' => 'ᄎ',
- '㉪' => 'ᄏ',
- '㉫' => 'ᄐ',
- '㉬' => 'ᄑ',
- '㉭' => 'ᄒ',
- '㉮' => '가',
- '㉯' => '나',
- '㉰' => '다',
- '㉱' => '라',
- '㉲' => '마',
- '㉳' => '바',
- '㉴' => '사',
- '㉵' => '아',
- '㉶' => '자',
- '㉷' => '차',
- '㉸' => '카',
- '㉹' => '타',
- '㉺' => '파',
- '㉻' => '하',
- '㉼' => '참고',
- '㉽' => '주의',
- '㉾' => '우',
- '㊀' => '一',
- '㊁' => '二',
- '㊂' => '三',
- '㊃' => '四',
- '㊄' => '五',
- '㊅' => '六',
- '㊆' => '七',
- '㊇' => '八',
- '㊈' => '九',
- '㊉' => '十',
- '㊊' => '月',
- '㊋' => '火',
- '㊌' => '水',
- '㊍' => '木',
- '㊎' => '金',
- '㊏' => '土',
- '㊐' => '日',
- '㊑' => '株',
- '㊒' => '有',
- '㊓' => '社',
- '㊔' => '名',
- '㊕' => '特',
- '㊖' => '財',
- '㊗' => '祝',
- '㊘' => '労',
- '㊙' => '秘',
- '㊚' => '男',
- '㊛' => '女',
- '㊜' => '適',
- '㊝' => '優',
- '㊞' => '印',
- '㊟' => '注',
- '㊠' => '項',
- '㊡' => '休',
- '㊢' => '写',
- '㊣' => '正',
- '㊤' => '上',
- '㊥' => '中',
- '㊦' => '下',
- '㊧' => '左',
- '㊨' => '右',
- '㊩' => '医',
- '㊪' => '宗',
- '㊫' => '学',
- '㊬' => '監',
- '㊭' => '企',
- '㊮' => '資',
- '㊯' => '協',
- '㊰' => '夜',
- '㊱' => '36',
- '㊲' => '37',
- '㊳' => '38',
- '㊴' => '39',
- '㊵' => '40',
- '㊶' => '41',
- '㊷' => '42',
- '㊸' => '43',
- '㊹' => '44',
- '㊺' => '45',
- '㊻' => '46',
- '㊼' => '47',
- '㊽' => '48',
- '㊾' => '49',
- '㊿' => '50',
- '㋀' => '1月',
- '㋁' => '2月',
- '㋂' => '3月',
- '㋃' => '4月',
- '㋄' => '5月',
- '㋅' => '6月',
- '㋆' => '7月',
- '㋇' => '8月',
- '㋈' => '9月',
- '㋉' => '10月',
- '㋊' => '11月',
- '㋋' => '12月',
- '㋌' => 'Hg',
- '㋍' => 'erg',
- '㋎' => 'eV',
- '㋏' => 'LTD',
- '㋐' => 'ア',
- '㋑' => 'イ',
- '㋒' => 'ウ',
- '㋓' => 'エ',
- '㋔' => 'オ',
- '㋕' => 'カ',
- '㋖' => 'キ',
- '㋗' => 'ク',
- '㋘' => 'ケ',
- '㋙' => 'コ',
- '㋚' => 'サ',
- '㋛' => 'シ',
- '㋜' => 'ス',
- '㋝' => 'セ',
- '㋞' => 'ソ',
- '㋟' => 'タ',
- '㋠' => 'チ',
- '㋡' => 'ツ',
- '㋢' => 'テ',
- '㋣' => 'ト',
- '㋤' => 'ナ',
- '㋥' => 'ニ',
- '㋦' => 'ヌ',
- '㋧' => 'ネ',
- '㋨' => 'ノ',
- '㋩' => 'ハ',
- '㋪' => 'ヒ',
- '㋫' => 'フ',
- '㋬' => 'ヘ',
- '㋭' => 'ホ',
- '㋮' => 'マ',
- '㋯' => 'ミ',
- '㋰' => 'ム',
- '㋱' => 'メ',
- '㋲' => 'モ',
- '㋳' => 'ヤ',
- '㋴' => 'ユ',
- '㋵' => 'ヨ',
- '㋶' => 'ラ',
- '㋷' => 'リ',
- '㋸' => 'ル',
- '㋹' => 'レ',
- '㋺' => 'ロ',
- '㋻' => 'ワ',
- '㋼' => 'ヰ',
- '㋽' => 'ヱ',
- '㋾' => 'ヲ',
- '㋿' => '令和',
- '㌀' => 'アパート',
- '㌁' => 'アルファ',
- '㌂' => 'アンペア',
- '㌃' => 'アール',
- '㌄' => 'イニング',
- '㌅' => 'インチ',
- '㌆' => 'ウォン',
- '㌇' => 'エスクード',
- '㌈' => 'エーカー',
- '㌉' => 'オンス',
- '㌊' => 'オーム',
- '㌋' => 'カイリ',
- '㌌' => 'カラット',
- '㌍' => 'カロリー',
- '㌎' => 'ガロン',
- '㌏' => 'ガンマ',
- '㌐' => 'ギガ',
- '㌑' => 'ギニー',
- '㌒' => 'キュリー',
- '㌓' => 'ギルダー',
- '㌔' => 'キロ',
- '㌕' => 'キログラム',
- '㌖' => 'キロメートル',
- '㌗' => 'キロワット',
- '㌘' => 'グラム',
- '㌙' => 'グラムトン',
- '㌚' => 'クルゼイロ',
- '㌛' => 'クローネ',
- '㌜' => 'ケース',
- '㌝' => 'コルナ',
- '㌞' => 'コーポ',
- '㌟' => 'サイクル',
- '㌠' => 'サンチーム',
- '㌡' => 'シリング',
- '㌢' => 'センチ',
- '㌣' => 'セント',
- '㌤' => 'ダース',
- '㌥' => 'デシ',
- '㌦' => 'ドル',
- '㌧' => 'トン',
- '㌨' => 'ナノ',
- '㌩' => 'ノット',
- '㌪' => 'ハイツ',
- '㌫' => 'パーセント',
- '㌬' => 'パーツ',
- '㌭' => 'バーレル',
- '㌮' => 'ピアストル',
- '㌯' => 'ピクル',
- '㌰' => 'ピコ',
- '㌱' => 'ビル',
- '㌲' => 'ファラッド',
- '㌳' => 'フィート',
- '㌴' => 'ブッシェル',
- '㌵' => 'フラン',
- '㌶' => 'ヘクタール',
- '㌷' => 'ペソ',
- '㌸' => 'ペニヒ',
- '㌹' => 'ヘルツ',
- '㌺' => 'ペンス',
- '㌻' => 'ページ',
- '㌼' => 'ベータ',
- '㌽' => 'ポイント',
- '㌾' => 'ボルト',
- '㌿' => 'ホン',
- '㍀' => 'ポンド',
- '㍁' => 'ホール',
- '㍂' => 'ホーン',
- '㍃' => 'マイクロ',
- '㍄' => 'マイル',
- '㍅' => 'マッハ',
- '㍆' => 'マルク',
- '㍇' => 'マンション',
- '㍈' => 'ミクロン',
- '㍉' => 'ミリ',
- '㍊' => 'ミリバール',
- '㍋' => 'メガ',
- '㍌' => 'メガトン',
- '㍍' => 'メートル',
- '㍎' => 'ヤード',
- '㍏' => 'ヤール',
- '㍐' => 'ユアン',
- '㍑' => 'リットル',
- '㍒' => 'リラ',
- '㍓' => 'ルピー',
- '㍔' => 'ルーブル',
- '㍕' => 'レム',
- '㍖' => 'レントゲン',
- '㍗' => 'ワット',
- '㍘' => '0点',
- '㍙' => '1点',
- '㍚' => '2点',
- '㍛' => '3点',
- '㍜' => '4点',
- '㍝' => '5点',
- '㍞' => '6点',
- '㍟' => '7点',
- '㍠' => '8点',
- '㍡' => '9点',
- '㍢' => '10点',
- '㍣' => '11点',
- '㍤' => '12点',
- '㍥' => '13点',
- '㍦' => '14点',
- '㍧' => '15点',
- '㍨' => '16点',
- '㍩' => '17点',
- '㍪' => '18点',
- '㍫' => '19点',
- '㍬' => '20点',
- '㍭' => '21点',
- '㍮' => '22点',
- '㍯' => '23点',
- '㍰' => '24点',
- '㍱' => 'hPa',
- '㍲' => 'da',
- '㍳' => 'AU',
- '㍴' => 'bar',
- '㍵' => 'oV',
- '㍶' => 'pc',
- '㍷' => 'dm',
- '㍸' => 'dm2',
- '㍹' => 'dm3',
- '㍺' => 'IU',
- '㍻' => '平成',
- '㍼' => '昭和',
- '㍽' => '大正',
- '㍾' => '明治',
- '㍿' => '株式会社',
- '㎀' => 'pA',
- '㎁' => 'nA',
- '㎂' => 'μA',
- '㎃' => 'mA',
- '㎄' => 'kA',
- '㎅' => 'KB',
- '㎆' => 'MB',
- '㎇' => 'GB',
- '㎈' => 'cal',
- '㎉' => 'kcal',
- '㎊' => 'pF',
- '㎋' => 'nF',
- '㎌' => 'μF',
- '㎍' => 'μg',
- '㎎' => 'mg',
- '㎏' => 'kg',
- '㎐' => 'Hz',
- '㎑' => 'kHz',
- '㎒' => 'MHz',
- '㎓' => 'GHz',
- '㎔' => 'THz',
- '㎕' => 'μl',
- '㎖' => 'ml',
- '㎗' => 'dl',
- '㎘' => 'kl',
- '㎙' => 'fm',
- '㎚' => 'nm',
- '㎛' => 'μm',
- '㎜' => 'mm',
- '㎝' => 'cm',
- '㎞' => 'km',
- '㎟' => 'mm2',
- '㎠' => 'cm2',
- '㎡' => 'm2',
- '㎢' => 'km2',
- '㎣' => 'mm3',
- '㎤' => 'cm3',
- '㎥' => 'm3',
- '㎦' => 'km3',
- '㎧' => 'm∕s',
- '㎨' => 'm∕s2',
- '㎩' => 'Pa',
- '㎪' => 'kPa',
- '㎫' => 'MPa',
- '㎬' => 'GPa',
- '㎭' => 'rad',
- '㎮' => 'rad∕s',
- '㎯' => 'rad∕s2',
- '㎰' => 'ps',
- '㎱' => 'ns',
- '㎲' => 'μs',
- '㎳' => 'ms',
- '㎴' => 'pV',
- '㎵' => 'nV',
- '㎶' => 'μV',
- '㎷' => 'mV',
- '㎸' => 'kV',
- '㎹' => 'MV',
- '㎺' => 'pW',
- '㎻' => 'nW',
- '㎼' => 'μW',
- '㎽' => 'mW',
- '㎾' => 'kW',
- '㎿' => 'MW',
- '㏀' => 'kΩ',
- '㏁' => 'MΩ',
- '㏂' => 'a.m.',
- '㏃' => 'Bq',
- '㏄' => 'cc',
- '㏅' => 'cd',
- '㏆' => 'C∕kg',
- '㏇' => 'Co.',
- '㏈' => 'dB',
- '㏉' => 'Gy',
- '㏊' => 'ha',
- '㏋' => 'HP',
- '㏌' => 'in',
- '㏍' => 'KK',
- '㏎' => 'KM',
- '㏏' => 'kt',
- '㏐' => 'lm',
- '㏑' => 'ln',
- '㏒' => 'log',
- '㏓' => 'lx',
- '㏔' => 'mb',
- '㏕' => 'mil',
- '㏖' => 'mol',
- '㏗' => 'PH',
- '㏘' => 'p.m.',
- '㏙' => 'PPM',
- '㏚' => 'PR',
- '㏛' => 'sr',
- '㏜' => 'Sv',
- '㏝' => 'Wb',
- '㏞' => 'V∕m',
- '㏟' => 'A∕m',
- '㏠' => '1日',
- '㏡' => '2日',
- '㏢' => '3日',
- '㏣' => '4日',
- '㏤' => '5日',
- '㏥' => '6日',
- '㏦' => '7日',
- '㏧' => '8日',
- '㏨' => '9日',
- '㏩' => '10日',
- '㏪' => '11日',
- '㏫' => '12日',
- '㏬' => '13日',
- '㏭' => '14日',
- '㏮' => '15日',
- '㏯' => '16日',
- '㏰' => '17日',
- '㏱' => '18日',
- '㏲' => '19日',
- '㏳' => '20日',
- '㏴' => '21日',
- '㏵' => '22日',
- '㏶' => '23日',
- '㏷' => '24日',
- '㏸' => '25日',
- '㏹' => '26日',
- '㏺' => '27日',
- '㏻' => '28日',
- '㏼' => '29日',
- '㏽' => '30日',
- '㏾' => '31日',
- '㏿' => 'gal',
- 'ꚜ' => 'ъ',
- 'ꚝ' => 'ь',
- 'ꝰ' => 'ꝯ',
- 'ꟸ' => 'Ħ',
- 'ꟹ' => 'œ',
- 'ꭜ' => 'ꜧ',
- 'ꭝ' => 'ꬷ',
- 'ꭞ' => 'ɫ',
- 'ꭟ' => 'ꭒ',
- 'ꭩ' => 'ʍ',
- 'ff' => 'ff',
- 'fi' => 'fi',
- 'fl' => 'fl',
- 'ffi' => 'ffi',
- 'ffl' => 'ffl',
- 'ſt' => 'st',
- 'st' => 'st',
- 'ﬓ' => 'մն',
- 'ﬔ' => 'մե',
- 'ﬕ' => 'մի',
- 'ﬖ' => 'վն',
- 'ﬗ' => 'մխ',
- 'ﬠ' => 'ע',
- 'ﬡ' => 'א',
- 'ﬢ' => 'ד',
- 'ﬣ' => 'ה',
- 'ﬤ' => 'כ',
- 'ﬥ' => 'ל',
- 'ﬦ' => 'ם',
- 'ﬧ' => 'ר',
- 'ﬨ' => 'ת',
- '﬩' => '+',
- 'ﭏ' => 'אל',
- 'ﭐ' => 'ٱ',
- 'ﭑ' => 'ٱ',
- 'ﭒ' => 'ٻ',
- 'ﭓ' => 'ٻ',
- 'ﭔ' => 'ٻ',
- 'ﭕ' => 'ٻ',
- 'ﭖ' => 'پ',
- 'ﭗ' => 'پ',
- 'ﭘ' => 'پ',
- 'ﭙ' => 'پ',
- 'ﭚ' => 'ڀ',
- 'ﭛ' => 'ڀ',
- 'ﭜ' => 'ڀ',
- 'ﭝ' => 'ڀ',
- 'ﭞ' => 'ٺ',
- 'ﭟ' => 'ٺ',
- 'ﭠ' => 'ٺ',
- 'ﭡ' => 'ٺ',
- 'ﭢ' => 'ٿ',
- 'ﭣ' => 'ٿ',
- 'ﭤ' => 'ٿ',
- 'ﭥ' => 'ٿ',
- 'ﭦ' => 'ٹ',
- 'ﭧ' => 'ٹ',
- 'ﭨ' => 'ٹ',
- 'ﭩ' => 'ٹ',
- 'ﭪ' => 'ڤ',
- 'ﭫ' => 'ڤ',
- 'ﭬ' => 'ڤ',
- 'ﭭ' => 'ڤ',
- 'ﭮ' => 'ڦ',
- 'ﭯ' => 'ڦ',
- 'ﭰ' => 'ڦ',
- 'ﭱ' => 'ڦ',
- 'ﭲ' => 'ڄ',
- 'ﭳ' => 'ڄ',
- 'ﭴ' => 'ڄ',
- 'ﭵ' => 'ڄ',
- 'ﭶ' => 'ڃ',
- 'ﭷ' => 'ڃ',
- 'ﭸ' => 'ڃ',
- 'ﭹ' => 'ڃ',
- 'ﭺ' => 'چ',
- 'ﭻ' => 'چ',
- 'ﭼ' => 'چ',
- 'ﭽ' => 'چ',
- 'ﭾ' => 'ڇ',
- 'ﭿ' => 'ڇ',
- 'ﮀ' => 'ڇ',
- 'ﮁ' => 'ڇ',
- 'ﮂ' => 'ڍ',
- 'ﮃ' => 'ڍ',
- 'ﮄ' => 'ڌ',
- 'ﮅ' => 'ڌ',
- 'ﮆ' => 'ڎ',
- 'ﮇ' => 'ڎ',
- 'ﮈ' => 'ڈ',
- 'ﮉ' => 'ڈ',
- 'ﮊ' => 'ژ',
- 'ﮋ' => 'ژ',
- 'ﮌ' => 'ڑ',
- 'ﮍ' => 'ڑ',
- 'ﮎ' => 'ک',
- 'ﮏ' => 'ک',
- 'ﮐ' => 'ک',
- 'ﮑ' => 'ک',
- 'ﮒ' => 'گ',
- 'ﮓ' => 'گ',
- 'ﮔ' => 'گ',
- 'ﮕ' => 'گ',
- 'ﮖ' => 'ڳ',
- 'ﮗ' => 'ڳ',
- 'ﮘ' => 'ڳ',
- 'ﮙ' => 'ڳ',
- 'ﮚ' => 'ڱ',
- 'ﮛ' => 'ڱ',
- 'ﮜ' => 'ڱ',
- 'ﮝ' => 'ڱ',
- 'ﮞ' => 'ں',
- 'ﮟ' => 'ں',
- 'ﮠ' => 'ڻ',
- 'ﮡ' => 'ڻ',
- 'ﮢ' => 'ڻ',
- 'ﮣ' => 'ڻ',
- 'ﮤ' => 'ۀ',
- 'ﮥ' => 'ۀ',
- 'ﮦ' => 'ہ',
- 'ﮧ' => 'ہ',
- 'ﮨ' => 'ہ',
- 'ﮩ' => 'ہ',
- 'ﮪ' => 'ھ',
- 'ﮫ' => 'ھ',
- 'ﮬ' => 'ھ',
- 'ﮭ' => 'ھ',
- 'ﮮ' => 'ے',
- 'ﮯ' => 'ے',
- 'ﮰ' => 'ۓ',
- 'ﮱ' => 'ۓ',
- 'ﯓ' => 'ڭ',
- 'ﯔ' => 'ڭ',
- 'ﯕ' => 'ڭ',
- 'ﯖ' => 'ڭ',
- 'ﯗ' => 'ۇ',
- 'ﯘ' => 'ۇ',
- 'ﯙ' => 'ۆ',
- 'ﯚ' => 'ۆ',
- 'ﯛ' => 'ۈ',
- 'ﯜ' => 'ۈ',
- 'ﯝ' => 'ۇٴ',
- 'ﯞ' => 'ۋ',
- 'ﯟ' => 'ۋ',
- 'ﯠ' => 'ۅ',
- 'ﯡ' => 'ۅ',
- 'ﯢ' => 'ۉ',
- 'ﯣ' => 'ۉ',
- 'ﯤ' => 'ې',
- 'ﯥ' => 'ې',
- 'ﯦ' => 'ې',
- 'ﯧ' => 'ې',
- 'ﯨ' => 'ى',
- 'ﯩ' => 'ى',
- 'ﯪ' => 'ئا',
- 'ﯫ' => 'ئا',
- 'ﯬ' => 'ئە',
- 'ﯭ' => 'ئە',
- 'ﯮ' => 'ئو',
- 'ﯯ' => 'ئو',
- 'ﯰ' => 'ئۇ',
- 'ﯱ' => 'ئۇ',
- 'ﯲ' => 'ئۆ',
- 'ﯳ' => 'ئۆ',
- 'ﯴ' => 'ئۈ',
- 'ﯵ' => 'ئۈ',
- 'ﯶ' => 'ئې',
- 'ﯷ' => 'ئې',
- 'ﯸ' => 'ئې',
- 'ﯹ' => 'ئى',
- 'ﯺ' => 'ئى',
- 'ﯻ' => 'ئى',
- 'ﯼ' => 'ی',
- 'ﯽ' => 'ی',
- 'ﯾ' => 'ی',
- 'ﯿ' => 'ی',
- 'ﰀ' => 'ئج',
- 'ﰁ' => 'ئح',
- 'ﰂ' => 'ئم',
- 'ﰃ' => 'ئى',
- 'ﰄ' => 'ئي',
- 'ﰅ' => 'بج',
- 'ﰆ' => 'بح',
- 'ﰇ' => 'بخ',
- 'ﰈ' => 'بم',
- 'ﰉ' => 'بى',
- 'ﰊ' => 'بي',
- 'ﰋ' => 'تج',
- 'ﰌ' => 'تح',
- 'ﰍ' => 'تخ',
- 'ﰎ' => 'تم',
- 'ﰏ' => 'تى',
- 'ﰐ' => 'تي',
- 'ﰑ' => 'ثج',
- 'ﰒ' => 'ثم',
- 'ﰓ' => 'ثى',
- 'ﰔ' => 'ثي',
- 'ﰕ' => 'جح',
- 'ﰖ' => 'جم',
- 'ﰗ' => 'حج',
- 'ﰘ' => 'حم',
- 'ﰙ' => 'خج',
- 'ﰚ' => 'خح',
- 'ﰛ' => 'خم',
- 'ﰜ' => 'سج',
- 'ﰝ' => 'سح',
- 'ﰞ' => 'سخ',
- 'ﰟ' => 'سم',
- 'ﰠ' => 'صح',
- 'ﰡ' => 'صم',
- 'ﰢ' => 'ضج',
- 'ﰣ' => 'ضح',
- 'ﰤ' => 'ضخ',
- 'ﰥ' => 'ضم',
- 'ﰦ' => 'طح',
- 'ﰧ' => 'طم',
- 'ﰨ' => 'ظم',
- 'ﰩ' => 'عج',
- 'ﰪ' => 'عم',
- 'ﰫ' => 'غج',
- 'ﰬ' => 'غم',
- 'ﰭ' => 'فج',
- 'ﰮ' => 'فح',
- 'ﰯ' => 'فخ',
- 'ﰰ' => 'فم',
- 'ﰱ' => 'فى',
- 'ﰲ' => 'في',
- 'ﰳ' => 'قح',
- 'ﰴ' => 'قم',
- 'ﰵ' => 'قى',
- 'ﰶ' => 'قي',
- 'ﰷ' => 'كا',
- 'ﰸ' => 'كج',
- 'ﰹ' => 'كح',
- 'ﰺ' => 'كخ',
- 'ﰻ' => 'كل',
- 'ﰼ' => 'كم',
- 'ﰽ' => 'كى',
- 'ﰾ' => 'كي',
- 'ﰿ' => 'لج',
- 'ﱀ' => 'لح',
- 'ﱁ' => 'لخ',
- 'ﱂ' => 'لم',
- 'ﱃ' => 'لى',
- 'ﱄ' => 'لي',
- 'ﱅ' => 'مج',
- 'ﱆ' => 'مح',
- 'ﱇ' => 'مخ',
- 'ﱈ' => 'مم',
- 'ﱉ' => 'مى',
- 'ﱊ' => 'مي',
- 'ﱋ' => 'نج',
- 'ﱌ' => 'نح',
- 'ﱍ' => 'نخ',
- 'ﱎ' => 'نم',
- 'ﱏ' => 'نى',
- 'ﱐ' => 'ني',
- 'ﱑ' => 'هج',
- 'ﱒ' => 'هم',
- 'ﱓ' => 'هى',
- 'ﱔ' => 'هي',
- 'ﱕ' => 'يج',
- 'ﱖ' => 'يح',
- 'ﱗ' => 'يخ',
- 'ﱘ' => 'يم',
- 'ﱙ' => 'يى',
- 'ﱚ' => 'يي',
- 'ﱛ' => 'ذٰ',
- 'ﱜ' => 'رٰ',
- 'ﱝ' => 'ىٰ',
- 'ﱞ' => ' ٌّ',
- 'ﱟ' => ' ٍّ',
- 'ﱠ' => ' َّ',
- 'ﱡ' => ' ُّ',
- 'ﱢ' => ' ِّ',
- 'ﱣ' => ' ّٰ',
- 'ﱤ' => 'ئر',
- 'ﱥ' => 'ئز',
- 'ﱦ' => 'ئم',
- 'ﱧ' => 'ئن',
- 'ﱨ' => 'ئى',
- 'ﱩ' => 'ئي',
- 'ﱪ' => 'بر',
- 'ﱫ' => 'بز',
- 'ﱬ' => 'بم',
- 'ﱭ' => 'بن',
- 'ﱮ' => 'بى',
- 'ﱯ' => 'بي',
- 'ﱰ' => 'تر',
- 'ﱱ' => 'تز',
- 'ﱲ' => 'تم',
- 'ﱳ' => 'تن',
- 'ﱴ' => 'تى',
- 'ﱵ' => 'تي',
- 'ﱶ' => 'ثر',
- 'ﱷ' => 'ثز',
- 'ﱸ' => 'ثم',
- 'ﱹ' => 'ثن',
- 'ﱺ' => 'ثى',
- 'ﱻ' => 'ثي',
- 'ﱼ' => 'فى',
- 'ﱽ' => 'في',
- 'ﱾ' => 'قى',
- 'ﱿ' => 'قي',
- 'ﲀ' => 'كا',
- 'ﲁ' => 'كل',
- 'ﲂ' => 'كم',
- 'ﲃ' => 'كى',
- 'ﲄ' => 'كي',
- 'ﲅ' => 'لم',
- 'ﲆ' => 'لى',
- 'ﲇ' => 'لي',
- 'ﲈ' => 'ما',
- 'ﲉ' => 'مم',
- 'ﲊ' => 'نر',
- 'ﲋ' => 'نز',
- 'ﲌ' => 'نم',
- 'ﲍ' => 'نن',
- 'ﲎ' => 'نى',
- 'ﲏ' => 'ني',
- 'ﲐ' => 'ىٰ',
- 'ﲑ' => 'ير',
- 'ﲒ' => 'يز',
- 'ﲓ' => 'يم',
- 'ﲔ' => 'ين',
- 'ﲕ' => 'يى',
- 'ﲖ' => 'يي',
- 'ﲗ' => 'ئج',
- 'ﲘ' => 'ئح',
- 'ﲙ' => 'ئخ',
- 'ﲚ' => 'ئم',
- 'ﲛ' => 'ئه',
- 'ﲜ' => 'بج',
- 'ﲝ' => 'بح',
- 'ﲞ' => 'بخ',
- 'ﲟ' => 'بم',
- 'ﲠ' => 'به',
- 'ﲡ' => 'تج',
- 'ﲢ' => 'تح',
- 'ﲣ' => 'تخ',
- 'ﲤ' => 'تم',
- 'ﲥ' => 'ته',
- 'ﲦ' => 'ثم',
- 'ﲧ' => 'جح',
- 'ﲨ' => 'جم',
- 'ﲩ' => 'حج',
- 'ﲪ' => 'حم',
- 'ﲫ' => 'خج',
- 'ﲬ' => 'خم',
- 'ﲭ' => 'سج',
- 'ﲮ' => 'سح',
- 'ﲯ' => 'سخ',
- 'ﲰ' => 'سم',
- 'ﲱ' => 'صح',
- 'ﲲ' => 'صخ',
- 'ﲳ' => 'صم',
- 'ﲴ' => 'ضج',
- 'ﲵ' => 'ضح',
- 'ﲶ' => 'ضخ',
- 'ﲷ' => 'ضم',
- 'ﲸ' => 'طح',
- 'ﲹ' => 'ظم',
- 'ﲺ' => 'عج',
- 'ﲻ' => 'عم',
- 'ﲼ' => 'غج',
- 'ﲽ' => 'غم',
- 'ﲾ' => 'فج',
- 'ﲿ' => 'فح',
- 'ﳀ' => 'فخ',
- 'ﳁ' => 'فم',
- 'ﳂ' => 'قح',
- 'ﳃ' => 'قم',
- 'ﳄ' => 'كج',
- 'ﳅ' => 'كح',
- 'ﳆ' => 'كخ',
- 'ﳇ' => 'كل',
- 'ﳈ' => 'كم',
- 'ﳉ' => 'لج',
- 'ﳊ' => 'لح',
- 'ﳋ' => 'لخ',
- 'ﳌ' => 'لم',
- 'ﳍ' => 'له',
- 'ﳎ' => 'مج',
- 'ﳏ' => 'مح',
- 'ﳐ' => 'مخ',
- 'ﳑ' => 'مم',
- 'ﳒ' => 'نج',
- 'ﳓ' => 'نح',
- 'ﳔ' => 'نخ',
- 'ﳕ' => 'نم',
- 'ﳖ' => 'نه',
- 'ﳗ' => 'هج',
- 'ﳘ' => 'هم',
- 'ﳙ' => 'هٰ',
- 'ﳚ' => 'يج',
- 'ﳛ' => 'يح',
- 'ﳜ' => 'يخ',
- 'ﳝ' => 'يم',
- 'ﳞ' => 'يه',
- 'ﳟ' => 'ئم',
- 'ﳠ' => 'ئه',
- 'ﳡ' => 'بم',
- 'ﳢ' => 'به',
- 'ﳣ' => 'تم',
- 'ﳤ' => 'ته',
- 'ﳥ' => 'ثم',
- 'ﳦ' => 'ثه',
- 'ﳧ' => 'سم',
- 'ﳨ' => 'سه',
- 'ﳩ' => 'شم',
- 'ﳪ' => 'شه',
- 'ﳫ' => 'كل',
- 'ﳬ' => 'كم',
- 'ﳭ' => 'لم',
- 'ﳮ' => 'نم',
- 'ﳯ' => 'نه',
- 'ﳰ' => 'يم',
- 'ﳱ' => 'يه',
- 'ﳲ' => 'ـَّ',
- 'ﳳ' => 'ـُّ',
- 'ﳴ' => 'ـِّ',
- 'ﳵ' => 'طى',
- 'ﳶ' => 'طي',
- 'ﳷ' => 'عى',
- 'ﳸ' => 'عي',
- 'ﳹ' => 'غى',
- 'ﳺ' => 'غي',
- 'ﳻ' => 'سى',
- 'ﳼ' => 'سي',
- 'ﳽ' => 'شى',
- 'ﳾ' => 'شي',
- 'ﳿ' => 'حى',
- 'ﴀ' => 'حي',
- 'ﴁ' => 'جى',
- 'ﴂ' => 'جي',
- 'ﴃ' => 'خى',
- 'ﴄ' => 'خي',
- 'ﴅ' => 'صى',
- 'ﴆ' => 'صي',
- 'ﴇ' => 'ضى',
- 'ﴈ' => 'ضي',
- 'ﴉ' => 'شج',
- 'ﴊ' => 'شح',
- 'ﴋ' => 'شخ',
- 'ﴌ' => 'شم',
- 'ﴍ' => 'شر',
- 'ﴎ' => 'سر',
- 'ﴏ' => 'صر',
- 'ﴐ' => 'ضر',
- 'ﴑ' => 'طى',
- 'ﴒ' => 'طي',
- 'ﴓ' => 'عى',
- 'ﴔ' => 'عي',
- 'ﴕ' => 'غى',
- 'ﴖ' => 'غي',
- 'ﴗ' => 'سى',
- 'ﴘ' => 'سي',
- 'ﴙ' => 'شى',
- 'ﴚ' => 'شي',
- 'ﴛ' => 'حى',
- 'ﴜ' => 'حي',
- 'ﴝ' => 'جى',
- 'ﴞ' => 'جي',
- 'ﴟ' => 'خى',
- 'ﴠ' => 'خي',
- 'ﴡ' => 'صى',
- 'ﴢ' => 'صي',
- 'ﴣ' => 'ضى',
- 'ﴤ' => 'ضي',
- 'ﴥ' => 'شج',
- 'ﴦ' => 'شح',
- 'ﴧ' => 'شخ',
- 'ﴨ' => 'شم',
- 'ﴩ' => 'شر',
- 'ﴪ' => 'سر',
- 'ﴫ' => 'صر',
- 'ﴬ' => 'ضر',
- 'ﴭ' => 'شج',
- 'ﴮ' => 'شح',
- 'ﴯ' => 'شخ',
- 'ﴰ' => 'شم',
- 'ﴱ' => 'سه',
- 'ﴲ' => 'شه',
- 'ﴳ' => 'طم',
- 'ﴴ' => 'سج',
- 'ﴵ' => 'سح',
- 'ﴶ' => 'سخ',
- 'ﴷ' => 'شج',
- 'ﴸ' => 'شح',
- 'ﴹ' => 'شخ',
- 'ﴺ' => 'طم',
- 'ﴻ' => 'ظم',
- 'ﴼ' => 'اً',
- 'ﴽ' => 'اً',
- 'ﵐ' => 'تجم',
- 'ﵑ' => 'تحج',
- 'ﵒ' => 'تحج',
- 'ﵓ' => 'تحم',
- 'ﵔ' => 'تخم',
- 'ﵕ' => 'تمج',
- 'ﵖ' => 'تمح',
- 'ﵗ' => 'تمخ',
- 'ﵘ' => 'جمح',
- 'ﵙ' => 'جمح',
- 'ﵚ' => 'حمي',
- 'ﵛ' => 'حمى',
- 'ﵜ' => 'سحج',
- 'ﵝ' => 'سجح',
- 'ﵞ' => 'سجى',
- 'ﵟ' => 'سمح',
- 'ﵠ' => 'سمح',
- 'ﵡ' => 'سمج',
- 'ﵢ' => 'سمم',
- 'ﵣ' => 'سمم',
- 'ﵤ' => 'صحح',
- 'ﵥ' => 'صحح',
- 'ﵦ' => 'صمم',
- 'ﵧ' => 'شحم',
- 'ﵨ' => 'شحم',
- 'ﵩ' => 'شجي',
- 'ﵪ' => 'شمخ',
- 'ﵫ' => 'شمخ',
- 'ﵬ' => 'شمم',
- 'ﵭ' => 'شمم',
- 'ﵮ' => 'ضحى',
- 'ﵯ' => 'ضخم',
- 'ﵰ' => 'ضخم',
- 'ﵱ' => 'طمح',
- 'ﵲ' => 'طمح',
- 'ﵳ' => 'طمم',
- 'ﵴ' => 'طمي',
- 'ﵵ' => 'عجم',
- 'ﵶ' => 'عمم',
- 'ﵷ' => 'عمم',
- 'ﵸ' => 'عمى',
- 'ﵹ' => 'غمم',
- 'ﵺ' => 'غمي',
- 'ﵻ' => 'غمى',
- 'ﵼ' => 'فخم',
- 'ﵽ' => 'فخم',
- 'ﵾ' => 'قمح',
- 'ﵿ' => 'قمم',
- 'ﶀ' => 'لحم',
- 'ﶁ' => 'لحي',
- 'ﶂ' => 'لحى',
- 'ﶃ' => 'لجج',
- 'ﶄ' => 'لجج',
- 'ﶅ' => 'لخم',
- 'ﶆ' => 'لخم',
- 'ﶇ' => 'لمح',
- 'ﶈ' => 'لمح',
- 'ﶉ' => 'محج',
- 'ﶊ' => 'محم',
- 'ﶋ' => 'محي',
- 'ﶌ' => 'مجح',
- 'ﶍ' => 'مجم',
- 'ﶎ' => 'مخج',
- 'ﶏ' => 'مخم',
- 'ﶒ' => 'مجخ',
- 'ﶓ' => 'همج',
- 'ﶔ' => 'همم',
- 'ﶕ' => 'نحم',
- 'ﶖ' => 'نحى',
- 'ﶗ' => 'نجم',
- 'ﶘ' => 'نجم',
- 'ﶙ' => 'نجى',
- 'ﶚ' => 'نمي',
- 'ﶛ' => 'نمى',
- 'ﶜ' => 'يمم',
- 'ﶝ' => 'يمم',
- 'ﶞ' => 'بخي',
- 'ﶟ' => 'تجي',
- 'ﶠ' => 'تجى',
- 'ﶡ' => 'تخي',
- 'ﶢ' => 'تخى',
- 'ﶣ' => 'تمي',
- 'ﶤ' => 'تمى',
- 'ﶥ' => 'جمي',
- 'ﶦ' => 'جحى',
- 'ﶧ' => 'جمى',
- 'ﶨ' => 'سخى',
- 'ﶩ' => 'صحي',
- 'ﶪ' => 'شحي',
- 'ﶫ' => 'ضحي',
- 'ﶬ' => 'لجي',
- 'ﶭ' => 'لمي',
- 'ﶮ' => 'يحي',
- 'ﶯ' => 'يجي',
- 'ﶰ' => 'يمي',
- 'ﶱ' => 'ممي',
- 'ﶲ' => 'قمي',
- 'ﶳ' => 'نحي',
- 'ﶴ' => 'قمح',
- 'ﶵ' => 'لحم',
- 'ﶶ' => 'عمي',
- 'ﶷ' => 'كمي',
- 'ﶸ' => 'نجح',
- 'ﶹ' => 'مخي',
- 'ﶺ' => 'لجم',
- 'ﶻ' => 'كمم',
- 'ﶼ' => 'لجم',
- 'ﶽ' => 'نجح',
- 'ﶾ' => 'جحي',
- 'ﶿ' => 'حجي',
- 'ﷀ' => 'مجي',
- 'ﷁ' => 'فمي',
- 'ﷂ' => 'بحي',
- 'ﷃ' => 'كمم',
- 'ﷄ' => 'عجم',
- 'ﷅ' => 'صمم',
- 'ﷆ' => 'سخي',
- 'ﷇ' => 'نجي',
- 'ﷰ' => 'صلے',
- 'ﷱ' => 'قلے',
- 'ﷲ' => 'الله',
- 'ﷳ' => 'اكبر',
- 'ﷴ' => 'محمد',
- 'ﷵ' => 'صلعم',
- 'ﷶ' => 'رسول',
- 'ﷷ' => 'عليه',
- 'ﷸ' => 'وسلم',
- 'ﷹ' => 'صلى',
- 'ﷺ' => 'صلى الله عليه وسلم',
- 'ﷻ' => 'جل جلاله',
- '﷼' => 'ریال',
- '︐' => ',',
- '︑' => '、',
- '︒' => '。',
- '︓' => ':',
- '︔' => ';',
- '︕' => '!',
- '︖' => '?',
- '︗' => '〖',
- '︘' => '〗',
- '︙' => '...',
- '︰' => '..',
- '︱' => '—',
- '︲' => '–',
- '︳' => '_',
- '︴' => '_',
- '︵' => '(',
- '︶' => ')',
- '︷' => '{',
- '︸' => '}',
- '︹' => '〔',
- '︺' => '〕',
- '︻' => '【',
- '︼' => '】',
- '︽' => '《',
- '︾' => '》',
- '︿' => '〈',
- '﹀' => '〉',
- '﹁' => '「',
- '﹂' => '」',
- '﹃' => '『',
- '﹄' => '』',
- '﹇' => '[',
- '﹈' => ']',
- '﹉' => ' ̅',
- '﹊' => ' ̅',
- '﹋' => ' ̅',
- '﹌' => ' ̅',
- '﹍' => '_',
- '﹎' => '_',
- '﹏' => '_',
- '﹐' => ',',
- '﹑' => '、',
- '﹒' => '.',
- '﹔' => ';',
- '﹕' => ':',
- '﹖' => '?',
- '﹗' => '!',
- '﹘' => '—',
- '﹙' => '(',
- '﹚' => ')',
- '﹛' => '{',
- '﹜' => '}',
- '﹝' => '〔',
- '﹞' => '〕',
- '﹟' => '#',
- '﹠' => '&',
- '﹡' => '*',
- '﹢' => '+',
- '﹣' => '-',
- '﹤' => '<',
- '﹥' => '>',
- '﹦' => '=',
- '﹨' => '\\',
- '﹩' => '$',
- '﹪' => '%',
- '﹫' => '@',
- 'ﹰ' => ' ً',
- 'ﹱ' => 'ـً',
- 'ﹲ' => ' ٌ',
- 'ﹴ' => ' ٍ',
- 'ﹶ' => ' َ',
- 'ﹷ' => 'ـَ',
- 'ﹸ' => ' ُ',
- 'ﹹ' => 'ـُ',
- 'ﹺ' => ' ِ',
- 'ﹻ' => 'ـِ',
- 'ﹼ' => ' ّ',
- 'ﹽ' => 'ـّ',
- 'ﹾ' => ' ْ',
- 'ﹿ' => 'ـْ',
- 'ﺀ' => 'ء',
- 'ﺁ' => 'آ',
- 'ﺂ' => 'آ',
- 'ﺃ' => 'أ',
- 'ﺄ' => 'أ',
- 'ﺅ' => 'ؤ',
- 'ﺆ' => 'ؤ',
- 'ﺇ' => 'إ',
- 'ﺈ' => 'إ',
- 'ﺉ' => 'ئ',
- 'ﺊ' => 'ئ',
- 'ﺋ' => 'ئ',
- 'ﺌ' => 'ئ',
- 'ﺍ' => 'ا',
- 'ﺎ' => 'ا',
- 'ﺏ' => 'ب',
- 'ﺐ' => 'ب',
- 'ﺑ' => 'ب',
- 'ﺒ' => 'ب',
- 'ﺓ' => 'ة',
- 'ﺔ' => 'ة',
- 'ﺕ' => 'ت',
- 'ﺖ' => 'ت',
- 'ﺗ' => 'ت',
- 'ﺘ' => 'ت',
- 'ﺙ' => 'ث',
- 'ﺚ' => 'ث',
- 'ﺛ' => 'ث',
- 'ﺜ' => 'ث',
- 'ﺝ' => 'ج',
- 'ﺞ' => 'ج',
- 'ﺟ' => 'ج',
- 'ﺠ' => 'ج',
- 'ﺡ' => 'ح',
- 'ﺢ' => 'ح',
- 'ﺣ' => 'ح',
- 'ﺤ' => 'ح',
- 'ﺥ' => 'خ',
- 'ﺦ' => 'خ',
- 'ﺧ' => 'خ',
- 'ﺨ' => 'خ',
- 'ﺩ' => 'د',
- 'ﺪ' => 'د',
- 'ﺫ' => 'ذ',
- 'ﺬ' => 'ذ',
- 'ﺭ' => 'ر',
- 'ﺮ' => 'ر',
- 'ﺯ' => 'ز',
- 'ﺰ' => 'ز',
- 'ﺱ' => 'س',
- 'ﺲ' => 'س',
- 'ﺳ' => 'س',
- 'ﺴ' => 'س',
- 'ﺵ' => 'ش',
- 'ﺶ' => 'ش',
- 'ﺷ' => 'ش',
- 'ﺸ' => 'ش',
- 'ﺹ' => 'ص',
- 'ﺺ' => 'ص',
- 'ﺻ' => 'ص',
- 'ﺼ' => 'ص',
- 'ﺽ' => 'ض',
- 'ﺾ' => 'ض',
- 'ﺿ' => 'ض',
- 'ﻀ' => 'ض',
- 'ﻁ' => 'ط',
- 'ﻂ' => 'ط',
- 'ﻃ' => 'ط',
- 'ﻄ' => 'ط',
- 'ﻅ' => 'ظ',
- 'ﻆ' => 'ظ',
- 'ﻇ' => 'ظ',
- 'ﻈ' => 'ظ',
- 'ﻉ' => 'ع',
- 'ﻊ' => 'ع',
- 'ﻋ' => 'ع',
- 'ﻌ' => 'ع',
- 'ﻍ' => 'غ',
- 'ﻎ' => 'غ',
- 'ﻏ' => 'غ',
- 'ﻐ' => 'غ',
- 'ﻑ' => 'ف',
- 'ﻒ' => 'ف',
- 'ﻓ' => 'ف',
- 'ﻔ' => 'ف',
- 'ﻕ' => 'ق',
- 'ﻖ' => 'ق',
- 'ﻗ' => 'ق',
- 'ﻘ' => 'ق',
- 'ﻙ' => 'ك',
- 'ﻚ' => 'ك',
- 'ﻛ' => 'ك',
- 'ﻜ' => 'ك',
- 'ﻝ' => 'ل',
- 'ﻞ' => 'ل',
- 'ﻟ' => 'ل',
- 'ﻠ' => 'ل',
- 'ﻡ' => 'م',
- 'ﻢ' => 'م',
- 'ﻣ' => 'م',
- 'ﻤ' => 'م',
- 'ﻥ' => 'ن',
- 'ﻦ' => 'ن',
- 'ﻧ' => 'ن',
- 'ﻨ' => 'ن',
- 'ﻩ' => 'ه',
- 'ﻪ' => 'ه',
- 'ﻫ' => 'ه',
- 'ﻬ' => 'ه',
- 'ﻭ' => 'و',
- 'ﻮ' => 'و',
- 'ﻯ' => 'ى',
- 'ﻰ' => 'ى',
- 'ﻱ' => 'ي',
- 'ﻲ' => 'ي',
- 'ﻳ' => 'ي',
- 'ﻴ' => 'ي',
- 'ﻵ' => 'لآ',
- 'ﻶ' => 'لآ',
- 'ﻷ' => 'لأ',
- 'ﻸ' => 'لأ',
- 'ﻹ' => 'لإ',
- 'ﻺ' => 'لإ',
- 'ﻻ' => 'لا',
- 'ﻼ' => 'لا',
- '!' => '!',
- '"' => '"',
- '#' => '#',
- '$' => '$',
- '%' => '%',
- '&' => '&',
- ''' => '\'',
- '(' => '(',
- ')' => ')',
- '*' => '*',
- '+' => '+',
- ',' => ',',
- '-' => '-',
- '.' => '.',
- '/' => '/',
- '0' => '0',
- '1' => '1',
- '2' => '2',
- '3' => '3',
- '4' => '4',
- '5' => '5',
- '6' => '6',
- '7' => '7',
- '8' => '8',
- '9' => '9',
- ':' => ':',
- ';' => ';',
- '<' => '<',
- '=' => '=',
- '>' => '>',
- '?' => '?',
- '@' => '@',
- 'A' => 'A',
- 'B' => 'B',
- 'C' => 'C',
- 'D' => 'D',
- 'E' => 'E',
- 'F' => 'F',
- 'G' => 'G',
- 'H' => 'H',
- 'I' => 'I',
- 'J' => 'J',
- 'K' => 'K',
- 'L' => 'L',
- 'M' => 'M',
- 'N' => 'N',
- 'O' => 'O',
- 'P' => 'P',
- 'Q' => 'Q',
- 'R' => 'R',
- 'S' => 'S',
- 'T' => 'T',
- 'U' => 'U',
- 'V' => 'V',
- 'W' => 'W',
- 'X' => 'X',
- 'Y' => 'Y',
- 'Z' => 'Z',
- '[' => '[',
- '\' => '\\',
- ']' => ']',
- '^' => '^',
- '_' => '_',
- '`' => '`',
- 'a' => 'a',
- 'b' => 'b',
- 'c' => 'c',
- 'd' => 'd',
- 'e' => 'e',
- 'f' => 'f',
- 'g' => 'g',
- 'h' => 'h',
- 'i' => 'i',
- 'j' => 'j',
- 'k' => 'k',
- 'l' => 'l',
- 'm' => 'm',
- 'n' => 'n',
- 'o' => 'o',
- 'p' => 'p',
- 'q' => 'q',
- 'r' => 'r',
- 's' => 's',
- 't' => 't',
- 'u' => 'u',
- 'v' => 'v',
- 'w' => 'w',
- 'x' => 'x',
- 'y' => 'y',
- 'z' => 'z',
- '{' => '{',
- '|' => '|',
- '}' => '}',
- '~' => '~',
- '⦅' => '⦅',
- '⦆' => '⦆',
- '。' => '。',
- '「' => '「',
- '」' => '」',
- '、' => '、',
- '・' => '・',
- 'ヲ' => 'ヲ',
- 'ァ' => 'ァ',
- 'ィ' => 'ィ',
- 'ゥ' => 'ゥ',
- 'ェ' => 'ェ',
- 'ォ' => 'ォ',
- 'ャ' => 'ャ',
- 'ュ' => 'ュ',
- 'ョ' => 'ョ',
- 'ッ' => 'ッ',
- 'ー' => 'ー',
- 'ア' => 'ア',
- 'イ' => 'イ',
- 'ウ' => 'ウ',
- 'エ' => 'エ',
- 'オ' => 'オ',
- 'カ' => 'カ',
- 'キ' => 'キ',
- 'ク' => 'ク',
- 'ケ' => 'ケ',
- 'コ' => 'コ',
- 'サ' => 'サ',
- 'シ' => 'シ',
- 'ス' => 'ス',
- 'セ' => 'セ',
- 'ソ' => 'ソ',
- 'タ' => 'タ',
- 'チ' => 'チ',
- 'ツ' => 'ツ',
- 'テ' => 'テ',
- 'ト' => 'ト',
- 'ナ' => 'ナ',
- 'ニ' => 'ニ',
- 'ヌ' => 'ヌ',
- 'ネ' => 'ネ',
- 'ノ' => 'ノ',
- 'ハ' => 'ハ',
- 'ヒ' => 'ヒ',
- 'フ' => 'フ',
- 'ヘ' => 'ヘ',
- 'ホ' => 'ホ',
- 'マ' => 'マ',
- 'ミ' => 'ミ',
- 'ム' => 'ム',
- 'メ' => 'メ',
- 'モ' => 'モ',
- 'ヤ' => 'ヤ',
- 'ユ' => 'ユ',
- 'ヨ' => 'ヨ',
- 'ラ' => 'ラ',
- 'リ' => 'リ',
- 'ル' => 'ル',
- 'レ' => 'レ',
- 'ロ' => 'ロ',
- 'ワ' => 'ワ',
- 'ン' => 'ン',
- '゙' => '゙',
- '゚' => '゚',
- 'ᅠ' => 'ᅠ',
- 'ᄀ' => 'ᄀ',
- 'ᄁ' => 'ᄁ',
- 'ᆪ' => 'ᆪ',
- 'ᄂ' => 'ᄂ',
- 'ᆬ' => 'ᆬ',
- 'ᆭ' => 'ᆭ',
- 'ᄃ' => 'ᄃ',
- 'ᄄ' => 'ᄄ',
- 'ᄅ' => 'ᄅ',
- 'ᆰ' => 'ᆰ',
- 'ᆱ' => 'ᆱ',
- 'ᆲ' => 'ᆲ',
- 'ᆳ' => 'ᆳ',
- 'ᆴ' => 'ᆴ',
- 'ᆵ' => 'ᆵ',
- 'ᄚ' => 'ᄚ',
- 'ᄆ' => 'ᄆ',
- 'ᄇ' => 'ᄇ',
- 'ᄈ' => 'ᄈ',
- 'ᄡ' => 'ᄡ',
- 'ᄉ' => 'ᄉ',
- 'ᄊ' => 'ᄊ',
- 'ᄋ' => 'ᄋ',
- 'ᄌ' => 'ᄌ',
- 'ᄍ' => 'ᄍ',
- 'ᄎ' => 'ᄎ',
- 'ᄏ' => 'ᄏ',
- 'ᄐ' => 'ᄐ',
- 'ᄑ' => 'ᄑ',
- 'ᄒ' => 'ᄒ',
- 'ᅡ' => 'ᅡ',
- 'ᅢ' => 'ᅢ',
- 'ᅣ' => 'ᅣ',
- 'ᅤ' => 'ᅤ',
- 'ᅥ' => 'ᅥ',
- 'ᅦ' => 'ᅦ',
- 'ᅧ' => 'ᅧ',
- 'ᅨ' => 'ᅨ',
- 'ᅩ' => 'ᅩ',
- 'ᅪ' => 'ᅪ',
- 'ᅫ' => 'ᅫ',
- 'ᅬ' => 'ᅬ',
- 'ᅭ' => 'ᅭ',
- 'ᅮ' => 'ᅮ',
- 'ᅯ' => 'ᅯ',
- 'ᅰ' => 'ᅰ',
- 'ᅱ' => 'ᅱ',
- 'ᅲ' => 'ᅲ',
- 'ᅳ' => 'ᅳ',
- 'ᅴ' => 'ᅴ',
- 'ᅵ' => 'ᅵ',
- '¢' => '¢',
- '£' => '£',
- '¬' => '¬',
- ' ̄' => ' ̄',
- '¦' => '¦',
- '¥' => '¥',
- '₩' => '₩',
- '│' => '│',
- '←' => '←',
- '↑' => '↑',
- '→' => '→',
- '↓' => '↓',
- '■' => '■',
- '○' => '○',
- '𝐀' => 'A',
- '𝐁' => 'B',
- '𝐂' => 'C',
- '𝐃' => 'D',
- '𝐄' => 'E',
- '𝐅' => 'F',
- '𝐆' => 'G',
- '𝐇' => 'H',
- '𝐈' => 'I',
- '𝐉' => 'J',
- '𝐊' => 'K',
- '𝐋' => 'L',
- '𝐌' => 'M',
- '𝐍' => 'N',
- '𝐎' => 'O',
- '𝐏' => 'P',
- '𝐐' => 'Q',
- '𝐑' => 'R',
- '𝐒' => 'S',
- '𝐓' => 'T',
- '𝐔' => 'U',
- '𝐕' => 'V',
- '𝐖' => 'W',
- '𝐗' => 'X',
- '𝐘' => 'Y',
- '𝐙' => 'Z',
- '𝐚' => 'a',
- '𝐛' => 'b',
- '𝐜' => 'c',
- '𝐝' => 'd',
- '𝐞' => 'e',
- '𝐟' => 'f',
- '𝐠' => 'g',
- '𝐡' => 'h',
- '𝐢' => 'i',
- '𝐣' => 'j',
- '𝐤' => 'k',
- '𝐥' => 'l',
- '𝐦' => 'm',
- '𝐧' => 'n',
- '𝐨' => 'o',
- '𝐩' => 'p',
- '𝐪' => 'q',
- '𝐫' => 'r',
- '𝐬' => 's',
- '𝐭' => 't',
- '𝐮' => 'u',
- '𝐯' => 'v',
- '𝐰' => 'w',
- '𝐱' => 'x',
- '𝐲' => 'y',
- '𝐳' => 'z',
- '𝐴' => 'A',
- '𝐵' => 'B',
- '𝐶' => 'C',
- '𝐷' => 'D',
- '𝐸' => 'E',
- '𝐹' => 'F',
- '𝐺' => 'G',
- '𝐻' => 'H',
- '𝐼' => 'I',
- '𝐽' => 'J',
- '𝐾' => 'K',
- '𝐿' => 'L',
- '𝑀' => 'M',
- '𝑁' => 'N',
- '𝑂' => 'O',
- '𝑃' => 'P',
- '𝑄' => 'Q',
- '𝑅' => 'R',
- '𝑆' => 'S',
- '𝑇' => 'T',
- '𝑈' => 'U',
- '𝑉' => 'V',
- '𝑊' => 'W',
- '𝑋' => 'X',
- '𝑌' => 'Y',
- '𝑍' => 'Z',
- '𝑎' => 'a',
- '𝑏' => 'b',
- '𝑐' => 'c',
- '𝑑' => 'd',
- '𝑒' => 'e',
- '𝑓' => 'f',
- '𝑔' => 'g',
- '𝑖' => 'i',
- '𝑗' => 'j',
- '𝑘' => 'k',
- '𝑙' => 'l',
- '𝑚' => 'm',
- '𝑛' => 'n',
- '𝑜' => 'o',
- '𝑝' => 'p',
- '𝑞' => 'q',
- '𝑟' => 'r',
- '𝑠' => 's',
- '𝑡' => 't',
- '𝑢' => 'u',
- '𝑣' => 'v',
- '𝑤' => 'w',
- '𝑥' => 'x',
- '𝑦' => 'y',
- '𝑧' => 'z',
- '𝑨' => 'A',
- '𝑩' => 'B',
- '𝑪' => 'C',
- '𝑫' => 'D',
- '𝑬' => 'E',
- '𝑭' => 'F',
- '𝑮' => 'G',
- '𝑯' => 'H',
- '𝑰' => 'I',
- '𝑱' => 'J',
- '𝑲' => 'K',
- '𝑳' => 'L',
- '𝑴' => 'M',
- '𝑵' => 'N',
- '𝑶' => 'O',
- '𝑷' => 'P',
- '𝑸' => 'Q',
- '𝑹' => 'R',
- '𝑺' => 'S',
- '𝑻' => 'T',
- '𝑼' => 'U',
- '𝑽' => 'V',
- '𝑾' => 'W',
- '𝑿' => 'X',
- '𝒀' => 'Y',
- '𝒁' => 'Z',
- '𝒂' => 'a',
- '𝒃' => 'b',
- '𝒄' => 'c',
- '𝒅' => 'd',
- '𝒆' => 'e',
- '𝒇' => 'f',
- '𝒈' => 'g',
- '𝒉' => 'h',
- '𝒊' => 'i',
- '𝒋' => 'j',
- '𝒌' => 'k',
- '𝒍' => 'l',
- '𝒎' => 'm',
- '𝒏' => 'n',
- '𝒐' => 'o',
- '𝒑' => 'p',
- '𝒒' => 'q',
- '𝒓' => 'r',
- '𝒔' => 's',
- '𝒕' => 't',
- '𝒖' => 'u',
- '𝒗' => 'v',
- '𝒘' => 'w',
- '𝒙' => 'x',
- '𝒚' => 'y',
- '𝒛' => 'z',
- '𝒜' => 'A',
- '𝒞' => 'C',
- '𝒟' => 'D',
- '𝒢' => 'G',
- '𝒥' => 'J',
- '𝒦' => 'K',
- '𝒩' => 'N',
- '𝒪' => 'O',
- '𝒫' => 'P',
- '𝒬' => 'Q',
- '𝒮' => 'S',
- '𝒯' => 'T',
- '𝒰' => 'U',
- '𝒱' => 'V',
- '𝒲' => 'W',
- '𝒳' => 'X',
- '𝒴' => 'Y',
- '𝒵' => 'Z',
- '𝒶' => 'a',
- '𝒷' => 'b',
- '𝒸' => 'c',
- '𝒹' => 'd',
- '𝒻' => 'f',
- '𝒽' => 'h',
- '𝒾' => 'i',
- '𝒿' => 'j',
- '𝓀' => 'k',
- '𝓁' => 'l',
- '𝓂' => 'm',
- '𝓃' => 'n',
- '𝓅' => 'p',
- '𝓆' => 'q',
- '𝓇' => 'r',
- '𝓈' => 's',
- '𝓉' => 't',
- '𝓊' => 'u',
- '𝓋' => 'v',
- '𝓌' => 'w',
- '𝓍' => 'x',
- '𝓎' => 'y',
- '𝓏' => 'z',
- '𝓐' => 'A',
- '𝓑' => 'B',
- '𝓒' => 'C',
- '𝓓' => 'D',
- '𝓔' => 'E',
- '𝓕' => 'F',
- '𝓖' => 'G',
- '𝓗' => 'H',
- '𝓘' => 'I',
- '𝓙' => 'J',
- '𝓚' => 'K',
- '𝓛' => 'L',
- '𝓜' => 'M',
- '𝓝' => 'N',
- '𝓞' => 'O',
- '𝓟' => 'P',
- '𝓠' => 'Q',
- '𝓡' => 'R',
- '𝓢' => 'S',
- '𝓣' => 'T',
- '𝓤' => 'U',
- '𝓥' => 'V',
- '𝓦' => 'W',
- '𝓧' => 'X',
- '𝓨' => 'Y',
- '𝓩' => 'Z',
- '𝓪' => 'a',
- '𝓫' => 'b',
- '𝓬' => 'c',
- '𝓭' => 'd',
- '𝓮' => 'e',
- '𝓯' => 'f',
- '𝓰' => 'g',
- '𝓱' => 'h',
- '𝓲' => 'i',
- '𝓳' => 'j',
- '𝓴' => 'k',
- '𝓵' => 'l',
- '𝓶' => 'm',
- '𝓷' => 'n',
- '𝓸' => 'o',
- '𝓹' => 'p',
- '𝓺' => 'q',
- '𝓻' => 'r',
- '𝓼' => 's',
- '𝓽' => 't',
- '𝓾' => 'u',
- '𝓿' => 'v',
- '𝔀' => 'w',
- '𝔁' => 'x',
- '𝔂' => 'y',
- '𝔃' => 'z',
- '𝔄' => 'A',
- '𝔅' => 'B',
- '𝔇' => 'D',
- '𝔈' => 'E',
- '𝔉' => 'F',
- '𝔊' => 'G',
- '𝔍' => 'J',
- '𝔎' => 'K',
- '𝔏' => 'L',
- '𝔐' => 'M',
- '𝔑' => 'N',
- '𝔒' => 'O',
- '𝔓' => 'P',
- '𝔔' => 'Q',
- '𝔖' => 'S',
- '𝔗' => 'T',
- '𝔘' => 'U',
- '𝔙' => 'V',
- '𝔚' => 'W',
- '𝔛' => 'X',
- '𝔜' => 'Y',
- '𝔞' => 'a',
- '𝔟' => 'b',
- '𝔠' => 'c',
- '𝔡' => 'd',
- '𝔢' => 'e',
- '𝔣' => 'f',
- '𝔤' => 'g',
- '𝔥' => 'h',
- '𝔦' => 'i',
- '𝔧' => 'j',
- '𝔨' => 'k',
- '𝔩' => 'l',
- '𝔪' => 'm',
- '𝔫' => 'n',
- '𝔬' => 'o',
- '𝔭' => 'p',
- '𝔮' => 'q',
- '𝔯' => 'r',
- '𝔰' => 's',
- '𝔱' => 't',
- '𝔲' => 'u',
- '𝔳' => 'v',
- '𝔴' => 'w',
- '𝔵' => 'x',
- '𝔶' => 'y',
- '𝔷' => 'z',
- '𝔸' => 'A',
- '𝔹' => 'B',
- '𝔻' => 'D',
- '𝔼' => 'E',
- '𝔽' => 'F',
- '𝔾' => 'G',
- '𝕀' => 'I',
- '𝕁' => 'J',
- '𝕂' => 'K',
- '𝕃' => 'L',
- '𝕄' => 'M',
- '𝕆' => 'O',
- '𝕊' => 'S',
- '𝕋' => 'T',
- '𝕌' => 'U',
- '𝕍' => 'V',
- '𝕎' => 'W',
- '𝕏' => 'X',
- '𝕐' => 'Y',
- '𝕒' => 'a',
- '𝕓' => 'b',
- '𝕔' => 'c',
- '𝕕' => 'd',
- '𝕖' => 'e',
- '𝕗' => 'f',
- '𝕘' => 'g',
- '𝕙' => 'h',
- '𝕚' => 'i',
- '𝕛' => 'j',
- '𝕜' => 'k',
- '𝕝' => 'l',
- '𝕞' => 'm',
- '𝕟' => 'n',
- '𝕠' => 'o',
- '𝕡' => 'p',
- '𝕢' => 'q',
- '𝕣' => 'r',
- '𝕤' => 's',
- '𝕥' => 't',
- '𝕦' => 'u',
- '𝕧' => 'v',
- '𝕨' => 'w',
- '𝕩' => 'x',
- '𝕪' => 'y',
- '𝕫' => 'z',
- '𝕬' => 'A',
- '𝕭' => 'B',
- '𝕮' => 'C',
- '𝕯' => 'D',
- '𝕰' => 'E',
- '𝕱' => 'F',
- '𝕲' => 'G',
- '𝕳' => 'H',
- '𝕴' => 'I',
- '𝕵' => 'J',
- '𝕶' => 'K',
- '𝕷' => 'L',
- '𝕸' => 'M',
- '𝕹' => 'N',
- '𝕺' => 'O',
- '𝕻' => 'P',
- '𝕼' => 'Q',
- '𝕽' => 'R',
- '𝕾' => 'S',
- '𝕿' => 'T',
- '𝖀' => 'U',
- '𝖁' => 'V',
- '𝖂' => 'W',
- '𝖃' => 'X',
- '𝖄' => 'Y',
- '𝖅' => 'Z',
- '𝖆' => 'a',
- '𝖇' => 'b',
- '𝖈' => 'c',
- '𝖉' => 'd',
- '𝖊' => 'e',
- '𝖋' => 'f',
- '𝖌' => 'g',
- '𝖍' => 'h',
- '𝖎' => 'i',
- '𝖏' => 'j',
- '𝖐' => 'k',
- '𝖑' => 'l',
- '𝖒' => 'm',
- '𝖓' => 'n',
- '𝖔' => 'o',
- '𝖕' => 'p',
- '𝖖' => 'q',
- '𝖗' => 'r',
- '𝖘' => 's',
- '𝖙' => 't',
- '𝖚' => 'u',
- '𝖛' => 'v',
- '𝖜' => 'w',
- '𝖝' => 'x',
- '𝖞' => 'y',
- '𝖟' => 'z',
- '𝖠' => 'A',
- '𝖡' => 'B',
- '𝖢' => 'C',
- '𝖣' => 'D',
- '𝖤' => 'E',
- '𝖥' => 'F',
- '𝖦' => 'G',
- '𝖧' => 'H',
- '𝖨' => 'I',
- '𝖩' => 'J',
- '𝖪' => 'K',
- '𝖫' => 'L',
- '𝖬' => 'M',
- '𝖭' => 'N',
- '𝖮' => 'O',
- '𝖯' => 'P',
- '𝖰' => 'Q',
- '𝖱' => 'R',
- '𝖲' => 'S',
- '𝖳' => 'T',
- '𝖴' => 'U',
- '𝖵' => 'V',
- '𝖶' => 'W',
- '𝖷' => 'X',
- '𝖸' => 'Y',
- '𝖹' => 'Z',
- '𝖺' => 'a',
- '𝖻' => 'b',
- '𝖼' => 'c',
- '𝖽' => 'd',
- '𝖾' => 'e',
- '𝖿' => 'f',
- '𝗀' => 'g',
- '𝗁' => 'h',
- '𝗂' => 'i',
- '𝗃' => 'j',
- '𝗄' => 'k',
- '𝗅' => 'l',
- '𝗆' => 'm',
- '𝗇' => 'n',
- '𝗈' => 'o',
- '𝗉' => 'p',
- '𝗊' => 'q',
- '𝗋' => 'r',
- '𝗌' => 's',
- '𝗍' => 't',
- '𝗎' => 'u',
- '𝗏' => 'v',
- '𝗐' => 'w',
- '𝗑' => 'x',
- '𝗒' => 'y',
- '𝗓' => 'z',
- '𝗔' => 'A',
- '𝗕' => 'B',
- '𝗖' => 'C',
- '𝗗' => 'D',
- '𝗘' => 'E',
- '𝗙' => 'F',
- '𝗚' => 'G',
- '𝗛' => 'H',
- '𝗜' => 'I',
- '𝗝' => 'J',
- '𝗞' => 'K',
- '𝗟' => 'L',
- '𝗠' => 'M',
- '𝗡' => 'N',
- '𝗢' => 'O',
- '𝗣' => 'P',
- '𝗤' => 'Q',
- '𝗥' => 'R',
- '𝗦' => 'S',
- '𝗧' => 'T',
- '𝗨' => 'U',
- '𝗩' => 'V',
- '𝗪' => 'W',
- '𝗫' => 'X',
- '𝗬' => 'Y',
- '𝗭' => 'Z',
- '𝗮' => 'a',
- '𝗯' => 'b',
- '𝗰' => 'c',
- '𝗱' => 'd',
- '𝗲' => 'e',
- '𝗳' => 'f',
- '𝗴' => 'g',
- '𝗵' => 'h',
- '𝗶' => 'i',
- '𝗷' => 'j',
- '𝗸' => 'k',
- '𝗹' => 'l',
- '𝗺' => 'm',
- '𝗻' => 'n',
- '𝗼' => 'o',
- '𝗽' => 'p',
- '𝗾' => 'q',
- '𝗿' => 'r',
- '𝘀' => 's',
- '𝘁' => 't',
- '𝘂' => 'u',
- '𝘃' => 'v',
- '𝘄' => 'w',
- '𝘅' => 'x',
- '𝘆' => 'y',
- '𝘇' => 'z',
- '𝘈' => 'A',
- '𝘉' => 'B',
- '𝘊' => 'C',
- '𝘋' => 'D',
- '𝘌' => 'E',
- '𝘍' => 'F',
- '𝘎' => 'G',
- '𝘏' => 'H',
- '𝘐' => 'I',
- '𝘑' => 'J',
- '𝘒' => 'K',
- '𝘓' => 'L',
- '𝘔' => 'M',
- '𝘕' => 'N',
- '𝘖' => 'O',
- '𝘗' => 'P',
- '𝘘' => 'Q',
- '𝘙' => 'R',
- '𝘚' => 'S',
- '𝘛' => 'T',
- '𝘜' => 'U',
- '𝘝' => 'V',
- '𝘞' => 'W',
- '𝘟' => 'X',
- '𝘠' => 'Y',
- '𝘡' => 'Z',
- '𝘢' => 'a',
- '𝘣' => 'b',
- '𝘤' => 'c',
- '𝘥' => 'd',
- '𝘦' => 'e',
- '𝘧' => 'f',
- '𝘨' => 'g',
- '𝘩' => 'h',
- '𝘪' => 'i',
- '𝘫' => 'j',
- '𝘬' => 'k',
- '𝘭' => 'l',
- '𝘮' => 'm',
- '𝘯' => 'n',
- '𝘰' => 'o',
- '𝘱' => 'p',
- '𝘲' => 'q',
- '𝘳' => 'r',
- '𝘴' => 's',
- '𝘵' => 't',
- '𝘶' => 'u',
- '𝘷' => 'v',
- '𝘸' => 'w',
- '𝘹' => 'x',
- '𝘺' => 'y',
- '𝘻' => 'z',
- '𝘼' => 'A',
- '𝘽' => 'B',
- '𝘾' => 'C',
- '𝘿' => 'D',
- '𝙀' => 'E',
- '𝙁' => 'F',
- '𝙂' => 'G',
- '𝙃' => 'H',
- '𝙄' => 'I',
- '𝙅' => 'J',
- '𝙆' => 'K',
- '𝙇' => 'L',
- '𝙈' => 'M',
- '𝙉' => 'N',
- '𝙊' => 'O',
- '𝙋' => 'P',
- '𝙌' => 'Q',
- '𝙍' => 'R',
- '𝙎' => 'S',
- '𝙏' => 'T',
- '𝙐' => 'U',
- '𝙑' => 'V',
- '𝙒' => 'W',
- '𝙓' => 'X',
- '𝙔' => 'Y',
- '𝙕' => 'Z',
- '𝙖' => 'a',
- '𝙗' => 'b',
- '𝙘' => 'c',
- '𝙙' => 'd',
- '𝙚' => 'e',
- '𝙛' => 'f',
- '𝙜' => 'g',
- '𝙝' => 'h',
- '𝙞' => 'i',
- '𝙟' => 'j',
- '𝙠' => 'k',
- '𝙡' => 'l',
- '𝙢' => 'm',
- '𝙣' => 'n',
- '𝙤' => 'o',
- '𝙥' => 'p',
- '𝙦' => 'q',
- '𝙧' => 'r',
- '𝙨' => 's',
- '𝙩' => 't',
- '𝙪' => 'u',
- '𝙫' => 'v',
- '𝙬' => 'w',
- '𝙭' => 'x',
- '𝙮' => 'y',
- '𝙯' => 'z',
- '𝙰' => 'A',
- '𝙱' => 'B',
- '𝙲' => 'C',
- '𝙳' => 'D',
- '𝙴' => 'E',
- '𝙵' => 'F',
- '𝙶' => 'G',
- '𝙷' => 'H',
- '𝙸' => 'I',
- '𝙹' => 'J',
- '𝙺' => 'K',
- '𝙻' => 'L',
- '𝙼' => 'M',
- '𝙽' => 'N',
- '𝙾' => 'O',
- '𝙿' => 'P',
- '𝚀' => 'Q',
- '𝚁' => 'R',
- '𝚂' => 'S',
- '𝚃' => 'T',
- '𝚄' => 'U',
- '𝚅' => 'V',
- '𝚆' => 'W',
- '𝚇' => 'X',
- '𝚈' => 'Y',
- '𝚉' => 'Z',
- '𝚊' => 'a',
- '𝚋' => 'b',
- '𝚌' => 'c',
- '𝚍' => 'd',
- '𝚎' => 'e',
- '𝚏' => 'f',
- '𝚐' => 'g',
- '𝚑' => 'h',
- '𝚒' => 'i',
- '𝚓' => 'j',
- '𝚔' => 'k',
- '𝚕' => 'l',
- '𝚖' => 'm',
- '𝚗' => 'n',
- '𝚘' => 'o',
- '𝚙' => 'p',
- '𝚚' => 'q',
- '𝚛' => 'r',
- '𝚜' => 's',
- '𝚝' => 't',
- '𝚞' => 'u',
- '𝚟' => 'v',
- '𝚠' => 'w',
- '𝚡' => 'x',
- '𝚢' => 'y',
- '𝚣' => 'z',
- '𝚤' => 'ı',
- '𝚥' => 'ȷ',
- '𝚨' => 'Α',
- '𝚩' => 'Β',
- '𝚪' => 'Γ',
- '𝚫' => 'Δ',
- '𝚬' => 'Ε',
- '𝚭' => 'Ζ',
- '𝚮' => 'Η',
- '𝚯' => 'Θ',
- '𝚰' => 'Ι',
- '𝚱' => 'Κ',
- '𝚲' => 'Λ',
- '𝚳' => 'Μ',
- '𝚴' => 'Ν',
- '𝚵' => 'Ξ',
- '𝚶' => 'Ο',
- '𝚷' => 'Π',
- '𝚸' => 'Ρ',
- '𝚹' => 'Θ',
- '𝚺' => 'Σ',
- '𝚻' => 'Τ',
- '𝚼' => 'Υ',
- '𝚽' => 'Φ',
- '𝚾' => 'Χ',
- '𝚿' => 'Ψ',
- '𝛀' => 'Ω',
- '𝛁' => '∇',
- '𝛂' => 'α',
- '𝛃' => 'β',
- '𝛄' => 'γ',
- '𝛅' => 'δ',
- '𝛆' => 'ε',
- '𝛇' => 'ζ',
- '𝛈' => 'η',
- '𝛉' => 'θ',
- '𝛊' => 'ι',
- '𝛋' => 'κ',
- '𝛌' => 'λ',
- '𝛍' => 'μ',
- '𝛎' => 'ν',
- '𝛏' => 'ξ',
- '𝛐' => 'ο',
- '𝛑' => 'π',
- '𝛒' => 'ρ',
- '𝛓' => 'ς',
- '𝛔' => 'σ',
- '𝛕' => 'τ',
- '𝛖' => 'υ',
- '𝛗' => 'φ',
- '𝛘' => 'χ',
- '𝛙' => 'ψ',
- '𝛚' => 'ω',
- '𝛛' => '∂',
- '𝛜' => 'ε',
- '𝛝' => 'θ',
- '𝛞' => 'κ',
- '𝛟' => 'φ',
- '𝛠' => 'ρ',
- '𝛡' => 'π',
- '𝛢' => 'Α',
- '𝛣' => 'Β',
- '𝛤' => 'Γ',
- '𝛥' => 'Δ',
- '𝛦' => 'Ε',
- '𝛧' => 'Ζ',
- '𝛨' => 'Η',
- '𝛩' => 'Θ',
- '𝛪' => 'Ι',
- '𝛫' => 'Κ',
- '𝛬' => 'Λ',
- '𝛭' => 'Μ',
- '𝛮' => 'Ν',
- '𝛯' => 'Ξ',
- '𝛰' => 'Ο',
- '𝛱' => 'Π',
- '𝛲' => 'Ρ',
- '𝛳' => 'Θ',
- '𝛴' => 'Σ',
- '𝛵' => 'Τ',
- '𝛶' => 'Υ',
- '𝛷' => 'Φ',
- '𝛸' => 'Χ',
- '𝛹' => 'Ψ',
- '𝛺' => 'Ω',
- '𝛻' => '∇',
- '𝛼' => 'α',
- '𝛽' => 'β',
- '𝛾' => 'γ',
- '𝛿' => 'δ',
- '𝜀' => 'ε',
- '𝜁' => 'ζ',
- '𝜂' => 'η',
- '𝜃' => 'θ',
- '𝜄' => 'ι',
- '𝜅' => 'κ',
- '𝜆' => 'λ',
- '𝜇' => 'μ',
- '𝜈' => 'ν',
- '𝜉' => 'ξ',
- '𝜊' => 'ο',
- '𝜋' => 'π',
- '𝜌' => 'ρ',
- '𝜍' => 'ς',
- '𝜎' => 'σ',
- '𝜏' => 'τ',
- '𝜐' => 'υ',
- '𝜑' => 'φ',
- '𝜒' => 'χ',
- '𝜓' => 'ψ',
- '𝜔' => 'ω',
- '𝜕' => '∂',
- '𝜖' => 'ε',
- '𝜗' => 'θ',
- '𝜘' => 'κ',
- '𝜙' => 'φ',
- '𝜚' => 'ρ',
- '𝜛' => 'π',
- '𝜜' => 'Α',
- '𝜝' => 'Β',
- '𝜞' => 'Γ',
- '𝜟' => 'Δ',
- '𝜠' => 'Ε',
- '𝜡' => 'Ζ',
- '𝜢' => 'Η',
- '𝜣' => 'Θ',
- '𝜤' => 'Ι',
- '𝜥' => 'Κ',
- '𝜦' => 'Λ',
- '𝜧' => 'Μ',
- '𝜨' => 'Ν',
- '𝜩' => 'Ξ',
- '𝜪' => 'Ο',
- '𝜫' => 'Π',
- '𝜬' => 'Ρ',
- '𝜭' => 'Θ',
- '𝜮' => 'Σ',
- '𝜯' => 'Τ',
- '𝜰' => 'Υ',
- '𝜱' => 'Φ',
- '𝜲' => 'Χ',
- '𝜳' => 'Ψ',
- '𝜴' => 'Ω',
- '𝜵' => '∇',
- '𝜶' => 'α',
- '𝜷' => 'β',
- '𝜸' => 'γ',
- '𝜹' => 'δ',
- '𝜺' => 'ε',
- '𝜻' => 'ζ',
- '𝜼' => 'η',
- '𝜽' => 'θ',
- '𝜾' => 'ι',
- '𝜿' => 'κ',
- '𝝀' => 'λ',
- '𝝁' => 'μ',
- '𝝂' => 'ν',
- '𝝃' => 'ξ',
- '𝝄' => 'ο',
- '𝝅' => 'π',
- '𝝆' => 'ρ',
- '𝝇' => 'ς',
- '𝝈' => 'σ',
- '𝝉' => 'τ',
- '𝝊' => 'υ',
- '𝝋' => 'φ',
- '𝝌' => 'χ',
- '𝝍' => 'ψ',
- '𝝎' => 'ω',
- '𝝏' => '∂',
- '𝝐' => 'ε',
- '𝝑' => 'θ',
- '𝝒' => 'κ',
- '𝝓' => 'φ',
- '𝝔' => 'ρ',
- '𝝕' => 'π',
- '𝝖' => 'Α',
- '𝝗' => 'Β',
- '𝝘' => 'Γ',
- '𝝙' => 'Δ',
- '𝝚' => 'Ε',
- '𝝛' => 'Ζ',
- '𝝜' => 'Η',
- '𝝝' => 'Θ',
- '𝝞' => 'Ι',
- '𝝟' => 'Κ',
- '𝝠' => 'Λ',
- '𝝡' => 'Μ',
- '𝝢' => 'Ν',
- '𝝣' => 'Ξ',
- '𝝤' => 'Ο',
- '𝝥' => 'Π',
- '𝝦' => 'Ρ',
- '𝝧' => 'Θ',
- '𝝨' => 'Σ',
- '𝝩' => 'Τ',
- '𝝪' => 'Υ',
- '𝝫' => 'Φ',
- '𝝬' => 'Χ',
- '𝝭' => 'Ψ',
- '𝝮' => 'Ω',
- '𝝯' => '∇',
- '𝝰' => 'α',
- '𝝱' => 'β',
- '𝝲' => 'γ',
- '𝝳' => 'δ',
- '𝝴' => 'ε',
- '𝝵' => 'ζ',
- '𝝶' => 'η',
- '𝝷' => 'θ',
- '𝝸' => 'ι',
- '𝝹' => 'κ',
- '𝝺' => 'λ',
- '𝝻' => 'μ',
- '𝝼' => 'ν',
- '𝝽' => 'ξ',
- '𝝾' => 'ο',
- '𝝿' => 'π',
- '𝞀' => 'ρ',
- '𝞁' => 'ς',
- '𝞂' => 'σ',
- '𝞃' => 'τ',
- '𝞄' => 'υ',
- '𝞅' => 'φ',
- '𝞆' => 'χ',
- '𝞇' => 'ψ',
- '𝞈' => 'ω',
- '𝞉' => '∂',
- '𝞊' => 'ε',
- '𝞋' => 'θ',
- '𝞌' => 'κ',
- '𝞍' => 'φ',
- '𝞎' => 'ρ',
- '𝞏' => 'π',
- '𝞐' => 'Α',
- '𝞑' => 'Β',
- '𝞒' => 'Γ',
- '𝞓' => 'Δ',
- '𝞔' => 'Ε',
- '𝞕' => 'Ζ',
- '𝞖' => 'Η',
- '𝞗' => 'Θ',
- '𝞘' => 'Ι',
- '𝞙' => 'Κ',
- '𝞚' => 'Λ',
- '𝞛' => 'Μ',
- '𝞜' => 'Ν',
- '𝞝' => 'Ξ',
- '𝞞' => 'Ο',
- '𝞟' => 'Π',
- '𝞠' => 'Ρ',
- '𝞡' => 'Θ',
- '𝞢' => 'Σ',
- '𝞣' => 'Τ',
- '𝞤' => 'Υ',
- '𝞥' => 'Φ',
- '𝞦' => 'Χ',
- '𝞧' => 'Ψ',
- '𝞨' => 'Ω',
- '𝞩' => '∇',
- '𝞪' => 'α',
- '𝞫' => 'β',
- '𝞬' => 'γ',
- '𝞭' => 'δ',
- '𝞮' => 'ε',
- '𝞯' => 'ζ',
- '𝞰' => 'η',
- '𝞱' => 'θ',
- '𝞲' => 'ι',
- '𝞳' => 'κ',
- '𝞴' => 'λ',
- '𝞵' => 'μ',
- '𝞶' => 'ν',
- '𝞷' => 'ξ',
- '𝞸' => 'ο',
- '𝞹' => 'π',
- '𝞺' => 'ρ',
- '𝞻' => 'ς',
- '𝞼' => 'σ',
- '𝞽' => 'τ',
- '𝞾' => 'υ',
- '𝞿' => 'φ',
- '𝟀' => 'χ',
- '𝟁' => 'ψ',
- '𝟂' => 'ω',
- '𝟃' => '∂',
- '𝟄' => 'ε',
- '𝟅' => 'θ',
- '𝟆' => 'κ',
- '𝟇' => 'φ',
- '𝟈' => 'ρ',
- '𝟉' => 'π',
- '𝟊' => 'Ϝ',
- '𝟋' => 'ϝ',
- '𝟎' => '0',
- '𝟏' => '1',
- '𝟐' => '2',
- '𝟑' => '3',
- '𝟒' => '4',
- '𝟓' => '5',
- '𝟔' => '6',
- '𝟕' => '7',
- '𝟖' => '8',
- '𝟗' => '9',
- '𝟘' => '0',
- '𝟙' => '1',
- '𝟚' => '2',
- '𝟛' => '3',
- '𝟜' => '4',
- '𝟝' => '5',
- '𝟞' => '6',
- '𝟟' => '7',
- '𝟠' => '8',
- '𝟡' => '9',
- '𝟢' => '0',
- '𝟣' => '1',
- '𝟤' => '2',
- '𝟥' => '3',
- '𝟦' => '4',
- '𝟧' => '5',
- '𝟨' => '6',
- '𝟩' => '7',
- '𝟪' => '8',
- '𝟫' => '9',
- '𝟬' => '0',
- '𝟭' => '1',
- '𝟮' => '2',
- '𝟯' => '3',
- '𝟰' => '4',
- '𝟱' => '5',
- '𝟲' => '6',
- '𝟳' => '7',
- '𝟴' => '8',
- '𝟵' => '9',
- '𝟶' => '0',
- '𝟷' => '1',
- '𝟸' => '2',
- '𝟹' => '3',
- '𝟺' => '4',
- '𝟻' => '5',
- '𝟼' => '6',
- '𝟽' => '7',
- '𝟾' => '8',
- '𝟿' => '9',
- '𞸀' => 'ا',
- '𞸁' => 'ب',
- '𞸂' => 'ج',
- '𞸃' => 'د',
- '𞸅' => 'و',
- '𞸆' => 'ز',
- '𞸇' => 'ح',
- '𞸈' => 'ط',
- '𞸉' => 'ي',
- '𞸊' => 'ك',
- '𞸋' => 'ل',
- '𞸌' => 'م',
- '𞸍' => 'ن',
- '𞸎' => 'س',
- '𞸏' => 'ع',
- '𞸐' => 'ف',
- '𞸑' => 'ص',
- '𞸒' => 'ق',
- '𞸓' => 'ر',
- '𞸔' => 'ش',
- '𞸕' => 'ت',
- '𞸖' => 'ث',
- '𞸗' => 'خ',
- '𞸘' => 'ذ',
- '𞸙' => 'ض',
- '𞸚' => 'ظ',
- '𞸛' => 'غ',
- '𞸜' => 'ٮ',
- '𞸝' => 'ں',
- '𞸞' => 'ڡ',
- '𞸟' => 'ٯ',
- '𞸡' => 'ب',
- '𞸢' => 'ج',
- '𞸤' => 'ه',
- '𞸧' => 'ح',
- '𞸩' => 'ي',
- '𞸪' => 'ك',
- '𞸫' => 'ل',
- '𞸬' => 'م',
- '𞸭' => 'ن',
- '𞸮' => 'س',
- '𞸯' => 'ع',
- '𞸰' => 'ف',
- '𞸱' => 'ص',
- '𞸲' => 'ق',
- '𞸴' => 'ش',
- '𞸵' => 'ت',
- '𞸶' => 'ث',
- '𞸷' => 'خ',
- '𞸹' => 'ض',
- '𞸻' => 'غ',
- '𞹂' => 'ج',
- '𞹇' => 'ح',
- '𞹉' => 'ي',
- '𞹋' => 'ل',
- '𞹍' => 'ن',
- '𞹎' => 'س',
- '𞹏' => 'ع',
- '𞹑' => 'ص',
- '𞹒' => 'ق',
- '𞹔' => 'ش',
- '𞹗' => 'خ',
- '𞹙' => 'ض',
- '𞹛' => 'غ',
- '𞹝' => 'ں',
- '𞹟' => 'ٯ',
- '𞹡' => 'ب',
- '𞹢' => 'ج',
- '𞹤' => 'ه',
- '𞹧' => 'ح',
- '𞹨' => 'ط',
- '𞹩' => 'ي',
- '𞹪' => 'ك',
- '𞹬' => 'م',
- '𞹭' => 'ن',
- '𞹮' => 'س',
- '𞹯' => 'ع',
- '𞹰' => 'ف',
- '𞹱' => 'ص',
- '𞹲' => 'ق',
- '𞹴' => 'ش',
- '𞹵' => 'ت',
- '𞹶' => 'ث',
- '𞹷' => 'خ',
- '𞹹' => 'ض',
- '𞹺' => 'ظ',
- '𞹻' => 'غ',
- '𞹼' => 'ٮ',
- '𞹾' => 'ڡ',
- '𞺀' => 'ا',
- '𞺁' => 'ب',
- '𞺂' => 'ج',
- '𞺃' => 'د',
- '𞺄' => 'ه',
- '𞺅' => 'و',
- '𞺆' => 'ز',
- '𞺇' => 'ح',
- '𞺈' => 'ط',
- '𞺉' => 'ي',
- '𞺋' => 'ل',
- '𞺌' => 'م',
- '𞺍' => 'ن',
- '𞺎' => 'س',
- '𞺏' => 'ع',
- '𞺐' => 'ف',
- '𞺑' => 'ص',
- '𞺒' => 'ق',
- '𞺓' => 'ر',
- '𞺔' => 'ش',
- '𞺕' => 'ت',
- '𞺖' => 'ث',
- '𞺗' => 'خ',
- '𞺘' => 'ذ',
- '𞺙' => 'ض',
- '𞺚' => 'ظ',
- '𞺛' => 'غ',
- '𞺡' => 'ب',
- '𞺢' => 'ج',
- '𞺣' => 'د',
- '𞺥' => 'و',
- '𞺦' => 'ز',
- '𞺧' => 'ح',
- '𞺨' => 'ط',
- '𞺩' => 'ي',
- '𞺫' => 'ل',
- '𞺬' => 'م',
- '𞺭' => 'ن',
- '𞺮' => 'س',
- '𞺯' => 'ع',
- '𞺰' => 'ف',
- '𞺱' => 'ص',
- '𞺲' => 'ق',
- '𞺳' => 'ر',
- '𞺴' => 'ش',
- '𞺵' => 'ت',
- '𞺶' => 'ث',
- '𞺷' => 'خ',
- '𞺸' => 'ذ',
- '𞺹' => 'ض',
- '𞺺' => 'ظ',
- '𞺻' => 'غ',
- '🄀' => '0.',
- '🄁' => '0,',
- '🄂' => '1,',
- '🄃' => '2,',
- '🄄' => '3,',
- '🄅' => '4,',
- '🄆' => '5,',
- '🄇' => '6,',
- '🄈' => '7,',
- '🄉' => '8,',
- '🄊' => '9,',
- '🄐' => '(A)',
- '🄑' => '(B)',
- '🄒' => '(C)',
- '🄓' => '(D)',
- '🄔' => '(E)',
- '🄕' => '(F)',
- '🄖' => '(G)',
- '🄗' => '(H)',
- '🄘' => '(I)',
- '🄙' => '(J)',
- '🄚' => '(K)',
- '🄛' => '(L)',
- '🄜' => '(M)',
- '🄝' => '(N)',
- '🄞' => '(O)',
- '🄟' => '(P)',
- '🄠' => '(Q)',
- '🄡' => '(R)',
- '🄢' => '(S)',
- '🄣' => '(T)',
- '🄤' => '(U)',
- '🄥' => '(V)',
- '🄦' => '(W)',
- '🄧' => '(X)',
- '🄨' => '(Y)',
- '🄩' => '(Z)',
- '🄪' => '〔S〕',
- '🄫' => 'C',
- '🄬' => 'R',
- '🄭' => 'CD',
- '🄮' => 'WZ',
- '🄰' => 'A',
- '🄱' => 'B',
- '🄲' => 'C',
- '🄳' => 'D',
- '🄴' => 'E',
- '🄵' => 'F',
- '🄶' => 'G',
- '🄷' => 'H',
- '🄸' => 'I',
- '🄹' => 'J',
- '🄺' => 'K',
- '🄻' => 'L',
- '🄼' => 'M',
- '🄽' => 'N',
- '🄾' => 'O',
- '🄿' => 'P',
- '🅀' => 'Q',
- '🅁' => 'R',
- '🅂' => 'S',
- '🅃' => 'T',
- '🅄' => 'U',
- '🅅' => 'V',
- '🅆' => 'W',
- '🅇' => 'X',
- '🅈' => 'Y',
- '🅉' => 'Z',
- '🅊' => 'HV',
- '🅋' => 'MV',
- '🅌' => 'SD',
- '🅍' => 'SS',
- '🅎' => 'PPV',
- '🅏' => 'WC',
- '🅪' => 'MC',
- '🅫' => 'MD',
- '🅬' => 'MR',
- '🆐' => 'DJ',
- '🈀' => 'ほか',
- '🈁' => 'ココ',
- '🈂' => 'サ',
- '🈐' => '手',
- '🈑' => '字',
- '🈒' => '双',
- '🈓' => 'デ',
- '🈔' => '二',
- '🈕' => '多',
- '🈖' => '解',
- '🈗' => '天',
- '🈘' => '交',
- '🈙' => '映',
- '🈚' => '無',
- '🈛' => '料',
- '🈜' => '前',
- '🈝' => '後',
- '🈞' => '再',
- '🈟' => '新',
- '🈠' => '初',
- '🈡' => '終',
- '🈢' => '生',
- '🈣' => '販',
- '🈤' => '声',
- '🈥' => '吹',
- '🈦' => '演',
- '🈧' => '投',
- '🈨' => '捕',
- '🈩' => '一',
- '🈪' => '三',
- '🈫' => '遊',
- '🈬' => '左',
- '🈭' => '中',
- '🈮' => '右',
- '🈯' => '指',
- '🈰' => '走',
- '🈱' => '打',
- '🈲' => '禁',
- '🈳' => '空',
- '🈴' => '合',
- '🈵' => '満',
- '🈶' => '有',
- '🈷' => '月',
- '🈸' => '申',
- '🈹' => '割',
- '🈺' => '営',
- '🈻' => '配',
- '🉀' => '〔本〕',
- '🉁' => '〔三〕',
- '🉂' => '〔二〕',
- '🉃' => '〔安〕',
- '🉄' => '〔点〕',
- '🉅' => '〔打〕',
- '🉆' => '〔盗〕',
- '🉇' => '〔勝〕',
- '🉈' => '〔敗〕',
- '🉐' => '得',
- '🉑' => '可',
- '🯰' => '0',
- '🯱' => '1',
- '🯲' => '2',
- '🯳' => '3',
- '🯴' => '4',
- '🯵' => '5',
- '🯶' => '6',
- '🯷' => '7',
- '🯸' => '8',
- '🯹' => '9',
-);
diff --git a/vendor/symfony/polyfill-intl-normalizer/bootstrap.php b/vendor/symfony/polyfill-intl-normalizer/bootstrap.php
deleted file mode 100644
index ba62006..0000000
--- a/vendor/symfony/polyfill-intl-normalizer/bootstrap.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <[email protected]>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Intl\Normalizer as p;
-
-if (!function_exists('normalizer_is_normalized')) {
- function normalizer_is_normalized($s, $form = p\Normalizer::NFC) { return p\Normalizer::isNormalized($s, $form); }
-}
-if (!function_exists('normalizer_normalize')) {
- function normalizer_normalize($s, $form = p\Normalizer::NFC) { return p\Normalizer::normalize($s, $form); }
-}
diff --git a/vendor/symfony/polyfill-intl-normalizer/composer.json b/vendor/symfony/polyfill-intl-normalizer/composer.json
deleted file mode 100644
index b0986a8..0000000
--- a/vendor/symfony/polyfill-intl-normalizer/composer.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "name": "symfony/polyfill-intl-normalizer",
- "type": "library",
- "description": "Symfony polyfill for intl's Normalizer class and related functions",
- "keywords": ["polyfill", "shim", "compatibility", "portable", "intl", "normalizer"],
- "homepage": "https://symfony.com",
- "license": "MIT",
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "[email protected]"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "require": {
- "php": ">=5.3.3"
- },
- "autoload": {
- "psr-4": { "Symfony\\Polyfill\\Intl\\Normalizer\\": "" },
- "files": [ "bootstrap.php" ],
- "classmap": [ "Resources/stubs" ]
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "minimum-stability": "dev",
- "extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- }
-}
diff --git a/vendor/symfony/polyfill-php70/LICENSE b/vendor/symfony/polyfill-php70/LICENSE
deleted file mode 100644
index 4cd8bdd..0000000
--- a/vendor/symfony/polyfill-php70/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2015-2019 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/polyfill-php70/Php70.php b/vendor/symfony/polyfill-php70/Php70.php
deleted file mode 100644
index 7f1ad08..0000000
--- a/vendor/symfony/polyfill-php70/Php70.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <[email protected]>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Php70;
-
-/**
- * @author Nicolas Grekas <[email protected]>
- *
- * @internal
- */
-final class Php70
-{
- public static function intdiv($dividend, $divisor)
- {
- $dividend = self::intArg($dividend, __FUNCTION__, 1);
- $divisor = self::intArg($divisor, __FUNCTION__, 2);
-
- if (0 === $divisor) {
- throw new \DivisionByZeroError('Division by zero');
- }
- if (-1 === $divisor && ~PHP_INT_MAX === $dividend) {
- throw new \ArithmeticError('Division of PHP_INT_MIN by -1 is not an integer');
- }
-
- return ($dividend - ($dividend % $divisor)) / $divisor;
- }
-
- public static function preg_replace_callback_array(array $patterns, $subject, $limit = -1, &$count = 0)
- {
- $count = 0;
- $result = (string) $subject;
- if (0 === $limit = self::intArg($limit, __FUNCTION__, 3)) {
- return $result;
- }
-
- foreach ($patterns as $pattern => $callback) {
- $result = preg_replace_callback($pattern, $callback, $result, $limit, $c);
- $count += $c;
- }
-
- return $result;
- }
-
- public static function error_clear_last()
- {
- static $handler;
- if (!$handler) {
- $handler = function () { return false; };
- }
- set_error_handler($handler);
- @trigger_error('');
- restore_error_handler();
- }
-
- private static function intArg($value, $caller, $pos)
- {
- if (\is_int($value)) {
- return $value;
- }
- if (!\is_numeric($value) || PHP_INT_MAX <= ($value += 0) || ~PHP_INT_MAX >= $value) {
- throw new \TypeError(sprintf('%s() expects parameter %d to be integer, %s given', $caller, $pos, \gettype($value)));
- }
-
- return (int) $value;
- }
-}
diff --git a/vendor/symfony/polyfill-php70/README.md b/vendor/symfony/polyfill-php70/README.md
deleted file mode 100644
index abd5488..0000000
--- a/vendor/symfony/polyfill-php70/README.md
+++ /dev/null
@@ -1,28 +0,0 @@
-Symfony Polyfill / Php70
-========================
-
-This component provides features unavailable in releases prior to PHP 7.0:
-
-- [`intdiv`](https://php.net/intdiv)
-- [`preg_replace_callback_array`](https://php.net/preg_replace_callback_array)
-- [`error_clear_last`](https://php.net/error_clear_last)
-- `random_bytes` and `random_int` (from [paragonie/random_compat](https://github.com/paragonie/random_compat))
-- [`*Error` throwable classes](https://php.net/Error)
-- [`PHP_INT_MIN`](https://php.net/reserved.constants#constant.php-int-min)
-- `SessionUpdateTimestampHandlerInterface`
-
-More information can be found in the
-[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
-
-Compatibility notes
-===================
-
-To write portable code between PHP5 and PHP7, some care must be taken:
-- `\*Error` exceptions must be caught before `\Exception`;
-- after calling `error_clear_last()`, the result of `$e = error_get_last()` must be
- verified using `isset($e['message'][0])` instead of `null !== $e`.
-
-License
-=======
-
-This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php b/vendor/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php
deleted file mode 100644
index 6819124..0000000
--- a/vendor/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-class ArithmeticError extends Error
-{
-}
diff --git a/vendor/symfony/polyfill-php70/Resources/stubs/AssertionError.php b/vendor/symfony/polyfill-php70/Resources/stubs/AssertionError.php
deleted file mode 100644
index acb1250..0000000
--- a/vendor/symfony/polyfill-php70/Resources/stubs/AssertionError.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-class AssertionError extends Error
-{
-}
diff --git a/vendor/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php b/vendor/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php
deleted file mode 100644
index c99278b..0000000
--- a/vendor/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-class DivisionByZeroError extends Error
-{
-}
diff --git a/vendor/symfony/polyfill-php70/Resources/stubs/Error.php b/vendor/symfony/polyfill-php70/Resources/stubs/Error.php
deleted file mode 100644
index 405847f..0000000
--- a/vendor/symfony/polyfill-php70/Resources/stubs/Error.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-class Error extends Exception
-{
-}
diff --git a/vendor/symfony/polyfill-php70/Resources/stubs/ParseError.php b/vendor/symfony/polyfill-php70/Resources/stubs/ParseError.php
deleted file mode 100644
index 2dd447d..0000000
--- a/vendor/symfony/polyfill-php70/Resources/stubs/ParseError.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-class ParseError extends Error
-{
-}
diff --git a/vendor/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php b/vendor/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php
deleted file mode 100644
index 0cc02c8..0000000
--- a/vendor/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-interface SessionUpdateTimestampHandlerInterface
-{
- /**
- * Checks if a session identifier already exists or not.
- *
- * @param string $key
- *
- * @return bool
- */
- public function validateId($key);
-
- /**
- * Updates the timestamp of a session when its data didn't change.
- *
- * @param string $key
- * @param string $val
- *
- * @return bool
- */
- public function updateTimestamp($key, $val);
-}
diff --git a/vendor/symfony/polyfill-php70/Resources/stubs/TypeError.php b/vendor/symfony/polyfill-php70/Resources/stubs/TypeError.php
deleted file mode 100644
index 2bed1b4..0000000
--- a/vendor/symfony/polyfill-php70/Resources/stubs/TypeError.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-class TypeError extends Error
-{
-}
diff --git a/vendor/symfony/polyfill-php70/bootstrap.php b/vendor/symfony/polyfill-php70/bootstrap.php
deleted file mode 100644
index a11f80d..0000000
--- a/vendor/symfony/polyfill-php70/bootstrap.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <[email protected]>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Php70 as p;
-
-if (PHP_VERSION_ID >= 70000) {
- return;
-}
-
-if (!defined('PHP_INT_MIN')) {
- define('PHP_INT_MIN', ~PHP_INT_MAX);
-}
-
-if (!function_exists('intdiv')) {
- function intdiv($dividend, $divisor) { return p\Php70::intdiv($dividend, $divisor); }
-}
-if (!function_exists('preg_replace_callback_array')) {
- function preg_replace_callback_array(array $patterns, $subject, $limit = -1, &$count = 0) { return p\Php70::preg_replace_callback_array($patterns, $subject, $limit, $count); }
-}
-if (!function_exists('error_clear_last')) {
- function error_clear_last() { return p\Php70::error_clear_last(); }
-}
diff --git a/vendor/symfony/polyfill-php70/composer.json b/vendor/symfony/polyfill-php70/composer.json
deleted file mode 100644
index 771a6f6..0000000
--- a/vendor/symfony/polyfill-php70/composer.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "symfony/polyfill-php70",
- "type": "library",
- "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
- "keywords": ["polyfill", "shim", "compatibility", "portable"],
- "homepage": "https://symfony.com",
- "license": "MIT",
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "[email protected]"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "require": {
- "php": ">=5.3.3",
- "paragonie/random_compat": "~1.0|~2.0|~9.99"
- },
- "autoload": {
- "psr-4": { "Symfony\\Polyfill\\Php70\\": "" },
- "files": [ "bootstrap.php" ],
- "classmap": [ "Resources/stubs" ]
- },
- "minimum-stability": "dev",
- "extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- }
-}
diff --git a/vendor/symfony/polyfill-php72/LICENSE b/vendor/symfony/polyfill-php72/LICENSE
deleted file mode 100644
index 4cd8bdd..0000000
--- a/vendor/symfony/polyfill-php72/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2015-2019 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/symfony/polyfill-php72/Php72.php b/vendor/symfony/polyfill-php72/Php72.php
deleted file mode 100644
index 9b3edc7..0000000
--- a/vendor/symfony/polyfill-php72/Php72.php
+++ /dev/null
@@ -1,217 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <[email protected]>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Php72;
-
-/**
- * @author Nicolas Grekas <[email protected]>
- * @author Dariusz Rumiński <[email protected]>
- *
- * @internal
- */
-final class Php72
-{
- private static $hashMask;
-
- public static function utf8_encode($s)
- {
- $s .= $s;
- $len = \strlen($s);
-
- for ($i = $len >> 1, $j = 0; $i < $len; ++$i, ++$j) {
- switch (true) {
- case $s[$i] < "\x80": $s[$j] = $s[$i]; break;
- case $s[$i] < "\xC0": $s[$j] = "\xC2"; $s[++$j] = $s[$i]; break;
- default: $s[$j] = "\xC3"; $s[++$j] = \chr(\ord($s[$i]) - 64); break;
- }
- }
-
- return substr($s, 0, $j);
- }
-
- public static function utf8_decode($s)
- {
- $s = (string) $s;
- $len = \strlen($s);
-
- for ($i = 0, $j = 0; $i < $len; ++$i, ++$j) {
- switch ($s[$i] & "\xF0") {
- case "\xC0":
- case "\xD0":
- $c = (\ord($s[$i] & "\x1F") << 6) | \ord($s[++$i] & "\x3F");
- $s[$j] = $c < 256 ? \chr($c) : '?';
- break;
-
- case "\xF0":
- ++$i;
- // no break
-
- case "\xE0":
- $s[$j] = '?';
- $i += 2;
- break;
-
- default:
- $s[$j] = $s[$i];
- }
- }
-
- return substr($s, 0, $j);
- }
-
- public static function php_os_family()
- {
- if ('\\' === \DIRECTORY_SEPARATOR) {
- return 'Windows';
- }
-
- $map = array(
- 'Darwin' => 'Darwin',
- 'DragonFly' => 'BSD',
- 'FreeBSD' => 'BSD',
- 'NetBSD' => 'BSD',
- 'OpenBSD' => 'BSD',
- 'Linux' => 'Linux',
- 'SunOS' => 'Solaris',
- );
-
- return isset($map[PHP_OS]) ? $map[PHP_OS] : 'Unknown';
- }
-
- public static function spl_object_id($object)
- {
- if (null === self::$hashMask) {
- self::initHashMask();
- }
- if (null === $hash = spl_object_hash($object)) {
- return;
- }
-
- // On 32-bit systems, PHP_INT_SIZE is 4,
- return self::$hashMask ^ hexdec(substr($hash, 16 - (\PHP_INT_SIZE * 2 - 1), (\PHP_INT_SIZE * 2 - 1)));
- }
-
- public static function sapi_windows_vt100_support($stream, $enable = null)
- {
- if (!\is_resource($stream)) {
- trigger_error('sapi_windows_vt100_support() expects parameter 1 to be resource, '.\gettype($stream).' given', E_USER_WARNING);
-
- return false;
- }
-
- $meta = stream_get_meta_data($stream);
-
- if ('STDIO' !== $meta['stream_type']) {
- trigger_error('sapi_windows_vt100_support() was not able to analyze the specified stream', E_USER_WARNING);
-
- return false;
- }
-
- // We cannot actually disable vt100 support if it is set
- if (false === $enable || !self::stream_isatty($stream)) {
- return false;
- }
-
- // The native function does not apply to stdin
- $meta = array_map('strtolower', $meta);
- $stdin = 'php://stdin' === $meta['uri'] || 'php://fd/0' === $meta['uri'];
-
- return !$stdin
- && (false !== getenv('ANSICON')
- || 'ON' === getenv('ConEmuANSI')
- || 'xterm' === getenv('TERM')
- || 'Hyper' === getenv('TERM_PROGRAM'));
- }
-
- public static function stream_isatty($stream)
- {
- if (!\is_resource($stream)) {
- trigger_error('stream_isatty() expects parameter 1 to be resource, '.\gettype($stream).' given', E_USER_WARNING);
-
- return false;
- }
-
- if ('\\' === \DIRECTORY_SEPARATOR) {
- $stat = @fstat($stream);
- // Check if formatted mode is S_IFCHR
- return $stat ? 0020000 === ($stat['mode'] & 0170000) : false;
- }
-
- return \function_exists('posix_isatty') && @posix_isatty($stream);
- }
-
- private static function initHashMask()
- {
- $obj = (object) array();
- self::$hashMask = -1;
-
- // check if we are nested in an output buffering handler to prevent a fatal error with ob_start() below
- $obFuncs = array('ob_clean', 'ob_end_clean', 'ob_flush', 'ob_end_flush', 'ob_get_contents', 'ob_get_flush');
- foreach (debug_backtrace(\PHP_VERSION_ID >= 50400 ? DEBUG_BACKTRACE_IGNORE_ARGS : false) as $frame) {
- if (isset($frame['function'][0]) && !isset($frame['class']) && 'o' === $frame['function'][0] && \in_array($frame['function'], $obFuncs)) {
- $frame['line'] = 0;
- break;
- }
- }
- if (!empty($frame['line'])) {
- ob_start();
- debug_zval_dump($obj);
- self::$hashMask = (int) substr(ob_get_clean(), 17);
- }
-
- self::$hashMask ^= hexdec(substr(spl_object_hash($obj), 16 - (\PHP_INT_SIZE * 2 - 1), (\PHP_INT_SIZE * 2 - 1)));
- }
-
- public static function mb_chr($code, $encoding = null)
- {
- if (0x80 > $code %= 0x200000) {
- $s = \chr($code);
- } elseif (0x800 > $code) {
- $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F);
- } elseif (0x10000 > $code) {
- $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
- } else {
- $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
- }
-
- if ('UTF-8' !== $encoding) {
- $s = mb_convert_encoding($s, $encoding, 'UTF-8');
- }
-
- return $s;
- }
-
- public static function mb_ord($s, $encoding = null)
- {
- if (null == $encoding) {
- $s = mb_convert_encoding($s, 'UTF-8');
- } elseif ('UTF-8' !== $encoding) {
- $s = mb_convert_encoding($s, 'UTF-8', $encoding);
- }
-
- if (1 === \strlen($s)) {
- return \ord($s);
- }
-
- $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0;
- if (0xF0 <= $code) {
- return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80;
- }
- if (0xE0 <= $code) {
- return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80;
- }
- if (0xC0 <= $code) {
- return (($code - 0xC0) << 6) + $s[2] - 0x80;
- }
-
- return $code;
- }
-}
diff --git a/vendor/symfony/polyfill-php72/README.md b/vendor/symfony/polyfill-php72/README.md
deleted file mode 100644
index 59dec8a..0000000
--- a/vendor/symfony/polyfill-php72/README.md
+++ /dev/null
@@ -1,28 +0,0 @@
-Symfony Polyfill / Php72
-========================
-
-This component provides functions added to PHP 7.2 core:
-
-- [`spl_object_id`](https://php.net/spl_object_id)
-- [`stream_isatty`](https://php.net/stream_isatty)
-
-On Windows only:
-
-- [`sapi_windows_vt100_support`](https://php.net/sapi_windows_vt100_support)
-
-Moved to core since 7.2 (was in the optional XML extension earlier):
-
-- [`utf8_encode`](https://php.net/utf8_encode)
-- [`utf8_decode`](https://php.net/utf8_decode)
-
-Also, it provides constants added to PHP 7.2:
-- [`PHP_FLOAT_*`](https://php.net/reserved.constants#constant.php-float-dig)
-- [`PHP_OS_FAMILY`](https://php.net/reserved.constants#constant.php-os-family)
-
-More information can be found in the
-[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
-
-License
-=======
-
-This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-php72/bootstrap.php b/vendor/symfony/polyfill-php72/bootstrap.php
deleted file mode 100644
index a27a900..0000000
--- a/vendor/symfony/polyfill-php72/bootstrap.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <[email protected]>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Php72 as p;
-
-if (PHP_VERSION_ID >= 70200) {
- return;
-}
-
-if (!defined('PHP_FLOAT_DIG')) {
- define('PHP_FLOAT_DIG', 15);
-}
-if (!defined('PHP_FLOAT_EPSILON')) {
- define('PHP_FLOAT_EPSILON', 2.2204460492503E-16);
-}
-if (!defined('PHP_FLOAT_MIN')) {
- define('PHP_FLOAT_MIN', 2.2250738585072E-308);
-}
-if (!defined('PHP_FLOAT_MAX')) {
- define('PHP_FLOAT_MAX', 1.7976931348623157E+308);
-}
-if (!defined('PHP_OS_FAMILY')) {
- define('PHP_OS_FAMILY', p\Php72::php_os_family());
-}
-
-if ('\\' === DIRECTORY_SEPARATOR && !function_exists('sapi_windows_vt100_support')) {
- function sapi_windows_vt100_support($stream, $enable = null) { return p\Php72::sapi_windows_vt100_support($stream, $enable); }
-}
-if (!function_exists('stream_isatty')) {
- function stream_isatty($stream) { return p\Php72::stream_isatty($stream); }
-}
-if (!function_exists('utf8_encode')) {
- function utf8_encode($s) { return p\Php72::utf8_encode($s); }
-}
-if (!function_exists('utf8_decode')) {
- function utf8_decode($s) { return p\Php72::utf8_decode($s); }
-}
-if (!function_exists('spl_object_id')) {
- function spl_object_id($s) { return p\Php72::spl_object_id($s); }
-}
-if (!function_exists('mb_ord')) {
- function mb_ord($s, $enc = null) { return p\Php72::mb_ord($s, $enc); }
-}
-if (!function_exists('mb_chr')) {
- function mb_chr($code, $enc = null) { return p\Php72::mb_chr($code, $enc); }
-}
-if (!function_exists('mb_scrub')) {
- function mb_scrub($s, $enc = null) { $enc = null === $enc ? mb_internal_encoding() : $enc; return mb_convert_encoding($s, $enc, $enc); }
-}
diff --git a/vendor/symfony/polyfill-php72/composer.json b/vendor/symfony/polyfill-php72/composer.json
deleted file mode 100644
index e295cab..0000000
--- a/vendor/symfony/polyfill-php72/composer.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "name": "symfony/polyfill-php72",
- "type": "library",
- "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
- "keywords": ["polyfill", "shim", "compatibility", "portable"],
- "homepage": "https://symfony.com",
- "license": "MIT",
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "[email protected]"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "require": {
- "php": ">=5.3.3"
- },
- "autoload": {
- "psr-4": { "Symfony\\Polyfill\\Php72\\": "" },
- "files": [ "bootstrap.php" ]
- },
- "minimum-stability": "dev",
- "extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- }
-}
diff --git a/vendor/tumblr/tumblr/.gitignore b/vendor/tumblr/tumblr/.gitignore
deleted file mode 100644
index 2e61014..0000000
--- a/vendor/tumblr/tumblr/.gitignore
+++ /dev/null
@@ -1,12 +0,0 @@
-coverage
-.DS_Store
-
-composer.phar
-
-*.swp
-*.swo
-
-usage.php
-
-vendor
-composer.lock
diff --git a/vendor/tumblr/tumblr/.travis.yml b/vendor/tumblr/tumblr/.travis.yml
deleted file mode 100644
index 4986ae4..0000000
--- a/vendor/tumblr/tumblr/.travis.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-language: php
-before_script: composer install
-
-php:
- - 7.1
- - 7.0
- - 5.6
- - hhvm
-
-matrix:
- allow_failures:
- - php: hhvm
diff --git a/vendor/tumblr/tumblr/CONTRIBUTING.md b/vendor/tumblr/tumblr/CONTRIBUTING.md
deleted file mode 100644
index e6d97d1..0000000
--- a/vendor/tumblr/tumblr/CONTRIBUTING.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# Contributing
-
-We want to make contributing to tumblr.php as easy and transparent as possible. If you run into problems, please open an issue. We also actively welcome pull requests.
-
-## Pull Requests
-
-1. Fork the repo and create your branch from `master`.
-2. If you've added code that should be tested, add tests.
-3. If you've changed APIs, update the documentation.
-4. Ensure the test suite passes.
-5. If you haven't already, complete the Contributor License Agreement ("CLA").
-
-## Contributor License Agreement ("CLA")
-
-In order to accept your pull request, we need you to submit a CLA.
-
-Complete your CLA [here](http://static.tumblr.com/zyubucd/GaTngbrpr/tumblr_corporate_contributor_license_agreement_v1__10-7-14.pdf) (a more integrated web form is coming soon).
-
-## License
-
-By contributing to tumblr.php you agree that your contributions will be licensed under its Apache 2.0 license.
-
diff --git a/vendor/tumblr/tumblr/LICENSE b/vendor/tumblr/tumblr/LICENSE
deleted file mode 100644
index ba74d5c..0000000
--- a/vendor/tumblr/tumblr/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright 2013 Tumblr, Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/vendor/tumblr/tumblr/README.md b/vendor/tumblr/tumblr/README.md
deleted file mode 100644
index 69a9dd1..0000000
--- a/vendor/tumblr/tumblr/README.md
+++ /dev/null
@@ -1,109 +0,0 @@
-# tumblr.php
-
-[![Build Status](https://secure.travis-ci.org/tumblr/tumblr.php.png)](http://travis-ci.org/tumblr/tumblr.php)
-
-The official PHP client for the
-[Tumblr API](http://www.tumblr.com/docs/en/api/v2).
-
-## Usage
-
-### Basic Usage
-
-The first step is setting up a Client:
-
-``` php
-$client = new Tumblr\API\Client($consumerKey, $consumerSecret);
-$client->setToken($token, $tokenSecret);
-```
-
-And then you can do anything you'd like:
-
-``` php
-foreach ($client->getUserInfo()->user->blogs as $blog) {
- echo $blog->name . "\n";
-}
-```
-
-### User Methods
-
-``` php
-$client->getUserInfo();
-
-$client->getDashboardPosts($options = null);
-$client->getLikedPosts($options = null);
-$client->getFollowedBlogs($options = null);
-
-$client->follow($blogName);
-$client->unfollow($blogName);
-
-$client->like($postId, $reblogKey);
-$client->unlike($postId, $reblogKey);
-```
-
-### Blog Methods
-
-``` php
-$client->getBlogInfo($blogName);
-
-$client->getBlogAvatar($blogName, $size = null);
-
-$client->getBlogPosts($blogName, $options = null);
-$client->getBlogLikes($blogName, $options = null);
-$client->getBlogFollowers($blogName, $options = null);
-
-$client->getQueuedPosts($blogName, $options = null);
-$client->getDraftPosts($blogName, $options = null);
-$client->getSubmissionPosts($blogName, $options = null);
-```
-
-### Post Methods
-
-``` php
-$client->createPost($blogName, $data);
-$client->editPost($blogName, $id, $data);
-$client->deletePost($blogName, $id, $reblogKey);
-$client->reblogPost($blogName, $id, $reblogKey, $options = null);
-```
-
-### Tagged Methods
-
-``` php
-$client->getTaggedPosts($tag, $options = null);
-```
-
-## Dependencies
-
-tumblr.php is available
-[on composer](https://packagist.org/packages/tumblr/tumblr)
-
-* guzzle/guzzle 6.*
-* eher/oauth 1.0.x
-
-If you're using composer (you should!) you can just run
-`php composer.phar install` and you'll be good to go. More details on
-[getcomposer.org](http://getcomposer.org/).
-
-## Running tests
-
-tumblr.php has full unit tests that can be run with PHPUnit like this:
-
-``` bash
-$ phpunit
-```
-
-That will also generate a coverage report into `./coverage`
-
-## Copyright and license
-
-Copyright 2013 Tumblr, Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License"); you may not
-use this work except in compliance with the License. You may obtain a copy of
-the License in the LICENSE file, or at:
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-License for the specific language governing permissions and limitations.
diff --git a/vendor/tumblr/tumblr/composer.json b/vendor/tumblr/tumblr/composer.json
deleted file mode 100644
index 748a16b..0000000
--- a/vendor/tumblr/tumblr/composer.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-
- "name": "tumblr/tumblr",
-
- "description": "Official Tumblr PHP Client",
-
- "keywords": ["tumblr", "api", "sdk", "gif"],
-
- "homepage": "https://github.com/tumblr/tumblr.php",
-
- "authors": [
- {
- "name": "John Crepezzi",
- "email": "[email protected]",
- "homepage": "https://github.com/seejohnrun",
- "role": "developer"
- }
- ],
-
- "license": "Apache-2.0",
-
- "type": "library",
-
- "require": {
- "eher/oauth": "1.0.*",
- "guzzlehttp/guzzle": "6.*"
- },
-
- "require-dev": {
- "phpunit/phpunit": "5.3.*"
- },
-
- "autoload": {
- "psr-0": {
- "Tumblr\\API": "lib"
- }
- }
-
-}
diff --git a/vendor/tumblr/tumblr/lib/Tumblr/API/Client.php b/vendor/tumblr/tumblr/lib/Tumblr/API/Client.php
deleted file mode 100644
index 7d51138..0000000
--- a/vendor/tumblr/tumblr/lib/Tumblr/API/Client.php
+++ /dev/null
@@ -1,502 +0,0 @@
-<?php
-
-namespace Tumblr\API;
-
-/**
- * A client to access the Tumblr API
- */
-class Client
-{
-
- private $apiKey;
-
- /**
- * Create a new Client
- *
- * @param string $consumerKey the consumer key
- * @param string $consumerSecret the consumer secret
- * @param string $token oauth token
- * @param string $secret oauth token secret
- */
- public function __construct($consumerKey, $consumerSecret = null, $token = null, $secret = null)
- {
- $this->requestHandler = new RequestHandler();
- $this->setConsumer($consumerKey, $consumerSecret);
-
- if ($token && $secret) {
- $this->setToken($token, $secret);
- }
- }
-
- /**
- * Set the consumer for this client
- *
- * @param string $consumerKey the consumer key
- * @param string $consumerSecret the consumer secret
- */
- public function setConsumer($consumerKey, $consumerSecret)
- {
- $this->apiKey = $consumerKey;
- $this->requestHandler->setConsumer($consumerKey, $consumerSecret);
- }
-
- /**
- * Set the token for this client
- *
- * @param string $token the oauth token
- * @param string $secret the oauth secret
- */
- public function setToken($token, $secret)
- {
- $this->requestHandler->setToken($token, $secret);
- }
-
- /**
- * Retrieve RequestHandler instance
- *
- * @return RequestHandler
- */
- public function getRequestHandler()
- {
- return $this->requestHandler;
- }
-
- /**
- * Get info on the authenticating user
- *
- * @return array the response array
- */
- public function getUserInfo()
- {
- return $this->getRequest('v2/user/info', null, false);
- }
-
- /**
- * Get user dashboard for the authenticating user
- *
- * @param array $options the options for the call
- * @return array the response array
- */
- public function getDashboardPosts($options = null)
- {
- return $this->getRequest('v2/user/dashboard', $options, false);
- }
-
- /**
- * Get followings for the authenticating user
- *
- * @param array $options the options for the call
- * @return array the response array
- */
- public function getFollowedBlogs($options = null)
- {
- return $this->getRequest('v2/user/following', $options, false);
- }
-
- /**
- * Get likes for the authenticating user
- *
- * @param array $options the options for the call
- * @return array the response array
- */
- public function getLikedPosts($options = null)
- {
- return $this->getRequest('v2/user/likes', $options, false);
- }
-
- /**
- * Follow a blog
- *
- * @param string $blogName the name of the blog to follow
- * @return array the response array
- */
- public function follow($blogName)
- {
- $options = array('url' => $this->blogUrl($blogName));
-
- return $this->postRequest('v2/user/follow', $options, false);
- }
-
- /**
- * Unfollow a blog
- *
- * @param string $blogName the name of the blog to follow
- * @return array the response array
- */
- public function unfollow($blogName)
- {
- $options = array('url' => $this->blogUrl($blogName));
-
- return $this->postRequest('v2/user/unfollow', $options, false);
- }
-
- /**
- * Like a post
- *
- * @param int $postId the id of the post
- * @param string $reblogKey the reblog_key of the post
- *
- * @return array the response array
- */
- public function like($postId, $reblogKey)
- {
- $options = array('id' => $postId, 'reblog_key' => $reblogKey);
-
- return $this->postRequest('v2/user/like', $options, false);
- }
-
- /**
- * Unlike a post
- *
- * @param int $postId the id of the post
- * @param string $reblogKey the reblog_key of the post
- *
- * @return array the response array
- */
- public function unlike($postId, $reblogKey)
- {
- $options = array('id' => $postId, 'reblog_key' => $reblogKey);
-
- return $this->postRequest('v2/user/unlike', $options, false);
- }
-
- /**
- * Delete a post
- *
- * @param string $blogName the name of the blog the post is on
- * @param int $postId the id of the post
- * @param string $reblogKey the reblog_key of the post
- *
- * @return array the response array
- */
- public function deletePost($blogName, $postId, $reblogKey)
- {
- $options = array('id' => $postId, 'reblog_key' => $reblogKey);
- $path = $this->blogPath($blogName, '/post/delete');
-
- return $this->postRequest($path, $options, false);
- }
-
- /**
- * Reblog a post
- *
- * @param string $blogName the name of the blog
- * @param int $postId the id of the post
- * @param string $reblogKey the reblog key of the post
- * @param array $options the options for the call
- *
- * @return array the response array
- */
- public function reblogPost($blogName, $postId, $reblogKey, $options = null)
- {
- $params = array('id' => $postId, 'reblog_key' => $reblogKey);
- $params = array_merge($options ?: array(), $params);
- $path = $this->blogPath($blogName, '/post/reblog');
-
- return $this->postRequest($path, $params, false);
- }
-
- /**
- * Edit a post
- *
- * @param string $blogName the name of the blog
- * @param int $postId the id of the post to edit
- * @param array $data the data to save
- *
- * @return array the response array
- */
- public function editPost($blogName, $postId, $data)
- {
- $data['id'] = $postId;
- $path = $this->blogPath($blogName, '/post/edit');
-
- return $this->postRequest($path, $data, false);
- }
-
- /**
- * Create a post
- *
- * @param string $blogName the name of the blog
- * @param array $data the data to save
- *
- * @return array the response array
- */
- public function createPost($blogName, $data)
- {
- $path = $this->blogPath($blogName, '/post');
-
- return $this->postRequest($path, $data, false);
- }
-
- /**
- * Get tagged posts
- *
- * @param string $tag the tag to look up
- * @param array $options the options for the call
- *
- * @return array the response array
- */
- public function getTaggedPosts($tag, $options = null)
- {
- if (!$options) {
- $options = array();
- }
- $options['tag'] = $tag;
-
- return $this->getRequest('v2/tagged', $options, true);
- }
-
- /**
- * Get information about a given blog
- *
- * @param string $blogName the name of the blog to look up
- * @return array the response array
- */
- public function getBlogInfo($blogName)
- {
- $path = $this->blogPath($blogName, '/info');
-
- return $this->getRequest($path, null, true);
- }
-
- /**
- * Get blog avatar URL
- *
- * @param string $blogName the nae of the blog to look up
- * @param int $size the size to retrieve
- *
- * @return string the avatar url
- */
- public function getBlogAvatar($blogName, $size = null)
- {
- $path = $this->blogPath($blogName, '/avatar');
- if ($size) {
- $path .= "/$size";
- }
-
- return $this->getRedirect($path, null, true);
- }
-
- /**
- * Get blog likes for a given blog
- *
- * @param string $blogName the name of the blog to look up
- * @param array $options the options for the call
- *
- * @return array the response array
- */
- public function getBlogLikes($blogName, $options = null)
- {
- $path = $this->blogPath($blogName, '/likes');
-
- return $this->getRequest($path, $options, true);
- }
-
- /**
- * Get blog followers for a given blog
- *
- * @param string $blogName the name of the blog to look up
- * @param array $options the options for the call
- *
- * @return array the response array
- */
- public function getBlogFollowers($blogName, $options = null)
- {
- $path = $this->blogPath($blogName, '/followers');
-
- return $this->getRequest($path, $options, false);
- }
-
- /**
- * Get posts for a given blog
- *
- * @param string $blogName the name of the blog
- * @param array $options the options for the call
- *
- * @return array the response array
- */
- public function getBlogPosts($blogName, $options = null)
- {
- $path = $this->blogPath($blogName, '/posts');
- if ($options && isset($options['type'])) {
- $path .= '/' . $options['type'];
- unset($options['type']);
- }
-
- return $this->getRequest($path, $options, true);
- }
-
- /**
- * Get queue posts for a given blog
- *
- * @param string $blogName the name of the blog
- * @param array $options the options for the call
- *
- * @return array the response array
- */
- public function getQueuedPosts($blogName, $options = null)
- {
- $path = $this->blogPath($blogName, '/posts/queue');
-
- return $this->getRequest($path, $options, false);
- }
-
- /**
- * Get draft posts for a given blog
- *
- * @param string $blogName the name of the blog
- * @param array $options the options for the call
- *
- * @return array the response array
- */
- public function getDraftPosts($blogName, $options = null)
- {
- $path = $this->blogPath($blogName, '/posts/draft');
-
- return $this->getRequest($path, $options, false);
- }
-
- /**
- * Get submission posts for a given blog
- *
- * @param string $blogName the name of the blog
- * @param array $options the options for the call
- *
- * @return array the response array
- */
- public function getSubmissionPosts($blogName, $options = null)
- {
- $path = $this->blogPath($blogName, '/posts/submission');
-
- return $this->getRequest($path, $options, false);
- }
-
- /**
- * Make a GET request to the given endpoint and return the response
- *
- * @param string $path the path to call on
- * @param array $options the options to call with
- * @param bool $addApiKey whether or not to add the api key
- *
- * @return array the response object (parsed)
- */
- public function getRequest($path, $options, $addApiKey)
- {
- $response = $this->makeRequest('GET', $path, $options, $addApiKey);
-
- return $this->parseResponse($response);
- }
-
- /**
- * Make a POST request to the given endpoint and return the response
- *
- * @param string $path the path to call on
- * @param array $options the options to call with
- * @param bool $addApiKey whether or not to add the api key
- *
- * @return array the response object (parsed)
- */
- public function postRequest($path, $options, $addApiKey)
- {
- if (isset($options['source']) && is_array($options['source'])) {
- $sources = $options['source'];
- unset($options['source']);
- foreach ($sources as $i => $source) {
- $options["source[$i]"] = $source;
- }
- }
-
- $response = $this->makeRequest('POST', $path, $options, $addApiKey);
- return $this->parseResponse($response);
- }
-
- /**
- * Parse a response and return an appropriate result
- *
- * @param \stdClass $response the response from the server
- *
- * @throws RequestException
- * @return array the response data
- */
- private function parseResponse($response)
- {
- $response->json = json_decode($response->body);
- if ($response->status < 400) {
- return $response->json->response;
- } else {
- throw new RequestException($response);
- }
- }
-
- /**
- * Make a GET request to the given endpoint and return the response
- *
- * @param string $path the path to call on
- * @param array $options the options to call with
- * @param bool $addApiKey whether or not to add the api key
- *
- * @return string url redirected to (or null)
- */
- private function getRedirect($path, $options, $addApiKey)
- {
- $response = $this->makeRequest('GET', $path, $options, $addApiKey);
- if ($response->status === 301 || $response->status === 302) {
- return $response->headers['Location'][0];
- }
-
- return null;
- }
-
- /**
- * Make a request to the given endpoint and return the response
- *
- * @param string $method the method to call: GET, POST
- * @param string $path the path to call on
- * @param array $options the options to call with
- * @param bool $addApiKey whether or not to add the api key
- *
- * @return \stdClass the response object (not parsed)
- */
- private function makeRequest($method, $path, $options, $addApiKey)
- {
- if ($addApiKey) {
- $options = array_merge(
- array('api_key' => $this->apiKey),
- $options ?: array()
- );
- }
-
- return $this->requestHandler->request($method, $path, $options);
- }
-
- /**
- * Expand the given blogName into a base path for the blog
- *
- * @param string $blogName the name of the blog
- * @param string $ext the url extension
- *
- * @return string the blog base path
- */
- private function blogPath($blogName, $ext)
- {
- $blogUrl = $this->blogUrl($blogName);
-
- return "v2/blog/$blogUrl$ext";
- }
-
- /**
- * Get the URL of a blog by name or URL
- *
- * @param string $blogName the name of the blog
- * @return string the blog URL
- */
- private function blogUrl($blogName)
- {
- if (strpos($blogName, '.') === false) {
- return "$blogName.tumblr.com";
- }
-
- return $blogName;
- }
-
-}
diff --git a/vendor/tumblr/tumblr/lib/Tumblr/API/RequestException.php b/vendor/tumblr/tumblr/lib/Tumblr/API/RequestException.php
deleted file mode 100644
index 00af04b..0000000
--- a/vendor/tumblr/tumblr/lib/Tumblr/API/RequestException.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-namespace Tumblr\API;
-
-class RequestException extends \Exception
-{
-
- /**
- * @param \stdClass $response
- */
- public function __construct($response)
- {
- $error = json_decode($response->body);
-
- $errstr = 'Unknown Error';
- if (isset($error->meta)) {
- $errstr = $error->meta->msg;
- if (isset($error->response->errors)) {
- $errstr .= ' ('.$error->response->errors[0].')';
- }
- } elseif (isset($error->response->errors)) {
- $errstr = $error->response->errors[0];
- }
-
- $this->statusCode = $response->status;
- $this->message = $errstr;
- parent::__construct($this->message, $this->statusCode);
- }
-
- public function __toString()
- {
- return __CLASS__ . ": [$this->statusCode]: $this->message\n";
- }
-
-}
diff --git a/vendor/tumblr/tumblr/lib/Tumblr/API/RequestHandler.php b/vendor/tumblr/tumblr/lib/Tumblr/API/RequestHandler.php
deleted file mode 100644
index c14eefc..0000000
--- a/vendor/tumblr/tumblr/lib/Tumblr/API/RequestHandler.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-
-namespace Tumblr\API;
-
-/**
- * A request handler for Tumblr authentication
- * and requests
- */
-class RequestHandler
-{
-
- private $consumer;
- private $token;
- private $signatureMethod;
-
- private $baseUrl;
- private $version;
-
- /**
- * Instantiate a new RequestHandler
- */
- public function __construct()
- {
- $this->baseUrl = 'https://api.tumblr.com/';
- $this->version = '0.1.2';
-
- $this->signatureMethod = new \Eher\OAuth\HmacSha1();
- $this->client = new \GuzzleHttp\Client(array(
- 'allow_redirects' => false,
- ));
- }
-
- /**
- * Set the consumer for this request handler
- *
- * @param string $key the consumer key
- * @param string $secret the consumer secret
- */
- public function setConsumer($key, $secret)
- {
- $this->consumer = new \Eher\OAuth\Consumer($key, $secret);
- }
-
- /**
- * Set the token for this request handler
- *
- * @param string $token the oauth token
- * @param string $secret the oauth secret
- */
- public function setToken($token, $secret)
- {
- $this->token = new \Eher\OAuth\Token($token, $secret);
- }
-
- /**
- * Set the base url for this request handler.
- *
- * @param string $url The base url (e.g. https://api.tumblr.com)
- */
- public function setBaseUrl($url)
- {
- // Ensure we have a trailing slash since it is expected in {@link request}.
- if (substr($url, -1) !== '/') {
- $url .= '/';
- }
-
- $this->baseUrl = $url;
- }
-
- /**
- * Make a request with this request handler
- *
- * @param string $method one of GET, POST
- * @param string $path the path to hit
- * @param array $options the array of params
- *
- * @return \stdClass response object
- */
- public function request($method, $path, $options)
- {
- // Ensure we have options
- $options = $options ?: array();
-
- // Take off the data param, we'll add it back after signing
- $file = isset($options['data']) ? $options['data'] : false;
- unset($options['data']);
-
- // Get the oauth signature to put in the request header
- $url = $this->baseUrl . $path;
- $oauth = \Eher\OAuth\Request::from_consumer_and_token(
- $this->consumer,
- $this->token,
- $method,
- $url,
- $options
- );
- $oauth->sign_request($this->signatureMethod, $this->consumer, $this->token);
- $authHeader = $oauth->to_header();
- $pieces = explode(' ', $authHeader, 2);
- $authString = $pieces[1];
-
-
- // Set up the request and get the response
- $uri = new \GuzzleHttp\Psr7\Uri($url);
- $guzzleOptions = [
- 'headers' => [
- 'Authorization' => $authString,
- 'User-Agent' => 'tumblr.php/' . $this->version,
- ],
- // Swallow exceptions since \Tumblr\API\Client will handle them
- 'http_errors' => false,
- ];
- if ($method === 'GET') {
- $uri = $uri->withQuery(http_build_query($options));
- } elseif ($method === 'POST') {
- if (!$file) {
- $guzzleOptions['form_params'] = $options;
- } else {
- // Add the files back now that we have the signature without them
- $content_type = 'multipart';
- $form = [];
- foreach ($options as $name => $contents) {
- $form[] = [
- 'name' => $name,
- 'contents' => $contents,
- ];
- }
- foreach ((array) $file as $idx => $path) {
- $form[] = [
- 'name' => "data[$idx]",
- 'contents' => file_get_contents($path),
- 'filename' => pathinfo($path, PATHINFO_FILENAME),
- ];
- }
- $guzzleOptions['multipart'] = $form;
- }
- }
-
- $response = $this->client->request($method, $uri, $guzzleOptions);
-
- // Construct the object that the Client expects to see, and return it
- $obj = new \stdClass;
- $obj->status = $response->getStatusCode();
- // Turn the stream into a string
- $obj->body = $response->getBody()->__toString();
- $obj->headers = $response->getHeaders();
-
- return $obj;
- }
-
-}
diff --git a/vendor/tumblr/tumblr/phpunit.xml b/vendor/tumblr/tumblr/phpunit.xml
deleted file mode 100644
index 2e7968c..0000000
--- a/vendor/tumblr/tumblr/phpunit.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<phpunit bootstrap="test/bootstrap.php" colors="true">
- <testsuites>
- <testsuite name="Tumblr SDK for PHP - Test Suite">
- <directory>test</directory>
- </testsuite>
- </testsuites>
- <filter>
- <whitelist>
- <directory suffix=".php">lib</directory>
- </whitelist>
- </filter>
- <logging>
- <log type="coverage-html" target="./coverage" highlight="true"/>
- </logging>
-</phpunit>
diff --git a/vendor/tumblr/tumblr/test/BlogTest.php b/vendor/tumblr/tumblr/test/BlogTest.php
deleted file mode 100644
index 22a63bf..0000000
--- a/vendor/tumblr/tumblr/test/BlogTest.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-class BlogTest extends TumblrTest
-{
- public function providerCalls()
- {
- $test = $this; // for inner context
-
- return array(
-
- // getBlogInfo
- array(function ($c) { $c->getBlogInfo('b'); }, 'GET', 'v2/blog/b.tumblr.com/info', array('api_key' => API_KEY)),
-
- // getBlogAvatar
- array(function ($c) use ($test) {
- $url = $c->getBlogAvatar('b');
- $test->assertEquals($url, 'url');
- }, 'GET', 'v2/blog/b.tumblr.com/avatar', array('api_key' => API_KEY), 'redirect'),
- array(function ($c) use ($test) {
- $url = $c->getBlogAvatar('b');
- $test->assertEquals($url, null);
- }, 'GET', 'v2/blog/b.tumblr.com/avatar', array('api_key' => API_KEY), 'not_found'),
- array(function ($c) { $c->getBlogAvatar('b', 128); }, 'GET', 'v2/blog/b.tumblr.com/avatar/128', array('api_key' => API_KEY)),
-
- // getBlogLikes
- array(function ($c) { $c->getBlogLikes('b.n'); }, 'GET', 'v2/blog/b.n/likes', array('api_key' => API_KEY)),
- array(function ($c) { $c->getBlogLikes('b.n', array('limit' => 10)); }, 'GET', 'v2/blog/b.n/likes', array('limit' => 10, 'api_key' => API_KEY)),
-
- // getBlogFollowers
- array(function ($c) { $c->getBlogFollowers('b.n'); }, 'GET', 'v2/blog/b.n/followers', null),
- array(function ($c) { $c->getBlogFollowers('b.n', array('limit' => 10)); }, 'GET', 'v2/blog/b.n/followers', array('limit' => 10)),
-
- // getBlogPosts
- array(function ($c) { $c->getBlogPosts('b.n'); }, 'GET', 'v2/blog/b.n/posts', array('api_key' => API_KEY)),
- array(function ($c) { $c->getBlogPosts('b.n', array('limit' => 10)); }, 'GET', 'v2/blog/b.n/posts', array('limit' => 10, 'api_key' => API_KEY)),
- array(function ($c) { $c->getBlogPosts('b.n', array('type' => 'text')); }, 'GET', 'v2/blog/b.n/posts/text', array('api_key' => API_KEY)),
-
- // getQueuedPosts
- array(function ($c) { $c->getQueuedPosts('b.n'); }, 'GET', 'v2/blog/b.n/posts/queue', null),
- array(function ($c) { $c->getQueuedPosts('b.n', array('limit' => 10)); }, 'GET', 'v2/blog/b.n/posts/queue', array('limit' => 10)),
-
- // getDraftPosts
- array(function ($c) { $c->getDraftPosts('b.n'); }, 'GET', 'v2/blog/b.n/posts/draft', null),
- array(function ($c) { $c->getDraftPosts('b.n', array('limit' => 10)); }, 'GET', 'v2/blog/b.n/posts/draft', array('limit' => 10)),
-
- // getSubmissionPosts
- array(function ($c) { $c->getSubmissionPosts('b.n'); }, 'GET', 'v2/blog/b.n/posts/submission', null),
- array(function ($c) { $c->getSubmissionPosts('b.n', array('limit' => 10)); }, 'GET', 'v2/blog/b.n/posts/submission', array('limit' => 10)),
-
- );
- }
-
- public function testNotFound()
- {
- try {
- $this->testCalls(function ($c) {
- $c->getBlogInfo('b');
- }, 'GET', 'v2/blog/b.tumblr.com/info', array('api_key' => API_KEY), 'not_found');
- } catch (\Tumblr\API\RequestException $e) {
- $this->assertEquals((string) $e, "Tumblr\API\RequestException: [404]: Unknown Error\n");
-
- return;
- }
- $this->fail('no error thrown');
- }
-
-}
diff --git a/vendor/tumblr/tumblr/test/PostTest.php b/vendor/tumblr/tumblr/test/PostTest.php
deleted file mode 100644
index 55d1bdb..0000000
--- a/vendor/tumblr/tumblr/test/PostTest.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-class PostTest extends TumblrTest
-{
- public function providerCalls()
- {
- return array(
-
- // delete post
- array(function ($c) { $c->deletePost('b', 123, 'abc'); }, 'POST', 'v2/blog/b.tumblr.com/post/delete', array('id' => 123, 'reblog_key' => 'abc')),
-
- // reblog post
- array(function ($c) { $c->reblogPost('b', 123, 'abc'); }, 'POST', 'v2/blog/b.tumblr.com/post/reblog', array('id' => 123, 'reblog_key' => 'abc')),
- array(function ($c) { $c->reblogPost('b', 123, 'abc', array('something' => 'else')); }, 'POST', 'v2/blog/b.tumblr.com/post/reblog', array('id' => 123, 'reblog_key' => 'abc', 'something' => 'else')),
-
- // edit post
- array(function ($c) { $c->editPost('b.n', 123, array('d' => 'ata')); }, 'POST', 'v2/blog/b.n/post/edit', array('d' => 'ata', 'id' => 123)),
-
- // create post
- array(function ($c) { $c->createPost('b.n', array('d' => 'ata')); }, 'POST', 'v2/blog/b.n/post', array('d' => 'ata')),
-
- // single source
- array(function ($c) { $c->createPost('b.n', array('source' => 'remote')); }, 'POST', 'v2/blog/b.n/post', array('source' => 'remote')),
-
- // multi-source
- array(function ($c) { $c->createPost('b.n', array('source' => array('r1', 'r2'))); }, 'POST', 'v2/blog/b.n/post', array('source[0]' => 'r1', 'source[1]' => 'r2')),
-
- );
- }
-}
diff --git a/vendor/tumblr/tumblr/test/RequestExceptionTest.php b/vendor/tumblr/tumblr/test/RequestExceptionTest.php
deleted file mode 100644
index 6180bca..0000000
--- a/vendor/tumblr/tumblr/test/RequestExceptionTest.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-class RequestExceptionTest extends PHPUnit_Framework_TestCase
-{
- public function provider()
- {
- $class_name = 'Tumblr\API\RequestException';
-
- return array(
-
- array(array('status' => 401, 'body' => '{}'), "$class_name: [401]: Unknown Error\n"),
-
- array(array('status' => 404, 'body' => '{"meta":{"msg":"cool story bro"}}'), "$class_name: [404]: cool story bro\n"),
-
- );
- }
-
- /**
- * @dataProvider provider
- */
- public function testErrorString($responseArr, $expectedString)
- {
- $response = (object) $responseArr;
- $err = new \Tumblr\API\RequestException($response);
- $this->assertEquals((string) $err, $expectedString);
- }
-
-}
diff --git a/vendor/tumblr/tumblr/test/RequestHandlerTest.php b/vendor/tumblr/tumblr/test/RequestHandlerTest.php
deleted file mode 100644
index 4dfdcb9..0000000
--- a/vendor/tumblr/tumblr/test/RequestHandlerTest.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-class RequestHandlerTest extends \PHPUnit_Framework_TestCase
-{
- public function testBaseUrlHasTrailingSlash()
- {
- $client = new Tumblr\API\Client(API_KEY);
- $rh = $client->getRequestHandler();
- $this->assertInstanceOf('Tumblr\API\RequestHandler', $rh);
-
- $rh->setBaseUrl('http://example.com');
- $this->assertAttributeEquals('http://example.com/', 'baseUrl', $rh);
-
- $rh->setBaseUrl('http://example.com/');
- $this->assertAttributeEquals('http://example.com/', 'baseUrl', $rh);
- }
-
- /**
- * @expectedException GuzzleHttp\Exception\ConnectException
- */
- public function testRequestThrowsErrorOnMalformedBaseUrl()
- {
- $client = new Tumblr\API\Client(API_KEY);
- $rh = $client->getRequestHandler();
- $rh->setBaseUrl('this is a malformed URL!');
-
- $options = array('some kinda option');
-
- $rh->request('GET', 'foo', $options);
-
- }
-
- /**
- * @expectedException Tumblr\API\RequestException
- * @expectedExceptionCode 400
- * @expectedExceptionMessage Sadface
- */
- public function testRequestThrowsOnBadResponse()
- {
- // Setup mock handler and response
- $mock = new GuzzleHttp\Handler\MockHandler([
- new GuzzleHttp\Psr7\Response(400, [], '{"meta": {"status": 400, "msg": "Sadface"} }'),
- ]);
- $stack = GuzzleHttp\HandlerStack::create($mock);
- $guzzle = new GuzzleHttp\Client(['handler' => $stack]);
-
- // Attached mocked guzzle client
- $client = new Tumblr\API\Client(API_KEY);
- $client->getRequestHandler()->client = $guzzle;
-
- // Throws because it got a 400 back
- $client->getBlogInfo('ceyko.tumblr.com');
- }
-
- public function testRequestGetsJsonResponseField()
- {
- // Setup mock handler and response
- $mock = new GuzzleHttp\Handler\MockHandler([
- new GuzzleHttp\Psr7\Response(200, [], '{"meta": {"status": 200, "msg": "OK"}, "response": "Response Text"}'),
- ]);
- $stack = GuzzleHttp\HandlerStack::create($mock);
- $guzzle = new GuzzleHttp\Client(['handler' => $stack]);
-
- // Attached mocked guzzle client
- $client = new Tumblr\API\Client(API_KEY);
- $client->getRequestHandler()->client = $guzzle;
-
- // Parses out the `reponse` field in json on success
- $this->assertEquals($client->getBlogInfo('ceyko.tumblr.com'), 'Response Text');
- }
-}
diff --git a/vendor/tumblr/tumblr/test/TaggedTest.php b/vendor/tumblr/tumblr/test/TaggedTest.php
deleted file mode 100644
index c595508..0000000
--- a/vendor/tumblr/tumblr/test/TaggedTest.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-class TaggedTest extends TumblrTest
-{
- public function providerCalls()
- {
- return array(
-
- // getTaggedPosts
- array(function ($c) { $c->getTaggedPosts('hey'); }, 'GET', 'v2/tagged', array('tag' => 'hey', 'api_key' => API_KEY)),
- array(function ($c) { $c->getTaggedPosts('hey', array('limit' => 10)); }, 'GET', 'v2/tagged', array('limit' => 10, 'tag' => 'hey', 'api_key' => API_KEY)),
-
- );
- }
-
-}
diff --git a/vendor/tumblr/tumblr/test/TumblrTest.php b/vendor/tumblr/tumblr/test/TumblrTest.php
deleted file mode 100644
index a014634..0000000
--- a/vendor/tumblr/tumblr/test/TumblrTest.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-class TumblrTest extends PHPUnit_Framework_TestCase
-{
- /**
- * @dataProvider providerCalls
- */
- public function testCalls($callable, $type, $path, $params, $which_mock = 'perfect')
- {
- // a good response
- $response = $this->getResponseMock($which_mock);
-
- // Create request mock and set it to check for the proper response
- $request = $this->getMock('Tumblr\API\RequestHandler', array('request'));
- $request->expects($this->once())
- ->method('request')
- ->with($this->equalTo($type), $this->equalTo($path), $this->equalTo($params))
- ->will($this->returnValue($response));
-
- // Create a new client and set it up to use that request handler
- $client = new Tumblr\API\Client(API_KEY);
- $ref = new ReflectionObject($client);
- $prop = $ref->getProperty('requestHandler');
- $prop->setAccessible(true);
- $prop->setValue($client, $request);
-
- // Give it tokens
- $client->setToken('t1', 't2');
-
- // And then run the callback to check the results
- $callable($client);
- }
-
- private function getResponseMock($which)
- {
- $response = new stdClass;
- if ($which == 'perfect') {
- $response->status = 200;
- $response->body = '{"response":[]}';
- } elseif ($which == 'redirect') {
- $response->status = 301;
- $response->headers = array('Location' => array('url'));
- } elseif ($which == 'not_found') {
- $response->status = 404;
- $response->body = '{}';
- }
-
- return $response;
- }
-
-}
diff --git a/vendor/tumblr/tumblr/test/UserTest.php b/vendor/tumblr/tumblr/test/UserTest.php
deleted file mode 100644
index e42b336..0000000
--- a/vendor/tumblr/tumblr/test/UserTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-class UserTest extends TumblrTest
-{
- public function providerCalls()
- {
- return array(
-
- // getUserInfo
- array(function ($c) { $c->getUserInfo(); }, 'GET', 'v2/user/info', null),
-
- // getDashboardPosts
- array(function ($c) { $c->getDashboardPosts(); }, 'GET', 'v2/user/dashboard', null),
- array(function ($c) { $c->getDashboardPosts(array('limit' => 10)); }, 'GET', 'v2/user/dashboard', array('limit' => 10)),
-
- // getFollowedBlogs
- array(function ($c) { $c->getFollowedBlogs(); }, 'GET', 'v2/user/following', null),
- array(function ($c) { $c->getFollowedBlogs(array('limit' => 10)); }, 'GET', 'v2/user/following', array('limit' => 10)),
-
- // getLikedPosts
- array(function ($c) { $c->getLikedPosts(); }, 'GET', 'v2/user/likes', null),
- array(function ($c) { $c->getLikedPosts(array('limit' => 10)); }, 'GET', 'v2/user/likes', array('limit' => 10)),
-
- // follow
- array(function ($c) { $c->follow('b'); }, 'POST', 'v2/user/follow', array('url' => 'b.tumblr.com')),
- array(function ($c) { $c->follow('b.n'); }, 'POST', 'v2/user/follow', array('url' => 'b.n')),
-
- // unfollow
- array(function ($c) { $c->unfollow('b'); }, 'POST', 'v2/user/unfollow', array('url' => 'b.tumblr.com')),
-
- // like
- array(function ($c) { $c->like(123, 'abc'); }, 'POST', 'v2/user/like', array('id' => 123, 'reblog_key' => 'abc')),
-
- // unlike
- array(function ($c) { $c->unlike(123, 'abc'); }, 'POST', 'v2/user/unlike', array('id' => 123, 'reblog_key' => 'abc')),
-
- );
- }
-
-}
diff --git a/vendor/tumblr/tumblr/test/bootstrap.php b/vendor/tumblr/tumblr/test/bootstrap.php
deleted file mode 100644
index cfa1b00..0000000
--- a/vendor/tumblr/tumblr/test/bootstrap.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-date_default_timezone_set('America/New_York');
-
-require_once 'vendor/autoload.php';
-require_once 'test/TumblrTest.php';
-
-define('API_KEY', 'the testing consumer key');