diff --git a/build/psalm-baseline.xml b/build/psalm-baseline.xml
index 0d07bcf37f4d0..e1e8c291849d6 100644
--- a/build/psalm-baseline.xml
+++ b/build/psalm-baseline.xml
@@ -1713,7 +1713,6 @@
$files_list
- 'Share is read-only'
$freeSpace
@@ -2476,18 +2475,6 @@
Resource
-
-
- OCP\LDAP\ILDAPProvider
-
-
-
- OCP\LDAP\ILDAPProvider
-
-
- OCP\LDAP\ILDAPProvider
-
-
bool
@@ -3213,11 +3200,6 @@
$default
-
-
- $closure
-
-
false
@@ -3342,21 +3324,12 @@
Color
-
- $avatar
-
-
- string|boolean
-
$finalPalette[$this->hashToInt($hash, $steps * 3)]
Color
-
- $image->data()
-
@@ -5747,14 +5720,6 @@
$this->resources
-
-
- Closure
-
-
- Closure
-
-
$jobList
diff --git a/lib/composer/amphp/amp/LICENSE b/lib/composer/amphp/amp/LICENSE
new file mode 100644
index 0000000000000..2b431ba021f88
--- /dev/null
+++ b/lib/composer/amphp/amp/LICENSE
@@ -0,0 +1,23 @@
+
+The MIT License (MIT)
+
+Copyright (c) 2015-2019 amphp
+Copyright (c) 2016 PHP Asynchronous 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/lib/composer/amphp/amp/composer.json b/lib/composer/amphp/amp/composer.json
new file mode 100644
index 0000000000000..624e0172b63a2
--- /dev/null
+++ b/lib/composer/amphp/amp/composer.json
@@ -0,0 +1,74 @@
+{
+ "name": "amphp/amp",
+ "homepage": "http://amphp.org/amp",
+ "description": "A non-blocking concurrency framework for PHP applications.",
+ "keywords": [
+ "async",
+ "asynchronous",
+ "concurrency",
+ "promise",
+ "awaitable",
+ "future",
+ "non-blocking",
+ "event",
+ "event-loop"
+ ],
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Daniel Lowrey",
+ "email": "rdlowrey@php.net"
+ },
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Bob Weinand",
+ "email": "bobwei9@hotmail.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "require": {
+ "php": ">=7"
+ },
+ "require-dev": {
+ "ext-json": "*",
+ "amphp/phpunit-util": "^1",
+ "amphp/php-cs-fixer-config": "dev-master",
+ "react/promise": "^2",
+ "phpunit/phpunit": "^6.0.9 | ^7",
+ "psalm/phar": "^3.11@dev",
+ "jetbrains/phpstorm-stubs": "^2019.3"
+ },
+ "autoload": {
+ "psr-4": {
+ "Amp\\": "lib"
+ },
+ "files": [
+ "lib/functions.php",
+ "lib/Internal/functions.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Amp\\Test\\": "test"
+ }
+ },
+ "support": {
+ "issues": "https://github.com/amphp/amp/issues",
+ "irc": "irc://irc.freenode.org/amphp"
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "scripts": {
+ "test": "@php -dzend.assertions=1 -dassert.exception=1 ./vendor/bin/phpunit",
+ "code-style": "@php ./vendor/bin/php-cs-fixer fix"
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/CallableMaker.php b/lib/composer/amphp/amp/lib/CallableMaker.php
new file mode 100644
index 0000000000000..8fa8cff76e0ab
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/CallableMaker.php
@@ -0,0 +1,80 @@
+getMethod($method);
+ }
+
+ return self::$__reflectionMethods[$method]->getClosure($this);
+ }
+
+ /**
+ * Creates a callable from a protected or private static method that may be invoked by methods requiring a
+ * publicly invokable callback.
+ *
+ * @param string $method Static method name.
+ *
+ * @return callable
+ *
+ * @psalm-suppress MixedInferredReturnType
+ */
+ private static function callableFromStaticMethod(string $method): callable
+ {
+ if (!isset(self::$__reflectionMethods[$method])) {
+ if (self::$__reflectionClass === null) {
+ self::$__reflectionClass = new \ReflectionClass(self::class);
+ }
+ self::$__reflectionMethods[$method] = self::$__reflectionClass->getMethod($method);
+ }
+
+ return self::$__reflectionMethods[$method]->getClosure();
+ }
+ }
+} else {
+ /** @psalm-suppress DuplicateClass */
+ trait CallableMaker
+ {
+ /**
+ * @deprecated Use \Closure::fromCallable() instead of this method in PHP 7.1.
+ */
+ private function callableFromInstanceMethod(string $method): callable
+ {
+ return \Closure::fromCallable([$this, $method]);
+ }
+
+ /**
+ * @deprecated Use \Closure::fromCallable() instead of this method in PHP 7.1.
+ */
+ private static function callableFromStaticMethod(string $method): callable
+ {
+ return \Closure::fromCallable([self::class, $method]);
+ }
+ }
+} // @codeCoverageIgnoreEnd
diff --git a/lib/composer/amphp/amp/lib/CancellationToken.php b/lib/composer/amphp/amp/lib/CancellationToken.php
new file mode 100644
index 0000000000000..b802994dfcea1
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/CancellationToken.php
@@ -0,0 +1,49 @@
+getToken();
+ *
+ * $response = yield $httpClient->request("https://example.com/stream", $token);
+ * $responseBody = $response->getBody();
+ *
+ * while (($chunk = yield $response->read()) !== null) {
+ * // consume $chunk
+ *
+ * if ($noLongerInterested) {
+ * $cancellationTokenSource->cancel();
+ * break;
+ * }
+ * }
+ * ```
+ *
+ * @see CancellationToken
+ * @see CancelledException
+ */
+final class CancellationTokenSource
+{
+ /** @var CancellationToken */
+ private $token;
+
+ /** @var callable|null */
+ private $onCancel;
+
+ public function __construct()
+ {
+ $onCancel = null;
+
+ $this->token = new class($onCancel) implements CancellationToken {
+ /** @var string */
+ private $nextId = "a";
+
+ /** @var callable[] */
+ private $callbacks = [];
+
+ /** @var \Throwable|null */
+ private $exception;
+
+ /**
+ * @param mixed $onCancel
+ * @param-out callable $onCancel
+ */
+ public function __construct(&$onCancel)
+ {
+ /** @psalm-suppress MissingClosureReturnType We still support PHP 7.0 */
+ $onCancel = function (\Throwable $exception) {
+ $this->exception = $exception;
+
+ $callbacks = $this->callbacks;
+ $this->callbacks = [];
+
+ foreach ($callbacks as $callback) {
+ $this->invokeCallback($callback);
+ }
+ };
+ }
+
+ /**
+ * @param callable $callback
+ *
+ * @return void
+ */
+ private function invokeCallback(callable $callback)
+ {
+ // No type declaration to prevent exception outside the try!
+ try {
+ /** @var mixed $result */
+ $result = $callback($this->exception);
+
+ if ($result instanceof \Generator) {
+ /** @psalm-var \Generator $result */
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ Loop::defer(static function () use ($exception) {
+ throw $exception;
+ });
+ }
+ }
+
+ public function subscribe(callable $callback): string
+ {
+ $id = $this->nextId++;
+
+ if ($this->exception) {
+ $this->invokeCallback($callback);
+ } else {
+ $this->callbacks[$id] = $callback;
+ }
+
+ return $id;
+ }
+
+ public function unsubscribe(string $id)
+ {
+ unset($this->callbacks[$id]);
+ }
+
+ public function isRequested(): bool
+ {
+ return isset($this->exception);
+ }
+
+ public function throwIfRequested()
+ {
+ if (isset($this->exception)) {
+ throw $this->exception;
+ }
+ }
+ };
+
+ $this->onCancel = $onCancel;
+ }
+
+ public function getToken(): CancellationToken
+ {
+ return $this->token;
+ }
+
+ /**
+ * @param \Throwable|null $previous Exception to be used as the previous exception to CancelledException.
+ *
+ * @return void
+ */
+ public function cancel(\Throwable $previous = null)
+ {
+ if ($this->onCancel === null) {
+ return;
+ }
+
+ $onCancel = $this->onCancel;
+ $this->onCancel = null;
+ $onCancel(new CancelledException($previous));
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/CancelledException.php b/lib/composer/amphp/amp/lib/CancelledException.php
new file mode 100644
index 0000000000000..25f8c4002cb83
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/CancelledException.php
@@ -0,0 +1,17 @@
+subscribe(function (CancelledException $exception) {
+ $this->exception = $exception;
+
+ $callbacks = $this->callbacks;
+ $this->callbacks = [];
+
+ foreach ($callbacks as $callback) {
+ asyncCall($callback, $this->exception);
+ }
+ });
+
+ $this->tokens[] = [$token, $id];
+ }
+ }
+
+ public function __destruct()
+ {
+ foreach ($this->tokens as list($token, $id)) {
+ /** @var CancellationToken $token */
+ $token->unsubscribe($id);
+ }
+ }
+
+ /** @inheritdoc */
+ public function subscribe(callable $callback): string
+ {
+ $id = $this->nextId++;
+
+ if ($this->exception) {
+ asyncCall($callback, $this->exception);
+ } else {
+ $this->callbacks[$id] = $callback;
+ }
+
+ return $id;
+ }
+
+ /** @inheritdoc */
+ public function unsubscribe(string $id)
+ {
+ unset($this->callbacks[$id]);
+ }
+
+ /** @inheritdoc */
+ public function isRequested(): bool
+ {
+ foreach ($this->tokens as list($token)) {
+ if ($token->isRequested()) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /** @inheritdoc */
+ public function throwIfRequested()
+ {
+ foreach ($this->tokens as list($token)) {
+ $token->throwIfRequested();
+ }
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Coroutine.php b/lib/composer/amphp/amp/lib/Coroutine.php
new file mode 100644
index 0000000000000..5a3b4aa848bbe
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Coroutine.php
@@ -0,0 +1,160 @@
+
+ */
+final class Coroutine implements Promise
+{
+ use Internal\Placeholder;
+
+ /**
+ * Attempts to transform the non-promise yielded from the generator into a promise, otherwise returns an instance
+ * `Amp\Failure` failed with an instance of `Amp\InvalidYieldError`.
+ *
+ * @param mixed $yielded Non-promise yielded from generator.
+ * @param \Generator $generator No type for performance, we already know the type.
+ *
+ * @return Promise
+ */
+ private static function transform($yielded, $generator): Promise
+ {
+ $exception = null; // initialize here, see https://github.com/vimeo/psalm/issues/2951
+
+ try {
+ if (\is_array($yielded)) {
+ return Promise\all($yielded);
+ }
+
+ if ($yielded instanceof ReactPromise) {
+ return Promise\adapt($yielded);
+ }
+
+ // No match, continue to returning Failure below.
+ } catch (\Throwable $exception) {
+ // Conversion to promise failed, fall-through to returning Failure below.
+ }
+
+ return new Failure(new InvalidYieldError(
+ $generator,
+ \sprintf(
+ "Unexpected yield; Expected an instance of %s or %s or an array of such instances",
+ Promise::class,
+ ReactPromise::class
+ ),
+ $exception
+ ));
+ }
+
+ /**
+ * @param \Generator $generator
+ * @psalm-param \Generator,mixed,Promise|ReactPromise|TReturn> $generator
+ */
+ public function __construct(\Generator $generator)
+ {
+ try {
+ $yielded = $generator->current();
+
+ if (!$yielded instanceof Promise) {
+ if (!$generator->valid()) {
+ $this->resolve($generator->getReturn());
+ return;
+ }
+
+ $yielded = self::transform($yielded, $generator);
+ }
+ } catch (\Throwable $exception) {
+ $this->fail($exception);
+ return;
+ }
+
+ /**
+ * @param \Throwable|null $e Exception to be thrown into the generator.
+ * @param mixed $v Value to be sent into the generator.
+ *
+ * @return void
+ *
+ * @psalm-suppress MissingClosureParamType
+ * @psalm-suppress MissingClosureReturnType
+ */
+ $onResolve = function (\Throwable $e = null, $v) use ($generator, &$onResolve) {
+ /** @var bool $immediate Used to control iterative coroutine continuation. */
+ static $immediate = true;
+
+ /** @var \Throwable|null $exception Promise failure reason when executing next coroutine step, null at all other times. */
+ static $exception;
+
+ /** @var mixed $value Promise success value when executing next coroutine step, null at all other times. */
+ static $value;
+
+ $exception = $e;
+ /** @psalm-suppress MixedAssignment */
+ $value = $v;
+
+ if (!$immediate) {
+ $immediate = true;
+ return;
+ }
+
+ try {
+ try {
+ do {
+ if ($exception) {
+ // Throw exception at current execution point.
+ $yielded = $generator->throw($exception);
+ } else {
+ // Send the new value and execute to next yield statement.
+ $yielded = $generator->send($value);
+ }
+
+ if (!$yielded instanceof Promise) {
+ if (!$generator->valid()) {
+ $this->resolve($generator->getReturn());
+ $onResolve = null;
+ return;
+ }
+
+ $yielded = self::transform($yielded, $generator);
+ }
+
+ $immediate = false;
+ $yielded->onResolve($onResolve);
+ } while ($immediate);
+
+ $immediate = true;
+ } catch (\Throwable $exception) {
+ $this->fail($exception);
+ $onResolve = null;
+ } finally {
+ $exception = null;
+ $value = null;
+ }
+ } catch (\Throwable $e) {
+ Loop::defer(static function () use ($e) {
+ throw $e;
+ });
+ }
+ };
+
+ try {
+ $yielded->onResolve($onResolve);
+
+ unset($generator, $yielded, $onResolve);
+ } catch (\Throwable $e) {
+ Loop::defer(static function () use ($e) {
+ throw $e;
+ });
+ }
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Deferred.php b/lib/composer/amphp/amp/lib/Deferred.php
new file mode 100644
index 0000000000000..39e47accf19ee
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Deferred.php
@@ -0,0 +1,67 @@
+ Has public resolve and fail methods. */
+ private $resolver;
+
+ /** @var Promise Hides placeholder methods */
+ private $promise;
+
+ public function __construct()
+ {
+ $this->resolver = new class implements Promise {
+ use Internal\Placeholder {
+ resolve as public;
+ fail as public;
+ }
+ };
+
+ $this->promise = new Internal\PrivatePromise($this->resolver);
+ }
+
+ /**
+ * @return Promise
+ */
+ public function promise(): Promise
+ {
+ return $this->promise;
+ }
+
+ /**
+ * Fulfill the promise with the given value.
+ *
+ * @param mixed $value
+ *
+ * @psalm-param TValue|Promise $value
+ *
+ * @return void
+ */
+ public function resolve($value = null)
+ {
+ /** @psalm-suppress UndefinedInterfaceMethod */
+ $this->resolver->resolve($value);
+ }
+
+ /**
+ * Fails the promise the the given reason.
+ *
+ * @param \Throwable $reason
+ *
+ * @return void
+ */
+ public function fail(\Throwable $reason)
+ {
+ /** @psalm-suppress UndefinedInterfaceMethod */
+ $this->resolver->fail($reason);
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Delayed.php b/lib/composer/amphp/amp/lib/Delayed.php
new file mode 100644
index 0000000000000..ec9b42027aa66
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Delayed.php
@@ -0,0 +1,58 @@
+
+ */
+final class Delayed implements Promise
+{
+ use Internal\Placeholder;
+
+ /** @var string|null Event loop watcher identifier. */
+ private $watcher;
+
+ /**
+ * @param int $time Milliseconds before succeeding the promise.
+ * @param TReturn $value Succeed the promise with this value.
+ */
+ public function __construct(int $time, $value = null)
+ {
+ $this->watcher = Loop::delay($time, function () use ($value) {
+ $this->watcher = null;
+ $this->resolve($value);
+ });
+ }
+
+ /**
+ * References the internal watcher in the event loop, keeping the loop running while this promise is pending.
+ *
+ * @return self
+ */
+ public function reference(): self
+ {
+ if ($this->watcher !== null) {
+ Loop::reference($this->watcher);
+ }
+
+ return $this;
+ }
+
+ /**
+ * Unreferences the internal watcher in the event loop, allowing the loop to stop while this promise is pending if
+ * no other events are pending in the loop.
+ *
+ * @return self
+ */
+ public function unreference(): self
+ {
+ if ($this->watcher !== null) {
+ Loop::unreference($this->watcher);
+ }
+
+ return $this;
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Emitter.php b/lib/composer/amphp/amp/lib/Emitter.php
new file mode 100644
index 0000000000000..cd6b7e5430dc6
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Emitter.php
@@ -0,0 +1,84 @@
+ Has public emit, complete, and fail methods. */
+ private $emitter;
+
+ /** @var Iterator Hides producer methods. */
+ private $iterator;
+
+ public function __construct()
+ {
+ $this->emitter = new class implements Iterator {
+ use Internal\Producer {
+ emit as public;
+ complete as public;
+ fail as public;
+ }
+ };
+
+ $this->iterator = new Internal\PrivateIterator($this->emitter);
+ }
+
+ /**
+ * @return Iterator
+ * @psalm-return Iterator
+ */
+ public function iterate(): Iterator
+ {
+ return $this->iterator;
+ }
+
+ /**
+ * Emits a value to the iterator.
+ *
+ * @param mixed $value
+ *
+ * @psalm-param TValue $value
+ *
+ * @return Promise
+ * @psalm-return Promise
+ * @psalm-suppress MixedInferredReturnType
+ * @psalm-suppress MixedReturnStatement
+ */
+ public function emit($value): Promise
+ {
+ /** @psalm-suppress UndefinedInterfaceMethod */
+ return $this->emitter->emit($value);
+ }
+
+ /**
+ * Completes the iterator.
+ *
+ * @return void
+ */
+ public function complete()
+ {
+ /** @psalm-suppress UndefinedInterfaceMethod */
+ $this->emitter->complete();
+ }
+
+ /**
+ * Fails the iterator with the given reason.
+ *
+ * @param \Throwable $reason
+ *
+ * @return void
+ */
+ public function fail(\Throwable $reason)
+ {
+ /** @psalm-suppress UndefinedInterfaceMethod */
+ $this->emitter->fail($reason);
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Failure.php b/lib/composer/amphp/amp/lib/Failure.php
new file mode 100644
index 0000000000000..4c1ea62d2de7d
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Failure.php
@@ -0,0 +1,52 @@
+
+ */
+final class Failure implements Promise
+{
+ /** @var \Throwable $exception */
+ private $exception;
+
+ /**
+ * @param \Throwable $exception Rejection reason.
+ */
+ public function __construct(\Throwable $exception)
+ {
+ $this->exception = $exception;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function onResolve(callable $onResolved)
+ {
+ try {
+ /** @var mixed $result */
+ $result = $onResolved($this->exception, null);
+
+ if ($result === null) {
+ return;
+ }
+
+ if ($result instanceof \Generator) {
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ Promise\rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ Loop::defer(static function () use ($exception) {
+ throw $exception;
+ });
+ }
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Internal/Placeholder.php b/lib/composer/amphp/amp/lib/Internal/Placeholder.php
new file mode 100644
index 0000000000000..b84aa704b4e7d
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Internal/Placeholder.php
@@ -0,0 +1,179 @@
+, mixed,
+ * mixed>|null)|callable(\Throwable|null, mixed): void */
+ private $onResolved;
+
+ /** @var null|array */
+ private $resolutionTrace;
+
+ /**
+ * @inheritdoc
+ */
+ public function onResolve(callable $onResolved)
+ {
+ if ($this->resolved) {
+ if ($this->result instanceof Promise) {
+ $this->result->onResolve($onResolved);
+ return;
+ }
+
+ try {
+ /** @var mixed $result */
+ $result = $onResolved(null, $this->result);
+
+ if ($result === null) {
+ return;
+ }
+
+ if ($result instanceof \Generator) {
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ Promise\rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ Loop::defer(static function () use ($exception) {
+ throw $exception;
+ });
+ }
+ return;
+ }
+
+ if (null === $this->onResolved) {
+ $this->onResolved = $onResolved;
+ return;
+ }
+
+ if (!$this->onResolved instanceof ResolutionQueue) {
+ /** @psalm-suppress InternalClass */
+ $this->onResolved = new ResolutionQueue($this->onResolved);
+ }
+
+ /** @psalm-suppress InternalMethod */
+ $this->onResolved->push($onResolved);
+ }
+
+ public function __destruct()
+ {
+ try {
+ $this->result = null;
+ } catch (\Throwable $e) {
+ Loop::defer(static function () use ($e) {
+ throw $e;
+ });
+ }
+ }
+
+ /**
+ * @param mixed $value
+ *
+ * @return void
+ *
+ * @throws \Error Thrown if the promise has already been resolved.
+ */
+ private function resolve($value = null)
+ {
+ if ($this->resolved) {
+ $message = "Promise has already been resolved";
+
+ if (isset($this->resolutionTrace)) {
+ $trace = formatStacktrace($this->resolutionTrace);
+ $message .= ". Previous resolution trace:\n\n{$trace}\n\n";
+ } else {
+ // @codeCoverageIgnoreStart
+ $message .= ", define environment variable AMP_DEBUG or const AMP_DEBUG = true and enable assertions "
+ . "for a stacktrace of the previous resolution.";
+ // @codeCoverageIgnoreEnd
+ }
+
+ throw new \Error($message);
+ }
+
+ \assert((function () {
+ $env = \getenv("AMP_DEBUG") ?: "0";
+ if (($env !== "0" && $env !== "false") || (\defined("AMP_DEBUG") && \AMP_DEBUG)) {
+ $trace = \debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS);
+ \array_shift($trace); // remove current closure
+ $this->resolutionTrace = $trace;
+ }
+
+ return true;
+ })());
+
+ if ($value instanceof ReactPromise) {
+ $value = Promise\adapt($value);
+ }
+
+ $this->resolved = true;
+ $this->result = $value;
+
+ if ($this->onResolved === null) {
+ return;
+ }
+
+ $onResolved = $this->onResolved;
+ $this->onResolved = null;
+
+ if ($this->result instanceof Promise) {
+ $this->result->onResolve($onResolved);
+ return;
+ }
+
+ try {
+ /** @var mixed $result */
+ $result = $onResolved(null, $this->result);
+ $onResolved = null; // allow garbage collection of $onResolved, to catch any exceptions from destructors
+
+ if ($result === null) {
+ return;
+ }
+
+ if ($result instanceof \Generator) {
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ Promise\rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ Loop::defer(static function () use ($exception) {
+ throw $exception;
+ });
+ }
+ }
+
+ /**
+ * @param \Throwable $reason Failure reason.
+ *
+ * @return void
+ */
+ private function fail(\Throwable $reason)
+ {
+ $this->resolve(new Failure($reason));
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Internal/PrivateIterator.php b/lib/composer/amphp/amp/lib/Internal/PrivateIterator.php
new file mode 100644
index 0000000000000..7a14b2438936b
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Internal/PrivateIterator.php
@@ -0,0 +1,45 @@
+
+ */
+final class PrivateIterator implements Iterator
+{
+ /** @var Iterator */
+ private $iterator;
+
+ /**
+ * @param Iterator $iterator
+ *
+ * @psalm-param Iterator $iterator
+ */
+ public function __construct(Iterator $iterator)
+ {
+ $this->iterator = $iterator;
+ }
+
+ /**
+ * @return Promise
+ */
+ public function advance(): Promise
+ {
+ return $this->iterator->advance();
+ }
+
+ /**
+ * @psalm-return TValue
+ */
+ public function getCurrent()
+ {
+ return $this->iterator->getCurrent();
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Internal/PrivatePromise.php b/lib/composer/amphp/amp/lib/Internal/PrivatePromise.php
new file mode 100644
index 0000000000000..3bd568a822e75
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Internal/PrivatePromise.php
@@ -0,0 +1,25 @@
+promise = $promise;
+ }
+
+ public function onResolve(callable $onResolved)
+ {
+ $this->promise->onResolve($onResolved);
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Internal/Producer.php b/lib/composer/amphp/amp/lib/Internal/Producer.php
new file mode 100644
index 0000000000000..c955755a39aa3
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Internal/Producer.php
@@ -0,0 +1,212 @@
+
+ */
+ public function advance(): Promise
+ {
+ if ($this->waiting !== null) {
+ throw new \Error("The prior promise returned must resolve before invoking this method again");
+ }
+
+ unset($this->values[$this->consumePosition]);
+
+ $position = ++$this->consumePosition;
+
+ if (\array_key_exists($position, $this->values)) {
+ \assert(isset($this->backPressure[$position]));
+ $deferred = $this->backPressure[$position];
+ unset($this->backPressure[$position]);
+ $deferred->resolve();
+
+ return new Success(true);
+ }
+
+ if ($this->complete) {
+ return $this->complete;
+ }
+
+ $this->waiting = new Deferred;
+
+ return $this->waiting->promise();
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return TValue
+ */
+ public function getCurrent()
+ {
+ if (empty($this->values) && $this->complete) {
+ throw new \Error("The iterator has completed");
+ }
+
+ if (!\array_key_exists($this->consumePosition, $this->values)) {
+ throw new \Error("Promise returned from advance() must resolve before calling this method");
+ }
+
+ return $this->values[$this->consumePosition];
+ }
+
+ /**
+ * Emits a value from the iterator. The returned promise is resolved once the emitted value has been consumed.
+ *
+ * @param mixed $value
+ *
+ * @return Promise
+ * @psalm-return Promise
+ *
+ * @throws \Error If the iterator has completed.
+ */
+ private function emit($value): Promise
+ {
+ if ($this->complete) {
+ throw new \Error("Iterators cannot emit values after calling complete");
+ }
+
+ if ($value instanceof ReactPromise) {
+ $value = Promise\adapt($value);
+ }
+
+ if ($value instanceof Promise) {
+ $deferred = new Deferred;
+ $value->onResolve(function ($e, $v) use ($deferred) {
+ if ($this->complete) {
+ $deferred->fail(
+ new \Error("The iterator was completed before the promise result could be emitted")
+ );
+ return;
+ }
+
+ if ($e) {
+ $this->fail($e);
+ $deferred->fail($e);
+ return;
+ }
+
+ $deferred->resolve($this->emit($v));
+ });
+
+ return $deferred->promise();
+ }
+
+ $position = ++$this->emitPosition;
+
+ $this->values[$position] = $value;
+
+ if ($this->waiting !== null) {
+ $waiting = $this->waiting;
+ $this->waiting = null;
+ $waiting->resolve(true);
+ return new Success; // Consumer was already waiting for a new value, so back-pressure is unnecessary.
+ }
+
+ $this->backPressure[$position] = $pressure = new Deferred;
+
+ return $pressure->promise();
+ }
+
+ /**
+ * Completes the iterator.
+ *
+ * @return void
+ *
+ * @throws \Error If the iterator has already been completed.
+ */
+ private function complete()
+ {
+ if ($this->complete) {
+ $message = "Iterator has already been completed";
+
+ if (isset($this->resolutionTrace)) {
+ $trace = formatStacktrace($this->resolutionTrace);
+ $message .= ". Previous completion trace:\n\n{$trace}\n\n";
+ } else {
+ // @codeCoverageIgnoreStart
+ $message .= ", define environment variable AMP_DEBUG or const AMP_DEBUG = true and enable assertions "
+ . "for a stacktrace of the previous resolution.";
+ // @codeCoverageIgnoreEnd
+ }
+
+ throw new \Error($message);
+ }
+
+ \assert((function () {
+ $env = \getenv("AMP_DEBUG") ?: "0";
+ if (($env !== "0" && $env !== "false") || (\defined("AMP_DEBUG") && \AMP_DEBUG)) {
+ $trace = \debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS);
+ \array_shift($trace); // remove current closure
+ $this->resolutionTrace = $trace;
+ }
+
+ return true;
+ })());
+
+ $this->complete = new Success(false);
+
+ if ($this->waiting !== null) {
+ $waiting = $this->waiting;
+ $this->waiting = null;
+ $waiting->resolve($this->complete);
+ }
+ }
+
+ /**
+ * @param \Throwable $exception
+ *
+ * @return void
+ */
+ private function fail(\Throwable $exception)
+ {
+ $this->complete = new Failure($exception);
+
+ if ($this->waiting !== null) {
+ $waiting = $this->waiting;
+ $this->waiting = null;
+ $waiting->resolve($this->complete);
+ }
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Internal/ResolutionQueue.php b/lib/composer/amphp/amp/lib/Internal/ResolutionQueue.php
new file mode 100644
index 0000000000000..353a8b9390296
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Internal/ResolutionQueue.php
@@ -0,0 +1,90 @@
+, mixed,
+ * mixed>|null) | callable(\Throwable|null, mixed): void> */
+ private $queue = [];
+
+ /**
+ * @param callable|null $callback Initial callback to add to queue.
+ *
+ * @psalm-param null|callable(\Throwable|null, mixed): (Promise|\React\Promise\PromiseInterface|\Generator, mixed,
+ * mixed>|null) | callable(\Throwable|null, mixed): void $callback
+ */
+ public function __construct(callable $callback = null)
+ {
+ if ($callback !== null) {
+ $this->push($callback);
+ }
+ }
+
+ /**
+ * Unrolls instances of self to avoid blowing up the call stack on resolution.
+ *
+ * @param callable $callback
+ *
+ * @psalm-param callable(\Throwable|null, mixed): (Promise|\React\Promise\PromiseInterface|\Generator, mixed,
+ * mixed>|null) | callable(\Throwable|null, mixed): void $callback
+ *
+ * @return void
+ */
+ public function push(callable $callback)
+ {
+ if ($callback instanceof self) {
+ $this->queue = \array_merge($this->queue, $callback->queue);
+ return;
+ }
+
+ $this->queue[] = $callback;
+ }
+
+ /**
+ * Calls each callback in the queue, passing the provided values to the function.
+ *
+ * @param \Throwable|null $exception
+ * @param mixed $value
+ *
+ * @return void
+ */
+ public function __invoke($exception, $value)
+ {
+ foreach ($this->queue as $callback) {
+ try {
+ $result = $callback($exception, $value);
+
+ if ($result === null) {
+ continue;
+ }
+
+ if ($result instanceof \Generator) {
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ Promise\rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ Loop::defer(static function () use ($exception) {
+ throw $exception;
+ });
+ }
+ }
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Internal/functions.php b/lib/composer/amphp/amp/lib/Internal/functions.php
new file mode 100644
index 0000000000000..eee9af200ccba
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Internal/functions.php
@@ -0,0 +1,117 @@
+ $trace Output of
+ * `debug_backtrace()`.
+ *
+ * @return string Formatted stacktrace.
+ *
+ * @codeCoverageIgnore
+ * @internal
+ */
+function formatStacktrace(array $trace): string
+{
+ return \implode("\n", \array_map(static function ($e, $i) {
+ $line = "#{$i} ";
+
+ if (isset($e["file"])) {
+ $line .= "{$e['file']}:{$e['line']} ";
+ }
+
+ if (isset($e["type"])) {
+ $line .= $e["class"] . $e["type"];
+ }
+
+ return $line . $e["function"] . "()";
+ }, $trace, \array_keys($trace)));
+}
+
+/**
+ * Creates a `TypeError` with a standardized error message.
+ *
+ * @param string[] $expected Expected types.
+ * @param mixed $given Given value.
+ *
+ * @return \TypeError
+ *
+ * @internal
+ */
+function createTypeError(array $expected, $given): \TypeError
+{
+ $givenType = \is_object($given) ? \sprintf("instance of %s", \get_class($given)) : \gettype($given);
+
+ if (\count($expected) === 1) {
+ $expectedType = "Expected the following type: " . \array_pop($expected);
+ } else {
+ $expectedType = "Expected one of the following types: " . \implode(", ", $expected);
+ }
+
+ return new \TypeError("{$expectedType}; {$givenType} given");
+}
+
+/**
+ * Returns the current time relative to an arbitrary point in time.
+ *
+ * @return int Time in milliseconds.
+ */
+function getCurrentTime(): int
+{
+ /** @var int|null $startTime */
+ static $startTime;
+ /** @var int|null $nextWarning */
+ static $nextWarning;
+
+ if (\PHP_INT_SIZE === 4) {
+ // @codeCoverageIgnoreStart
+ if ($startTime === null) {
+ $startTime = \PHP_VERSION_ID >= 70300 ? \hrtime(false)[0] : \time();
+ $nextWarning = \PHP_INT_MAX - 86400 * 7;
+ }
+
+ if (\PHP_VERSION_ID >= 70300) {
+ list($seconds, $nanoseconds) = \hrtime(false);
+ $seconds -= $startTime;
+
+ if ($seconds >= $nextWarning) {
+ $timeToOverflow = (\PHP_INT_MAX - $seconds * 1000) / 1000;
+ \trigger_error(
+ "getCurrentTime() will overflow in $timeToOverflow seconds, please restart the process before that. " .
+ "You're using a 32 bit version of PHP, so time will overflow about every 24 days. Regular restarts are required.",
+ \E_USER_WARNING
+ );
+
+ /** @psalm-suppress PossiblyNullOperand */
+ $nextWarning += 600; // every 10 minutes
+ }
+
+ return (int) ($seconds * 1000 + $nanoseconds / 1000000);
+ }
+
+ $seconds = \microtime(true) - $startTime;
+ if ($seconds >= $nextWarning) {
+ $timeToOverflow = (\PHP_INT_MAX - $seconds * 1000) / 1000;
+ \trigger_error(
+ "getCurrentTime() will overflow in $timeToOverflow seconds, please restart the process before that. " .
+ "You're using a 32 bit version of PHP, so time will overflow about every 24 days. Regular restarts are required.",
+ \E_USER_WARNING
+ );
+
+ /** @psalm-suppress PossiblyNullOperand */
+ $nextWarning += 600; // every 10 minutes
+ }
+
+ return (int) ($seconds * 1000);
+ // @codeCoverageIgnoreEnd
+ }
+
+ if (\PHP_VERSION_ID >= 70300) {
+ list($seconds, $nanoseconds) = \hrtime(false);
+ return (int) ($seconds * 1000 + $nanoseconds / 1000000);
+ }
+
+ return (int) (\microtime(true) * 1000);
+}
diff --git a/lib/composer/amphp/amp/lib/InvalidYieldError.php b/lib/composer/amphp/amp/lib/InvalidYieldError.php
new file mode 100644
index 0000000000000..8785708e3bb3e
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/InvalidYieldError.php
@@ -0,0 +1,39 @@
+current();
+ $prefix .= \sprintf(
+ "; %s yielded at key %s",
+ \is_object($yielded) ? \get_class($yielded) : \gettype($yielded),
+ \var_export($generator->key(), true)
+ );
+
+ if (!$generator->valid()) {
+ parent::__construct($prefix, 0, $previous);
+ return;
+ }
+
+ $reflGen = new \ReflectionGenerator($generator);
+ $exeGen = $reflGen->getExecutingGenerator();
+ if ($isSubgenerator = ($exeGen !== $generator)) {
+ $reflGen = new \ReflectionGenerator($exeGen);
+ }
+
+ parent::__construct(\sprintf(
+ "%s on line %s in %s",
+ $prefix,
+ $reflGen->getExecutingLine(),
+ $reflGen->getExecutingFile()
+ ), 0, $previous);
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Iterator.php b/lib/composer/amphp/amp/lib/Iterator.php
new file mode 100644
index 0000000000000..fee9b76b6451d
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Iterator.php
@@ -0,0 +1,34 @@
+
+ *
+ * @throws \Error If the prior promise returned from this method has not resolved.
+ * @throws \Throwable The exception used to fail the iterator.
+ */
+ public function advance(): Promise;
+
+ /**
+ * Gets the last emitted value or throws an exception if the iterator has completed.
+ *
+ * @return mixed Value emitted from the iterator.
+ * @psalm-return TValue
+ *
+ * @throws \Error If the iterator has resolved or advance() was not called before calling this method.
+ * @throws \Throwable The exception used to fail the iterator.
+ */
+ public function getCurrent();
+}
diff --git a/lib/composer/amphp/amp/lib/LazyPromise.php b/lib/composer/amphp/amp/lib/LazyPromise.php
new file mode 100644
index 0000000000000..96be33f5fff74
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/LazyPromise.php
@@ -0,0 +1,44 @@
+promisor = $promisor;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function onResolve(callable $onResolved)
+ {
+ if ($this->promise === null) {
+ \assert($this->promisor !== null);
+
+ $provider = $this->promisor;
+ $this->promisor = null;
+ $this->promise = call($provider);
+ }
+
+ \assert($this->promise !== null);
+
+ $this->promise->onResolve($onResolved);
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Loop.php b/lib/composer/amphp/amp/lib/Loop.php
new file mode 100644
index 0000000000000..d89d2101a60ce
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Loop.php
@@ -0,0 +1,456 @@
+defer($callback);
+ }
+
+ self::$driver->run();
+ }
+
+ /**
+ * Stop the event loop.
+ *
+ * When an event loop is stopped, it continues with its current tick and exits the loop afterwards. Multiple calls
+ * to stop MUST be ignored and MUST NOT raise an exception.
+ *
+ * @return void
+ */
+ public static function stop()
+ {
+ self::$driver->stop();
+ }
+
+ /**
+ * Defer the execution of a callback.
+ *
+ * The deferred callable MUST be executed before any other type of watcher in a tick. Order of enabling MUST be
+ * preserved when executing the callbacks.
+ *
+ * The created watcher MUST immediately be marked as enabled, but only be activated (i.e. callback can be called)
+ * right before the next tick. Callbacks of watchers MUST NOT be called in the tick they were enabled.
+ *
+ * @param callable(string $watcherId, mixed $data) $callback The callback to defer. The `$watcherId` will be
+ * invalidated before the callback call.
+ * @param mixed $data Arbitrary data given to the callback function as the `$data` parameter.
+ *
+ * @return string An unique identifier that can be used to cancel, enable or disable the watcher.
+ */
+ public static function defer(callable $callback, $data = null): string
+ {
+ return self::$driver->defer($callback, $data);
+ }
+
+ /**
+ * Delay the execution of a callback.
+ *
+ * The delay is a minimum and approximate, accuracy is not guaranteed. Order of calls MUST be determined by which
+ * timers expire first, but timers with the same expiration time MAY be executed in any order.
+ *
+ * The created watcher MUST immediately be marked as enabled, but only be activated (i.e. callback can be called)
+ * right before the next tick. Callbacks of watchers MUST NOT be called in the tick they were enabled.
+ *
+ * @param int $delay The amount of time, in milliseconds, to delay the execution for.
+ * @param callable(string $watcherId, mixed $data) $callback The callback to delay. The `$watcherId` will be
+ * invalidated before the callback call.
+ * @param mixed $data Arbitrary data given to the callback function as the `$data` parameter.
+ *
+ * @return string An unique identifier that can be used to cancel, enable or disable the watcher.
+ */
+ public static function delay(int $delay, callable $callback, $data = null): string
+ {
+ return self::$driver->delay($delay, $callback, $data);
+ }
+
+ /**
+ * Repeatedly execute a callback.
+ *
+ * The interval between executions is a minimum and approximate, accuracy is not guaranteed. Order of calls MUST be
+ * determined by which timers expire first, but timers with the same expiration time MAY be executed in any order.
+ * The first execution is scheduled after the first interval period.
+ *
+ * The created watcher MUST immediately be marked as enabled, but only be activated (i.e. callback can be called)
+ * right before the next tick. Callbacks of watchers MUST NOT be called in the tick they were enabled.
+ *
+ * @param int $interval The time interval, in milliseconds, to wait between executions.
+ * @param callable(string $watcherId, mixed $data) $callback The callback to repeat.
+ * @param mixed $data Arbitrary data given to the callback function as the `$data` parameter.
+ *
+ * @return string An unique identifier that can be used to cancel, enable or disable the watcher.
+ */
+ public static function repeat(int $interval, callable $callback, $data = null): string
+ {
+ return self::$driver->repeat($interval, $callback, $data);
+ }
+
+ /**
+ * Execute a callback when a stream resource becomes readable or is closed for reading.
+ *
+ * Warning: Closing resources locally, e.g. with `fclose`, might not invoke the callback. Be sure to `cancel` the
+ * watcher when closing the resource locally. Drivers MAY choose to notify the user if there are watchers on invalid
+ * resources, but are not required to, due to the high performance impact. Watchers on closed resources are
+ * therefore undefined behavior.
+ *
+ * Multiple watchers on the same stream MAY be executed in any order.
+ *
+ * The created watcher MUST immediately be marked as enabled, but only be activated (i.e. callback can be called)
+ * right before the next tick. Callbacks of watchers MUST NOT be called in the tick they were enabled.
+ *
+ * @param resource $stream The stream to monitor.
+ * @param callable(string $watcherId, resource $stream, mixed $data) $callback The callback to execute.
+ * @param mixed $data Arbitrary data given to the callback function as the `$data` parameter.
+ *
+ * @return string An unique identifier that can be used to cancel, enable or disable the watcher.
+ */
+ public static function onReadable($stream, callable $callback, $data = null): string
+ {
+ return self::$driver->onReadable($stream, $callback, $data);
+ }
+
+ /**
+ * Execute a callback when a stream resource becomes writable or is closed for writing.
+ *
+ * Warning: Closing resources locally, e.g. with `fclose`, might not invoke the callback. Be sure to `cancel` the
+ * watcher when closing the resource locally. Drivers MAY choose to notify the user if there are watchers on invalid
+ * resources, but are not required to, due to the high performance impact. Watchers on closed resources are
+ * therefore undefined behavior.
+ *
+ * Multiple watchers on the same stream MAY be executed in any order.
+ *
+ * The created watcher MUST immediately be marked as enabled, but only be activated (i.e. callback can be called)
+ * right before the next tick. Callbacks of watchers MUST NOT be called in the tick they were enabled.
+ *
+ * @param resource $stream The stream to monitor.
+ * @param callable(string $watcherId, resource $stream, mixed $data) $callback The callback to execute.
+ * @param mixed $data Arbitrary data given to the callback function as the `$data` parameter.
+ *
+ * @return string An unique identifier that can be used to cancel, enable or disable the watcher.
+ */
+ public static function onWritable($stream, callable $callback, $data = null): string
+ {
+ return self::$driver->onWritable($stream, $callback, $data);
+ }
+
+ /**
+ * Execute a callback when a signal is received.
+ *
+ * Warning: Installing the same signal on different instances of this interface is deemed undefined behavior.
+ * Implementations MAY try to detect this, if possible, but are not required to. This is due to technical
+ * limitations of the signals being registered globally per process.
+ *
+ * Multiple watchers on the same signal MAY be executed in any order.
+ *
+ * The created watcher MUST immediately be marked as enabled, but only be activated (i.e. callback can be called)
+ * right before the next tick. Callbacks of watchers MUST NOT be called in the tick they were enabled.
+ *
+ * @param int $signo The signal number to monitor.
+ * @param callable(string $watcherId, int $signo, mixed $data) $callback The callback to execute.
+ * @param mixed $data Arbitrary data given to the callback function as the $data parameter.
+ *
+ * @return string An unique identifier that can be used to cancel, enable or disable the watcher.
+ *
+ * @throws UnsupportedFeatureException If signal handling is not supported.
+ */
+ public static function onSignal(int $signo, callable $callback, $data = null): string
+ {
+ return self::$driver->onSignal($signo, $callback, $data);
+ }
+
+ /**
+ * Enable a watcher to be active starting in the next tick.
+ *
+ * Watchers MUST immediately be marked as enabled, but only be activated (i.e. callbacks can be called) right before
+ * the next tick. Callbacks of watchers MUST NOT be called in the tick they were enabled.
+ *
+ * @param string $watcherId The watcher identifier.
+ *
+ * @return void
+ *
+ * @throws InvalidWatcherError If the watcher identifier is invalid.
+ */
+ public static function enable(string $watcherId)
+ {
+ self::$driver->enable($watcherId);
+ }
+
+ /**
+ * Disable a watcher immediately.
+ *
+ * A watcher MUST be disabled immediately, e.g. if a defer watcher disables a later defer watcher, the second defer
+ * watcher isn't executed in this tick.
+ *
+ * Disabling a watcher MUST NOT invalidate the watcher. Calling this function MUST NOT fail, even if passed an
+ * invalid watcher.
+ *
+ * @param string $watcherId The watcher identifier.
+ *
+ * @return void
+ */
+ public static function disable(string $watcherId)
+ {
+ if (\PHP_VERSION_ID < 70200 && !isset(self::$driver)) {
+ // Prior to PHP 7.2, self::$driver may be unset during destruct.
+ // See https://github.com/amphp/amp/issues/212.
+ return;
+ }
+
+ self::$driver->disable($watcherId);
+ }
+
+ /**
+ * Cancel a watcher.
+ *
+ * This will detatch the event loop from all resources that are associated to the watcher. After this operation the
+ * watcher is permanently invalid. Calling this function MUST NOT fail, even if passed an invalid watcher.
+ *
+ * @param string $watcherId The watcher identifier.
+ *
+ * @return void
+ */
+ public static function cancel(string $watcherId)
+ {
+ if (\PHP_VERSION_ID < 70200 && !isset(self::$driver)) {
+ // Prior to PHP 7.2, self::$driver may be unset during destruct.
+ // See https://github.com/amphp/amp/issues/212.
+ return;
+ }
+
+ self::$driver->cancel($watcherId);
+ }
+
+ /**
+ * Reference a watcher.
+ *
+ * This will keep the event loop alive whilst the watcher is still being monitored. Watchers have this state by
+ * default.
+ *
+ * @param string $watcherId The watcher identifier.
+ *
+ * @return void
+ *
+ * @throws InvalidWatcherError If the watcher identifier is invalid.
+ */
+ public static function reference(string $watcherId)
+ {
+ self::$driver->reference($watcherId);
+ }
+
+ /**
+ * Unreference a watcher.
+ *
+ * The event loop should exit the run method when only unreferenced watchers are still being monitored. Watchers
+ * are all referenced by default.
+ *
+ * @param string $watcherId The watcher identifier.
+ *
+ * @return void
+ */
+ public static function unreference(string $watcherId)
+ {
+ if (\PHP_VERSION_ID < 70200 && !isset(self::$driver)) {
+ // Prior to PHP 7.2, self::$driver may be unset during destruct.
+ // See https://github.com/amphp/amp/issues/212.
+ return;
+ }
+
+ self::$driver->unreference($watcherId);
+ }
+
+ /**
+ * Returns the current loop time in millisecond increments. Note this value does not necessarily correlate to
+ * wall-clock time, rather the value returned is meant to be used in relative comparisons to prior values returned
+ * by this method (intervals, expiration calculations, etc.) and is only updated once per loop tick.
+ *
+ * @return int
+ */
+ public static function now(): int
+ {
+ return self::$driver->now();
+ }
+
+ /**
+ * Stores information in the loop bound registry.
+ *
+ * Stored information is package private. Packages MUST NOT retrieve the stored state of other packages. Packages
+ * MUST use their namespace as prefix for keys. They may do so by using `SomeClass::class` as key.
+ *
+ * If packages want to expose loop bound state to consumers other than the package, they SHOULD provide a dedicated
+ * interface for that purpose instead of sharing the storage key.
+ *
+ * @param string $key The namespaced storage key.
+ * @param mixed $value The value to be stored.
+ *
+ * @return void
+ */
+ public static function setState(string $key, $value)
+ {
+ self::$driver->setState($key, $value);
+ }
+
+ /**
+ * Gets information stored bound to the loop.
+ *
+ * Stored information is package private. Packages MUST NOT retrieve the stored state of other packages. Packages
+ * MUST use their namespace as prefix for keys. They may do so by using `SomeClass::class` as key.
+ *
+ * If packages want to expose loop bound state to consumers other than the package, they SHOULD provide a dedicated
+ * interface for that purpose instead of sharing the storage key.
+ *
+ * @param string $key The namespaced storage key.
+ *
+ * @return mixed The previously stored value or `null` if it doesn't exist.
+ */
+ public static function getState(string $key)
+ {
+ return self::$driver->getState($key);
+ }
+
+ /**
+ * Set a callback to be executed when an error occurs.
+ *
+ * The callback receives the error as the first and only parameter. The return value of the callback gets ignored.
+ * If it can't handle the error, it MUST throw the error. Errors thrown by the callback or during its invocation
+ * MUST be thrown into the `run` loop and stop the driver.
+ *
+ * Subsequent calls to this method will overwrite the previous handler.
+ *
+ * @param callable(\Throwable $error)|null $callback The callback to execute. `null` will clear the
+ * current handler.
+ *
+ * @return callable(\Throwable $error)|null The previous handler, `null` if there was none.
+ */
+ public static function setErrorHandler(callable $callback = null)
+ {
+ return self::$driver->setErrorHandler($callback);
+ }
+
+ /**
+ * Retrieve an associative array of information about the event loop driver.
+ *
+ * The returned array MUST contain the following data describing the driver's currently registered watchers:
+ *
+ * [
+ * "defer" => ["enabled" => int, "disabled" => int],
+ * "delay" => ["enabled" => int, "disabled" => int],
+ * "repeat" => ["enabled" => int, "disabled" => int],
+ * "on_readable" => ["enabled" => int, "disabled" => int],
+ * "on_writable" => ["enabled" => int, "disabled" => int],
+ * "on_signal" => ["enabled" => int, "disabled" => int],
+ * "enabled_watchers" => ["referenced" => int, "unreferenced" => int],
+ * "running" => bool
+ * ];
+ *
+ * Implementations MAY optionally add more information in the array but at minimum the above `key => value` format
+ * MUST always be provided.
+ *
+ * @return array Statistics about the loop in the described format.
+ */
+ public static function getInfo(): array
+ {
+ return self::$driver->getInfo();
+ }
+
+ /**
+ * Retrieve the event loop driver that is in scope.
+ *
+ * @return Driver
+ */
+ public static function get(): Driver
+ {
+ return self::$driver;
+ }
+}
+
+// Default factory, don't move this to a file loaded by the composer "files" autoload mechanism, otherwise custom
+// implementations might have issues setting a default loop, because it's overridden by us then.
+
+// @codeCoverageIgnoreStart
+Loop::set((new DriverFactory)->create());
+// @codeCoverageIgnoreEnd
diff --git a/lib/composer/amphp/amp/lib/Loop/Driver.php b/lib/composer/amphp/amp/lib/Loop/Driver.php
new file mode 100644
index 0000000000000..448bab62d08dd
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Loop/Driver.php
@@ -0,0 +1,742 @@
+running = true;
+
+ try {
+ while ($this->running) {
+ if ($this->isEmpty()) {
+ return;
+ }
+ $this->tick();
+ }
+ } finally {
+ $this->stop();
+ }
+ }
+
+ /**
+ * @return bool True if no enabled and referenced watchers remain in the loop.
+ */
+ private function isEmpty(): bool
+ {
+ foreach ($this->watchers as $watcher) {
+ if ($watcher->enabled && $watcher->referenced) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Executes a single tick of the event loop.
+ *
+ * @return void
+ */
+ private function tick()
+ {
+ if (empty($this->deferQueue)) {
+ $this->deferQueue = $this->nextTickQueue;
+ } else {
+ $this->deferQueue = \array_merge($this->deferQueue, $this->nextTickQueue);
+ }
+ $this->nextTickQueue = [];
+
+ $this->activate($this->enableQueue);
+ $this->enableQueue = [];
+
+ foreach ($this->deferQueue as $watcher) {
+ if (!isset($this->deferQueue[$watcher->id])) {
+ continue; // Watcher disabled by another defer watcher.
+ }
+
+ unset($this->watchers[$watcher->id], $this->deferQueue[$watcher->id]);
+
+ try {
+ /** @var mixed $result */
+ $result = ($watcher->callback)($watcher->id, $watcher->data);
+
+ if ($result === null) {
+ continue;
+ }
+
+ if ($result instanceof \Generator) {
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ $this->error($exception);
+ }
+ }
+
+ /** @psalm-suppress RedundantCondition */
+ $this->dispatch(empty($this->nextTickQueue) && empty($this->enableQueue) && $this->running && !$this->isEmpty());
+ }
+
+ /**
+ * Activates (enables) all the given watchers.
+ *
+ * @param Watcher[] $watchers
+ *
+ * @return void
+ */
+ abstract protected function activate(array $watchers);
+
+ /**
+ * Dispatches any pending read/write, timer, and signal events.
+ *
+ * @param bool $blocking
+ *
+ * @return void
+ */
+ abstract protected function dispatch(bool $blocking);
+
+ /**
+ * Stop the event loop.
+ *
+ * When an event loop is stopped, it continues with its current tick and exits the loop afterwards. Multiple calls
+ * to stop MUST be ignored and MUST NOT raise an exception.
+ *
+ * @return void
+ */
+ public function stop()
+ {
+ $this->running = false;
+ }
+
+ /**
+ * Defer the execution of a callback.
+ *
+ * The deferred callable MUST be executed before any other type of watcher in a tick. Order of enabling MUST be
+ * preserved when executing the callbacks.
+ *
+ * The created watcher MUST immediately be marked as enabled, but only be activated (i.e. callback can be called)
+ * right before the next tick. Callbacks of watchers MUST NOT be called in the tick they were enabled.
+ *
+ * @param callable (string $watcherId, mixed $data) $callback The callback to defer. The `$watcherId` will be
+ * invalidated before the callback call.
+ * @param mixed $data Arbitrary data given to the callback function as the `$data` parameter.
+ *
+ * @return string An unique identifier that can be used to cancel, enable or disable the watcher.
+ */
+ public function defer(callable $callback, $data = null): string
+ {
+ /** @psalm-var Watcher $watcher */
+ $watcher = new Watcher;
+ $watcher->type = Watcher::DEFER;
+ $watcher->id = $this->nextId++;
+ $watcher->callback = $callback;
+ $watcher->data = $data;
+
+ $this->watchers[$watcher->id] = $watcher;
+ $this->nextTickQueue[$watcher->id] = $watcher;
+
+ return $watcher->id;
+ }
+
+ /**
+ * Delay the execution of a callback.
+ *
+ * The delay is a minimum and approximate, accuracy is not guaranteed. Order of calls MUST be determined by which
+ * timers expire first, but timers with the same expiration time MAY be executed in any order.
+ *
+ * The created watcher MUST immediately be marked as enabled, but only be activated (i.e. callback can be called)
+ * right before the next tick. Callbacks of watchers MUST NOT be called in the tick they were enabled.
+ *
+ * @param int $delay The amount of time, in milliseconds, to delay the execution for.
+ * @param callable (string $watcherId, mixed $data) $callback The callback to delay. The `$watcherId` will be
+ * invalidated before the callback call.
+ * @param mixed $data Arbitrary data given to the callback function as the `$data` parameter.
+ *
+ * @return string An unique identifier that can be used to cancel, enable or disable the watcher.
+ */
+ public function delay(int $delay, callable $callback, $data = null): string
+ {
+ if ($delay < 0) {
+ throw new \Error("Delay must be greater than or equal to zero");
+ }
+
+ /** @psalm-var Watcher $watcher */
+ $watcher = new Watcher;
+ $watcher->type = Watcher::DELAY;
+ $watcher->id = $this->nextId++;
+ $watcher->callback = $callback;
+ $watcher->value = $delay;
+ $watcher->expiration = $this->now() + $delay;
+ $watcher->data = $data;
+
+ $this->watchers[$watcher->id] = $watcher;
+ $this->enableQueue[$watcher->id] = $watcher;
+
+ return $watcher->id;
+ }
+
+ /**
+ * Repeatedly execute a callback.
+ *
+ * The interval between executions is a minimum and approximate, accuracy is not guaranteed. Order of calls MUST be
+ * determined by which timers expire first, but timers with the same expiration time MAY be executed in any order.
+ * The first execution is scheduled after the first interval period.
+ *
+ * The created watcher MUST immediately be marked as enabled, but only be activated (i.e. callback can be called)
+ * right before the next tick. Callbacks of watchers MUST NOT be called in the tick they were enabled.
+ *
+ * @param int $interval The time interval, in milliseconds, to wait between executions.
+ * @param callable (string $watcherId, mixed $data) $callback The callback to repeat.
+ * @param mixed $data Arbitrary data given to the callback function as the `$data` parameter.
+ *
+ * @return string An unique identifier that can be used to cancel, enable or disable the watcher.
+ */
+ public function repeat(int $interval, callable $callback, $data = null): string
+ {
+ if ($interval < 0) {
+ throw new \Error("Interval must be greater than or equal to zero");
+ }
+
+ /** @psalm-var Watcher $watcher */
+ $watcher = new Watcher;
+ $watcher->type = Watcher::REPEAT;
+ $watcher->id = $this->nextId++;
+ $watcher->callback = $callback;
+ $watcher->value = $interval;
+ $watcher->expiration = $this->now() + $interval;
+ $watcher->data = $data;
+
+ $this->watchers[$watcher->id] = $watcher;
+ $this->enableQueue[$watcher->id] = $watcher;
+
+ return $watcher->id;
+ }
+
+ /**
+ * Execute a callback when a stream resource becomes readable or is closed for reading.
+ *
+ * Warning: Closing resources locally, e.g. with `fclose`, might not invoke the callback. Be sure to `cancel` the
+ * watcher when closing the resource locally. Drivers MAY choose to notify the user if there are watchers on invalid
+ * resources, but are not required to, due to the high performance impact. Watchers on closed resources are
+ * therefore undefined behavior.
+ *
+ * Multiple watchers on the same stream MAY be executed in any order.
+ *
+ * The created watcher MUST immediately be marked as enabled, but only be activated (i.e. callback can be called)
+ * right before the next tick. Callbacks of watchers MUST NOT be called in the tick they were enabled.
+ *
+ * @param resource $stream The stream to monitor.
+ * @param callable (string $watcherId, resource $stream, mixed $data) $callback The callback to execute.
+ * @param mixed $data Arbitrary data given to the callback function as the `$data` parameter.
+ *
+ * @return string An unique identifier that can be used to cancel, enable or disable the watcher.
+ */
+ public function onReadable($stream, callable $callback, $data = null): string
+ {
+ /** @psalm-var Watcher $watcher */
+ $watcher = new Watcher;
+ $watcher->type = Watcher::READABLE;
+ $watcher->id = $this->nextId++;
+ $watcher->callback = $callback;
+ $watcher->value = $stream;
+ $watcher->data = $data;
+
+ $this->watchers[$watcher->id] = $watcher;
+ $this->enableQueue[$watcher->id] = $watcher;
+
+ return $watcher->id;
+ }
+
+ /**
+ * Execute a callback when a stream resource becomes writable or is closed for writing.
+ *
+ * Warning: Closing resources locally, e.g. with `fclose`, might not invoke the callback. Be sure to `cancel` the
+ * watcher when closing the resource locally. Drivers MAY choose to notify the user if there are watchers on invalid
+ * resources, but are not required to, due to the high performance impact. Watchers on closed resources are
+ * therefore undefined behavior.
+ *
+ * Multiple watchers on the same stream MAY be executed in any order.
+ *
+ * The created watcher MUST immediately be marked as enabled, but only be activated (i.e. callback can be called)
+ * right before the next tick. Callbacks of watchers MUST NOT be called in the tick they were enabled.
+ *
+ * @param resource $stream The stream to monitor.
+ * @param callable (string $watcherId, resource $stream, mixed $data) $callback The callback to execute.
+ * @param mixed $data Arbitrary data given to the callback function as the `$data` parameter.
+ *
+ * @return string An unique identifier that can be used to cancel, enable or disable the watcher.
+ */
+ public function onWritable($stream, callable $callback, $data = null): string
+ {
+ /** @psalm-var Watcher $watcher */
+ $watcher = new Watcher;
+ $watcher->type = Watcher::WRITABLE;
+ $watcher->id = $this->nextId++;
+ $watcher->callback = $callback;
+ $watcher->value = $stream;
+ $watcher->data = $data;
+
+ $this->watchers[$watcher->id] = $watcher;
+ $this->enableQueue[$watcher->id] = $watcher;
+
+ return $watcher->id;
+ }
+
+ /**
+ * Execute a callback when a signal is received.
+ *
+ * Warning: Installing the same signal on different instances of this interface is deemed undefined behavior.
+ * Implementations MAY try to detect this, if possible, but are not required to. This is due to technical
+ * limitations of the signals being registered globally per process.
+ *
+ * Multiple watchers on the same signal MAY be executed in any order.
+ *
+ * The created watcher MUST immediately be marked as enabled, but only be activated (i.e. callback can be called)
+ * right before the next tick. Callbacks of watchers MUST NOT be called in the tick they were enabled.
+ *
+ * @param int $signo The signal number to monitor.
+ * @param callable (string $watcherId, int $signo, mixed $data) $callback The callback to execute.
+ * @param mixed $data Arbitrary data given to the callback function as the $data parameter.
+ *
+ * @return string An unique identifier that can be used to cancel, enable or disable the watcher.
+ *
+ * @throws UnsupportedFeatureException If signal handling is not supported.
+ */
+ public function onSignal(int $signo, callable $callback, $data = null): string
+ {
+ /** @psalm-var Watcher $watcher */
+ $watcher = new Watcher;
+ $watcher->type = Watcher::SIGNAL;
+ $watcher->id = $this->nextId++;
+ $watcher->callback = $callback;
+ $watcher->value = $signo;
+ $watcher->data = $data;
+
+ $this->watchers[$watcher->id] = $watcher;
+ $this->enableQueue[$watcher->id] = $watcher;
+
+ return $watcher->id;
+ }
+
+ /**
+ * Enable a watcher to be active starting in the next tick.
+ *
+ * Watchers MUST immediately be marked as enabled, but only be activated (i.e. callbacks can be called) right before
+ * the next tick. Callbacks of watchers MUST NOT be called in the tick they were enabled.
+ *
+ * @param string $watcherId The watcher identifier.
+ *
+ * @return void
+ *
+ * @throws InvalidWatcherError If the watcher identifier is invalid.
+ */
+ public function enable(string $watcherId)
+ {
+ if (!isset($this->watchers[$watcherId])) {
+ throw new InvalidWatcherError($watcherId, "Cannot enable an invalid watcher identifier: '{$watcherId}'");
+ }
+
+ $watcher = $this->watchers[$watcherId];
+
+ if ($watcher->enabled) {
+ return; // Watcher already enabled.
+ }
+
+ $watcher->enabled = true;
+
+ switch ($watcher->type) {
+ case Watcher::DEFER:
+ $this->nextTickQueue[$watcher->id] = $watcher;
+ break;
+
+ case Watcher::REPEAT:
+ case Watcher::DELAY:
+ \assert(\is_int($watcher->value));
+
+ $watcher->expiration = $this->now() + $watcher->value;
+ $this->enableQueue[$watcher->id] = $watcher;
+ break;
+
+ default:
+ $this->enableQueue[$watcher->id] = $watcher;
+ break;
+ }
+ }
+
+ /**
+ * Cancel a watcher.
+ *
+ * This will detach the event loop from all resources that are associated to the watcher. After this operation the
+ * watcher is permanently invalid. Calling this function MUST NOT fail, even if passed an invalid watcher.
+ *
+ * @param string $watcherId The watcher identifier.
+ *
+ * @return void
+ */
+ public function cancel(string $watcherId)
+ {
+ $this->disable($watcherId);
+ unset($this->watchers[$watcherId]);
+ }
+
+ /**
+ * Disable a watcher immediately.
+ *
+ * A watcher MUST be disabled immediately, e.g. if a defer watcher disables a later defer watcher, the second defer
+ * watcher isn't executed in this tick.
+ *
+ * Disabling a watcher MUST NOT invalidate the watcher. Calling this function MUST NOT fail, even if passed an
+ * invalid watcher.
+ *
+ * @param string $watcherId The watcher identifier.
+ *
+ * @return void
+ */
+ public function disable(string $watcherId)
+ {
+ if (!isset($this->watchers[$watcherId])) {
+ return;
+ }
+
+ $watcher = $this->watchers[$watcherId];
+
+ if (!$watcher->enabled) {
+ return; // Watcher already disabled.
+ }
+
+ $watcher->enabled = false;
+ $id = $watcher->id;
+
+ switch ($watcher->type) {
+ case Watcher::DEFER:
+ if (isset($this->nextTickQueue[$id])) {
+ // Watcher was only queued to be enabled.
+ unset($this->nextTickQueue[$id]);
+ } else {
+ unset($this->deferQueue[$id]);
+ }
+ break;
+
+ default:
+ if (isset($this->enableQueue[$id])) {
+ // Watcher was only queued to be enabled.
+ unset($this->enableQueue[$id]);
+ } else {
+ $this->deactivate($watcher);
+ }
+ break;
+ }
+ }
+
+ /**
+ * Deactivates (disables) the given watcher.
+ *
+ * @param Watcher $watcher
+ *
+ * @return void
+ */
+ abstract protected function deactivate(Watcher $watcher);
+
+ /**
+ * Reference a watcher.
+ *
+ * This will keep the event loop alive whilst the watcher is still being monitored. Watchers have this state by
+ * default.
+ *
+ * @param string $watcherId The watcher identifier.
+ *
+ * @return void
+ *
+ * @throws InvalidWatcherError If the watcher identifier is invalid.
+ */
+ public function reference(string $watcherId)
+ {
+ if (!isset($this->watchers[$watcherId])) {
+ throw new InvalidWatcherError($watcherId, "Cannot reference an invalid watcher identifier: '{$watcherId}'");
+ }
+
+ $this->watchers[$watcherId]->referenced = true;
+ }
+
+ /**
+ * Unreference a watcher.
+ *
+ * The event loop should exit the run method when only unreferenced watchers are still being monitored. Watchers
+ * are all referenced by default.
+ *
+ * @param string $watcherId The watcher identifier.
+ *
+ * @return void
+ */
+ public function unreference(string $watcherId)
+ {
+ if (!isset($this->watchers[$watcherId])) {
+ return;
+ }
+
+ $this->watchers[$watcherId]->referenced = false;
+ }
+
+ /**
+ * Stores information in the loop bound registry.
+ *
+ * Stored information is package private. Packages MUST NOT retrieve the stored state of other packages. Packages
+ * MUST use their namespace as prefix for keys. They may do so by using `SomeClass::class` as key.
+ *
+ * If packages want to expose loop bound state to consumers other than the package, they SHOULD provide a dedicated
+ * interface for that purpose instead of sharing the storage key.
+ *
+ * @param string $key The namespaced storage key.
+ * @param mixed $value The value to be stored.
+ *
+ * @return void
+ */
+ final public function setState(string $key, $value)
+ {
+ if ($value === null) {
+ unset($this->registry[$key]);
+ } else {
+ $this->registry[$key] = $value;
+ }
+ }
+
+ /**
+ * Gets information stored bound to the loop.
+ *
+ * Stored information is package private. Packages MUST NOT retrieve the stored state of other packages. Packages
+ * MUST use their namespace as prefix for keys. They may do so by using `SomeClass::class` as key.
+ *
+ * If packages want to expose loop bound state to consumers other than the package, they SHOULD provide a dedicated
+ * interface for that purpose instead of sharing the storage key.
+ *
+ * @param string $key The namespaced storage key.
+ *
+ * @return mixed The previously stored value or `null` if it doesn't exist.
+ */
+ final public function getState(string $key)
+ {
+ return isset($this->registry[$key]) ? $this->registry[$key] : null;
+ }
+
+ /**
+ * Set a callback to be executed when an error occurs.
+ *
+ * The callback receives the error as the first and only parameter. The return value of the callback gets ignored.
+ * If it can't handle the error, it MUST throw the error. Errors thrown by the callback or during its invocation
+ * MUST be thrown into the `run` loop and stop the driver.
+ *
+ * Subsequent calls to this method will overwrite the previous handler.
+ *
+ * @param callable(\Throwable $error):void|null $callback The callback to execute. `null` will clear the
+ * current handler.
+ *
+ * @return callable(\Throwable $error):void|null The previous handler, `null` if there was none.
+ */
+ public function setErrorHandler(callable $callback = null)
+ {
+ $previous = $this->errorHandler;
+ $this->errorHandler = $callback;
+ return $previous;
+ }
+
+ /**
+ * Invokes the error handler with the given exception.
+ *
+ * @param \Throwable $exception The exception thrown from a watcher callback.
+ *
+ * @return void
+ * @throws \Throwable If no error handler has been set.
+ */
+ protected function error(\Throwable $exception)
+ {
+ if ($this->errorHandler === null) {
+ throw $exception;
+ }
+
+ ($this->errorHandler)($exception);
+ }
+
+ /**
+ * Returns the current loop time in millisecond increments. Note this value does not necessarily correlate to
+ * wall-clock time, rather the value returned is meant to be used in relative comparisons to prior values returned
+ * by this method (intervals, expiration calculations, etc.) and is only updated once per loop tick.
+ *
+ * Extending classes should override this function to return a value cached once per loop tick.
+ *
+ * @return int
+ */
+ public function now(): int
+ {
+ return (int) (\microtime(true) * self::MILLISEC_PER_SEC);
+ }
+
+ /**
+ * Get the underlying loop handle.
+ *
+ * Example: the `uv_loop` resource for `libuv` or the `EvLoop` object for `libev` or `null` for a native driver.
+ *
+ * Note: This function is *not* exposed in the `Loop` class. Users shall access it directly on the respective loop
+ * instance.
+ *
+ * @return null|object|resource The loop handle the event loop operates on. `null` if there is none.
+ */
+ abstract public function getHandle();
+
+ /**
+ * Returns the same array of data as getInfo().
+ *
+ * @return array
+ */
+ public function __debugInfo()
+ {
+ // @codeCoverageIgnoreStart
+ return $this->getInfo();
+ // @codeCoverageIgnoreEnd
+ }
+
+ /**
+ * Retrieve an associative array of information about the event loop driver.
+ *
+ * The returned array MUST contain the following data describing the driver's currently registered watchers:
+ *
+ * [
+ * "defer" => ["enabled" => int, "disabled" => int],
+ * "delay" => ["enabled" => int, "disabled" => int],
+ * "repeat" => ["enabled" => int, "disabled" => int],
+ * "on_readable" => ["enabled" => int, "disabled" => int],
+ * "on_writable" => ["enabled" => int, "disabled" => int],
+ * "on_signal" => ["enabled" => int, "disabled" => int],
+ * "enabled_watchers" => ["referenced" => int, "unreferenced" => int],
+ * "running" => bool
+ * ];
+ *
+ * Implementations MAY optionally add more information in the array but at minimum the above `key => value` format
+ * MUST always be provided.
+ *
+ * @return array Statistics about the loop in the described format.
+ */
+ public function getInfo(): array
+ {
+ $watchers = [
+ "referenced" => 0,
+ "unreferenced" => 0,
+ ];
+
+ $defer = $delay = $repeat = $onReadable = $onWritable = $onSignal = [
+ "enabled" => 0,
+ "disabled" => 0,
+ ];
+
+ foreach ($this->watchers as $watcher) {
+ switch ($watcher->type) {
+ case Watcher::READABLE:
+ $array = &$onReadable;
+ break;
+ case Watcher::WRITABLE:
+ $array = &$onWritable;
+ break;
+ case Watcher::SIGNAL:
+ $array = &$onSignal;
+ break;
+ case Watcher::DEFER:
+ $array = &$defer;
+ break;
+ case Watcher::DELAY:
+ $array = &$delay;
+ break;
+ case Watcher::REPEAT:
+ $array = &$repeat;
+ break;
+
+ default:
+ // @codeCoverageIgnoreStart
+ throw new \Error("Unknown watcher type");
+ // @codeCoverageIgnoreEnd
+ }
+
+ if ($watcher->enabled) {
+ ++$array["enabled"];
+
+ if ($watcher->referenced) {
+ ++$watchers["referenced"];
+ } else {
+ ++$watchers["unreferenced"];
+ }
+ } else {
+ ++$array["disabled"];
+ }
+ }
+
+ return [
+ "enabled_watchers" => $watchers,
+ "defer" => $defer,
+ "delay" => $delay,
+ "repeat" => $repeat,
+ "on_readable" => $onReadable,
+ "on_writable" => $onWritable,
+ "on_signal" => $onSignal,
+ "running" => (bool) $this->running,
+ ];
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Loop/DriverFactory.php b/lib/composer/amphp/amp/lib/Loop/DriverFactory.php
new file mode 100644
index 0000000000000..0ce1652421a10
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Loop/DriverFactory.php
@@ -0,0 +1,73 @@
+createDriverFromEnv()) {
+ return $driver;
+ }
+
+ if (UvDriver::isSupported()) {
+ return new UvDriver;
+ }
+
+ if (EvDriver::isSupported()) {
+ return new EvDriver;
+ }
+
+ if (EventDriver::isSupported()) {
+ return new EventDriver;
+ }
+
+ return new NativeDriver;
+ })();
+
+ if (\getenv("AMP_DEBUG_TRACE_WATCHERS")) {
+ return new TracingDriver($driver);
+ }
+
+ return $driver;
+ }
+
+ /**
+ * @return Driver|null
+ */
+ private function createDriverFromEnv()
+ {
+ $driver = \getenv("AMP_LOOP_DRIVER");
+
+ if (!$driver) {
+ return null;
+ }
+
+ if (!\class_exists($driver)) {
+ throw new \Error(\sprintf(
+ "Driver '%s' does not exist.",
+ $driver
+ ));
+ }
+
+ if (!\is_subclass_of($driver, Driver::class)) {
+ throw new \Error(\sprintf(
+ "Driver '%s' is not a subclass of '%s'.",
+ $driver,
+ Driver::class
+ ));
+ }
+
+ return new $driver;
+ }
+}
+// @codeCoverageIgnoreEnd
diff --git a/lib/composer/amphp/amp/lib/Loop/EvDriver.php b/lib/composer/amphp/amp/lib/Loop/EvDriver.php
new file mode 100644
index 0000000000000..401bb3bae0b9d
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Loop/EvDriver.php
@@ -0,0 +1,317 @@
+handle = new \EvLoop;
+ $this->nowOffset = getCurrentTime();
+ $this->now = \random_int(0, $this->nowOffset);
+ $this->nowOffset -= $this->now;
+
+ if (self::$activeSignals === null) {
+ self::$activeSignals = &$this->signals;
+ }
+
+ /**
+ * @param \EvIO $event
+ *
+ * @return void
+ */
+ $this->ioCallback = function (\EvIO $event) {
+ /** @var Watcher $watcher */
+ $watcher = $event->data;
+
+ try {
+ $result = ($watcher->callback)($watcher->id, $watcher->value, $watcher->data);
+
+ if ($result === null) {
+ return;
+ }
+
+ if ($result instanceof \Generator) {
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ $this->error($exception);
+ }
+ };
+
+ /**
+ * @param \EvTimer $event
+ *
+ * @return void
+ */
+ $this->timerCallback = function (\EvTimer $event) {
+ /** @var Watcher $watcher */
+ $watcher = $event->data;
+
+ if ($watcher->type & Watcher::DELAY) {
+ $this->cancel($watcher->id);
+ } elseif ($watcher->value === 0) {
+ // Disable and re-enable so it's not executed repeatedly in the same tick
+ // See https://github.com/amphp/amp/issues/131
+ $this->disable($watcher->id);
+ $this->enable($watcher->id);
+ }
+
+ try {
+ $result = ($watcher->callback)($watcher->id, $watcher->data);
+
+ if ($result === null) {
+ return;
+ }
+
+ if ($result instanceof \Generator) {
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ $this->error($exception);
+ }
+ };
+
+ /**
+ * @param \EvSignal $event
+ *
+ * @return void
+ */
+ $this->signalCallback = function (\EvSignal $event) {
+ /** @var Watcher $watcher */
+ $watcher = $event->data;
+
+ try {
+ $result = ($watcher->callback)($watcher->id, $watcher->value, $watcher->data);
+
+ if ($result === null) {
+ return;
+ }
+
+ if ($result instanceof \Generator) {
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ $this->error($exception);
+ }
+ };
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function cancel(string $watcherId)
+ {
+ parent::cancel($watcherId);
+ unset($this->events[$watcherId]);
+ }
+
+ public function __destruct()
+ {
+ foreach ($this->events as $event) {
+ /** @psalm-suppress all */
+ if ($event !== null) { // Events may have been nulled in extension depending on destruct order.
+ $event->stop();
+ }
+ }
+
+ // We need to clear all references to events manually, see
+ // https://bitbucket.org/osmanov/pecl-ev/issues/31/segfault-in-ev_timer_stop
+ $this->events = [];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function run()
+ {
+ $active = self::$activeSignals;
+
+ \assert($active !== null);
+
+ foreach ($active as $event) {
+ $event->stop();
+ }
+
+ self::$activeSignals = &$this->signals;
+
+ foreach ($this->signals as $event) {
+ $event->start();
+ }
+
+ try {
+ parent::run();
+ } finally {
+ foreach ($this->signals as $event) {
+ $event->stop();
+ }
+
+ self::$activeSignals = &$active;
+
+ foreach ($active as $event) {
+ $event->start();
+ }
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function stop()
+ {
+ $this->handle->stop();
+ parent::stop();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function now(): int
+ {
+ $this->now = getCurrentTime() - $this->nowOffset;
+
+ return $this->now;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getHandle(): \EvLoop
+ {
+ return $this->handle;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return void
+ */
+ protected function dispatch(bool $blocking)
+ {
+ $this->handle->run($blocking ? \Ev::RUN_ONCE : \Ev::RUN_ONCE | \Ev::RUN_NOWAIT);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return void
+ */
+ protected function activate(array $watchers)
+ {
+ $this->handle->nowUpdate();
+ $now = $this->now();
+
+ foreach ($watchers as $watcher) {
+ if (!isset($this->events[$id = $watcher->id])) {
+ switch ($watcher->type) {
+ case Watcher::READABLE:
+ \assert(\is_resource($watcher->value));
+
+ $this->events[$id] = $this->handle->io($watcher->value, \Ev::READ, $this->ioCallback, $watcher);
+ break;
+
+ case Watcher::WRITABLE:
+ \assert(\is_resource($watcher->value));
+
+ $this->events[$id] = $this->handle->io(
+ $watcher->value,
+ \Ev::WRITE,
+ $this->ioCallback,
+ $watcher
+ );
+ break;
+
+ case Watcher::DELAY:
+ case Watcher::REPEAT:
+ \assert(\is_int($watcher->value));
+
+ $interval = $watcher->value / self::MILLISEC_PER_SEC;
+ $this->events[$id] = $this->handle->timer(
+ \max(0, ($watcher->expiration - $now) / self::MILLISEC_PER_SEC),
+ ($watcher->type & Watcher::REPEAT) ? $interval : 0,
+ $this->timerCallback,
+ $watcher
+ );
+ break;
+
+ case Watcher::SIGNAL:
+ \assert(\is_int($watcher->value));
+
+ $this->events[$id] = $this->handle->signal($watcher->value, $this->signalCallback, $watcher);
+ break;
+
+ default:
+ // @codeCoverageIgnoreStart
+ throw new \Error("Unknown watcher type");
+ // @codeCoverageIgnoreEnd
+ }
+ } else {
+ $this->events[$id]->start();
+ }
+
+ if ($watcher->type === Watcher::SIGNAL) {
+ /** @psalm-suppress PropertyTypeCoercion */
+ $this->signals[$id] = $this->events[$id];
+ }
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return void
+ */
+ protected function deactivate(Watcher $watcher)
+ {
+ if (isset($this->events[$id = $watcher->id])) {
+ $this->events[$id]->stop();
+
+ if ($watcher->type === Watcher::SIGNAL) {
+ unset($this->signals[$id]);
+ }
+ }
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Loop/EventDriver.php b/lib/composer/amphp/amp/lib/Loop/EventDriver.php
new file mode 100644
index 0000000000000..676ba7d10f405
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Loop/EventDriver.php
@@ -0,0 +1,362 @@
+handle = new \EventBase;
+ $this->nowOffset = getCurrentTime();
+ $this->now = \random_int(0, $this->nowOffset);
+ $this->nowOffset -= $this->now;
+
+ if (self::$activeSignals === null) {
+ self::$activeSignals = &$this->signals;
+ }
+
+ /**
+ * @param $resource
+ * @param $what
+ * @param Watcher $watcher
+ *
+ * @return void
+ */
+ $this->ioCallback = function ($resource, $what, Watcher $watcher) {
+ \assert(\is_resource($watcher->value));
+
+ try {
+ $result = ($watcher->callback)($watcher->id, $watcher->value, $watcher->data);
+
+ if ($result === null) {
+ return;
+ }
+
+ if ($result instanceof \Generator) {
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ $this->error($exception);
+ }
+ };
+
+ /**
+ * @param $resource
+ * @param $what
+ * @param Watcher $watcher
+ *
+ * @return void
+ */
+ $this->timerCallback = function ($resource, $what, Watcher $watcher) {
+ \assert(\is_int($watcher->value));
+
+ if ($watcher->type & Watcher::DELAY) {
+ $this->cancel($watcher->id);
+ } else {
+ $this->events[$watcher->id]->add($watcher->value / self::MILLISEC_PER_SEC);
+ }
+
+ try {
+ $result = ($watcher->callback)($watcher->id, $watcher->data);
+
+ if ($result === null) {
+ return;
+ }
+
+ if ($result instanceof \Generator) {
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ $this->error($exception);
+ }
+ };
+
+ /**
+ * @param $signum
+ * @param $what
+ * @param Watcher $watcher
+ *
+ * @return void
+ */
+ $this->signalCallback = function ($signum, $what, Watcher $watcher) {
+ try {
+ $result = ($watcher->callback)($watcher->id, $watcher->value, $watcher->data);
+
+ if ($result === null) {
+ return;
+ }
+
+ if ($result instanceof \Generator) {
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ $this->error($exception);
+ }
+ };
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function cancel(string $watcherId)
+ {
+ parent::cancel($watcherId);
+
+ if (isset($this->events[$watcherId])) {
+ $this->events[$watcherId]->free();
+ unset($this->events[$watcherId]);
+ }
+ }
+
+ public static function isSupported(): bool
+ {
+ return \extension_loaded("event");
+ }
+
+ /**
+ * @codeCoverageIgnore
+ */
+ public function __destruct()
+ {
+ foreach ($this->events as $event) {
+ if ($event !== null) { // Events may have been nulled in extension depending on destruct order.
+ $event->free();
+ }
+ }
+
+ // Unset here, otherwise $event->del() fails with a warning, because __destruct order isn't defined.
+ // See https://github.com/amphp/amp/issues/159.
+ $this->events = [];
+
+ // Manually free the loop handle to fully release loop resources.
+ // See https://github.com/amphp/amp/issues/177.
+ if ($this->handle !== null) {
+ $this->handle->free();
+ $this->handle = null;
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function run()
+ {
+ $active = self::$activeSignals;
+
+ \assert($active !== null);
+
+ foreach ($active as $event) {
+ $event->del();
+ }
+
+ self::$activeSignals = &$this->signals;
+
+ foreach ($this->signals as $event) {
+ /** @psalm-suppress TooFewArguments https://github.com/JetBrains/phpstorm-stubs/pull/763 */
+ $event->add();
+ }
+
+ try {
+ parent::run();
+ } finally {
+ foreach ($this->signals as $event) {
+ $event->del();
+ }
+
+ self::$activeSignals = &$active;
+
+ foreach ($active as $event) {
+ /** @psalm-suppress TooFewArguments https://github.com/JetBrains/phpstorm-stubs/pull/763 */
+ $event->add();
+ }
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function stop()
+ {
+ $this->handle->stop();
+ parent::stop();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function now(): int
+ {
+ $this->now = getCurrentTime() - $this->nowOffset;
+
+ return $this->now;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getHandle(): \EventBase
+ {
+ return $this->handle;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return void
+ */
+ protected function dispatch(bool $blocking)
+ {
+ $this->handle->loop($blocking ? \EventBase::LOOP_ONCE : \EventBase::LOOP_ONCE | \EventBase::LOOP_NONBLOCK);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return void
+ */
+ protected function activate(array $watchers)
+ {
+ $now = $this->now();
+
+ foreach ($watchers as $watcher) {
+ if (!isset($this->events[$id = $watcher->id])) {
+ switch ($watcher->type) {
+ case Watcher::READABLE:
+ \assert(\is_resource($watcher->value));
+
+ $this->events[$id] = new \Event(
+ $this->handle,
+ $watcher->value,
+ \Event::READ | \Event::PERSIST,
+ $this->ioCallback,
+ $watcher
+ );
+ break;
+
+ case Watcher::WRITABLE:
+ \assert(\is_resource($watcher->value));
+
+ $this->events[$id] = new \Event(
+ $this->handle,
+ $watcher->value,
+ \Event::WRITE | \Event::PERSIST,
+ $this->ioCallback,
+ $watcher
+ );
+ break;
+
+ case Watcher::DELAY:
+ case Watcher::REPEAT:
+ \assert(\is_int($watcher->value));
+
+ $this->events[$id] = new \Event(
+ $this->handle,
+ -1,
+ \Event::TIMEOUT,
+ $this->timerCallback,
+ $watcher
+ );
+ break;
+
+ case Watcher::SIGNAL:
+ \assert(\is_int($watcher->value));
+
+ $this->events[$id] = new \Event(
+ $this->handle,
+ $watcher->value,
+ \Event::SIGNAL | \Event::PERSIST,
+ $this->signalCallback,
+ $watcher
+ );
+ break;
+
+ default:
+ // @codeCoverageIgnoreStart
+ throw new \Error("Unknown watcher type");
+ // @codeCoverageIgnoreEnd
+ }
+ }
+
+ switch ($watcher->type) {
+ case Watcher::DELAY:
+ case Watcher::REPEAT:
+ \assert(\is_int($watcher->value));
+
+ $interval = \max(0, $watcher->expiration - $now);
+ $this->events[$id]->add($interval > 0 ? $interval / self::MILLISEC_PER_SEC : 0);
+ break;
+
+ case Watcher::SIGNAL:
+ $this->signals[$id] = $this->events[$id];
+ // no break
+
+ default:
+ /** @psalm-suppress TooFewArguments https://github.com/JetBrains/phpstorm-stubs/pull/763 */
+ $this->events[$id]->add();
+ break;
+ }
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return void
+ */
+ protected function deactivate(Watcher $watcher)
+ {
+ if (isset($this->events[$id = $watcher->id])) {
+ $this->events[$id]->del();
+
+ if ($watcher->type === Watcher::SIGNAL) {
+ unset($this->signals[$id]);
+ }
+ }
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Loop/Internal/TimerQueue.php b/lib/composer/amphp/amp/lib/Loop/Internal/TimerQueue.php
new file mode 100644
index 0000000000000..1e51de8ff3e14
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Loop/Internal/TimerQueue.php
@@ -0,0 +1,145 @@
+ $watcher
+ *
+ * @return void
+ */
+ public function insert(Watcher $watcher)
+ {
+ \assert($watcher->expiration !== null);
+ \assert(!isset($this->pointers[$watcher->id]));
+
+ $entry = new TimerQueueEntry($watcher, $watcher->expiration);
+
+ $node = \count($this->data);
+ $this->data[$node] = $entry;
+ $this->pointers[$watcher->id] = $node;
+
+ while ($node !== 0 && $entry->expiration < $this->data[$parent = ($node - 1) >> 1]->expiration) {
+ $temp = $this->data[$parent];
+ $this->data[$node] = $temp;
+ $this->pointers[$temp->watcher->id] = $node;
+
+ $this->data[$parent] = $entry;
+ $this->pointers[$watcher->id] = $parent;
+
+ $node = $parent;
+ }
+ }
+
+ /**
+ * Removes the given watcher from the queue. Time complexity: O(log(n)).
+ *
+ * @param Watcher $watcher
+ *
+ * @psalm-param Watcher $watcher
+ *
+ * @return void
+ */
+ public function remove(Watcher $watcher)
+ {
+ $id = $watcher->id;
+
+ if (!isset($this->pointers[$id])) {
+ return;
+ }
+
+ $this->removeAndRebuild($this->pointers[$id]);
+ }
+
+ /**
+ * Deletes and returns the Watcher on top of the heap if it has expired, otherwise null is returned.
+ * Time complexity: O(log(n)).
+ *
+ * @param int $now Current loop time.
+ *
+ * @return Watcher|null Expired watcher at the top of the heap or null if the watcher has not expired.
+ *
+ * @psalm-return Watcher|null
+ */
+ public function extract(int $now)
+ {
+ if (empty($this->data)) {
+ return null;
+ }
+
+ $data = $this->data[0];
+
+ if ($data->expiration > $now) {
+ return null;
+ }
+
+ $this->removeAndRebuild(0);
+
+ return $data->watcher;
+ }
+
+ /**
+ * Returns the expiration time value at the top of the heap. Time complexity: O(1).
+ *
+ * @return int|null Expiration time of the watcher at the top of the heap or null if the heap is empty.
+ */
+ public function peek()
+ {
+ return isset($this->data[0]) ? $this->data[0]->expiration : null;
+ }
+
+ /**
+ * @param int $node Remove the given node and then rebuild the data array from that node downward.
+ *
+ * @return void
+ */
+ private function removeAndRebuild(int $node)
+ {
+ $length = \count($this->data) - 1;
+ $id = $this->data[$node]->watcher->id;
+ $left = $this->data[$node] = $this->data[$length];
+ $this->pointers[$left->watcher->id] = $node;
+ unset($this->data[$length], $this->pointers[$id]);
+
+ while (($child = ($node << 1) + 1) < $length) {
+ if ($this->data[$child]->expiration < $this->data[$node]->expiration
+ && ($child + 1 >= $length || $this->data[$child]->expiration < $this->data[$child + 1]->expiration)
+ ) {
+ // Left child is less than parent and right child.
+ $swap = $child;
+ } elseif ($child + 1 < $length && $this->data[$child + 1]->expiration < $this->data[$node]->expiration) {
+ // Right child is less than parent and left child.
+ $swap = $child + 1;
+ } else { // Left and right child are greater than parent.
+ break;
+ }
+
+ $left = $this->data[$node];
+ $right = $this->data[$swap];
+
+ $this->data[$node] = $right;
+ $this->pointers[$right->watcher->id] = $node;
+
+ $this->data[$swap] = $left;
+ $this->pointers[$left->watcher->id] = $swap;
+
+ $node = $swap;
+ }
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Loop/Internal/TimerQueueEntry.php b/lib/composer/amphp/amp/lib/Loop/Internal/TimerQueueEntry.php
new file mode 100644
index 0000000000000..35f5a3d6fa34d
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Loop/Internal/TimerQueueEntry.php
@@ -0,0 +1,30 @@
+watcher = $watcher;
+ $this->expiration = $expiration;
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Loop/InvalidWatcherError.php b/lib/composer/amphp/amp/lib/Loop/InvalidWatcherError.php
new file mode 100644
index 0000000000000..4842ecf57de89
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Loop/InvalidWatcherError.php
@@ -0,0 +1,32 @@
+watcherId = $watcherId;
+ parent::__construct($message);
+ }
+
+ /**
+ * @return string The watcher identifier.
+ */
+ public function getWatcherId()
+ {
+ return $this->watcherId;
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Loop/NativeDriver.php b/lib/composer/amphp/amp/lib/Loop/NativeDriver.php
new file mode 100644
index 0000000000000..c5f880f31cdb7
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Loop/NativeDriver.php
@@ -0,0 +1,394 @@
+timerQueue = new Internal\TimerQueue;
+ $this->signalHandling = \extension_loaded("pcntl");
+ $this->nowOffset = getCurrentTime();
+ $this->now = \random_int(0, $this->nowOffset);
+ $this->nowOffset -= $this->now;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @throws \Amp\Loop\UnsupportedFeatureException If the pcntl extension is not available.
+ */
+ public function onSignal(int $signo, callable $callback, $data = null): string
+ {
+ if (!$this->signalHandling) {
+ throw new UnsupportedFeatureException("Signal handling requires the pcntl extension");
+ }
+
+ return parent::onSignal($signo, $callback, $data);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function now(): int
+ {
+ $this->now = getCurrentTime() - $this->nowOffset;
+
+ return $this->now;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getHandle()
+ {
+ return null;
+ }
+
+ /**
+ * @param bool $blocking
+ *
+ * @return void
+ *
+ * @throws \Throwable
+ */
+ protected function dispatch(bool $blocking)
+ {
+ $this->selectStreams(
+ $this->readStreams,
+ $this->writeStreams,
+ $blocking ? $this->getTimeout() : 0
+ );
+
+ $now = $this->now();
+
+ while ($watcher = $this->timerQueue->extract($now)) {
+ if ($watcher->type & Watcher::REPEAT) {
+ $watcher->enabled = false; // Trick base class into adding to enable queue when calling enable()
+ $this->enable($watcher->id);
+ } else {
+ $this->cancel($watcher->id);
+ }
+
+ try {
+ // Execute the timer.
+ $result = ($watcher->callback)($watcher->id, $watcher->data);
+
+ if ($result === null) {
+ continue;
+ }
+
+ if ($result instanceof \Generator) {
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ $this->error($exception);
+ }
+ }
+
+ if ($this->signalHandling) {
+ \pcntl_signal_dispatch();
+ }
+ }
+
+ /**
+ * @param resource[] $read
+ * @param resource[] $write
+ * @param int $timeout
+ *
+ * @return void
+ */
+ private function selectStreams(array $read, array $write, int $timeout)
+ {
+ $timeout /= self::MILLISEC_PER_SEC;
+
+ if (!empty($read) || !empty($write)) { // Use stream_select() if there are any streams in the loop.
+ if ($timeout >= 0) {
+ $seconds = (int) $timeout;
+ $microseconds = (int) (($timeout - $seconds) * self::MICROSEC_PER_SEC);
+ } else {
+ $seconds = null;
+ $microseconds = null;
+ }
+
+ $except = null;
+
+ // Error reporting suppressed since stream_select() emits an E_WARNING if it is interrupted by a signal.
+ if (!($result = @\stream_select($read, $write, $except, $seconds, $microseconds))) {
+ if ($result === 0) {
+ return;
+ }
+
+ $error = \error_get_last();
+
+ if (\strpos($error["message"] ?? '', "unable to select") !== 0) {
+ return;
+ }
+
+ $this->error(new \Exception($error["message"] ?? 'Unknown error during stream_select'));
+ }
+
+ foreach ($read as $stream) {
+ $streamId = (int) $stream;
+ if (!isset($this->readWatchers[$streamId])) {
+ continue; // All read watchers disabled.
+ }
+
+ foreach ($this->readWatchers[$streamId] as $watcher) {
+ if (!isset($this->readWatchers[$streamId][$watcher->id])) {
+ continue; // Watcher disabled by another IO watcher.
+ }
+
+ try {
+ $result = ($watcher->callback)($watcher->id, $stream, $watcher->data);
+
+ if ($result === null) {
+ continue;
+ }
+
+ if ($result instanceof \Generator) {
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ $this->error($exception);
+ }
+ }
+ }
+
+ \assert(\is_array($write)); // See https://github.com/vimeo/psalm/issues/3036
+
+ foreach ($write as $stream) {
+ $streamId = (int) $stream;
+ if (!isset($this->writeWatchers[$streamId])) {
+ continue; // All write watchers disabled.
+ }
+
+ foreach ($this->writeWatchers[$streamId] as $watcher) {
+ if (!isset($this->writeWatchers[$streamId][$watcher->id])) {
+ continue; // Watcher disabled by another IO watcher.
+ }
+
+ try {
+ $result = ($watcher->callback)($watcher->id, $stream, $watcher->data);
+
+ if ($result === null) {
+ continue;
+ }
+
+ if ($result instanceof \Generator) {
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ $this->error($exception);
+ }
+ }
+ }
+
+ return;
+ }
+
+ if ($timeout > 0) { // Otherwise sleep with usleep() if $timeout > 0.
+ \usleep((int) ($timeout * self::MICROSEC_PER_SEC));
+ }
+ }
+
+ /**
+ * @return int Milliseconds until next timer expires or -1 if there are no pending times.
+ */
+ private function getTimeout(): int
+ {
+ $expiration = $this->timerQueue->peek();
+
+ if ($expiration === null) {
+ return -1;
+ }
+
+ $expiration -= getCurrentTime() - $this->nowOffset;
+
+ return $expiration > 0 ? $expiration : 0;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return void
+ */
+ protected function activate(array $watchers)
+ {
+ foreach ($watchers as $watcher) {
+ switch ($watcher->type) {
+ case Watcher::READABLE:
+ \assert(\is_resource($watcher->value));
+
+ $streamId = (int) $watcher->value;
+ $this->readWatchers[$streamId][$watcher->id] = $watcher;
+ $this->readStreams[$streamId] = $watcher->value;
+ break;
+
+ case Watcher::WRITABLE:
+ \assert(\is_resource($watcher->value));
+
+ $streamId = (int) $watcher->value;
+ $this->writeWatchers[$streamId][$watcher->id] = $watcher;
+ $this->writeStreams[$streamId] = $watcher->value;
+ break;
+
+ case Watcher::DELAY:
+ case Watcher::REPEAT:
+ \assert(\is_int($watcher->value));
+ $this->timerQueue->insert($watcher);
+ break;
+
+ case Watcher::SIGNAL:
+ \assert(\is_int($watcher->value));
+
+ if (!isset($this->signalWatchers[$watcher->value])) {
+ if (!@\pcntl_signal($watcher->value, $this->callableFromInstanceMethod('handleSignal'))) {
+ $message = "Failed to register signal handler";
+ if ($error = \error_get_last()) {
+ $message .= \sprintf("; Errno: %d; %s", $error["type"], $error["message"]);
+ }
+ throw new \Error($message);
+ }
+ }
+
+ $this->signalWatchers[$watcher->value][$watcher->id] = $watcher;
+ break;
+
+ default:
+ // @codeCoverageIgnoreStart
+ throw new \Error("Unknown watcher type");
+ // @codeCoverageIgnoreEnd
+ }
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return void
+ */
+ protected function deactivate(Watcher $watcher)
+ {
+ switch ($watcher->type) {
+ case Watcher::READABLE:
+ $streamId = (int) $watcher->value;
+ unset($this->readWatchers[$streamId][$watcher->id]);
+ if (empty($this->readWatchers[$streamId])) {
+ unset($this->readWatchers[$streamId], $this->readStreams[$streamId]);
+ }
+ break;
+
+ case Watcher::WRITABLE:
+ $streamId = (int) $watcher->value;
+ unset($this->writeWatchers[$streamId][$watcher->id]);
+ if (empty($this->writeWatchers[$streamId])) {
+ unset($this->writeWatchers[$streamId], $this->writeStreams[$streamId]);
+ }
+ break;
+
+ case Watcher::DELAY:
+ case Watcher::REPEAT:
+ $this->timerQueue->remove($watcher);
+ break;
+
+ case Watcher::SIGNAL:
+ \assert(\is_int($watcher->value));
+
+ if (isset($this->signalWatchers[$watcher->value])) {
+ unset($this->signalWatchers[$watcher->value][$watcher->id]);
+
+ if (empty($this->signalWatchers[$watcher->value])) {
+ unset($this->signalWatchers[$watcher->value]);
+ @\pcntl_signal($watcher->value, \SIG_DFL);
+ }
+ }
+ break;
+
+ default:
+ // @codeCoverageIgnoreStart
+ throw new \Error("Unknown watcher type");
+ // @codeCoverageIgnoreEnd
+ }
+ }
+
+ /**
+ * @param int $signo
+ *
+ * @return void
+ */
+ private function handleSignal(int $signo)
+ {
+ foreach ($this->signalWatchers[$signo] as $watcher) {
+ if (!isset($this->signalWatchers[$signo][$watcher->id])) {
+ continue;
+ }
+
+ try {
+ $result = ($watcher->callback)($watcher->id, $signo, $watcher->data);
+
+ if ($result === null) {
+ continue;
+ }
+
+ if ($result instanceof \Generator) {
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ $this->error($exception);
+ }
+ }
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Loop/TracingDriver.php b/lib/composer/amphp/amp/lib/Loop/TracingDriver.php
new file mode 100644
index 0000000000000..7b787548dd16e
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Loop/TracingDriver.php
@@ -0,0 +1,251 @@
+driver = $driver;
+ }
+
+ public function run()
+ {
+ $this->driver->run();
+ }
+
+ public function stop()
+ {
+ $this->driver->stop();
+ }
+
+ public function defer(callable $callback, $data = null): string
+ {
+ $id = $this->driver->defer(function (...$args) use ($callback) {
+ $this->cancel($args[0]);
+ return $callback(...$args);
+ }, $data);
+
+ $this->creationTraces[$id] = formatStacktrace(\debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS));
+ $this->enabledWatchers[$id] = true;
+
+ return $id;
+ }
+
+ public function delay(int $delay, callable $callback, $data = null): string
+ {
+ $id = $this->driver->delay($delay, function (...$args) use ($callback) {
+ $this->cancel($args[0]);
+ return $callback(...$args);
+ }, $data);
+
+ $this->creationTraces[$id] = formatStacktrace(\debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS));
+ $this->enabledWatchers[$id] = true;
+
+ return $id;
+ }
+
+ public function repeat(int $interval, callable $callback, $data = null): string
+ {
+ $id = $this->driver->repeat($interval, $callback, $data);
+
+ $this->creationTraces[$id] = formatStacktrace(\debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS));
+ $this->enabledWatchers[$id] = true;
+
+ return $id;
+ }
+
+ public function onReadable($stream, callable $callback, $data = null): string
+ {
+ $id = $this->driver->onReadable($stream, $callback, $data);
+
+ $this->creationTraces[$id] = formatStacktrace(\debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS));
+ $this->enabledWatchers[$id] = true;
+
+ return $id;
+ }
+
+ public function onWritable($stream, callable $callback, $data = null): string
+ {
+ $id = $this->driver->onWritable($stream, $callback, $data);
+
+ $this->creationTraces[$id] = formatStacktrace(\debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS));
+ $this->enabledWatchers[$id] = true;
+
+ return $id;
+ }
+
+ public function onSignal(int $signo, callable $callback, $data = null): string
+ {
+ $id = $this->driver->onSignal($signo, $callback, $data);
+
+ $this->creationTraces[$id] = formatStacktrace(\debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS));
+ $this->enabledWatchers[$id] = true;
+
+ return $id;
+ }
+
+ public function enable(string $watcherId)
+ {
+ try {
+ $this->driver->enable($watcherId);
+ $this->enabledWatchers[$watcherId] = true;
+ } catch (InvalidWatcherError $e) {
+ throw new InvalidWatcherError(
+ $watcherId,
+ $e->getMessage() . "\r\n\r\n" . $this->getTraces($watcherId)
+ );
+ }
+ }
+
+ public function cancel(string $watcherId)
+ {
+ $this->driver->cancel($watcherId);
+
+ if (!isset($this->cancelTraces[$watcherId])) {
+ $this->cancelTraces[$watcherId] = formatStacktrace(\debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS));
+ }
+
+ unset($this->enabledWatchers[$watcherId], $this->unreferencedWatchers[$watcherId]);
+ }
+
+ public function disable(string $watcherId)
+ {
+ $this->driver->disable($watcherId);
+ unset($this->enabledWatchers[$watcherId]);
+ }
+
+ public function reference(string $watcherId)
+ {
+ try {
+ $this->driver->reference($watcherId);
+ unset($this->unreferencedWatchers[$watcherId]);
+ } catch (InvalidWatcherError $e) {
+ throw new InvalidWatcherError(
+ $watcherId,
+ $e->getMessage() . "\r\n\r\n" . $this->getTraces($watcherId)
+ );
+ }
+ }
+
+ public function unreference(string $watcherId)
+ {
+ $this->driver->unreference($watcherId);
+ $this->unreferencedWatchers[$watcherId] = true;
+ }
+
+ public function setErrorHandler(callable $callback = null)
+ {
+ return $this->driver->setErrorHandler($callback);
+ }
+
+ /** @inheritdoc */
+ public function getHandle()
+ {
+ $this->driver->getHandle();
+ }
+
+ public function dump(): string
+ {
+ $dump = "Enabled, referenced watchers keeping the loop running: ";
+
+ foreach ($this->enabledWatchers as $watcher => $_) {
+ if (isset($this->unreferencedWatchers[$watcher])) {
+ continue;
+ }
+
+ $dump .= "Watcher ID: " . $watcher . "\r\n";
+ $dump .= $this->getCreationTrace($watcher);
+ $dump .= "\r\n\r\n";
+ }
+
+ return \rtrim($dump);
+ }
+
+ public function getInfo(): array
+ {
+ return $this->driver->getInfo();
+ }
+
+ public function __debugInfo()
+ {
+ return $this->driver->__debugInfo();
+ }
+
+ public function now(): int
+ {
+ return $this->driver->now();
+ }
+
+ protected function error(\Throwable $exception)
+ {
+ $this->driver->error($exception);
+ }
+
+ /**
+ * @inheritdoc
+ *
+ * @return void
+ */
+ protected function activate(array $watchers)
+ {
+ // nothing to do in a decorator
+ }
+
+ /**
+ * @inheritdoc
+ *
+ * @return void
+ */
+ protected function dispatch(bool $blocking)
+ {
+ // nothing to do in a decorator
+ }
+
+ /**
+ * @inheritdoc
+ *
+ * @return void
+ */
+ protected function deactivate(Watcher $watcher)
+ {
+ // nothing to do in a decorator
+ }
+
+ private function getTraces(string $watcherId): string
+ {
+ return "Creation Trace:\r\n" . $this->getCreationTrace($watcherId) . "\r\n\r\n" .
+ "Cancellation Trace:\r\n" . $this->getCancelTrace($watcherId);
+ }
+
+ private function getCreationTrace(string $watcher): string
+ {
+ if (!isset($this->creationTraces[$watcher])) {
+ return 'No creation trace, yet.';
+ }
+
+ return $this->creationTraces[$watcher];
+ }
+
+ private function getCancelTrace(string $watcher): string
+ {
+ if (!isset($this->cancelTraces[$watcher])) {
+ return 'No cancellation trace, yet.';
+ }
+
+ return $this->cancelTraces[$watcher];
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Loop/UnsupportedFeatureException.php b/lib/composer/amphp/amp/lib/Loop/UnsupportedFeatureException.php
new file mode 100644
index 0000000000000..e767cbe176a9c
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Loop/UnsupportedFeatureException.php
@@ -0,0 +1,12 @@
+handle = \uv_loop_new();
+
+ /**
+ * @param $event
+ * @param $status
+ * @param $events
+ * @param $resource
+ *
+ * @return void
+ */
+ $this->ioCallback = function ($event, $status, $events, $resource) {
+ $watchers = $this->watchers[(int) $event];
+
+ switch ($status) {
+ case 0: // OK
+ break;
+
+ default: // Invoke the callback on errors, as this matches behavior with other loop back-ends.
+ // Re-enable watcher as libuv disables the watcher on non-zero status.
+ $flags = 0;
+ foreach ($watchers as $watcher) {
+ $flags |= $watcher->enabled ? $watcher->type : 0;
+ }
+ \uv_poll_start($event, $flags, $this->ioCallback);
+ break;
+ }
+
+ foreach ($watchers as $watcher) {
+ // $events is OR'ed with 4 to trigger watcher if no events are indicated (0) or on UV_DISCONNECT (4).
+ // http://docs.libuv.org/en/v1.x/poll.html
+ if (!($watcher->enabled && ($watcher->type & $events || ($events | 4) === 4))) {
+ continue;
+ }
+
+ try {
+ $result = ($watcher->callback)($watcher->id, $resource, $watcher->data);
+
+ if ($result === null) {
+ continue;
+ }
+
+ if ($result instanceof \Generator) {
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ $this->error($exception);
+ }
+ }
+ };
+
+ /**
+ * @param $event
+ *
+ * @return void
+ */
+ $this->timerCallback = function ($event) {
+ $watcher = $this->watchers[(int) $event][0];
+
+ if ($watcher->type & Watcher::DELAY) {
+ unset($this->events[$watcher->id], $this->watchers[(int) $event]); // Avoid call to uv_is_active().
+ $this->cancel($watcher->id); // Remove reference to watcher in parent.
+ } elseif ($watcher->value === 0) {
+ // Disable and re-enable so it's not executed repeatedly in the same tick
+ // See https://github.com/amphp/amp/issues/131
+ $this->disable($watcher->id);
+ $this->enable($watcher->id);
+ }
+
+ try {
+ $result = ($watcher->callback)($watcher->id, $watcher->data);
+
+ if ($result === null) {
+ return;
+ }
+
+ if ($result instanceof \Generator) {
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ $this->error($exception);
+ }
+ };
+
+ /**
+ * @param $event
+ * @param $signo
+ *
+ * @return void
+ */
+ $this->signalCallback = function ($event, $signo) {
+ $watcher = $this->watchers[(int) $event][0];
+
+ try {
+ $result = ($watcher->callback)($watcher->id, $signo, $watcher->data);
+
+ if ($result === null) {
+ return;
+ }
+
+ if ($result instanceof \Generator) {
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ $this->error($exception);
+ }
+ };
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function cancel(string $watcherId)
+ {
+ parent::cancel($watcherId);
+
+ if (!isset($this->events[$watcherId])) {
+ return;
+ }
+
+ $event = $this->events[$watcherId];
+ $eventId = (int) $event;
+
+ if (isset($this->watchers[$eventId][0])) { // All except IO watchers.
+ unset($this->watchers[$eventId]);
+ } elseif (isset($this->watchers[$eventId][$watcherId])) {
+ $watcher = $this->watchers[$eventId][$watcherId];
+ unset($this->watchers[$eventId][$watcherId]);
+
+ if (empty($this->watchers[$eventId])) {
+ unset($this->watchers[$eventId], $this->streams[(int) $watcher->value]);
+ }
+ }
+
+ unset($this->events[$watcherId]);
+ }
+
+ public static function isSupported(): bool
+ {
+ return \extension_loaded("uv");
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function now(): int
+ {
+ \uv_update_time($this->handle);
+
+ /** @psalm-suppress TooManyArguments */
+ return \uv_now($this->handle);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getHandle()
+ {
+ return $this->handle;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return void
+ */
+ protected function dispatch(bool $blocking)
+ {
+ /** @psalm-suppress TooManyArguments */
+ \uv_run($this->handle, $blocking ? \UV::RUN_ONCE : \UV::RUN_NOWAIT);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return void
+ */
+ protected function activate(array $watchers)
+ {
+ $now = $this->now();
+
+ foreach ($watchers as $watcher) {
+ $id = $watcher->id;
+
+ switch ($watcher->type) {
+ case Watcher::READABLE:
+ case Watcher::WRITABLE:
+ \assert(\is_resource($watcher->value));
+
+ $streamId = (int) $watcher->value;
+
+ if (isset($this->streams[$streamId])) {
+ $event = $this->streams[$streamId];
+ } elseif (isset($this->events[$id])) {
+ $event = $this->streams[$streamId] = $this->events[$id];
+ } else {
+ /** @psalm-suppress UndefinedFunction */
+ $event = $this->streams[$streamId] = \uv_poll_init_socket($this->handle, $watcher->value);
+ }
+
+ $eventId = (int) $event;
+ $this->events[$id] = $event;
+ $this->watchers[$eventId][$id] = $watcher;
+
+ $flags = 0;
+ foreach ($this->watchers[$eventId] as $w) {
+ $flags |= $w->enabled ? $w->type : 0;
+ }
+ \uv_poll_start($event, $flags, $this->ioCallback);
+ break;
+
+ case Watcher::DELAY:
+ case Watcher::REPEAT:
+ \assert(\is_int($watcher->value));
+
+ if (isset($this->events[$id])) {
+ $event = $this->events[$id];
+ } else {
+ $event = $this->events[$id] = \uv_timer_init($this->handle);
+ }
+
+ $this->watchers[(int) $event] = [$watcher];
+
+ \uv_timer_start(
+ $event,
+ \max(0, $watcher->expiration - $now),
+ ($watcher->type & Watcher::REPEAT) ? $watcher->value : 0,
+ $this->timerCallback
+ );
+ break;
+
+ case Watcher::SIGNAL:
+ \assert(\is_int($watcher->value));
+
+ if (isset($this->events[$id])) {
+ $event = $this->events[$id];
+ } else {
+ /** @psalm-suppress UndefinedFunction */
+ $event = $this->events[$id] = \uv_signal_init($this->handle);
+ }
+
+ $this->watchers[(int) $event] = [$watcher];
+
+ /** @psalm-suppress UndefinedFunction */
+ \uv_signal_start($event, $this->signalCallback, $watcher->value);
+ break;
+
+ default:
+ // @codeCoverageIgnoreStart
+ throw new \Error("Unknown watcher type");
+ // @codeCoverageIgnoreEnd
+ }
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return void
+ */
+ protected function deactivate(Watcher $watcher)
+ {
+ $id = $watcher->id;
+
+ if (!isset($this->events[$id])) {
+ return;
+ }
+
+ $event = $this->events[$id];
+
+ if (!\uv_is_active($event)) {
+ return;
+ }
+
+ switch ($watcher->type) {
+ case Watcher::READABLE:
+ case Watcher::WRITABLE:
+ $flags = 0;
+ foreach ($this->watchers[(int) $event] as $w) {
+ $flags |= $w->enabled ? $w->type : 0;
+ }
+
+ if ($flags) {
+ \uv_poll_start($event, $flags, $this->ioCallback);
+ } else {
+ \uv_poll_stop($event);
+ }
+ break;
+
+ case Watcher::DELAY:
+ case Watcher::REPEAT:
+ \uv_timer_stop($event);
+ break;
+
+ case Watcher::SIGNAL:
+ \uv_signal_stop($event);
+ break;
+
+ default:
+ // @codeCoverageIgnoreStart
+ throw new \Error("Unknown watcher type");
+ // @codeCoverageIgnoreEnd
+ }
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Loop/Watcher.php b/lib/composer/amphp/amp/lib/Loop/Watcher.php
new file mode 100644
index 0000000000000..4d16f9b9c098f
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Loop/Watcher.php
@@ -0,0 +1,57 @@
+reasons = $reasons;
+ }
+
+ /**
+ * @return \Throwable[]
+ */
+ public function getReasons(): array
+ {
+ return $this->reasons;
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/NullCancellationToken.php b/lib/composer/amphp/amp/lib/NullCancellationToken.php
new file mode 100644
index 0000000000000..66faeba13a6ea
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/NullCancellationToken.php
@@ -0,0 +1,53 @@
+throwIfRequested();
+ * }
+ * ```
+ *
+ * potentially multiple times, it allows writing
+ *
+ * ```php
+ * $token = $token ?? new NullCancellationToken;
+ *
+ * // ...
+ *
+ * $token->throwIfRequested();
+ * ```
+ *
+ * instead.
+ */
+final class NullCancellationToken implements CancellationToken
+{
+ /** @inheritdoc */
+ public function subscribe(callable $callback): string
+ {
+ return "null-token";
+ }
+
+ /** @inheritdoc */
+ public function unsubscribe(string $id)
+ {
+ // nothing to do
+ }
+
+ /** @inheritdoc */
+ public function isRequested(): bool
+ {
+ return false;
+ }
+
+ /** @inheritdoc */
+ public function throwIfRequested()
+ {
+ // nothing to do
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Producer.php b/lib/composer/amphp/amp/lib/Producer.php
new file mode 100644
index 0000000000000..35b88c912fc4a
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Producer.php
@@ -0,0 +1,43 @@
+
+ */
+final class Producer implements Iterator
+{
+ /**
+ * @use Internal\Producer
+ */
+ use CallableMaker, Internal\Producer;
+
+ /**
+ * @param callable(callable(TValue):Promise):\Generator $producer
+ *
+ * @throws \Error Thrown if the callable does not return a Generator.
+ */
+ public function __construct(callable $producer)
+ {
+ $result = $producer($this->callableFromInstanceMethod("emit"));
+
+ if (!$result instanceof \Generator) {
+ throw new \Error("The callable did not return a Generator");
+ }
+
+ $coroutine = new Coroutine($result);
+ $coroutine->onResolve(function ($exception) {
+ if ($this->complete) {
+ return;
+ }
+
+ if ($exception) {
+ $this->fail($exception);
+ return;
+ }
+
+ $this->complete();
+ });
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Promise.php b/lib/composer/amphp/amp/lib/Promise.php
new file mode 100644
index 0000000000000..2f7e824e98472
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Promise.php
@@ -0,0 +1,37 @@
+, mixed,
+ * mixed>|null) | callable(\Throwable|null, mixed): void $onResolved
+ *
+ * @return void
+ */
+ public function onResolve(callable $onResolved);
+}
diff --git a/lib/composer/amphp/amp/lib/Struct.php b/lib/composer/amphp/amp/lib/Struct.php
new file mode 100644
index 0000000000000..0cb2563c6acdf
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Struct.php
@@ -0,0 +1,78 @@
+generateStructPropertyError($property)
+ );
+ }
+
+ /**
+ * @param string $property
+ * @param mixed $value
+ *
+ * @psalm-return no-return
+ */
+ public function __set(string $property, $value)
+ {
+ throw new \Error(
+ $this->generateStructPropertyError($property)
+ );
+ }
+
+ private function generateStructPropertyError(string $property): string
+ {
+ $suggestion = $this->suggestPropertyName($property);
+ $suggestStr = ($suggestion == "") ? "" : " ... did you mean \"{$suggestion}?\"";
+
+ return \sprintf(
+ "%s property \"%s\" does not exist%s",
+ \str_replace("\0", "@", \get_class($this)), // Handle anonymous class names.
+ $property,
+ $suggestStr
+ );
+ }
+
+ private function suggestPropertyName(string $badProperty): string
+ {
+ $badProperty = \strtolower($badProperty);
+ $bestMatch = "";
+ $bestMatchPercentage = 0;
+
+ /** @psalm-suppress RawObjectIteration */
+ foreach ($this as $property => $value) {
+ // Never suggest properties that begin with an underscore
+ if ($property[0] === "_") {
+ continue;
+ }
+ \similar_text($badProperty, \strtolower($property), $byRefPercentage);
+ if ($byRefPercentage > $bestMatchPercentage) {
+ $bestMatchPercentage = $byRefPercentage;
+ $bestMatch = $property;
+ }
+ }
+
+ return ($bestMatchPercentage >= $this->__propertySuggestThreshold) ? $bestMatch : "";
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/Success.php b/lib/composer/amphp/amp/lib/Success.php
new file mode 100644
index 0000000000000..1817c5a2c52ba
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/Success.php
@@ -0,0 +1,60 @@
+
+ */
+final class Success implements Promise
+{
+ /** @var mixed */
+ private $value;
+
+ /**
+ * @param mixed $value Anything other than a Promise object.
+ *
+ * @psalm-param TValue $value
+ *
+ * @throws \Error If a promise is given as the value.
+ */
+ public function __construct($value = null)
+ {
+ if ($value instanceof Promise || $value instanceof ReactPromise) {
+ throw new \Error("Cannot use a promise as success value");
+ }
+
+ $this->value = $value;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function onResolve(callable $onResolved)
+ {
+ try {
+ $result = $onResolved(null, $this->value);
+
+ if ($result === null) {
+ return;
+ }
+
+ if ($result instanceof \Generator) {
+ $result = new Coroutine($result);
+ }
+
+ if ($result instanceof Promise || $result instanceof ReactPromise) {
+ Promise\rethrow($result);
+ }
+ } catch (\Throwable $exception) {
+ Loop::defer(static function () use ($exception) {
+ throw $exception;
+ });
+ }
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/TimeoutCancellationToken.php b/lib/composer/amphp/amp/lib/TimeoutCancellationToken.php
new file mode 100644
index 0000000000000..4c46ceb0693d3
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/TimeoutCancellationToken.php
@@ -0,0 +1,75 @@
+token = $source->getToken();
+
+ $trace = \debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS);
+ $this->watcher = Loop::delay($timeout, static function () use ($source, $message, $trace) {
+ $trace = formatStacktrace($trace);
+ $source->cancel(new TimeoutException("$message\r\nTimeoutCancellationToken was created here:\r\n$trace"));
+ });
+
+ Loop::unreference($this->watcher);
+ }
+
+ /**
+ * Cancels the delay watcher.
+ */
+ public function __destruct()
+ {
+ Loop::cancel($this->watcher);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function subscribe(callable $callback): string
+ {
+ return $this->token->subscribe($callback);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function unsubscribe(string $id)
+ {
+ $this->token->unsubscribe($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function isRequested(): bool
+ {
+ return $this->token->isRequested();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function throwIfRequested()
+ {
+ $this->token->throwIfRequested();
+ }
+}
diff --git a/lib/composer/amphp/amp/lib/TimeoutException.php b/lib/composer/amphp/amp/lib/TimeoutException.php
new file mode 100644
index 0000000000000..dc7fba9ed816f
--- /dev/null
+++ b/lib/composer/amphp/amp/lib/TimeoutException.php
@@ -0,0 +1,19 @@
+
+ * @template T as TReturn|Promise|\Generator
+ *
+ * @formatter:off
+ *
+ * @param callable(...mixed): T $callback
+ *
+ * @return callable
+ * @psalm-return (T is Promise ? (callable(mixed...): Promise) : (T is \Generator ? (TGenerator is Promise ? (callable(mixed...): Promise) : (callable(mixed...): Promise)) : (callable(mixed...): Promise)))
+ *
+ * @formatter:on
+ *
+ * @see asyncCoroutine()
+ *
+ * @psalm-suppress InvalidReturnType
+ */
+ function coroutine(callable $callback): callable
+ {
+ /** @psalm-suppress InvalidReturnStatement */
+ return static function (...$args) use ($callback): Promise {
+ return call($callback, ...$args);
+ };
+ }
+
+ /**
+ * Returns a new function that wraps $callback in a promise/coroutine-aware function that automatically runs
+ * Generators as coroutines. The returned function always returns void when invoked. Errors are forwarded to the
+ * loop's error handler using `Amp\Promise\rethrow()`.
+ *
+ * Use this function to create a coroutine-aware callable for a non-promise-aware callback caller.
+ *
+ * @param callable(...mixed): mixed $callback
+ *
+ * @return callable
+ * @psalm-return callable(mixed...): void
+ *
+ * @see coroutine()
+ */
+ function asyncCoroutine(callable $callback): callable
+ {
+ return static function (...$args) use ($callback) {
+ Promise\rethrow(call($callback, ...$args));
+ };
+ }
+
+ /**
+ * Calls the given function, always returning a promise. If the function returns a Generator, it will be run as a
+ * coroutine. If the function throws, a failed promise will be returned.
+ *
+ * @template TReturn
+ * @template TPromise
+ * @template TGeneratorReturn
+ * @template TGeneratorPromise
+ *
+ * @template TGenerator as TGeneratorReturn|Promise
+ * @template T as TReturn|Promise|\Generator
+ *
+ * @formatter:off
+ *
+ * @param callable(...mixed): T $callback
+ * @param mixed ...$args Arguments to pass to the function.
+ *
+ * @return Promise
+ * @psalm-return (T is Promise ? Promise : (T is \Generator ? (TGenerator is Promise ? Promise : Promise) : Promise))
+ *
+ * @formatter:on
+ */
+ function call(callable $callback, ...$args): Promise
+ {
+ try {
+ $result = $callback(...$args);
+ } catch (\Throwable $exception) {
+ return new Failure($exception);
+ }
+
+ if ($result instanceof \Generator) {
+ return new Coroutine($result);
+ }
+
+ if ($result instanceof Promise) {
+ return $result;
+ }
+
+ if ($result instanceof ReactPromise) {
+ return Promise\adapt($result);
+ }
+
+ return new Success($result);
+ }
+
+ /**
+ * Calls the given function. If the function returns a Generator, it will be run as a coroutine. If the function
+ * throws or returns a failing promise, the failure is forwarded to the loop error handler.
+ *
+ * @param callable(...mixed): mixed $callback
+ * @param mixed ...$args Arguments to pass to the function.
+ *
+ * @return void
+ */
+ function asyncCall(callable $callback, ...$args)
+ {
+ Promise\rethrow(call($callback, ...$args));
+ }
+
+ /**
+ * Sleeps for the specified number of milliseconds.
+ *
+ * @param int $milliseconds
+ *
+ * @return Delayed
+ */
+ function delay(int $milliseconds): Delayed
+ {
+ return new Delayed($milliseconds);
+ }
+
+ /**
+ * Returns the current time relative to an arbitrary point in time.
+ *
+ * @return int Time in milliseconds.
+ */
+ function getCurrentTime(): int
+ {
+ return Internal\getCurrentTime();
+ }
+}
+
+namespace Amp\Promise
+{
+
+ use Amp\Deferred;
+ use Amp\Loop;
+ use Amp\MultiReasonException;
+ use Amp\Promise;
+ use Amp\Success;
+ use Amp\TimeoutException;
+ use React\Promise\PromiseInterface as ReactPromise;
+ use function Amp\call;
+ use function Amp\Internal\createTypeError;
+
+ /**
+ * Registers a callback that will forward the failure reason to the event loop's error handler if the promise fails.
+ *
+ * Use this function if you neither return the promise nor handle a possible error yourself to prevent errors from
+ * going entirely unnoticed.
+ *
+ * @param Promise|ReactPromise $promise Promise to register the handler on.
+ *
+ * @return void
+ * @throws \TypeError If $promise is not an instance of \Amp\Promise or \React\Promise\PromiseInterface.
+ *
+ */
+ function rethrow($promise)
+ {
+ if (!$promise instanceof Promise) {
+ if ($promise instanceof ReactPromise) {
+ $promise = adapt($promise);
+ } else {
+ throw createTypeError([Promise::class, ReactPromise::class], $promise);
+ }
+ }
+
+ $promise->onResolve(static function ($exception) {
+ if ($exception) {
+ throw $exception;
+ }
+ });
+ }
+
+ /**
+ * Runs the event loop until the promise is resolved. Should not be called within a running event loop.
+ *
+ * Use this function only in synchronous contexts to wait for an asynchronous operation. Use coroutines and yield to
+ * await promise resolution in a fully asynchronous application instead.
+ *
+ * @template TPromise
+ * @template T as Promise|ReactPromise
+ *
+ * @param Promise|ReactPromise $promise Promise to wait for.
+ *
+ * @return mixed Promise success value.
+ *
+ * @psalm-param T $promise
+ * @psalm-return (T is Promise ? TPromise : mixed)
+ *
+ * @throws \TypeError If $promise is not an instance of \Amp\Promise or \React\Promise\PromiseInterface.
+ * @throws \Error If the event loop stopped without the $promise being resolved.
+ * @throws \Throwable Promise failure reason.
+ */
+ function wait($promise)
+ {
+ if (!$promise instanceof Promise) {
+ if ($promise instanceof ReactPromise) {
+ $promise = adapt($promise);
+ } else {
+ throw createTypeError([Promise::class, ReactPromise::class], $promise);
+ }
+ }
+
+ $resolved = false;
+
+ try {
+ Loop::run(function () use (&$resolved, &$value, &$exception, $promise) {
+ $promise->onResolve(function ($e, $v) use (&$resolved, &$value, &$exception) {
+ Loop::stop();
+ $resolved = true;
+ $exception = $e;
+ $value = $v;
+ });
+ });
+ } catch (\Throwable $throwable) {
+ throw new \Error("Loop exceptionally stopped without resolving the promise", 0, $throwable);
+ }
+
+ if (!$resolved) {
+ throw new \Error("Loop stopped without resolving the promise");
+ }
+
+ if ($exception) {
+ throw $exception;
+ }
+
+ return $value;
+ }
+
+ /**
+ * Creates an artificial timeout for any `Promise`.
+ *
+ * If the timeout expires before the promise is resolved, the returned promise fails with an instance of
+ * `Amp\TimeoutException`.
+ *
+ * @template TReturn
+ *
+ * @param Promise|ReactPromise $promise Promise to which the timeout is applied.
+ * @param int $timeout Timeout in milliseconds.
+ *
+ * @return Promise
+ *
+ * @throws \TypeError If $promise is not an instance of \Amp\Promise or \React\Promise\PromiseInterface.
+ */
+ function timeout($promise, int $timeout): Promise
+ {
+ if (!$promise instanceof Promise) {
+ if ($promise instanceof ReactPromise) {
+ $promise = adapt($promise);
+ } else {
+ throw createTypeError([Promise::class, ReactPromise::class], $promise);
+ }
+ }
+
+ $deferred = new Deferred;
+
+ $watcher = Loop::delay($timeout, static function () use (&$deferred) {
+ $temp = $deferred; // prevent double resolve
+ $deferred = null;
+ $temp->fail(new TimeoutException);
+ });
+ Loop::unreference($watcher);
+
+ $promise->onResolve(function () use (&$deferred, $promise, $watcher) {
+ if ($deferred !== null) {
+ Loop::cancel($watcher);
+ $deferred->resolve($promise);
+ }
+ });
+
+ return $deferred->promise();
+ }
+
+ /**
+ * Creates an artificial timeout for any `Promise`.
+ *
+ * If the promise is resolved before the timeout expires, the result is returned
+ *
+ * If the timeout expires before the promise is resolved, a default value is returned
+ *
+ * @template TReturn
+ *
+ * @param Promise|ReactPromise $promise Promise to which the timeout is applied.
+ * @param int $timeout Timeout in milliseconds.
+ * @param TReturn $default
+ *
+ * @return Promise
+ *
+ * @throws \TypeError If $promise is not an instance of \Amp\Promise or \React\Promise\PromiseInterface.
+ */
+ function timeoutWithDefault($promise, int $timeout, $default = null): Promise
+ {
+ $promise = timeout($promise, $timeout);
+
+ return call(static function () use ($promise, $default) {
+ try {
+ return yield $promise;
+ } catch (TimeoutException $exception) {
+ return $default;
+ }
+ });
+ }
+
+ /**
+ * Adapts any object with a done(callable $onFulfilled, callable $onRejected) or then(callable $onFulfilled,
+ * callable $onRejected) method to a promise usable by components depending on placeholders implementing
+ * \AsyncInterop\Promise.
+ *
+ * @param object $promise Object with a done() or then() method.
+ *
+ * @return Promise Promise resolved by the $thenable object.
+ *
+ * @throws \Error If the provided object does not have a then() method.
+ */
+ function adapt($promise): Promise
+ {
+ $deferred = new Deferred;
+
+ if (\method_exists($promise, 'done')) {
+ $promise->done([$deferred, 'resolve'], [$deferred, 'fail']);
+ } elseif (\method_exists($promise, 'then')) {
+ $promise->then([$deferred, 'resolve'], [$deferred, 'fail']);
+ } else {
+ throw new \Error("Object must have a 'then' or 'done' method");
+ }
+
+ return $deferred->promise();
+ }
+
+ /**
+ * Returns a promise that is resolved when all promises are resolved. The returned promise will not fail.
+ * Returned promise succeeds with a two-item array delineating successful and failed promise results,
+ * with keys identical and corresponding to the original given array.
+ *
+ * This function is the same as some() with the notable exception that it will never fail even
+ * if all promises in the array resolve unsuccessfully.
+ *
+ * @param Promise[]|ReactPromise[] $promises
+ *
+ * @return Promise
+ *
+ * @throws \Error If a non-Promise is in the array.
+ */
+ function any(array $promises): Promise
+ {
+ return some($promises, 0);
+ }
+
+ /**
+ * Returns a promise that succeeds when all promises succeed, and fails if any promise fails. Returned
+ * promise succeeds with an array of values used to succeed each contained promise, with keys corresponding to
+ * the array of promises.
+ *
+ * @param Promise[]|ReactPromise[] $promises Array of only promises.
+ *
+ * @return Promise
+ *
+ * @throws \Error If a non-Promise is in the array.
+ *
+ * @template TValue
+ *
+ * @psalm-param array|ReactPromise> $promises
+ * @psalm-assert array|ReactPromise> $promises $promises
+ * @psalm-return Promise>
+ */
+ function all(array $promises): Promise
+ {
+ if (empty($promises)) {
+ return new Success([]);
+ }
+
+ $deferred = new Deferred;
+ $result = $deferred->promise();
+
+ $pending = \count($promises);
+ $values = [];
+
+ foreach ($promises as $key => $promise) {
+ if ($promise instanceof ReactPromise) {
+ $promise = adapt($promise);
+ } elseif (!$promise instanceof Promise) {
+ throw createTypeError([Promise::class, ReactPromise::class], $promise);
+ }
+
+ $values[$key] = null; // add entry to array to preserve order
+ $promise->onResolve(function ($exception, $value) use (&$deferred, &$values, &$pending, $key) {
+ if ($pending === 0) {
+ return;
+ }
+
+ if ($exception) {
+ $pending = 0;
+ $deferred->fail($exception);
+ $deferred = null;
+ return;
+ }
+
+ $values[$key] = $value;
+ if (0 === --$pending) {
+ $deferred->resolve($values);
+ }
+ });
+ }
+
+ return $result;
+ }
+
+ /**
+ * Returns a promise that succeeds when the first promise succeeds, and fails only if all promises fail.
+ *
+ * @param Promise[]|ReactPromise[] $promises Array of only promises.
+ *
+ * @return Promise
+ *
+ * @throws \Error If the array is empty or a non-Promise is in the array.
+ */
+ function first(array $promises): Promise
+ {
+ if (empty($promises)) {
+ throw new \Error("No promises provided");
+ }
+
+ $deferred = new Deferred;
+ $result = $deferred->promise();
+
+ $pending = \count($promises);
+ $exceptions = [];
+
+ foreach ($promises as $key => $promise) {
+ if ($promise instanceof ReactPromise) {
+ $promise = adapt($promise);
+ } elseif (!$promise instanceof Promise) {
+ throw createTypeError([Promise::class, ReactPromise::class], $promise);
+ }
+
+ $exceptions[$key] = null; // add entry to array to preserve order
+ $promise->onResolve(function ($error, $value) use (&$deferred, &$exceptions, &$pending, $key) {
+ if ($pending === 0) {
+ return;
+ }
+
+ if (!$error) {
+ $pending = 0;
+ $deferred->resolve($value);
+ $deferred = null;
+ return;
+ }
+
+ $exceptions[$key] = $error;
+ if (0 === --$pending) {
+ $deferred->fail(new MultiReasonException($exceptions));
+ }
+ });
+ }
+
+ return $result;
+ }
+
+ /**
+ * Resolves with a two-item array delineating successful and failed Promise results.
+ *
+ * The returned promise will only fail if the given number of required promises fail.
+ *
+ * @param Promise[]|ReactPromise[] $promises Array of only promises.
+ * @param int $required Number of promises that must succeed for the
+ * returned promise to succeed.
+ *
+ * @return Promise
+ *
+ * @throws \Error If a non-Promise is in the array.
+ */
+ function some(array $promises, int $required = 1): Promise
+ {
+ if ($required < 0) {
+ throw new \Error("Number of promises required must be non-negative");
+ }
+
+ $pending = \count($promises);
+
+ if ($required > $pending) {
+ throw new \Error("Too few promises provided");
+ }
+
+ if (empty($promises)) {
+ return new Success([[], []]);
+ }
+
+ $deferred = new Deferred;
+ $result = $deferred->promise();
+ $values = [];
+ $exceptions = [];
+
+ foreach ($promises as $key => $promise) {
+ if ($promise instanceof ReactPromise) {
+ $promise = adapt($promise);
+ } elseif (!$promise instanceof Promise) {
+ throw createTypeError([Promise::class, ReactPromise::class], $promise);
+ }
+
+ $values[$key] = $exceptions[$key] = null; // add entry to arrays to preserve order
+ $promise->onResolve(static function ($exception, $value) use (
+ &$values,
+ &$exceptions,
+ &$pending,
+ $key,
+ $required,
+ $deferred
+ ) {
+ if ($exception) {
+ $exceptions[$key] = $exception;
+ unset($values[$key]);
+ } else {
+ $values[$key] = $value;
+ unset($exceptions[$key]);
+ }
+
+ if (0 === --$pending) {
+ if (\count($values) < $required) {
+ $deferred->fail(new MultiReasonException($exceptions));
+ } else {
+ $deferred->resolve([$exceptions, $values]);
+ }
+ }
+ });
+ }
+
+ return $result;
+ }
+
+ /**
+ * Wraps a promise into another promise, altering the exception or result.
+ *
+ * @param Promise|ReactPromise $promise
+ * @param callable $callback
+ *
+ * @return Promise
+ */
+ function wrap($promise, callable $callback): Promise
+ {
+ if ($promise instanceof ReactPromise) {
+ $promise = adapt($promise);
+ } elseif (!$promise instanceof Promise) {
+ throw createTypeError([Promise::class, ReactPromise::class], $promise);
+ }
+
+ $deferred = new Deferred();
+
+ $promise->onResolve(static function (\Throwable $exception = null, $result) use ($deferred, $callback) {
+ try {
+ $result = $callback($exception, $result);
+ } catch (\Throwable $exception) {
+ $deferred->fail($exception);
+
+ return;
+ }
+
+ $deferred->resolve($result);
+ });
+
+ return $deferred->promise();
+ }
+}
+
+namespace Amp\Iterator
+{
+
+ use Amp\Delayed;
+ use Amp\Emitter;
+ use Amp\Iterator;
+ use Amp\Producer;
+ use Amp\Promise;
+ use function Amp\call;
+ use function Amp\coroutine;
+ use function Amp\Internal\createTypeError;
+
+ /**
+ * Creates an iterator from the given iterable, emitting the each value. The iterable may contain promises. If any
+ * promise fails, the iterator will fail with the same reason.
+ *
+ * @param array|\Traversable $iterable Elements to emit.
+ * @param int $delay Delay between element emissions in milliseconds.
+ *
+ * @return Iterator
+ *
+ * @throws \TypeError If the argument is not an array or instance of \Traversable.
+ */
+ function fromIterable(/* iterable */
+ $iterable,
+ int $delay = 0
+ ): Iterator {
+ if (!$iterable instanceof \Traversable && !\is_array($iterable)) {
+ throw createTypeError(["array", "Traversable"], $iterable);
+ }
+
+ if ($delay) {
+ return new Producer(static function (callable $emit) use ($iterable, $delay) {
+ foreach ($iterable as $value) {
+ yield new Delayed($delay);
+ yield $emit($value);
+ }
+ });
+ }
+
+ return new Producer(static function (callable $emit) use ($iterable) {
+ foreach ($iterable as $value) {
+ yield $emit($value);
+ }
+ });
+ }
+
+ /**
+ * @template TValue
+ * @template TReturn
+ *
+ * @param Iterator $iterator
+ * @param callable (TValue $value): TReturn $onEmit
+ *
+ * @return Iterator
+ */
+ function map(Iterator $iterator, callable $onEmit): Iterator
+ {
+ return new Producer(static function (callable $emit) use ($iterator, $onEmit) {
+ while (yield $iterator->advance()) {
+ yield $emit($onEmit($iterator->getCurrent()));
+ }
+ });
+ }
+
+ /**
+ * @template TValue
+ *
+ * @param Iterator $iterator
+ * @param callable(TValue $value):bool $filter
+ *
+ * @return Iterator
+ */
+ function filter(Iterator $iterator, callable $filter): Iterator
+ {
+ return new Producer(static function (callable $emit) use ($iterator, $filter) {
+ while (yield $iterator->advance()) {
+ if ($filter($iterator->getCurrent())) {
+ yield $emit($iterator->getCurrent());
+ }
+ }
+ });
+ }
+
+ /**
+ * Creates an iterator that emits values emitted from any iterator in the array of iterators.
+ *
+ * @param Iterator[] $iterators
+ *
+ * @return Iterator
+ */
+ function merge(array $iterators): Iterator
+ {
+ $emitter = new Emitter;
+ $result = $emitter->iterate();
+
+ $coroutine = coroutine(static function (Iterator $iterator) use (&$emitter) {
+ while ((yield $iterator->advance()) && $emitter !== null) {
+ yield $emitter->emit($iterator->getCurrent());
+ }
+ });
+
+ $coroutines = [];
+ foreach ($iterators as $iterator) {
+ if (!$iterator instanceof Iterator) {
+ throw createTypeError([Iterator::class], $iterator);
+ }
+
+ $coroutines[] = $coroutine($iterator);
+ }
+
+ Promise\all($coroutines)->onResolve(static function ($exception) use (&$emitter) {
+ if ($exception) {
+ $emitter->fail($exception);
+ $emitter = null;
+ } else {
+ $emitter->complete();
+ }
+ });
+
+ return $result;
+ }
+
+ /**
+ * Concatenates the given iterators into a single iterator, emitting values from a single iterator at a time. The
+ * prior iterator must complete before values are emitted from any subsequent iterators. Iterators are concatenated
+ * in the order given (iteration order of the array).
+ *
+ * @param Iterator[] $iterators
+ *
+ * @return Iterator
+ */
+ function concat(array $iterators): Iterator
+ {
+ foreach ($iterators as $iterator) {
+ if (!$iterator instanceof Iterator) {
+ throw createTypeError([Iterator::class], $iterator);
+ }
+ }
+
+ $emitter = new Emitter;
+ $previous = [];
+ $promise = Promise\all($previous);
+
+ $coroutine = coroutine(static function (Iterator $iterator, callable $emit) {
+ while (yield $iterator->advance()) {
+ yield $emit($iterator->getCurrent());
+ }
+ });
+
+ foreach ($iterators as $iterator) {
+ $emit = coroutine(static function ($value) use ($emitter, $promise) {
+ static $pending = true, $failed = false;
+
+ if ($failed) {
+ return;
+ }
+
+ if ($pending) {
+ try {
+ yield $promise;
+ $pending = false;
+ } catch (\Throwable $exception) {
+ $failed = true;
+ return; // Prior iterator failed.
+ }
+ }
+
+ yield $emitter->emit($value);
+ });
+ $previous[] = $coroutine($iterator, $emit);
+ $promise = Promise\all($previous);
+ }
+
+ $promise->onResolve(static function ($exception) use ($emitter) {
+ if ($exception) {
+ $emitter->fail($exception);
+ return;
+ }
+
+ $emitter->complete();
+ });
+
+ return $emitter->iterate();
+ }
+
+ /**
+ * Discards all remaining items and returns the number of discarded items.
+ *
+ * @template TValue
+ *
+ * @param Iterator $iterator
+ *
+ * @return Promise
+ *
+ * @psalm-param Iterator $iterator
+ * @psalm-return Promise
+ */
+ function discard(Iterator $iterator): Promise
+ {
+ return call(static function () use ($iterator): \Generator {
+ $count = 0;
+
+ while (yield $iterator->advance()) {
+ $count++;
+ }
+
+ return $count;
+ });
+ }
+
+ /**
+ * Collects all items from an iterator into an array.
+ *
+ * @template TValue
+ *
+ * @param Iterator $iterator
+ *
+ * @psalm-param Iterator $iterator
+ *
+ * @return Promise
+ * @psalm-return Promise>
+ */
+ function toArray(Iterator $iterator): Promise
+ {
+ return call(static function () use ($iterator) {
+ /** @psalm-var list $array */
+ $array = [];
+
+ while (yield $iterator->advance()) {
+ $array[] = $iterator->getCurrent();
+ }
+
+ return $array;
+ });
+ }
+}
diff --git a/lib/composer/amphp/amp/psalm.examples.xml b/lib/composer/amphp/amp/psalm.examples.xml
new file mode 100644
index 0000000000000..2ac9d74911774
--- /dev/null
+++ b/lib/composer/amphp/amp/psalm.examples.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
diff --git a/lib/composer/amphp/amp/psalm.xml b/lib/composer/amphp/amp/psalm.xml
new file mode 100644
index 0000000000000..ad5dd774f144f
--- /dev/null
+++ b/lib/composer/amphp/amp/psalm.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/composer/amphp/byte-stream/LICENSE b/lib/composer/amphp/byte-stream/LICENSE
new file mode 100644
index 0000000000000..b2f91e7cff7dd
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/LICENSE
@@ -0,0 +1,22 @@
+
+The MIT License (MIT)
+
+Copyright (c) 2016-2020 amphp
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/lib/composer/amphp/byte-stream/composer.json b/lib/composer/amphp/byte-stream/composer.json
new file mode 100644
index 0000000000000..0315674b9d6b1
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/composer.json
@@ -0,0 +1,58 @@
+{
+ "name": "amphp/byte-stream",
+ "homepage": "http://amphp.org/byte-stream",
+ "description": "A stream abstraction to make working with non-blocking I/O simple.",
+ "support": {
+ "issues": "https://github.com/amphp/byte-stream/issues",
+ "irc": "irc://irc.freenode.org/amphp"
+ },
+ "keywords": [
+ "stream",
+ "async",
+ "non-blocking",
+ "amp",
+ "amphp",
+ "io"
+ ],
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "require": {
+ "php": ">=7.1",
+ "amphp/amp": "^2"
+ },
+ "require-dev": {
+ "amphp/phpunit-util": "^1.4",
+ "phpunit/phpunit": "^6 || ^7 || ^8",
+ "friendsofphp/php-cs-fixer": "^2.3",
+ "amphp/php-cs-fixer-config": "dev-master",
+ "psalm/phar": "^3.11.4",
+ "jetbrains/phpstorm-stubs": "^2019.3"
+ },
+ "autoload": {
+ "psr-4": {
+ "Amp\\ByteStream\\": "lib"
+ },
+ "files": [
+ "lib/functions.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Amp\\ByteStream\\Test\\": "test"
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ }
+}
diff --git a/lib/composer/amphp/byte-stream/lib/Base64/Base64DecodingInputStream.php b/lib/composer/amphp/byte-stream/lib/Base64/Base64DecodingInputStream.php
new file mode 100644
index 0000000000000..294287d2447fc
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/lib/Base64/Base64DecodingInputStream.php
@@ -0,0 +1,65 @@
+source = $source;
+ }
+
+ public function read(): Promise
+ {
+ return call(function () {
+ if ($this->source === null) {
+ throw new StreamException('Failed to read stream chunk due to invalid base64 data');
+ }
+
+ $chunk = yield $this->source->read();
+ if ($chunk === null) {
+ if ($this->buffer === null) {
+ return null;
+ }
+
+ $chunk = \base64_decode($this->buffer, true);
+ if ($chunk === false) {
+ $this->source = null;
+ $this->buffer = null;
+
+ throw new StreamException('Failed to read stream chunk due to invalid base64 data');
+ }
+
+ $this->buffer = null;
+
+ return $chunk;
+ }
+
+ $this->buffer .= $chunk;
+
+ $length = \strlen($this->buffer);
+ $chunk = \base64_decode(\substr($this->buffer, 0, $length - $length % 4), true);
+ if ($chunk === false) {
+ $this->source = null;
+ $this->buffer = null;
+
+ throw new StreamException('Failed to read stream chunk due to invalid base64 data');
+ }
+
+ $this->buffer = \substr($this->buffer, $length - $length % 4);
+
+ return $chunk;
+ });
+ }
+}
diff --git a/lib/composer/amphp/byte-stream/lib/Base64/Base64DecodingOutputStream.php b/lib/composer/amphp/byte-stream/lib/Base64/Base64DecodingOutputStream.php
new file mode 100644
index 0000000000000..664d99d793855
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/lib/Base64/Base64DecodingOutputStream.php
@@ -0,0 +1,55 @@
+destination = $destination;
+ }
+
+ public function write(string $data): Promise
+ {
+ $this->buffer .= $data;
+
+ $length = \strlen($this->buffer);
+ $chunk = \base64_decode(\substr($this->buffer, 0, $length - $length % 4), true);
+ if ($chunk === false) {
+ return new Failure(new StreamException('Invalid base64 near offset ' . $this->offset));
+ }
+
+ $this->offset += $length - $length % 4;
+ $this->buffer = \substr($this->buffer, $length - $length % 4);
+
+ return $this->destination->write($chunk);
+ }
+
+ public function end(string $finalData = ""): Promise
+ {
+ $this->offset += \strlen($this->buffer);
+
+ $chunk = \base64_decode($this->buffer . $finalData, true);
+ if ($chunk === false) {
+ return new Failure(new StreamException('Invalid base64 near offset ' . $this->offset));
+ }
+
+ $this->buffer = '';
+
+ return $this->destination->end($chunk);
+ }
+}
diff --git a/lib/composer/amphp/byte-stream/lib/Base64/Base64EncodingInputStream.php b/lib/composer/amphp/byte-stream/lib/Base64/Base64EncodingInputStream.php
new file mode 100644
index 0000000000000..523af9d28bcc6
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/lib/Base64/Base64EncodingInputStream.php
@@ -0,0 +1,46 @@
+source = $source;
+ }
+
+ public function read(): Promise
+ {
+ return call(function () {
+ $chunk = yield $this->source->read();
+ if ($chunk === null) {
+ if ($this->buffer === null) {
+ return null;
+ }
+
+ $chunk = \base64_encode($this->buffer);
+ $this->buffer = null;
+
+ return $chunk;
+ }
+
+ $this->buffer .= $chunk;
+
+ $length = \strlen($this->buffer);
+ $chunk = \base64_encode(\substr($this->buffer, 0, $length - $length % 3));
+ $this->buffer = \substr($this->buffer, $length - $length % 3);
+
+ return $chunk;
+ });
+ }
+}
diff --git a/lib/composer/amphp/byte-stream/lib/Base64/Base64EncodingOutputStream.php b/lib/composer/amphp/byte-stream/lib/Base64/Base64EncodingOutputStream.php
new file mode 100644
index 0000000000000..e23d6f53b4af2
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/lib/Base64/Base64EncodingOutputStream.php
@@ -0,0 +1,39 @@
+destination = $destination;
+ }
+
+ public function write(string $data): Promise
+ {
+ $this->buffer .= $data;
+
+ $length = \strlen($this->buffer);
+ $chunk = \base64_encode(\substr($this->buffer, 0, $length - $length % 3));
+ $this->buffer = \substr($this->buffer, $length - $length % 3);
+
+ return $this->destination->write($chunk);
+ }
+
+ public function end(string $finalData = ""): Promise
+ {
+ $chunk = \base64_encode($this->buffer . $finalData);
+ $this->buffer = '';
+
+ return $this->destination->end($chunk);
+ }
+}
diff --git a/lib/composer/amphp/byte-stream/lib/ClosedException.php b/lib/composer/amphp/byte-stream/lib/ClosedException.php
new file mode 100644
index 0000000000000..17957a866e3f2
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/lib/ClosedException.php
@@ -0,0 +1,7 @@
+contents = $contents;
+ }
+
+ /**
+ * Reads data from the stream.
+ *
+ * @return Promise Resolves with the full contents or `null` if the stream has closed / already been consumed.
+ */
+ public function read(): Promise
+ {
+ if ($this->contents === null) {
+ return new Success;
+ }
+
+ $promise = new Success($this->contents);
+ $this->contents = null;
+
+ return $promise;
+ }
+}
diff --git a/lib/composer/amphp/byte-stream/lib/InputStream.php b/lib/composer/amphp/byte-stream/lib/InputStream.php
new file mode 100644
index 0000000000000..4c0b9e8f5986f
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/lib/InputStream.php
@@ -0,0 +1,38 @@
+read()) !== null) {
+ * $buffer .= $chunk;
+ * }
+ *
+ * return $buffer;
+ * });
+ * }
+ * ```
+ */
+interface InputStream
+{
+ /**
+ * Reads data from the stream.
+ *
+ * @return Promise Resolves with a string when new data is available or `null` if the stream has closed.
+ *
+ * @psalm-return Promise
+ *
+ * @throws PendingReadError Thrown if another read operation is still pending.
+ */
+ public function read(): Promise;
+}
diff --git a/lib/composer/amphp/byte-stream/lib/InputStreamChain.php b/lib/composer/amphp/byte-stream/lib/InputStreamChain.php
new file mode 100644
index 0000000000000..d952a85265659
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/lib/InputStreamChain.php
@@ -0,0 +1,52 @@
+streams = $streams;
+ }
+
+ /** @inheritDoc */
+ public function read(): Promise
+ {
+ if ($this->reading) {
+ throw new PendingReadError;
+ }
+
+ if (!$this->streams) {
+ return new Success(null);
+ }
+
+ return call(function () {
+ $this->reading = true;
+
+ try {
+ while ($this->streams) {
+ $chunk = yield $this->streams[0]->read();
+ if ($chunk === null) {
+ \array_shift($this->streams);
+ continue;
+ }
+
+ return $chunk;
+ }
+
+ return null;
+ } finally {
+ $this->reading = false;
+ }
+ });
+ }
+}
diff --git a/lib/composer/amphp/byte-stream/lib/IteratorStream.php b/lib/composer/amphp/byte-stream/lib/IteratorStream.php
new file mode 100644
index 0000000000000..6fbe3912ac815
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/lib/IteratorStream.php
@@ -0,0 +1,70 @@
+ */
+ private $iterator;
+ /** @var \Throwable|null */
+ private $exception;
+ /** @var bool */
+ private $pending = false;
+
+ /**
+ * @psam-param Iterator $iterator
+ */
+ public function __construct(Iterator $iterator)
+ {
+ $this->iterator = $iterator;
+ }
+
+ /** @inheritdoc */
+ public function read(): Promise
+ {
+ if ($this->exception) {
+ return new Failure($this->exception);
+ }
+
+ if ($this->pending) {
+ throw new PendingReadError;
+ }
+
+ $this->pending = true;
+ /** @var Deferred $deferred */
+ $deferred = new Deferred;
+
+ $this->iterator->advance()->onResolve(function ($error, $hasNextElement) use ($deferred) {
+ $this->pending = false;
+
+ if ($error) {
+ $this->exception = $error;
+ $deferred->fail($error);
+ } elseif ($hasNextElement) {
+ $chunk = $this->iterator->getCurrent();
+
+ if (!\is_string($chunk)) {
+ $this->exception = new StreamException(\sprintf(
+ "Unexpected iterator value of type '%s', expected string",
+ \is_object($chunk) ? \get_class($chunk) : \gettype($chunk)
+ ));
+
+ $deferred->fail($this->exception);
+
+ return;
+ }
+
+ $deferred->resolve($chunk);
+ } else {
+ $deferred->resolve();
+ }
+ });
+
+ return $deferred->promise();
+ }
+}
diff --git a/lib/composer/amphp/byte-stream/lib/LineReader.php b/lib/composer/amphp/byte-stream/lib/LineReader.php
new file mode 100644
index 0000000000000..ed6b0a2af311f
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/lib/LineReader.php
@@ -0,0 +1,71 @@
+source = $inputStream;
+ $this->delimiter = $delimiter === null ? "\n" : $delimiter;
+ $this->lineMode = $delimiter === null;
+ }
+
+ /**
+ * @return Promise
+ */
+ public function readLine(): Promise
+ {
+ return call(function () {
+ if (false !== \strpos($this->buffer, $this->delimiter)) {
+ list($line, $this->buffer) = \explode($this->delimiter, $this->buffer, 2);
+ return $this->lineMode ? \rtrim($line, "\r") : $line;
+ }
+
+ while (null !== $chunk = yield $this->source->read()) {
+ $this->buffer .= $chunk;
+
+ if (false !== \strpos($this->buffer, $this->delimiter)) {
+ list($line, $this->buffer) = \explode($this->delimiter, $this->buffer, 2);
+ return $this->lineMode ? \rtrim($line, "\r") : $line;
+ }
+ }
+
+ if ($this->buffer === "") {
+ return null;
+ }
+
+ $line = $this->buffer;
+ $this->buffer = "";
+ return $this->lineMode ? \rtrim($line, "\r") : $line;
+ });
+ }
+
+ public function getBuffer(): string
+ {
+ return $this->buffer;
+ }
+
+ /**
+ * @return void
+ */
+ public function clearBuffer()
+ {
+ $this->buffer = "";
+ }
+}
diff --git a/lib/composer/amphp/byte-stream/lib/Message.php b/lib/composer/amphp/byte-stream/lib/Message.php
new file mode 100644
index 0000000000000..33046233c06f1
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/lib/Message.php
@@ -0,0 +1,176 @@
+read()) !== null) {
+ * // Immediately use $chunk, reducing memory consumption since the entire message is never buffered.
+ * }
+ *
+ * @deprecated Use Amp\ByteStream\Payload instead.
+ */
+class Message implements InputStream, Promise
+{
+ /** @var InputStream */
+ private $source;
+
+ /** @var string */
+ private $buffer = "";
+
+ /** @var Deferred|null */
+ private $pendingRead;
+
+ /** @var Coroutine|null */
+ private $coroutine;
+
+ /** @var bool True if onResolve() has been called. */
+ private $buffering = false;
+
+ /** @var Deferred|null */
+ private $backpressure;
+
+ /** @var bool True if the iterator has completed. */
+ private $complete = false;
+
+ /** @var \Throwable|null Used to fail future reads on failure. */
+ private $error;
+
+ /**
+ * @param InputStream $source An iterator that only emits strings.
+ */
+ public function __construct(InputStream $source)
+ {
+ $this->source = $source;
+ }
+
+ private function consume(): \Generator
+ {
+ while (($chunk = yield $this->source->read()) !== null) {
+ $buffer = $this->buffer .= $chunk;
+
+ if ($buffer === "") {
+ continue; // Do not succeed reads with empty string.
+ } elseif ($this->pendingRead) {
+ $deferred = $this->pendingRead;
+ $this->pendingRead = null;
+ $this->buffer = "";
+ $deferred->resolve($buffer);
+ $buffer = ""; // Destroy last emitted chunk to free memory.
+ } elseif (!$this->buffering) {
+ $buffer = ""; // Destroy last emitted chunk to free memory.
+ $this->backpressure = new Deferred;
+ yield $this->backpressure->promise();
+ }
+ }
+
+ $this->complete = true;
+
+ if ($this->pendingRead) {
+ $deferred = $this->pendingRead;
+ $this->pendingRead = null;
+ $deferred->resolve($this->buffer !== "" ? $this->buffer : null);
+ $this->buffer = "";
+ }
+
+ return $this->buffer;
+ }
+
+ /** @inheritdoc */
+ final public function read(): Promise
+ {
+ if ($this->pendingRead) {
+ throw new PendingReadError;
+ }
+
+ if ($this->coroutine === null) {
+ $this->coroutine = new Coroutine($this->consume());
+ $this->coroutine->onResolve(function ($error) {
+ if ($error) {
+ $this->error = $error;
+ }
+
+ if ($this->pendingRead) {
+ $deferred = $this->pendingRead;
+ $this->pendingRead = null;
+ $deferred->fail($error);
+ }
+ });
+ }
+
+ if ($this->error) {
+ return new Failure($this->error);
+ }
+
+ if ($this->buffer !== "") {
+ $buffer = $this->buffer;
+ $this->buffer = "";
+
+ if ($this->backpressure) {
+ $backpressure = $this->backpressure;
+ $this->backpressure = null;
+ $backpressure->resolve();
+ }
+
+ return new Success($buffer);
+ }
+
+ if ($this->complete) {
+ return new Success;
+ }
+
+ $this->pendingRead = new Deferred;
+ return $this->pendingRead->promise();
+ }
+
+ /** @inheritdoc */
+ final public function onResolve(callable $onResolved)
+ {
+ $this->buffering = true;
+
+ if ($this->coroutine === null) {
+ $this->coroutine = new Coroutine($this->consume());
+ }
+
+ if ($this->backpressure) {
+ $backpressure = $this->backpressure;
+ $this->backpressure = null;
+ $backpressure->resolve();
+ }
+
+ $this->coroutine->onResolve($onResolved);
+ }
+
+ /**
+ * Exposes the source input stream.
+ *
+ * This might be required to resolve a promise with an InputStream, because promises in Amp can't be resolved with
+ * other promises.
+ *
+ * @return InputStream
+ */
+ final public function getInputStream(): InputStream
+ {
+ return $this->source;
+ }
+}
diff --git a/lib/composer/amphp/byte-stream/lib/OutputBuffer.php b/lib/composer/amphp/byte-stream/lib/OutputBuffer.php
new file mode 100644
index 0000000000000..832dc71b7a403
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/lib/OutputBuffer.php
@@ -0,0 +1,55 @@
+deferred = new Deferred;
+ }
+
+ public function write(string $data): Promise
+ {
+ if ($this->closed) {
+ throw new ClosedException("The stream has already been closed.");
+ }
+
+ $this->contents .= $data;
+
+ return new Success(\strlen($data));
+ }
+
+ public function end(string $finalData = ""): Promise
+ {
+ if ($this->closed) {
+ throw new ClosedException("The stream has already been closed.");
+ }
+
+ $this->contents .= $finalData;
+ $this->closed = true;
+
+ $this->deferred->resolve($this->contents);
+ $this->contents = "";
+
+ return new Success(\strlen($finalData));
+ }
+
+ public function onResolve(callable $onResolved)
+ {
+ $this->deferred->promise()->onResolve($onResolved);
+ }
+}
diff --git a/lib/composer/amphp/byte-stream/lib/OutputStream.php b/lib/composer/amphp/byte-stream/lib/OutputStream.php
new file mode 100644
index 0000000000000..68f51fc1a3236
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/lib/OutputStream.php
@@ -0,0 +1,37 @@
+stream = $stream;
+ }
+
+ public function __destruct()
+ {
+ if (!$this->promise) {
+ Promise\rethrow(new Coroutine($this->consume()));
+ }
+ }
+
+ private function consume(): \Generator
+ {
+ try {
+ if ($this->lastRead && null === yield $this->lastRead) {
+ return;
+ }
+
+ while (null !== yield $this->stream->read()) {
+ // Discard unread bytes from message.
+ }
+ } catch (\Throwable $exception) {
+ // If exception is thrown here the connection closed anyway.
+ }
+ }
+
+ /**
+ * @inheritdoc
+ *
+ * @throws \Error If a buffered message was requested by calling buffer().
+ */
+ final public function read(): Promise
+ {
+ if ($this->promise) {
+ throw new \Error("Cannot stream message data once a buffered message has been requested");
+ }
+
+ return $this->lastRead = $this->stream->read();
+ }
+
+ /**
+ * Buffers the entire message and resolves the returned promise then.
+ *
+ * @return Promise Resolves with the entire message contents.
+ */
+ final public function buffer(): Promise
+ {
+ if ($this->promise) {
+ return $this->promise;
+ }
+
+ return $this->promise = call(function () {
+ $buffer = '';
+ if ($this->lastRead && null === yield $this->lastRead) {
+ return $buffer;
+ }
+
+ while (null !== $chunk = yield $this->stream->read()) {
+ $buffer .= $chunk;
+ }
+ return $buffer;
+ });
+ }
+}
diff --git a/lib/composer/amphp/byte-stream/lib/PendingReadError.php b/lib/composer/amphp/byte-stream/lib/PendingReadError.php
new file mode 100644
index 0000000000000..66dc1fbd0b0fb
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/lib/PendingReadError.php
@@ -0,0 +1,17 @@
+useSingleRead = $useSingleRead;
+
+ if (\strpos($meta["mode"], "r") === false && \strpos($meta["mode"], "+") === false) {
+ throw new \Error("Expected a readable stream");
+ }
+
+ \stream_set_blocking($stream, false);
+ \stream_set_read_buffer($stream, 0);
+
+ $this->resource = &$stream;
+ $this->chunkSize = &$chunkSize;
+
+ $deferred = &$this->deferred;
+ $readable = &$this->readable;
+
+ $this->watcher = Loop::onReadable($this->resource, static function ($watcher) use (
+ &$deferred,
+ &$readable,
+ &$stream,
+ &$chunkSize,
+ $useSingleRead
+ ) {
+ if ($useSingleRead) {
+ $data = @\fread($stream, $chunkSize);
+ } else {
+ $data = @\stream_get_contents($stream, $chunkSize);
+ }
+
+ \assert($data !== false, "Trying to read from a previously fclose()'d resource. Do NOT manually fclose() resources the loop still has a reference to.");
+
+ // Error suppression, because pthreads does crazy things with resources,
+ // which might be closed during two operations.
+ // See https://github.com/amphp/byte-stream/issues/32
+ if ($data === '' && @\feof($stream)) {
+ $readable = false;
+ $stream = null;
+ $data = null; // Stream closed, resolve read with null.
+ Loop::cancel($watcher);
+ } else {
+ Loop::disable($watcher);
+ }
+
+ $temp = $deferred;
+ $deferred = null;
+
+ \assert($temp instanceof Deferred);
+ $temp->resolve($data);
+ });
+
+ $this->immediateCallable = static function ($watcherId, $data) use (&$deferred) {
+ $temp = $deferred;
+ $deferred = null;
+
+ \assert($temp instanceof Deferred);
+ $temp->resolve($data);
+ };
+
+ Loop::disable($this->watcher);
+ }
+
+ /** @inheritdoc */
+ public function read(): Promise
+ {
+ if ($this->deferred !== null) {
+ throw new PendingReadError;
+ }
+
+ if (!$this->readable) {
+ return new Success; // Resolve with null on closed stream.
+ }
+
+ \assert($this->resource !== null);
+
+ // Attempt a direct read, because Windows suffers from slow I/O on STDIN otherwise.
+ if ($this->useSingleRead) {
+ $data = @\fread($this->resource, $this->chunkSize);
+ } else {
+ $data = @\stream_get_contents($this->resource, $this->chunkSize);
+ }
+
+ \assert($data !== false, "Trying to read from a previously fclose()'d resource. Do NOT manually fclose() resources the loop still has a reference to.");
+
+ if ($data === '') {
+ // Error suppression, because pthreads does crazy things with resources,
+ // which might be closed during two operations.
+ // See https://github.com/amphp/byte-stream/issues/32
+ if (@\feof($this->resource)) {
+ $this->readable = false;
+ $this->resource = null;
+ Loop::cancel($this->watcher);
+
+ return new Success; // Stream closed, resolve read with null.
+ }
+
+ $this->deferred = new Deferred;
+ Loop::enable($this->watcher);
+
+ return $this->deferred->promise();
+ }
+
+ // Prevent an immediate read → write loop from blocking everything
+ // See e.g. examples/benchmark-throughput.php
+ $this->deferred = new Deferred;
+ $this->immediateWatcher = Loop::defer($this->immediateCallable, $data);
+
+ return $this->deferred->promise();
+ }
+
+ /**
+ * Closes the stream forcefully. Multiple `close()` calls are ignored.
+ *
+ * @return void
+ */
+ public function close()
+ {
+ if ($this->resource) {
+ // Error suppression, as resource might already be closed
+ $meta = @\stream_get_meta_data($this->resource);
+
+ if ($meta && \strpos($meta["mode"], "+") !== false) {
+ @\stream_socket_shutdown($this->resource, \STREAM_SHUT_RD);
+ } else {
+ /** @psalm-suppress InvalidPropertyAssignmentValue */
+ @\fclose($this->resource);
+ }
+ }
+
+ $this->free();
+ }
+
+ /**
+ * Nulls reference to resource, marks stream unreadable, and succeeds any pending read with null.
+ *
+ * @return void
+ */
+ private function free()
+ {
+ $this->readable = false;
+ $this->resource = null;
+
+ if ($this->deferred !== null) {
+ $deferred = $this->deferred;
+ $this->deferred = null;
+ $deferred->resolve();
+ }
+
+ Loop::cancel($this->watcher);
+
+ if ($this->immediateWatcher !== null) {
+ Loop::cancel($this->immediateWatcher);
+ }
+ }
+
+ /**
+ * @return resource|null The stream resource or null if the stream has closed.
+ */
+ public function getResource()
+ {
+ return $this->resource;
+ }
+
+ /**
+ * @return void
+ */
+ public function setChunkSize(int $chunkSize)
+ {
+ $this->chunkSize = $chunkSize;
+ }
+
+ /**
+ * References the read watcher, so the loop keeps running in case there's an active read.
+ *
+ * @return void
+ *
+ * @see Loop::reference()
+ */
+ public function reference()
+ {
+ if (!$this->resource) {
+ throw new \Error("Resource has already been freed");
+ }
+
+ Loop::reference($this->watcher);
+ }
+
+ /**
+ * Unreferences the read watcher, so the loop doesn't keep running even if there are active reads.
+ *
+ * @return void
+ *
+ * @see Loop::unreference()
+ */
+ public function unreference()
+ {
+ if (!$this->resource) {
+ throw new \Error("Resource has already been freed");
+ }
+
+ Loop::unreference($this->watcher);
+ }
+
+ public function __destruct()
+ {
+ if ($this->resource !== null) {
+ $this->free();
+ }
+ }
+}
diff --git a/lib/composer/amphp/byte-stream/lib/ResourceOutputStream.php b/lib/composer/amphp/byte-stream/lib/ResourceOutputStream.php
new file mode 100644
index 0000000000000..8bf3fdc6cdf20
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/lib/ResourceOutputStream.php
@@ -0,0 +1,321 @@
+ */
+ private $writes;
+
+ /** @var bool */
+ private $writable = true;
+
+ /** @var int|null */
+ private $chunkSize;
+
+ /**
+ * @param resource $stream Stream resource.
+ * @param int|null $chunkSize Chunk size per `fwrite()` operation.
+ */
+ public function __construct($stream, int $chunkSize = null)
+ {
+ if (!\is_resource($stream) || \get_resource_type($stream) !== 'stream') {
+ throw new \Error("Expected a valid stream");
+ }
+
+ $meta = \stream_get_meta_data($stream);
+
+ if (\strpos($meta["mode"], "r") !== false && \strpos($meta["mode"], "+") === false) {
+ throw new \Error("Expected a writable stream");
+ }
+
+ \stream_set_blocking($stream, false);
+ \stream_set_write_buffer($stream, 0);
+
+ $this->resource = $stream;
+ $this->chunkSize = &$chunkSize;
+
+ $writes = $this->writes = new \SplQueue;
+ $writable = &$this->writable;
+ $resource = &$this->resource;
+
+ $this->watcher = Loop::onWritable($stream, static function ($watcher, $stream) use ($writes, &$chunkSize, &$writable, &$resource) {
+ static $emptyWrites = 0;
+
+ try {
+ while (!$writes->isEmpty()) {
+ /** @var Deferred $deferred */
+ list($data, $previous, $deferred) = $writes->shift();
+ $length = \strlen($data);
+
+ if ($length === 0) {
+ $deferred->resolve(0);
+ continue;
+ }
+
+ if (!\is_resource($stream) || (($metaData = @\stream_get_meta_data($stream)) && $metaData['eof'])) {
+ throw new ClosedException("The stream was closed by the peer");
+ }
+
+ // Error reporting suppressed since fwrite() emits E_WARNING if the pipe is broken or the buffer is full.
+ // Use conditional, because PHP doesn't like getting null passed
+ if ($chunkSize) {
+ $written = @\fwrite($stream, $data, $chunkSize);
+ } else {
+ $written = @\fwrite($stream, $data);
+ }
+
+ \assert(
+ $written !== false || \PHP_VERSION_ID >= 70400, // PHP 7.4+ returns false on EPIPE.
+ "Trying to write on a previously fclose()'d resource. Do NOT manually fclose() resources the still referenced in the loop."
+ );
+
+ // PHP 7.4.0 and 7.4.1 may return false on EAGAIN.
+ if ($written === false && \PHP_VERSION_ID >= 70402) {
+ $message = "Failed to write to stream";
+ if ($error = \error_get_last()) {
+ $message .= \sprintf("; %s", $error["message"]);
+ }
+ throw new StreamException($message);
+ }
+
+ // Broken pipes between processes on macOS/FreeBSD do not detect EOF properly.
+ if ($written === 0 || $written === false) {
+ if ($emptyWrites++ > self::MAX_CONSECUTIVE_EMPTY_WRITES) {
+ $message = "Failed to write to stream after multiple attempts";
+ if ($error = \error_get_last()) {
+ $message .= \sprintf("; %s", $error["message"]);
+ }
+ throw new StreamException($message);
+ }
+
+ $writes->unshift([$data, $previous, $deferred]);
+ return;
+ }
+
+ $emptyWrites = 0;
+
+ if ($length > $written) {
+ $data = \substr($data, $written);
+ $writes->unshift([$data, $written + $previous, $deferred]);
+ return;
+ }
+
+ $deferred->resolve($written + $previous);
+ }
+ } catch (\Throwable $exception) {
+ $resource = null;
+ $writable = false;
+
+ /** @psalm-suppress PossiblyUndefinedVariable */
+ $deferred->fail($exception);
+ while (!$writes->isEmpty()) {
+ list(, , $deferred) = $writes->shift();
+ $deferred->fail($exception);
+ }
+
+ Loop::cancel($watcher);
+ } finally {
+ if ($writes->isEmpty()) {
+ Loop::disable($watcher);
+ }
+ }
+ });
+
+ Loop::disable($this->watcher);
+ }
+
+ /**
+ * Writes data to the stream.
+ *
+ * @param string $data Bytes to write.
+ *
+ * @return Promise Succeeds once the data has been successfully written to the stream.
+ *
+ * @throws ClosedException If the stream has already been closed.
+ */
+ public function write(string $data): Promise
+ {
+ return $this->send($data, false);
+ }
+
+ /**
+ * Closes the stream after all pending writes have been completed. Optionally writes a final data chunk before.
+ *
+ * @param string $finalData Bytes to write.
+ *
+ * @return Promise Succeeds once the data has been successfully written to the stream.
+ *
+ * @throws ClosedException If the stream has already been closed.
+ */
+ public function end(string $finalData = ""): Promise
+ {
+ return $this->send($finalData, true);
+ }
+
+ private function send(string $data, bool $end = false): Promise
+ {
+ if (!$this->writable) {
+ return new Failure(new ClosedException("The stream is not writable"));
+ }
+
+ $length = \strlen($data);
+ $written = 0;
+
+ if ($end) {
+ $this->writable = false;
+ }
+
+ if ($this->writes->isEmpty()) {
+ if ($length === 0) {
+ if ($end) {
+ $this->close();
+ }
+ return new Success(0);
+ }
+
+ if (!\is_resource($this->resource) || (($metaData = @\stream_get_meta_data($this->resource)) && $metaData['eof'])) {
+ return new Failure(new ClosedException("The stream was closed by the peer"));
+ }
+
+ // Error reporting suppressed since fwrite() emits E_WARNING if the pipe is broken or the buffer is full.
+ // Use conditional, because PHP doesn't like getting null passed.
+ if ($this->chunkSize) {
+ $written = @\fwrite($this->resource, $data, $this->chunkSize);
+ } else {
+ $written = @\fwrite($this->resource, $data);
+ }
+
+ \assert(
+ $written !== false || \PHP_VERSION_ID >= 70400, // PHP 7.4+ returns false on EPIPE.
+ "Trying to write on a previously fclose()'d resource. Do NOT manually fclose() resources the still referenced in the loop."
+ );
+
+ // PHP 7.4.0 and 7.4.1 may return false on EAGAIN.
+ if ($written === false && \PHP_VERSION_ID >= 70402) {
+ $message = "Failed to write to stream";
+ if ($error = \error_get_last()) {
+ $message .= \sprintf("; %s", $error["message"]);
+ }
+ return new Failure(new StreamException($message));
+ }
+
+ $written = (int) $written; // Cast potential false to 0.
+
+ if ($length === $written) {
+ if ($end) {
+ $this->close();
+ }
+ return new Success($written);
+ }
+
+ $data = \substr($data, $written);
+ }
+
+ $deferred = new Deferred;
+
+ if ($length - $written > self::LARGE_CHUNK_SIZE) {
+ $chunks = \str_split($data, self::LARGE_CHUNK_SIZE);
+ $data = \array_pop($chunks);
+ foreach ($chunks as $chunk) {
+ $this->writes->push([$chunk, $written, new Deferred]);
+ $written += self::LARGE_CHUNK_SIZE;
+ }
+ }
+
+ $this->writes->push([$data, $written, $deferred]);
+ Loop::enable($this->watcher);
+ $promise = $deferred->promise();
+
+ if ($end) {
+ $promise->onResolve([$this, "close"]);
+ }
+
+ return $promise;
+ }
+
+ /**
+ * Closes the stream forcefully. Multiple `close()` calls are ignored.
+ *
+ * @return void
+ */
+ public function close()
+ {
+ if ($this->resource) {
+ // Error suppression, as resource might already be closed
+ $meta = @\stream_get_meta_data($this->resource);
+
+ if ($meta && \strpos($meta["mode"], "+") !== false) {
+ @\stream_socket_shutdown($this->resource, \STREAM_SHUT_WR);
+ } else {
+ /** @psalm-suppress InvalidPropertyAssignmentValue psalm reports this as closed-resource */
+ @\fclose($this->resource);
+ }
+ }
+
+ $this->free();
+ }
+
+ /**
+ * Nulls reference to resource, marks stream unwritable, and fails any pending write.
+ *
+ * @return void
+ */
+ private function free()
+ {
+ $this->resource = null;
+ $this->writable = false;
+
+ if (!$this->writes->isEmpty()) {
+ $exception = new ClosedException("The socket was closed before writing completed");
+ do {
+ /** @var Deferred $deferred */
+ list(, , $deferred) = $this->writes->shift();
+ $deferred->fail($exception);
+ } while (!$this->writes->isEmpty());
+ }
+
+ Loop::cancel($this->watcher);
+ }
+
+ /**
+ * @return resource|null Stream resource or null if end() has been called or the stream closed.
+ */
+ public function getResource()
+ {
+ return $this->resource;
+ }
+
+ /**
+ * @return void
+ */
+ public function setChunkSize(int $chunkSize)
+ {
+ $this->chunkSize = $chunkSize;
+ }
+
+ public function __destruct()
+ {
+ if ($this->resource !== null) {
+ $this->free();
+ }
+ }
+}
diff --git a/lib/composer/amphp/byte-stream/lib/StreamException.php b/lib/composer/amphp/byte-stream/lib/StreamException.php
new file mode 100644
index 0000000000000..b86ec7e0feeeb
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/lib/StreamException.php
@@ -0,0 +1,7 @@
+source = $source;
+ $this->encoding = $encoding;
+ $this->options = $options;
+ $this->resource = @\inflate_init($encoding, $options);
+
+ if ($this->resource === false) {
+ throw new StreamException("Failed initializing deflate context");
+ }
+ }
+
+ /** @inheritdoc */
+ public function read(): Promise
+ {
+ return call(function () {
+ if ($this->resource === null) {
+ return null;
+ }
+
+ \assert($this->source !== null);
+
+ $data = yield $this->source->read();
+
+ // Needs a double guard, as stream might have been closed while reading
+ /** @psalm-suppress ParadoxicalCondition */
+ if ($this->resource === null) {
+ return null;
+ }
+
+ if ($data === null) {
+ $decompressed = @\inflate_add($this->resource, "", \ZLIB_FINISH);
+
+ if ($decompressed === false) {
+ throw new StreamException("Failed adding data to deflate context");
+ }
+
+ $this->close();
+
+ return $decompressed;
+ }
+
+ $decompressed = @\inflate_add($this->resource, $data, \ZLIB_SYNC_FLUSH);
+
+ if ($decompressed === false) {
+ throw new StreamException("Failed adding data to deflate context");
+ }
+
+ return $decompressed;
+ });
+ }
+
+ /**
+ * @internal
+ * @return void
+ */
+ private function close()
+ {
+ $this->resource = null;
+ $this->source = null;
+ }
+
+ /**
+ * Gets the used compression encoding.
+ *
+ * @return int Encoding specified on construction time.
+ */
+ public function getEncoding(): int
+ {
+ return $this->encoding;
+ }
+ /**
+ * Gets the used compression options.
+ *
+ * @return array Options array passed on construction time.
+ */
+ public function getOptions(): array
+ {
+ return $this->options;
+ }
+}
diff --git a/lib/composer/amphp/byte-stream/lib/ZlibOutputStream.php b/lib/composer/amphp/byte-stream/lib/ZlibOutputStream.php
new file mode 100644
index 0000000000000..542df1cee271b
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/lib/ZlibOutputStream.php
@@ -0,0 +1,119 @@
+destination = $destination;
+ $this->encoding = $encoding;
+ $this->options = $options;
+ $this->resource = @\deflate_init($encoding, $options);
+
+ if ($this->resource === false) {
+ throw new StreamException("Failed initializing deflate context");
+ }
+ }
+
+ /** @inheritdoc */
+ public function write(string $data): Promise
+ {
+ if ($this->resource === null) {
+ throw new ClosedException("The stream has already been closed");
+ }
+
+ \assert($this->destination !== null);
+
+ $compressed = \deflate_add($this->resource, $data, \ZLIB_SYNC_FLUSH);
+
+ if ($compressed === false) {
+ throw new StreamException("Failed adding data to deflate context");
+ }
+
+ $promise = $this->destination->write($compressed);
+ $promise->onResolve(function ($error) {
+ if ($error) {
+ $this->close();
+ }
+ });
+
+ return $promise;
+ }
+
+ /** @inheritdoc */
+ public function end(string $finalData = ""): Promise
+ {
+ if ($this->resource === null) {
+ throw new ClosedException("The stream has already been closed");
+ }
+
+ \assert($this->destination !== null);
+
+ $compressed = \deflate_add($this->resource, $finalData, \ZLIB_FINISH);
+
+ if ($compressed === false) {
+ throw new StreamException("Failed adding data to deflate context");
+ }
+
+ $promise = $this->destination->end($compressed);
+ $promise->onResolve(function () {
+ $this->close();
+ });
+
+ return $promise;
+ }
+
+ /**
+ * @internal
+ * @return void
+ */
+ private function close()
+ {
+ $this->resource = null;
+ $this->destination = null;
+ }
+
+ /**
+ * Gets the used compression encoding.
+ *
+ * @return int Encoding specified on construction time.
+ */
+ public function getEncoding(): int
+ {
+ return $this->encoding;
+ }
+
+ /**
+ * Gets the used compression options.
+ *
+ * @return array Options array passed on construction time.
+ */
+ public function getOptions(): array
+ {
+ return $this->options;
+ }
+}
diff --git a/lib/composer/amphp/byte-stream/lib/functions.php b/lib/composer/amphp/byte-stream/lib/functions.php
new file mode 100644
index 0000000000000..434aef323b738
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/lib/functions.php
@@ -0,0 +1,188 @@
+read()) !== null) {
+ $written += \strlen($chunk);
+ $writePromise = $destination->write($chunk);
+ $chunk = null; // free memory
+ yield $writePromise;
+ }
+
+ return $written;
+ });
+}
+
+/**
+ * @param \Amp\ByteStream\InputStream $source
+ *
+ * @return \Amp\Promise
+ */
+function buffer(InputStream $source): Promise
+{
+ return call(function () use ($source): \Generator {
+ $buffer = "";
+
+ while (($chunk = yield $source->read()) !== null) {
+ $buffer .= $chunk;
+ $chunk = null; // free memory
+ }
+
+ return $buffer;
+ });
+}
+
+/**
+ * The php://input input buffer stream for the process associated with the currently active event loop.
+ *
+ * @return ResourceInputStream
+ */
+function getInputBufferStream(): ResourceInputStream
+{
+ static $key = InputStream::class . '\\input';
+
+ $stream = Loop::getState($key);
+
+ if (!$stream) {
+ $stream = new ResourceInputStream(\fopen('php://input', 'rb'));
+ Loop::setState($key, $stream);
+ }
+
+ return $stream;
+}
+
+/**
+ * The php://output output buffer stream for the process associated with the currently active event loop.
+ *
+ * @return ResourceOutputStream
+ */
+function getOutputBufferStream(): ResourceOutputStream
+{
+ static $key = OutputStream::class . '\\output';
+
+ $stream = Loop::getState($key);
+
+ if (!$stream) {
+ $stream = new ResourceOutputStream(\fopen('php://output', 'wb'));
+ Loop::setState($key, $stream);
+ }
+
+ return $stream;
+}
+
+/**
+ * The STDIN stream for the process associated with the currently active event loop.
+ *
+ * @return ResourceInputStream
+ */
+function getStdin(): ResourceInputStream
+{
+ static $key = InputStream::class . '\\stdin';
+
+ $stream = Loop::getState($key);
+
+ if (!$stream) {
+ $stream = new ResourceInputStream(\STDIN);
+ Loop::setState($key, $stream);
+ }
+
+ return $stream;
+}
+
+/**
+ * The STDOUT stream for the process associated with the currently active event loop.
+ *
+ * @return ResourceOutputStream
+ */
+function getStdout(): ResourceOutputStream
+{
+ static $key = OutputStream::class . '\\stdout';
+
+ $stream = Loop::getState($key);
+
+ if (!$stream) {
+ $stream = new ResourceOutputStream(\STDOUT);
+ Loop::setState($key, $stream);
+ }
+
+ return $stream;
+}
+
+/**
+ * The STDERR stream for the process associated with the currently active event loop.
+ *
+ * @return ResourceOutputStream
+ */
+function getStderr(): ResourceOutputStream
+{
+ static $key = OutputStream::class . '\\stderr';
+
+ $stream = Loop::getState($key);
+
+ if (!$stream) {
+ $stream = new ResourceOutputStream(\STDERR);
+ Loop::setState($key, $stream);
+ }
+
+ return $stream;
+}
+
+function parseLineDelimitedJson(InputStream $stream, bool $assoc = false, int $depth = 512, int $options = 0): Iterator
+{
+ return new Producer(static function (callable $emit) use ($stream, $assoc, $depth, $options) {
+ $reader = new LineReader($stream);
+
+ while (null !== $line = yield $reader->readLine()) {
+ $line = \trim($line);
+
+ if ($line === '') {
+ continue;
+ }
+
+ /** @noinspection PhpComposerExtensionStubsInspection */
+ $data = \json_decode($line, $assoc, $depth, $options);
+ /** @noinspection PhpComposerExtensionStubsInspection */
+ $error = \json_last_error();
+
+ /** @noinspection PhpComposerExtensionStubsInspection */
+ if ($error !== \JSON_ERROR_NONE) {
+ /** @noinspection PhpComposerExtensionStubsInspection */
+ throw new StreamException('Failed to parse JSON: ' . \json_last_error_msg(), $error);
+ }
+
+ yield $emit($data);
+ }
+ });
+}
diff --git a/lib/composer/amphp/byte-stream/psalm.xml b/lib/composer/amphp/byte-stream/psalm.xml
new file mode 100644
index 0000000000000..9684f55df70e3
--- /dev/null
+++ b/lib/composer/amphp/byte-stream/psalm.xml
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/composer/bin/php-cs-fixer b/lib/composer/bin/php-cs-fixer
new file mode 120000
index 0000000000000..7f39b6c51bcba
--- /dev/null
+++ b/lib/composer/bin/php-cs-fixer
@@ -0,0 +1 @@
+../friendsofphp/php-cs-fixer/php-cs-fixer
\ No newline at end of file
diff --git a/lib/composer/bin/php-parse b/lib/composer/bin/php-parse
new file mode 120000
index 0000000000000..062d66a3ed39a
--- /dev/null
+++ b/lib/composer/bin/php-parse
@@ -0,0 +1 @@
+../nikic/php-parser/bin/php-parse
\ No newline at end of file
diff --git a/lib/composer/bin/psalm b/lib/composer/bin/psalm
new file mode 120000
index 0000000000000..82484c004eeb5
--- /dev/null
+++ b/lib/composer/bin/psalm
@@ -0,0 +1 @@
+../vimeo/psalm/psalm
\ No newline at end of file
diff --git a/lib/composer/bin/psalm-language-server b/lib/composer/bin/psalm-language-server
new file mode 120000
index 0000000000000..71ca802958771
--- /dev/null
+++ b/lib/composer/bin/psalm-language-server
@@ -0,0 +1 @@
+../vimeo/psalm/psalm-language-server
\ No newline at end of file
diff --git a/lib/composer/bin/psalm-plugin b/lib/composer/bin/psalm-plugin
new file mode 120000
index 0000000000000..625a931425cc6
--- /dev/null
+++ b/lib/composer/bin/psalm-plugin
@@ -0,0 +1 @@
+../vimeo/psalm/psalm-plugin
\ No newline at end of file
diff --git a/lib/composer/bin/psalm-refactor b/lib/composer/bin/psalm-refactor
new file mode 120000
index 0000000000000..a366509e9cec7
--- /dev/null
+++ b/lib/composer/bin/psalm-refactor
@@ -0,0 +1 @@
+../vimeo/psalm/psalm-refactor
\ No newline at end of file
diff --git a/lib/composer/bin/psalter b/lib/composer/bin/psalter
new file mode 120000
index 0000000000000..227df4b64cb46
--- /dev/null
+++ b/lib/composer/bin/psalter
@@ -0,0 +1 @@
+../vimeo/psalm/psalter
\ No newline at end of file
diff --git a/lib/composer/composer/ClassLoader.php b/lib/composer/composer/ClassLoader.php
index 03b9bb9c40cb8..1a58957d25d4a 100644
--- a/lib/composer/composer/ClassLoader.php
+++ b/lib/composer/composer/ClassLoader.php
@@ -37,8 +37,8 @@
*
* @author Fabien Potencier
* @author Jordi Boggiano
- * @see http://www.php-fig.org/psr/psr-0/
- * @see http://www.php-fig.org/psr/psr-4/
+ * @see https://www.php-fig.org/psr/psr-0/
+ * @see https://www.php-fig.org/psr/psr-4/
*/
class ClassLoader
{
diff --git a/lib/composer/composer/InstalledVersions.php b/lib/composer/composer/InstalledVersions.php
new file mode 100644
index 0000000000000..ea16c3f84f1e2
--- /dev/null
+++ b/lib/composer/composer/InstalledVersions.php
@@ -0,0 +1,667 @@
+
+ array (
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '11fca45e4c9ed5bc53436b6232a656a51f4984fa',
+ 'name' => '__root__',
+ ),
+ 'versions' =>
+ array (
+ '__root__' =>
+ array (
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '11fca45e4c9ed5bc53436b6232a656a51f4984fa',
+ ),
+ 'amphp/amp' =>
+ array (
+ 'pretty_version' => 'v2.5.0',
+ 'version' => '2.5.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'f220a51458bf4dd0dedebb171ac3457813c72bbc',
+ ),
+ 'amphp/byte-stream' =>
+ array (
+ 'pretty_version' => 'v1.8.0',
+ 'version' => '1.8.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'f0c20cf598a958ba2aa8c6e5a71c697d652c7088',
+ ),
+ 'composer/package-versions-deprecated' =>
+ array (
+ 'pretty_version' => '1.11.99',
+ 'version' => '1.11.99.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'c8c9aa8a14cc3d3bec86d0a8c3fa52ea79936855',
+ ),
+ 'composer/semver' =>
+ array (
+ 'pretty_version' => '1.7.1',
+ 'version' => '1.7.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '38276325bd896f90dfcfe30029aa5db40df387a7',
+ ),
+ 'composer/xdebug-handler' =>
+ array (
+ 'pretty_version' => '1.4.3',
+ 'version' => '1.4.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'ebd27a9866ae8254e873866f795491f02418c5a5',
+ ),
+ 'dnoegel/php-xdg-base-dir' =>
+ array (
+ 'pretty_version' => 'v0.1.1',
+ 'version' => '0.1.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd',
+ ),
+ 'doctrine/annotations' =>
+ array (
+ 'pretty_version' => '1.10.3',
+ 'version' => '1.10.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '5db60a4969eba0e0c197a19c077780aadbc43c5d',
+ ),
+ 'doctrine/lexer' =>
+ array (
+ 'pretty_version' => '1.2.1',
+ 'version' => '1.2.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'e864bbf5904cb8f5bb334f99209b48018522f042',
+ ),
+ 'felixfbecker/advanced-json-rpc' =>
+ array (
+ 'pretty_version' => 'v3.1.1',
+ 'version' => '3.1.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '0ed363f8de17d284d479ec813c9ad3f6834b5c40',
+ ),
+ 'felixfbecker/language-server-protocol' =>
+ array (
+ 'pretty_version' => 'v1.4.0',
+ 'version' => '1.4.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '378801f6139bb74ac215d81cca1272af61df9a9f',
+ ),
+ 'friendsofphp/php-cs-fixer' =>
+ array (
+ 'pretty_version' => 'v2.16.3',
+ 'version' => '2.16.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '83baf823a33a1cbd5416c8626935cf3f843c10b0',
+ ),
+ 'netresearch/jsonmapper' =>
+ array (
+ 'pretty_version' => 'v2.1.0',
+ 'version' => '2.1.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'e0f1e33a71587aca81be5cffbb9746510e1fe04e',
+ ),
+ 'nextcloud/coding-standard' =>
+ array (
+ 'pretty_version' => 'v0.3.0',
+ 'version' => '0.3.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '4f5cd012760f8293e19e602651a0ecaa265e4db9',
+ ),
+ 'nikic/php-parser' =>
+ array (
+ 'pretty_version' => 'v4.10.2',
+ 'version' => '4.10.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '658f1be311a230e0907f5dfe0213742aff0596de',
+ ),
+ 'ocramius/package-versions' =>
+ array (
+ 'replaced' =>
+ array (
+ 0 => '1.11.99',
+ ),
+ ),
+ 'openlss/lib-array2xml' =>
+ array (
+ 'pretty_version' => '1.0.0',
+ 'version' => '1.0.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'a91f18a8dfc69ffabe5f9b068bc39bb202c81d90',
+ ),
+ 'paragonie/random_compat' =>
+ array (
+ 'pretty_version' => 'v9.99.99',
+ 'version' => '9.99.99.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95',
+ ),
+ 'php-cs-fixer/diff' =>
+ array (
+ 'pretty_version' => 'v1.3.0',
+ 'version' => '1.3.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '78bb099e9c16361126c86ce82ec4405ebab8e756',
+ ),
+ 'phpdocumentor/reflection-common' =>
+ array (
+ 'pretty_version' => '2.2.0',
+ 'version' => '2.2.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
+ ),
+ 'phpdocumentor/reflection-docblock' =>
+ array (
+ 'pretty_version' => '5.2.2',
+ 'version' => '5.2.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '069a785b2141f5bcf49f3e353548dc1cce6df556',
+ ),
+ 'phpdocumentor/type-resolver' =>
+ array (
+ 'pretty_version' => '1.4.0',
+ 'version' => '1.4.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0',
+ ),
+ 'psalm/psalm' =>
+ array (
+ 'provided' =>
+ array (
+ 0 => '4.0.1',
+ ),
+ ),
+ 'psr/container' =>
+ array (
+ 'pretty_version' => '1.0.0',
+ 'version' => '1.0.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'b7ce3b176482dbbc1245ebf52b181af44c2cf55f',
+ ),
+ 'psr/event-dispatcher' =>
+ array (
+ 'pretty_version' => '1.0.0',
+ 'version' => '1.0.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'dbefd12671e8a14ec7f180cab83036ed26714bb0',
+ ),
+ 'psr/event-dispatcher-implementation' =>
+ array (
+ 'provided' =>
+ array (
+ 0 => '1.0',
+ ),
+ ),
+ 'psr/log' =>
+ array (
+ 'pretty_version' => '1.1.3',
+ 'version' => '1.1.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc',
+ ),
+ 'psr/log-implementation' =>
+ array (
+ 'provided' =>
+ array (
+ 0 => '1.0',
+ ),
+ ),
+ 'sebastian/diff' =>
+ array (
+ 'pretty_version' => '4.0.3',
+ 'version' => '4.0.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'ffc949a1a2aae270ea064453d7535b82e4c32092',
+ ),
+ 'symfony/console' =>
+ array (
+ 'pretty_version' => 'v5.1.7',
+ 'version' => '5.1.7.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'ae789a8a2ad189ce7e8216942cdb9b77319f5eb8',
+ ),
+ 'symfony/deprecation-contracts' =>
+ array (
+ 'pretty_version' => 'v2.1.2',
+ 'version' => '2.1.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'dd99cb3a0aff6cadd2a8d7d7ed72c2161e218337',
+ ),
+ 'symfony/event-dispatcher' =>
+ array (
+ 'pretty_version' => 'v5.1.2',
+ 'version' => '5.1.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'cc0d059e2e997e79ca34125a52f3e33de4424ac7',
+ ),
+ 'symfony/event-dispatcher-contracts' =>
+ array (
+ 'pretty_version' => 'v2.1.2',
+ 'version' => '2.1.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '405952c4e90941a17e52ef7489a2bd94870bb290',
+ ),
+ 'symfony/event-dispatcher-implementation' =>
+ array (
+ 'provided' =>
+ array (
+ 0 => '2.0',
+ ),
+ ),
+ 'symfony/filesystem' =>
+ array (
+ 'pretty_version' => 'v5.1.2',
+ 'version' => '5.1.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '6e4320f06d5f2cce0d96530162491f4465179157',
+ ),
+ 'symfony/finder' =>
+ array (
+ 'pretty_version' => 'v5.1.2',
+ 'version' => '5.1.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '4298870062bfc667cb78d2b379be4bf5dec5f187',
+ ),
+ 'symfony/options-resolver' =>
+ array (
+ 'pretty_version' => 'v5.1.2',
+ 'version' => '5.1.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '663f5dd5e14057d1954fe721f9709d35837f2447',
+ ),
+ 'symfony/polyfill-ctype' =>
+ array (
+ 'pretty_version' => 'v1.18.1',
+ 'version' => '1.18.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '1c302646f6efc070cd46856e600e5e0684d6b454',
+ ),
+ 'symfony/polyfill-intl-grapheme' =>
+ array (
+ 'pretty_version' => 'v1.18.1',
+ 'version' => '1.18.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'b740103edbdcc39602239ee8860f0f45a8eb9aa5',
+ ),
+ 'symfony/polyfill-intl-normalizer' =>
+ array (
+ 'pretty_version' => 'v1.18.1',
+ 'version' => '1.18.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e',
+ ),
+ 'symfony/polyfill-mbstring' =>
+ array (
+ 'pretty_version' => 'v1.18.1',
+ 'version' => '1.18.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'a6977d63bf9a0ad4c65cd352709e230876f9904a',
+ ),
+ 'symfony/polyfill-php70' =>
+ array (
+ 'pretty_version' => 'v1.17.1',
+ 'version' => '1.17.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '471b096aede7025bace8eb356b9ac801aaba7e2d',
+ ),
+ 'symfony/polyfill-php72' =>
+ array (
+ 'pretty_version' => 'v1.17.0',
+ 'version' => '1.17.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'f048e612a3905f34931127360bdd2def19a5e582',
+ ),
+ 'symfony/polyfill-php73' =>
+ array (
+ 'pretty_version' => 'v1.18.1',
+ 'version' => '1.18.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'fffa1a52a023e782cdcc221d781fe1ec8f87fcca',
+ ),
+ 'symfony/polyfill-php80' =>
+ array (
+ 'pretty_version' => 'v1.18.1',
+ 'version' => '1.18.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'd87d5766cbf48d72388a9f6b85f280c8ad51f981',
+ ),
+ 'symfony/process' =>
+ array (
+ 'pretty_version' => 'v5.1.2',
+ 'version' => '5.1.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '7f6378c1fa2147eeb1b4c385856ce9de0d46ebd1',
+ ),
+ 'symfony/service-contracts' =>
+ array (
+ 'pretty_version' => 'v2.2.0',
+ 'version' => '2.2.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'd15da7ba4957ffb8f1747218be9e1a121fd298a1',
+ ),
+ 'symfony/stopwatch' =>
+ array (
+ 'pretty_version' => 'v5.1.2',
+ 'version' => '5.1.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '0f7c58cf81dbb5dd67d423a89d577524a2ec0323',
+ ),
+ 'symfony/string' =>
+ array (
+ 'pretty_version' => 'v5.1.7',
+ 'version' => '5.1.7.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '4a9afe9d07bac506f75bcee8ed3ce76da5a9343e',
+ ),
+ 'vimeo/psalm' =>
+ array (
+ 'pretty_version' => '4.0.1',
+ 'version' => '4.0.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'b1e2e30026936ef8d5bf6a354d1c3959b6231f44',
+ ),
+ 'webmozart/assert' =>
+ array (
+ 'pretty_version' => '1.9.1',
+ 'version' => '1.9.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'bafc69caeb4d49c39fd0779086c03a3738cbb389',
+ ),
+ 'webmozart/glob' =>
+ array (
+ 'pretty_version' => '4.1.0',
+ 'version' => '4.1.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe',
+ ),
+ 'webmozart/path-util' =>
+ array (
+ 'pretty_version' => '2.3.0',
+ 'version' => '2.3.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'd939f7edc24c9a1bb9c0dee5cb05d8e859490725',
+ ),
+ ),
+);
+
+
+
+
+
+
+
+public static function getInstalledPackages()
+{
+return array_keys(self::$installed['versions']);
+}
+
+
+
+
+
+
+
+
+
+public static function isInstalled($packageName)
+{
+return isset(self::$installed['versions'][$packageName]);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+public static function satisfies(VersionParser $parser, $packageName, $constraint)
+{
+$constraint = $parser->parseConstraints($constraint);
+$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
+
+return $provided->matches($constraint);
+}
+
+
+
+
+
+
+
+
+
+
+public static function getVersionRanges($packageName)
+{
+if (!isset(self::$installed['versions'][$packageName])) {
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+}
+
+$ranges = array();
+if (isset(self::$installed['versions'][$packageName]['pretty_version'])) {
+$ranges[] = self::$installed['versions'][$packageName]['pretty_version'];
+}
+if (array_key_exists('aliases', self::$installed['versions'][$packageName])) {
+$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']);
+}
+if (array_key_exists('replaced', self::$installed['versions'][$packageName])) {
+$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']);
+}
+if (array_key_exists('provided', self::$installed['versions'][$packageName])) {
+$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']);
+}
+
+return implode(' || ', $ranges);
+}
+
+
+
+
+
+public static function getVersion($packageName)
+{
+if (!isset(self::$installed['versions'][$packageName])) {
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+}
+
+if (!isset(self::$installed['versions'][$packageName]['version'])) {
+return null;
+}
+
+return self::$installed['versions'][$packageName]['version'];
+}
+
+
+
+
+
+public static function getPrettyVersion($packageName)
+{
+if (!isset(self::$installed['versions'][$packageName])) {
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+}
+
+if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) {
+return null;
+}
+
+return self::$installed['versions'][$packageName]['pretty_version'];
+}
+
+
+
+
+
+public static function getReference($packageName)
+{
+if (!isset(self::$installed['versions'][$packageName])) {
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+}
+
+if (!isset(self::$installed['versions'][$packageName]['reference'])) {
+return null;
+}
+
+return self::$installed['versions'][$packageName]['reference'];
+}
+
+
+
+
+
+public static function getRootPackage()
+{
+return self::$installed['root'];
+}
+
+
+
+
+
+
+
+public static function getRawData()
+{
+return self::$installed;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+public static function reload($data)
+{
+self::$installed = $data;
+}
+}
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index a966ad04f5ff4..c0b2ecaca1301 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -6,6 +6,172 @@
$baseDir = dirname(dirname($vendorDir));
return array(
+ 'AdvancedJsonRpc\\Dispatcher' => $vendorDir . '/felixfbecker/advanced-json-rpc/lib/Dispatcher.php',
+ 'AdvancedJsonRpc\\Error' => $vendorDir . '/felixfbecker/advanced-json-rpc/lib/Error.php',
+ 'AdvancedJsonRpc\\ErrorCode' => $vendorDir . '/felixfbecker/advanced-json-rpc/lib/ErrorCode.php',
+ 'AdvancedJsonRpc\\ErrorResponse' => $vendorDir . '/felixfbecker/advanced-json-rpc/lib/ErrorResponse.php',
+ 'AdvancedJsonRpc\\Message' => $vendorDir . '/felixfbecker/advanced-json-rpc/lib/Message.php',
+ 'AdvancedJsonRpc\\Notification' => $vendorDir . '/felixfbecker/advanced-json-rpc/lib/Notification.php',
+ 'AdvancedJsonRpc\\Request' => $vendorDir . '/felixfbecker/advanced-json-rpc/lib/Request.php',
+ 'AdvancedJsonRpc\\Response' => $vendorDir . '/felixfbecker/advanced-json-rpc/lib/Response.php',
+ 'AdvancedJsonRpc\\SuccessResponse' => $vendorDir . '/felixfbecker/advanced-json-rpc/lib/SuccessResponse.php',
+ 'Amp\\ByteStream\\Base64\\Base64DecodingInputStream' => $vendorDir . '/amphp/byte-stream/lib/Base64/Base64DecodingInputStream.php',
+ 'Amp\\ByteStream\\Base64\\Base64DecodingOutputStream' => $vendorDir . '/amphp/byte-stream/lib/Base64/Base64DecodingOutputStream.php',
+ 'Amp\\ByteStream\\Base64\\Base64EncodingInputStream' => $vendorDir . '/amphp/byte-stream/lib/Base64/Base64EncodingInputStream.php',
+ 'Amp\\ByteStream\\Base64\\Base64EncodingOutputStream' => $vendorDir . '/amphp/byte-stream/lib/Base64/Base64EncodingOutputStream.php',
+ 'Amp\\ByteStream\\ClosedException' => $vendorDir . '/amphp/byte-stream/lib/ClosedException.php',
+ 'Amp\\ByteStream\\InMemoryStream' => $vendorDir . '/amphp/byte-stream/lib/InMemoryStream.php',
+ 'Amp\\ByteStream\\InputStream' => $vendorDir . '/amphp/byte-stream/lib/InputStream.php',
+ 'Amp\\ByteStream\\InputStreamChain' => $vendorDir . '/amphp/byte-stream/lib/InputStreamChain.php',
+ 'Amp\\ByteStream\\IteratorStream' => $vendorDir . '/amphp/byte-stream/lib/IteratorStream.php',
+ 'Amp\\ByteStream\\LineReader' => $vendorDir . '/amphp/byte-stream/lib/LineReader.php',
+ 'Amp\\ByteStream\\Message' => $vendorDir . '/amphp/byte-stream/lib/Message.php',
+ 'Amp\\ByteStream\\OutputBuffer' => $vendorDir . '/amphp/byte-stream/lib/OutputBuffer.php',
+ 'Amp\\ByteStream\\OutputStream' => $vendorDir . '/amphp/byte-stream/lib/OutputStream.php',
+ 'Amp\\ByteStream\\Payload' => $vendorDir . '/amphp/byte-stream/lib/Payload.php',
+ 'Amp\\ByteStream\\PendingReadError' => $vendorDir . '/amphp/byte-stream/lib/PendingReadError.php',
+ 'Amp\\ByteStream\\ResourceInputStream' => $vendorDir . '/amphp/byte-stream/lib/ResourceInputStream.php',
+ 'Amp\\ByteStream\\ResourceOutputStream' => $vendorDir . '/amphp/byte-stream/lib/ResourceOutputStream.php',
+ 'Amp\\ByteStream\\StreamException' => $vendorDir . '/amphp/byte-stream/lib/StreamException.php',
+ 'Amp\\ByteStream\\ZlibInputStream' => $vendorDir . '/amphp/byte-stream/lib/ZlibInputStream.php',
+ 'Amp\\ByteStream\\ZlibOutputStream' => $vendorDir . '/amphp/byte-stream/lib/ZlibOutputStream.php',
+ 'Amp\\CallableMaker' => $vendorDir . '/amphp/amp/lib/CallableMaker.php',
+ 'Amp\\CancellationToken' => $vendorDir . '/amphp/amp/lib/CancellationToken.php',
+ 'Amp\\CancellationTokenSource' => $vendorDir . '/amphp/amp/lib/CancellationTokenSource.php',
+ 'Amp\\CancelledException' => $vendorDir . '/amphp/amp/lib/CancelledException.php',
+ 'Amp\\CombinedCancellationToken' => $vendorDir . '/amphp/amp/lib/CombinedCancellationToken.php',
+ 'Amp\\Coroutine' => $vendorDir . '/amphp/amp/lib/Coroutine.php',
+ 'Amp\\Deferred' => $vendorDir . '/amphp/amp/lib/Deferred.php',
+ 'Amp\\Delayed' => $vendorDir . '/amphp/amp/lib/Delayed.php',
+ 'Amp\\Emitter' => $vendorDir . '/amphp/amp/lib/Emitter.php',
+ 'Amp\\Failure' => $vendorDir . '/amphp/amp/lib/Failure.php',
+ 'Amp\\Internal\\Placeholder' => $vendorDir . '/amphp/amp/lib/Internal/Placeholder.php',
+ 'Amp\\Internal\\PrivateIterator' => $vendorDir . '/amphp/amp/lib/Internal/PrivateIterator.php',
+ 'Amp\\Internal\\PrivatePromise' => $vendorDir . '/amphp/amp/lib/Internal/PrivatePromise.php',
+ 'Amp\\Internal\\Producer' => $vendorDir . '/amphp/amp/lib/Internal/Producer.php',
+ 'Amp\\Internal\\ResolutionQueue' => $vendorDir . '/amphp/amp/lib/Internal/ResolutionQueue.php',
+ 'Amp\\InvalidYieldError' => $vendorDir . '/amphp/amp/lib/InvalidYieldError.php',
+ 'Amp\\Iterator' => $vendorDir . '/amphp/amp/lib/Iterator.php',
+ 'Amp\\LazyPromise' => $vendorDir . '/amphp/amp/lib/LazyPromise.php',
+ 'Amp\\Loop' => $vendorDir . '/amphp/amp/lib/Loop.php',
+ 'Amp\\Loop\\Driver' => $vendorDir . '/amphp/amp/lib/Loop/Driver.php',
+ 'Amp\\Loop\\DriverFactory' => $vendorDir . '/amphp/amp/lib/Loop/DriverFactory.php',
+ 'Amp\\Loop\\EvDriver' => $vendorDir . '/amphp/amp/lib/Loop/EvDriver.php',
+ 'Amp\\Loop\\EventDriver' => $vendorDir . '/amphp/amp/lib/Loop/EventDriver.php',
+ 'Amp\\Loop\\Internal\\TimerQueue' => $vendorDir . '/amphp/amp/lib/Loop/Internal/TimerQueue.php',
+ 'Amp\\Loop\\Internal\\TimerQueueEntry' => $vendorDir . '/amphp/amp/lib/Loop/Internal/TimerQueueEntry.php',
+ 'Amp\\Loop\\InvalidWatcherError' => $vendorDir . '/amphp/amp/lib/Loop/InvalidWatcherError.php',
+ 'Amp\\Loop\\NativeDriver' => $vendorDir . '/amphp/amp/lib/Loop/NativeDriver.php',
+ 'Amp\\Loop\\TracingDriver' => $vendorDir . '/amphp/amp/lib/Loop/TracingDriver.php',
+ 'Amp\\Loop\\UnsupportedFeatureException' => $vendorDir . '/amphp/amp/lib/Loop/UnsupportedFeatureException.php',
+ 'Amp\\Loop\\UvDriver' => $vendorDir . '/amphp/amp/lib/Loop/UvDriver.php',
+ 'Amp\\Loop\\Watcher' => $vendorDir . '/amphp/amp/lib/Loop/Watcher.php',
+ 'Amp\\MultiReasonException' => $vendorDir . '/amphp/amp/lib/MultiReasonException.php',
+ 'Amp\\NullCancellationToken' => $vendorDir . '/amphp/amp/lib/NullCancellationToken.php',
+ 'Amp\\Producer' => $vendorDir . '/amphp/amp/lib/Producer.php',
+ 'Amp\\Promise' => $vendorDir . '/amphp/amp/lib/Promise.php',
+ 'Amp\\Struct' => $vendorDir . '/amphp/amp/lib/Struct.php',
+ 'Amp\\Success' => $vendorDir . '/amphp/amp/lib/Success.php',
+ 'Amp\\TimeoutCancellationToken' => $vendorDir . '/amphp/amp/lib/TimeoutCancellationToken.php',
+ 'Amp\\TimeoutException' => $vendorDir . '/amphp/amp/lib/TimeoutException.php',
+ 'ArithmeticError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
+ 'AssertionError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
+ 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
+ 'Composer\\Semver\\Comparator' => $vendorDir . '/composer/semver/src/Comparator.php',
+ 'Composer\\Semver\\Constraint\\AbstractConstraint' => $vendorDir . '/composer/semver/src/Constraint/AbstractConstraint.php',
+ 'Composer\\Semver\\Constraint\\Constraint' => $vendorDir . '/composer/semver/src/Constraint/Constraint.php',
+ 'Composer\\Semver\\Constraint\\ConstraintInterface' => $vendorDir . '/composer/semver/src/Constraint/ConstraintInterface.php',
+ 'Composer\\Semver\\Constraint\\EmptyConstraint' => $vendorDir . '/composer/semver/src/Constraint/EmptyConstraint.php',
+ 'Composer\\Semver\\Constraint\\MultiConstraint' => $vendorDir . '/composer/semver/src/Constraint/MultiConstraint.php',
+ 'Composer\\Semver\\Semver' => $vendorDir . '/composer/semver/src/Semver.php',
+ 'Composer\\Semver\\VersionParser' => $vendorDir . '/composer/semver/src/VersionParser.php',
+ 'Composer\\XdebugHandler\\PhpConfig' => $vendorDir . '/composer/xdebug-handler/src/PhpConfig.php',
+ 'Composer\\XdebugHandler\\Process' => $vendorDir . '/composer/xdebug-handler/src/Process.php',
+ 'Composer\\XdebugHandler\\Status' => $vendorDir . '/composer/xdebug-handler/src/Status.php',
+ 'Composer\\XdebugHandler\\XdebugHandler' => $vendorDir . '/composer/xdebug-handler/src/XdebugHandler.php',
+ 'DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
+ 'Doctrine\\Common\\Annotations\\Annotation' => $vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation.php',
+ 'Doctrine\\Common\\Annotations\\AnnotationException' => $vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php',
+ 'Doctrine\\Common\\Annotations\\AnnotationReader' => $vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationReader.php',
+ 'Doctrine\\Common\\Annotations\\AnnotationRegistry' => $vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php',
+ 'Doctrine\\Common\\Annotations\\Annotation\\Attribute' => $vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attribute.php',
+ 'Doctrine\\Common\\Annotations\\Annotation\\Attributes' => $vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attributes.php',
+ 'Doctrine\\Common\\Annotations\\Annotation\\Enum' => $vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Enum.php',
+ 'Doctrine\\Common\\Annotations\\Annotation\\IgnoreAnnotation' => $vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/IgnoreAnnotation.php',
+ 'Doctrine\\Common\\Annotations\\Annotation\\Required' => $vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Required.php',
+ 'Doctrine\\Common\\Annotations\\Annotation\\Target' => $vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php',
+ 'Doctrine\\Common\\Annotations\\CachedReader' => $vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php',
+ 'Doctrine\\Common\\Annotations\\DocLexer' => $vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php',
+ 'Doctrine\\Common\\Annotations\\DocParser' => $vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php',
+ 'Doctrine\\Common\\Annotations\\FileCacheReader' => $vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations/FileCacheReader.php',
+ 'Doctrine\\Common\\Annotations\\IndexedReader' => $vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations/IndexedReader.php',
+ 'Doctrine\\Common\\Annotations\\PhpParser' => $vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php',
+ 'Doctrine\\Common\\Annotations\\Reader' => $vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php',
+ 'Doctrine\\Common\\Annotations\\SimpleAnnotationReader' => $vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations/SimpleAnnotationReader.php',
+ 'Doctrine\\Common\\Annotations\\TokenParser' => $vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations/TokenParser.php',
+ 'Doctrine\\Common\\Lexer\\AbstractLexer' => $vendorDir . '/doctrine/lexer/lib/Doctrine/Common/Lexer/AbstractLexer.php',
+ 'Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php',
+ 'JsonException' => $vendorDir . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
+ 'JsonMapper' => $vendorDir . '/netresearch/jsonmapper/src/JsonMapper.php',
+ 'JsonMapper_Exception' => $vendorDir . '/netresearch/jsonmapper/src/JsonMapper/Exception.php',
+ 'LSS\\Array2XML' => $vendorDir . '/openlss/lib-array2xml/LSS/Array2XML.php',
+ 'LSS\\XML2Array' => $vendorDir . '/openlss/lib-array2xml/LSS/XML2Array.php',
+ 'LanguageServerProtocol\\ClientCapabilities' => $vendorDir . '/felixfbecker/language-server-protocol/src/ClientCapabilities.php',
+ 'LanguageServerProtocol\\CodeActionContext' => $vendorDir . '/felixfbecker/language-server-protocol/src/CodeActionContext.php',
+ 'LanguageServerProtocol\\CodeLens' => $vendorDir . '/felixfbecker/language-server-protocol/src/CodeLens.php',
+ 'LanguageServerProtocol\\CodeLensOptions' => $vendorDir . '/felixfbecker/language-server-protocol/src/CodeLensOptions.php',
+ 'LanguageServerProtocol\\Command' => $vendorDir . '/felixfbecker/language-server-protocol/src/Command.php',
+ 'LanguageServerProtocol\\CompletionContext' => $vendorDir . '/felixfbecker/language-server-protocol/src/CompletionContext.php',
+ 'LanguageServerProtocol\\CompletionItem' => $vendorDir . '/felixfbecker/language-server-protocol/src/CompletionItem.php',
+ 'LanguageServerProtocol\\CompletionItemKind' => $vendorDir . '/felixfbecker/language-server-protocol/src/CompletionItemKind.php',
+ 'LanguageServerProtocol\\CompletionList' => $vendorDir . '/felixfbecker/language-server-protocol/src/CompletionList.php',
+ 'LanguageServerProtocol\\CompletionOptions' => $vendorDir . '/felixfbecker/language-server-protocol/src/CompletionOptions.php',
+ 'LanguageServerProtocol\\CompletionTriggerKind' => $vendorDir . '/felixfbecker/language-server-protocol/src/CompletionTriggerKind.php',
+ 'LanguageServerProtocol\\ContentChangeEvent' => $vendorDir . '/felixfbecker/language-server-protocol/src/ContentChangeEvent.php',
+ 'LanguageServerProtocol\\DependencyReference' => $vendorDir . '/felixfbecker/language-server-protocol/src/DependencyReference.php',
+ 'LanguageServerProtocol\\Diagnostic' => $vendorDir . '/felixfbecker/language-server-protocol/src/Diagnostic.php',
+ 'LanguageServerProtocol\\DiagnosticSeverity' => $vendorDir . '/felixfbecker/language-server-protocol/src/DiagnosticSeverity.php',
+ 'LanguageServerProtocol\\DocumentHighlight' => $vendorDir . '/felixfbecker/language-server-protocol/src/DocumentHighlight.php',
+ 'LanguageServerProtocol\\DocumentHighlightKind' => $vendorDir . '/felixfbecker/language-server-protocol/src/DocumentHighlightKind.php',
+ 'LanguageServerProtocol\\DocumentOnTypeFormattingOptions' => $vendorDir . '/felixfbecker/language-server-protocol/src/DocumentOnTypeFormattingOptions.php',
+ 'LanguageServerProtocol\\ErrorCode' => $vendorDir . '/felixfbecker/language-server-protocol/src/ErrorCode.php',
+ 'LanguageServerProtocol\\FileChangeType' => $vendorDir . '/felixfbecker/language-server-protocol/src/FileChangeType.php',
+ 'LanguageServerProtocol\\FileEvent' => $vendorDir . '/felixfbecker/language-server-protocol/src/FileEvent.php',
+ 'LanguageServerProtocol\\FormattingOptions' => $vendorDir . '/felixfbecker/language-server-protocol/src/FormattingOptions.php',
+ 'LanguageServerProtocol\\Hover' => $vendorDir . '/felixfbecker/language-server-protocol/src/Hover.php',
+ 'LanguageServerProtocol\\InitializeResult' => $vendorDir . '/felixfbecker/language-server-protocol/src/InitializeResult.php',
+ 'LanguageServerProtocol\\InsertTextFormat' => $vendorDir . '/felixfbecker/language-server-protocol/src/InsertTextFormat.php',
+ 'LanguageServerProtocol\\Location' => $vendorDir . '/felixfbecker/language-server-protocol/src/Location.php',
+ 'LanguageServerProtocol\\MarkedString' => $vendorDir . '/felixfbecker/language-server-protocol/src/MarkedString.php',
+ 'LanguageServerProtocol\\MarkupContent' => $vendorDir . '/felixfbecker/language-server-protocol/src/MarkupContent.php',
+ 'LanguageServerProtocol\\MarkupKind' => $vendorDir . '/felixfbecker/language-server-protocol/src/MarkupKind.php',
+ 'LanguageServerProtocol\\MessageActionItem' => $vendorDir . '/felixfbecker/language-server-protocol/src/MessageActionItem.php',
+ 'LanguageServerProtocol\\MessageType' => $vendorDir . '/felixfbecker/language-server-protocol/src/MessageType.php',
+ 'LanguageServerProtocol\\PackageDescriptor' => $vendorDir . '/felixfbecker/language-server-protocol/src/PackageDescriptor.php',
+ 'LanguageServerProtocol\\ParameterInformation' => $vendorDir . '/felixfbecker/language-server-protocol/src/ParameterInformation.php',
+ 'LanguageServerProtocol\\Position' => $vendorDir . '/felixfbecker/language-server-protocol/src/Position.php',
+ 'LanguageServerProtocol\\Range' => $vendorDir . '/felixfbecker/language-server-protocol/src/Range.php',
+ 'LanguageServerProtocol\\ReferenceContext' => $vendorDir . '/felixfbecker/language-server-protocol/src/ReferenceContext.php',
+ 'LanguageServerProtocol\\ReferenceInformation' => $vendorDir . '/felixfbecker/language-server-protocol/src/ReferenceInformation.php',
+ 'LanguageServerProtocol\\SaveOptions' => $vendorDir . '/felixfbecker/language-server-protocol/src/SaveOptions.php',
+ 'LanguageServerProtocol\\ServerCapabilities' => $vendorDir . '/felixfbecker/language-server-protocol/src/ServerCapabilities.php',
+ 'LanguageServerProtocol\\SignatureHelp' => $vendorDir . '/felixfbecker/language-server-protocol/src/SignatureHelp.php',
+ 'LanguageServerProtocol\\SignatureHelpOptions' => $vendorDir . '/felixfbecker/language-server-protocol/src/SignatureHelpOptions.php',
+ 'LanguageServerProtocol\\SignatureInformation' => $vendorDir . '/felixfbecker/language-server-protocol/src/SignatureInformation.php',
+ 'LanguageServerProtocol\\SymbolDescriptor' => $vendorDir . '/felixfbecker/language-server-protocol/src/SymbolDescriptor.php',
+ 'LanguageServerProtocol\\SymbolInformation' => $vendorDir . '/felixfbecker/language-server-protocol/src/SymbolInformation.php',
+ 'LanguageServerProtocol\\SymbolKind' => $vendorDir . '/felixfbecker/language-server-protocol/src/SymbolKind.php',
+ 'LanguageServerProtocol\\SymbolLocationInformation' => $vendorDir . '/felixfbecker/language-server-protocol/src/SymbolLocationInformation.php',
+ 'LanguageServerProtocol\\TextDocumentContentChangeEvent' => $vendorDir . '/felixfbecker/language-server-protocol/src/TextDocumentContentChangeEvent.php',
+ 'LanguageServerProtocol\\TextDocumentIdentifier' => $vendorDir . '/felixfbecker/language-server-protocol/src/TextDocumentIdentifier.php',
+ 'LanguageServerProtocol\\TextDocumentItem' => $vendorDir . '/felixfbecker/language-server-protocol/src/TextDocumentItem.php',
+ 'LanguageServerProtocol\\TextDocumentSyncKind' => $vendorDir . '/felixfbecker/language-server-protocol/src/TextDocumentSyncKind.php',
+ 'LanguageServerProtocol\\TextDocumentSyncOptions' => $vendorDir . '/felixfbecker/language-server-protocol/src/TextDocumentSyncOptions.php',
+ 'LanguageServerProtocol\\TextEdit' => $vendorDir . '/felixfbecker/language-server-protocol/src/TextEdit.php',
+ 'LanguageServerProtocol\\VersionedTextDocumentIdentifier' => $vendorDir . '/felixfbecker/language-server-protocol/src/VersionedTextDocumentIdentifier.php',
+ 'LanguageServerProtocol\\WorkspaceEdit' => $vendorDir . '/felixfbecker/language-server-protocol/src/WorkspaceEdit.php',
+ 'Nextcloud\\CodingStandard\\Config' => $vendorDir . '/nextcloud/coding-standard/src/Config.php',
+ 'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
'OCP\\API' => $baseDir . '/lib/public/API.php',
'OCP\\Accounts\\IAccount' => $baseDir . '/lib/public/Accounts/IAccount.php',
'OCP\\Accounts\\IAccountManager' => $baseDir . '/lib/public/Accounts/IAccountManager.php',
@@ -1388,4 +1554,1750 @@
'OC_Template' => $baseDir . '/lib/private/legacy/OC_Template.php',
'OC_User' => $baseDir . '/lib/private/legacy/OC_User.php',
'OC_Util' => $baseDir . '/lib/private/legacy/OC_Util.php',
+ 'PackageVersions\\FallbackVersions' => $vendorDir . '/composer/package-versions-deprecated/src/PackageVersions/FallbackVersions.php',
+ 'PackageVersions\\Installer' => $vendorDir . '/composer/package-versions-deprecated/src/PackageVersions/Installer.php',
+ 'PackageVersions\\Versions' => $vendorDir . '/composer/package-versions-deprecated/src/PackageVersions/Versions.php',
+ 'ParseError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ParseError.php',
+ 'PhpCsFixer\\AbstractAlignFixerHelper' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractAlignFixerHelper.php',
+ 'PhpCsFixer\\AbstractDoctrineAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractDoctrineAnnotationFixer.php',
+ 'PhpCsFixer\\AbstractFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractFixer.php',
+ 'PhpCsFixer\\AbstractFopenFlagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractFopenFlagFixer.php',
+ 'PhpCsFixer\\AbstractFunctionReferenceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractFunctionReferenceFixer.php',
+ 'PhpCsFixer\\AbstractLinesBeforeNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractLinesBeforeNamespaceFixer.php',
+ 'PhpCsFixer\\AbstractNoUselessElseFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractNoUselessElseFixer.php',
+ 'PhpCsFixer\\AbstractPhpdocTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractPhpdocTypesFixer.php',
+ 'PhpCsFixer\\AbstractProxyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractProxyFixer.php',
+ 'PhpCsFixer\\AbstractPsrAutoloadingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractPsrAutoloadingFixer.php',
+ 'PhpCsFixer\\Cache\\Cache' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/Cache.php',
+ 'PhpCsFixer\\Cache\\CacheInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/CacheInterface.php',
+ 'PhpCsFixer\\Cache\\CacheManagerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/CacheManagerInterface.php',
+ 'PhpCsFixer\\Cache\\Directory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/Directory.php',
+ 'PhpCsFixer\\Cache\\DirectoryInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/DirectoryInterface.php',
+ 'PhpCsFixer\\Cache\\FileCacheManager' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/FileCacheManager.php',
+ 'PhpCsFixer\\Cache\\FileHandler' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/FileHandler.php',
+ 'PhpCsFixer\\Cache\\FileHandlerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/FileHandlerInterface.php',
+ 'PhpCsFixer\\Cache\\NullCacheManager' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/NullCacheManager.php',
+ 'PhpCsFixer\\Cache\\Signature' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/Signature.php',
+ 'PhpCsFixer\\Cache\\SignatureInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/SignatureInterface.php',
+ 'PhpCsFixer\\Config' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Config.php',
+ 'PhpCsFixer\\ConfigInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigInterface.php',
+ 'PhpCsFixer\\ConfigurationException\\InvalidConfigurationException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidConfigurationException.php',
+ 'PhpCsFixer\\ConfigurationException\\InvalidFixerConfigurationException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidFixerConfigurationException.php',
+ 'PhpCsFixer\\ConfigurationException\\InvalidForEnvFixerConfigurationException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidForEnvFixerConfigurationException.php',
+ 'PhpCsFixer\\ConfigurationException\\RequiredFixerConfigurationException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigurationException/RequiredFixerConfigurationException.php',
+ 'PhpCsFixer\\Console\\Application' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Application.php',
+ 'PhpCsFixer\\Console\\Command\\DescribeCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/DescribeCommand.php',
+ 'PhpCsFixer\\Console\\Command\\DescribeNameNotFoundException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/DescribeNameNotFoundException.php',
+ 'PhpCsFixer\\Console\\Command\\FixCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/FixCommand.php',
+ 'PhpCsFixer\\Console\\Command\\FixCommandExitStatusCalculator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/FixCommandExitStatusCalculator.php',
+ 'PhpCsFixer\\Console\\Command\\HelpCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/HelpCommand.php',
+ 'PhpCsFixer\\Console\\Command\\ReadmeCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/ReadmeCommand.php',
+ 'PhpCsFixer\\Console\\Command\\SelfUpdateCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/SelfUpdateCommand.php',
+ 'PhpCsFixer\\Console\\ConfigurationResolver' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/ConfigurationResolver.php',
+ 'PhpCsFixer\\Console\\Output\\ErrorOutput' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/ErrorOutput.php',
+ 'PhpCsFixer\\Console\\Output\\NullOutput' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/NullOutput.php',
+ 'PhpCsFixer\\Console\\Output\\ProcessOutput' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/ProcessOutput.php',
+ 'PhpCsFixer\\Console\\Output\\ProcessOutputInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/ProcessOutputInterface.php',
+ 'PhpCsFixer\\Console\\SelfUpdate\\GithubClient' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClient.php',
+ 'PhpCsFixer\\Console\\SelfUpdate\\GithubClientInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClientInterface.php',
+ 'PhpCsFixer\\Console\\SelfUpdate\\NewVersionChecker' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionChecker.php',
+ 'PhpCsFixer\\Console\\SelfUpdate\\NewVersionCheckerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionCheckerInterface.php',
+ 'PhpCsFixer\\Console\\WarningsDetector' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/WarningsDetector.php',
+ 'PhpCsFixer\\Diff\\GeckoPackages\\DiffOutputBuilder\\ConfigurationException' => $vendorDir . '/php-cs-fixer/diff/src/GeckoPackages/DiffOutputBuilder/ConfigurationException.php',
+ 'PhpCsFixer\\Diff\\GeckoPackages\\DiffOutputBuilder\\UnifiedDiffOutputBuilder' => $vendorDir . '/php-cs-fixer/diff/src/GeckoPackages/DiffOutputBuilder/UnifiedDiffOutputBuilder.php',
+ 'PhpCsFixer\\Diff\\v1_4\\Chunk' => $vendorDir . '/php-cs-fixer/diff/src/v1_4/Chunk.php',
+ 'PhpCsFixer\\Diff\\v1_4\\Diff' => $vendorDir . '/php-cs-fixer/diff/src/v1_4/Diff.php',
+ 'PhpCsFixer\\Diff\\v1_4\\Differ' => $vendorDir . '/php-cs-fixer/diff/src/v1_4/Differ.php',
+ 'PhpCsFixer\\Diff\\v1_4\\LCS\\LongestCommonSubsequence' => $vendorDir . '/php-cs-fixer/diff/src/v1_4/LCS/LongestCommonSubsequence.php',
+ 'PhpCsFixer\\Diff\\v1_4\\LCS\\MemoryEfficientImplementation' => $vendorDir . '/php-cs-fixer/diff/src/v1_4/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php',
+ 'PhpCsFixer\\Diff\\v1_4\\LCS\\TimeEfficientImplementation' => $vendorDir . '/php-cs-fixer/diff/src/v1_4/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php',
+ 'PhpCsFixer\\Diff\\v1_4\\Line' => $vendorDir . '/php-cs-fixer/diff/src/v1_4/Line.php',
+ 'PhpCsFixer\\Diff\\v1_4\\Parser' => $vendorDir . '/php-cs-fixer/diff/src/v1_4/Parser.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Chunk' => $vendorDir . '/php-cs-fixer/diff/src/v2_0/Chunk.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Diff' => $vendorDir . '/php-cs-fixer/diff/src/v2_0/Diff.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Differ' => $vendorDir . '/php-cs-fixer/diff/src/v2_0/Differ.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Exception' => $vendorDir . '/php-cs-fixer/diff/src/v2_0/Exception/Exception.php',
+ 'PhpCsFixer\\Diff\\v2_0\\InvalidArgumentException' => $vendorDir . '/php-cs-fixer/diff/src/v2_0/Exception/InvalidArgumentException.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Line' => $vendorDir . '/php-cs-fixer/diff/src/v2_0/Line.php',
+ 'PhpCsFixer\\Diff\\v2_0\\LongestCommonSubsequenceCalculator' => $vendorDir . '/php-cs-fixer/diff/src/v2_0/LongestCommonSubsequenceCalculator.php',
+ 'PhpCsFixer\\Diff\\v2_0\\MemoryEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/php-cs-fixer/diff/src/v2_0/MemoryEfficientLongestCommonSubsequenceCalculator.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Output\\AbstractChunkOutputBuilder' => $vendorDir . '/php-cs-fixer/diff/src/v2_0/Output/AbstractChunkOutputBuilder.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Output\\DiffOnlyOutputBuilder' => $vendorDir . '/php-cs-fixer/diff/src/v2_0/Output/DiffOnlyOutputBuilder.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Output\\DiffOutputBuilderInterface' => $vendorDir . '/php-cs-fixer/diff/src/v2_0/Output/DiffOutputBuilderInterface.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Output\\UnifiedDiffOutputBuilder' => $vendorDir . '/php-cs-fixer/diff/src/v2_0/Output/UnifiedDiffOutputBuilder.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Parser' => $vendorDir . '/php-cs-fixer/diff/src/v2_0/Parser.php',
+ 'PhpCsFixer\\Diff\\v2_0\\TimeEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/php-cs-fixer/diff/src/v2_0/TimeEfficientLongestCommonSubsequenceCalculator.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Chunk' => $vendorDir . '/php-cs-fixer/diff/src/v3_0/Chunk.php',
+ 'PhpCsFixer\\Diff\\v3_0\\ConfigurationException' => $vendorDir . '/php-cs-fixer/diff/src/v3_0/Exception/ConfigurationException.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Diff' => $vendorDir . '/php-cs-fixer/diff/src/v3_0/Diff.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Differ' => $vendorDir . '/php-cs-fixer/diff/src/v3_0/Differ.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Exception' => $vendorDir . '/php-cs-fixer/diff/src/v3_0/Exception/Exception.php',
+ 'PhpCsFixer\\Diff\\v3_0\\InvalidArgumentException' => $vendorDir . '/php-cs-fixer/diff/src/v3_0/Exception/InvalidArgumentException.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Line' => $vendorDir . '/php-cs-fixer/diff/src/v3_0/Line.php',
+ 'PhpCsFixer\\Diff\\v3_0\\LongestCommonSubsequenceCalculator' => $vendorDir . '/php-cs-fixer/diff/src/v3_0/LongestCommonSubsequenceCalculator.php',
+ 'PhpCsFixer\\Diff\\v3_0\\MemoryEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/php-cs-fixer/diff/src/v3_0/MemoryEfficientLongestCommonSubsequenceCalculator.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Output\\AbstractChunkOutputBuilder' => $vendorDir . '/php-cs-fixer/diff/src/v3_0/Output/AbstractChunkOutputBuilder.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Output\\DiffOnlyOutputBuilder' => $vendorDir . '/php-cs-fixer/diff/src/v3_0/Output/DiffOnlyOutputBuilder.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Output\\DiffOutputBuilderInterface' => $vendorDir . '/php-cs-fixer/diff/src/v3_0/Output/DiffOutputBuilderInterface.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Output\\StrictUnifiedDiffOutputBuilder' => $vendorDir . '/php-cs-fixer/diff/src/v3_0/Output/StrictUnifiedDiffOutputBuilder.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Output\\UnifiedDiffOutputBuilder' => $vendorDir . '/php-cs-fixer/diff/src/v3_0/Output/UnifiedDiffOutputBuilder.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Parser' => $vendorDir . '/php-cs-fixer/diff/src/v3_0/Parser.php',
+ 'PhpCsFixer\\Diff\\v3_0\\TimeEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/php-cs-fixer/diff/src/v3_0/TimeEfficientLongestCommonSubsequenceCalculator.php',
+ 'PhpCsFixer\\Differ\\DiffConsoleFormatter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/DiffConsoleFormatter.php',
+ 'PhpCsFixer\\Differ\\DifferInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/DifferInterface.php',
+ 'PhpCsFixer\\Differ\\FullDiffer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/FullDiffer.php',
+ 'PhpCsFixer\\Differ\\NullDiffer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/NullDiffer.php',
+ 'PhpCsFixer\\Differ\\SebastianBergmannDiffer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/SebastianBergmannDiffer.php',
+ 'PhpCsFixer\\Differ\\SebastianBergmannShortDiffer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/SebastianBergmannShortDiffer.php',
+ 'PhpCsFixer\\Differ\\UnifiedDiffer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/UnifiedDiffer.php',
+ 'PhpCsFixer\\DocBlock\\Annotation' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/Annotation.php',
+ 'PhpCsFixer\\DocBlock\\DocBlock' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/DocBlock.php',
+ 'PhpCsFixer\\DocBlock\\Line' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/Line.php',
+ 'PhpCsFixer\\DocBlock\\ShortDescription' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/ShortDescription.php',
+ 'PhpCsFixer\\DocBlock\\Tag' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/Tag.php',
+ 'PhpCsFixer\\DocBlock\\TagComparator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/TagComparator.php',
+ 'PhpCsFixer\\Doctrine\\Annotation\\Token' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Token.php',
+ 'PhpCsFixer\\Doctrine\\Annotation\\Tokens' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Tokens.php',
+ 'PhpCsFixer\\Error\\Error' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Error/Error.php',
+ 'PhpCsFixer\\Error\\ErrorsManager' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Error/ErrorsManager.php',
+ 'PhpCsFixer\\Event\\Event' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Event/Event.php',
+ 'PhpCsFixer\\FileReader' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FileReader.php',
+ 'PhpCsFixer\\FileRemoval' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FileRemoval.php',
+ 'PhpCsFixer\\Finder' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Finder.php',
+ 'PhpCsFixer\\FixerConfiguration\\AliasedFixerOption' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOption.php',
+ 'PhpCsFixer\\FixerConfiguration\\AliasedFixerOptionBuilder' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOptionBuilder.php',
+ 'PhpCsFixer\\FixerConfiguration\\AllowedValueSubset' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AllowedValueSubset.php',
+ 'PhpCsFixer\\FixerConfiguration\\DeprecatedFixerOption' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOption.php',
+ 'PhpCsFixer\\FixerConfiguration\\DeprecatedFixerOptionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOptionInterface.php',
+ 'PhpCsFixer\\FixerConfiguration\\FixerConfigurationResolver' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolver.php',
+ 'PhpCsFixer\\FixerConfiguration\\FixerConfigurationResolverInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolverInterface.php',
+ 'PhpCsFixer\\FixerConfiguration\\FixerConfigurationResolverRootless' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolverRootless.php',
+ 'PhpCsFixer\\FixerConfiguration\\FixerOption' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOption.php',
+ 'PhpCsFixer\\FixerConfiguration\\FixerOptionBuilder' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionBuilder.php',
+ 'PhpCsFixer\\FixerConfiguration\\FixerOptionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionInterface.php',
+ 'PhpCsFixer\\FixerConfiguration\\InvalidOptionsForEnvException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/InvalidOptionsForEnvException.php',
+ 'PhpCsFixer\\FixerDefinition\\CodeSample' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSample.php',
+ 'PhpCsFixer\\FixerDefinition\\CodeSampleInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSampleInterface.php',
+ 'PhpCsFixer\\FixerDefinition\\FileSpecificCodeSample' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSample.php',
+ 'PhpCsFixer\\FixerDefinition\\FileSpecificCodeSampleInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSampleInterface.php',
+ 'PhpCsFixer\\FixerDefinition\\FixerDefinition' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinition.php',
+ 'PhpCsFixer\\FixerDefinition\\FixerDefinitionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinitionInterface.php',
+ 'PhpCsFixer\\FixerDefinition\\VersionSpecificCodeSample' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSample.php',
+ 'PhpCsFixer\\FixerDefinition\\VersionSpecificCodeSampleInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSampleInterface.php',
+ 'PhpCsFixer\\FixerDefinition\\VersionSpecification' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecification.php',
+ 'PhpCsFixer\\FixerDefinition\\VersionSpecificationInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificationInterface.php',
+ 'PhpCsFixer\\FixerFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerFactory.php',
+ 'PhpCsFixer\\FixerFileProcessedEvent' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerFileProcessedEvent.php',
+ 'PhpCsFixer\\FixerNameValidator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerNameValidator.php',
+ 'PhpCsFixer\\Fixer\\Alias\\BacktickToShellExecFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/BacktickToShellExecFixer.php',
+ 'PhpCsFixer\\Fixer\\Alias\\EregToPregFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/EregToPregFixer.php',
+ 'PhpCsFixer\\Fixer\\Alias\\MbStrFunctionsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/MbStrFunctionsFixer.php',
+ 'PhpCsFixer\\Fixer\\Alias\\NoAliasFunctionsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasFunctionsFixer.php',
+ 'PhpCsFixer\\Fixer\\Alias\\NoMixedEchoPrintFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoMixedEchoPrintFixer.php',
+ 'PhpCsFixer\\Fixer\\Alias\\PowToExponentiationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/PowToExponentiationFixer.php',
+ 'PhpCsFixer\\Fixer\\Alias\\RandomApiMigrationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/RandomApiMigrationFixer.php',
+ 'PhpCsFixer\\Fixer\\Alias\\SetTypeToCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/SetTypeToCastFixer.php',
+ 'PhpCsFixer\\Fixer\\ArrayNotation\\ArraySyntaxFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ArraySyntaxFixer.php',
+ 'PhpCsFixer\\Fixer\\ArrayNotation\\NoMultilineWhitespaceAroundDoubleArrowFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoMultilineWhitespaceAroundDoubleArrowFixer.php',
+ 'PhpCsFixer\\Fixer\\ArrayNotation\\NoTrailingCommaInSinglelineArrayFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoTrailingCommaInSinglelineArrayFixer.php',
+ 'PhpCsFixer\\Fixer\\ArrayNotation\\NoWhitespaceBeforeCommaInArrayFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceBeforeCommaInArrayFixer.php',
+ 'PhpCsFixer\\Fixer\\ArrayNotation\\NormalizeIndexBraceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NormalizeIndexBraceFixer.php',
+ 'PhpCsFixer\\Fixer\\ArrayNotation\\TrailingCommaInMultilineArrayFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/TrailingCommaInMultilineArrayFixer.php',
+ 'PhpCsFixer\\Fixer\\ArrayNotation\\TrimArraySpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/TrimArraySpacesFixer.php',
+ 'PhpCsFixer\\Fixer\\ArrayNotation\\WhitespaceAfterCommaInArrayFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/WhitespaceAfterCommaInArrayFixer.php',
+ 'PhpCsFixer\\Fixer\\Basic\\BracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesFixer.php',
+ 'PhpCsFixer\\Fixer\\Basic\\EncodingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/EncodingFixer.php',
+ 'PhpCsFixer\\Fixer\\Basic\\NonPrintableCharacterFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NonPrintableCharacterFixer.php',
+ 'PhpCsFixer\\Fixer\\Basic\\Psr0Fixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/Psr0Fixer.php',
+ 'PhpCsFixer\\Fixer\\Basic\\Psr4Fixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/Psr4Fixer.php',
+ 'PhpCsFixer\\Fixer\\Casing\\ConstantCaseFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/ConstantCaseFixer.php',
+ 'PhpCsFixer\\Fixer\\Casing\\LowercaseConstantsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseConstantsFixer.php',
+ 'PhpCsFixer\\Fixer\\Casing\\LowercaseKeywordsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseKeywordsFixer.php',
+ 'PhpCsFixer\\Fixer\\Casing\\LowercaseStaticReferenceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseStaticReferenceFixer.php',
+ 'PhpCsFixer\\Fixer\\Casing\\MagicConstantCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicConstantCasingFixer.php',
+ 'PhpCsFixer\\Fixer\\Casing\\MagicMethodCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicMethodCasingFixer.php',
+ 'PhpCsFixer\\Fixer\\Casing\\NativeFunctionCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionCasingFixer.php',
+ 'PhpCsFixer\\Fixer\\Casing\\NativeFunctionTypeDeclarationCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionTypeDeclarationCasingFixer.php',
+ 'PhpCsFixer\\Fixer\\CastNotation\\CastSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/CastSpacesFixer.php',
+ 'PhpCsFixer\\Fixer\\CastNotation\\LowercaseCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/LowercaseCastFixer.php',
+ 'PhpCsFixer\\Fixer\\CastNotation\\ModernizeTypesCastingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ModernizeTypesCastingFixer.php',
+ 'PhpCsFixer\\Fixer\\CastNotation\\NoShortBoolCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoShortBoolCastFixer.php',
+ 'PhpCsFixer\\Fixer\\CastNotation\\NoUnsetCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoUnsetCastFixer.php',
+ 'PhpCsFixer\\Fixer\\CastNotation\\ShortScalarCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ShortScalarCastFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\ClassAttributesSeparationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassAttributesSeparationFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\ClassDefinitionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassDefinitionFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\FinalClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalClassFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\FinalInternalClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalInternalClassFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\FinalPublicMethodForAbstractClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalPublicMethodForAbstractClassFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\FinalStaticAccessFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalStaticAccessFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\MethodSeparationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/MethodSeparationFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\NoBlankLinesAfterClassOpeningFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoBlankLinesAfterClassOpeningFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\NoNullPropertyInitializationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoNullPropertyInitializationFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\NoPhp4ConstructorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoPhp4ConstructorFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\NoUnneededFinalMethodFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoUnneededFinalMethodFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedClassElementsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedClassElementsFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedInterfacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedInterfacesFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\ProtectedToPrivateFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ProtectedToPrivateFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\SelfAccessorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfAccessorFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\SelfStaticAccessorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfStaticAccessorFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\SingleClassElementPerStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleClassElementPerStatementFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\SingleTraitInsertPerStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleTraitInsertPerStatementFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\VisibilityRequiredFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/VisibilityRequiredFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassUsage\\DateTimeImmutableFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassUsage/DateTimeImmutableFixer.php',
+ 'PhpCsFixer\\Fixer\\Comment\\CommentToPhpdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/CommentToPhpdocFixer.php',
+ 'PhpCsFixer\\Fixer\\Comment\\HashToSlashCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/HashToSlashCommentFixer.php',
+ 'PhpCsFixer\\Fixer\\Comment\\HeaderCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/HeaderCommentFixer.php',
+ 'PhpCsFixer\\Fixer\\Comment\\MultilineCommentOpeningClosingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/MultilineCommentOpeningClosingFixer.php',
+ 'PhpCsFixer\\Fixer\\Comment\\NoEmptyCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoEmptyCommentFixer.php',
+ 'PhpCsFixer\\Fixer\\Comment\\NoTrailingWhitespaceInCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoTrailingWhitespaceInCommentFixer.php',
+ 'PhpCsFixer\\Fixer\\Comment\\SingleLineCommentStyleFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentStyleFixer.php',
+ 'PhpCsFixer\\Fixer\\ConfigurableFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ConfigurableFixerInterface.php',
+ 'PhpCsFixer\\Fixer\\ConfigurationDefinitionFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ConfigurationDefinitionFixerInterface.php',
+ 'PhpCsFixer\\Fixer\\ConstantNotation\\NativeConstantInvocationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ConstantNotation/NativeConstantInvocationFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\ElseifFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ElseifFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\IncludeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/IncludeFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\NoAlternativeSyntaxFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoAlternativeSyntaxFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\NoBreakCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoBreakCommentFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\NoSuperfluousElseifFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoSuperfluousElseifFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\NoTrailingCommaInListCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoTrailingCommaInListCallFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededControlParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededControlParenthesesFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededCurlyBracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededCurlyBracesFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\NoUselessElseFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUselessElseFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchCaseSemicolonToColonFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSemicolonToColonFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchCaseSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSpaceFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\YodaStyleFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/YodaStyleFixer.php',
+ 'PhpCsFixer\\Fixer\\DefinedFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DefinedFixerInterface.php',
+ 'PhpCsFixer\\Fixer\\DeprecatedFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DeprecatedFixerInterface.php',
+ 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationArrayAssignmentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationArrayAssignmentFixer.php',
+ 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationBracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationBracesFixer.php',
+ 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationIndentationFixer.php',
+ 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationSpacesFixer.php',
+ 'PhpCsFixer\\Fixer\\FixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FixerInterface.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\CombineNestedDirnameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/CombineNestedDirnameFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\FopenFlagOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagOrderFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\FopenFlagsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagsFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\FunctionDeclarationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionDeclarationFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\FunctionTypehintSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionTypehintSpaceFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\ImplodeCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ImplodeCallFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\MethodArgumentSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/MethodArgumentSpaceFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\NativeFunctionInvocationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NativeFunctionInvocationFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\NoSpacesAfterFunctionNameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoSpacesAfterFunctionNameFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\NoUnreachableDefaultArgumentValueFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUnreachableDefaultArgumentValueFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\NullableTypeDeclarationForDefaultNullValueFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NullableTypeDeclarationForDefaultNullValueFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToParamTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToParamTypeFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToReturnTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToReturnTypeFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\ReturnTypeDeclarationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ReturnTypeDeclarationFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\SingleLineThrowFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/SingleLineThrowFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\StaticLambdaFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/StaticLambdaFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\VoidReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/VoidReturnFixer.php',
+ 'PhpCsFixer\\Fixer\\Import\\FullyQualifiedStrictTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/FullyQualifiedStrictTypesFixer.php',
+ 'PhpCsFixer\\Fixer\\Import\\GlobalNamespaceImportFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/GlobalNamespaceImportFixer.php',
+ 'PhpCsFixer\\Fixer\\Import\\NoLeadingImportSlashFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoLeadingImportSlashFixer.php',
+ 'PhpCsFixer\\Fixer\\Import\\NoUnusedImportsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnusedImportsFixer.php',
+ 'PhpCsFixer\\Fixer\\Import\\OrderedImportsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/OrderedImportsFixer.php',
+ 'PhpCsFixer\\Fixer\\Import\\SingleImportPerStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleImportPerStatementFixer.php',
+ 'PhpCsFixer\\Fixer\\Import\\SingleLineAfterImportsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleLineAfterImportsFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\ClassKeywordRemoveFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordRemoveFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\CombineConsecutiveIssetsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveIssetsFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\CombineConsecutiveUnsetsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveUnsetsFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\DeclareEqualNormalizeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareEqualNormalizeFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\DirConstantFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DirConstantFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\ErrorSuppressionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ErrorSuppressionFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\ExplicitIndirectVariableFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ExplicitIndirectVariableFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\FunctionToConstantFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/FunctionToConstantFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\IsNullFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/IsNullFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\NoUnsetOnPropertyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NoUnsetOnPropertyFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\SilencedDeprecationErrorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SilencedDeprecationErrorFixer.php',
+ 'PhpCsFixer\\Fixer\\ListNotation\\ListSyntaxFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ListNotation/ListSyntaxFixer.php',
+ 'PhpCsFixer\\Fixer\\NamespaceNotation\\BlankLineAfterNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLineAfterNamespaceFixer.php',
+ 'PhpCsFixer\\Fixer\\NamespaceNotation\\NoBlankLinesBeforeNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoBlankLinesBeforeNamespaceFixer.php',
+ 'PhpCsFixer\\Fixer\\NamespaceNotation\\NoLeadingNamespaceWhitespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoLeadingNamespaceWhitespaceFixer.php',
+ 'PhpCsFixer\\Fixer\\NamespaceNotation\\SingleBlankLineBeforeNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/SingleBlankLineBeforeNamespaceFixer.php',
+ 'PhpCsFixer\\Fixer\\Naming\\NoHomoglyphNamesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Naming/NoHomoglyphNamesFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\AlignDoubleArrowFixerHelper' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/AlignDoubleArrowFixerHelper.php',
+ 'PhpCsFixer\\Fixer\\Operator\\AlignEqualsFixerHelper' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/AlignEqualsFixerHelper.php',
+ 'PhpCsFixer\\Fixer\\Operator\\BinaryOperatorSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/BinaryOperatorSpacesFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\ConcatSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/ConcatSpaceFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\IncrementStyleFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/IncrementStyleFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\LogicalOperatorsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/LogicalOperatorsFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\NewWithBracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithBracesFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\NotOperatorWithSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSpaceFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\NotOperatorWithSuccessorSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSuccessorSpaceFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\ObjectOperatorWithoutWhitespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/ObjectOperatorWithoutWhitespaceFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\PreIncrementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/PreIncrementFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\StandardizeIncrementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeIncrementFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\StandardizeNotEqualsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeNotEqualsFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\TernaryOperatorSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryOperatorSpacesFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\TernaryToNullCoalescingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToNullCoalescingFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\UnaryOperatorSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/UnaryOperatorSpacesFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpTag\\BlankLineAfterOpeningTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/BlankLineAfterOpeningTagFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpTag\\FullOpeningTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/FullOpeningTagFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpTag\\LinebreakAfterOpeningTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/LinebreakAfterOpeningTagFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpTag\\NoClosingTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/NoClosingTagFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpTag\\NoShortEchoTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/NoShortEchoTagFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitConstructFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitConstructFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDedicateAssertFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDedicateAssertInternalTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertInternalTypeFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitExpectationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitExpectationFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitFqcnAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitFqcnAnnotationFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitInternalClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitInternalClassFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMethodCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMethodCasingFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMockFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMockShortWillReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockShortWillReturnFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitNamespacedFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNamespacedFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitNoExpectationAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNoExpectationAnnotationFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitOrderedCoversFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitOrderedCoversFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitSetUpTearDownVisibilityFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSetUpTearDownVisibilityFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitSizeClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSizeClassFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitStrictFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitStrictFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTargetVersion' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTargetVersion.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestAnnotationFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestCaseStaticMethodCallsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestCaseStaticMethodCallsFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestClassRequiresCoversFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestClassRequiresCoversFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\AlignMultilineCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/AlignMultilineCommentFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\GeneralPhpdocAnnotationRemoveFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocAnnotationRemoveFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\NoBlankLinesAfterPhpdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoBlankLinesAfterPhpdocFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\NoEmptyPhpdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoEmptyPhpdocFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\NoSuperfluousPhpdocTagsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoSuperfluousPhpdocTagsFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAddMissingParamAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAddMissingParamAnnotationFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAlignFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAlignFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAnnotationWithoutDotFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAnnotationWithoutDotFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocIndentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocIndentFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocInlineTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocInlineTagFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocLineSpanFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocLineSpanFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoAccessFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAccessFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoAliasTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAliasTagFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoEmptyReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoEmptyReturnFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoPackageFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoPackageFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoUselessInheritdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoUselessInheritdocFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocReturnSelfReferenceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocReturnSelfReferenceFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocScalarFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocScalarFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSeparationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSeparationFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSingleLineVarSpacingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSingleLineVarSpacingFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSummaryFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSummaryFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocToCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocToCommentFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTrimConsecutiveBlankLineSeparationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimConsecutiveBlankLineSeparationFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTrimFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTypesOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesOrderFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocVarAnnotationCorrectOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarAnnotationCorrectOrderFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocVarWithoutNameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarWithoutNameFixer.php',
+ 'PhpCsFixer\\Fixer\\ReturnNotation\\BlankLineBeforeReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/BlankLineBeforeReturnFixer.php',
+ 'PhpCsFixer\\Fixer\\ReturnNotation\\NoUselessReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/NoUselessReturnFixer.php',
+ 'PhpCsFixer\\Fixer\\ReturnNotation\\ReturnAssignmentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/ReturnAssignmentFixer.php',
+ 'PhpCsFixer\\Fixer\\ReturnNotation\\SimplifiedNullReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/SimplifiedNullReturnFixer.php',
+ 'PhpCsFixer\\Fixer\\Semicolon\\MultilineWhitespaceBeforeSemicolonsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/MultilineWhitespaceBeforeSemicolonsFixer.php',
+ 'PhpCsFixer\\Fixer\\Semicolon\\NoEmptyStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoEmptyStatementFixer.php',
+ 'PhpCsFixer\\Fixer\\Semicolon\\NoMultilineWhitespaceBeforeSemicolonsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoMultilineWhitespaceBeforeSemicolonsFixer.php',
+ 'PhpCsFixer\\Fixer\\Semicolon\\NoSinglelineWhitespaceBeforeSemicolonsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoSinglelineWhitespaceBeforeSemicolonsFixer.php',
+ 'PhpCsFixer\\Fixer\\Semicolon\\SemicolonAfterInstructionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SemicolonAfterInstructionFixer.php',
+ 'PhpCsFixer\\Fixer\\Semicolon\\SpaceAfterSemicolonFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SpaceAfterSemicolonFixer.php',
+ 'PhpCsFixer\\Fixer\\Strict\\DeclareStrictTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/DeclareStrictTypesFixer.php',
+ 'PhpCsFixer\\Fixer\\Strict\\StrictComparisonFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictComparisonFixer.php',
+ 'PhpCsFixer\\Fixer\\Strict\\StrictParamFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictParamFixer.php',
+ 'PhpCsFixer\\Fixer\\StringNotation\\EscapeImplicitBackslashesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/EscapeImplicitBackslashesFixer.php',
+ 'PhpCsFixer\\Fixer\\StringNotation\\ExplicitStringVariableFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/ExplicitStringVariableFixer.php',
+ 'PhpCsFixer\\Fixer\\StringNotation\\HeredocToNowdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocToNowdocFixer.php',
+ 'PhpCsFixer\\Fixer\\StringNotation\\NoBinaryStringFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoBinaryStringFixer.php',
+ 'PhpCsFixer\\Fixer\\StringNotation\\SimpleToComplexStringVariableFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SimpleToComplexStringVariableFixer.php',
+ 'PhpCsFixer\\Fixer\\StringNotation\\SingleQuoteFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SingleQuoteFixer.php',
+ 'PhpCsFixer\\Fixer\\StringNotation\\StringLineEndingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLineEndingFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\ArrayIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/ArrayIndentationFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\BlankLineBeforeStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBeforeStatementFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\CompactNullableTypehintFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypehintFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\HeredocIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/HeredocIndentationFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\IndentationTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/IndentationTypeFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\LineEndingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/LineEndingFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\MethodChainingIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/MethodChainingIndentationFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\NoExtraBlankLinesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoExtraBlankLinesFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\NoExtraConsecutiveBlankLinesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoExtraConsecutiveBlankLinesFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\NoSpacesAroundOffsetFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesAroundOffsetFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\NoSpacesInsideParenthesisFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesInsideParenthesisFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\NoTrailingWhitespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoTrailingWhitespaceFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\NoWhitespaceInBlankLineFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoWhitespaceInBlankLineFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\SingleBlankLineAtEofFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SingleBlankLineAtEofFixer.php',
+ 'PhpCsFixer\\Fixer\\WhitespacesAwareFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/WhitespacesAwareFixerInterface.php',
+ 'PhpCsFixer\\Indicator\\PhpUnitTestCaseIndicator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Indicator/PhpUnitTestCaseIndicator.php',
+ 'PhpCsFixer\\Linter\\CachingLinter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/CachingLinter.php',
+ 'PhpCsFixer\\Linter\\Linter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/Linter.php',
+ 'PhpCsFixer\\Linter\\LinterInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/LinterInterface.php',
+ 'PhpCsFixer\\Linter\\LintingException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/LintingException.php',
+ 'PhpCsFixer\\Linter\\LintingResultInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/LintingResultInterface.php',
+ 'PhpCsFixer\\Linter\\ProcessLinter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLinter.php',
+ 'PhpCsFixer\\Linter\\ProcessLinterProcessBuilder' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLinterProcessBuilder.php',
+ 'PhpCsFixer\\Linter\\ProcessLintingResult' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLintingResult.php',
+ 'PhpCsFixer\\Linter\\TokenizerLinter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/TokenizerLinter.php',
+ 'PhpCsFixer\\Linter\\TokenizerLintingResult' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/TokenizerLintingResult.php',
+ 'PhpCsFixer\\Linter\\UnavailableLinterException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/UnavailableLinterException.php',
+ 'PhpCsFixer\\PharChecker' => $vendorDir . '/friendsofphp/php-cs-fixer/src/PharChecker.php',
+ 'PhpCsFixer\\PharCheckerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/PharCheckerInterface.php',
+ 'PhpCsFixer\\Preg' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Preg.php',
+ 'PhpCsFixer\\PregException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/PregException.php',
+ 'PhpCsFixer\\Report\\CheckstyleReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Report/CheckstyleReporter.php',
+ 'PhpCsFixer\\Report\\GitlabReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Report/GitlabReporter.php',
+ 'PhpCsFixer\\Report\\JsonReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Report/JsonReporter.php',
+ 'PhpCsFixer\\Report\\JunitReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Report/JunitReporter.php',
+ 'PhpCsFixer\\Report\\ReportSummary' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Report/ReportSummary.php',
+ 'PhpCsFixer\\Report\\ReporterFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Report/ReporterFactory.php',
+ 'PhpCsFixer\\Report\\ReporterInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Report/ReporterInterface.php',
+ 'PhpCsFixer\\Report\\TextReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Report/TextReporter.php',
+ 'PhpCsFixer\\Report\\XmlReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Report/XmlReporter.php',
+ 'PhpCsFixer\\RuleSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet.php',
+ 'PhpCsFixer\\RuleSetInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSetInterface.php',
+ 'PhpCsFixer\\Runner\\FileCachingLintingIterator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/FileCachingLintingIterator.php',
+ 'PhpCsFixer\\Runner\\FileFilterIterator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/FileFilterIterator.php',
+ 'PhpCsFixer\\Runner\\FileLintingIterator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/FileLintingIterator.php',
+ 'PhpCsFixer\\Runner\\Runner' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/Runner.php',
+ 'PhpCsFixer\\StdinFileInfo' => $vendorDir . '/friendsofphp/php-cs-fixer/src/StdinFileInfo.php',
+ 'PhpCsFixer\\Test\\AbstractFixerTestCase' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Test/AbstractFixerTestCase.php',
+ 'PhpCsFixer\\Test\\AbstractIntegrationTestCase' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Test/AbstractIntegrationTestCase.php',
+ 'PhpCsFixer\\Test\\AccessibleObject' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Test/AccessibleObject.php',
+ 'PhpCsFixer\\Test\\IntegrationCase' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Test/IntegrationCase.php',
+ 'PhpCsFixer\\Tests\\TestCase' => $vendorDir . '/friendsofphp/php-cs-fixer/tests/TestCase.php',
+ 'PhpCsFixer\\Tests\\Test\\AbstractFixerTestCase' => $vendorDir . '/friendsofphp/php-cs-fixer/tests/Test/AbstractFixerTestCase.php',
+ 'PhpCsFixer\\Tests\\Test\\AbstractIntegrationCaseFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/tests/Test/AbstractIntegrationCaseFactory.php',
+ 'PhpCsFixer\\Tests\\Test\\AbstractIntegrationTestCase' => $vendorDir . '/friendsofphp/php-cs-fixer/tests/Test/AbstractIntegrationTestCase.php',
+ 'PhpCsFixer\\Tests\\Test\\Assert\\AssertTokensTrait' => $vendorDir . '/friendsofphp/php-cs-fixer/tests/Test/Assert/AssertTokensTrait.php',
+ 'PhpCsFixer\\Tests\\Test\\IntegrationCase' => $vendorDir . '/friendsofphp/php-cs-fixer/tests/Test/IntegrationCase.php',
+ 'PhpCsFixer\\Tests\\Test\\IntegrationCaseFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/tests/Test/IntegrationCaseFactory.php',
+ 'PhpCsFixer\\Tests\\Test\\IntegrationCaseFactoryInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/tests/Test/IntegrationCaseFactoryInterface.php',
+ 'PhpCsFixer\\Tests\\Test\\InternalIntegrationCaseFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/tests/Test/InternalIntegrationCaseFactory.php',
+ 'PhpCsFixer\\Tests\\Test\\IsIdenticalConstraint' => $vendorDir . '/friendsofphp/php-cs-fixer/tests/Test/IsIdenticalConstraint.php',
+ 'PhpCsFixer\\Tokenizer\\AbstractTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\ArgumentAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/ArgumentAnalysis.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\NamespaceAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceAnalysis.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\NamespaceUseAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceUseAnalysis.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\StartEndTokenAwareAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/StartEndTokenAwareAnalysis.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\TypeAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/TypeAnalysis.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\ArgumentsAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ArgumentsAnalyzer.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\BlocksAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/BlocksAnalyzer.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\ClassyAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ClassyAnalyzer.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\CommentsAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/CommentsAnalyzer.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\FunctionsAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FunctionsAnalyzer.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\NamespaceUsesAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespaceUsesAnalyzer.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\NamespacesAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespacesAnalyzer.php',
+ 'PhpCsFixer\\Tokenizer\\CT' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/CT.php',
+ 'PhpCsFixer\\Tokenizer\\CodeHasher' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/CodeHasher.php',
+ 'PhpCsFixer\\Tokenizer\\Generator\\NamespacedStringTokenGenerator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Generator/NamespacedStringTokenGenerator.php',
+ 'PhpCsFixer\\Tokenizer\\Resolver\\TypeShortNameResolver' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Resolver/TypeShortNameResolver.php',
+ 'PhpCsFixer\\Tokenizer\\Token' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Token.php',
+ 'PhpCsFixer\\Tokenizer\\Tokens' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Tokens.php',
+ 'PhpCsFixer\\Tokenizer\\TokensAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/TokensAnalyzer.php',
+ 'PhpCsFixer\\Tokenizer\\TransformerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/TransformerInterface.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\ArrayTypehintTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ArrayTypehintTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\BraceClassInstantiationTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceClassInstantiationTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\ClassConstantTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ClassConstantTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\CurlyBraceTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/CurlyBraceTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\ImportTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ImportTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\NamespaceOperatorTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamespaceOperatorTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\NullableTypeTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NullableTypeTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\ReturnRefTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ReturnRefTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\SquareBraceTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/SquareBraceTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\TypeAlternationTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeAlternationTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\TypeColonTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeColonTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\UseTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/UseTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\WhitespacyCommentTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/WhitespacyCommentTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformers' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformers.php',
+ 'PhpCsFixer\\ToolInfo' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ToolInfo.php',
+ 'PhpCsFixer\\ToolInfoInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ToolInfoInterface.php',
+ 'PhpCsFixer\\Utils' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Utils.php',
+ 'PhpCsFixer\\WhitespacesFixerConfig' => $vendorDir . '/friendsofphp/php-cs-fixer/src/WhitespacesFixerConfig.php',
+ 'PhpCsFixer\\WordMatcher' => $vendorDir . '/friendsofphp/php-cs-fixer/src/WordMatcher.php',
+ 'PhpParser\\Builder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder.php',
+ 'PhpParser\\BuilderFactory' => $vendorDir . '/nikic/php-parser/lib/PhpParser/BuilderFactory.php',
+ 'PhpParser\\BuilderHelpers' => $vendorDir . '/nikic/php-parser/lib/PhpParser/BuilderHelpers.php',
+ 'PhpParser\\Builder\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Class_.php',
+ 'PhpParser\\Builder\\Declaration' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Declaration.php',
+ 'PhpParser\\Builder\\FunctionLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php',
+ 'PhpParser\\Builder\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Function_.php',
+ 'PhpParser\\Builder\\Interface_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Interface_.php',
+ 'PhpParser\\Builder\\Method' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Method.php',
+ 'PhpParser\\Builder\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php',
+ 'PhpParser\\Builder\\Param' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Param.php',
+ 'PhpParser\\Builder\\Property' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Property.php',
+ 'PhpParser\\Builder\\TraitUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php',
+ 'PhpParser\\Builder\\TraitUseAdaptation' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php',
+ 'PhpParser\\Builder\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Trait_.php',
+ 'PhpParser\\Builder\\Use_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Use_.php',
+ 'PhpParser\\Comment' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Comment.php',
+ 'PhpParser\\Comment\\Doc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Comment/Doc.php',
+ 'PhpParser\\ConstExprEvaluationException' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php',
+ 'PhpParser\\ConstExprEvaluator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php',
+ 'PhpParser\\Error' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Error.php',
+ 'PhpParser\\ErrorHandler' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler.php',
+ 'PhpParser\\ErrorHandler\\Collecting' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php',
+ 'PhpParser\\ErrorHandler\\Throwing' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php',
+ 'PhpParser\\Internal\\DiffElem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php',
+ 'PhpParser\\Internal\\Differ' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/Differ.php',
+ 'PhpParser\\Internal\\PrintableNewAnonClassNode' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php',
+ 'PhpParser\\Internal\\TokenStream' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php',
+ 'PhpParser\\JsonDecoder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/JsonDecoder.php',
+ 'PhpParser\\Lexer' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer.php',
+ 'PhpParser\\Lexer\\Emulative' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\AttributeEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\CoaleseEqualTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\FlexibleDocStringEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\FnTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\KeywordEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\NumericLiteralSeparatorEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php',
+ 'PhpParser\\NameContext' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NameContext.php',
+ 'PhpParser\\Node' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node.php',
+ 'PhpParser\\NodeAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeAbstract.php',
+ 'PhpParser\\NodeDumper' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeDumper.php',
+ 'PhpParser\\NodeFinder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeFinder.php',
+ 'PhpParser\\NodeTraverser' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeTraverser.php',
+ 'PhpParser\\NodeTraverserInterface' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php',
+ 'PhpParser\\NodeVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor.php',
+ 'PhpParser\\NodeVisitorAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php',
+ 'PhpParser\\NodeVisitor\\CloningVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php',
+ 'PhpParser\\NodeVisitor\\FindingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php',
+ 'PhpParser\\NodeVisitor\\FirstFindingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php',
+ 'PhpParser\\NodeVisitor\\NameResolver' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php',
+ 'PhpParser\\NodeVisitor\\NodeConnectingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php',
+ 'PhpParser\\NodeVisitor\\ParentConnectingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php',
+ 'PhpParser\\Node\\Arg' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Arg.php',
+ 'PhpParser\\Node\\Attribute' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Attribute.php',
+ 'PhpParser\\Node\\AttributeGroup' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php',
+ 'PhpParser\\Node\\Const_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Const_.php',
+ 'PhpParser\\Node\\Expr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr.php',
+ 'PhpParser\\Node\\Expr\\ArrayDimFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php',
+ 'PhpParser\\Node\\Expr\\ArrayItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php',
+ 'PhpParser\\Node\\Expr\\Array_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php',
+ 'PhpParser\\Node\\Expr\\ArrowFunction' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php',
+ 'PhpParser\\Node\\Expr\\Assign' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php',
+ 'PhpParser\\Node\\Expr\\AssignOp' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\Coalesce' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\Concat' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\Div' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\Minus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\Mod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\Mul' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\Plus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\Pow' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php',
+ 'PhpParser\\Node\\Expr\\AssignRef' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Coalesce' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Div' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Spaceship' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php',
+ 'PhpParser\\Node\\Expr\\BitwiseNot' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php',
+ 'PhpParser\\Node\\Expr\\BooleanNot' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php',
+ 'PhpParser\\Node\\Expr\\Cast' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php',
+ 'PhpParser\\Node\\Expr\\Cast\\Array_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php',
+ 'PhpParser\\Node\\Expr\\Cast\\Bool_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php',
+ 'PhpParser\\Node\\Expr\\Cast\\Double' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php',
+ 'PhpParser\\Node\\Expr\\Cast\\Int_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php',
+ 'PhpParser\\Node\\Expr\\Cast\\Object_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php',
+ 'PhpParser\\Node\\Expr\\Cast\\String_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php',
+ 'PhpParser\\Node\\Expr\\Cast\\Unset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php',
+ 'PhpParser\\Node\\Expr\\ClassConstFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php',
+ 'PhpParser\\Node\\Expr\\Clone_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php',
+ 'PhpParser\\Node\\Expr\\Closure' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php',
+ 'PhpParser\\Node\\Expr\\ClosureUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php',
+ 'PhpParser\\Node\\Expr\\ConstFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php',
+ 'PhpParser\\Node\\Expr\\Empty_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php',
+ 'PhpParser\\Node\\Expr\\Error' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php',
+ 'PhpParser\\Node\\Expr\\ErrorSuppress' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php',
+ 'PhpParser\\Node\\Expr\\Eval_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php',
+ 'PhpParser\\Node\\Expr\\Exit_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php',
+ 'PhpParser\\Node\\Expr\\FuncCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php',
+ 'PhpParser\\Node\\Expr\\Include_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php',
+ 'PhpParser\\Node\\Expr\\Instanceof_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php',
+ 'PhpParser\\Node\\Expr\\Isset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php',
+ 'PhpParser\\Node\\Expr\\List_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php',
+ 'PhpParser\\Node\\Expr\\Match_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php',
+ 'PhpParser\\Node\\Expr\\MethodCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php',
+ 'PhpParser\\Node\\Expr\\New_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php',
+ 'PhpParser\\Node\\Expr\\NullsafeMethodCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php',
+ 'PhpParser\\Node\\Expr\\NullsafePropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php',
+ 'PhpParser\\Node\\Expr\\PostDec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php',
+ 'PhpParser\\Node\\Expr\\PostInc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php',
+ 'PhpParser\\Node\\Expr\\PreDec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php',
+ 'PhpParser\\Node\\Expr\\PreInc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php',
+ 'PhpParser\\Node\\Expr\\Print_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php',
+ 'PhpParser\\Node\\Expr\\PropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php',
+ 'PhpParser\\Node\\Expr\\ShellExec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php',
+ 'PhpParser\\Node\\Expr\\StaticCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php',
+ 'PhpParser\\Node\\Expr\\StaticPropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php',
+ 'PhpParser\\Node\\Expr\\Ternary' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php',
+ 'PhpParser\\Node\\Expr\\Throw_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php',
+ 'PhpParser\\Node\\Expr\\UnaryMinus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php',
+ 'PhpParser\\Node\\Expr\\UnaryPlus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php',
+ 'PhpParser\\Node\\Expr\\Variable' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php',
+ 'PhpParser\\Node\\Expr\\YieldFrom' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php',
+ 'PhpParser\\Node\\Expr\\Yield_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php',
+ 'PhpParser\\Node\\FunctionLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php',
+ 'PhpParser\\Node\\Identifier' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Identifier.php',
+ 'PhpParser\\Node\\MatchArm' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/MatchArm.php',
+ 'PhpParser\\Node\\Name' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name.php',
+ 'PhpParser\\Node\\Name\\FullyQualified' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php',
+ 'PhpParser\\Node\\Name\\Relative' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php',
+ 'PhpParser\\Node\\NullableType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/NullableType.php',
+ 'PhpParser\\Node\\Param' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Param.php',
+ 'PhpParser\\Node\\Scalar' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar.php',
+ 'PhpParser\\Node\\Scalar\\DNumber' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php',
+ 'PhpParser\\Node\\Scalar\\Encapsed' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php',
+ 'PhpParser\\Node\\Scalar\\EncapsedStringPart' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php',
+ 'PhpParser\\Node\\Scalar\\LNumber' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php',
+ 'PhpParser\\Node\\Scalar\\MagicConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php',
+ 'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php',
+ 'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php',
+ 'PhpParser\\Node\\Scalar\\MagicConst\\File' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php',
+ 'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php',
+ 'PhpParser\\Node\\Scalar\\MagicConst\\Line' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php',
+ 'PhpParser\\Node\\Scalar\\MagicConst\\Method' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php',
+ 'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php',
+ 'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php',
+ 'PhpParser\\Node\\Scalar\\String_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php',
+ 'PhpParser\\Node\\Stmt' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt.php',
+ 'PhpParser\\Node\\Stmt\\Break_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php',
+ 'PhpParser\\Node\\Stmt\\Case_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php',
+ 'PhpParser\\Node\\Stmt\\Catch_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php',
+ 'PhpParser\\Node\\Stmt\\ClassConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php',
+ 'PhpParser\\Node\\Stmt\\ClassLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php',
+ 'PhpParser\\Node\\Stmt\\ClassMethod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php',
+ 'PhpParser\\Node\\Stmt\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php',
+ 'PhpParser\\Node\\Stmt\\Const_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php',
+ 'PhpParser\\Node\\Stmt\\Continue_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php',
+ 'PhpParser\\Node\\Stmt\\DeclareDeclare' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php',
+ 'PhpParser\\Node\\Stmt\\Declare_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php',
+ 'PhpParser\\Node\\Stmt\\Do_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php',
+ 'PhpParser\\Node\\Stmt\\Echo_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php',
+ 'PhpParser\\Node\\Stmt\\ElseIf_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php',
+ 'PhpParser\\Node\\Stmt\\Else_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php',
+ 'PhpParser\\Node\\Stmt\\Expression' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php',
+ 'PhpParser\\Node\\Stmt\\Finally_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php',
+ 'PhpParser\\Node\\Stmt\\For_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php',
+ 'PhpParser\\Node\\Stmt\\Foreach_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php',
+ 'PhpParser\\Node\\Stmt\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php',
+ 'PhpParser\\Node\\Stmt\\Global_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php',
+ 'PhpParser\\Node\\Stmt\\Goto_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php',
+ 'PhpParser\\Node\\Stmt\\GroupUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php',
+ 'PhpParser\\Node\\Stmt\\HaltCompiler' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php',
+ 'PhpParser\\Node\\Stmt\\If_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php',
+ 'PhpParser\\Node\\Stmt\\InlineHTML' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php',
+ 'PhpParser\\Node\\Stmt\\Interface_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php',
+ 'PhpParser\\Node\\Stmt\\Label' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php',
+ 'PhpParser\\Node\\Stmt\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php',
+ 'PhpParser\\Node\\Stmt\\Nop' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php',
+ 'PhpParser\\Node\\Stmt\\Property' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php',
+ 'PhpParser\\Node\\Stmt\\PropertyProperty' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php',
+ 'PhpParser\\Node\\Stmt\\Return_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php',
+ 'PhpParser\\Node\\Stmt\\StaticVar' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php',
+ 'PhpParser\\Node\\Stmt\\Static_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php',
+ 'PhpParser\\Node\\Stmt\\Switch_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php',
+ 'PhpParser\\Node\\Stmt\\Throw_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php',
+ 'PhpParser\\Node\\Stmt\\TraitUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php',
+ 'PhpParser\\Node\\Stmt\\TraitUseAdaptation' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php',
+ 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Alias' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php',
+ 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Precedence' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php',
+ 'PhpParser\\Node\\Stmt\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php',
+ 'PhpParser\\Node\\Stmt\\TryCatch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php',
+ 'PhpParser\\Node\\Stmt\\Unset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php',
+ 'PhpParser\\Node\\Stmt\\UseUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php',
+ 'PhpParser\\Node\\Stmt\\Use_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php',
+ 'PhpParser\\Node\\Stmt\\While_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php',
+ 'PhpParser\\Node\\UnionType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/UnionType.php',
+ 'PhpParser\\Node\\VarLikeIdentifier' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php',
+ 'PhpParser\\Parser' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser.php',
+ 'PhpParser\\ParserAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ParserAbstract.php',
+ 'PhpParser\\ParserFactory' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ParserFactory.php',
+ 'PhpParser\\Parser\\Multiple' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Multiple.php',
+ 'PhpParser\\Parser\\Php5' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Php5.php',
+ 'PhpParser\\Parser\\Php7' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Php7.php',
+ 'PhpParser\\Parser\\Tokens' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Tokens.php',
+ 'PhpParser\\PrettyPrinterAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php',
+ 'PhpParser\\PrettyPrinter\\Standard' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php',
+ 'Psalm\\Aliases' => $vendorDir . '/vimeo/psalm/src/Psalm/Aliases.php',
+ 'Psalm\\CodeLocation' => $vendorDir . '/vimeo/psalm/src/Psalm/CodeLocation.php',
+ 'Psalm\\CodeLocation\\DocblockTypeLocation' => $vendorDir . '/vimeo/psalm/src/Psalm/CodeLocation/DocblockTypeLocation.php',
+ 'Psalm\\CodeLocation\\ParseErrorLocation' => $vendorDir . '/vimeo/psalm/src/Psalm/CodeLocation/ParseErrorLocation.php',
+ 'Psalm\\CodeLocation\\Raw' => $vendorDir . '/vimeo/psalm/src/Psalm/CodeLocation/Raw.php',
+ 'Psalm\\Codebase' => $vendorDir . '/vimeo/psalm/src/Psalm/Codebase.php',
+ 'Psalm\\Config' => $vendorDir . '/vimeo/psalm/src/Psalm/Config.php',
+ 'Psalm\\Config\\Creator' => $vendorDir . '/vimeo/psalm/src/Psalm/Config/Creator.php',
+ 'Psalm\\Config\\ErrorLevelFileFilter' => $vendorDir . '/vimeo/psalm/src/Psalm/Config/ErrorLevelFileFilter.php',
+ 'Psalm\\Config\\FileFilter' => $vendorDir . '/vimeo/psalm/src/Psalm/Config/FileFilter.php',
+ 'Psalm\\Config\\IssueHandler' => $vendorDir . '/vimeo/psalm/src/Psalm/Config/IssueHandler.php',
+ 'Psalm\\Config\\ProjectFileFilter' => $vendorDir . '/vimeo/psalm/src/Psalm/Config/ProjectFileFilter.php',
+ 'Psalm\\Config\\TaintAnalysisFileFilter' => $vendorDir . '/vimeo/psalm/src/Psalm/Config/TaintAnalysisFileFilter.php',
+ 'Psalm\\Context' => $vendorDir . '/vimeo/psalm/src/Psalm/Context.php',
+ 'Psalm\\DocComment' => $vendorDir . '/vimeo/psalm/src/Psalm/DocComment.php',
+ 'Psalm\\ErrorBaseline' => $vendorDir . '/vimeo/psalm/src/Psalm/ErrorBaseline.php',
+ 'Psalm\\Exception\\CircularReferenceException' => $vendorDir . '/vimeo/psalm/src/Psalm/Exception/CircularReferenceException.php',
+ 'Psalm\\Exception\\CodeException' => $vendorDir . '/vimeo/psalm/src/Psalm/Exception/CodeException.php',
+ 'Psalm\\Exception\\ComplicatedExpressionException' => $vendorDir . '/vimeo/psalm/src/Psalm/Exception/ComplicatedExpressionException.php',
+ 'Psalm\\Exception\\ConfigCreationException' => $vendorDir . '/vimeo/psalm/src/Psalm/Exception/ConfigCreationException.php',
+ 'Psalm\\Exception\\ConfigException' => $vendorDir . '/vimeo/psalm/src/Psalm/Exception/ConfigException.php',
+ 'Psalm\\Exception\\DocblockParseException' => $vendorDir . '/vimeo/psalm/src/Psalm/Exception/DocblockParseException.php',
+ 'Psalm\\Exception\\FileIncludeException' => $vendorDir . '/vimeo/psalm/src/Psalm/Exception/FileIncludeException.php',
+ 'Psalm\\Exception\\IncorrectDocblockException' => $vendorDir . '/vimeo/psalm/src/Psalm/Exception/IncorrectDocblockException.php',
+ 'Psalm\\Exception\\InvalidClasslikeOverrideException' => $vendorDir . '/vimeo/psalm/src/Psalm/Exception/InvalidClasslikeOverrideException.php',
+ 'Psalm\\Exception\\InvalidMethodOverrideException' => $vendorDir . '/vimeo/psalm/src/Psalm/Exception/InvalidMethodOverrideException.php',
+ 'Psalm\\Exception\\RefactorException' => $vendorDir . '/vimeo/psalm/src/Psalm/Exception/RefactorException.php',
+ 'Psalm\\Exception\\ScopeAnalysisException' => $vendorDir . '/vimeo/psalm/src/Psalm/Exception/ScopeAnalysisException.php',
+ 'Psalm\\Exception\\TypeParseTreeException' => $vendorDir . '/vimeo/psalm/src/Psalm/Exception/TypeParseTreeException.php',
+ 'Psalm\\Exception\\UnanalyzedFileException' => $vendorDir . '/vimeo/psalm/src/Psalm/Exception/UnanalyzedFileException.php',
+ 'Psalm\\Exception\\UnpopulatedClasslikeException' => $vendorDir . '/vimeo/psalm/src/Psalm/Exception/UnpopulatedClasslikeException.php',
+ 'Psalm\\Exception\\UnpreparedAnalysisException' => $vendorDir . '/vimeo/psalm/src/Psalm/Exception/UnpreparedAnalysisException.php',
+ 'Psalm\\Exception\\UnsupportedIssueToFixException' => $vendorDir . '/vimeo/psalm/src/Psalm/Exception/UnsupportedIssueToFixException.php',
+ 'Psalm\\FileBasedPluginAdapter' => $vendorDir . '/vimeo/psalm/src/Psalm/FileBasedPluginAdapter.php',
+ 'Psalm\\FileManipulation' => $vendorDir . '/vimeo/psalm/src/Psalm/FileManipulation.php',
+ 'Psalm\\FileSource' => $vendorDir . '/vimeo/psalm/src/Psalm/FileSource.php',
+ 'Psalm\\Internal\\Analyzer\\AlgebraAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/AlgebraAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\CanAlias' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/CanAlias.php',
+ 'Psalm\\Internal\\Analyzer\\ClassAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/ClassAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\ClassLikeAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/ClassLikeAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\ClosureAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/ClosureAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\CommentAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/CommentAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\DataFlowNodeData' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/DataFlowNodeData.php',
+ 'Psalm\\Internal\\Analyzer\\FileAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/FileAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\FunctionAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/FunctionAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\FunctionLikeAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/FunctionLikeAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\FunctionLike\\ReturnTypeAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/FunctionLike/ReturnTypeAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\FunctionLike\\ReturnTypeCollector' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/FunctionLike/ReturnTypeCollector.php',
+ 'Psalm\\Internal\\Analyzer\\InterfaceAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/InterfaceAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\IssueData' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/IssueData.php',
+ 'Psalm\\Internal\\Analyzer\\MethodAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/MethodAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\MethodComparator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/MethodComparator.php',
+ 'Psalm\\Internal\\Analyzer\\NamespaceAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/NamespaceAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\ProjectAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\ScopeAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/ScopeAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\SourceAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/SourceAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\StatementsAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/StatementsAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Block\\DoAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/DoAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Block\\ForAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/ForAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Block\\ForeachAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/ForeachAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Block\\IfAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/IfAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Block\\LoopAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/LoopAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Block\\SwitchAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/SwitchAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Block\\SwitchCaseAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/SwitchCaseAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Block\\TryAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/TryAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Block\\WhileAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/WhileAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\BreakAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/BreakAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\ContinueAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/ContinueAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\EchoAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/EchoAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\ExpressionAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/ExpressionAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\ArrayAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/ArrayAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\AssertionFinder' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/AssertionFinder.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\AssignmentAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/AssignmentAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Assignment\\ArrayAssignmentAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Assignment/ArrayAssignmentAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Assignment\\InstancePropertyAssignmentAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Assignment/InstancePropertyAssignmentAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Assignment\\StaticPropertyAssignmentAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Assignment/StaticPropertyAssignmentAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\BinaryOpAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/BinaryOpAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\BinaryOp\\AndAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/BinaryOp/AndAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\BinaryOp\\CoalesceAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/BinaryOp/CoalesceAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\BinaryOp\\ConcatAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/BinaryOp/ConcatAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\BinaryOp\\NonComparisonOpAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/BinaryOp/NonComparisonOpAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\BinaryOp\\NonDivArithmeticOpAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/BinaryOp/NonDivArithmeticOpAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\BinaryOp\\OrAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/BinaryOp/OrAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\BitwiseNotAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/BitwiseNotAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\BooleanNotAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/BooleanNotAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\CallAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/CallAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\ArgumentAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/ArgumentAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\ArgumentMapPopulator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/ArgumentMapPopulator.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\ArgumentsAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/ArgumentsAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\ArrayFunctionArgumentsAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/ArrayFunctionArgumentsAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\ClassTemplateParamCollector' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/ClassTemplateParamCollector.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\FunctionCallAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/FunctionCallAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\MethodCallAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/MethodCallAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\Method\\AtomicCallContext' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/AtomicCallContext.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\Method\\AtomicMethodCallAnalysisResult' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/AtomicMethodCallAnalysisResult.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\Method\\AtomicMethodCallAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/AtomicMethodCallAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\Method\\MethodCallProhibitionAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/MethodCallProhibitionAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\Method\\MethodCallPurityAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/MethodCallPurityAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\Method\\MethodCallReturnTypeFetcher' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/MethodCallReturnTypeFetcher.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\Method\\MethodVisibilityAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/MethodVisibilityAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\Method\\MissingMethodCallHandler' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/MissingMethodCallHandler.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\NewAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/NewAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\StaticCallAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/StaticCallAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\CastAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/CastAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\CloneAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/CloneAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\EmptyAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/EmptyAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\EncapsulatedStringAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/EncapsulatedStringAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\EvalAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/EvalAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\ExitAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/ExitAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\ExpressionIdentifier' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/ExpressionIdentifier.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Fetch\\ArrayFetchAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/ArrayFetchAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Fetch\\AtomicPropertyFetchAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/AtomicPropertyFetchAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Fetch\\ClassConstFetchAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/ClassConstFetchAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Fetch\\ConstFetchAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/ConstFetchAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Fetch\\InstancePropertyFetchAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/InstancePropertyFetchAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Fetch\\StaticPropertyFetchAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/StaticPropertyFetchAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Fetch\\VariableFetchAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/VariableFetchAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\IncDecExpressionAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/IncDecExpressionAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\IncludeAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/IncludeAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\InstanceofAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/InstanceofAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\IssetAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/IssetAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\MagicConstAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/MagicConstAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\MatchAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/MatchAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\NullsafeAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/NullsafeAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\PrintAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/PrintAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\SimpleTypeInferer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/SimpleTypeInferer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\TernaryAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/TernaryAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\UnaryPlusMinusAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/UnaryPlusMinusAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\YieldAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/YieldAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\YieldFromAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/YieldFromAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\GlobalAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/GlobalAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\ReturnAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/ReturnAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\StaticAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/StaticAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\ThrowAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/ThrowAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\UnsetAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/UnsetAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\UnusedAssignmentRemover' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/UnusedAssignmentRemover.php',
+ 'Psalm\\Internal\\Analyzer\\TraitAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/TraitAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\TypeAnalyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Analyzer/TypeAnalyzer.php',
+ 'Psalm\\Internal\\Clause' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Clause.php',
+ 'Psalm\\Internal\\Codebase\\Analyzer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Codebase/Analyzer.php',
+ 'Psalm\\Internal\\Codebase\\ClassLikes' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Codebase/ClassLikes.php',
+ 'Psalm\\Internal\\Codebase\\ConstantTypeResolver' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Codebase/ConstantTypeResolver.php',
+ 'Psalm\\Internal\\Codebase\\DataFlowGraph' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Codebase/DataFlowGraph.php',
+ 'Psalm\\Internal\\Codebase\\Functions' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Codebase/Functions.php',
+ 'Psalm\\Internal\\Codebase\\InternalCallMapHandler' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Codebase/InternalCallMapHandler.php',
+ 'Psalm\\Internal\\Codebase\\Methods' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Codebase/Methods.php',
+ 'Psalm\\Internal\\Codebase\\Populator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Codebase/Populator.php',
+ 'Psalm\\Internal\\Codebase\\Properties' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Codebase/Properties.php',
+ 'Psalm\\Internal\\Codebase\\PropertyMap' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Codebase/PropertyMap.php',
+ 'Psalm\\Internal\\Codebase\\ReferenceMapGenerator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Codebase/ReferenceMapGenerator.php',
+ 'Psalm\\Internal\\Codebase\\Reflection' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Codebase/Reflection.php',
+ 'Psalm\\Internal\\Codebase\\Scanner' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Codebase/Scanner.php',
+ 'Psalm\\Internal\\Codebase\\TaintFlowGraph' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Codebase/TaintFlowGraph.php',
+ 'Psalm\\Internal\\Codebase\\VariableUseGraph' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Codebase/VariableUseGraph.php',
+ 'Psalm\\Internal\\Composer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Composer.php',
+ 'Psalm\\Internal\\DataFlow\\DataFlowNode' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/DataFlow/DataFlowNode.php',
+ 'Psalm\\Internal\\DataFlow\\Path' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/DataFlow/Path.php',
+ 'Psalm\\Internal\\DataFlow\\TaintSink' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/DataFlow/TaintSink.php',
+ 'Psalm\\Internal\\DataFlow\\TaintSource' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/DataFlow/TaintSource.php',
+ 'Psalm\\Internal\\Diff\\AstDiffer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Diff/AstDiffer.php',
+ 'Psalm\\Internal\\Diff\\ClassStatementsDiffer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Diff/ClassStatementsDiffer.php',
+ 'Psalm\\Internal\\Diff\\DiffElem' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Diff/DiffElem.php',
+ 'Psalm\\Internal\\Diff\\FileDiffer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Diff/FileDiffer.php',
+ 'Psalm\\Internal\\Diff\\FileStatementsDiffer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Diff/FileStatementsDiffer.php',
+ 'Psalm\\Internal\\Diff\\NamespaceStatementsDiffer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Diff/NamespaceStatementsDiffer.php',
+ 'Psalm\\Internal\\ExecutionEnvironment\\BuildInfoCollector' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/ExecutionEnvironment/BuildInfoCollector.php',
+ 'Psalm\\Internal\\ExecutionEnvironment\\GitInfoCollector' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/ExecutionEnvironment/GitInfoCollector.php',
+ 'Psalm\\Internal\\ExecutionEnvironment\\SystemCommandExecutor' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/ExecutionEnvironment/SystemCommandExecutor.php',
+ 'Psalm\\Internal\\FileManipulation\\ClassDocblockManipulator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/FileManipulation/ClassDocblockManipulator.php',
+ 'Psalm\\Internal\\FileManipulation\\CodeMigration' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/FileManipulation/CodeMigration.php',
+ 'Psalm\\Internal\\FileManipulation\\FileManipulationBuffer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/FileManipulation/FileManipulationBuffer.php',
+ 'Psalm\\Internal\\FileManipulation\\FunctionDocblockManipulator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/FileManipulation/FunctionDocblockManipulator.php',
+ 'Psalm\\Internal\\FileManipulation\\PropertyDocblockManipulator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/FileManipulation/PropertyDocblockManipulator.php',
+ 'Psalm\\Internal\\Fork\\ForkMessage' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Fork/ForkMessage.php',
+ 'Psalm\\Internal\\Fork\\ForkProcessDoneMessage' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Fork/ForkProcessDoneMessage.php',
+ 'Psalm\\Internal\\Fork\\ForkProcessErrorMessage' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Fork/ForkProcessErrorMessage.php',
+ 'Psalm\\Internal\\Fork\\ForkTaskDoneMessage' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Fork/ForkTaskDoneMessage.php',
+ 'Psalm\\Internal\\Fork\\Pool' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Fork/Pool.php',
+ 'Psalm\\Internal\\Fork\\PsalmRestarter' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Fork/PsalmRestarter.php',
+ 'Psalm\\Internal\\IncludeCollector' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/IncludeCollector.php',
+ 'Psalm\\Internal\\Json\\Json' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Json/Json.php',
+ 'Psalm\\Internal\\LanguageServer\\ClientHandler' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/ClientHandler.php',
+ 'Psalm\\Internal\\LanguageServer\\Client\\TextDocument' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/Client/TextDocument.php',
+ 'Psalm\\Internal\\LanguageServer\\EmitterInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/EmitterInterface.php',
+ 'Psalm\\Internal\\LanguageServer\\EmitterTrait' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/EmitterTrait.php',
+ 'Psalm\\Internal\\LanguageServer\\IdGenerator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/IdGenerator.php',
+ 'Psalm\\Internal\\LanguageServer\\LanguageClient' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/LanguageClient.php',
+ 'Psalm\\Internal\\LanguageServer\\LanguageServer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/LanguageServer.php',
+ 'Psalm\\Internal\\LanguageServer\\Message' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/Message.php',
+ 'Psalm\\Internal\\LanguageServer\\ProtocolReader' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/ProtocolReader.php',
+ 'Psalm\\Internal\\LanguageServer\\ProtocolStreamReader' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/ProtocolStreamReader.php',
+ 'Psalm\\Internal\\LanguageServer\\ProtocolStreamWriter' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/ProtocolStreamWriter.php',
+ 'Psalm\\Internal\\LanguageServer\\ProtocolWriter' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/ProtocolWriter.php',
+ 'Psalm\\Internal\\LanguageServer\\Server\\TextDocument' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/Server/TextDocument.php',
+ 'Psalm\\Internal\\MethodIdentifier' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/MethodIdentifier.php',
+ 'Psalm\\Internal\\PhpTraverser\\CustomTraverser' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PhpTraverser/CustomTraverser.php',
+ 'Psalm\\Internal\\PhpVisitor\\AssignmentMapVisitor' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/AssignmentMapVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\CheckTrivialExprVisitor' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/CheckTrivialExprVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\CloningVisitor' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/CloningVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\ConditionCloningVisitor' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/ConditionCloningVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\NodeCleanerVisitor' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/NodeCleanerVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\NodeCounterVisitor' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/NodeCounterVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\OffsetShifterVisitor' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/OffsetShifterVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\ParamReplacementVisitor' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/ParamReplacementVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\PartialParserVisitor' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/PartialParserVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\ReflectorVisitor' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/ReflectorVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\ShortClosureVisitor' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/ShortClosureVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\SimpleNameResolver' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/SimpleNameResolver.php',
+ 'Psalm\\Internal\\PhpVisitor\\TraitFinder' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/TraitFinder.php',
+ 'Psalm\\Internal\\PhpVisitor\\TypeMappingVisitor' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/TypeMappingVisitor.php',
+ 'Psalm\\Internal\\PluginManager\\Command\\DisableCommand' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PluginManager/Command/DisableCommand.php',
+ 'Psalm\\Internal\\PluginManager\\Command\\EnableCommand' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PluginManager/Command/EnableCommand.php',
+ 'Psalm\\Internal\\PluginManager\\Command\\ShowCommand' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PluginManager/Command/ShowCommand.php',
+ 'Psalm\\Internal\\PluginManager\\ComposerLock' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PluginManager/ComposerLock.php',
+ 'Psalm\\Internal\\PluginManager\\ConfigFile' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PluginManager/ConfigFile.php',
+ 'Psalm\\Internal\\PluginManager\\PluginList' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PluginManager/PluginList.php',
+ 'Psalm\\Internal\\PluginManager\\PluginListFactory' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/PluginManager/PluginListFactory.php',
+ 'Psalm\\Internal\\Provider\\ClassLikeStorageCacheProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ClassLikeStorageCacheProvider.php',
+ 'Psalm\\Internal\\Provider\\ClassLikeStorageProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ClassLikeStorageProvider.php',
+ 'Psalm\\Internal\\Provider\\FileProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/FileProvider.php',
+ 'Psalm\\Internal\\Provider\\FileReferenceCacheProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/FileReferenceCacheProvider.php',
+ 'Psalm\\Internal\\Provider\\FileReferenceProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/FileReferenceProvider.php',
+ 'Psalm\\Internal\\Provider\\FileStorageCacheProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/FileStorageCacheProvider.php',
+ 'Psalm\\Internal\\Provider\\FileStorageProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/FileStorageProvider.php',
+ 'Psalm\\Internal\\Provider\\FunctionExistenceProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/FunctionExistenceProvider.php',
+ 'Psalm\\Internal\\Provider\\FunctionParamsProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/FunctionParamsProvider.php',
+ 'Psalm\\Internal\\Provider\\FunctionReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/FunctionReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\MethodExistenceProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/MethodExistenceProvider.php',
+ 'Psalm\\Internal\\Provider\\MethodParamsProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/MethodParamsProvider.php',
+ 'Psalm\\Internal\\Provider\\MethodReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/MethodReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\MethodVisibilityProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/MethodVisibilityProvider.php',
+ 'Psalm\\Internal\\Provider\\NodeDataProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/NodeDataProvider.php',
+ 'Psalm\\Internal\\Provider\\ParserCacheProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ParserCacheProvider.php',
+ 'Psalm\\Internal\\Provider\\ProjectCacheProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ProjectCacheProvider.php',
+ 'Psalm\\Internal\\Provider\\PropertyExistenceProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/PropertyExistenceProvider.php',
+ 'Psalm\\Internal\\Provider\\PropertyTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/PropertyTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\PropertyVisibilityProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/PropertyVisibilityProvider.php',
+ 'Psalm\\Internal\\Provider\\Providers' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/Providers.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayChunkReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayChunkReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayColumnReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayColumnReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayFillReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayFillReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayFilterReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayFilterReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayMapReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayMapReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayMergeReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayMergeReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayPadReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayPadReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayPointerAdjustmentReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayPointerAdjustmentReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayPopReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayPopReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayRandReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayRandReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayReduceReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayReduceReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayReverseReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayReverseReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArraySliceReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArraySliceReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayUniqueReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayUniqueReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayValuesReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayValuesReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ClosureFromCallableReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ClosureFromCallableReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\DomNodeAppendChild' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/DomNodeAppendChild.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ExplodeReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ExplodeReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\FilterVarReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/FilterVarReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\FirstArgStringReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/FirstArgStringReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\GetClassMethodsReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/GetClassMethodsReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\GetObjectVarsReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/GetObjectVarsReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\HexdecReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/HexdecReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\IteratorToArrayReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/IteratorToArrayReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\MktimeReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/MktimeReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ParseUrlReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ParseUrlReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\PdoStatementReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/PdoStatementReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\PdoStatementSetFetchMode' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/PdoStatementSetFetchMode.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\SimpleXmlElementAsXml' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/SimpleXmlElementAsXml.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\StrReplaceReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/StrReplaceReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\VersionCompareReturnTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/VersionCompareReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\StatementsProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Provider/StatementsProvider.php',
+ 'Psalm\\Internal\\ReferenceConstraint' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/ReferenceConstraint.php',
+ 'Psalm\\Internal\\RuntimeCaches' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/RuntimeCaches.php',
+ 'Psalm\\Internal\\Scanner\\ClassLikeDocblockComment' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/ClassLikeDocblockComment.php',
+ 'Psalm\\Internal\\Scanner\\DocblockParser' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/DocblockParser.php',
+ 'Psalm\\Internal\\Scanner\\FileScanner' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/FileScanner.php',
+ 'Psalm\\Internal\\Scanner\\FunctionDocblockComment' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/FunctionDocblockComment.php',
+ 'Psalm\\Internal\\Scanner\\ParsedDocblock' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/ParsedDocblock.php',
+ 'Psalm\\Internal\\Scanner\\PhpStormMetaScanner' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/PhpStormMetaScanner.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstantComponent' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstantComponent.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\ArrayOffsetFetch' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/ArrayOffsetFetch.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\ArrayValue' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/ArrayValue.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\ClassConstant' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/ClassConstant.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\Constant' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/Constant.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\KeyValuePair' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/KeyValuePair.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\ScalarValue' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/ScalarValue.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\UnresolvedAdditionOp' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/UnresolvedAdditionOp.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\UnresolvedBinaryOp' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/UnresolvedBinaryOp.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\UnresolvedBitwiseOr' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/UnresolvedBitwiseOr.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\UnresolvedConcatOp' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/UnresolvedConcatOp.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\UnresolvedDivisionOp' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/UnresolvedDivisionOp.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\UnresolvedMultiplicationOp' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/UnresolvedMultiplicationOp.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\UnresolvedSubtractionOp' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/UnresolvedSubtractionOp.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\UnresolvedTernary' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/UnresolvedTernary.php',
+ 'Psalm\\Internal\\Scanner\\VarDocblockComment' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scanner/VarDocblockComment.php',
+ 'Psalm\\Internal\\Scope\\CaseScope' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scope/CaseScope.php',
+ 'Psalm\\Internal\\Scope\\FinallyScope' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scope/FinallyScope.php',
+ 'Psalm\\Internal\\Scope\\IfConditionalScope' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scope/IfConditionalScope.php',
+ 'Psalm\\Internal\\Scope\\IfScope' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scope/IfScope.php',
+ 'Psalm\\Internal\\Scope\\LoopScope' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scope/LoopScope.php',
+ 'Psalm\\Internal\\Scope\\SwitchScope' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Scope/SwitchScope.php',
+ 'Psalm\\Internal\\Stubs\\Generator\\ClassLikeStubGenerator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Stubs/Generator/ClassLikeStubGenerator.php',
+ 'Psalm\\Internal\\Stubs\\Generator\\StubsGenerator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Stubs/Generator/StubsGenerator.php',
+ 'Psalm\\Internal\\TypeVisitor\\ContainsClassLikeVisitor' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/TypeVisitor/ContainsClassLikeVisitor.php',
+ 'Psalm\\Internal\\TypeVisitor\\FromDocblockSetter' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/TypeVisitor/FromDocblockSetter.php',
+ 'Psalm\\Internal\\TypeVisitor\\TemplateTypeCollector' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/TypeVisitor/TemplateTypeCollector.php',
+ 'Psalm\\Internal\\TypeVisitor\\TypeChecker' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/TypeVisitor/TypeChecker.php',
+ 'Psalm\\Internal\\TypeVisitor\\TypeScanner' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/TypeVisitor/TypeScanner.php',
+ 'Psalm\\Internal\\Type\\ArrayType' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ArrayType.php',
+ 'Psalm\\Internal\\Type\\AssertionReconciler' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/AssertionReconciler.php',
+ 'Psalm\\Internal\\Type\\Comparator\\ArrayTypeComparator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/ArrayTypeComparator.php',
+ 'Psalm\\Internal\\Type\\Comparator\\AtomicTypeComparator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/AtomicTypeComparator.php',
+ 'Psalm\\Internal\\Type\\Comparator\\CallableTypeComparator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/CallableTypeComparator.php',
+ 'Psalm\\Internal\\Type\\Comparator\\ClassStringComparator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/ClassStringComparator.php',
+ 'Psalm\\Internal\\Type\\Comparator\\GenericTypeComparator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/GenericTypeComparator.php',
+ 'Psalm\\Internal\\Type\\Comparator\\KeyedArrayComparator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/KeyedArrayComparator.php',
+ 'Psalm\\Internal\\Type\\Comparator\\ObjectComparator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/ObjectComparator.php',
+ 'Psalm\\Internal\\Type\\Comparator\\ScalarTypeComparator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/ScalarTypeComparator.php',
+ 'Psalm\\Internal\\Type\\Comparator\\TypeComparisonResult' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/TypeComparisonResult.php',
+ 'Psalm\\Internal\\Type\\Comparator\\UnionTypeComparator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/UnionTypeComparator.php',
+ 'Psalm\\Internal\\Type\\NegatedAssertionReconciler' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/NegatedAssertionReconciler.php',
+ 'Psalm\\Internal\\Type\\ParseTree' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree.php',
+ 'Psalm\\Internal\\Type\\ParseTreeCreator' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTreeCreator.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\CallableParamTree' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/CallableParamTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\CallableTree' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/CallableTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\CallableWithReturnTypeTree' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/CallableWithReturnTypeTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\ConditionalTree' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/ConditionalTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\EncapsulationTree' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/EncapsulationTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\GenericTree' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/GenericTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\IndexedAccessTree' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/IndexedAccessTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\IntersectionTree' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/IntersectionTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\KeyedArrayPropertyTree' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/KeyedArrayPropertyTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\KeyedArrayTree' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/KeyedArrayTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\MethodParamTree' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/MethodParamTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\MethodTree' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/MethodTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\MethodWithReturnTypeTree' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/MethodWithReturnTypeTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\NullableTree' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/NullableTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\Root' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/Root.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\TemplateAsTree' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/TemplateAsTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\TemplateIsTree' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/TemplateIsTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\UnionTree' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/UnionTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\Value' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/Value.php',
+ 'Psalm\\Internal\\Type\\SimpleAssertionReconciler' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/SimpleAssertionReconciler.php',
+ 'Psalm\\Internal\\Type\\SimpleNegatedAssertionReconciler' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/SimpleNegatedAssertionReconciler.php',
+ 'Psalm\\Internal\\Type\\TemplateResult' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/TemplateResult.php',
+ 'Psalm\\Internal\\Type\\TypeAlias' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/TypeAlias.php',
+ 'Psalm\\Internal\\Type\\TypeAlias\\ClassTypeAlias' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/TypeAlias/ClassTypeAlias.php',
+ 'Psalm\\Internal\\Type\\TypeAlias\\InlineTypeAlias' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/TypeAlias/InlineTypeAlias.php',
+ 'Psalm\\Internal\\Type\\TypeAlias\\LinkableTypeAlias' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/TypeAlias/LinkableTypeAlias.php',
+ 'Psalm\\Internal\\Type\\TypeCombination' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/TypeCombination.php',
+ 'Psalm\\Internal\\Type\\TypeExpander' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/TypeExpander.php',
+ 'Psalm\\Internal\\Type\\TypeParser' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/TypeParser.php',
+ 'Psalm\\Internal\\Type\\TypeTokenizer' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/TypeTokenizer.php',
+ 'Psalm\\Internal\\Type\\UnionTemplateHandler' => $vendorDir . '/vimeo/psalm/src/Psalm/Internal/Type/UnionTemplateHandler.php',
+ 'Psalm\\IssueBuffer' => $vendorDir . '/vimeo/psalm/src/Psalm/IssueBuffer.php',
+ 'Psalm\\Issue\\AbstractInstantiation' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/AbstractInstantiation.php',
+ 'Psalm\\Issue\\AbstractMethodCall' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/AbstractMethodCall.php',
+ 'Psalm\\Issue\\ArgumentIssue' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ArgumentIssue.php',
+ 'Psalm\\Issue\\ArgumentTypeCoercion' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ArgumentTypeCoercion.php',
+ 'Psalm\\Issue\\AssignmentToVoid' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/AssignmentToVoid.php',
+ 'Psalm\\Issue\\CircularReference' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/CircularReference.php',
+ 'Psalm\\Issue\\ClassIssue' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ClassIssue.php',
+ 'Psalm\\Issue\\CodeIssue' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/CodeIssue.php',
+ 'Psalm\\Issue\\ConflictingReferenceConstraint' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ConflictingReferenceConstraint.php',
+ 'Psalm\\Issue\\ConstructorSignatureMismatch' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ConstructorSignatureMismatch.php',
+ 'Psalm\\Issue\\ContinueOutsideLoop' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ContinueOutsideLoop.php',
+ 'Psalm\\Issue\\DeprecatedClass' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/DeprecatedClass.php',
+ 'Psalm\\Issue\\DeprecatedConstant' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/DeprecatedConstant.php',
+ 'Psalm\\Issue\\DeprecatedFunction' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/DeprecatedFunction.php',
+ 'Psalm\\Issue\\DeprecatedInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/DeprecatedInterface.php',
+ 'Psalm\\Issue\\DeprecatedMethod' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/DeprecatedMethod.php',
+ 'Psalm\\Issue\\DeprecatedProperty' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/DeprecatedProperty.php',
+ 'Psalm\\Issue\\DeprecatedTrait' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/DeprecatedTrait.php',
+ 'Psalm\\Issue\\DocblockTypeContradiction' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/DocblockTypeContradiction.php',
+ 'Psalm\\Issue\\DuplicateArrayKey' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/DuplicateArrayKey.php',
+ 'Psalm\\Issue\\DuplicateClass' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/DuplicateClass.php',
+ 'Psalm\\Issue\\DuplicateFunction' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/DuplicateFunction.php',
+ 'Psalm\\Issue\\DuplicateMethod' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/DuplicateMethod.php',
+ 'Psalm\\Issue\\DuplicateParam' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/DuplicateParam.php',
+ 'Psalm\\Issue\\EmptyArrayAccess' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/EmptyArrayAccess.php',
+ 'Psalm\\Issue\\ExtensionRequirementViolation' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ExtensionRequirementViolation.php',
+ 'Psalm\\Issue\\FalsableReturnStatement' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/FalsableReturnStatement.php',
+ 'Psalm\\Issue\\FalseOperand' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/FalseOperand.php',
+ 'Psalm\\Issue\\ForbiddenCode' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ForbiddenCode.php',
+ 'Psalm\\Issue\\ForbiddenEcho' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ForbiddenEcho.php',
+ 'Psalm\\Issue\\FunctionIssue' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/FunctionIssue.php',
+ 'Psalm\\Issue\\ImplementationRequirementViolation' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ImplementationRequirementViolation.php',
+ 'Psalm\\Issue\\ImplementedParamTypeMismatch' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ImplementedParamTypeMismatch.php',
+ 'Psalm\\Issue\\ImplementedReturnTypeMismatch' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ImplementedReturnTypeMismatch.php',
+ 'Psalm\\Issue\\ImplicitToStringCast' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ImplicitToStringCast.php',
+ 'Psalm\\Issue\\ImpureByReferenceAssignment' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ImpureByReferenceAssignment.php',
+ 'Psalm\\Issue\\ImpureFunctionCall' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ImpureFunctionCall.php',
+ 'Psalm\\Issue\\ImpureMethodCall' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ImpureMethodCall.php',
+ 'Psalm\\Issue\\ImpurePropertyAssignment' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ImpurePropertyAssignment.php',
+ 'Psalm\\Issue\\ImpurePropertyFetch' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ImpurePropertyFetch.php',
+ 'Psalm\\Issue\\ImpureStaticProperty' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ImpureStaticProperty.php',
+ 'Psalm\\Issue\\ImpureStaticVariable' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ImpureStaticVariable.php',
+ 'Psalm\\Issue\\ImpureVariable' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ImpureVariable.php',
+ 'Psalm\\Issue\\InaccessibleClassConstant' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InaccessibleClassConstant.php',
+ 'Psalm\\Issue\\InaccessibleMethod' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InaccessibleMethod.php',
+ 'Psalm\\Issue\\InaccessibleProperty' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InaccessibleProperty.php',
+ 'Psalm\\Issue\\InterfaceInstantiation' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InterfaceInstantiation.php',
+ 'Psalm\\Issue\\InternalClass' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InternalClass.php',
+ 'Psalm\\Issue\\InternalMethod' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InternalMethod.php',
+ 'Psalm\\Issue\\InternalProperty' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InternalProperty.php',
+ 'Psalm\\Issue\\InvalidArgument' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidArgument.php',
+ 'Psalm\\Issue\\InvalidArrayAccess' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidArrayAccess.php',
+ 'Psalm\\Issue\\InvalidArrayAssignment' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidArrayAssignment.php',
+ 'Psalm\\Issue\\InvalidArrayOffset' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidArrayOffset.php',
+ 'Psalm\\Issue\\InvalidCast' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidCast.php',
+ 'Psalm\\Issue\\InvalidCatch' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidCatch.php',
+ 'Psalm\\Issue\\InvalidClass' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidClass.php',
+ 'Psalm\\Issue\\InvalidClone' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidClone.php',
+ 'Psalm\\Issue\\InvalidDocblock' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidDocblock.php',
+ 'Psalm\\Issue\\InvalidDocblockParamName' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidDocblockParamName.php',
+ 'Psalm\\Issue\\InvalidExtendClass' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidExtendClass.php',
+ 'Psalm\\Issue\\InvalidFalsableReturnType' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidFalsableReturnType.php',
+ 'Psalm\\Issue\\InvalidFunctionCall' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidFunctionCall.php',
+ 'Psalm\\Issue\\InvalidGlobal' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidGlobal.php',
+ 'Psalm\\Issue\\InvalidIterator' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidIterator.php',
+ 'Psalm\\Issue\\InvalidLiteralArgument' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidLiteralArgument.php',
+ 'Psalm\\Issue\\InvalidMethodCall' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidMethodCall.php',
+ 'Psalm\\Issue\\InvalidNamedArgument' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidNamedArgument.php',
+ 'Psalm\\Issue\\InvalidNullableReturnType' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidNullableReturnType.php',
+ 'Psalm\\Issue\\InvalidOperand' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidOperand.php',
+ 'Psalm\\Issue\\InvalidParamDefault' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidParamDefault.php',
+ 'Psalm\\Issue\\InvalidParent' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidParent.php',
+ 'Psalm\\Issue\\InvalidPassByReference' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidPassByReference.php',
+ 'Psalm\\Issue\\InvalidPropertyAssignment' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidPropertyAssignment.php',
+ 'Psalm\\Issue\\InvalidPropertyAssignmentValue' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidPropertyAssignmentValue.php',
+ 'Psalm\\Issue\\InvalidPropertyFetch' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidPropertyFetch.php',
+ 'Psalm\\Issue\\InvalidReturnStatement' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidReturnStatement.php',
+ 'Psalm\\Issue\\InvalidReturnType' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidReturnType.php',
+ 'Psalm\\Issue\\InvalidScalarArgument' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidScalarArgument.php',
+ 'Psalm\\Issue\\InvalidScope' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidScope.php',
+ 'Psalm\\Issue\\InvalidStaticInvocation' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidStaticInvocation.php',
+ 'Psalm\\Issue\\InvalidStringClass' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidStringClass.php',
+ 'Psalm\\Issue\\InvalidTemplateParam' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidTemplateParam.php',
+ 'Psalm\\Issue\\InvalidThrow' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidThrow.php',
+ 'Psalm\\Issue\\InvalidToString' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidToString.php',
+ 'Psalm\\Issue\\InvalidTypeImport' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/InvalidTypeImport.php',
+ 'Psalm\\Issue\\LessSpecificImplementedReturnType' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/LessSpecificImplementedReturnType.php',
+ 'Psalm\\Issue\\LessSpecificReturnStatement' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/LessSpecificReturnStatement.php',
+ 'Psalm\\Issue\\LessSpecificReturnType' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/LessSpecificReturnType.php',
+ 'Psalm\\Issue\\LoopInvalidation' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/LoopInvalidation.php',
+ 'Psalm\\Issue\\MethodIssue' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MethodIssue.php',
+ 'Psalm\\Issue\\MethodSignatureMismatch' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MethodSignatureMismatch.php',
+ 'Psalm\\Issue\\MethodSignatureMustOmitReturnType' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MethodSignatureMustOmitReturnType.php',
+ 'Psalm\\Issue\\MismatchingDocblockParamType' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MismatchingDocblockParamType.php',
+ 'Psalm\\Issue\\MismatchingDocblockReturnType' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MismatchingDocblockReturnType.php',
+ 'Psalm\\Issue\\MissingClosureParamType' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MissingClosureParamType.php',
+ 'Psalm\\Issue\\MissingClosureReturnType' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MissingClosureReturnType.php',
+ 'Psalm\\Issue\\MissingConstructor' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MissingConstructor.php',
+ 'Psalm\\Issue\\MissingDependency' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MissingDependency.php',
+ 'Psalm\\Issue\\MissingDocblockType' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MissingDocblockType.php',
+ 'Psalm\\Issue\\MissingFile' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MissingFile.php',
+ 'Psalm\\Issue\\MissingImmutableAnnotation' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MissingImmutableAnnotation.php',
+ 'Psalm\\Issue\\MissingParamType' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MissingParamType.php',
+ 'Psalm\\Issue\\MissingPropertyType' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MissingPropertyType.php',
+ 'Psalm\\Issue\\MissingReturnType' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MissingReturnType.php',
+ 'Psalm\\Issue\\MissingTemplateParam' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MissingTemplateParam.php',
+ 'Psalm\\Issue\\MissingThrowsDocblock' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MissingThrowsDocblock.php',
+ 'Psalm\\Issue\\MixedArgument' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MixedArgument.php',
+ 'Psalm\\Issue\\MixedArgumentTypeCoercion' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MixedArgumentTypeCoercion.php',
+ 'Psalm\\Issue\\MixedArrayAccess' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MixedArrayAccess.php',
+ 'Psalm\\Issue\\MixedArrayAssignment' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MixedArrayAssignment.php',
+ 'Psalm\\Issue\\MixedArrayOffset' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MixedArrayOffset.php',
+ 'Psalm\\Issue\\MixedArrayTypeCoercion' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MixedArrayTypeCoercion.php',
+ 'Psalm\\Issue\\MixedAssignment' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MixedAssignment.php',
+ 'Psalm\\Issue\\MixedClone' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MixedClone.php',
+ 'Psalm\\Issue\\MixedFunctionCall' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MixedFunctionCall.php',
+ 'Psalm\\Issue\\MixedInferredReturnType' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MixedInferredReturnType.php',
+ 'Psalm\\Issue\\MixedMethodCall' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MixedMethodCall.php',
+ 'Psalm\\Issue\\MixedOperand' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MixedOperand.php',
+ 'Psalm\\Issue\\MixedPropertyAssignment' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MixedPropertyAssignment.php',
+ 'Psalm\\Issue\\MixedPropertyFetch' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MixedPropertyFetch.php',
+ 'Psalm\\Issue\\MixedPropertyTypeCoercion' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MixedPropertyTypeCoercion.php',
+ 'Psalm\\Issue\\MixedReturnStatement' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MixedReturnStatement.php',
+ 'Psalm\\Issue\\MixedReturnTypeCoercion' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MixedReturnTypeCoercion.php',
+ 'Psalm\\Issue\\MixedStringOffsetAssignment' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MixedStringOffsetAssignment.php',
+ 'Psalm\\Issue\\MoreSpecificImplementedParamType' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MoreSpecificImplementedParamType.php',
+ 'Psalm\\Issue\\MoreSpecificReturnType' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MoreSpecificReturnType.php',
+ 'Psalm\\Issue\\MutableDependency' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/MutableDependency.php',
+ 'Psalm\\Issue\\NoInterfaceProperties' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/NoInterfaceProperties.php',
+ 'Psalm\\Issue\\NoValue' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/NoValue.php',
+ 'Psalm\\Issue\\NonStaticSelfCall' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/NonStaticSelfCall.php',
+ 'Psalm\\Issue\\NullArgument' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/NullArgument.php',
+ 'Psalm\\Issue\\NullArrayAccess' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/NullArrayAccess.php',
+ 'Psalm\\Issue\\NullArrayOffset' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/NullArrayOffset.php',
+ 'Psalm\\Issue\\NullFunctionCall' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/NullFunctionCall.php',
+ 'Psalm\\Issue\\NullIterator' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/NullIterator.php',
+ 'Psalm\\Issue\\NullOperand' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/NullOperand.php',
+ 'Psalm\\Issue\\NullPropertyAssignment' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/NullPropertyAssignment.php',
+ 'Psalm\\Issue\\NullPropertyFetch' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/NullPropertyFetch.php',
+ 'Psalm\\Issue\\NullReference' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/NullReference.php',
+ 'Psalm\\Issue\\NullableReturnStatement' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/NullableReturnStatement.php',
+ 'Psalm\\Issue\\OverriddenMethodAccess' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/OverriddenMethodAccess.php',
+ 'Psalm\\Issue\\OverriddenPropertyAccess' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/OverriddenPropertyAccess.php',
+ 'Psalm\\Issue\\ParadoxicalCondition' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ParadoxicalCondition.php',
+ 'Psalm\\Issue\\ParamNameMismatch' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ParamNameMismatch.php',
+ 'Psalm\\Issue\\ParentNotFound' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ParentNotFound.php',
+ 'Psalm\\Issue\\ParseError' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ParseError.php',
+ 'Psalm\\Issue\\PluginIssue' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PluginIssue.php',
+ 'Psalm\\Issue\\PossibleRawObjectIteration' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossibleRawObjectIteration.php',
+ 'Psalm\\Issue\\PossiblyFalseArgument' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyFalseArgument.php',
+ 'Psalm\\Issue\\PossiblyFalseIterator' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyFalseIterator.php',
+ 'Psalm\\Issue\\PossiblyFalseOperand' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyFalseOperand.php',
+ 'Psalm\\Issue\\PossiblyFalsePropertyAssignmentValue' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyFalsePropertyAssignmentValue.php',
+ 'Psalm\\Issue\\PossiblyFalseReference' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyFalseReference.php',
+ 'Psalm\\Issue\\PossiblyInvalidArgument' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidArgument.php',
+ 'Psalm\\Issue\\PossiblyInvalidArrayAccess' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidArrayAccess.php',
+ 'Psalm\\Issue\\PossiblyInvalidArrayAssignment' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidArrayAssignment.php',
+ 'Psalm\\Issue\\PossiblyInvalidArrayOffset' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidArrayOffset.php',
+ 'Psalm\\Issue\\PossiblyInvalidCast' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidCast.php',
+ 'Psalm\\Issue\\PossiblyInvalidClone' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidClone.php',
+ 'Psalm\\Issue\\PossiblyInvalidFunctionCall' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidFunctionCall.php',
+ 'Psalm\\Issue\\PossiblyInvalidIterator' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidIterator.php',
+ 'Psalm\\Issue\\PossiblyInvalidMethodCall' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidMethodCall.php',
+ 'Psalm\\Issue\\PossiblyInvalidOperand' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidOperand.php',
+ 'Psalm\\Issue\\PossiblyInvalidPropertyAssignment' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidPropertyAssignment.php',
+ 'Psalm\\Issue\\PossiblyInvalidPropertyAssignmentValue' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidPropertyAssignmentValue.php',
+ 'Psalm\\Issue\\PossiblyInvalidPropertyFetch' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidPropertyFetch.php',
+ 'Psalm\\Issue\\PossiblyNullArgument' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullArgument.php',
+ 'Psalm\\Issue\\PossiblyNullArrayAccess' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullArrayAccess.php',
+ 'Psalm\\Issue\\PossiblyNullArrayAssignment' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullArrayAssignment.php',
+ 'Psalm\\Issue\\PossiblyNullArrayOffset' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullArrayOffset.php',
+ 'Psalm\\Issue\\PossiblyNullFunctionCall' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullFunctionCall.php',
+ 'Psalm\\Issue\\PossiblyNullIterator' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullIterator.php',
+ 'Psalm\\Issue\\PossiblyNullOperand' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullOperand.php',
+ 'Psalm\\Issue\\PossiblyNullPropertyAssignment' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullPropertyAssignment.php',
+ 'Psalm\\Issue\\PossiblyNullPropertyAssignmentValue' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullPropertyAssignmentValue.php',
+ 'Psalm\\Issue\\PossiblyNullPropertyFetch' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullPropertyFetch.php',
+ 'Psalm\\Issue\\PossiblyNullReference' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullReference.php',
+ 'Psalm\\Issue\\PossiblyUndefinedArrayOffset' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyUndefinedArrayOffset.php',
+ 'Psalm\\Issue\\PossiblyUndefinedGlobalVariable' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyUndefinedGlobalVariable.php',
+ 'Psalm\\Issue\\PossiblyUndefinedIntArrayOffset' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyUndefinedIntArrayOffset.php',
+ 'Psalm\\Issue\\PossiblyUndefinedMethod' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyUndefinedMethod.php',
+ 'Psalm\\Issue\\PossiblyUndefinedStringArrayOffset' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyUndefinedStringArrayOffset.php',
+ 'Psalm\\Issue\\PossiblyUndefinedVariable' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyUndefinedVariable.php',
+ 'Psalm\\Issue\\PossiblyUnusedMethod' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyUnusedMethod.php',
+ 'Psalm\\Issue\\PossiblyUnusedParam' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyUnusedParam.php',
+ 'Psalm\\Issue\\PossiblyUnusedProperty' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PossiblyUnusedProperty.php',
+ 'Psalm\\Issue\\PropertyIssue' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PropertyIssue.php',
+ 'Psalm\\Issue\\PropertyNotSetInConstructor' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PropertyNotSetInConstructor.php',
+ 'Psalm\\Issue\\PropertyTypeCoercion' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PropertyTypeCoercion.php',
+ 'Psalm\\Issue\\PsalmInternalError' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/PsalmInternalError.php',
+ 'Psalm\\Issue\\RawObjectIteration' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/RawObjectIteration.php',
+ 'Psalm\\Issue\\RedundantCondition' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/RedundantCondition.php',
+ 'Psalm\\Issue\\RedundantConditionGivenDocblockType' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/RedundantConditionGivenDocblockType.php',
+ 'Psalm\\Issue\\RedundantIdentityWithTrue' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/RedundantIdentityWithTrue.php',
+ 'Psalm\\Issue\\ReferenceConstraintViolation' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ReferenceConstraintViolation.php',
+ 'Psalm\\Issue\\ReservedWord' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/ReservedWord.php',
+ 'Psalm\\Issue\\StringIncrement' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/StringIncrement.php',
+ 'Psalm\\Issue\\TaintedInput' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/TaintedInput.php',
+ 'Psalm\\Issue\\TooFewArguments' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/TooFewArguments.php',
+ 'Psalm\\Issue\\TooManyArguments' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/TooManyArguments.php',
+ 'Psalm\\Issue\\TooManyTemplateParams' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/TooManyTemplateParams.php',
+ 'Psalm\\Issue\\Trace' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/Trace.php',
+ 'Psalm\\Issue\\TraitMethodSignatureMismatch' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/TraitMethodSignatureMismatch.php',
+ 'Psalm\\Issue\\TypeDoesNotContainNull' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/TypeDoesNotContainNull.php',
+ 'Psalm\\Issue\\TypeDoesNotContainType' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/TypeDoesNotContainType.php',
+ 'Psalm\\Issue\\UncaughtThrowInGlobalScope' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UncaughtThrowInGlobalScope.php',
+ 'Psalm\\Issue\\UndefinedClass' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UndefinedClass.php',
+ 'Psalm\\Issue\\UndefinedConstant' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UndefinedConstant.php',
+ 'Psalm\\Issue\\UndefinedDocblockClass' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UndefinedDocblockClass.php',
+ 'Psalm\\Issue\\UndefinedFunction' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UndefinedFunction.php',
+ 'Psalm\\Issue\\UndefinedGlobalVariable' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UndefinedGlobalVariable.php',
+ 'Psalm\\Issue\\UndefinedInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UndefinedInterface.php',
+ 'Psalm\\Issue\\UndefinedInterfaceMethod' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UndefinedInterfaceMethod.php',
+ 'Psalm\\Issue\\UndefinedMagicMethod' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UndefinedMagicMethod.php',
+ 'Psalm\\Issue\\UndefinedMagicPropertyAssignment' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UndefinedMagicPropertyAssignment.php',
+ 'Psalm\\Issue\\UndefinedMagicPropertyFetch' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UndefinedMagicPropertyFetch.php',
+ 'Psalm\\Issue\\UndefinedMethod' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UndefinedMethod.php',
+ 'Psalm\\Issue\\UndefinedPropertyAssignment' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UndefinedPropertyAssignment.php',
+ 'Psalm\\Issue\\UndefinedPropertyFetch' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UndefinedPropertyFetch.php',
+ 'Psalm\\Issue\\UndefinedThisPropertyAssignment' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UndefinedThisPropertyAssignment.php',
+ 'Psalm\\Issue\\UndefinedThisPropertyFetch' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UndefinedThisPropertyFetch.php',
+ 'Psalm\\Issue\\UndefinedTrace' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UndefinedTrace.php',
+ 'Psalm\\Issue\\UndefinedTrait' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UndefinedTrait.php',
+ 'Psalm\\Issue\\UndefinedVariable' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UndefinedVariable.php',
+ 'Psalm\\Issue\\UnevaluatedCode' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UnevaluatedCode.php',
+ 'Psalm\\Issue\\UnhandledMatchCondition' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UnhandledMatchCondition.php',
+ 'Psalm\\Issue\\UnimplementedAbstractMethod' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UnimplementedAbstractMethod.php',
+ 'Psalm\\Issue\\UnimplementedInterfaceMethod' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UnimplementedInterfaceMethod.php',
+ 'Psalm\\Issue\\UninitializedProperty' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UninitializedProperty.php',
+ 'Psalm\\Issue\\UnnecessaryVarAnnotation' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UnnecessaryVarAnnotation.php',
+ 'Psalm\\Issue\\UnrecognizedExpression' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UnrecognizedExpression.php',
+ 'Psalm\\Issue\\UnrecognizedStatement' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UnrecognizedStatement.php',
+ 'Psalm\\Issue\\UnresolvableInclude' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UnresolvableInclude.php',
+ 'Psalm\\Issue\\UnsafeInstantiation' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UnsafeInstantiation.php',
+ 'Psalm\\Issue\\UnusedClass' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UnusedClass.php',
+ 'Psalm\\Issue\\UnusedClosureParam' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UnusedClosureParam.php',
+ 'Psalm\\Issue\\UnusedFunctionCall' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UnusedFunctionCall.php',
+ 'Psalm\\Issue\\UnusedMethod' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UnusedMethod.php',
+ 'Psalm\\Issue\\UnusedMethodCall' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UnusedMethodCall.php',
+ 'Psalm\\Issue\\UnusedParam' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UnusedParam.php',
+ 'Psalm\\Issue\\UnusedProperty' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UnusedProperty.php',
+ 'Psalm\\Issue\\UnusedPsalmSuppress' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UnusedPsalmSuppress.php',
+ 'Psalm\\Issue\\UnusedVariable' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/UnusedVariable.php',
+ 'Psalm\\Issue\\VariableIssue' => $vendorDir . '/vimeo/psalm/src/Psalm/Issue/VariableIssue.php',
+ 'Psalm\\NodeTypeProvider' => $vendorDir . '/vimeo/psalm/src/Psalm/NodeTypeProvider.php',
+ 'Psalm\\PluginRegistrationSocket' => $vendorDir . '/vimeo/psalm/src/Psalm/PluginRegistrationSocket.php',
+ 'Psalm\\Plugin\\Hook\\AfterAnalysisInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterClassLikeAnalysisInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterClassLikeAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterClassLikeExistenceCheckInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterClassLikeExistenceCheckInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterClassLikeVisitInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterClassLikeVisitInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterCodebasePopulatedInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterCodebasePopulatedInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterEveryFunctionCallAnalysisInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterEveryFunctionCallAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterExpressionAnalysisInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterExpressionAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterFileAnalysisInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterFileAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterFunctionCallAnalysisInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterFunctionCallAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterFunctionLikeAnalysisInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterFunctionLikeAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterMethodCallAnalysisInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterMethodCallAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterStatementAnalysisInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterStatementAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\BeforeFileAnalysisInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/BeforeFileAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\FunctionExistenceProviderInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/FunctionExistenceProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\FunctionParamsProviderInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/FunctionParamsProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\FunctionReturnTypeProviderInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/FunctionReturnTypeProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\MethodExistenceProviderInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/MethodExistenceProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\MethodParamsProviderInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/MethodParamsProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\MethodReturnTypeProviderInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/MethodReturnTypeProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\MethodVisibilityProviderInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/MethodVisibilityProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\PropertyExistenceProviderInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/PropertyExistenceProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\PropertyTypeProviderInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/PropertyTypeProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\PropertyVisibilityProviderInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/PropertyVisibilityProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\StringInterpreterInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Hook/StringInterpreterInterface.php',
+ 'Psalm\\Plugin\\PluginEntryPointInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/PluginEntryPointInterface.php',
+ 'Psalm\\Plugin\\RegistrationInterface' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/RegistrationInterface.php',
+ 'Psalm\\Plugin\\Shepherd' => $vendorDir . '/vimeo/psalm/src/Psalm/Plugin/Shepherd.php',
+ 'Psalm\\Progress\\DebugProgress' => $vendorDir . '/vimeo/psalm/src/Psalm/Progress/DebugProgress.php',
+ 'Psalm\\Progress\\DefaultProgress' => $vendorDir . '/vimeo/psalm/src/Psalm/Progress/DefaultProgress.php',
+ 'Psalm\\Progress\\LongProgress' => $vendorDir . '/vimeo/psalm/src/Psalm/Progress/LongProgress.php',
+ 'Psalm\\Progress\\Progress' => $vendorDir . '/vimeo/psalm/src/Psalm/Progress/Progress.php',
+ 'Psalm\\Progress\\VoidProgress' => $vendorDir . '/vimeo/psalm/src/Psalm/Progress/VoidProgress.php',
+ 'Psalm\\Report' => $vendorDir . '/vimeo/psalm/src/Psalm/Report.php',
+ 'Psalm\\Report\\CheckstyleReport' => $vendorDir . '/vimeo/psalm/src/Psalm/Report/CheckstyleReport.php',
+ 'Psalm\\Report\\CompactReport' => $vendorDir . '/vimeo/psalm/src/Psalm/Report/CompactReport.php',
+ 'Psalm\\Report\\ConsoleReport' => $vendorDir . '/vimeo/psalm/src/Psalm/Report/ConsoleReport.php',
+ 'Psalm\\Report\\EmacsReport' => $vendorDir . '/vimeo/psalm/src/Psalm/Report/EmacsReport.php',
+ 'Psalm\\Report\\GithubActionsReport' => $vendorDir . '/vimeo/psalm/src/Psalm/Report/GithubActionsReport.php',
+ 'Psalm\\Report\\JsonReport' => $vendorDir . '/vimeo/psalm/src/Psalm/Report/JsonReport.php',
+ 'Psalm\\Report\\JsonSummaryReport' => $vendorDir . '/vimeo/psalm/src/Psalm/Report/JsonSummaryReport.php',
+ 'Psalm\\Report\\JunitReport' => $vendorDir . '/vimeo/psalm/src/Psalm/Report/JunitReport.php',
+ 'Psalm\\Report\\PhpStormReport' => $vendorDir . '/vimeo/psalm/src/Psalm/Report/PhpStormReport.php',
+ 'Psalm\\Report\\PylintReport' => $vendorDir . '/vimeo/psalm/src/Psalm/Report/PylintReport.php',
+ 'Psalm\\Report\\ReportOptions' => $vendorDir . '/vimeo/psalm/src/Psalm/Report/ReportOptions.php',
+ 'Psalm\\Report\\SonarqubeReport' => $vendorDir . '/vimeo/psalm/src/Psalm/Report/SonarqubeReport.php',
+ 'Psalm\\Report\\TextReport' => $vendorDir . '/vimeo/psalm/src/Psalm/Report/TextReport.php',
+ 'Psalm\\Report\\XmlReport' => $vendorDir . '/vimeo/psalm/src/Psalm/Report/XmlReport.php',
+ 'Psalm\\SourceControl\\Git\\CommitInfo' => $vendorDir . '/vimeo/psalm/src/Psalm/SourceControl/Git/CommitInfo.php',
+ 'Psalm\\SourceControl\\Git\\GitInfo' => $vendorDir . '/vimeo/psalm/src/Psalm/SourceControl/Git/GitInfo.php',
+ 'Psalm\\SourceControl\\Git\\RemoteInfo' => $vendorDir . '/vimeo/psalm/src/Psalm/SourceControl/Git/RemoteInfo.php',
+ 'Psalm\\SourceControl\\SourceControlInfo' => $vendorDir . '/vimeo/psalm/src/Psalm/SourceControl/SourceControlInfo.php',
+ 'Psalm\\StatementsSource' => $vendorDir . '/vimeo/psalm/src/Psalm/StatementsSource.php',
+ 'Psalm\\Storage\\Assertion' => $vendorDir . '/vimeo/psalm/src/Psalm/Storage/Assertion.php',
+ 'Psalm\\Storage\\ClassConstantStorage' => $vendorDir . '/vimeo/psalm/src/Psalm/Storage/ClassConstantStorage.php',
+ 'Psalm\\Storage\\ClassLikeStorage' => $vendorDir . '/vimeo/psalm/src/Psalm/Storage/ClassLikeStorage.php',
+ 'Psalm\\Storage\\CustomMetadataTrait' => $vendorDir . '/vimeo/psalm/src/Psalm/Storage/CustomMetadataTrait.php',
+ 'Psalm\\Storage\\FileStorage' => $vendorDir . '/vimeo/psalm/src/Psalm/Storage/FileStorage.php',
+ 'Psalm\\Storage\\FunctionLikeParameter' => $vendorDir . '/vimeo/psalm/src/Psalm/Storage/FunctionLikeParameter.php',
+ 'Psalm\\Storage\\FunctionLikeStorage' => $vendorDir . '/vimeo/psalm/src/Psalm/Storage/FunctionLikeStorage.php',
+ 'Psalm\\Storage\\FunctionStorage' => $vendorDir . '/vimeo/psalm/src/Psalm/Storage/FunctionStorage.php',
+ 'Psalm\\Storage\\MethodStorage' => $vendorDir . '/vimeo/psalm/src/Psalm/Storage/MethodStorage.php',
+ 'Psalm\\Storage\\PropertyStorage' => $vendorDir . '/vimeo/psalm/src/Psalm/Storage/PropertyStorage.php',
+ 'Psalm\\Type' => $vendorDir . '/vimeo/psalm/src/Psalm/Type.php',
+ 'Psalm\\Type\\Algebra' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Algebra.php',
+ 'Psalm\\Type\\Atomic' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic.php',
+ 'Psalm\\Type\\Atomic\\CallableTrait' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/CallableTrait.php',
+ 'Psalm\\Type\\Atomic\\GenericTrait' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/GenericTrait.php',
+ 'Psalm\\Type\\Atomic\\HasIntersectionTrait' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/HasIntersectionTrait.php',
+ 'Psalm\\Type\\Atomic\\Scalar' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/Scalar.php',
+ 'Psalm\\Type\\Atomic\\TAnonymousClassInstance' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TAnonymousClassInstance.php',
+ 'Psalm\\Type\\Atomic\\TArray' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TArray.php',
+ 'Psalm\\Type\\Atomic\\TArrayKey' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TArrayKey.php',
+ 'Psalm\\Type\\Atomic\\TAssertionFalsy' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TAssertionFalsy.php',
+ 'Psalm\\Type\\Atomic\\TBool' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TBool.php',
+ 'Psalm\\Type\\Atomic\\TCallable' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TCallable.php',
+ 'Psalm\\Type\\Atomic\\TCallableArray' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TCallableArray.php',
+ 'Psalm\\Type\\Atomic\\TCallableKeyedArray' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TCallableKeyedArray.php',
+ 'Psalm\\Type\\Atomic\\TCallableList' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TCallableList.php',
+ 'Psalm\\Type\\Atomic\\TCallableObject' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TCallableObject.php',
+ 'Psalm\\Type\\Atomic\\TCallableString' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TCallableString.php',
+ 'Psalm\\Type\\Atomic\\TClassString' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TClassString.php',
+ 'Psalm\\Type\\Atomic\\TClassStringMap' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TClassStringMap.php',
+ 'Psalm\\Type\\Atomic\\TClosedResource' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TClosedResource.php',
+ 'Psalm\\Type\\Atomic\\TClosure' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TClosure.php',
+ 'Psalm\\Type\\Atomic\\TConditional' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TConditional.php',
+ 'Psalm\\Type\\Atomic\\TDependentGetClass' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TDependentGetClass.php',
+ 'Psalm\\Type\\Atomic\\TDependentGetDebugType' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TDependentGetDebugType.php',
+ 'Psalm\\Type\\Atomic\\TDependentGetType' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TDependentGetType.php',
+ 'Psalm\\Type\\Atomic\\TEmpty' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TEmpty.php',
+ 'Psalm\\Type\\Atomic\\TEmptyMixed' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TEmptyMixed.php',
+ 'Psalm\\Type\\Atomic\\TEmptyNumeric' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TEmptyNumeric.php',
+ 'Psalm\\Type\\Atomic\\TEmptyScalar' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TEmptyScalar.php',
+ 'Psalm\\Type\\Atomic\\TFalse' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TFalse.php',
+ 'Psalm\\Type\\Atomic\\TFloat' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TFloat.php',
+ 'Psalm\\Type\\Atomic\\TGenericObject' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TGenericObject.php',
+ 'Psalm\\Type\\Atomic\\THtmlEscapedString' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/THtmlEscapedString.php',
+ 'Psalm\\Type\\Atomic\\TInt' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TInt.php',
+ 'Psalm\\Type\\Atomic\\TIterable' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TIterable.php',
+ 'Psalm\\Type\\Atomic\\TKeyOfClassConstant' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TKeyOfClassConstant.php',
+ 'Psalm\\Type\\Atomic\\TKeyedArray' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TKeyedArray.php',
+ 'Psalm\\Type\\Atomic\\TList' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TList.php',
+ 'Psalm\\Type\\Atomic\\TLiteralClassString' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TLiteralClassString.php',
+ 'Psalm\\Type\\Atomic\\TLiteralFloat' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TLiteralFloat.php',
+ 'Psalm\\Type\\Atomic\\TLiteralInt' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TLiteralInt.php',
+ 'Psalm\\Type\\Atomic\\TLiteralString' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TLiteralString.php',
+ 'Psalm\\Type\\Atomic\\TLowercaseString' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TLowercaseString.php',
+ 'Psalm\\Type\\Atomic\\TMixed' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TMixed.php',
+ 'Psalm\\Type\\Atomic\\TNamedObject' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TNamedObject.php',
+ 'Psalm\\Type\\Atomic\\TNever' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TNever.php',
+ 'Psalm\\Type\\Atomic\\TNonEmptyArray' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TNonEmptyArray.php',
+ 'Psalm\\Type\\Atomic\\TNonEmptyList' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TNonEmptyList.php',
+ 'Psalm\\Type\\Atomic\\TNonEmptyLowercaseString' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TNonEmptyLowercaseString.php',
+ 'Psalm\\Type\\Atomic\\TNonEmptyMixed' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TNonEmptyMixed.php',
+ 'Psalm\\Type\\Atomic\\TNonEmptyScalar' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TNonEmptyScalar.php',
+ 'Psalm\\Type\\Atomic\\TNonEmptyString' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TNonEmptyString.php',
+ 'Psalm\\Type\\Atomic\\TNull' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TNull.php',
+ 'Psalm\\Type\\Atomic\\TNumeric' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TNumeric.php',
+ 'Psalm\\Type\\Atomic\\TNumericString' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TNumericString.php',
+ 'Psalm\\Type\\Atomic\\TObject' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TObject.php',
+ 'Psalm\\Type\\Atomic\\TObjectWithProperties' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TObjectWithProperties.php',
+ 'Psalm\\Type\\Atomic\\TPositiveInt' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TPositiveInt.php',
+ 'Psalm\\Type\\Atomic\\TResource' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TResource.php',
+ 'Psalm\\Type\\Atomic\\TScalar' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TScalar.php',
+ 'Psalm\\Type\\Atomic\\TScalarClassConstant' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TScalarClassConstant.php',
+ 'Psalm\\Type\\Atomic\\TSingleLetter' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TSingleLetter.php',
+ 'Psalm\\Type\\Atomic\\TString' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TString.php',
+ 'Psalm\\Type\\Atomic\\TTemplateIndexedAccess' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TTemplateIndexedAccess.php',
+ 'Psalm\\Type\\Atomic\\TTemplateKeyOf' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TTemplateKeyOf.php',
+ 'Psalm\\Type\\Atomic\\TTemplateParam' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TTemplateParam.php',
+ 'Psalm\\Type\\Atomic\\TTemplateParamClass' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TTemplateParamClass.php',
+ 'Psalm\\Type\\Atomic\\TTraitString' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TTraitString.php',
+ 'Psalm\\Type\\Atomic\\TTrue' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TTrue.php',
+ 'Psalm\\Type\\Atomic\\TTypeAlias' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TTypeAlias.php',
+ 'Psalm\\Type\\Atomic\\TValueOfClassConstant' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TValueOfClassConstant.php',
+ 'Psalm\\Type\\Atomic\\TVoid' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Atomic/TVoid.php',
+ 'Psalm\\Type\\NodeVisitor' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/NodeVisitor.php',
+ 'Psalm\\Type\\Reconciler' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Reconciler.php',
+ 'Psalm\\Type\\TaintKind' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/TaintKind.php',
+ 'Psalm\\Type\\TaintKindGroup' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/TaintKindGroup.php',
+ 'Psalm\\Type\\TypeNode' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/TypeNode.php',
+ 'Psalm\\Type\\Union' => $vendorDir . '/vimeo/psalm/src/Psalm/Type/Union.php',
+ 'Psr\\Container\\ContainerExceptionInterface' => $vendorDir . '/psr/container/src/ContainerExceptionInterface.php',
+ 'Psr\\Container\\ContainerInterface' => $vendorDir . '/psr/container/src/ContainerInterface.php',
+ 'Psr\\Container\\NotFoundExceptionInterface' => $vendorDir . '/psr/container/src/NotFoundExceptionInterface.php',
+ 'Psr\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/psr/event-dispatcher/src/EventDispatcherInterface.php',
+ 'Psr\\EventDispatcher\\ListenerProviderInterface' => $vendorDir . '/psr/event-dispatcher/src/ListenerProviderInterface.php',
+ 'Psr\\EventDispatcher\\StoppableEventInterface' => $vendorDir . '/psr/event-dispatcher/src/StoppableEventInterface.php',
+ 'Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/Psr/Log/AbstractLogger.php',
+ 'Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/Psr/Log/InvalidArgumentException.php',
+ 'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/Psr/Log/LogLevel.php',
+ 'Psr\\Log\\LoggerAwareInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareInterface.php',
+ 'Psr\\Log\\LoggerAwareTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareTrait.php',
+ 'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerInterface.php',
+ 'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerTrait.php',
+ 'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/Psr/Log/NullLogger.php',
+ 'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/DummyTest.php',
+ 'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
+ 'Psr\\Log\\Test\\TestLogger' => $vendorDir . '/psr/log/Psr/Log/Test/TestLogger.php',
+ 'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php',
+ 'SebastianBergmann\\Diff\\ConfigurationException' => $vendorDir . '/sebastian/diff/src/Exception/ConfigurationException.php',
+ 'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php',
+ 'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php',
+ 'SebastianBergmann\\Diff\\Exception' => $vendorDir . '/sebastian/diff/src/Exception/Exception.php',
+ 'SebastianBergmann\\Diff\\InvalidArgumentException' => $vendorDir . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
+ 'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php',
+ 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
+ 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
+ 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => $vendorDir . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
+ 'SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php',
+ 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
+ 'SessionUpdateTimestampHandlerInterface' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php',
+ 'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
+ 'Symfony\\Component\\Console\\Application' => $vendorDir . '/symfony/console/Application.php',
+ 'Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => $vendorDir . '/symfony/console/CommandLoader/CommandLoaderInterface.php',
+ 'Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/ContainerCommandLoader.php',
+ 'Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/FactoryCommandLoader.php',
+ 'Symfony\\Component\\Console\\Command\\Command' => $vendorDir . '/symfony/console/Command/Command.php',
+ 'Symfony\\Component\\Console\\Command\\HelpCommand' => $vendorDir . '/symfony/console/Command/HelpCommand.php',
+ 'Symfony\\Component\\Console\\Command\\ListCommand' => $vendorDir . '/symfony/console/Command/ListCommand.php',
+ 'Symfony\\Component\\Console\\Command\\LockableTrait' => $vendorDir . '/symfony/console/Command/LockableTrait.php',
+ 'Symfony\\Component\\Console\\ConsoleEvents' => $vendorDir . '/symfony/console/ConsoleEvents.php',
+ 'Symfony\\Component\\Console\\Cursor' => $vendorDir . '/symfony/console/Cursor.php',
+ 'Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => $vendorDir . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php',
+ 'Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => $vendorDir . '/symfony/console/Descriptor/ApplicationDescription.php',
+ 'Symfony\\Component\\Console\\Descriptor\\Descriptor' => $vendorDir . '/symfony/console/Descriptor/Descriptor.php',
+ 'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => $vendorDir . '/symfony/console/Descriptor/DescriptorInterface.php',
+ 'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => $vendorDir . '/symfony/console/Descriptor/JsonDescriptor.php',
+ 'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => $vendorDir . '/symfony/console/Descriptor/MarkdownDescriptor.php',
+ 'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => $vendorDir . '/symfony/console/Descriptor/TextDescriptor.php',
+ 'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => $vendorDir . '/symfony/console/Descriptor/XmlDescriptor.php',
+ 'Symfony\\Component\\Console\\EventListener\\ErrorListener' => $vendorDir . '/symfony/console/EventListener/ErrorListener.php',
+ 'Symfony\\Component\\Console\\Event\\ConsoleCommandEvent' => $vendorDir . '/symfony/console/Event/ConsoleCommandEvent.php',
+ 'Symfony\\Component\\Console\\Event\\ConsoleErrorEvent' => $vendorDir . '/symfony/console/Event/ConsoleErrorEvent.php',
+ 'Symfony\\Component\\Console\\Event\\ConsoleEvent' => $vendorDir . '/symfony/console/Event/ConsoleEvent.php',
+ 'Symfony\\Component\\Console\\Event\\ConsoleTerminateEvent' => $vendorDir . '/symfony/console/Event/ConsoleTerminateEvent.php',
+ 'Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => $vendorDir . '/symfony/console/Exception/CommandNotFoundException.php',
+ 'Symfony\\Component\\Console\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/console/Exception/ExceptionInterface.php',
+ 'Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/console/Exception/InvalidArgumentException.php',
+ 'Symfony\\Component\\Console\\Exception\\InvalidOptionException' => $vendorDir . '/symfony/console/Exception/InvalidOptionException.php',
+ 'Symfony\\Component\\Console\\Exception\\LogicException' => $vendorDir . '/symfony/console/Exception/LogicException.php',
+ 'Symfony\\Component\\Console\\Exception\\MissingInputException' => $vendorDir . '/symfony/console/Exception/MissingInputException.php',
+ 'Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => $vendorDir . '/symfony/console/Exception/NamespaceNotFoundException.php',
+ 'Symfony\\Component\\Console\\Exception\\RuntimeException' => $vendorDir . '/symfony/console/Exception/RuntimeException.php',
+ 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatter.php',
+ 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatterStyle.php',
+ 'Symfony\\Component\\Console\\Formatter\\OutputFormatter' => $vendorDir . '/symfony/console/Formatter/OutputFormatter.php',
+ 'Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterInterface.php',
+ 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyle.php',
+ 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleInterface.php',
+ 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleStack.php',
+ 'Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php',
+ 'Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => $vendorDir . '/symfony/console/Helper/DebugFormatterHelper.php',
+ 'Symfony\\Component\\Console\\Helper\\DescriptorHelper' => $vendorDir . '/symfony/console/Helper/DescriptorHelper.php',
+ 'Symfony\\Component\\Console\\Helper\\Dumper' => $vendorDir . '/symfony/console/Helper/Dumper.php',
+ 'Symfony\\Component\\Console\\Helper\\FormatterHelper' => $vendorDir . '/symfony/console/Helper/FormatterHelper.php',
+ 'Symfony\\Component\\Console\\Helper\\Helper' => $vendorDir . '/symfony/console/Helper/Helper.php',
+ 'Symfony\\Component\\Console\\Helper\\HelperInterface' => $vendorDir . '/symfony/console/Helper/HelperInterface.php',
+ 'Symfony\\Component\\Console\\Helper\\HelperSet' => $vendorDir . '/symfony/console/Helper/HelperSet.php',
+ 'Symfony\\Component\\Console\\Helper\\InputAwareHelper' => $vendorDir . '/symfony/console/Helper/InputAwareHelper.php',
+ 'Symfony\\Component\\Console\\Helper\\ProcessHelper' => $vendorDir . '/symfony/console/Helper/ProcessHelper.php',
+ 'Symfony\\Component\\Console\\Helper\\ProgressBar' => $vendorDir . '/symfony/console/Helper/ProgressBar.php',
+ 'Symfony\\Component\\Console\\Helper\\ProgressIndicator' => $vendorDir . '/symfony/console/Helper/ProgressIndicator.php',
+ 'Symfony\\Component\\Console\\Helper\\QuestionHelper' => $vendorDir . '/symfony/console/Helper/QuestionHelper.php',
+ 'Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => $vendorDir . '/symfony/console/Helper/SymfonyQuestionHelper.php',
+ 'Symfony\\Component\\Console\\Helper\\Table' => $vendorDir . '/symfony/console/Helper/Table.php',
+ 'Symfony\\Component\\Console\\Helper\\TableCell' => $vendorDir . '/symfony/console/Helper/TableCell.php',
+ 'Symfony\\Component\\Console\\Helper\\TableRows' => $vendorDir . '/symfony/console/Helper/TableRows.php',
+ 'Symfony\\Component\\Console\\Helper\\TableSeparator' => $vendorDir . '/symfony/console/Helper/TableSeparator.php',
+ 'Symfony\\Component\\Console\\Helper\\TableStyle' => $vendorDir . '/symfony/console/Helper/TableStyle.php',
+ 'Symfony\\Component\\Console\\Input\\ArgvInput' => $vendorDir . '/symfony/console/Input/ArgvInput.php',
+ 'Symfony\\Component\\Console\\Input\\ArrayInput' => $vendorDir . '/symfony/console/Input/ArrayInput.php',
+ 'Symfony\\Component\\Console\\Input\\Input' => $vendorDir . '/symfony/console/Input/Input.php',
+ 'Symfony\\Component\\Console\\Input\\InputArgument' => $vendorDir . '/symfony/console/Input/InputArgument.php',
+ 'Symfony\\Component\\Console\\Input\\InputAwareInterface' => $vendorDir . '/symfony/console/Input/InputAwareInterface.php',
+ 'Symfony\\Component\\Console\\Input\\InputDefinition' => $vendorDir . '/symfony/console/Input/InputDefinition.php',
+ 'Symfony\\Component\\Console\\Input\\InputInterface' => $vendorDir . '/symfony/console/Input/InputInterface.php',
+ 'Symfony\\Component\\Console\\Input\\InputOption' => $vendorDir . '/symfony/console/Input/InputOption.php',
+ 'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => $vendorDir . '/symfony/console/Input/StreamableInputInterface.php',
+ 'Symfony\\Component\\Console\\Input\\StringInput' => $vendorDir . '/symfony/console/Input/StringInput.php',
+ 'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => $vendorDir . '/symfony/console/Logger/ConsoleLogger.php',
+ 'Symfony\\Component\\Console\\Output\\BufferedOutput' => $vendorDir . '/symfony/console/Output/BufferedOutput.php',
+ 'Symfony\\Component\\Console\\Output\\ConsoleOutput' => $vendorDir . '/symfony/console/Output/ConsoleOutput.php',
+ 'Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => $vendorDir . '/symfony/console/Output/ConsoleOutputInterface.php',
+ 'Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => $vendorDir . '/symfony/console/Output/ConsoleSectionOutput.php',
+ 'Symfony\\Component\\Console\\Output\\NullOutput' => $vendorDir . '/symfony/console/Output/NullOutput.php',
+ 'Symfony\\Component\\Console\\Output\\Output' => $vendorDir . '/symfony/console/Output/Output.php',
+ 'Symfony\\Component\\Console\\Output\\OutputInterface' => $vendorDir . '/symfony/console/Output/OutputInterface.php',
+ 'Symfony\\Component\\Console\\Output\\StreamOutput' => $vendorDir . '/symfony/console/Output/StreamOutput.php',
+ 'Symfony\\Component\\Console\\Question\\ChoiceQuestion' => $vendorDir . '/symfony/console/Question/ChoiceQuestion.php',
+ 'Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => $vendorDir . '/symfony/console/Question/ConfirmationQuestion.php',
+ 'Symfony\\Component\\Console\\Question\\Question' => $vendorDir . '/symfony/console/Question/Question.php',
+ 'Symfony\\Component\\Console\\SingleCommandApplication' => $vendorDir . '/symfony/console/SingleCommandApplication.php',
+ 'Symfony\\Component\\Console\\Style\\OutputStyle' => $vendorDir . '/symfony/console/Style/OutputStyle.php',
+ 'Symfony\\Component\\Console\\Style\\StyleInterface' => $vendorDir . '/symfony/console/Style/StyleInterface.php',
+ 'Symfony\\Component\\Console\\Style\\SymfonyStyle' => $vendorDir . '/symfony/console/Style/SymfonyStyle.php',
+ 'Symfony\\Component\\Console\\Terminal' => $vendorDir . '/symfony/console/Terminal.php',
+ 'Symfony\\Component\\Console\\Tester\\ApplicationTester' => $vendorDir . '/symfony/console/Tester/ApplicationTester.php',
+ 'Symfony\\Component\\Console\\Tester\\CommandTester' => $vendorDir . '/symfony/console/Tester/CommandTester.php',
+ 'Symfony\\Component\\Console\\Tester\\TesterTrait' => $vendorDir . '/symfony/console/Tester/TesterTrait.php',
+ 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher' => $vendorDir . '/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php',
+ 'Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener' => $vendorDir . '/symfony/event-dispatcher/Debug/WrappedListener.php',
+ 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\AddEventAliasesPass' => $vendorDir . '/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php',
+ 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\RegisterListenersPass' => $vendorDir . '/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php',
+ 'Symfony\\Component\\EventDispatcher\\EventDispatcher' => $vendorDir . '/symfony/event-dispatcher/EventDispatcher.php',
+ 'Symfony\\Component\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher/EventDispatcherInterface.php',
+ 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface' => $vendorDir . '/symfony/event-dispatcher/EventSubscriberInterface.php',
+ 'Symfony\\Component\\EventDispatcher\\GenericEvent' => $vendorDir . '/symfony/event-dispatcher/GenericEvent.php',
+ 'Symfony\\Component\\EventDispatcher\\ImmutableEventDispatcher' => $vendorDir . '/symfony/event-dispatcher/ImmutableEventDispatcher.php',
+ 'Symfony\\Component\\EventDispatcher\\LegacyEventDispatcherProxy' => $vendorDir . '/symfony/event-dispatcher/LegacyEventDispatcherProxy.php',
+ 'Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/ExceptionInterface.php',
+ 'Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => $vendorDir . '/symfony/filesystem/Exception/FileNotFoundException.php',
+ 'Symfony\\Component\\Filesystem\\Exception\\IOException' => $vendorDir . '/symfony/filesystem/Exception/IOException.php',
+ 'Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/IOExceptionInterface.php',
+ 'Symfony\\Component\\Filesystem\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/filesystem/Exception/InvalidArgumentException.php',
+ 'Symfony\\Component\\Filesystem\\Filesystem' => $vendorDir . '/symfony/filesystem/Filesystem.php',
+ 'Symfony\\Component\\Finder\\Comparator\\Comparator' => $vendorDir . '/symfony/finder/Comparator/Comparator.php',
+ 'Symfony\\Component\\Finder\\Comparator\\DateComparator' => $vendorDir . '/symfony/finder/Comparator/DateComparator.php',
+ 'Symfony\\Component\\Finder\\Comparator\\NumberComparator' => $vendorDir . '/symfony/finder/Comparator/NumberComparator.php',
+ 'Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => $vendorDir . '/symfony/finder/Exception/AccessDeniedException.php',
+ 'Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => $vendorDir . '/symfony/finder/Exception/DirectoryNotFoundException.php',
+ 'Symfony\\Component\\Finder\\Finder' => $vendorDir . '/symfony/finder/Finder.php',
+ 'Symfony\\Component\\Finder\\Gitignore' => $vendorDir . '/symfony/finder/Gitignore.php',
+ 'Symfony\\Component\\Finder\\Glob' => $vendorDir . '/symfony/finder/Glob.php',
+ 'Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => $vendorDir . '/symfony/finder/Iterator/CustomFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DateRangeFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DepthRangeFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => $vendorDir . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FileTypeFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilecontentFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilenameFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => $vendorDir . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => $vendorDir . '/symfony/finder/Iterator/PathFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => $vendorDir . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/SizeRangeFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\SortableIterator' => $vendorDir . '/symfony/finder/Iterator/SortableIterator.php',
+ 'Symfony\\Component\\Finder\\SplFileInfo' => $vendorDir . '/symfony/finder/SplFileInfo.php',
+ 'Symfony\\Component\\OptionsResolver\\Debug\\OptionsResolverIntrospector' => $vendorDir . '/symfony/options-resolver/Debug/OptionsResolverIntrospector.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\AccessException' => $vendorDir . '/symfony/options-resolver/Exception/AccessException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/options-resolver/Exception/ExceptionInterface.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/options-resolver/Exception/InvalidArgumentException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidOptionsException' => $vendorDir . '/symfony/options-resolver/Exception/InvalidOptionsException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\MissingOptionsException' => $vendorDir . '/symfony/options-resolver/Exception/MissingOptionsException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\NoConfigurationException' => $vendorDir . '/symfony/options-resolver/Exception/NoConfigurationException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\NoSuchOptionException' => $vendorDir . '/symfony/options-resolver/Exception/NoSuchOptionException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\OptionDefinitionException' => $vendorDir . '/symfony/options-resolver/Exception/OptionDefinitionException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\UndefinedOptionsException' => $vendorDir . '/symfony/options-resolver/Exception/UndefinedOptionsException.php',
+ 'Symfony\\Component\\OptionsResolver\\OptionConfigurator' => $vendorDir . '/symfony/options-resolver/OptionConfigurator.php',
+ 'Symfony\\Component\\OptionsResolver\\Options' => $vendorDir . '/symfony/options-resolver/Options.php',
+ 'Symfony\\Component\\OptionsResolver\\OptionsResolver' => $vendorDir . '/symfony/options-resolver/OptionsResolver.php',
+ 'Symfony\\Component\\Process\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/process/Exception/ExceptionInterface.php',
+ 'Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/process/Exception/InvalidArgumentException.php',
+ 'Symfony\\Component\\Process\\Exception\\LogicException' => $vendorDir . '/symfony/process/Exception/LogicException.php',
+ 'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => $vendorDir . '/symfony/process/Exception/ProcessFailedException.php',
+ 'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => $vendorDir . '/symfony/process/Exception/ProcessSignaledException.php',
+ 'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => $vendorDir . '/symfony/process/Exception/ProcessTimedOutException.php',
+ 'Symfony\\Component\\Process\\Exception\\RuntimeException' => $vendorDir . '/symfony/process/Exception/RuntimeException.php',
+ 'Symfony\\Component\\Process\\ExecutableFinder' => $vendorDir . '/symfony/process/ExecutableFinder.php',
+ 'Symfony\\Component\\Process\\InputStream' => $vendorDir . '/symfony/process/InputStream.php',
+ 'Symfony\\Component\\Process\\PhpExecutableFinder' => $vendorDir . '/symfony/process/PhpExecutableFinder.php',
+ 'Symfony\\Component\\Process\\PhpProcess' => $vendorDir . '/symfony/process/PhpProcess.php',
+ 'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => $vendorDir . '/symfony/process/Pipes/AbstractPipes.php',
+ 'Symfony\\Component\\Process\\Pipes\\PipesInterface' => $vendorDir . '/symfony/process/Pipes/PipesInterface.php',
+ 'Symfony\\Component\\Process\\Pipes\\UnixPipes' => $vendorDir . '/symfony/process/Pipes/UnixPipes.php',
+ 'Symfony\\Component\\Process\\Pipes\\WindowsPipes' => $vendorDir . '/symfony/process/Pipes/WindowsPipes.php',
+ 'Symfony\\Component\\Process\\Process' => $vendorDir . '/symfony/process/Process.php',
+ 'Symfony\\Component\\Process\\ProcessUtils' => $vendorDir . '/symfony/process/ProcessUtils.php',
+ 'Symfony\\Component\\Stopwatch\\Section' => $vendorDir . '/symfony/stopwatch/Section.php',
+ 'Symfony\\Component\\Stopwatch\\Stopwatch' => $vendorDir . '/symfony/stopwatch/Stopwatch.php',
+ 'Symfony\\Component\\Stopwatch\\StopwatchEvent' => $vendorDir . '/symfony/stopwatch/StopwatchEvent.php',
+ 'Symfony\\Component\\Stopwatch\\StopwatchPeriod' => $vendorDir . '/symfony/stopwatch/StopwatchPeriod.php',
+ 'Symfony\\Component\\String\\AbstractString' => $vendorDir . '/symfony/string/AbstractString.php',
+ 'Symfony\\Component\\String\\AbstractUnicodeString' => $vendorDir . '/symfony/string/AbstractUnicodeString.php',
+ 'Symfony\\Component\\String\\ByteString' => $vendorDir . '/symfony/string/ByteString.php',
+ 'Symfony\\Component\\String\\CodePointString' => $vendorDir . '/symfony/string/CodePointString.php',
+ 'Symfony\\Component\\String\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/string/Exception/ExceptionInterface.php',
+ 'Symfony\\Component\\String\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/string/Exception/InvalidArgumentException.php',
+ 'Symfony\\Component\\String\\Exception\\RuntimeException' => $vendorDir . '/symfony/string/Exception/RuntimeException.php',
+ 'Symfony\\Component\\String\\Inflector\\EnglishInflector' => $vendorDir . '/symfony/string/Inflector/EnglishInflector.php',
+ 'Symfony\\Component\\String\\Inflector\\InflectorInterface' => $vendorDir . '/symfony/string/Inflector/InflectorInterface.php',
+ 'Symfony\\Component\\String\\LazyString' => $vendorDir . '/symfony/string/LazyString.php',
+ 'Symfony\\Component\\String\\Slugger\\AsciiSlugger' => $vendorDir . '/symfony/string/Slugger/AsciiSlugger.php',
+ 'Symfony\\Component\\String\\Slugger\\SluggerInterface' => $vendorDir . '/symfony/string/Slugger/SluggerInterface.php',
+ 'Symfony\\Component\\String\\UnicodeString' => $vendorDir . '/symfony/string/UnicodeString.php',
+ 'Symfony\\Contracts\\EventDispatcher\\Event' => $vendorDir . '/symfony/event-dispatcher-contracts/Event.php',
+ 'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher-contracts/EventDispatcherInterface.php',
+ 'Symfony\\Contracts\\Service\\Attribute\\Required' => $vendorDir . '/symfony/service-contracts/Attribute/Required.php',
+ 'Symfony\\Contracts\\Service\\ResetInterface' => $vendorDir . '/symfony/service-contracts/ResetInterface.php',
+ 'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => $vendorDir . '/symfony/service-contracts/ServiceLocatorTrait.php',
+ 'Symfony\\Contracts\\Service\\ServiceProviderInterface' => $vendorDir . '/symfony/service-contracts/ServiceProviderInterface.php',
+ 'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberInterface.php',
+ 'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberTrait.php',
+ 'Symfony\\Contracts\\Service\\Test\\ServiceLocatorTest' => $vendorDir . '/symfony/service-contracts/Test/ServiceLocatorTest.php',
+ 'Symfony\\Polyfill\\Ctype\\Ctype' => $vendorDir . '/symfony/polyfill-ctype/Ctype.php',
+ 'Symfony\\Polyfill\\Intl\\Grapheme\\Grapheme' => $vendorDir . '/symfony/polyfill-intl-grapheme/Grapheme.php',
+ 'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Normalizer.php',
+ 'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php',
+ 'Symfony\\Polyfill\\Php70\\Php70' => $vendorDir . '/symfony/polyfill-php70/Php70.php',
+ 'Symfony\\Polyfill\\Php72\\Php72' => $vendorDir . '/symfony/polyfill-php72/Php72.php',
+ 'Symfony\\Polyfill\\Php73\\Php73' => $vendorDir . '/symfony/polyfill-php73/Php73.php',
+ 'Symfony\\Polyfill\\Php80\\Php80' => $vendorDir . '/symfony/polyfill-php80/Php80.php',
+ 'TypeError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
+ 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
+ 'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
+ 'Webmozart\\Assert\\Assert' => $vendorDir . '/webmozart/assert/src/Assert.php',
+ 'Webmozart\\Assert\\Mixin' => $vendorDir . '/webmozart/assert/src/Mixin.php',
+ 'Webmozart\\Glob\\Glob' => $vendorDir . '/webmozart/glob/src/Glob.php',
+ 'Webmozart\\Glob\\Iterator\\GlobFilterIterator' => $vendorDir . '/webmozart/glob/src/Iterator/GlobFilterIterator.php',
+ 'Webmozart\\Glob\\Iterator\\GlobIterator' => $vendorDir . '/webmozart/glob/src/Iterator/GlobIterator.php',
+ 'Webmozart\\Glob\\Iterator\\RecursiveDirectoryIterator' => $vendorDir . '/webmozart/glob/src/Iterator/RecursiveDirectoryIterator.php',
+ 'Webmozart\\Glob\\Iterator\\RegexFilterIterator' => $vendorDir . '/webmozart/glob/src/Iterator/RegexFilterIterator.php',
+ 'Webmozart\\Glob\\Test\\TestUtil' => $vendorDir . '/webmozart/glob/src/Test/TestUtil.php',
+ 'Webmozart\\PathUtil\\Path' => $vendorDir . '/webmozart/path-util/src/Path.php',
+ 'Webmozart\\PathUtil\\Url' => $vendorDir . '/webmozart/path-util/src/Url.php',
+ 'XdgBaseDir\\Xdg' => $vendorDir . '/dnoegel/php-xdg-base-dir/src/Xdg.php',
+ 'phpDocumentor\\Reflection\\DocBlock' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock.php',
+ 'phpDocumentor\\Reflection\\DocBlockFactory' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlockFactory.php',
+ 'phpDocumentor\\Reflection\\DocBlockFactoryInterface' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlockFactoryInterface.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Description' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Description.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\DescriptionFactory' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/DescriptionFactory.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\ExampleFinder' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/ExampleFinder.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Serializer' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Serializer.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\StandardTagFactory' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tag' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tag.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\TagFactory' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/TagFactory.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Author' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Author.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\BaseTag' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/BaseTag.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Covers' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Covers.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Deprecated' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Deprecated.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Example' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Example.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Factory\\StaticMethod' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/StaticMethod.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Formatter' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Formatter\\AlignFormatter' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/AlignFormatter.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Formatter\\PassthroughFormatter' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/PassthroughFormatter.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Generic' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Generic.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\InvalidTag' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/InvalidTag.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Link' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Link.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Method' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Method.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Param' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Param.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Property' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Property.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\PropertyRead' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyRead.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\PropertyWrite' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyWrite.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Reference\\Fqsen' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Fqsen.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Reference\\Reference' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Reference.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Reference\\Url' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Url.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Return_' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\See' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/See.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Since' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Since.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Source' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Source.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\TagWithType' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/TagWithType.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Throws' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Throws.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Uses' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Uses.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Var_' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Var_.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Version' => $vendorDir . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Version.php',
+ 'phpDocumentor\\Reflection\\Element' => $vendorDir . '/phpdocumentor/reflection-common/src/Element.php',
+ 'phpDocumentor\\Reflection\\Exception\\PcreException' => $vendorDir . '/phpdocumentor/reflection-docblock/src/Exception/PcreException.php',
+ 'phpDocumentor\\Reflection\\File' => $vendorDir . '/phpdocumentor/reflection-common/src/File.php',
+ 'phpDocumentor\\Reflection\\Fqsen' => $vendorDir . '/phpdocumentor/reflection-common/src/Fqsen.php',
+ 'phpDocumentor\\Reflection\\FqsenResolver' => $vendorDir . '/phpdocumentor/type-resolver/src/FqsenResolver.php',
+ 'phpDocumentor\\Reflection\\Location' => $vendorDir . '/phpdocumentor/reflection-common/src/Location.php',
+ 'phpDocumentor\\Reflection\\Project' => $vendorDir . '/phpdocumentor/reflection-common/src/Project.php',
+ 'phpDocumentor\\Reflection\\ProjectFactory' => $vendorDir . '/phpdocumentor/reflection-common/src/ProjectFactory.php',
+ 'phpDocumentor\\Reflection\\PseudoType' => $vendorDir . '/phpdocumentor/type-resolver/src/PseudoType.php',
+ 'phpDocumentor\\Reflection\\PseudoTypes\\False_' => $vendorDir . '/phpdocumentor/type-resolver/src/PseudoTypes/False_.php',
+ 'phpDocumentor\\Reflection\\PseudoTypes\\True_' => $vendorDir . '/phpdocumentor/type-resolver/src/PseudoTypes/True_.php',
+ 'phpDocumentor\\Reflection\\Type' => $vendorDir . '/phpdocumentor/type-resolver/src/Type.php',
+ 'phpDocumentor\\Reflection\\TypeResolver' => $vendorDir . '/phpdocumentor/type-resolver/src/TypeResolver.php',
+ 'phpDocumentor\\Reflection\\Types\\AbstractList' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/AbstractList.php',
+ 'phpDocumentor\\Reflection\\Types\\AggregatedType' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/AggregatedType.php',
+ 'phpDocumentor\\Reflection\\Types\\Array_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Array_.php',
+ 'phpDocumentor\\Reflection\\Types\\Boolean' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Boolean.php',
+ 'phpDocumentor\\Reflection\\Types\\Callable_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Callable_.php',
+ 'phpDocumentor\\Reflection\\Types\\ClassString' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/ClassString.php',
+ 'phpDocumentor\\Reflection\\Types\\Collection' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Collection.php',
+ 'phpDocumentor\\Reflection\\Types\\Compound' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Compound.php',
+ 'phpDocumentor\\Reflection\\Types\\Context' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Context.php',
+ 'phpDocumentor\\Reflection\\Types\\ContextFactory' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/ContextFactory.php',
+ 'phpDocumentor\\Reflection\\Types\\Expression' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Expression.php',
+ 'phpDocumentor\\Reflection\\Types\\Float_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Float_.php',
+ 'phpDocumentor\\Reflection\\Types\\Integer' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Integer.php',
+ 'phpDocumentor\\Reflection\\Types\\Intersection' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Intersection.php',
+ 'phpDocumentor\\Reflection\\Types\\Iterable_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Iterable_.php',
+ 'phpDocumentor\\Reflection\\Types\\Mixed_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Mixed_.php',
+ 'phpDocumentor\\Reflection\\Types\\Null_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Null_.php',
+ 'phpDocumentor\\Reflection\\Types\\Nullable' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Nullable.php',
+ 'phpDocumentor\\Reflection\\Types\\Object_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Object_.php',
+ 'phpDocumentor\\Reflection\\Types\\Parent_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Parent_.php',
+ 'phpDocumentor\\Reflection\\Types\\Resource_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Resource_.php',
+ 'phpDocumentor\\Reflection\\Types\\Scalar' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Scalar.php',
+ 'phpDocumentor\\Reflection\\Types\\Self_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Self_.php',
+ 'phpDocumentor\\Reflection\\Types\\Static_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Static_.php',
+ 'phpDocumentor\\Reflection\\Types\\String_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/String_.php',
+ 'phpDocumentor\\Reflection\\Types\\This' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/This.php',
+ 'phpDocumentor\\Reflection\\Types\\Void_' => $vendorDir . '/phpdocumentor/type-resolver/src/Types/Void_.php',
+ 'phpDocumentor\\Reflection\\Utils' => $vendorDir . '/phpdocumentor/reflection-docblock/src/Utils.php',
);
diff --git a/lib/composer/composer/autoload_files.php b/lib/composer/composer/autoload_files.php
new file mode 100644
index 0000000000000..853c2ecd85eaf
--- /dev/null
+++ b/lib/composer/composer/autoload_files.php
@@ -0,0 +1,24 @@
+ $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
+ '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
+ '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
+ '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
+ 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
+ '8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php',
+ 'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php',
+ '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php',
+ 'e8aa6e4b5a1db2f56ae794f1505391a8' => $vendorDir . '/amphp/amp/lib/functions.php',
+ '76cd0796156622033397994f25b0d8fc' => $vendorDir . '/amphp/amp/lib/Internal/functions.php',
+ 'dc51568953534d6c54b08731e61104e2' => $vendorDir . '/vimeo/psalm/src/functions.php',
+ '8e4171839e12546525126d38dac3dafa' => $vendorDir . '/vimeo/psalm/src/spl_object_id.php',
+ '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
+ '023d27dca8066ef29e6739335ea73bad' => $vendorDir . '/symfony/polyfill-php70/bootstrap.php',
+ '6cd5651c4fef5ed6b63e8d8b8ffbf3cc' => $vendorDir . '/amphp/byte-stream/lib/functions.php',
+);
diff --git a/lib/composer/composer/autoload_namespaces.php b/lib/composer/composer/autoload_namespaces.php
index 4a9c20beed071..7e01061f09544 100644
--- a/lib/composer/composer/autoload_namespaces.php
+++ b/lib/composer/composer/autoload_namespaces.php
@@ -6,4 +6,6 @@
$baseDir = dirname(dirname($vendorDir));
return array(
+ 'LSS' => array($vendorDir . '/openlss/lib-array2xml'),
+ 'JsonMapper' => array($vendorDir . '/netresearch/jsonmapper/src'),
);
diff --git a/lib/composer/composer/autoload_psr4.php b/lib/composer/composer/autoload_psr4.php
index b641d9c6a0319..b0a1d079ba260 100644
--- a/lib/composer/composer/autoload_psr4.php
+++ b/lib/composer/composer/autoload_psr4.php
@@ -6,8 +6,47 @@
$baseDir = dirname(dirname($vendorDir));
return array(
+ 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/type-resolver/src', $vendorDir . '/phpdocumentor/reflection-docblock/src'),
+ 'XdgBaseDir\\' => array($vendorDir . '/dnoegel/php-xdg-base-dir/src'),
+ 'Webmozart\\PathUtil\\' => array($vendorDir . '/webmozart/path-util/src'),
+ 'Webmozart\\Glob\\' => array($vendorDir . '/webmozart/glob/src'),
+ 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
+ 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
+ 'Symfony\\Polyfill\\Php73\\' => array($vendorDir . '/symfony/polyfill-php73'),
+ 'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),
+ 'Symfony\\Polyfill\\Php70\\' => array($vendorDir . '/symfony/polyfill-php70'),
+ 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
+ 'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'),
+ 'Symfony\\Polyfill\\Intl\\Grapheme\\' => array($vendorDir . '/symfony/polyfill-intl-grapheme'),
+ 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
+ 'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'),
+ 'Symfony\\Contracts\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher-contracts'),
+ 'Symfony\\Component\\String\\' => array($vendorDir . '/symfony/string'),
+ 'Symfony\\Component\\Stopwatch\\' => array($vendorDir . '/symfony/stopwatch'),
+ 'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'),
+ 'Symfony\\Component\\OptionsResolver\\' => array($vendorDir . '/symfony/options-resolver'),
+ 'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'),
+ 'Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'),
+ 'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'),
+ 'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'),
+ 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
+ 'Psr\\EventDispatcher\\' => array($vendorDir . '/psr/event-dispatcher/src'),
+ 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
+ 'Psalm\\' => array($vendorDir . '/vimeo/psalm/src/Psalm'),
+ 'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'),
+ 'PhpCsFixer\\' => array($vendorDir . '/friendsofphp/php-cs-fixer/src'),
+ 'PackageVersions\\' => array($vendorDir . '/composer/package-versions-deprecated/src/PackageVersions'),
'OC\\Core\\' => array($baseDir . '/core'),
'OC\\' => array($baseDir . '/lib/private'),
'OCP\\' => array($baseDir . '/lib/public'),
+ 'Nextcloud\\CodingStandard\\' => array($vendorDir . '/nextcloud/coding-standard/src'),
+ 'LanguageServerProtocol\\' => array($vendorDir . '/felixfbecker/language-server-protocol/src'),
+ 'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/lib/Doctrine/Common/Lexer'),
+ 'Doctrine\\Common\\Annotations\\' => array($vendorDir . '/doctrine/annotations/lib/Doctrine/Common/Annotations'),
+ 'Composer\\XdebugHandler\\' => array($vendorDir . '/composer/xdebug-handler/src'),
+ 'Composer\\Semver\\' => array($vendorDir . '/composer/semver/src'),
+ 'Amp\\ByteStream\\' => array($vendorDir . '/amphp/byte-stream/lib'),
+ 'Amp\\' => array($vendorDir . '/amphp/amp/lib'),
+ 'AdvancedJsonRpc\\' => array($vendorDir . '/felixfbecker/advanced-json-rpc/lib'),
'' => array($baseDir . '/lib/private/legacy'),
);
diff --git a/lib/composer/composer/autoload_real.php b/lib/composer/composer/autoload_real.php
index a17f25c5eaf17..647511f05dad6 100644
--- a/lib/composer/composer/autoload_real.php
+++ b/lib/composer/composer/autoload_real.php
@@ -22,13 +22,15 @@ public static function getLoader()
return self::$loader;
}
+ require __DIR__ . '/platform_check.php';
+
spl_autoload_register(array('ComposerAutoloaderInit53792487c5a8370acc0b06b1a864ff4c', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInit53792487c5a8370acc0b06b1a864ff4c', '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';
+ require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::getInitializer($loader));
} else {
@@ -50,6 +52,24 @@ public static function getLoader()
$loader->register(true);
+ if ($useStaticLoader) {
+ $includeFiles = Composer\Autoload\ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::$files;
+ } else {
+ $includeFiles = require __DIR__ . '/autoload_files.php';
+ }
+ foreach ($includeFiles as $fileIdentifier => $file) {
+ composerRequire53792487c5a8370acc0b06b1a864ff4c($fileIdentifier, $file);
+ }
+
return $loader;
}
}
+
+function composerRequire53792487c5a8370acc0b06b1a864ff4c($fileIdentifier, $file)
+{
+ if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
+ require $file;
+
+ $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
+ }
+}
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index 92692d2188c88..0e598b64688ff 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -6,16 +6,225 @@
class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
{
+ public static $files = array (
+ 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
+ '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
+ '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
+ '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
+ 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
+ '8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php',
+ 'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php',
+ '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php',
+ 'e8aa6e4b5a1db2f56ae794f1505391a8' => __DIR__ . '/..' . '/amphp/amp/lib/functions.php',
+ '76cd0796156622033397994f25b0d8fc' => __DIR__ . '/..' . '/amphp/amp/lib/Internal/functions.php',
+ 'dc51568953534d6c54b08731e61104e2' => __DIR__ . '/..' . '/vimeo/psalm/src/functions.php',
+ '8e4171839e12546525126d38dac3dafa' => __DIR__ . '/..' . '/vimeo/psalm/src/spl_object_id.php',
+ '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
+ '023d27dca8066ef29e6739335ea73bad' => __DIR__ . '/..' . '/symfony/polyfill-php70/bootstrap.php',
+ '6cd5651c4fef5ed6b63e8d8b8ffbf3cc' => __DIR__ . '/..' . '/amphp/byte-stream/lib/functions.php',
+ );
+
public static $prefixLengthsPsr4 = array (
+ 'p' =>
+ array (
+ 'phpDocumentor\\Reflection\\' => 25,
+ ),
+ 'X' =>
+ array (
+ 'XdgBaseDir\\' => 11,
+ ),
+ 'W' =>
+ array (
+ 'Webmozart\\PathUtil\\' => 19,
+ 'Webmozart\\Glob\\' => 15,
+ 'Webmozart\\Assert\\' => 17,
+ ),
+ 'S' =>
+ array (
+ 'Symfony\\Polyfill\\Php80\\' => 23,
+ 'Symfony\\Polyfill\\Php73\\' => 23,
+ 'Symfony\\Polyfill\\Php72\\' => 23,
+ 'Symfony\\Polyfill\\Php70\\' => 23,
+ 'Symfony\\Polyfill\\Mbstring\\' => 26,
+ 'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33,
+ 'Symfony\\Polyfill\\Intl\\Grapheme\\' => 31,
+ 'Symfony\\Polyfill\\Ctype\\' => 23,
+ 'Symfony\\Contracts\\Service\\' => 26,
+ 'Symfony\\Contracts\\EventDispatcher\\' => 34,
+ 'Symfony\\Component\\String\\' => 25,
+ 'Symfony\\Component\\Stopwatch\\' => 28,
+ 'Symfony\\Component\\Process\\' => 26,
+ 'Symfony\\Component\\OptionsResolver\\' => 34,
+ 'Symfony\\Component\\Finder\\' => 25,
+ 'Symfony\\Component\\Filesystem\\' => 29,
+ 'Symfony\\Component\\EventDispatcher\\' => 34,
+ 'Symfony\\Component\\Console\\' => 26,
+ ),
+ 'P' =>
+ array (
+ 'Psr\\Log\\' => 8,
+ 'Psr\\EventDispatcher\\' => 20,
+ 'Psr\\Container\\' => 14,
+ 'Psalm\\' => 6,
+ 'PhpParser\\' => 10,
+ 'PhpCsFixer\\' => 11,
+ 'PackageVersions\\' => 16,
+ ),
'O' =>
array (
'OC\\Core\\' => 8,
'OC\\' => 3,
'OCP\\' => 4,
),
+ 'N' =>
+ array (
+ 'Nextcloud\\CodingStandard\\' => 25,
+ ),
+ 'L' =>
+ array (
+ 'LanguageServerProtocol\\' => 23,
+ ),
+ 'D' =>
+ array (
+ 'Doctrine\\Common\\Lexer\\' => 22,
+ 'Doctrine\\Common\\Annotations\\' => 28,
+ ),
+ 'C' =>
+ array (
+ 'Composer\\XdebugHandler\\' => 23,
+ 'Composer\\Semver\\' => 16,
+ ),
+ 'A' =>
+ array (
+ 'Amp\\ByteStream\\' => 15,
+ 'Amp\\' => 4,
+ 'AdvancedJsonRpc\\' => 16,
+ ),
);
public static $prefixDirsPsr4 = array (
+ 'phpDocumentor\\Reflection\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src',
+ 1 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src',
+ 2 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src',
+ ),
+ 'XdgBaseDir\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/dnoegel/php-xdg-base-dir/src',
+ ),
+ 'Webmozart\\PathUtil\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/webmozart/path-util/src',
+ ),
+ 'Webmozart\\Glob\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/webmozart/glob/src',
+ ),
+ 'Webmozart\\Assert\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/webmozart/assert/src',
+ ),
+ 'Symfony\\Polyfill\\Php80\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
+ ),
+ 'Symfony\\Polyfill\\Php73\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-php73',
+ ),
+ 'Symfony\\Polyfill\\Php72\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-php72',
+ ),
+ 'Symfony\\Polyfill\\Php70\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-php70',
+ ),
+ 'Symfony\\Polyfill\\Mbstring\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
+ ),
+ 'Symfony\\Polyfill\\Intl\\Normalizer\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer',
+ ),
+ 'Symfony\\Polyfill\\Intl\\Grapheme\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme',
+ ),
+ 'Symfony\\Polyfill\\Ctype\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
+ ),
+ 'Symfony\\Contracts\\Service\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/service-contracts',
+ ),
+ 'Symfony\\Contracts\\EventDispatcher\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts',
+ ),
+ 'Symfony\\Component\\String\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/string',
+ ),
+ 'Symfony\\Component\\Stopwatch\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/stopwatch',
+ ),
+ 'Symfony\\Component\\Process\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/process',
+ ),
+ 'Symfony\\Component\\OptionsResolver\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/options-resolver',
+ ),
+ 'Symfony\\Component\\Finder\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/finder',
+ ),
+ 'Symfony\\Component\\Filesystem\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/filesystem',
+ ),
+ 'Symfony\\Component\\EventDispatcher\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/event-dispatcher',
+ ),
+ 'Symfony\\Component\\Console\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/console',
+ ),
+ 'Psr\\Log\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/log/Psr/Log',
+ ),
+ 'Psr\\EventDispatcher\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/event-dispatcher/src',
+ ),
+ 'Psr\\Container\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/container/src',
+ ),
+ 'Psalm\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm',
+ ),
+ 'PhpParser\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser',
+ ),
+ 'PhpCsFixer\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src',
+ ),
+ 'PackageVersions\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/composer/package-versions-deprecated/src/PackageVersions',
+ ),
'OC\\Core\\' =>
array (
0 => __DIR__ . '/../../..' . '/core',
@@ -28,13 +237,232 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
array (
0 => __DIR__ . '/../../..' . '/lib/public',
),
+ 'Nextcloud\\CodingStandard\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/nextcloud/coding-standard/src',
+ ),
+ 'LanguageServerProtocol\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src',
+ ),
+ 'Doctrine\\Common\\Lexer\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/doctrine/lexer/lib/Doctrine/Common/Lexer',
+ ),
+ 'Doctrine\\Common\\Annotations\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations',
+ ),
+ 'Composer\\XdebugHandler\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/composer/xdebug-handler/src',
+ ),
+ 'Composer\\Semver\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/composer/semver/src',
+ ),
+ 'Amp\\ByteStream\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/amphp/byte-stream/lib',
+ ),
+ 'Amp\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/amphp/amp/lib',
+ ),
+ 'AdvancedJsonRpc\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/felixfbecker/advanced-json-rpc/lib',
+ ),
);
public static $fallbackDirsPsr4 = array (
0 => __DIR__ . '/../../..' . '/lib/private/legacy',
);
+ public static $prefixesPsr0 = array (
+ 'L' =>
+ array (
+ 'LSS' =>
+ array (
+ 0 => __DIR__ . '/..' . '/openlss/lib-array2xml',
+ ),
+ ),
+ 'J' =>
+ array (
+ 'JsonMapper' =>
+ array (
+ 0 => __DIR__ . '/..' . '/netresearch/jsonmapper/src',
+ ),
+ ),
+ );
+
public static $classMap = array (
+ 'AdvancedJsonRpc\\Dispatcher' => __DIR__ . '/..' . '/felixfbecker/advanced-json-rpc/lib/Dispatcher.php',
+ 'AdvancedJsonRpc\\Error' => __DIR__ . '/..' . '/felixfbecker/advanced-json-rpc/lib/Error.php',
+ 'AdvancedJsonRpc\\ErrorCode' => __DIR__ . '/..' . '/felixfbecker/advanced-json-rpc/lib/ErrorCode.php',
+ 'AdvancedJsonRpc\\ErrorResponse' => __DIR__ . '/..' . '/felixfbecker/advanced-json-rpc/lib/ErrorResponse.php',
+ 'AdvancedJsonRpc\\Message' => __DIR__ . '/..' . '/felixfbecker/advanced-json-rpc/lib/Message.php',
+ 'AdvancedJsonRpc\\Notification' => __DIR__ . '/..' . '/felixfbecker/advanced-json-rpc/lib/Notification.php',
+ 'AdvancedJsonRpc\\Request' => __DIR__ . '/..' . '/felixfbecker/advanced-json-rpc/lib/Request.php',
+ 'AdvancedJsonRpc\\Response' => __DIR__ . '/..' . '/felixfbecker/advanced-json-rpc/lib/Response.php',
+ 'AdvancedJsonRpc\\SuccessResponse' => __DIR__ . '/..' . '/felixfbecker/advanced-json-rpc/lib/SuccessResponse.php',
+ 'Amp\\ByteStream\\Base64\\Base64DecodingInputStream' => __DIR__ . '/..' . '/amphp/byte-stream/lib/Base64/Base64DecodingInputStream.php',
+ 'Amp\\ByteStream\\Base64\\Base64DecodingOutputStream' => __DIR__ . '/..' . '/amphp/byte-stream/lib/Base64/Base64DecodingOutputStream.php',
+ 'Amp\\ByteStream\\Base64\\Base64EncodingInputStream' => __DIR__ . '/..' . '/amphp/byte-stream/lib/Base64/Base64EncodingInputStream.php',
+ 'Amp\\ByteStream\\Base64\\Base64EncodingOutputStream' => __DIR__ . '/..' . '/amphp/byte-stream/lib/Base64/Base64EncodingOutputStream.php',
+ 'Amp\\ByteStream\\ClosedException' => __DIR__ . '/..' . '/amphp/byte-stream/lib/ClosedException.php',
+ 'Amp\\ByteStream\\InMemoryStream' => __DIR__ . '/..' . '/amphp/byte-stream/lib/InMemoryStream.php',
+ 'Amp\\ByteStream\\InputStream' => __DIR__ . '/..' . '/amphp/byte-stream/lib/InputStream.php',
+ 'Amp\\ByteStream\\InputStreamChain' => __DIR__ . '/..' . '/amphp/byte-stream/lib/InputStreamChain.php',
+ 'Amp\\ByteStream\\IteratorStream' => __DIR__ . '/..' . '/amphp/byte-stream/lib/IteratorStream.php',
+ 'Amp\\ByteStream\\LineReader' => __DIR__ . '/..' . '/amphp/byte-stream/lib/LineReader.php',
+ 'Amp\\ByteStream\\Message' => __DIR__ . '/..' . '/amphp/byte-stream/lib/Message.php',
+ 'Amp\\ByteStream\\OutputBuffer' => __DIR__ . '/..' . '/amphp/byte-stream/lib/OutputBuffer.php',
+ 'Amp\\ByteStream\\OutputStream' => __DIR__ . '/..' . '/amphp/byte-stream/lib/OutputStream.php',
+ 'Amp\\ByteStream\\Payload' => __DIR__ . '/..' . '/amphp/byte-stream/lib/Payload.php',
+ 'Amp\\ByteStream\\PendingReadError' => __DIR__ . '/..' . '/amphp/byte-stream/lib/PendingReadError.php',
+ 'Amp\\ByteStream\\ResourceInputStream' => __DIR__ . '/..' . '/amphp/byte-stream/lib/ResourceInputStream.php',
+ 'Amp\\ByteStream\\ResourceOutputStream' => __DIR__ . '/..' . '/amphp/byte-stream/lib/ResourceOutputStream.php',
+ 'Amp\\ByteStream\\StreamException' => __DIR__ . '/..' . '/amphp/byte-stream/lib/StreamException.php',
+ 'Amp\\ByteStream\\ZlibInputStream' => __DIR__ . '/..' . '/amphp/byte-stream/lib/ZlibInputStream.php',
+ 'Amp\\ByteStream\\ZlibOutputStream' => __DIR__ . '/..' . '/amphp/byte-stream/lib/ZlibOutputStream.php',
+ 'Amp\\CallableMaker' => __DIR__ . '/..' . '/amphp/amp/lib/CallableMaker.php',
+ 'Amp\\CancellationToken' => __DIR__ . '/..' . '/amphp/amp/lib/CancellationToken.php',
+ 'Amp\\CancellationTokenSource' => __DIR__ . '/..' . '/amphp/amp/lib/CancellationTokenSource.php',
+ 'Amp\\CancelledException' => __DIR__ . '/..' . '/amphp/amp/lib/CancelledException.php',
+ 'Amp\\CombinedCancellationToken' => __DIR__ . '/..' . '/amphp/amp/lib/CombinedCancellationToken.php',
+ 'Amp\\Coroutine' => __DIR__ . '/..' . '/amphp/amp/lib/Coroutine.php',
+ 'Amp\\Deferred' => __DIR__ . '/..' . '/amphp/amp/lib/Deferred.php',
+ 'Amp\\Delayed' => __DIR__ . '/..' . '/amphp/amp/lib/Delayed.php',
+ 'Amp\\Emitter' => __DIR__ . '/..' . '/amphp/amp/lib/Emitter.php',
+ 'Amp\\Failure' => __DIR__ . '/..' . '/amphp/amp/lib/Failure.php',
+ 'Amp\\Internal\\Placeholder' => __DIR__ . '/..' . '/amphp/amp/lib/Internal/Placeholder.php',
+ 'Amp\\Internal\\PrivateIterator' => __DIR__ . '/..' . '/amphp/amp/lib/Internal/PrivateIterator.php',
+ 'Amp\\Internal\\PrivatePromise' => __DIR__ . '/..' . '/amphp/amp/lib/Internal/PrivatePromise.php',
+ 'Amp\\Internal\\Producer' => __DIR__ . '/..' . '/amphp/amp/lib/Internal/Producer.php',
+ 'Amp\\Internal\\ResolutionQueue' => __DIR__ . '/..' . '/amphp/amp/lib/Internal/ResolutionQueue.php',
+ 'Amp\\InvalidYieldError' => __DIR__ . '/..' . '/amphp/amp/lib/InvalidYieldError.php',
+ 'Amp\\Iterator' => __DIR__ . '/..' . '/amphp/amp/lib/Iterator.php',
+ 'Amp\\LazyPromise' => __DIR__ . '/..' . '/amphp/amp/lib/LazyPromise.php',
+ 'Amp\\Loop' => __DIR__ . '/..' . '/amphp/amp/lib/Loop.php',
+ 'Amp\\Loop\\Driver' => __DIR__ . '/..' . '/amphp/amp/lib/Loop/Driver.php',
+ 'Amp\\Loop\\DriverFactory' => __DIR__ . '/..' . '/amphp/amp/lib/Loop/DriverFactory.php',
+ 'Amp\\Loop\\EvDriver' => __DIR__ . '/..' . '/amphp/amp/lib/Loop/EvDriver.php',
+ 'Amp\\Loop\\EventDriver' => __DIR__ . '/..' . '/amphp/amp/lib/Loop/EventDriver.php',
+ 'Amp\\Loop\\Internal\\TimerQueue' => __DIR__ . '/..' . '/amphp/amp/lib/Loop/Internal/TimerQueue.php',
+ 'Amp\\Loop\\Internal\\TimerQueueEntry' => __DIR__ . '/..' . '/amphp/amp/lib/Loop/Internal/TimerQueueEntry.php',
+ 'Amp\\Loop\\InvalidWatcherError' => __DIR__ . '/..' . '/amphp/amp/lib/Loop/InvalidWatcherError.php',
+ 'Amp\\Loop\\NativeDriver' => __DIR__ . '/..' . '/amphp/amp/lib/Loop/NativeDriver.php',
+ 'Amp\\Loop\\TracingDriver' => __DIR__ . '/..' . '/amphp/amp/lib/Loop/TracingDriver.php',
+ 'Amp\\Loop\\UnsupportedFeatureException' => __DIR__ . '/..' . '/amphp/amp/lib/Loop/UnsupportedFeatureException.php',
+ 'Amp\\Loop\\UvDriver' => __DIR__ . '/..' . '/amphp/amp/lib/Loop/UvDriver.php',
+ 'Amp\\Loop\\Watcher' => __DIR__ . '/..' . '/amphp/amp/lib/Loop/Watcher.php',
+ 'Amp\\MultiReasonException' => __DIR__ . '/..' . '/amphp/amp/lib/MultiReasonException.php',
+ 'Amp\\NullCancellationToken' => __DIR__ . '/..' . '/amphp/amp/lib/NullCancellationToken.php',
+ 'Amp\\Producer' => __DIR__ . '/..' . '/amphp/amp/lib/Producer.php',
+ 'Amp\\Promise' => __DIR__ . '/..' . '/amphp/amp/lib/Promise.php',
+ 'Amp\\Struct' => __DIR__ . '/..' . '/amphp/amp/lib/Struct.php',
+ 'Amp\\Success' => __DIR__ . '/..' . '/amphp/amp/lib/Success.php',
+ 'Amp\\TimeoutCancellationToken' => __DIR__ . '/..' . '/amphp/amp/lib/TimeoutCancellationToken.php',
+ 'Amp\\TimeoutException' => __DIR__ . '/..' . '/amphp/amp/lib/TimeoutException.php',
+ 'ArithmeticError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
+ 'AssertionError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
+ 'Composer\\Semver\\Comparator' => __DIR__ . '/..' . '/composer/semver/src/Comparator.php',
+ 'Composer\\Semver\\Constraint\\AbstractConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/AbstractConstraint.php',
+ 'Composer\\Semver\\Constraint\\Constraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/Constraint.php',
+ 'Composer\\Semver\\Constraint\\ConstraintInterface' => __DIR__ . '/..' . '/composer/semver/src/Constraint/ConstraintInterface.php',
+ 'Composer\\Semver\\Constraint\\EmptyConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/EmptyConstraint.php',
+ 'Composer\\Semver\\Constraint\\MultiConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MultiConstraint.php',
+ 'Composer\\Semver\\Semver' => __DIR__ . '/..' . '/composer/semver/src/Semver.php',
+ 'Composer\\Semver\\VersionParser' => __DIR__ . '/..' . '/composer/semver/src/VersionParser.php',
+ 'Composer\\XdebugHandler\\PhpConfig' => __DIR__ . '/..' . '/composer/xdebug-handler/src/PhpConfig.php',
+ 'Composer\\XdebugHandler\\Process' => __DIR__ . '/..' . '/composer/xdebug-handler/src/Process.php',
+ 'Composer\\XdebugHandler\\Status' => __DIR__ . '/..' . '/composer/xdebug-handler/src/Status.php',
+ 'Composer\\XdebugHandler\\XdebugHandler' => __DIR__ . '/..' . '/composer/xdebug-handler/src/XdebugHandler.php',
+ 'DivisionByZeroError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
+ 'Doctrine\\Common\\Annotations\\Annotation' => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation.php',
+ 'Doctrine\\Common\\Annotations\\AnnotationException' => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php',
+ 'Doctrine\\Common\\Annotations\\AnnotationReader' => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationReader.php',
+ 'Doctrine\\Common\\Annotations\\AnnotationRegistry' => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php',
+ 'Doctrine\\Common\\Annotations\\Annotation\\Attribute' => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attribute.php',
+ 'Doctrine\\Common\\Annotations\\Annotation\\Attributes' => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attributes.php',
+ 'Doctrine\\Common\\Annotations\\Annotation\\Enum' => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Enum.php',
+ 'Doctrine\\Common\\Annotations\\Annotation\\IgnoreAnnotation' => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/IgnoreAnnotation.php',
+ 'Doctrine\\Common\\Annotations\\Annotation\\Required' => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Required.php',
+ 'Doctrine\\Common\\Annotations\\Annotation\\Target' => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php',
+ 'Doctrine\\Common\\Annotations\\CachedReader' => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php',
+ 'Doctrine\\Common\\Annotations\\DocLexer' => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php',
+ 'Doctrine\\Common\\Annotations\\DocParser' => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php',
+ 'Doctrine\\Common\\Annotations\\FileCacheReader' => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations/FileCacheReader.php',
+ 'Doctrine\\Common\\Annotations\\IndexedReader' => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations/IndexedReader.php',
+ 'Doctrine\\Common\\Annotations\\PhpParser' => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php',
+ 'Doctrine\\Common\\Annotations\\Reader' => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php',
+ 'Doctrine\\Common\\Annotations\\SimpleAnnotationReader' => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations/SimpleAnnotationReader.php',
+ 'Doctrine\\Common\\Annotations\\TokenParser' => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations/TokenParser.php',
+ 'Doctrine\\Common\\Lexer\\AbstractLexer' => __DIR__ . '/..' . '/doctrine/lexer/lib/Doctrine/Common/Lexer/AbstractLexer.php',
+ 'Error' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/Error.php',
+ 'JsonException' => __DIR__ . '/..' . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
+ 'JsonMapper' => __DIR__ . '/..' . '/netresearch/jsonmapper/src/JsonMapper.php',
+ 'JsonMapper_Exception' => __DIR__ . '/..' . '/netresearch/jsonmapper/src/JsonMapper/Exception.php',
+ 'LSS\\Array2XML' => __DIR__ . '/..' . '/openlss/lib-array2xml/LSS/Array2XML.php',
+ 'LSS\\XML2Array' => __DIR__ . '/..' . '/openlss/lib-array2xml/LSS/XML2Array.php',
+ 'LanguageServerProtocol\\ClientCapabilities' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/ClientCapabilities.php',
+ 'LanguageServerProtocol\\CodeActionContext' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/CodeActionContext.php',
+ 'LanguageServerProtocol\\CodeLens' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/CodeLens.php',
+ 'LanguageServerProtocol\\CodeLensOptions' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/CodeLensOptions.php',
+ 'LanguageServerProtocol\\Command' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/Command.php',
+ 'LanguageServerProtocol\\CompletionContext' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/CompletionContext.php',
+ 'LanguageServerProtocol\\CompletionItem' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/CompletionItem.php',
+ 'LanguageServerProtocol\\CompletionItemKind' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/CompletionItemKind.php',
+ 'LanguageServerProtocol\\CompletionList' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/CompletionList.php',
+ 'LanguageServerProtocol\\CompletionOptions' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/CompletionOptions.php',
+ 'LanguageServerProtocol\\CompletionTriggerKind' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/CompletionTriggerKind.php',
+ 'LanguageServerProtocol\\ContentChangeEvent' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/ContentChangeEvent.php',
+ 'LanguageServerProtocol\\DependencyReference' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/DependencyReference.php',
+ 'LanguageServerProtocol\\Diagnostic' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/Diagnostic.php',
+ 'LanguageServerProtocol\\DiagnosticSeverity' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/DiagnosticSeverity.php',
+ 'LanguageServerProtocol\\DocumentHighlight' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/DocumentHighlight.php',
+ 'LanguageServerProtocol\\DocumentHighlightKind' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/DocumentHighlightKind.php',
+ 'LanguageServerProtocol\\DocumentOnTypeFormattingOptions' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/DocumentOnTypeFormattingOptions.php',
+ 'LanguageServerProtocol\\ErrorCode' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/ErrorCode.php',
+ 'LanguageServerProtocol\\FileChangeType' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/FileChangeType.php',
+ 'LanguageServerProtocol\\FileEvent' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/FileEvent.php',
+ 'LanguageServerProtocol\\FormattingOptions' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/FormattingOptions.php',
+ 'LanguageServerProtocol\\Hover' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/Hover.php',
+ 'LanguageServerProtocol\\InitializeResult' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/InitializeResult.php',
+ 'LanguageServerProtocol\\InsertTextFormat' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/InsertTextFormat.php',
+ 'LanguageServerProtocol\\Location' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/Location.php',
+ 'LanguageServerProtocol\\MarkedString' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/MarkedString.php',
+ 'LanguageServerProtocol\\MarkupContent' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/MarkupContent.php',
+ 'LanguageServerProtocol\\MarkupKind' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/MarkupKind.php',
+ 'LanguageServerProtocol\\MessageActionItem' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/MessageActionItem.php',
+ 'LanguageServerProtocol\\MessageType' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/MessageType.php',
+ 'LanguageServerProtocol\\PackageDescriptor' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/PackageDescriptor.php',
+ 'LanguageServerProtocol\\ParameterInformation' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/ParameterInformation.php',
+ 'LanguageServerProtocol\\Position' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/Position.php',
+ 'LanguageServerProtocol\\Range' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/Range.php',
+ 'LanguageServerProtocol\\ReferenceContext' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/ReferenceContext.php',
+ 'LanguageServerProtocol\\ReferenceInformation' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/ReferenceInformation.php',
+ 'LanguageServerProtocol\\SaveOptions' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/SaveOptions.php',
+ 'LanguageServerProtocol\\ServerCapabilities' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/ServerCapabilities.php',
+ 'LanguageServerProtocol\\SignatureHelp' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/SignatureHelp.php',
+ 'LanguageServerProtocol\\SignatureHelpOptions' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/SignatureHelpOptions.php',
+ 'LanguageServerProtocol\\SignatureInformation' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/SignatureInformation.php',
+ 'LanguageServerProtocol\\SymbolDescriptor' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/SymbolDescriptor.php',
+ 'LanguageServerProtocol\\SymbolInformation' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/SymbolInformation.php',
+ 'LanguageServerProtocol\\SymbolKind' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/SymbolKind.php',
+ 'LanguageServerProtocol\\SymbolLocationInformation' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/SymbolLocationInformation.php',
+ 'LanguageServerProtocol\\TextDocumentContentChangeEvent' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/TextDocumentContentChangeEvent.php',
+ 'LanguageServerProtocol\\TextDocumentIdentifier' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/TextDocumentIdentifier.php',
+ 'LanguageServerProtocol\\TextDocumentItem' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/TextDocumentItem.php',
+ 'LanguageServerProtocol\\TextDocumentSyncKind' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/TextDocumentSyncKind.php',
+ 'LanguageServerProtocol\\TextDocumentSyncOptions' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/TextDocumentSyncOptions.php',
+ 'LanguageServerProtocol\\TextEdit' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/TextEdit.php',
+ 'LanguageServerProtocol\\VersionedTextDocumentIdentifier' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/VersionedTextDocumentIdentifier.php',
+ 'LanguageServerProtocol\\WorkspaceEdit' => __DIR__ . '/..' . '/felixfbecker/language-server-protocol/src/WorkspaceEdit.php',
+ 'Nextcloud\\CodingStandard\\Config' => __DIR__ . '/..' . '/nextcloud/coding-standard/src/Config.php',
+ 'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
'OCP\\API' => __DIR__ . '/../../..' . '/lib/public/API.php',
'OCP\\Accounts\\IAccount' => __DIR__ . '/../../..' . '/lib/public/Accounts/IAccount.php',
'OCP\\Accounts\\IAccountManager' => __DIR__ . '/../../..' . '/lib/public/Accounts/IAccountManager.php',
@@ -1417,6 +1845,1752 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC_Template' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_Template.php',
'OC_User' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_User.php',
'OC_Util' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_Util.php',
+ 'PackageVersions\\FallbackVersions' => __DIR__ . '/..' . '/composer/package-versions-deprecated/src/PackageVersions/FallbackVersions.php',
+ 'PackageVersions\\Installer' => __DIR__ . '/..' . '/composer/package-versions-deprecated/src/PackageVersions/Installer.php',
+ 'PackageVersions\\Versions' => __DIR__ . '/..' . '/composer/package-versions-deprecated/src/PackageVersions/Versions.php',
+ 'ParseError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/ParseError.php',
+ 'PhpCsFixer\\AbstractAlignFixerHelper' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractAlignFixerHelper.php',
+ 'PhpCsFixer\\AbstractDoctrineAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractDoctrineAnnotationFixer.php',
+ 'PhpCsFixer\\AbstractFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractFixer.php',
+ 'PhpCsFixer\\AbstractFopenFlagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractFopenFlagFixer.php',
+ 'PhpCsFixer\\AbstractFunctionReferenceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractFunctionReferenceFixer.php',
+ 'PhpCsFixer\\AbstractLinesBeforeNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractLinesBeforeNamespaceFixer.php',
+ 'PhpCsFixer\\AbstractNoUselessElseFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractNoUselessElseFixer.php',
+ 'PhpCsFixer\\AbstractPhpdocTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractPhpdocTypesFixer.php',
+ 'PhpCsFixer\\AbstractProxyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractProxyFixer.php',
+ 'PhpCsFixer\\AbstractPsrAutoloadingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractPsrAutoloadingFixer.php',
+ 'PhpCsFixer\\Cache\\Cache' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/Cache.php',
+ 'PhpCsFixer\\Cache\\CacheInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/CacheInterface.php',
+ 'PhpCsFixer\\Cache\\CacheManagerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/CacheManagerInterface.php',
+ 'PhpCsFixer\\Cache\\Directory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/Directory.php',
+ 'PhpCsFixer\\Cache\\DirectoryInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/DirectoryInterface.php',
+ 'PhpCsFixer\\Cache\\FileCacheManager' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/FileCacheManager.php',
+ 'PhpCsFixer\\Cache\\FileHandler' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/FileHandler.php',
+ 'PhpCsFixer\\Cache\\FileHandlerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/FileHandlerInterface.php',
+ 'PhpCsFixer\\Cache\\NullCacheManager' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/NullCacheManager.php',
+ 'PhpCsFixer\\Cache\\Signature' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/Signature.php',
+ 'PhpCsFixer\\Cache\\SignatureInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/SignatureInterface.php',
+ 'PhpCsFixer\\Config' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Config.php',
+ 'PhpCsFixer\\ConfigInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigInterface.php',
+ 'PhpCsFixer\\ConfigurationException\\InvalidConfigurationException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidConfigurationException.php',
+ 'PhpCsFixer\\ConfigurationException\\InvalidFixerConfigurationException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidFixerConfigurationException.php',
+ 'PhpCsFixer\\ConfigurationException\\InvalidForEnvFixerConfigurationException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidForEnvFixerConfigurationException.php',
+ 'PhpCsFixer\\ConfigurationException\\RequiredFixerConfigurationException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigurationException/RequiredFixerConfigurationException.php',
+ 'PhpCsFixer\\Console\\Application' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Application.php',
+ 'PhpCsFixer\\Console\\Command\\DescribeCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/DescribeCommand.php',
+ 'PhpCsFixer\\Console\\Command\\DescribeNameNotFoundException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/DescribeNameNotFoundException.php',
+ 'PhpCsFixer\\Console\\Command\\FixCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/FixCommand.php',
+ 'PhpCsFixer\\Console\\Command\\FixCommandExitStatusCalculator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/FixCommandExitStatusCalculator.php',
+ 'PhpCsFixer\\Console\\Command\\HelpCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/HelpCommand.php',
+ 'PhpCsFixer\\Console\\Command\\ReadmeCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/ReadmeCommand.php',
+ 'PhpCsFixer\\Console\\Command\\SelfUpdateCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/SelfUpdateCommand.php',
+ 'PhpCsFixer\\Console\\ConfigurationResolver' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/ConfigurationResolver.php',
+ 'PhpCsFixer\\Console\\Output\\ErrorOutput' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/ErrorOutput.php',
+ 'PhpCsFixer\\Console\\Output\\NullOutput' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/NullOutput.php',
+ 'PhpCsFixer\\Console\\Output\\ProcessOutput' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/ProcessOutput.php',
+ 'PhpCsFixer\\Console\\Output\\ProcessOutputInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/ProcessOutputInterface.php',
+ 'PhpCsFixer\\Console\\SelfUpdate\\GithubClient' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClient.php',
+ 'PhpCsFixer\\Console\\SelfUpdate\\GithubClientInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClientInterface.php',
+ 'PhpCsFixer\\Console\\SelfUpdate\\NewVersionChecker' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionChecker.php',
+ 'PhpCsFixer\\Console\\SelfUpdate\\NewVersionCheckerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionCheckerInterface.php',
+ 'PhpCsFixer\\Console\\WarningsDetector' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/WarningsDetector.php',
+ 'PhpCsFixer\\Diff\\GeckoPackages\\DiffOutputBuilder\\ConfigurationException' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/GeckoPackages/DiffOutputBuilder/ConfigurationException.php',
+ 'PhpCsFixer\\Diff\\GeckoPackages\\DiffOutputBuilder\\UnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/GeckoPackages/DiffOutputBuilder/UnifiedDiffOutputBuilder.php',
+ 'PhpCsFixer\\Diff\\v1_4\\Chunk' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v1_4/Chunk.php',
+ 'PhpCsFixer\\Diff\\v1_4\\Diff' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v1_4/Diff.php',
+ 'PhpCsFixer\\Diff\\v1_4\\Differ' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v1_4/Differ.php',
+ 'PhpCsFixer\\Diff\\v1_4\\LCS\\LongestCommonSubsequence' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v1_4/LCS/LongestCommonSubsequence.php',
+ 'PhpCsFixer\\Diff\\v1_4\\LCS\\MemoryEfficientImplementation' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v1_4/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php',
+ 'PhpCsFixer\\Diff\\v1_4\\LCS\\TimeEfficientImplementation' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v1_4/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php',
+ 'PhpCsFixer\\Diff\\v1_4\\Line' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v1_4/Line.php',
+ 'PhpCsFixer\\Diff\\v1_4\\Parser' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v1_4/Parser.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Chunk' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v2_0/Chunk.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Diff' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v2_0/Diff.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Differ' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v2_0/Differ.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Exception' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v2_0/Exception/Exception.php',
+ 'PhpCsFixer\\Diff\\v2_0\\InvalidArgumentException' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v2_0/Exception/InvalidArgumentException.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Line' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v2_0/Line.php',
+ 'PhpCsFixer\\Diff\\v2_0\\LongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v2_0/LongestCommonSubsequenceCalculator.php',
+ 'PhpCsFixer\\Diff\\v2_0\\MemoryEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v2_0/MemoryEfficientLongestCommonSubsequenceCalculator.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Output\\AbstractChunkOutputBuilder' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v2_0/Output/AbstractChunkOutputBuilder.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Output\\DiffOnlyOutputBuilder' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v2_0/Output/DiffOnlyOutputBuilder.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Output\\DiffOutputBuilderInterface' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v2_0/Output/DiffOutputBuilderInterface.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Output\\UnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v2_0/Output/UnifiedDiffOutputBuilder.php',
+ 'PhpCsFixer\\Diff\\v2_0\\Parser' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v2_0/Parser.php',
+ 'PhpCsFixer\\Diff\\v2_0\\TimeEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v2_0/TimeEfficientLongestCommonSubsequenceCalculator.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Chunk' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v3_0/Chunk.php',
+ 'PhpCsFixer\\Diff\\v3_0\\ConfigurationException' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v3_0/Exception/ConfigurationException.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Diff' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v3_0/Diff.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Differ' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v3_0/Differ.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Exception' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v3_0/Exception/Exception.php',
+ 'PhpCsFixer\\Diff\\v3_0\\InvalidArgumentException' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v3_0/Exception/InvalidArgumentException.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Line' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v3_0/Line.php',
+ 'PhpCsFixer\\Diff\\v3_0\\LongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v3_0/LongestCommonSubsequenceCalculator.php',
+ 'PhpCsFixer\\Diff\\v3_0\\MemoryEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v3_0/MemoryEfficientLongestCommonSubsequenceCalculator.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Output\\AbstractChunkOutputBuilder' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v3_0/Output/AbstractChunkOutputBuilder.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Output\\DiffOnlyOutputBuilder' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v3_0/Output/DiffOnlyOutputBuilder.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Output\\DiffOutputBuilderInterface' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v3_0/Output/DiffOutputBuilderInterface.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Output\\StrictUnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v3_0/Output/StrictUnifiedDiffOutputBuilder.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Output\\UnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v3_0/Output/UnifiedDiffOutputBuilder.php',
+ 'PhpCsFixer\\Diff\\v3_0\\Parser' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v3_0/Parser.php',
+ 'PhpCsFixer\\Diff\\v3_0\\TimeEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/php-cs-fixer/diff/src/v3_0/TimeEfficientLongestCommonSubsequenceCalculator.php',
+ 'PhpCsFixer\\Differ\\DiffConsoleFormatter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/DiffConsoleFormatter.php',
+ 'PhpCsFixer\\Differ\\DifferInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/DifferInterface.php',
+ 'PhpCsFixer\\Differ\\FullDiffer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/FullDiffer.php',
+ 'PhpCsFixer\\Differ\\NullDiffer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/NullDiffer.php',
+ 'PhpCsFixer\\Differ\\SebastianBergmannDiffer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/SebastianBergmannDiffer.php',
+ 'PhpCsFixer\\Differ\\SebastianBergmannShortDiffer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/SebastianBergmannShortDiffer.php',
+ 'PhpCsFixer\\Differ\\UnifiedDiffer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/UnifiedDiffer.php',
+ 'PhpCsFixer\\DocBlock\\Annotation' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/Annotation.php',
+ 'PhpCsFixer\\DocBlock\\DocBlock' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/DocBlock.php',
+ 'PhpCsFixer\\DocBlock\\Line' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/Line.php',
+ 'PhpCsFixer\\DocBlock\\ShortDescription' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/ShortDescription.php',
+ 'PhpCsFixer\\DocBlock\\Tag' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/Tag.php',
+ 'PhpCsFixer\\DocBlock\\TagComparator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/TagComparator.php',
+ 'PhpCsFixer\\Doctrine\\Annotation\\Token' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Token.php',
+ 'PhpCsFixer\\Doctrine\\Annotation\\Tokens' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Tokens.php',
+ 'PhpCsFixer\\Error\\Error' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Error/Error.php',
+ 'PhpCsFixer\\Error\\ErrorsManager' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Error/ErrorsManager.php',
+ 'PhpCsFixer\\Event\\Event' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Event/Event.php',
+ 'PhpCsFixer\\FileReader' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FileReader.php',
+ 'PhpCsFixer\\FileRemoval' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FileRemoval.php',
+ 'PhpCsFixer\\Finder' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Finder.php',
+ 'PhpCsFixer\\FixerConfiguration\\AliasedFixerOption' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOption.php',
+ 'PhpCsFixer\\FixerConfiguration\\AliasedFixerOptionBuilder' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOptionBuilder.php',
+ 'PhpCsFixer\\FixerConfiguration\\AllowedValueSubset' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AllowedValueSubset.php',
+ 'PhpCsFixer\\FixerConfiguration\\DeprecatedFixerOption' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOption.php',
+ 'PhpCsFixer\\FixerConfiguration\\DeprecatedFixerOptionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOptionInterface.php',
+ 'PhpCsFixer\\FixerConfiguration\\FixerConfigurationResolver' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolver.php',
+ 'PhpCsFixer\\FixerConfiguration\\FixerConfigurationResolverInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolverInterface.php',
+ 'PhpCsFixer\\FixerConfiguration\\FixerConfigurationResolverRootless' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolverRootless.php',
+ 'PhpCsFixer\\FixerConfiguration\\FixerOption' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOption.php',
+ 'PhpCsFixer\\FixerConfiguration\\FixerOptionBuilder' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionBuilder.php',
+ 'PhpCsFixer\\FixerConfiguration\\FixerOptionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionInterface.php',
+ 'PhpCsFixer\\FixerConfiguration\\InvalidOptionsForEnvException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/InvalidOptionsForEnvException.php',
+ 'PhpCsFixer\\FixerDefinition\\CodeSample' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSample.php',
+ 'PhpCsFixer\\FixerDefinition\\CodeSampleInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSampleInterface.php',
+ 'PhpCsFixer\\FixerDefinition\\FileSpecificCodeSample' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSample.php',
+ 'PhpCsFixer\\FixerDefinition\\FileSpecificCodeSampleInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSampleInterface.php',
+ 'PhpCsFixer\\FixerDefinition\\FixerDefinition' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinition.php',
+ 'PhpCsFixer\\FixerDefinition\\FixerDefinitionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinitionInterface.php',
+ 'PhpCsFixer\\FixerDefinition\\VersionSpecificCodeSample' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSample.php',
+ 'PhpCsFixer\\FixerDefinition\\VersionSpecificCodeSampleInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSampleInterface.php',
+ 'PhpCsFixer\\FixerDefinition\\VersionSpecification' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecification.php',
+ 'PhpCsFixer\\FixerDefinition\\VersionSpecificationInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificationInterface.php',
+ 'PhpCsFixer\\FixerFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerFactory.php',
+ 'PhpCsFixer\\FixerFileProcessedEvent' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerFileProcessedEvent.php',
+ 'PhpCsFixer\\FixerNameValidator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerNameValidator.php',
+ 'PhpCsFixer\\Fixer\\Alias\\BacktickToShellExecFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/BacktickToShellExecFixer.php',
+ 'PhpCsFixer\\Fixer\\Alias\\EregToPregFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/EregToPregFixer.php',
+ 'PhpCsFixer\\Fixer\\Alias\\MbStrFunctionsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/MbStrFunctionsFixer.php',
+ 'PhpCsFixer\\Fixer\\Alias\\NoAliasFunctionsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasFunctionsFixer.php',
+ 'PhpCsFixer\\Fixer\\Alias\\NoMixedEchoPrintFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoMixedEchoPrintFixer.php',
+ 'PhpCsFixer\\Fixer\\Alias\\PowToExponentiationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/PowToExponentiationFixer.php',
+ 'PhpCsFixer\\Fixer\\Alias\\RandomApiMigrationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/RandomApiMigrationFixer.php',
+ 'PhpCsFixer\\Fixer\\Alias\\SetTypeToCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/SetTypeToCastFixer.php',
+ 'PhpCsFixer\\Fixer\\ArrayNotation\\ArraySyntaxFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ArraySyntaxFixer.php',
+ 'PhpCsFixer\\Fixer\\ArrayNotation\\NoMultilineWhitespaceAroundDoubleArrowFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoMultilineWhitespaceAroundDoubleArrowFixer.php',
+ 'PhpCsFixer\\Fixer\\ArrayNotation\\NoTrailingCommaInSinglelineArrayFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoTrailingCommaInSinglelineArrayFixer.php',
+ 'PhpCsFixer\\Fixer\\ArrayNotation\\NoWhitespaceBeforeCommaInArrayFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceBeforeCommaInArrayFixer.php',
+ 'PhpCsFixer\\Fixer\\ArrayNotation\\NormalizeIndexBraceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NormalizeIndexBraceFixer.php',
+ 'PhpCsFixer\\Fixer\\ArrayNotation\\TrailingCommaInMultilineArrayFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/TrailingCommaInMultilineArrayFixer.php',
+ 'PhpCsFixer\\Fixer\\ArrayNotation\\TrimArraySpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/TrimArraySpacesFixer.php',
+ 'PhpCsFixer\\Fixer\\ArrayNotation\\WhitespaceAfterCommaInArrayFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/WhitespaceAfterCommaInArrayFixer.php',
+ 'PhpCsFixer\\Fixer\\Basic\\BracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesFixer.php',
+ 'PhpCsFixer\\Fixer\\Basic\\EncodingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/EncodingFixer.php',
+ 'PhpCsFixer\\Fixer\\Basic\\NonPrintableCharacterFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NonPrintableCharacterFixer.php',
+ 'PhpCsFixer\\Fixer\\Basic\\Psr0Fixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/Psr0Fixer.php',
+ 'PhpCsFixer\\Fixer\\Basic\\Psr4Fixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/Psr4Fixer.php',
+ 'PhpCsFixer\\Fixer\\Casing\\ConstantCaseFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/ConstantCaseFixer.php',
+ 'PhpCsFixer\\Fixer\\Casing\\LowercaseConstantsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseConstantsFixer.php',
+ 'PhpCsFixer\\Fixer\\Casing\\LowercaseKeywordsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseKeywordsFixer.php',
+ 'PhpCsFixer\\Fixer\\Casing\\LowercaseStaticReferenceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseStaticReferenceFixer.php',
+ 'PhpCsFixer\\Fixer\\Casing\\MagicConstantCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicConstantCasingFixer.php',
+ 'PhpCsFixer\\Fixer\\Casing\\MagicMethodCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicMethodCasingFixer.php',
+ 'PhpCsFixer\\Fixer\\Casing\\NativeFunctionCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionCasingFixer.php',
+ 'PhpCsFixer\\Fixer\\Casing\\NativeFunctionTypeDeclarationCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionTypeDeclarationCasingFixer.php',
+ 'PhpCsFixer\\Fixer\\CastNotation\\CastSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/CastSpacesFixer.php',
+ 'PhpCsFixer\\Fixer\\CastNotation\\LowercaseCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/LowercaseCastFixer.php',
+ 'PhpCsFixer\\Fixer\\CastNotation\\ModernizeTypesCastingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ModernizeTypesCastingFixer.php',
+ 'PhpCsFixer\\Fixer\\CastNotation\\NoShortBoolCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoShortBoolCastFixer.php',
+ 'PhpCsFixer\\Fixer\\CastNotation\\NoUnsetCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoUnsetCastFixer.php',
+ 'PhpCsFixer\\Fixer\\CastNotation\\ShortScalarCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ShortScalarCastFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\ClassAttributesSeparationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassAttributesSeparationFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\ClassDefinitionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassDefinitionFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\FinalClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalClassFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\FinalInternalClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalInternalClassFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\FinalPublicMethodForAbstractClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalPublicMethodForAbstractClassFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\FinalStaticAccessFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalStaticAccessFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\MethodSeparationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/MethodSeparationFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\NoBlankLinesAfterClassOpeningFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoBlankLinesAfterClassOpeningFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\NoNullPropertyInitializationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoNullPropertyInitializationFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\NoPhp4ConstructorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoPhp4ConstructorFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\NoUnneededFinalMethodFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoUnneededFinalMethodFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedClassElementsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedClassElementsFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedInterfacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedInterfacesFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\ProtectedToPrivateFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ProtectedToPrivateFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\SelfAccessorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfAccessorFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\SelfStaticAccessorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfStaticAccessorFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\SingleClassElementPerStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleClassElementPerStatementFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\SingleTraitInsertPerStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleTraitInsertPerStatementFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassNotation\\VisibilityRequiredFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/VisibilityRequiredFixer.php',
+ 'PhpCsFixer\\Fixer\\ClassUsage\\DateTimeImmutableFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassUsage/DateTimeImmutableFixer.php',
+ 'PhpCsFixer\\Fixer\\Comment\\CommentToPhpdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/CommentToPhpdocFixer.php',
+ 'PhpCsFixer\\Fixer\\Comment\\HashToSlashCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/HashToSlashCommentFixer.php',
+ 'PhpCsFixer\\Fixer\\Comment\\HeaderCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/HeaderCommentFixer.php',
+ 'PhpCsFixer\\Fixer\\Comment\\MultilineCommentOpeningClosingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/MultilineCommentOpeningClosingFixer.php',
+ 'PhpCsFixer\\Fixer\\Comment\\NoEmptyCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoEmptyCommentFixer.php',
+ 'PhpCsFixer\\Fixer\\Comment\\NoTrailingWhitespaceInCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoTrailingWhitespaceInCommentFixer.php',
+ 'PhpCsFixer\\Fixer\\Comment\\SingleLineCommentStyleFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentStyleFixer.php',
+ 'PhpCsFixer\\Fixer\\ConfigurableFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ConfigurableFixerInterface.php',
+ 'PhpCsFixer\\Fixer\\ConfigurationDefinitionFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ConfigurationDefinitionFixerInterface.php',
+ 'PhpCsFixer\\Fixer\\ConstantNotation\\NativeConstantInvocationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ConstantNotation/NativeConstantInvocationFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\ElseifFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ElseifFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\IncludeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/IncludeFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\NoAlternativeSyntaxFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoAlternativeSyntaxFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\NoBreakCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoBreakCommentFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\NoSuperfluousElseifFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoSuperfluousElseifFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\NoTrailingCommaInListCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoTrailingCommaInListCallFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededControlParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededControlParenthesesFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededCurlyBracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededCurlyBracesFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\NoUselessElseFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUselessElseFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchCaseSemicolonToColonFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSemicolonToColonFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchCaseSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSpaceFixer.php',
+ 'PhpCsFixer\\Fixer\\ControlStructure\\YodaStyleFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/YodaStyleFixer.php',
+ 'PhpCsFixer\\Fixer\\DefinedFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DefinedFixerInterface.php',
+ 'PhpCsFixer\\Fixer\\DeprecatedFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DeprecatedFixerInterface.php',
+ 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationArrayAssignmentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationArrayAssignmentFixer.php',
+ 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationBracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationBracesFixer.php',
+ 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationIndentationFixer.php',
+ 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationSpacesFixer.php',
+ 'PhpCsFixer\\Fixer\\FixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FixerInterface.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\CombineNestedDirnameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/CombineNestedDirnameFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\FopenFlagOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagOrderFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\FopenFlagsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagsFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\FunctionDeclarationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionDeclarationFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\FunctionTypehintSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionTypehintSpaceFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\ImplodeCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ImplodeCallFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\MethodArgumentSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/MethodArgumentSpaceFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\NativeFunctionInvocationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NativeFunctionInvocationFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\NoSpacesAfterFunctionNameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoSpacesAfterFunctionNameFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\NoUnreachableDefaultArgumentValueFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUnreachableDefaultArgumentValueFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\NullableTypeDeclarationForDefaultNullValueFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NullableTypeDeclarationForDefaultNullValueFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToParamTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToParamTypeFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToReturnTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToReturnTypeFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\ReturnTypeDeclarationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ReturnTypeDeclarationFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\SingleLineThrowFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/SingleLineThrowFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\StaticLambdaFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/StaticLambdaFixer.php',
+ 'PhpCsFixer\\Fixer\\FunctionNotation\\VoidReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/VoidReturnFixer.php',
+ 'PhpCsFixer\\Fixer\\Import\\FullyQualifiedStrictTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/FullyQualifiedStrictTypesFixer.php',
+ 'PhpCsFixer\\Fixer\\Import\\GlobalNamespaceImportFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/GlobalNamespaceImportFixer.php',
+ 'PhpCsFixer\\Fixer\\Import\\NoLeadingImportSlashFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoLeadingImportSlashFixer.php',
+ 'PhpCsFixer\\Fixer\\Import\\NoUnusedImportsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnusedImportsFixer.php',
+ 'PhpCsFixer\\Fixer\\Import\\OrderedImportsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/OrderedImportsFixer.php',
+ 'PhpCsFixer\\Fixer\\Import\\SingleImportPerStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleImportPerStatementFixer.php',
+ 'PhpCsFixer\\Fixer\\Import\\SingleLineAfterImportsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleLineAfterImportsFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\ClassKeywordRemoveFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordRemoveFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\CombineConsecutiveIssetsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveIssetsFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\CombineConsecutiveUnsetsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveUnsetsFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\DeclareEqualNormalizeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareEqualNormalizeFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\DirConstantFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DirConstantFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\ErrorSuppressionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ErrorSuppressionFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\ExplicitIndirectVariableFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ExplicitIndirectVariableFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\FunctionToConstantFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/FunctionToConstantFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\IsNullFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/IsNullFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\NoUnsetOnPropertyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NoUnsetOnPropertyFixer.php',
+ 'PhpCsFixer\\Fixer\\LanguageConstruct\\SilencedDeprecationErrorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SilencedDeprecationErrorFixer.php',
+ 'PhpCsFixer\\Fixer\\ListNotation\\ListSyntaxFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ListNotation/ListSyntaxFixer.php',
+ 'PhpCsFixer\\Fixer\\NamespaceNotation\\BlankLineAfterNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLineAfterNamespaceFixer.php',
+ 'PhpCsFixer\\Fixer\\NamespaceNotation\\NoBlankLinesBeforeNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoBlankLinesBeforeNamespaceFixer.php',
+ 'PhpCsFixer\\Fixer\\NamespaceNotation\\NoLeadingNamespaceWhitespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoLeadingNamespaceWhitespaceFixer.php',
+ 'PhpCsFixer\\Fixer\\NamespaceNotation\\SingleBlankLineBeforeNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/SingleBlankLineBeforeNamespaceFixer.php',
+ 'PhpCsFixer\\Fixer\\Naming\\NoHomoglyphNamesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Naming/NoHomoglyphNamesFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\AlignDoubleArrowFixerHelper' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/AlignDoubleArrowFixerHelper.php',
+ 'PhpCsFixer\\Fixer\\Operator\\AlignEqualsFixerHelper' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/AlignEqualsFixerHelper.php',
+ 'PhpCsFixer\\Fixer\\Operator\\BinaryOperatorSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/BinaryOperatorSpacesFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\ConcatSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/ConcatSpaceFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\IncrementStyleFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/IncrementStyleFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\LogicalOperatorsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/LogicalOperatorsFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\NewWithBracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithBracesFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\NotOperatorWithSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSpaceFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\NotOperatorWithSuccessorSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSuccessorSpaceFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\ObjectOperatorWithoutWhitespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/ObjectOperatorWithoutWhitespaceFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\PreIncrementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/PreIncrementFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\StandardizeIncrementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeIncrementFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\StandardizeNotEqualsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeNotEqualsFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\TernaryOperatorSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryOperatorSpacesFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\TernaryToNullCoalescingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToNullCoalescingFixer.php',
+ 'PhpCsFixer\\Fixer\\Operator\\UnaryOperatorSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/UnaryOperatorSpacesFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpTag\\BlankLineAfterOpeningTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/BlankLineAfterOpeningTagFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpTag\\FullOpeningTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/FullOpeningTagFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpTag\\LinebreakAfterOpeningTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/LinebreakAfterOpeningTagFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpTag\\NoClosingTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/NoClosingTagFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpTag\\NoShortEchoTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/NoShortEchoTagFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitConstructFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitConstructFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDedicateAssertFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDedicateAssertInternalTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertInternalTypeFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitExpectationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitExpectationFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitFqcnAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitFqcnAnnotationFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitInternalClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitInternalClassFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMethodCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMethodCasingFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMockFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMockShortWillReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockShortWillReturnFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitNamespacedFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNamespacedFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitNoExpectationAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNoExpectationAnnotationFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitOrderedCoversFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitOrderedCoversFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitSetUpTearDownVisibilityFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSetUpTearDownVisibilityFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitSizeClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSizeClassFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitStrictFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitStrictFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTargetVersion' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTargetVersion.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestAnnotationFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestCaseStaticMethodCallsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestCaseStaticMethodCallsFixer.php',
+ 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestClassRequiresCoversFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestClassRequiresCoversFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\AlignMultilineCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/AlignMultilineCommentFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\GeneralPhpdocAnnotationRemoveFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocAnnotationRemoveFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\NoBlankLinesAfterPhpdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoBlankLinesAfterPhpdocFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\NoEmptyPhpdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoEmptyPhpdocFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\NoSuperfluousPhpdocTagsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoSuperfluousPhpdocTagsFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAddMissingParamAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAddMissingParamAnnotationFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAlignFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAlignFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAnnotationWithoutDotFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAnnotationWithoutDotFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocIndentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocIndentFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocInlineTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocInlineTagFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocLineSpanFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocLineSpanFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoAccessFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAccessFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoAliasTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAliasTagFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoEmptyReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoEmptyReturnFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoPackageFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoPackageFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoUselessInheritdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoUselessInheritdocFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocReturnSelfReferenceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocReturnSelfReferenceFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocScalarFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocScalarFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSeparationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSeparationFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSingleLineVarSpacingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSingleLineVarSpacingFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSummaryFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSummaryFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocToCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocToCommentFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTrimConsecutiveBlankLineSeparationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimConsecutiveBlankLineSeparationFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTrimFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTypesOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesOrderFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocVarAnnotationCorrectOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarAnnotationCorrectOrderFixer.php',
+ 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocVarWithoutNameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarWithoutNameFixer.php',
+ 'PhpCsFixer\\Fixer\\ReturnNotation\\BlankLineBeforeReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/BlankLineBeforeReturnFixer.php',
+ 'PhpCsFixer\\Fixer\\ReturnNotation\\NoUselessReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/NoUselessReturnFixer.php',
+ 'PhpCsFixer\\Fixer\\ReturnNotation\\ReturnAssignmentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/ReturnAssignmentFixer.php',
+ 'PhpCsFixer\\Fixer\\ReturnNotation\\SimplifiedNullReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/SimplifiedNullReturnFixer.php',
+ 'PhpCsFixer\\Fixer\\Semicolon\\MultilineWhitespaceBeforeSemicolonsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/MultilineWhitespaceBeforeSemicolonsFixer.php',
+ 'PhpCsFixer\\Fixer\\Semicolon\\NoEmptyStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoEmptyStatementFixer.php',
+ 'PhpCsFixer\\Fixer\\Semicolon\\NoMultilineWhitespaceBeforeSemicolonsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoMultilineWhitespaceBeforeSemicolonsFixer.php',
+ 'PhpCsFixer\\Fixer\\Semicolon\\NoSinglelineWhitespaceBeforeSemicolonsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoSinglelineWhitespaceBeforeSemicolonsFixer.php',
+ 'PhpCsFixer\\Fixer\\Semicolon\\SemicolonAfterInstructionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SemicolonAfterInstructionFixer.php',
+ 'PhpCsFixer\\Fixer\\Semicolon\\SpaceAfterSemicolonFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SpaceAfterSemicolonFixer.php',
+ 'PhpCsFixer\\Fixer\\Strict\\DeclareStrictTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/DeclareStrictTypesFixer.php',
+ 'PhpCsFixer\\Fixer\\Strict\\StrictComparisonFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictComparisonFixer.php',
+ 'PhpCsFixer\\Fixer\\Strict\\StrictParamFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictParamFixer.php',
+ 'PhpCsFixer\\Fixer\\StringNotation\\EscapeImplicitBackslashesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/EscapeImplicitBackslashesFixer.php',
+ 'PhpCsFixer\\Fixer\\StringNotation\\ExplicitStringVariableFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/ExplicitStringVariableFixer.php',
+ 'PhpCsFixer\\Fixer\\StringNotation\\HeredocToNowdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocToNowdocFixer.php',
+ 'PhpCsFixer\\Fixer\\StringNotation\\NoBinaryStringFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoBinaryStringFixer.php',
+ 'PhpCsFixer\\Fixer\\StringNotation\\SimpleToComplexStringVariableFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SimpleToComplexStringVariableFixer.php',
+ 'PhpCsFixer\\Fixer\\StringNotation\\SingleQuoteFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SingleQuoteFixer.php',
+ 'PhpCsFixer\\Fixer\\StringNotation\\StringLineEndingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLineEndingFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\ArrayIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/ArrayIndentationFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\BlankLineBeforeStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBeforeStatementFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\CompactNullableTypehintFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypehintFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\HeredocIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/HeredocIndentationFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\IndentationTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/IndentationTypeFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\LineEndingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/LineEndingFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\MethodChainingIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/MethodChainingIndentationFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\NoExtraBlankLinesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoExtraBlankLinesFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\NoExtraConsecutiveBlankLinesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoExtraConsecutiveBlankLinesFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\NoSpacesAroundOffsetFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesAroundOffsetFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\NoSpacesInsideParenthesisFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesInsideParenthesisFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\NoTrailingWhitespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoTrailingWhitespaceFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\NoWhitespaceInBlankLineFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoWhitespaceInBlankLineFixer.php',
+ 'PhpCsFixer\\Fixer\\Whitespace\\SingleBlankLineAtEofFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SingleBlankLineAtEofFixer.php',
+ 'PhpCsFixer\\Fixer\\WhitespacesAwareFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/WhitespacesAwareFixerInterface.php',
+ 'PhpCsFixer\\Indicator\\PhpUnitTestCaseIndicator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Indicator/PhpUnitTestCaseIndicator.php',
+ 'PhpCsFixer\\Linter\\CachingLinter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/CachingLinter.php',
+ 'PhpCsFixer\\Linter\\Linter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/Linter.php',
+ 'PhpCsFixer\\Linter\\LinterInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/LinterInterface.php',
+ 'PhpCsFixer\\Linter\\LintingException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/LintingException.php',
+ 'PhpCsFixer\\Linter\\LintingResultInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/LintingResultInterface.php',
+ 'PhpCsFixer\\Linter\\ProcessLinter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLinter.php',
+ 'PhpCsFixer\\Linter\\ProcessLinterProcessBuilder' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLinterProcessBuilder.php',
+ 'PhpCsFixer\\Linter\\ProcessLintingResult' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLintingResult.php',
+ 'PhpCsFixer\\Linter\\TokenizerLinter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/TokenizerLinter.php',
+ 'PhpCsFixer\\Linter\\TokenizerLintingResult' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/TokenizerLintingResult.php',
+ 'PhpCsFixer\\Linter\\UnavailableLinterException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/UnavailableLinterException.php',
+ 'PhpCsFixer\\PharChecker' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/PharChecker.php',
+ 'PhpCsFixer\\PharCheckerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/PharCheckerInterface.php',
+ 'PhpCsFixer\\Preg' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Preg.php',
+ 'PhpCsFixer\\PregException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/PregException.php',
+ 'PhpCsFixer\\Report\\CheckstyleReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Report/CheckstyleReporter.php',
+ 'PhpCsFixer\\Report\\GitlabReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Report/GitlabReporter.php',
+ 'PhpCsFixer\\Report\\JsonReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Report/JsonReporter.php',
+ 'PhpCsFixer\\Report\\JunitReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Report/JunitReporter.php',
+ 'PhpCsFixer\\Report\\ReportSummary' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Report/ReportSummary.php',
+ 'PhpCsFixer\\Report\\ReporterFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Report/ReporterFactory.php',
+ 'PhpCsFixer\\Report\\ReporterInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Report/ReporterInterface.php',
+ 'PhpCsFixer\\Report\\TextReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Report/TextReporter.php',
+ 'PhpCsFixer\\Report\\XmlReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Report/XmlReporter.php',
+ 'PhpCsFixer\\RuleSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet.php',
+ 'PhpCsFixer\\RuleSetInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSetInterface.php',
+ 'PhpCsFixer\\Runner\\FileCachingLintingIterator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/FileCachingLintingIterator.php',
+ 'PhpCsFixer\\Runner\\FileFilterIterator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/FileFilterIterator.php',
+ 'PhpCsFixer\\Runner\\FileLintingIterator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/FileLintingIterator.php',
+ 'PhpCsFixer\\Runner\\Runner' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/Runner.php',
+ 'PhpCsFixer\\StdinFileInfo' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/StdinFileInfo.php',
+ 'PhpCsFixer\\Test\\AbstractFixerTestCase' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Test/AbstractFixerTestCase.php',
+ 'PhpCsFixer\\Test\\AbstractIntegrationTestCase' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Test/AbstractIntegrationTestCase.php',
+ 'PhpCsFixer\\Test\\AccessibleObject' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Test/AccessibleObject.php',
+ 'PhpCsFixer\\Test\\IntegrationCase' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Test/IntegrationCase.php',
+ 'PhpCsFixer\\Tests\\TestCase' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/tests/TestCase.php',
+ 'PhpCsFixer\\Tests\\Test\\AbstractFixerTestCase' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/tests/Test/AbstractFixerTestCase.php',
+ 'PhpCsFixer\\Tests\\Test\\AbstractIntegrationCaseFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/tests/Test/AbstractIntegrationCaseFactory.php',
+ 'PhpCsFixer\\Tests\\Test\\AbstractIntegrationTestCase' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/tests/Test/AbstractIntegrationTestCase.php',
+ 'PhpCsFixer\\Tests\\Test\\Assert\\AssertTokensTrait' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/tests/Test/Assert/AssertTokensTrait.php',
+ 'PhpCsFixer\\Tests\\Test\\IntegrationCase' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/tests/Test/IntegrationCase.php',
+ 'PhpCsFixer\\Tests\\Test\\IntegrationCaseFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/tests/Test/IntegrationCaseFactory.php',
+ 'PhpCsFixer\\Tests\\Test\\IntegrationCaseFactoryInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/tests/Test/IntegrationCaseFactoryInterface.php',
+ 'PhpCsFixer\\Tests\\Test\\InternalIntegrationCaseFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/tests/Test/InternalIntegrationCaseFactory.php',
+ 'PhpCsFixer\\Tests\\Test\\IsIdenticalConstraint' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/tests/Test/IsIdenticalConstraint.php',
+ 'PhpCsFixer\\Tokenizer\\AbstractTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\ArgumentAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/ArgumentAnalysis.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\NamespaceAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceAnalysis.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\NamespaceUseAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceUseAnalysis.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\StartEndTokenAwareAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/StartEndTokenAwareAnalysis.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\TypeAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/TypeAnalysis.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\ArgumentsAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ArgumentsAnalyzer.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\BlocksAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/BlocksAnalyzer.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\ClassyAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ClassyAnalyzer.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\CommentsAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/CommentsAnalyzer.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\FunctionsAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FunctionsAnalyzer.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\NamespaceUsesAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespaceUsesAnalyzer.php',
+ 'PhpCsFixer\\Tokenizer\\Analyzer\\NamespacesAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespacesAnalyzer.php',
+ 'PhpCsFixer\\Tokenizer\\CT' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/CT.php',
+ 'PhpCsFixer\\Tokenizer\\CodeHasher' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/CodeHasher.php',
+ 'PhpCsFixer\\Tokenizer\\Generator\\NamespacedStringTokenGenerator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Generator/NamespacedStringTokenGenerator.php',
+ 'PhpCsFixer\\Tokenizer\\Resolver\\TypeShortNameResolver' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Resolver/TypeShortNameResolver.php',
+ 'PhpCsFixer\\Tokenizer\\Token' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Token.php',
+ 'PhpCsFixer\\Tokenizer\\Tokens' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Tokens.php',
+ 'PhpCsFixer\\Tokenizer\\TokensAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/TokensAnalyzer.php',
+ 'PhpCsFixer\\Tokenizer\\TransformerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/TransformerInterface.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\ArrayTypehintTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ArrayTypehintTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\BraceClassInstantiationTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceClassInstantiationTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\ClassConstantTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ClassConstantTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\CurlyBraceTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/CurlyBraceTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\ImportTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ImportTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\NamespaceOperatorTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamespaceOperatorTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\NullableTypeTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NullableTypeTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\ReturnRefTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ReturnRefTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\SquareBraceTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/SquareBraceTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\TypeAlternationTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeAlternationTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\TypeColonTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeColonTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\UseTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/UseTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformer\\WhitespacyCommentTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/WhitespacyCommentTransformer.php',
+ 'PhpCsFixer\\Tokenizer\\Transformers' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformers.php',
+ 'PhpCsFixer\\ToolInfo' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ToolInfo.php',
+ 'PhpCsFixer\\ToolInfoInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ToolInfoInterface.php',
+ 'PhpCsFixer\\Utils' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Utils.php',
+ 'PhpCsFixer\\WhitespacesFixerConfig' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/WhitespacesFixerConfig.php',
+ 'PhpCsFixer\\WordMatcher' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/WordMatcher.php',
+ 'PhpParser\\Builder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder.php',
+ 'PhpParser\\BuilderFactory' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/BuilderFactory.php',
+ 'PhpParser\\BuilderHelpers' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/BuilderHelpers.php',
+ 'PhpParser\\Builder\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Class_.php',
+ 'PhpParser\\Builder\\Declaration' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Declaration.php',
+ 'PhpParser\\Builder\\FunctionLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php',
+ 'PhpParser\\Builder\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Function_.php',
+ 'PhpParser\\Builder\\Interface_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Interface_.php',
+ 'PhpParser\\Builder\\Method' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Method.php',
+ 'PhpParser\\Builder\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php',
+ 'PhpParser\\Builder\\Param' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Param.php',
+ 'PhpParser\\Builder\\Property' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Property.php',
+ 'PhpParser\\Builder\\TraitUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php',
+ 'PhpParser\\Builder\\TraitUseAdaptation' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php',
+ 'PhpParser\\Builder\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Trait_.php',
+ 'PhpParser\\Builder\\Use_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Use_.php',
+ 'PhpParser\\Comment' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Comment.php',
+ 'PhpParser\\Comment\\Doc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Comment/Doc.php',
+ 'PhpParser\\ConstExprEvaluationException' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php',
+ 'PhpParser\\ConstExprEvaluator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php',
+ 'PhpParser\\Error' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Error.php',
+ 'PhpParser\\ErrorHandler' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler.php',
+ 'PhpParser\\ErrorHandler\\Collecting' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php',
+ 'PhpParser\\ErrorHandler\\Throwing' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php',
+ 'PhpParser\\Internal\\DiffElem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php',
+ 'PhpParser\\Internal\\Differ' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/Differ.php',
+ 'PhpParser\\Internal\\PrintableNewAnonClassNode' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php',
+ 'PhpParser\\Internal\\TokenStream' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php',
+ 'PhpParser\\JsonDecoder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/JsonDecoder.php',
+ 'PhpParser\\Lexer' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer.php',
+ 'PhpParser\\Lexer\\Emulative' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\AttributeEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\CoaleseEqualTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\FlexibleDocStringEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\FnTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\KeywordEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\NumericLiteralSeparatorEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php',
+ 'PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php',
+ 'PhpParser\\NameContext' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NameContext.php',
+ 'PhpParser\\Node' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node.php',
+ 'PhpParser\\NodeAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeAbstract.php',
+ 'PhpParser\\NodeDumper' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeDumper.php',
+ 'PhpParser\\NodeFinder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeFinder.php',
+ 'PhpParser\\NodeTraverser' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeTraverser.php',
+ 'PhpParser\\NodeTraverserInterface' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php',
+ 'PhpParser\\NodeVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor.php',
+ 'PhpParser\\NodeVisitorAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php',
+ 'PhpParser\\NodeVisitor\\CloningVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php',
+ 'PhpParser\\NodeVisitor\\FindingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php',
+ 'PhpParser\\NodeVisitor\\FirstFindingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php',
+ 'PhpParser\\NodeVisitor\\NameResolver' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php',
+ 'PhpParser\\NodeVisitor\\NodeConnectingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php',
+ 'PhpParser\\NodeVisitor\\ParentConnectingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php',
+ 'PhpParser\\Node\\Arg' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Arg.php',
+ 'PhpParser\\Node\\Attribute' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Attribute.php',
+ 'PhpParser\\Node\\AttributeGroup' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php',
+ 'PhpParser\\Node\\Const_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Const_.php',
+ 'PhpParser\\Node\\Expr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr.php',
+ 'PhpParser\\Node\\Expr\\ArrayDimFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php',
+ 'PhpParser\\Node\\Expr\\ArrayItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php',
+ 'PhpParser\\Node\\Expr\\Array_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php',
+ 'PhpParser\\Node\\Expr\\ArrowFunction' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php',
+ 'PhpParser\\Node\\Expr\\Assign' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php',
+ 'PhpParser\\Node\\Expr\\AssignOp' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\Coalesce' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\Concat' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\Div' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\Minus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\Mod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\Mul' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\Plus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\Pow' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php',
+ 'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php',
+ 'PhpParser\\Node\\Expr\\AssignRef' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Coalesce' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Div' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php',
+ 'PhpParser\\Node\\Expr\\BinaryOp\\Spaceship' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php',
+ 'PhpParser\\Node\\Expr\\BitwiseNot' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php',
+ 'PhpParser\\Node\\Expr\\BooleanNot' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php',
+ 'PhpParser\\Node\\Expr\\Cast' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php',
+ 'PhpParser\\Node\\Expr\\Cast\\Array_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php',
+ 'PhpParser\\Node\\Expr\\Cast\\Bool_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php',
+ 'PhpParser\\Node\\Expr\\Cast\\Double' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php',
+ 'PhpParser\\Node\\Expr\\Cast\\Int_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php',
+ 'PhpParser\\Node\\Expr\\Cast\\Object_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php',
+ 'PhpParser\\Node\\Expr\\Cast\\String_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php',
+ 'PhpParser\\Node\\Expr\\Cast\\Unset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php',
+ 'PhpParser\\Node\\Expr\\ClassConstFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php',
+ 'PhpParser\\Node\\Expr\\Clone_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php',
+ 'PhpParser\\Node\\Expr\\Closure' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php',
+ 'PhpParser\\Node\\Expr\\ClosureUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php',
+ 'PhpParser\\Node\\Expr\\ConstFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php',
+ 'PhpParser\\Node\\Expr\\Empty_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php',
+ 'PhpParser\\Node\\Expr\\Error' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php',
+ 'PhpParser\\Node\\Expr\\ErrorSuppress' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php',
+ 'PhpParser\\Node\\Expr\\Eval_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php',
+ 'PhpParser\\Node\\Expr\\Exit_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php',
+ 'PhpParser\\Node\\Expr\\FuncCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php',
+ 'PhpParser\\Node\\Expr\\Include_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php',
+ 'PhpParser\\Node\\Expr\\Instanceof_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php',
+ 'PhpParser\\Node\\Expr\\Isset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php',
+ 'PhpParser\\Node\\Expr\\List_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php',
+ 'PhpParser\\Node\\Expr\\Match_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php',
+ 'PhpParser\\Node\\Expr\\MethodCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php',
+ 'PhpParser\\Node\\Expr\\New_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php',
+ 'PhpParser\\Node\\Expr\\NullsafeMethodCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php',
+ 'PhpParser\\Node\\Expr\\NullsafePropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php',
+ 'PhpParser\\Node\\Expr\\PostDec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php',
+ 'PhpParser\\Node\\Expr\\PostInc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php',
+ 'PhpParser\\Node\\Expr\\PreDec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php',
+ 'PhpParser\\Node\\Expr\\PreInc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php',
+ 'PhpParser\\Node\\Expr\\Print_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php',
+ 'PhpParser\\Node\\Expr\\PropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php',
+ 'PhpParser\\Node\\Expr\\ShellExec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php',
+ 'PhpParser\\Node\\Expr\\StaticCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php',
+ 'PhpParser\\Node\\Expr\\StaticPropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php',
+ 'PhpParser\\Node\\Expr\\Ternary' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php',
+ 'PhpParser\\Node\\Expr\\Throw_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php',
+ 'PhpParser\\Node\\Expr\\UnaryMinus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php',
+ 'PhpParser\\Node\\Expr\\UnaryPlus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php',
+ 'PhpParser\\Node\\Expr\\Variable' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php',
+ 'PhpParser\\Node\\Expr\\YieldFrom' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php',
+ 'PhpParser\\Node\\Expr\\Yield_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php',
+ 'PhpParser\\Node\\FunctionLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php',
+ 'PhpParser\\Node\\Identifier' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Identifier.php',
+ 'PhpParser\\Node\\MatchArm' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/MatchArm.php',
+ 'PhpParser\\Node\\Name' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name.php',
+ 'PhpParser\\Node\\Name\\FullyQualified' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php',
+ 'PhpParser\\Node\\Name\\Relative' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php',
+ 'PhpParser\\Node\\NullableType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/NullableType.php',
+ 'PhpParser\\Node\\Param' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Param.php',
+ 'PhpParser\\Node\\Scalar' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar.php',
+ 'PhpParser\\Node\\Scalar\\DNumber' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php',
+ 'PhpParser\\Node\\Scalar\\Encapsed' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php',
+ 'PhpParser\\Node\\Scalar\\EncapsedStringPart' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php',
+ 'PhpParser\\Node\\Scalar\\LNumber' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php',
+ 'PhpParser\\Node\\Scalar\\MagicConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php',
+ 'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php',
+ 'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php',
+ 'PhpParser\\Node\\Scalar\\MagicConst\\File' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php',
+ 'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php',
+ 'PhpParser\\Node\\Scalar\\MagicConst\\Line' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php',
+ 'PhpParser\\Node\\Scalar\\MagicConst\\Method' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php',
+ 'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php',
+ 'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php',
+ 'PhpParser\\Node\\Scalar\\String_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php',
+ 'PhpParser\\Node\\Stmt' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt.php',
+ 'PhpParser\\Node\\Stmt\\Break_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php',
+ 'PhpParser\\Node\\Stmt\\Case_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php',
+ 'PhpParser\\Node\\Stmt\\Catch_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php',
+ 'PhpParser\\Node\\Stmt\\ClassConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php',
+ 'PhpParser\\Node\\Stmt\\ClassLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php',
+ 'PhpParser\\Node\\Stmt\\ClassMethod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php',
+ 'PhpParser\\Node\\Stmt\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php',
+ 'PhpParser\\Node\\Stmt\\Const_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php',
+ 'PhpParser\\Node\\Stmt\\Continue_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php',
+ 'PhpParser\\Node\\Stmt\\DeclareDeclare' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php',
+ 'PhpParser\\Node\\Stmt\\Declare_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php',
+ 'PhpParser\\Node\\Stmt\\Do_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php',
+ 'PhpParser\\Node\\Stmt\\Echo_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php',
+ 'PhpParser\\Node\\Stmt\\ElseIf_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php',
+ 'PhpParser\\Node\\Stmt\\Else_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php',
+ 'PhpParser\\Node\\Stmt\\Expression' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php',
+ 'PhpParser\\Node\\Stmt\\Finally_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php',
+ 'PhpParser\\Node\\Stmt\\For_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php',
+ 'PhpParser\\Node\\Stmt\\Foreach_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php',
+ 'PhpParser\\Node\\Stmt\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php',
+ 'PhpParser\\Node\\Stmt\\Global_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php',
+ 'PhpParser\\Node\\Stmt\\Goto_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php',
+ 'PhpParser\\Node\\Stmt\\GroupUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php',
+ 'PhpParser\\Node\\Stmt\\HaltCompiler' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php',
+ 'PhpParser\\Node\\Stmt\\If_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php',
+ 'PhpParser\\Node\\Stmt\\InlineHTML' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php',
+ 'PhpParser\\Node\\Stmt\\Interface_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php',
+ 'PhpParser\\Node\\Stmt\\Label' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php',
+ 'PhpParser\\Node\\Stmt\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php',
+ 'PhpParser\\Node\\Stmt\\Nop' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php',
+ 'PhpParser\\Node\\Stmt\\Property' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php',
+ 'PhpParser\\Node\\Stmt\\PropertyProperty' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php',
+ 'PhpParser\\Node\\Stmt\\Return_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php',
+ 'PhpParser\\Node\\Stmt\\StaticVar' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php',
+ 'PhpParser\\Node\\Stmt\\Static_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php',
+ 'PhpParser\\Node\\Stmt\\Switch_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php',
+ 'PhpParser\\Node\\Stmt\\Throw_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php',
+ 'PhpParser\\Node\\Stmt\\TraitUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php',
+ 'PhpParser\\Node\\Stmt\\TraitUseAdaptation' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php',
+ 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Alias' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php',
+ 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Precedence' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php',
+ 'PhpParser\\Node\\Stmt\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php',
+ 'PhpParser\\Node\\Stmt\\TryCatch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php',
+ 'PhpParser\\Node\\Stmt\\Unset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php',
+ 'PhpParser\\Node\\Stmt\\UseUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php',
+ 'PhpParser\\Node\\Stmt\\Use_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php',
+ 'PhpParser\\Node\\Stmt\\While_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php',
+ 'PhpParser\\Node\\UnionType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/UnionType.php',
+ 'PhpParser\\Node\\VarLikeIdentifier' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php',
+ 'PhpParser\\Parser' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser.php',
+ 'PhpParser\\ParserAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ParserAbstract.php',
+ 'PhpParser\\ParserFactory' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ParserFactory.php',
+ 'PhpParser\\Parser\\Multiple' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Multiple.php',
+ 'PhpParser\\Parser\\Php5' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Php5.php',
+ 'PhpParser\\Parser\\Php7' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Php7.php',
+ 'PhpParser\\Parser\\Tokens' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Tokens.php',
+ 'PhpParser\\PrettyPrinterAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php',
+ 'PhpParser\\PrettyPrinter\\Standard' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php',
+ 'Psalm\\Aliases' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Aliases.php',
+ 'Psalm\\CodeLocation' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/CodeLocation.php',
+ 'Psalm\\CodeLocation\\DocblockTypeLocation' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/CodeLocation/DocblockTypeLocation.php',
+ 'Psalm\\CodeLocation\\ParseErrorLocation' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/CodeLocation/ParseErrorLocation.php',
+ 'Psalm\\CodeLocation\\Raw' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/CodeLocation/Raw.php',
+ 'Psalm\\Codebase' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Codebase.php',
+ 'Psalm\\Config' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Config.php',
+ 'Psalm\\Config\\Creator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Config/Creator.php',
+ 'Psalm\\Config\\ErrorLevelFileFilter' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Config/ErrorLevelFileFilter.php',
+ 'Psalm\\Config\\FileFilter' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Config/FileFilter.php',
+ 'Psalm\\Config\\IssueHandler' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Config/IssueHandler.php',
+ 'Psalm\\Config\\ProjectFileFilter' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Config/ProjectFileFilter.php',
+ 'Psalm\\Config\\TaintAnalysisFileFilter' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Config/TaintAnalysisFileFilter.php',
+ 'Psalm\\Context' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Context.php',
+ 'Psalm\\DocComment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/DocComment.php',
+ 'Psalm\\ErrorBaseline' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/ErrorBaseline.php',
+ 'Psalm\\Exception\\CircularReferenceException' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Exception/CircularReferenceException.php',
+ 'Psalm\\Exception\\CodeException' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Exception/CodeException.php',
+ 'Psalm\\Exception\\ComplicatedExpressionException' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Exception/ComplicatedExpressionException.php',
+ 'Psalm\\Exception\\ConfigCreationException' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Exception/ConfigCreationException.php',
+ 'Psalm\\Exception\\ConfigException' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Exception/ConfigException.php',
+ 'Psalm\\Exception\\DocblockParseException' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Exception/DocblockParseException.php',
+ 'Psalm\\Exception\\FileIncludeException' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Exception/FileIncludeException.php',
+ 'Psalm\\Exception\\IncorrectDocblockException' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Exception/IncorrectDocblockException.php',
+ 'Psalm\\Exception\\InvalidClasslikeOverrideException' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Exception/InvalidClasslikeOverrideException.php',
+ 'Psalm\\Exception\\InvalidMethodOverrideException' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Exception/InvalidMethodOverrideException.php',
+ 'Psalm\\Exception\\RefactorException' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Exception/RefactorException.php',
+ 'Psalm\\Exception\\ScopeAnalysisException' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Exception/ScopeAnalysisException.php',
+ 'Psalm\\Exception\\TypeParseTreeException' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Exception/TypeParseTreeException.php',
+ 'Psalm\\Exception\\UnanalyzedFileException' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Exception/UnanalyzedFileException.php',
+ 'Psalm\\Exception\\UnpopulatedClasslikeException' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Exception/UnpopulatedClasslikeException.php',
+ 'Psalm\\Exception\\UnpreparedAnalysisException' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Exception/UnpreparedAnalysisException.php',
+ 'Psalm\\Exception\\UnsupportedIssueToFixException' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Exception/UnsupportedIssueToFixException.php',
+ 'Psalm\\FileBasedPluginAdapter' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/FileBasedPluginAdapter.php',
+ 'Psalm\\FileManipulation' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/FileManipulation.php',
+ 'Psalm\\FileSource' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/FileSource.php',
+ 'Psalm\\Internal\\Analyzer\\AlgebraAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/AlgebraAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\CanAlias' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/CanAlias.php',
+ 'Psalm\\Internal\\Analyzer\\ClassAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/ClassAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\ClassLikeAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/ClassLikeAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\ClosureAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/ClosureAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\CommentAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/CommentAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\DataFlowNodeData' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/DataFlowNodeData.php',
+ 'Psalm\\Internal\\Analyzer\\FileAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/FileAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\FunctionAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/FunctionAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\FunctionLikeAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/FunctionLikeAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\FunctionLike\\ReturnTypeAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/FunctionLike/ReturnTypeAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\FunctionLike\\ReturnTypeCollector' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/FunctionLike/ReturnTypeCollector.php',
+ 'Psalm\\Internal\\Analyzer\\InterfaceAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/InterfaceAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\IssueData' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/IssueData.php',
+ 'Psalm\\Internal\\Analyzer\\MethodAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/MethodAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\MethodComparator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/MethodComparator.php',
+ 'Psalm\\Internal\\Analyzer\\NamespaceAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/NamespaceAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\ProjectAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\ScopeAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/ScopeAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\SourceAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/SourceAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\StatementsAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/StatementsAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Block\\DoAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/DoAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Block\\ForAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/ForAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Block\\ForeachAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/ForeachAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Block\\IfAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/IfAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Block\\LoopAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/LoopAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Block\\SwitchAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/SwitchAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Block\\SwitchCaseAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/SwitchCaseAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Block\\TryAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/TryAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Block\\WhileAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/WhileAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\BreakAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/BreakAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\ContinueAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/ContinueAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\EchoAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/EchoAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\ExpressionAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/ExpressionAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\ArrayAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/ArrayAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\AssertionFinder' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/AssertionFinder.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\AssignmentAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/AssignmentAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Assignment\\ArrayAssignmentAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Assignment/ArrayAssignmentAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Assignment\\InstancePropertyAssignmentAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Assignment/InstancePropertyAssignmentAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Assignment\\StaticPropertyAssignmentAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Assignment/StaticPropertyAssignmentAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\BinaryOpAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/BinaryOpAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\BinaryOp\\AndAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/BinaryOp/AndAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\BinaryOp\\CoalesceAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/BinaryOp/CoalesceAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\BinaryOp\\ConcatAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/BinaryOp/ConcatAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\BinaryOp\\NonComparisonOpAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/BinaryOp/NonComparisonOpAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\BinaryOp\\NonDivArithmeticOpAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/BinaryOp/NonDivArithmeticOpAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\BinaryOp\\OrAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/BinaryOp/OrAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\BitwiseNotAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/BitwiseNotAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\BooleanNotAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/BooleanNotAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\CallAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/CallAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\ArgumentAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/ArgumentAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\ArgumentMapPopulator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/ArgumentMapPopulator.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\ArgumentsAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/ArgumentsAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\ArrayFunctionArgumentsAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/ArrayFunctionArgumentsAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\ClassTemplateParamCollector' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/ClassTemplateParamCollector.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\FunctionCallAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/FunctionCallAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\MethodCallAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/MethodCallAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\Method\\AtomicCallContext' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/AtomicCallContext.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\Method\\AtomicMethodCallAnalysisResult' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/AtomicMethodCallAnalysisResult.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\Method\\AtomicMethodCallAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/AtomicMethodCallAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\Method\\MethodCallProhibitionAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/MethodCallProhibitionAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\Method\\MethodCallPurityAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/MethodCallPurityAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\Method\\MethodCallReturnTypeFetcher' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/MethodCallReturnTypeFetcher.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\Method\\MethodVisibilityAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/MethodVisibilityAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\Method\\MissingMethodCallHandler' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/MissingMethodCallHandler.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\NewAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/NewAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Call\\StaticCallAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/StaticCallAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\CastAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/CastAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\CloneAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/CloneAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\EmptyAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/EmptyAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\EncapsulatedStringAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/EncapsulatedStringAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\EvalAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/EvalAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\ExitAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/ExitAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\ExpressionIdentifier' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/ExpressionIdentifier.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Fetch\\ArrayFetchAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/ArrayFetchAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Fetch\\AtomicPropertyFetchAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/AtomicPropertyFetchAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Fetch\\ClassConstFetchAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/ClassConstFetchAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Fetch\\ConstFetchAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/ConstFetchAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Fetch\\InstancePropertyFetchAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/InstancePropertyFetchAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Fetch\\StaticPropertyFetchAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/StaticPropertyFetchAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\Fetch\\VariableFetchAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/VariableFetchAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\IncDecExpressionAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/IncDecExpressionAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\IncludeAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/IncludeAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\InstanceofAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/InstanceofAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\IssetAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/IssetAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\MagicConstAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/MagicConstAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\MatchAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/MatchAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\NullsafeAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/NullsafeAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\PrintAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/PrintAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\SimpleTypeInferer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/SimpleTypeInferer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\TernaryAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/TernaryAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\UnaryPlusMinusAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/UnaryPlusMinusAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\YieldAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/YieldAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\Expression\\YieldFromAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/YieldFromAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\GlobalAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/GlobalAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\ReturnAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/ReturnAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\StaticAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/StaticAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\ThrowAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/ThrowAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\UnsetAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/UnsetAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\Statements\\UnusedAssignmentRemover' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/UnusedAssignmentRemover.php',
+ 'Psalm\\Internal\\Analyzer\\TraitAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/TraitAnalyzer.php',
+ 'Psalm\\Internal\\Analyzer\\TypeAnalyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Analyzer/TypeAnalyzer.php',
+ 'Psalm\\Internal\\Clause' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Clause.php',
+ 'Psalm\\Internal\\Codebase\\Analyzer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Codebase/Analyzer.php',
+ 'Psalm\\Internal\\Codebase\\ClassLikes' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Codebase/ClassLikes.php',
+ 'Psalm\\Internal\\Codebase\\ConstantTypeResolver' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Codebase/ConstantTypeResolver.php',
+ 'Psalm\\Internal\\Codebase\\DataFlowGraph' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Codebase/DataFlowGraph.php',
+ 'Psalm\\Internal\\Codebase\\Functions' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Codebase/Functions.php',
+ 'Psalm\\Internal\\Codebase\\InternalCallMapHandler' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Codebase/InternalCallMapHandler.php',
+ 'Psalm\\Internal\\Codebase\\Methods' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Codebase/Methods.php',
+ 'Psalm\\Internal\\Codebase\\Populator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Codebase/Populator.php',
+ 'Psalm\\Internal\\Codebase\\Properties' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Codebase/Properties.php',
+ 'Psalm\\Internal\\Codebase\\PropertyMap' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Codebase/PropertyMap.php',
+ 'Psalm\\Internal\\Codebase\\ReferenceMapGenerator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Codebase/ReferenceMapGenerator.php',
+ 'Psalm\\Internal\\Codebase\\Reflection' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Codebase/Reflection.php',
+ 'Psalm\\Internal\\Codebase\\Scanner' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Codebase/Scanner.php',
+ 'Psalm\\Internal\\Codebase\\TaintFlowGraph' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Codebase/TaintFlowGraph.php',
+ 'Psalm\\Internal\\Codebase\\VariableUseGraph' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Codebase/VariableUseGraph.php',
+ 'Psalm\\Internal\\Composer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Composer.php',
+ 'Psalm\\Internal\\DataFlow\\DataFlowNode' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/DataFlow/DataFlowNode.php',
+ 'Psalm\\Internal\\DataFlow\\Path' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/DataFlow/Path.php',
+ 'Psalm\\Internal\\DataFlow\\TaintSink' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/DataFlow/TaintSink.php',
+ 'Psalm\\Internal\\DataFlow\\TaintSource' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/DataFlow/TaintSource.php',
+ 'Psalm\\Internal\\Diff\\AstDiffer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Diff/AstDiffer.php',
+ 'Psalm\\Internal\\Diff\\ClassStatementsDiffer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Diff/ClassStatementsDiffer.php',
+ 'Psalm\\Internal\\Diff\\DiffElem' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Diff/DiffElem.php',
+ 'Psalm\\Internal\\Diff\\FileDiffer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Diff/FileDiffer.php',
+ 'Psalm\\Internal\\Diff\\FileStatementsDiffer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Diff/FileStatementsDiffer.php',
+ 'Psalm\\Internal\\Diff\\NamespaceStatementsDiffer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Diff/NamespaceStatementsDiffer.php',
+ 'Psalm\\Internal\\ExecutionEnvironment\\BuildInfoCollector' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/ExecutionEnvironment/BuildInfoCollector.php',
+ 'Psalm\\Internal\\ExecutionEnvironment\\GitInfoCollector' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/ExecutionEnvironment/GitInfoCollector.php',
+ 'Psalm\\Internal\\ExecutionEnvironment\\SystemCommandExecutor' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/ExecutionEnvironment/SystemCommandExecutor.php',
+ 'Psalm\\Internal\\FileManipulation\\ClassDocblockManipulator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/FileManipulation/ClassDocblockManipulator.php',
+ 'Psalm\\Internal\\FileManipulation\\CodeMigration' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/FileManipulation/CodeMigration.php',
+ 'Psalm\\Internal\\FileManipulation\\FileManipulationBuffer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/FileManipulation/FileManipulationBuffer.php',
+ 'Psalm\\Internal\\FileManipulation\\FunctionDocblockManipulator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/FileManipulation/FunctionDocblockManipulator.php',
+ 'Psalm\\Internal\\FileManipulation\\PropertyDocblockManipulator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/FileManipulation/PropertyDocblockManipulator.php',
+ 'Psalm\\Internal\\Fork\\ForkMessage' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Fork/ForkMessage.php',
+ 'Psalm\\Internal\\Fork\\ForkProcessDoneMessage' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Fork/ForkProcessDoneMessage.php',
+ 'Psalm\\Internal\\Fork\\ForkProcessErrorMessage' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Fork/ForkProcessErrorMessage.php',
+ 'Psalm\\Internal\\Fork\\ForkTaskDoneMessage' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Fork/ForkTaskDoneMessage.php',
+ 'Psalm\\Internal\\Fork\\Pool' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Fork/Pool.php',
+ 'Psalm\\Internal\\Fork\\PsalmRestarter' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Fork/PsalmRestarter.php',
+ 'Psalm\\Internal\\IncludeCollector' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/IncludeCollector.php',
+ 'Psalm\\Internal\\Json\\Json' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Json/Json.php',
+ 'Psalm\\Internal\\LanguageServer\\ClientHandler' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/ClientHandler.php',
+ 'Psalm\\Internal\\LanguageServer\\Client\\TextDocument' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/Client/TextDocument.php',
+ 'Psalm\\Internal\\LanguageServer\\EmitterInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/EmitterInterface.php',
+ 'Psalm\\Internal\\LanguageServer\\EmitterTrait' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/EmitterTrait.php',
+ 'Psalm\\Internal\\LanguageServer\\IdGenerator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/IdGenerator.php',
+ 'Psalm\\Internal\\LanguageServer\\LanguageClient' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/LanguageClient.php',
+ 'Psalm\\Internal\\LanguageServer\\LanguageServer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/LanguageServer.php',
+ 'Psalm\\Internal\\LanguageServer\\Message' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/Message.php',
+ 'Psalm\\Internal\\LanguageServer\\ProtocolReader' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/ProtocolReader.php',
+ 'Psalm\\Internal\\LanguageServer\\ProtocolStreamReader' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/ProtocolStreamReader.php',
+ 'Psalm\\Internal\\LanguageServer\\ProtocolStreamWriter' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/ProtocolStreamWriter.php',
+ 'Psalm\\Internal\\LanguageServer\\ProtocolWriter' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/ProtocolWriter.php',
+ 'Psalm\\Internal\\LanguageServer\\Server\\TextDocument' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/LanguageServer/Server/TextDocument.php',
+ 'Psalm\\Internal\\MethodIdentifier' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/MethodIdentifier.php',
+ 'Psalm\\Internal\\PhpTraverser\\CustomTraverser' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PhpTraverser/CustomTraverser.php',
+ 'Psalm\\Internal\\PhpVisitor\\AssignmentMapVisitor' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/AssignmentMapVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\CheckTrivialExprVisitor' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/CheckTrivialExprVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\CloningVisitor' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/CloningVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\ConditionCloningVisitor' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/ConditionCloningVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\NodeCleanerVisitor' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/NodeCleanerVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\NodeCounterVisitor' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/NodeCounterVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\OffsetShifterVisitor' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/OffsetShifterVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\ParamReplacementVisitor' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/ParamReplacementVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\PartialParserVisitor' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/PartialParserVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\ReflectorVisitor' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/ReflectorVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\ShortClosureVisitor' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/ShortClosureVisitor.php',
+ 'Psalm\\Internal\\PhpVisitor\\SimpleNameResolver' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/SimpleNameResolver.php',
+ 'Psalm\\Internal\\PhpVisitor\\TraitFinder' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/TraitFinder.php',
+ 'Psalm\\Internal\\PhpVisitor\\TypeMappingVisitor' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PhpVisitor/TypeMappingVisitor.php',
+ 'Psalm\\Internal\\PluginManager\\Command\\DisableCommand' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PluginManager/Command/DisableCommand.php',
+ 'Psalm\\Internal\\PluginManager\\Command\\EnableCommand' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PluginManager/Command/EnableCommand.php',
+ 'Psalm\\Internal\\PluginManager\\Command\\ShowCommand' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PluginManager/Command/ShowCommand.php',
+ 'Psalm\\Internal\\PluginManager\\ComposerLock' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PluginManager/ComposerLock.php',
+ 'Psalm\\Internal\\PluginManager\\ConfigFile' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PluginManager/ConfigFile.php',
+ 'Psalm\\Internal\\PluginManager\\PluginList' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PluginManager/PluginList.php',
+ 'Psalm\\Internal\\PluginManager\\PluginListFactory' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/PluginManager/PluginListFactory.php',
+ 'Psalm\\Internal\\Provider\\ClassLikeStorageCacheProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ClassLikeStorageCacheProvider.php',
+ 'Psalm\\Internal\\Provider\\ClassLikeStorageProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ClassLikeStorageProvider.php',
+ 'Psalm\\Internal\\Provider\\FileProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/FileProvider.php',
+ 'Psalm\\Internal\\Provider\\FileReferenceCacheProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/FileReferenceCacheProvider.php',
+ 'Psalm\\Internal\\Provider\\FileReferenceProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/FileReferenceProvider.php',
+ 'Psalm\\Internal\\Provider\\FileStorageCacheProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/FileStorageCacheProvider.php',
+ 'Psalm\\Internal\\Provider\\FileStorageProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/FileStorageProvider.php',
+ 'Psalm\\Internal\\Provider\\FunctionExistenceProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/FunctionExistenceProvider.php',
+ 'Psalm\\Internal\\Provider\\FunctionParamsProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/FunctionParamsProvider.php',
+ 'Psalm\\Internal\\Provider\\FunctionReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/FunctionReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\MethodExistenceProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/MethodExistenceProvider.php',
+ 'Psalm\\Internal\\Provider\\MethodParamsProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/MethodParamsProvider.php',
+ 'Psalm\\Internal\\Provider\\MethodReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/MethodReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\MethodVisibilityProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/MethodVisibilityProvider.php',
+ 'Psalm\\Internal\\Provider\\NodeDataProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/NodeDataProvider.php',
+ 'Psalm\\Internal\\Provider\\ParserCacheProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ParserCacheProvider.php',
+ 'Psalm\\Internal\\Provider\\ProjectCacheProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ProjectCacheProvider.php',
+ 'Psalm\\Internal\\Provider\\PropertyExistenceProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/PropertyExistenceProvider.php',
+ 'Psalm\\Internal\\Provider\\PropertyTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/PropertyTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\PropertyVisibilityProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/PropertyVisibilityProvider.php',
+ 'Psalm\\Internal\\Provider\\Providers' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/Providers.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayChunkReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayChunkReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayColumnReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayColumnReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayFillReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayFillReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayFilterReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayFilterReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayMapReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayMapReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayMergeReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayMergeReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayPadReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayPadReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayPointerAdjustmentReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayPointerAdjustmentReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayPopReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayPopReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayRandReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayRandReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayReduceReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayReduceReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayReverseReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayReverseReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArraySliceReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArraySliceReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayUniqueReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayUniqueReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ArrayValuesReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayValuesReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ClosureFromCallableReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ClosureFromCallableReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\DomNodeAppendChild' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/DomNodeAppendChild.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ExplodeReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ExplodeReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\FilterVarReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/FilterVarReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\FirstArgStringReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/FirstArgStringReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\GetClassMethodsReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/GetClassMethodsReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\GetObjectVarsReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/GetObjectVarsReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\HexdecReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/HexdecReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\IteratorToArrayReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/IteratorToArrayReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\MktimeReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/MktimeReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\ParseUrlReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ParseUrlReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\PdoStatementReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/PdoStatementReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\PdoStatementSetFetchMode' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/PdoStatementSetFetchMode.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\SimpleXmlElementAsXml' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/SimpleXmlElementAsXml.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\StrReplaceReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/StrReplaceReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\ReturnTypeProvider\\VersionCompareReturnTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/VersionCompareReturnTypeProvider.php',
+ 'Psalm\\Internal\\Provider\\StatementsProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Provider/StatementsProvider.php',
+ 'Psalm\\Internal\\ReferenceConstraint' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/ReferenceConstraint.php',
+ 'Psalm\\Internal\\RuntimeCaches' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/RuntimeCaches.php',
+ 'Psalm\\Internal\\Scanner\\ClassLikeDocblockComment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/ClassLikeDocblockComment.php',
+ 'Psalm\\Internal\\Scanner\\DocblockParser' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/DocblockParser.php',
+ 'Psalm\\Internal\\Scanner\\FileScanner' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/FileScanner.php',
+ 'Psalm\\Internal\\Scanner\\FunctionDocblockComment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/FunctionDocblockComment.php',
+ 'Psalm\\Internal\\Scanner\\ParsedDocblock' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/ParsedDocblock.php',
+ 'Psalm\\Internal\\Scanner\\PhpStormMetaScanner' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/PhpStormMetaScanner.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstantComponent' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstantComponent.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\ArrayOffsetFetch' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/ArrayOffsetFetch.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\ArrayValue' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/ArrayValue.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\ClassConstant' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/ClassConstant.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\Constant' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/Constant.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\KeyValuePair' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/KeyValuePair.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\ScalarValue' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/ScalarValue.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\UnresolvedAdditionOp' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/UnresolvedAdditionOp.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\UnresolvedBinaryOp' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/UnresolvedBinaryOp.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\UnresolvedBitwiseOr' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/UnresolvedBitwiseOr.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\UnresolvedConcatOp' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/UnresolvedConcatOp.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\UnresolvedDivisionOp' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/UnresolvedDivisionOp.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\UnresolvedMultiplicationOp' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/UnresolvedMultiplicationOp.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\UnresolvedSubtractionOp' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/UnresolvedSubtractionOp.php',
+ 'Psalm\\Internal\\Scanner\\UnresolvedConstant\\UnresolvedTernary' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/UnresolvedConstant/UnresolvedTernary.php',
+ 'Psalm\\Internal\\Scanner\\VarDocblockComment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scanner/VarDocblockComment.php',
+ 'Psalm\\Internal\\Scope\\CaseScope' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scope/CaseScope.php',
+ 'Psalm\\Internal\\Scope\\FinallyScope' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scope/FinallyScope.php',
+ 'Psalm\\Internal\\Scope\\IfConditionalScope' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scope/IfConditionalScope.php',
+ 'Psalm\\Internal\\Scope\\IfScope' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scope/IfScope.php',
+ 'Psalm\\Internal\\Scope\\LoopScope' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scope/LoopScope.php',
+ 'Psalm\\Internal\\Scope\\SwitchScope' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Scope/SwitchScope.php',
+ 'Psalm\\Internal\\Stubs\\Generator\\ClassLikeStubGenerator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Stubs/Generator/ClassLikeStubGenerator.php',
+ 'Psalm\\Internal\\Stubs\\Generator\\StubsGenerator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Stubs/Generator/StubsGenerator.php',
+ 'Psalm\\Internal\\TypeVisitor\\ContainsClassLikeVisitor' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/TypeVisitor/ContainsClassLikeVisitor.php',
+ 'Psalm\\Internal\\TypeVisitor\\FromDocblockSetter' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/TypeVisitor/FromDocblockSetter.php',
+ 'Psalm\\Internal\\TypeVisitor\\TemplateTypeCollector' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/TypeVisitor/TemplateTypeCollector.php',
+ 'Psalm\\Internal\\TypeVisitor\\TypeChecker' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/TypeVisitor/TypeChecker.php',
+ 'Psalm\\Internal\\TypeVisitor\\TypeScanner' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/TypeVisitor/TypeScanner.php',
+ 'Psalm\\Internal\\Type\\ArrayType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ArrayType.php',
+ 'Psalm\\Internal\\Type\\AssertionReconciler' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/AssertionReconciler.php',
+ 'Psalm\\Internal\\Type\\Comparator\\ArrayTypeComparator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/ArrayTypeComparator.php',
+ 'Psalm\\Internal\\Type\\Comparator\\AtomicTypeComparator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/AtomicTypeComparator.php',
+ 'Psalm\\Internal\\Type\\Comparator\\CallableTypeComparator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/CallableTypeComparator.php',
+ 'Psalm\\Internal\\Type\\Comparator\\ClassStringComparator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/ClassStringComparator.php',
+ 'Psalm\\Internal\\Type\\Comparator\\GenericTypeComparator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/GenericTypeComparator.php',
+ 'Psalm\\Internal\\Type\\Comparator\\KeyedArrayComparator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/KeyedArrayComparator.php',
+ 'Psalm\\Internal\\Type\\Comparator\\ObjectComparator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/ObjectComparator.php',
+ 'Psalm\\Internal\\Type\\Comparator\\ScalarTypeComparator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/ScalarTypeComparator.php',
+ 'Psalm\\Internal\\Type\\Comparator\\TypeComparisonResult' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/TypeComparisonResult.php',
+ 'Psalm\\Internal\\Type\\Comparator\\UnionTypeComparator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/Comparator/UnionTypeComparator.php',
+ 'Psalm\\Internal\\Type\\NegatedAssertionReconciler' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/NegatedAssertionReconciler.php',
+ 'Psalm\\Internal\\Type\\ParseTree' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree.php',
+ 'Psalm\\Internal\\Type\\ParseTreeCreator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTreeCreator.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\CallableParamTree' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/CallableParamTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\CallableTree' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/CallableTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\CallableWithReturnTypeTree' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/CallableWithReturnTypeTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\ConditionalTree' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/ConditionalTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\EncapsulationTree' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/EncapsulationTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\GenericTree' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/GenericTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\IndexedAccessTree' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/IndexedAccessTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\IntersectionTree' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/IntersectionTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\KeyedArrayPropertyTree' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/KeyedArrayPropertyTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\KeyedArrayTree' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/KeyedArrayTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\MethodParamTree' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/MethodParamTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\MethodTree' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/MethodTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\MethodWithReturnTypeTree' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/MethodWithReturnTypeTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\NullableTree' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/NullableTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\Root' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/Root.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\TemplateAsTree' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/TemplateAsTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\TemplateIsTree' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/TemplateIsTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\UnionTree' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/UnionTree.php',
+ 'Psalm\\Internal\\Type\\ParseTree\\Value' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/ParseTree/Value.php',
+ 'Psalm\\Internal\\Type\\SimpleAssertionReconciler' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/SimpleAssertionReconciler.php',
+ 'Psalm\\Internal\\Type\\SimpleNegatedAssertionReconciler' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/SimpleNegatedAssertionReconciler.php',
+ 'Psalm\\Internal\\Type\\TemplateResult' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/TemplateResult.php',
+ 'Psalm\\Internal\\Type\\TypeAlias' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/TypeAlias.php',
+ 'Psalm\\Internal\\Type\\TypeAlias\\ClassTypeAlias' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/TypeAlias/ClassTypeAlias.php',
+ 'Psalm\\Internal\\Type\\TypeAlias\\InlineTypeAlias' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/TypeAlias/InlineTypeAlias.php',
+ 'Psalm\\Internal\\Type\\TypeAlias\\LinkableTypeAlias' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/TypeAlias/LinkableTypeAlias.php',
+ 'Psalm\\Internal\\Type\\TypeCombination' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/TypeCombination.php',
+ 'Psalm\\Internal\\Type\\TypeExpander' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/TypeExpander.php',
+ 'Psalm\\Internal\\Type\\TypeParser' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/TypeParser.php',
+ 'Psalm\\Internal\\Type\\TypeTokenizer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/TypeTokenizer.php',
+ 'Psalm\\Internal\\Type\\UnionTemplateHandler' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Internal/Type/UnionTemplateHandler.php',
+ 'Psalm\\IssueBuffer' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/IssueBuffer.php',
+ 'Psalm\\Issue\\AbstractInstantiation' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/AbstractInstantiation.php',
+ 'Psalm\\Issue\\AbstractMethodCall' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/AbstractMethodCall.php',
+ 'Psalm\\Issue\\ArgumentIssue' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ArgumentIssue.php',
+ 'Psalm\\Issue\\ArgumentTypeCoercion' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ArgumentTypeCoercion.php',
+ 'Psalm\\Issue\\AssignmentToVoid' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/AssignmentToVoid.php',
+ 'Psalm\\Issue\\CircularReference' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/CircularReference.php',
+ 'Psalm\\Issue\\ClassIssue' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ClassIssue.php',
+ 'Psalm\\Issue\\CodeIssue' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/CodeIssue.php',
+ 'Psalm\\Issue\\ConflictingReferenceConstraint' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ConflictingReferenceConstraint.php',
+ 'Psalm\\Issue\\ConstructorSignatureMismatch' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ConstructorSignatureMismatch.php',
+ 'Psalm\\Issue\\ContinueOutsideLoop' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ContinueOutsideLoop.php',
+ 'Psalm\\Issue\\DeprecatedClass' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/DeprecatedClass.php',
+ 'Psalm\\Issue\\DeprecatedConstant' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/DeprecatedConstant.php',
+ 'Psalm\\Issue\\DeprecatedFunction' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/DeprecatedFunction.php',
+ 'Psalm\\Issue\\DeprecatedInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/DeprecatedInterface.php',
+ 'Psalm\\Issue\\DeprecatedMethod' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/DeprecatedMethod.php',
+ 'Psalm\\Issue\\DeprecatedProperty' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/DeprecatedProperty.php',
+ 'Psalm\\Issue\\DeprecatedTrait' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/DeprecatedTrait.php',
+ 'Psalm\\Issue\\DocblockTypeContradiction' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/DocblockTypeContradiction.php',
+ 'Psalm\\Issue\\DuplicateArrayKey' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/DuplicateArrayKey.php',
+ 'Psalm\\Issue\\DuplicateClass' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/DuplicateClass.php',
+ 'Psalm\\Issue\\DuplicateFunction' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/DuplicateFunction.php',
+ 'Psalm\\Issue\\DuplicateMethod' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/DuplicateMethod.php',
+ 'Psalm\\Issue\\DuplicateParam' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/DuplicateParam.php',
+ 'Psalm\\Issue\\EmptyArrayAccess' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/EmptyArrayAccess.php',
+ 'Psalm\\Issue\\ExtensionRequirementViolation' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ExtensionRequirementViolation.php',
+ 'Psalm\\Issue\\FalsableReturnStatement' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/FalsableReturnStatement.php',
+ 'Psalm\\Issue\\FalseOperand' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/FalseOperand.php',
+ 'Psalm\\Issue\\ForbiddenCode' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ForbiddenCode.php',
+ 'Psalm\\Issue\\ForbiddenEcho' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ForbiddenEcho.php',
+ 'Psalm\\Issue\\FunctionIssue' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/FunctionIssue.php',
+ 'Psalm\\Issue\\ImplementationRequirementViolation' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ImplementationRequirementViolation.php',
+ 'Psalm\\Issue\\ImplementedParamTypeMismatch' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ImplementedParamTypeMismatch.php',
+ 'Psalm\\Issue\\ImplementedReturnTypeMismatch' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ImplementedReturnTypeMismatch.php',
+ 'Psalm\\Issue\\ImplicitToStringCast' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ImplicitToStringCast.php',
+ 'Psalm\\Issue\\ImpureByReferenceAssignment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ImpureByReferenceAssignment.php',
+ 'Psalm\\Issue\\ImpureFunctionCall' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ImpureFunctionCall.php',
+ 'Psalm\\Issue\\ImpureMethodCall' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ImpureMethodCall.php',
+ 'Psalm\\Issue\\ImpurePropertyAssignment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ImpurePropertyAssignment.php',
+ 'Psalm\\Issue\\ImpurePropertyFetch' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ImpurePropertyFetch.php',
+ 'Psalm\\Issue\\ImpureStaticProperty' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ImpureStaticProperty.php',
+ 'Psalm\\Issue\\ImpureStaticVariable' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ImpureStaticVariable.php',
+ 'Psalm\\Issue\\ImpureVariable' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ImpureVariable.php',
+ 'Psalm\\Issue\\InaccessibleClassConstant' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InaccessibleClassConstant.php',
+ 'Psalm\\Issue\\InaccessibleMethod' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InaccessibleMethod.php',
+ 'Psalm\\Issue\\InaccessibleProperty' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InaccessibleProperty.php',
+ 'Psalm\\Issue\\InterfaceInstantiation' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InterfaceInstantiation.php',
+ 'Psalm\\Issue\\InternalClass' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InternalClass.php',
+ 'Psalm\\Issue\\InternalMethod' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InternalMethod.php',
+ 'Psalm\\Issue\\InternalProperty' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InternalProperty.php',
+ 'Psalm\\Issue\\InvalidArgument' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidArgument.php',
+ 'Psalm\\Issue\\InvalidArrayAccess' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidArrayAccess.php',
+ 'Psalm\\Issue\\InvalidArrayAssignment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidArrayAssignment.php',
+ 'Psalm\\Issue\\InvalidArrayOffset' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidArrayOffset.php',
+ 'Psalm\\Issue\\InvalidCast' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidCast.php',
+ 'Psalm\\Issue\\InvalidCatch' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidCatch.php',
+ 'Psalm\\Issue\\InvalidClass' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidClass.php',
+ 'Psalm\\Issue\\InvalidClone' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidClone.php',
+ 'Psalm\\Issue\\InvalidDocblock' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidDocblock.php',
+ 'Psalm\\Issue\\InvalidDocblockParamName' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidDocblockParamName.php',
+ 'Psalm\\Issue\\InvalidExtendClass' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidExtendClass.php',
+ 'Psalm\\Issue\\InvalidFalsableReturnType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidFalsableReturnType.php',
+ 'Psalm\\Issue\\InvalidFunctionCall' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidFunctionCall.php',
+ 'Psalm\\Issue\\InvalidGlobal' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidGlobal.php',
+ 'Psalm\\Issue\\InvalidIterator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidIterator.php',
+ 'Psalm\\Issue\\InvalidLiteralArgument' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidLiteralArgument.php',
+ 'Psalm\\Issue\\InvalidMethodCall' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidMethodCall.php',
+ 'Psalm\\Issue\\InvalidNamedArgument' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidNamedArgument.php',
+ 'Psalm\\Issue\\InvalidNullableReturnType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidNullableReturnType.php',
+ 'Psalm\\Issue\\InvalidOperand' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidOperand.php',
+ 'Psalm\\Issue\\InvalidParamDefault' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidParamDefault.php',
+ 'Psalm\\Issue\\InvalidParent' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidParent.php',
+ 'Psalm\\Issue\\InvalidPassByReference' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidPassByReference.php',
+ 'Psalm\\Issue\\InvalidPropertyAssignment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidPropertyAssignment.php',
+ 'Psalm\\Issue\\InvalidPropertyAssignmentValue' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidPropertyAssignmentValue.php',
+ 'Psalm\\Issue\\InvalidPropertyFetch' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidPropertyFetch.php',
+ 'Psalm\\Issue\\InvalidReturnStatement' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidReturnStatement.php',
+ 'Psalm\\Issue\\InvalidReturnType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidReturnType.php',
+ 'Psalm\\Issue\\InvalidScalarArgument' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidScalarArgument.php',
+ 'Psalm\\Issue\\InvalidScope' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidScope.php',
+ 'Psalm\\Issue\\InvalidStaticInvocation' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidStaticInvocation.php',
+ 'Psalm\\Issue\\InvalidStringClass' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidStringClass.php',
+ 'Psalm\\Issue\\InvalidTemplateParam' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidTemplateParam.php',
+ 'Psalm\\Issue\\InvalidThrow' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidThrow.php',
+ 'Psalm\\Issue\\InvalidToString' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidToString.php',
+ 'Psalm\\Issue\\InvalidTypeImport' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/InvalidTypeImport.php',
+ 'Psalm\\Issue\\LessSpecificImplementedReturnType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/LessSpecificImplementedReturnType.php',
+ 'Psalm\\Issue\\LessSpecificReturnStatement' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/LessSpecificReturnStatement.php',
+ 'Psalm\\Issue\\LessSpecificReturnType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/LessSpecificReturnType.php',
+ 'Psalm\\Issue\\LoopInvalidation' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/LoopInvalidation.php',
+ 'Psalm\\Issue\\MethodIssue' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MethodIssue.php',
+ 'Psalm\\Issue\\MethodSignatureMismatch' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MethodSignatureMismatch.php',
+ 'Psalm\\Issue\\MethodSignatureMustOmitReturnType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MethodSignatureMustOmitReturnType.php',
+ 'Psalm\\Issue\\MismatchingDocblockParamType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MismatchingDocblockParamType.php',
+ 'Psalm\\Issue\\MismatchingDocblockReturnType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MismatchingDocblockReturnType.php',
+ 'Psalm\\Issue\\MissingClosureParamType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MissingClosureParamType.php',
+ 'Psalm\\Issue\\MissingClosureReturnType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MissingClosureReturnType.php',
+ 'Psalm\\Issue\\MissingConstructor' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MissingConstructor.php',
+ 'Psalm\\Issue\\MissingDependency' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MissingDependency.php',
+ 'Psalm\\Issue\\MissingDocblockType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MissingDocblockType.php',
+ 'Psalm\\Issue\\MissingFile' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MissingFile.php',
+ 'Psalm\\Issue\\MissingImmutableAnnotation' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MissingImmutableAnnotation.php',
+ 'Psalm\\Issue\\MissingParamType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MissingParamType.php',
+ 'Psalm\\Issue\\MissingPropertyType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MissingPropertyType.php',
+ 'Psalm\\Issue\\MissingReturnType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MissingReturnType.php',
+ 'Psalm\\Issue\\MissingTemplateParam' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MissingTemplateParam.php',
+ 'Psalm\\Issue\\MissingThrowsDocblock' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MissingThrowsDocblock.php',
+ 'Psalm\\Issue\\MixedArgument' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MixedArgument.php',
+ 'Psalm\\Issue\\MixedArgumentTypeCoercion' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MixedArgumentTypeCoercion.php',
+ 'Psalm\\Issue\\MixedArrayAccess' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MixedArrayAccess.php',
+ 'Psalm\\Issue\\MixedArrayAssignment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MixedArrayAssignment.php',
+ 'Psalm\\Issue\\MixedArrayOffset' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MixedArrayOffset.php',
+ 'Psalm\\Issue\\MixedArrayTypeCoercion' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MixedArrayTypeCoercion.php',
+ 'Psalm\\Issue\\MixedAssignment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MixedAssignment.php',
+ 'Psalm\\Issue\\MixedClone' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MixedClone.php',
+ 'Psalm\\Issue\\MixedFunctionCall' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MixedFunctionCall.php',
+ 'Psalm\\Issue\\MixedInferredReturnType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MixedInferredReturnType.php',
+ 'Psalm\\Issue\\MixedMethodCall' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MixedMethodCall.php',
+ 'Psalm\\Issue\\MixedOperand' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MixedOperand.php',
+ 'Psalm\\Issue\\MixedPropertyAssignment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MixedPropertyAssignment.php',
+ 'Psalm\\Issue\\MixedPropertyFetch' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MixedPropertyFetch.php',
+ 'Psalm\\Issue\\MixedPropertyTypeCoercion' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MixedPropertyTypeCoercion.php',
+ 'Psalm\\Issue\\MixedReturnStatement' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MixedReturnStatement.php',
+ 'Psalm\\Issue\\MixedReturnTypeCoercion' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MixedReturnTypeCoercion.php',
+ 'Psalm\\Issue\\MixedStringOffsetAssignment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MixedStringOffsetAssignment.php',
+ 'Psalm\\Issue\\MoreSpecificImplementedParamType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MoreSpecificImplementedParamType.php',
+ 'Psalm\\Issue\\MoreSpecificReturnType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MoreSpecificReturnType.php',
+ 'Psalm\\Issue\\MutableDependency' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/MutableDependency.php',
+ 'Psalm\\Issue\\NoInterfaceProperties' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/NoInterfaceProperties.php',
+ 'Psalm\\Issue\\NoValue' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/NoValue.php',
+ 'Psalm\\Issue\\NonStaticSelfCall' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/NonStaticSelfCall.php',
+ 'Psalm\\Issue\\NullArgument' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/NullArgument.php',
+ 'Psalm\\Issue\\NullArrayAccess' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/NullArrayAccess.php',
+ 'Psalm\\Issue\\NullArrayOffset' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/NullArrayOffset.php',
+ 'Psalm\\Issue\\NullFunctionCall' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/NullFunctionCall.php',
+ 'Psalm\\Issue\\NullIterator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/NullIterator.php',
+ 'Psalm\\Issue\\NullOperand' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/NullOperand.php',
+ 'Psalm\\Issue\\NullPropertyAssignment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/NullPropertyAssignment.php',
+ 'Psalm\\Issue\\NullPropertyFetch' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/NullPropertyFetch.php',
+ 'Psalm\\Issue\\NullReference' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/NullReference.php',
+ 'Psalm\\Issue\\NullableReturnStatement' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/NullableReturnStatement.php',
+ 'Psalm\\Issue\\OverriddenMethodAccess' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/OverriddenMethodAccess.php',
+ 'Psalm\\Issue\\OverriddenPropertyAccess' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/OverriddenPropertyAccess.php',
+ 'Psalm\\Issue\\ParadoxicalCondition' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ParadoxicalCondition.php',
+ 'Psalm\\Issue\\ParamNameMismatch' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ParamNameMismatch.php',
+ 'Psalm\\Issue\\ParentNotFound' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ParentNotFound.php',
+ 'Psalm\\Issue\\ParseError' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ParseError.php',
+ 'Psalm\\Issue\\PluginIssue' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PluginIssue.php',
+ 'Psalm\\Issue\\PossibleRawObjectIteration' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossibleRawObjectIteration.php',
+ 'Psalm\\Issue\\PossiblyFalseArgument' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyFalseArgument.php',
+ 'Psalm\\Issue\\PossiblyFalseIterator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyFalseIterator.php',
+ 'Psalm\\Issue\\PossiblyFalseOperand' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyFalseOperand.php',
+ 'Psalm\\Issue\\PossiblyFalsePropertyAssignmentValue' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyFalsePropertyAssignmentValue.php',
+ 'Psalm\\Issue\\PossiblyFalseReference' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyFalseReference.php',
+ 'Psalm\\Issue\\PossiblyInvalidArgument' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidArgument.php',
+ 'Psalm\\Issue\\PossiblyInvalidArrayAccess' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidArrayAccess.php',
+ 'Psalm\\Issue\\PossiblyInvalidArrayAssignment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidArrayAssignment.php',
+ 'Psalm\\Issue\\PossiblyInvalidArrayOffset' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidArrayOffset.php',
+ 'Psalm\\Issue\\PossiblyInvalidCast' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidCast.php',
+ 'Psalm\\Issue\\PossiblyInvalidClone' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidClone.php',
+ 'Psalm\\Issue\\PossiblyInvalidFunctionCall' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidFunctionCall.php',
+ 'Psalm\\Issue\\PossiblyInvalidIterator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidIterator.php',
+ 'Psalm\\Issue\\PossiblyInvalidMethodCall' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidMethodCall.php',
+ 'Psalm\\Issue\\PossiblyInvalidOperand' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidOperand.php',
+ 'Psalm\\Issue\\PossiblyInvalidPropertyAssignment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidPropertyAssignment.php',
+ 'Psalm\\Issue\\PossiblyInvalidPropertyAssignmentValue' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidPropertyAssignmentValue.php',
+ 'Psalm\\Issue\\PossiblyInvalidPropertyFetch' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyInvalidPropertyFetch.php',
+ 'Psalm\\Issue\\PossiblyNullArgument' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullArgument.php',
+ 'Psalm\\Issue\\PossiblyNullArrayAccess' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullArrayAccess.php',
+ 'Psalm\\Issue\\PossiblyNullArrayAssignment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullArrayAssignment.php',
+ 'Psalm\\Issue\\PossiblyNullArrayOffset' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullArrayOffset.php',
+ 'Psalm\\Issue\\PossiblyNullFunctionCall' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullFunctionCall.php',
+ 'Psalm\\Issue\\PossiblyNullIterator' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullIterator.php',
+ 'Psalm\\Issue\\PossiblyNullOperand' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullOperand.php',
+ 'Psalm\\Issue\\PossiblyNullPropertyAssignment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullPropertyAssignment.php',
+ 'Psalm\\Issue\\PossiblyNullPropertyAssignmentValue' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullPropertyAssignmentValue.php',
+ 'Psalm\\Issue\\PossiblyNullPropertyFetch' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullPropertyFetch.php',
+ 'Psalm\\Issue\\PossiblyNullReference' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyNullReference.php',
+ 'Psalm\\Issue\\PossiblyUndefinedArrayOffset' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyUndefinedArrayOffset.php',
+ 'Psalm\\Issue\\PossiblyUndefinedGlobalVariable' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyUndefinedGlobalVariable.php',
+ 'Psalm\\Issue\\PossiblyUndefinedIntArrayOffset' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyUndefinedIntArrayOffset.php',
+ 'Psalm\\Issue\\PossiblyUndefinedMethod' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyUndefinedMethod.php',
+ 'Psalm\\Issue\\PossiblyUndefinedStringArrayOffset' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyUndefinedStringArrayOffset.php',
+ 'Psalm\\Issue\\PossiblyUndefinedVariable' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyUndefinedVariable.php',
+ 'Psalm\\Issue\\PossiblyUnusedMethod' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyUnusedMethod.php',
+ 'Psalm\\Issue\\PossiblyUnusedParam' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyUnusedParam.php',
+ 'Psalm\\Issue\\PossiblyUnusedProperty' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PossiblyUnusedProperty.php',
+ 'Psalm\\Issue\\PropertyIssue' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PropertyIssue.php',
+ 'Psalm\\Issue\\PropertyNotSetInConstructor' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PropertyNotSetInConstructor.php',
+ 'Psalm\\Issue\\PropertyTypeCoercion' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PropertyTypeCoercion.php',
+ 'Psalm\\Issue\\PsalmInternalError' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/PsalmInternalError.php',
+ 'Psalm\\Issue\\RawObjectIteration' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/RawObjectIteration.php',
+ 'Psalm\\Issue\\RedundantCondition' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/RedundantCondition.php',
+ 'Psalm\\Issue\\RedundantConditionGivenDocblockType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/RedundantConditionGivenDocblockType.php',
+ 'Psalm\\Issue\\RedundantIdentityWithTrue' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/RedundantIdentityWithTrue.php',
+ 'Psalm\\Issue\\ReferenceConstraintViolation' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ReferenceConstraintViolation.php',
+ 'Psalm\\Issue\\ReservedWord' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/ReservedWord.php',
+ 'Psalm\\Issue\\StringIncrement' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/StringIncrement.php',
+ 'Psalm\\Issue\\TaintedInput' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/TaintedInput.php',
+ 'Psalm\\Issue\\TooFewArguments' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/TooFewArguments.php',
+ 'Psalm\\Issue\\TooManyArguments' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/TooManyArguments.php',
+ 'Psalm\\Issue\\TooManyTemplateParams' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/TooManyTemplateParams.php',
+ 'Psalm\\Issue\\Trace' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/Trace.php',
+ 'Psalm\\Issue\\TraitMethodSignatureMismatch' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/TraitMethodSignatureMismatch.php',
+ 'Psalm\\Issue\\TypeDoesNotContainNull' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/TypeDoesNotContainNull.php',
+ 'Psalm\\Issue\\TypeDoesNotContainType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/TypeDoesNotContainType.php',
+ 'Psalm\\Issue\\UncaughtThrowInGlobalScope' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UncaughtThrowInGlobalScope.php',
+ 'Psalm\\Issue\\UndefinedClass' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UndefinedClass.php',
+ 'Psalm\\Issue\\UndefinedConstant' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UndefinedConstant.php',
+ 'Psalm\\Issue\\UndefinedDocblockClass' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UndefinedDocblockClass.php',
+ 'Psalm\\Issue\\UndefinedFunction' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UndefinedFunction.php',
+ 'Psalm\\Issue\\UndefinedGlobalVariable' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UndefinedGlobalVariable.php',
+ 'Psalm\\Issue\\UndefinedInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UndefinedInterface.php',
+ 'Psalm\\Issue\\UndefinedInterfaceMethod' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UndefinedInterfaceMethod.php',
+ 'Psalm\\Issue\\UndefinedMagicMethod' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UndefinedMagicMethod.php',
+ 'Psalm\\Issue\\UndefinedMagicPropertyAssignment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UndefinedMagicPropertyAssignment.php',
+ 'Psalm\\Issue\\UndefinedMagicPropertyFetch' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UndefinedMagicPropertyFetch.php',
+ 'Psalm\\Issue\\UndefinedMethod' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UndefinedMethod.php',
+ 'Psalm\\Issue\\UndefinedPropertyAssignment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UndefinedPropertyAssignment.php',
+ 'Psalm\\Issue\\UndefinedPropertyFetch' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UndefinedPropertyFetch.php',
+ 'Psalm\\Issue\\UndefinedThisPropertyAssignment' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UndefinedThisPropertyAssignment.php',
+ 'Psalm\\Issue\\UndefinedThisPropertyFetch' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UndefinedThisPropertyFetch.php',
+ 'Psalm\\Issue\\UndefinedTrace' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UndefinedTrace.php',
+ 'Psalm\\Issue\\UndefinedTrait' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UndefinedTrait.php',
+ 'Psalm\\Issue\\UndefinedVariable' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UndefinedVariable.php',
+ 'Psalm\\Issue\\UnevaluatedCode' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UnevaluatedCode.php',
+ 'Psalm\\Issue\\UnhandledMatchCondition' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UnhandledMatchCondition.php',
+ 'Psalm\\Issue\\UnimplementedAbstractMethod' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UnimplementedAbstractMethod.php',
+ 'Psalm\\Issue\\UnimplementedInterfaceMethod' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UnimplementedInterfaceMethod.php',
+ 'Psalm\\Issue\\UninitializedProperty' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UninitializedProperty.php',
+ 'Psalm\\Issue\\UnnecessaryVarAnnotation' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UnnecessaryVarAnnotation.php',
+ 'Psalm\\Issue\\UnrecognizedExpression' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UnrecognizedExpression.php',
+ 'Psalm\\Issue\\UnrecognizedStatement' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UnrecognizedStatement.php',
+ 'Psalm\\Issue\\UnresolvableInclude' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UnresolvableInclude.php',
+ 'Psalm\\Issue\\UnsafeInstantiation' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UnsafeInstantiation.php',
+ 'Psalm\\Issue\\UnusedClass' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UnusedClass.php',
+ 'Psalm\\Issue\\UnusedClosureParam' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UnusedClosureParam.php',
+ 'Psalm\\Issue\\UnusedFunctionCall' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UnusedFunctionCall.php',
+ 'Psalm\\Issue\\UnusedMethod' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UnusedMethod.php',
+ 'Psalm\\Issue\\UnusedMethodCall' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UnusedMethodCall.php',
+ 'Psalm\\Issue\\UnusedParam' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UnusedParam.php',
+ 'Psalm\\Issue\\UnusedProperty' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UnusedProperty.php',
+ 'Psalm\\Issue\\UnusedPsalmSuppress' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UnusedPsalmSuppress.php',
+ 'Psalm\\Issue\\UnusedVariable' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/UnusedVariable.php',
+ 'Psalm\\Issue\\VariableIssue' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Issue/VariableIssue.php',
+ 'Psalm\\NodeTypeProvider' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/NodeTypeProvider.php',
+ 'Psalm\\PluginRegistrationSocket' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/PluginRegistrationSocket.php',
+ 'Psalm\\Plugin\\Hook\\AfterAnalysisInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterClassLikeAnalysisInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterClassLikeAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterClassLikeExistenceCheckInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterClassLikeExistenceCheckInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterClassLikeVisitInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterClassLikeVisitInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterCodebasePopulatedInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterCodebasePopulatedInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterEveryFunctionCallAnalysisInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterEveryFunctionCallAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterExpressionAnalysisInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterExpressionAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterFileAnalysisInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterFileAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterFunctionCallAnalysisInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterFunctionCallAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterFunctionLikeAnalysisInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterFunctionLikeAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterMethodCallAnalysisInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterMethodCallAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\AfterStatementAnalysisInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/AfterStatementAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\BeforeFileAnalysisInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/BeforeFileAnalysisInterface.php',
+ 'Psalm\\Plugin\\Hook\\FunctionExistenceProviderInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/FunctionExistenceProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\FunctionParamsProviderInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/FunctionParamsProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\FunctionReturnTypeProviderInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/FunctionReturnTypeProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\MethodExistenceProviderInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/MethodExistenceProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\MethodParamsProviderInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/MethodParamsProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\MethodReturnTypeProviderInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/MethodReturnTypeProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\MethodVisibilityProviderInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/MethodVisibilityProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\PropertyExistenceProviderInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/PropertyExistenceProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\PropertyTypeProviderInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/PropertyTypeProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\PropertyVisibilityProviderInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/PropertyVisibilityProviderInterface.php',
+ 'Psalm\\Plugin\\Hook\\StringInterpreterInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Hook/StringInterpreterInterface.php',
+ 'Psalm\\Plugin\\PluginEntryPointInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/PluginEntryPointInterface.php',
+ 'Psalm\\Plugin\\RegistrationInterface' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/RegistrationInterface.php',
+ 'Psalm\\Plugin\\Shepherd' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Plugin/Shepherd.php',
+ 'Psalm\\Progress\\DebugProgress' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Progress/DebugProgress.php',
+ 'Psalm\\Progress\\DefaultProgress' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Progress/DefaultProgress.php',
+ 'Psalm\\Progress\\LongProgress' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Progress/LongProgress.php',
+ 'Psalm\\Progress\\Progress' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Progress/Progress.php',
+ 'Psalm\\Progress\\VoidProgress' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Progress/VoidProgress.php',
+ 'Psalm\\Report' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Report.php',
+ 'Psalm\\Report\\CheckstyleReport' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Report/CheckstyleReport.php',
+ 'Psalm\\Report\\CompactReport' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Report/CompactReport.php',
+ 'Psalm\\Report\\ConsoleReport' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Report/ConsoleReport.php',
+ 'Psalm\\Report\\EmacsReport' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Report/EmacsReport.php',
+ 'Psalm\\Report\\GithubActionsReport' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Report/GithubActionsReport.php',
+ 'Psalm\\Report\\JsonReport' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Report/JsonReport.php',
+ 'Psalm\\Report\\JsonSummaryReport' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Report/JsonSummaryReport.php',
+ 'Psalm\\Report\\JunitReport' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Report/JunitReport.php',
+ 'Psalm\\Report\\PhpStormReport' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Report/PhpStormReport.php',
+ 'Psalm\\Report\\PylintReport' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Report/PylintReport.php',
+ 'Psalm\\Report\\ReportOptions' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Report/ReportOptions.php',
+ 'Psalm\\Report\\SonarqubeReport' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Report/SonarqubeReport.php',
+ 'Psalm\\Report\\TextReport' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Report/TextReport.php',
+ 'Psalm\\Report\\XmlReport' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Report/XmlReport.php',
+ 'Psalm\\SourceControl\\Git\\CommitInfo' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/SourceControl/Git/CommitInfo.php',
+ 'Psalm\\SourceControl\\Git\\GitInfo' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/SourceControl/Git/GitInfo.php',
+ 'Psalm\\SourceControl\\Git\\RemoteInfo' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/SourceControl/Git/RemoteInfo.php',
+ 'Psalm\\SourceControl\\SourceControlInfo' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/SourceControl/SourceControlInfo.php',
+ 'Psalm\\StatementsSource' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/StatementsSource.php',
+ 'Psalm\\Storage\\Assertion' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Storage/Assertion.php',
+ 'Psalm\\Storage\\ClassConstantStorage' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Storage/ClassConstantStorage.php',
+ 'Psalm\\Storage\\ClassLikeStorage' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Storage/ClassLikeStorage.php',
+ 'Psalm\\Storage\\CustomMetadataTrait' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Storage/CustomMetadataTrait.php',
+ 'Psalm\\Storage\\FileStorage' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Storage/FileStorage.php',
+ 'Psalm\\Storage\\FunctionLikeParameter' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Storage/FunctionLikeParameter.php',
+ 'Psalm\\Storage\\FunctionLikeStorage' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Storage/FunctionLikeStorage.php',
+ 'Psalm\\Storage\\FunctionStorage' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Storage/FunctionStorage.php',
+ 'Psalm\\Storage\\MethodStorage' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Storage/MethodStorage.php',
+ 'Psalm\\Storage\\PropertyStorage' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Storage/PropertyStorage.php',
+ 'Psalm\\Type' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type.php',
+ 'Psalm\\Type\\Algebra' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Algebra.php',
+ 'Psalm\\Type\\Atomic' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic.php',
+ 'Psalm\\Type\\Atomic\\CallableTrait' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/CallableTrait.php',
+ 'Psalm\\Type\\Atomic\\GenericTrait' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/GenericTrait.php',
+ 'Psalm\\Type\\Atomic\\HasIntersectionTrait' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/HasIntersectionTrait.php',
+ 'Psalm\\Type\\Atomic\\Scalar' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/Scalar.php',
+ 'Psalm\\Type\\Atomic\\TAnonymousClassInstance' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TAnonymousClassInstance.php',
+ 'Psalm\\Type\\Atomic\\TArray' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TArray.php',
+ 'Psalm\\Type\\Atomic\\TArrayKey' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TArrayKey.php',
+ 'Psalm\\Type\\Atomic\\TAssertionFalsy' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TAssertionFalsy.php',
+ 'Psalm\\Type\\Atomic\\TBool' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TBool.php',
+ 'Psalm\\Type\\Atomic\\TCallable' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TCallable.php',
+ 'Psalm\\Type\\Atomic\\TCallableArray' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TCallableArray.php',
+ 'Psalm\\Type\\Atomic\\TCallableKeyedArray' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TCallableKeyedArray.php',
+ 'Psalm\\Type\\Atomic\\TCallableList' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TCallableList.php',
+ 'Psalm\\Type\\Atomic\\TCallableObject' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TCallableObject.php',
+ 'Psalm\\Type\\Atomic\\TCallableString' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TCallableString.php',
+ 'Psalm\\Type\\Atomic\\TClassString' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TClassString.php',
+ 'Psalm\\Type\\Atomic\\TClassStringMap' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TClassStringMap.php',
+ 'Psalm\\Type\\Atomic\\TClosedResource' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TClosedResource.php',
+ 'Psalm\\Type\\Atomic\\TClosure' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TClosure.php',
+ 'Psalm\\Type\\Atomic\\TConditional' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TConditional.php',
+ 'Psalm\\Type\\Atomic\\TDependentGetClass' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TDependentGetClass.php',
+ 'Psalm\\Type\\Atomic\\TDependentGetDebugType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TDependentGetDebugType.php',
+ 'Psalm\\Type\\Atomic\\TDependentGetType' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TDependentGetType.php',
+ 'Psalm\\Type\\Atomic\\TEmpty' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TEmpty.php',
+ 'Psalm\\Type\\Atomic\\TEmptyMixed' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TEmptyMixed.php',
+ 'Psalm\\Type\\Atomic\\TEmptyNumeric' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TEmptyNumeric.php',
+ 'Psalm\\Type\\Atomic\\TEmptyScalar' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TEmptyScalar.php',
+ 'Psalm\\Type\\Atomic\\TFalse' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TFalse.php',
+ 'Psalm\\Type\\Atomic\\TFloat' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TFloat.php',
+ 'Psalm\\Type\\Atomic\\TGenericObject' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TGenericObject.php',
+ 'Psalm\\Type\\Atomic\\THtmlEscapedString' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/THtmlEscapedString.php',
+ 'Psalm\\Type\\Atomic\\TInt' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TInt.php',
+ 'Psalm\\Type\\Atomic\\TIterable' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TIterable.php',
+ 'Psalm\\Type\\Atomic\\TKeyOfClassConstant' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TKeyOfClassConstant.php',
+ 'Psalm\\Type\\Atomic\\TKeyedArray' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TKeyedArray.php',
+ 'Psalm\\Type\\Atomic\\TList' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TList.php',
+ 'Psalm\\Type\\Atomic\\TLiteralClassString' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TLiteralClassString.php',
+ 'Psalm\\Type\\Atomic\\TLiteralFloat' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TLiteralFloat.php',
+ 'Psalm\\Type\\Atomic\\TLiteralInt' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TLiteralInt.php',
+ 'Psalm\\Type\\Atomic\\TLiteralString' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TLiteralString.php',
+ 'Psalm\\Type\\Atomic\\TLowercaseString' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TLowercaseString.php',
+ 'Psalm\\Type\\Atomic\\TMixed' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TMixed.php',
+ 'Psalm\\Type\\Atomic\\TNamedObject' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TNamedObject.php',
+ 'Psalm\\Type\\Atomic\\TNever' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TNever.php',
+ 'Psalm\\Type\\Atomic\\TNonEmptyArray' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TNonEmptyArray.php',
+ 'Psalm\\Type\\Atomic\\TNonEmptyList' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TNonEmptyList.php',
+ 'Psalm\\Type\\Atomic\\TNonEmptyLowercaseString' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TNonEmptyLowercaseString.php',
+ 'Psalm\\Type\\Atomic\\TNonEmptyMixed' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TNonEmptyMixed.php',
+ 'Psalm\\Type\\Atomic\\TNonEmptyScalar' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TNonEmptyScalar.php',
+ 'Psalm\\Type\\Atomic\\TNonEmptyString' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TNonEmptyString.php',
+ 'Psalm\\Type\\Atomic\\TNull' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TNull.php',
+ 'Psalm\\Type\\Atomic\\TNumeric' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TNumeric.php',
+ 'Psalm\\Type\\Atomic\\TNumericString' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TNumericString.php',
+ 'Psalm\\Type\\Atomic\\TObject' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TObject.php',
+ 'Psalm\\Type\\Atomic\\TObjectWithProperties' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TObjectWithProperties.php',
+ 'Psalm\\Type\\Atomic\\TPositiveInt' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TPositiveInt.php',
+ 'Psalm\\Type\\Atomic\\TResource' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TResource.php',
+ 'Psalm\\Type\\Atomic\\TScalar' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TScalar.php',
+ 'Psalm\\Type\\Atomic\\TScalarClassConstant' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TScalarClassConstant.php',
+ 'Psalm\\Type\\Atomic\\TSingleLetter' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TSingleLetter.php',
+ 'Psalm\\Type\\Atomic\\TString' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TString.php',
+ 'Psalm\\Type\\Atomic\\TTemplateIndexedAccess' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TTemplateIndexedAccess.php',
+ 'Psalm\\Type\\Atomic\\TTemplateKeyOf' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TTemplateKeyOf.php',
+ 'Psalm\\Type\\Atomic\\TTemplateParam' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TTemplateParam.php',
+ 'Psalm\\Type\\Atomic\\TTemplateParamClass' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TTemplateParamClass.php',
+ 'Psalm\\Type\\Atomic\\TTraitString' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TTraitString.php',
+ 'Psalm\\Type\\Atomic\\TTrue' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TTrue.php',
+ 'Psalm\\Type\\Atomic\\TTypeAlias' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TTypeAlias.php',
+ 'Psalm\\Type\\Atomic\\TValueOfClassConstant' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TValueOfClassConstant.php',
+ 'Psalm\\Type\\Atomic\\TVoid' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Atomic/TVoid.php',
+ 'Psalm\\Type\\NodeVisitor' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/NodeVisitor.php',
+ 'Psalm\\Type\\Reconciler' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Reconciler.php',
+ 'Psalm\\Type\\TaintKind' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/TaintKind.php',
+ 'Psalm\\Type\\TaintKindGroup' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/TaintKindGroup.php',
+ 'Psalm\\Type\\TypeNode' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/TypeNode.php',
+ 'Psalm\\Type\\Union' => __DIR__ . '/..' . '/vimeo/psalm/src/Psalm/Type/Union.php',
+ 'Psr\\Container\\ContainerExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerExceptionInterface.php',
+ 'Psr\\Container\\ContainerInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerInterface.php',
+ 'Psr\\Container\\NotFoundExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/NotFoundExceptionInterface.php',
+ 'Psr\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/psr/event-dispatcher/src/EventDispatcherInterface.php',
+ 'Psr\\EventDispatcher\\ListenerProviderInterface' => __DIR__ . '/..' . '/psr/event-dispatcher/src/ListenerProviderInterface.php',
+ 'Psr\\EventDispatcher\\StoppableEventInterface' => __DIR__ . '/..' . '/psr/event-dispatcher/src/StoppableEventInterface.php',
+ 'Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/AbstractLogger.php',
+ 'Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/Psr/Log/InvalidArgumentException.php',
+ 'Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/Psr/Log/LogLevel.php',
+ 'Psr\\Log\\LoggerAwareInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerAwareInterface.php',
+ 'Psr\\Log\\LoggerAwareTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerAwareTrait.php',
+ 'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerInterface.php',
+ 'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerTrait.php',
+ 'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/NullLogger.php',
+ 'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/DummyTest.php',
+ 'Psr\\Log\\Test\\LoggerInterfaceTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
+ 'Psr\\Log\\Test\\TestLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/TestLogger.php',
+ 'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php',
+ 'SebastianBergmann\\Diff\\ConfigurationException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/ConfigurationException.php',
+ 'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php',
+ 'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php',
+ 'SebastianBergmann\\Diff\\Exception' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/Exception.php',
+ 'SebastianBergmann\\Diff\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
+ 'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php',
+ 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
+ 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
+ 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
+ 'SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php',
+ 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
+ 'SessionUpdateTimestampHandlerInterface' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php',
+ 'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
+ 'Symfony\\Component\\Console\\Application' => __DIR__ . '/..' . '/symfony/console/Application.php',
+ 'Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => __DIR__ . '/..' . '/symfony/console/CommandLoader/CommandLoaderInterface.php',
+ 'Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/ContainerCommandLoader.php',
+ 'Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/FactoryCommandLoader.php',
+ 'Symfony\\Component\\Console\\Command\\Command' => __DIR__ . '/..' . '/symfony/console/Command/Command.php',
+ 'Symfony\\Component\\Console\\Command\\HelpCommand' => __DIR__ . '/..' . '/symfony/console/Command/HelpCommand.php',
+ 'Symfony\\Component\\Console\\Command\\ListCommand' => __DIR__ . '/..' . '/symfony/console/Command/ListCommand.php',
+ 'Symfony\\Component\\Console\\Command\\LockableTrait' => __DIR__ . '/..' . '/symfony/console/Command/LockableTrait.php',
+ 'Symfony\\Component\\Console\\ConsoleEvents' => __DIR__ . '/..' . '/symfony/console/ConsoleEvents.php',
+ 'Symfony\\Component\\Console\\Cursor' => __DIR__ . '/..' . '/symfony/console/Cursor.php',
+ 'Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => __DIR__ . '/..' . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php',
+ 'Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => __DIR__ . '/..' . '/symfony/console/Descriptor/ApplicationDescription.php',
+ 'Symfony\\Component\\Console\\Descriptor\\Descriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/Descriptor.php',
+ 'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => __DIR__ . '/..' . '/symfony/console/Descriptor/DescriptorInterface.php',
+ 'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/JsonDescriptor.php',
+ 'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/MarkdownDescriptor.php',
+ 'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/TextDescriptor.php',
+ 'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/XmlDescriptor.php',
+ 'Symfony\\Component\\Console\\EventListener\\ErrorListener' => __DIR__ . '/..' . '/symfony/console/EventListener/ErrorListener.php',
+ 'Symfony\\Component\\Console\\Event\\ConsoleCommandEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleCommandEvent.php',
+ 'Symfony\\Component\\Console\\Event\\ConsoleErrorEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleErrorEvent.php',
+ 'Symfony\\Component\\Console\\Event\\ConsoleEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleEvent.php',
+ 'Symfony\\Component\\Console\\Event\\ConsoleTerminateEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleTerminateEvent.php',
+ 'Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/CommandNotFoundException.php',
+ 'Symfony\\Component\\Console\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/console/Exception/ExceptionInterface.php',
+ 'Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidArgumentException.php',
+ 'Symfony\\Component\\Console\\Exception\\InvalidOptionException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidOptionException.php',
+ 'Symfony\\Component\\Console\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/console/Exception/LogicException.php',
+ 'Symfony\\Component\\Console\\Exception\\MissingInputException' => __DIR__ . '/..' . '/symfony/console/Exception/MissingInputException.php',
+ 'Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/NamespaceNotFoundException.php',
+ 'Symfony\\Component\\Console\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/console/Exception/RuntimeException.php',
+ 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatter.php',
+ 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatterStyle.php',
+ 'Symfony\\Component\\Console\\Formatter\\OutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatter.php',
+ 'Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterInterface.php',
+ 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyle.php',
+ 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleInterface.php',
+ 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleStack.php',
+ 'Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php',
+ 'Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DebugFormatterHelper.php',
+ 'Symfony\\Component\\Console\\Helper\\DescriptorHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DescriptorHelper.php',
+ 'Symfony\\Component\\Console\\Helper\\Dumper' => __DIR__ . '/..' . '/symfony/console/Helper/Dumper.php',
+ 'Symfony\\Component\\Console\\Helper\\FormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/FormatterHelper.php',
+ 'Symfony\\Component\\Console\\Helper\\Helper' => __DIR__ . '/..' . '/symfony/console/Helper/Helper.php',
+ 'Symfony\\Component\\Console\\Helper\\HelperInterface' => __DIR__ . '/..' . '/symfony/console/Helper/HelperInterface.php',
+ 'Symfony\\Component\\Console\\Helper\\HelperSet' => __DIR__ . '/..' . '/symfony/console/Helper/HelperSet.php',
+ 'Symfony\\Component\\Console\\Helper\\InputAwareHelper' => __DIR__ . '/..' . '/symfony/console/Helper/InputAwareHelper.php',
+ 'Symfony\\Component\\Console\\Helper\\ProcessHelper' => __DIR__ . '/..' . '/symfony/console/Helper/ProcessHelper.php',
+ 'Symfony\\Component\\Console\\Helper\\ProgressBar' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressBar.php',
+ 'Symfony\\Component\\Console\\Helper\\ProgressIndicator' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressIndicator.php',
+ 'Symfony\\Component\\Console\\Helper\\QuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/QuestionHelper.php',
+ 'Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/SymfonyQuestionHelper.php',
+ 'Symfony\\Component\\Console\\Helper\\Table' => __DIR__ . '/..' . '/symfony/console/Helper/Table.php',
+ 'Symfony\\Component\\Console\\Helper\\TableCell' => __DIR__ . '/..' . '/symfony/console/Helper/TableCell.php',
+ 'Symfony\\Component\\Console\\Helper\\TableRows' => __DIR__ . '/..' . '/symfony/console/Helper/TableRows.php',
+ 'Symfony\\Component\\Console\\Helper\\TableSeparator' => __DIR__ . '/..' . '/symfony/console/Helper/TableSeparator.php',
+ 'Symfony\\Component\\Console\\Helper\\TableStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableStyle.php',
+ 'Symfony\\Component\\Console\\Input\\ArgvInput' => __DIR__ . '/..' . '/symfony/console/Input/ArgvInput.php',
+ 'Symfony\\Component\\Console\\Input\\ArrayInput' => __DIR__ . '/..' . '/symfony/console/Input/ArrayInput.php',
+ 'Symfony\\Component\\Console\\Input\\Input' => __DIR__ . '/..' . '/symfony/console/Input/Input.php',
+ 'Symfony\\Component\\Console\\Input\\InputArgument' => __DIR__ . '/..' . '/symfony/console/Input/InputArgument.php',
+ 'Symfony\\Component\\Console\\Input\\InputAwareInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputAwareInterface.php',
+ 'Symfony\\Component\\Console\\Input\\InputDefinition' => __DIR__ . '/..' . '/symfony/console/Input/InputDefinition.php',
+ 'Symfony\\Component\\Console\\Input\\InputInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputInterface.php',
+ 'Symfony\\Component\\Console\\Input\\InputOption' => __DIR__ . '/..' . '/symfony/console/Input/InputOption.php',
+ 'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => __DIR__ . '/..' . '/symfony/console/Input/StreamableInputInterface.php',
+ 'Symfony\\Component\\Console\\Input\\StringInput' => __DIR__ . '/..' . '/symfony/console/Input/StringInput.php',
+ 'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => __DIR__ . '/..' . '/symfony/console/Logger/ConsoleLogger.php',
+ 'Symfony\\Component\\Console\\Output\\BufferedOutput' => __DIR__ . '/..' . '/symfony/console/Output/BufferedOutput.php',
+ 'Symfony\\Component\\Console\\Output\\ConsoleOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutput.php',
+ 'Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutputInterface.php',
+ 'Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleSectionOutput.php',
+ 'Symfony\\Component\\Console\\Output\\NullOutput' => __DIR__ . '/..' . '/symfony/console/Output/NullOutput.php',
+ 'Symfony\\Component\\Console\\Output\\Output' => __DIR__ . '/..' . '/symfony/console/Output/Output.php',
+ 'Symfony\\Component\\Console\\Output\\OutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/OutputInterface.php',
+ 'Symfony\\Component\\Console\\Output\\StreamOutput' => __DIR__ . '/..' . '/symfony/console/Output/StreamOutput.php',
+ 'Symfony\\Component\\Console\\Question\\ChoiceQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ChoiceQuestion.php',
+ 'Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ConfirmationQuestion.php',
+ 'Symfony\\Component\\Console\\Question\\Question' => __DIR__ . '/..' . '/symfony/console/Question/Question.php',
+ 'Symfony\\Component\\Console\\SingleCommandApplication' => __DIR__ . '/..' . '/symfony/console/SingleCommandApplication.php',
+ 'Symfony\\Component\\Console\\Style\\OutputStyle' => __DIR__ . '/..' . '/symfony/console/Style/OutputStyle.php',
+ 'Symfony\\Component\\Console\\Style\\StyleInterface' => __DIR__ . '/..' . '/symfony/console/Style/StyleInterface.php',
+ 'Symfony\\Component\\Console\\Style\\SymfonyStyle' => __DIR__ . '/..' . '/symfony/console/Style/SymfonyStyle.php',
+ 'Symfony\\Component\\Console\\Terminal' => __DIR__ . '/..' . '/symfony/console/Terminal.php',
+ 'Symfony\\Component\\Console\\Tester\\ApplicationTester' => __DIR__ . '/..' . '/symfony/console/Tester/ApplicationTester.php',
+ 'Symfony\\Component\\Console\\Tester\\CommandTester' => __DIR__ . '/..' . '/symfony/console/Tester/CommandTester.php',
+ 'Symfony\\Component\\Console\\Tester\\TesterTrait' => __DIR__ . '/..' . '/symfony/console/Tester/TesterTrait.php',
+ 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php',
+ 'Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener' => __DIR__ . '/..' . '/symfony/event-dispatcher/Debug/WrappedListener.php',
+ 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\AddEventAliasesPass' => __DIR__ . '/..' . '/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php',
+ 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\RegisterListenersPass' => __DIR__ . '/..' . '/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php',
+ 'Symfony\\Component\\EventDispatcher\\EventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventDispatcher.php',
+ 'Symfony\\Component\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventDispatcherInterface.php',
+ 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventSubscriberInterface.php',
+ 'Symfony\\Component\\EventDispatcher\\GenericEvent' => __DIR__ . '/..' . '/symfony/event-dispatcher/GenericEvent.php',
+ 'Symfony\\Component\\EventDispatcher\\ImmutableEventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/ImmutableEventDispatcher.php',
+ 'Symfony\\Component\\EventDispatcher\\LegacyEventDispatcherProxy' => __DIR__ . '/..' . '/symfony/event-dispatcher/LegacyEventDispatcherProxy.php',
+ 'Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/ExceptionInterface.php',
+ 'Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/FileNotFoundException.php',
+ 'Symfony\\Component\\Filesystem\\Exception\\IOException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOException.php',
+ 'Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOExceptionInterface.php',
+ 'Symfony\\Component\\Filesystem\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/InvalidArgumentException.php',
+ 'Symfony\\Component\\Filesystem\\Filesystem' => __DIR__ . '/..' . '/symfony/filesystem/Filesystem.php',
+ 'Symfony\\Component\\Finder\\Comparator\\Comparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/Comparator.php',
+ 'Symfony\\Component\\Finder\\Comparator\\DateComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/DateComparator.php',
+ 'Symfony\\Component\\Finder\\Comparator\\NumberComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/NumberComparator.php',
+ 'Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => __DIR__ . '/..' . '/symfony/finder/Exception/AccessDeniedException.php',
+ 'Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => __DIR__ . '/..' . '/symfony/finder/Exception/DirectoryNotFoundException.php',
+ 'Symfony\\Component\\Finder\\Finder' => __DIR__ . '/..' . '/symfony/finder/Finder.php',
+ 'Symfony\\Component\\Finder\\Gitignore' => __DIR__ . '/..' . '/symfony/finder/Gitignore.php',
+ 'Symfony\\Component\\Finder\\Glob' => __DIR__ . '/..' . '/symfony/finder/Glob.php',
+ 'Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/CustomFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DateRangeFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DepthRangeFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FileTypeFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilecontentFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilenameFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/PathFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SizeRangeFilterIterator.php',
+ 'Symfony\\Component\\Finder\\Iterator\\SortableIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SortableIterator.php',
+ 'Symfony\\Component\\Finder\\SplFileInfo' => __DIR__ . '/..' . '/symfony/finder/SplFileInfo.php',
+ 'Symfony\\Component\\OptionsResolver\\Debug\\OptionsResolverIntrospector' => __DIR__ . '/..' . '/symfony/options-resolver/Debug/OptionsResolverIntrospector.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\AccessException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/AccessException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/ExceptionInterface.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/InvalidArgumentException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidOptionsException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/InvalidOptionsException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\MissingOptionsException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/MissingOptionsException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\NoConfigurationException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/NoConfigurationException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\NoSuchOptionException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/NoSuchOptionException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\OptionDefinitionException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/OptionDefinitionException.php',
+ 'Symfony\\Component\\OptionsResolver\\Exception\\UndefinedOptionsException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/UndefinedOptionsException.php',
+ 'Symfony\\Component\\OptionsResolver\\OptionConfigurator' => __DIR__ . '/..' . '/symfony/options-resolver/OptionConfigurator.php',
+ 'Symfony\\Component\\OptionsResolver\\Options' => __DIR__ . '/..' . '/symfony/options-resolver/Options.php',
+ 'Symfony\\Component\\OptionsResolver\\OptionsResolver' => __DIR__ . '/..' . '/symfony/options-resolver/OptionsResolver.php',
+ 'Symfony\\Component\\Process\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/process/Exception/ExceptionInterface.php',
+ 'Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/process/Exception/InvalidArgumentException.php',
+ 'Symfony\\Component\\Process\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/process/Exception/LogicException.php',
+ 'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessFailedException.php',
+ 'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessSignaledException.php',
+ 'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessTimedOutException.php',
+ 'Symfony\\Component\\Process\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/process/Exception/RuntimeException.php',
+ 'Symfony\\Component\\Process\\ExecutableFinder' => __DIR__ . '/..' . '/symfony/process/ExecutableFinder.php',
+ 'Symfony\\Component\\Process\\InputStream' => __DIR__ . '/..' . '/symfony/process/InputStream.php',
+ 'Symfony\\Component\\Process\\PhpExecutableFinder' => __DIR__ . '/..' . '/symfony/process/PhpExecutableFinder.php',
+ 'Symfony\\Component\\Process\\PhpProcess' => __DIR__ . '/..' . '/symfony/process/PhpProcess.php',
+ 'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/AbstractPipes.php',
+ 'Symfony\\Component\\Process\\Pipes\\PipesInterface' => __DIR__ . '/..' . '/symfony/process/Pipes/PipesInterface.php',
+ 'Symfony\\Component\\Process\\Pipes\\UnixPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/UnixPipes.php',
+ 'Symfony\\Component\\Process\\Pipes\\WindowsPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/WindowsPipes.php',
+ 'Symfony\\Component\\Process\\Process' => __DIR__ . '/..' . '/symfony/process/Process.php',
+ 'Symfony\\Component\\Process\\ProcessUtils' => __DIR__ . '/..' . '/symfony/process/ProcessUtils.php',
+ 'Symfony\\Component\\Stopwatch\\Section' => __DIR__ . '/..' . '/symfony/stopwatch/Section.php',
+ 'Symfony\\Component\\Stopwatch\\Stopwatch' => __DIR__ . '/..' . '/symfony/stopwatch/Stopwatch.php',
+ 'Symfony\\Component\\Stopwatch\\StopwatchEvent' => __DIR__ . '/..' . '/symfony/stopwatch/StopwatchEvent.php',
+ 'Symfony\\Component\\Stopwatch\\StopwatchPeriod' => __DIR__ . '/..' . '/symfony/stopwatch/StopwatchPeriod.php',
+ 'Symfony\\Component\\String\\AbstractString' => __DIR__ . '/..' . '/symfony/string/AbstractString.php',
+ 'Symfony\\Component\\String\\AbstractUnicodeString' => __DIR__ . '/..' . '/symfony/string/AbstractUnicodeString.php',
+ 'Symfony\\Component\\String\\ByteString' => __DIR__ . '/..' . '/symfony/string/ByteString.php',
+ 'Symfony\\Component\\String\\CodePointString' => __DIR__ . '/..' . '/symfony/string/CodePointString.php',
+ 'Symfony\\Component\\String\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/string/Exception/ExceptionInterface.php',
+ 'Symfony\\Component\\String\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/string/Exception/InvalidArgumentException.php',
+ 'Symfony\\Component\\String\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/string/Exception/RuntimeException.php',
+ 'Symfony\\Component\\String\\Inflector\\EnglishInflector' => __DIR__ . '/..' . '/symfony/string/Inflector/EnglishInflector.php',
+ 'Symfony\\Component\\String\\Inflector\\InflectorInterface' => __DIR__ . '/..' . '/symfony/string/Inflector/InflectorInterface.php',
+ 'Symfony\\Component\\String\\LazyString' => __DIR__ . '/..' . '/symfony/string/LazyString.php',
+ 'Symfony\\Component\\String\\Slugger\\AsciiSlugger' => __DIR__ . '/..' . '/symfony/string/Slugger/AsciiSlugger.php',
+ 'Symfony\\Component\\String\\Slugger\\SluggerInterface' => __DIR__ . '/..' . '/symfony/string/Slugger/SluggerInterface.php',
+ 'Symfony\\Component\\String\\UnicodeString' => __DIR__ . '/..' . '/symfony/string/UnicodeString.php',
+ 'Symfony\\Contracts\\EventDispatcher\\Event' => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts/Event.php',
+ 'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts/EventDispatcherInterface.php',
+ 'Symfony\\Contracts\\Service\\Attribute\\Required' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/Required.php',
+ 'Symfony\\Contracts\\Service\\ResetInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ResetInterface.php',
+ 'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceLocatorTrait.php',
+ 'Symfony\\Contracts\\Service\\ServiceProviderInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceProviderInterface.php',
+ 'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberInterface.php',
+ 'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberTrait.php',
+ 'Symfony\\Contracts\\Service\\Test\\ServiceLocatorTest' => __DIR__ . '/..' . '/symfony/service-contracts/Test/ServiceLocatorTest.php',
+ 'Symfony\\Polyfill\\Ctype\\Ctype' => __DIR__ . '/..' . '/symfony/polyfill-ctype/Ctype.php',
+ 'Symfony\\Polyfill\\Intl\\Grapheme\\Grapheme' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/Grapheme.php',
+ 'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Normalizer.php',
+ 'Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/Mbstring.php',
+ 'Symfony\\Polyfill\\Php70\\Php70' => __DIR__ . '/..' . '/symfony/polyfill-php70/Php70.php',
+ 'Symfony\\Polyfill\\Php72\\Php72' => __DIR__ . '/..' . '/symfony/polyfill-php72/Php72.php',
+ 'Symfony\\Polyfill\\Php73\\Php73' => __DIR__ . '/..' . '/symfony/polyfill-php73/Php73.php',
+ 'Symfony\\Polyfill\\Php80\\Php80' => __DIR__ . '/..' . '/symfony/polyfill-php80/Php80.php',
+ 'TypeError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
+ 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
+ 'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
+ 'Webmozart\\Assert\\Assert' => __DIR__ . '/..' . '/webmozart/assert/src/Assert.php',
+ 'Webmozart\\Assert\\Mixin' => __DIR__ . '/..' . '/webmozart/assert/src/Mixin.php',
+ 'Webmozart\\Glob\\Glob' => __DIR__ . '/..' . '/webmozart/glob/src/Glob.php',
+ 'Webmozart\\Glob\\Iterator\\GlobFilterIterator' => __DIR__ . '/..' . '/webmozart/glob/src/Iterator/GlobFilterIterator.php',
+ 'Webmozart\\Glob\\Iterator\\GlobIterator' => __DIR__ . '/..' . '/webmozart/glob/src/Iterator/GlobIterator.php',
+ 'Webmozart\\Glob\\Iterator\\RecursiveDirectoryIterator' => __DIR__ . '/..' . '/webmozart/glob/src/Iterator/RecursiveDirectoryIterator.php',
+ 'Webmozart\\Glob\\Iterator\\RegexFilterIterator' => __DIR__ . '/..' . '/webmozart/glob/src/Iterator/RegexFilterIterator.php',
+ 'Webmozart\\Glob\\Test\\TestUtil' => __DIR__ . '/..' . '/webmozart/glob/src/Test/TestUtil.php',
+ 'Webmozart\\PathUtil\\Path' => __DIR__ . '/..' . '/webmozart/path-util/src/Path.php',
+ 'Webmozart\\PathUtil\\Url' => __DIR__ . '/..' . '/webmozart/path-util/src/Url.php',
+ 'XdgBaseDir\\Xdg' => __DIR__ . '/..' . '/dnoegel/php-xdg-base-dir/src/Xdg.php',
+ 'phpDocumentor\\Reflection\\DocBlock' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock.php',
+ 'phpDocumentor\\Reflection\\DocBlockFactory' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlockFactory.php',
+ 'phpDocumentor\\Reflection\\DocBlockFactoryInterface' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlockFactoryInterface.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Description' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Description.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\DescriptionFactory' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/DescriptionFactory.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\ExampleFinder' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/ExampleFinder.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Serializer' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Serializer.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\StandardTagFactory' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tag' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tag.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\TagFactory' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/TagFactory.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Author' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Author.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\BaseTag' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/BaseTag.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Covers' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Covers.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Deprecated' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Deprecated.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Example' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Example.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Factory\\StaticMethod' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/StaticMethod.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Formatter' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Formatter\\AlignFormatter' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/AlignFormatter.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Formatter\\PassthroughFormatter' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/PassthroughFormatter.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Generic' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Generic.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\InvalidTag' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/InvalidTag.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Link' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Link.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Method' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Method.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Param' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Param.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Property' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Property.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\PropertyRead' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyRead.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\PropertyWrite' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyWrite.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Reference\\Fqsen' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Fqsen.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Reference\\Reference' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Reference.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Reference\\Url' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Url.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Return_' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\See' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/See.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Since' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Since.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Source' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Source.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\TagWithType' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/TagWithType.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Throws' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Throws.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Uses' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Uses.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Var_' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Var_.php',
+ 'phpDocumentor\\Reflection\\DocBlock\\Tags\\Version' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Version.php',
+ 'phpDocumentor\\Reflection\\Element' => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src/Element.php',
+ 'phpDocumentor\\Reflection\\Exception\\PcreException' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/Exception/PcreException.php',
+ 'phpDocumentor\\Reflection\\File' => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src/File.php',
+ 'phpDocumentor\\Reflection\\Fqsen' => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src/Fqsen.php',
+ 'phpDocumentor\\Reflection\\FqsenResolver' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/FqsenResolver.php',
+ 'phpDocumentor\\Reflection\\Location' => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src/Location.php',
+ 'phpDocumentor\\Reflection\\Project' => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src/Project.php',
+ 'phpDocumentor\\Reflection\\ProjectFactory' => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src/ProjectFactory.php',
+ 'phpDocumentor\\Reflection\\PseudoType' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/PseudoType.php',
+ 'phpDocumentor\\Reflection\\PseudoTypes\\False_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/PseudoTypes/False_.php',
+ 'phpDocumentor\\Reflection\\PseudoTypes\\True_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/PseudoTypes/True_.php',
+ 'phpDocumentor\\Reflection\\Type' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Type.php',
+ 'phpDocumentor\\Reflection\\TypeResolver' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/TypeResolver.php',
+ 'phpDocumentor\\Reflection\\Types\\AbstractList' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/AbstractList.php',
+ 'phpDocumentor\\Reflection\\Types\\AggregatedType' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/AggregatedType.php',
+ 'phpDocumentor\\Reflection\\Types\\Array_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Array_.php',
+ 'phpDocumentor\\Reflection\\Types\\Boolean' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Boolean.php',
+ 'phpDocumentor\\Reflection\\Types\\Callable_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Callable_.php',
+ 'phpDocumentor\\Reflection\\Types\\ClassString' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/ClassString.php',
+ 'phpDocumentor\\Reflection\\Types\\Collection' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Collection.php',
+ 'phpDocumentor\\Reflection\\Types\\Compound' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Compound.php',
+ 'phpDocumentor\\Reflection\\Types\\Context' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Context.php',
+ 'phpDocumentor\\Reflection\\Types\\ContextFactory' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/ContextFactory.php',
+ 'phpDocumentor\\Reflection\\Types\\Expression' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Expression.php',
+ 'phpDocumentor\\Reflection\\Types\\Float_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Float_.php',
+ 'phpDocumentor\\Reflection\\Types\\Integer' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Integer.php',
+ 'phpDocumentor\\Reflection\\Types\\Intersection' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Intersection.php',
+ 'phpDocumentor\\Reflection\\Types\\Iterable_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Iterable_.php',
+ 'phpDocumentor\\Reflection\\Types\\Mixed_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Mixed_.php',
+ 'phpDocumentor\\Reflection\\Types\\Null_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Null_.php',
+ 'phpDocumentor\\Reflection\\Types\\Nullable' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Nullable.php',
+ 'phpDocumentor\\Reflection\\Types\\Object_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Object_.php',
+ 'phpDocumentor\\Reflection\\Types\\Parent_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Parent_.php',
+ 'phpDocumentor\\Reflection\\Types\\Resource_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Resource_.php',
+ 'phpDocumentor\\Reflection\\Types\\Scalar' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Scalar.php',
+ 'phpDocumentor\\Reflection\\Types\\Self_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Self_.php',
+ 'phpDocumentor\\Reflection\\Types\\Static_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Static_.php',
+ 'phpDocumentor\\Reflection\\Types\\String_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/String_.php',
+ 'phpDocumentor\\Reflection\\Types\\This' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/This.php',
+ 'phpDocumentor\\Reflection\\Types\\Void_' => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src/Types/Void_.php',
+ 'phpDocumentor\\Reflection\\Utils' => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src/Utils.php',
);
public static function getInitializer(ClassLoader $loader)
@@ -1425,6 +3599,7 @@ public static function getInitializer(ClassLoader $loader)
$loader->prefixLengthsPsr4 = ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::$prefixDirsPsr4;
$loader->fallbackDirsPsr4 = ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::$fallbackDirsPsr4;
+ $loader->prefixesPsr0 = ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::$prefixesPsr0;
$loader->classMap = ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::$classMap;
}, null, ClassLoader::class);
diff --git a/lib/composer/composer/installed.json b/lib/composer/composer/installed.json
index fe51488c7066f..738c1d4cb5b8c 100644
--- a/lib/composer/composer/installed.json
+++ b/lib/composer/composer/installed.json
@@ -1 +1,3145 @@
-[]
+{
+ "packages": [
+ {
+ "name": "amphp/amp",
+ "version": "v2.5.0",
+ "version_normalized": "2.5.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/amp.git",
+ "reference": "f220a51458bf4dd0dedebb171ac3457813c72bbc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/amp/zipball/f220a51458bf4dd0dedebb171ac3457813c72bbc",
+ "reference": "f220a51458bf4dd0dedebb171ac3457813c72bbc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "dev-master",
+ "amphp/phpunit-util": "^1",
+ "ext-json": "*",
+ "jetbrains/phpstorm-stubs": "^2019.3",
+ "phpunit/phpunit": "^6.0.9 | ^7",
+ "psalm/phar": "^3.11@dev",
+ "react/promise": "^2"
+ },
+ "time": "2020-07-14T21:47:18+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Amp\\": "lib"
+ },
+ "files": [
+ "lib/functions.php",
+ "lib/Internal/functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Daniel Lowrey",
+ "email": "rdlowrey@php.net"
+ },
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Bob Weinand",
+ "email": "bobwei9@hotmail.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "description": "A non-blocking concurrency framework for PHP applications.",
+ "homepage": "http://amphp.org/amp",
+ "keywords": [
+ "async",
+ "asynchronous",
+ "awaitable",
+ "concurrency",
+ "event",
+ "event-loop",
+ "future",
+ "non-blocking",
+ "promise"
+ ],
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "install-path": "../amphp/amp"
+ },
+ {
+ "name": "amphp/byte-stream",
+ "version": "v1.8.0",
+ "version_normalized": "1.8.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/byte-stream.git",
+ "reference": "f0c20cf598a958ba2aa8c6e5a71c697d652c7088"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/byte-stream/zipball/f0c20cf598a958ba2aa8c6e5a71c697d652c7088",
+ "reference": "f0c20cf598a958ba2aa8c6e5a71c697d652c7088",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^2",
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "dev-master",
+ "amphp/phpunit-util": "^1.4",
+ "friendsofphp/php-cs-fixer": "^2.3",
+ "jetbrains/phpstorm-stubs": "^2019.3",
+ "phpunit/phpunit": "^6 || ^7 || ^8",
+ "psalm/phar": "^3.11.4"
+ },
+ "time": "2020-06-29T18:35:05+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Amp\\ByteStream\\": "lib"
+ },
+ "files": [
+ "lib/functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "description": "A stream abstraction to make working with non-blocking I/O simple.",
+ "homepage": "http://amphp.org/byte-stream",
+ "keywords": [
+ "amp",
+ "amphp",
+ "async",
+ "io",
+ "non-blocking",
+ "stream"
+ ],
+ "install-path": "../amphp/byte-stream"
+ },
+ {
+ "name": "composer/package-versions-deprecated",
+ "version": "1.11.99",
+ "version_normalized": "1.11.99.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/package-versions-deprecated.git",
+ "reference": "c8c9aa8a14cc3d3bec86d0a8c3fa52ea79936855"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/c8c9aa8a14cc3d3bec86d0a8c3fa52ea79936855",
+ "reference": "c8c9aa8a14cc3d3bec86d0a8c3fa52ea79936855",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.1.0 || ^2.0",
+ "php": "^7 || ^8"
+ },
+ "replace": {
+ "ocramius/package-versions": "1.11.99"
+ },
+ "require-dev": {
+ "composer/composer": "^1.9.3 || ^2.0@dev",
+ "ext-zip": "^1.13",
+ "phpunit/phpunit": "^6.5 || ^7"
+ },
+ "time": "2020-08-25T05:50:16+00:00",
+ "type": "composer-plugin",
+ "extra": {
+ "class": "PackageVersions\\Installer",
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "PackageVersions\\": "src/PackageVersions"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be"
+ }
+ ],
+ "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "./package-versions-deprecated"
+ },
+ {
+ "name": "composer/semver",
+ "version": "1.7.1",
+ "version_normalized": "1.7.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/semver.git",
+ "reference": "38276325bd896f90dfcfe30029aa5db40df387a7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/semver/zipball/38276325bd896f90dfcfe30029aa5db40df387a7",
+ "reference": "38276325bd896f90dfcfe30029aa5db40df387a7",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.5 || ^5.0.5"
+ },
+ "time": "2020-09-27T13:13:07+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Composer\\Semver\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
+ "keywords": [
+ "semantic",
+ "semver",
+ "validation",
+ "versioning"
+ ],
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "./semver"
+ },
+ {
+ "name": "composer/xdebug-handler",
+ "version": "1.4.3",
+ "version_normalized": "1.4.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/xdebug-handler.git",
+ "reference": "ebd27a9866ae8254e873866f795491f02418c5a5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ebd27a9866ae8254e873866f795491f02418c5a5",
+ "reference": "ebd27a9866ae8254e873866f795491f02418c5a5",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0",
+ "psr/log": "^1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8"
+ },
+ "time": "2020-08-19T10:27:58+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Composer\\XdebugHandler\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "John Stevenson",
+ "email": "john-stevenson@blueyonder.co.uk"
+ }
+ ],
+ "description": "Restarts a process without Xdebug.",
+ "keywords": [
+ "Xdebug",
+ "performance"
+ ],
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "./xdebug-handler"
+ },
+ {
+ "name": "dnoegel/php-xdg-base-dir",
+ "version": "v0.1.1",
+ "version_normalized": "0.1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/dnoegel/php-xdg-base-dir.git",
+ "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
+ "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35"
+ },
+ "time": "2019-12-04T15:06:13+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "XdgBaseDir\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "implementation of xdg base directory specification for php",
+ "install-path": "../dnoegel/php-xdg-base-dir"
+ },
+ {
+ "name": "doctrine/annotations",
+ "version": "1.10.3",
+ "version_normalized": "1.10.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/annotations.git",
+ "reference": "5db60a4969eba0e0c197a19c077780aadbc43c5d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/5db60a4969eba0e0c197a19c077780aadbc43c5d",
+ "reference": "5db60a4969eba0e0c197a19c077780aadbc43c5d",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/lexer": "1.*",
+ "ext-tokenizer": "*",
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/cache": "1.*",
+ "phpunit/phpunit": "^7.5"
+ },
+ "time": "2020-05-25T17:24:27+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.9.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Docblock Annotations Parser",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "parser"
+ ],
+ "install-path": "../doctrine/annotations"
+ },
+ {
+ "name": "doctrine/lexer",
+ "version": "1.2.1",
+ "version_normalized": "1.2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/lexer.git",
+ "reference": "e864bbf5904cb8f5bb334f99209b48018522f042"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042",
+ "reference": "e864bbf5904cb8f5bb334f99209b48018522f042",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "phpstan/phpstan": "^0.11.8",
+ "phpunit/phpunit": "^8.2"
+ },
+ "time": "2020-05-25T17:44:05+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
+ "homepage": "https://www.doctrine-project.org/projects/lexer.html",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "lexer",
+ "parser",
+ "php"
+ ],
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../doctrine/lexer"
+ },
+ {
+ "name": "felixfbecker/advanced-json-rpc",
+ "version": "v3.1.1",
+ "version_normalized": "3.1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git",
+ "reference": "0ed363f8de17d284d479ec813c9ad3f6834b5c40"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/0ed363f8de17d284d479ec813c9ad3f6834b5c40",
+ "reference": "0ed363f8de17d284d479ec813c9ad3f6834b5c40",
+ "shasum": ""
+ },
+ "require": {
+ "netresearch/jsonmapper": "^1.0 || ^2.0",
+ "php": ">=7.0",
+ "phpdocumentor/reflection-docblock": "^4.0.0 || ^5.0.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0.0"
+ },
+ "time": "2020-03-11T15:21:41+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "AdvancedJsonRpc\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "ISC"
+ ],
+ "authors": [
+ {
+ "name": "Felix Becker",
+ "email": "felix.b@outlook.com"
+ }
+ ],
+ "description": "A more advanced JSONRPC implementation",
+ "install-path": "../felixfbecker/advanced-json-rpc"
+ },
+ {
+ "name": "felixfbecker/language-server-protocol",
+ "version": "v1.4.0",
+ "version_normalized": "1.4.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/felixfbecker/php-language-server-protocol.git",
+ "reference": "378801f6139bb74ac215d81cca1272af61df9a9f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/378801f6139bb74ac215d81cca1272af61df9a9f",
+ "reference": "378801f6139bb74ac215d81cca1272af61df9a9f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "*",
+ "phpunit/phpunit": "^6.3",
+ "squizlabs/php_codesniffer": "^3.1"
+ },
+ "time": "2019-06-23T21:03:50+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "LanguageServerProtocol\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "ISC"
+ ],
+ "authors": [
+ {
+ "name": "Felix Becker",
+ "email": "felix.b@outlook.com"
+ }
+ ],
+ "description": "PHP classes for the Language Server Protocol",
+ "keywords": [
+ "language",
+ "microsoft",
+ "php",
+ "server"
+ ],
+ "install-path": "../felixfbecker/language-server-protocol"
+ },
+ {
+ "name": "friendsofphp/php-cs-fixer",
+ "version": "v2.16.3",
+ "version_normalized": "2.16.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
+ "reference": "83baf823a33a1cbd5416c8626935cf3f843c10b0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/83baf823a33a1cbd5416c8626935cf3f843c10b0",
+ "reference": "83baf823a33a1cbd5416c8626935cf3f843c10b0",
+ "shasum": ""
+ },
+ "require": {
+ "composer/semver": "^1.4",
+ "composer/xdebug-handler": "^1.2",
+ "doctrine/annotations": "^1.2",
+ "ext-json": "*",
+ "ext-tokenizer": "*",
+ "php": "^5.6 || ^7.0",
+ "php-cs-fixer/diff": "^1.3",
+ "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0",
+ "symfony/event-dispatcher": "^3.0 || ^4.0 || ^5.0",
+ "symfony/filesystem": "^3.0 || ^4.0 || ^5.0",
+ "symfony/finder": "^3.0 || ^4.0 || ^5.0",
+ "symfony/options-resolver": "^3.0 || ^4.0 || ^5.0",
+ "symfony/polyfill-php70": "^1.0",
+ "symfony/polyfill-php72": "^1.4",
+ "symfony/process": "^3.0 || ^4.0 || ^5.0",
+ "symfony/stopwatch": "^3.0 || ^4.0 || ^5.0"
+ },
+ "require-dev": {
+ "johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0",
+ "justinrainbow/json-schema": "^5.0",
+ "keradus/cli-executor": "^1.2",
+ "mikey179/vfsstream": "^1.6",
+ "php-coveralls/php-coveralls": "^2.1",
+ "php-cs-fixer/accessible-object": "^1.0",
+ "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.1",
+ "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.1",
+ "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.1",
+ "phpunitgoodpractices/traits": "^1.8",
+ "symfony/phpunit-bridge": "^4.3 || ^5.0",
+ "symfony/yaml": "^3.0 || ^4.0 || ^5.0"
+ },
+ "suggest": {
+ "ext-dom": "For handling output formats in XML",
+ "ext-mbstring": "For handling non-UTF8 characters in cache signature.",
+ "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.",
+ "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.",
+ "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible."
+ },
+ "time": "2020-04-15T18:51:10+00:00",
+ "bin": [
+ "php-cs-fixer"
+ ],
+ "type": "application",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "PhpCsFixer\\": "src/"
+ },
+ "classmap": [
+ "tests/Test/AbstractFixerTestCase.php",
+ "tests/Test/AbstractIntegrationCaseFactory.php",
+ "tests/Test/AbstractIntegrationTestCase.php",
+ "tests/Test/Assert/AssertTokensTrait.php",
+ "tests/Test/IntegrationCase.php",
+ "tests/Test/IntegrationCaseFactory.php",
+ "tests/Test/IntegrationCaseFactoryInterface.php",
+ "tests/Test/InternalIntegrationCaseFactory.php",
+ "tests/Test/IsIdenticalConstraint.php",
+ "tests/TestCase.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Dariusz Rumiński",
+ "email": "dariusz.ruminski@gmail.com"
+ }
+ ],
+ "description": "A tool to automatically fix PHP code style",
+ "funding": [
+ {
+ "url": "https://github.com/keradus",
+ "type": "github"
+ }
+ ],
+ "install-path": "../friendsofphp/php-cs-fixer"
+ },
+ {
+ "name": "netresearch/jsonmapper",
+ "version": "v2.1.0",
+ "version_normalized": "2.1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/cweiske/jsonmapper.git",
+ "reference": "e0f1e33a71587aca81be5cffbb9746510e1fe04e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/e0f1e33a71587aca81be5cffbb9746510e1fe04e",
+ "reference": "e0f1e33a71587aca81be5cffbb9746510e1fe04e",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "ext-pcre": "*",
+ "ext-reflection": "*",
+ "ext-spl": "*",
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.8.35 || ~5.7 || ~6.4 || ~7.0",
+ "squizlabs/php_codesniffer": "~3.5"
+ },
+ "time": "2020-04-16T18:48:43+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "JsonMapper": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "OSL-3.0"
+ ],
+ "authors": [
+ {
+ "name": "Christian Weiske",
+ "email": "cweiske@cweiske.de",
+ "homepage": "http://github.com/cweiske/jsonmapper/",
+ "role": "Developer"
+ }
+ ],
+ "description": "Map nested JSON structures onto PHP classes",
+ "install-path": "../netresearch/jsonmapper"
+ },
+ {
+ "name": "nextcloud/coding-standard",
+ "version": "v0.3.0",
+ "version_normalized": "0.3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nextcloud/coding-standard.git",
+ "reference": "4f5cd012760f8293e19e602651a0ecaa265e4db9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nextcloud/coding-standard/zipball/4f5cd012760f8293e19e602651a0ecaa265e4db9",
+ "reference": "4f5cd012760f8293e19e602651a0ecaa265e4db9",
+ "shasum": ""
+ },
+ "require": {
+ "friendsofphp/php-cs-fixer": "^2.16",
+ "php": "^7.2"
+ },
+ "time": "2020-04-10T14:57:18+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Nextcloud\\CodingStandard\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christoph Wurst",
+ "email": "christoph@winzerhof-wurst.at"
+ }
+ ],
+ "description": "Nextcloud coding standards for the php cs fixer",
+ "install-path": "../nextcloud/coding-standard"
+ },
+ {
+ "name": "nikic/php-parser",
+ "version": "v4.10.2",
+ "version_normalized": "4.10.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "658f1be311a230e0907f5dfe0213742aff0596de"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/658f1be311a230e0907f5dfe0213742aff0596de",
+ "reference": "658f1be311a230e0907f5dfe0213742aff0596de",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "ircmaxell/php-yacc": "^0.0.7",
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+ },
+ "time": "2020-09-26T10:30:38+00:00",
+ "bin": [
+ "bin/php-parse"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.9-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
+ ],
+ "install-path": "../nikic/php-parser"
+ },
+ {
+ "name": "openlss/lib-array2xml",
+ "version": "1.0.0",
+ "version_normalized": "1.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nullivex/lib-array2xml.git",
+ "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/a91f18a8dfc69ffabe5f9b068bc39bb202c81d90",
+ "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "time": "2019-03-29T20:06:56+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "LSS": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Bryan Tong",
+ "email": "bryan@nullivex.com",
+ "homepage": "https://www.nullivex.com"
+ },
+ {
+ "name": "Tony Butler",
+ "email": "spudz76@gmail.com",
+ "homepage": "https://www.nullivex.com"
+ }
+ ],
+ "description": "Array2XML conversion library credit to lalit.org",
+ "homepage": "https://www.nullivex.com",
+ "keywords": [
+ "array",
+ "array conversion",
+ "xml",
+ "xml conversion"
+ ],
+ "install-path": "../openlss/lib-array2xml"
+ },
+ {
+ "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": "security@paragonie.com",
+ "homepage": "https://paragonie.com"
+ }
+ ],
+ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
+ "keywords": [
+ "csprng",
+ "polyfill",
+ "pseudorandom",
+ "random"
+ ],
+ "install-path": "../paragonie/random_compat"
+ },
+ {
+ "name": "php-cs-fixer/diff",
+ "version": "v1.3.0",
+ "version_normalized": "1.3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/PHP-CS-Fixer/diff.git",
+ "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/78bb099e9c16361126c86ce82ec4405ebab8e756",
+ "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7.23 || ^6.4.3",
+ "symfony/process": "^3.3"
+ },
+ "time": "2018-02-15T16:58:55+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "SpacePossum"
+ }
+ ],
+ "description": "sebastian/diff v2 backport support for PHP5.6",
+ "homepage": "https://github.com/PHP-CS-Fixer",
+ "keywords": [
+ "diff"
+ ],
+ "install-path": "../php-cs-fixer/diff"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.2.0",
+ "version_normalized": "2.2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "time": "2020-06-27T09:03:43+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "install-path": "../phpdocumentor/reflection-common"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "5.2.2",
+ "version_normalized": "5.2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.3",
+ "webmozart/assert": "^1.9.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.2"
+ },
+ "time": "2020-09-03T19:13:55+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "account@ijaap.nl"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "install-path": "../phpdocumentor/reflection-docblock"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.4.0",
+ "version_normalized": "1.4.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*"
+ },
+ "time": "2020-09-17T18:55:26+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "install-path": "../phpdocumentor/type-resolver"
+ },
+ {
+ "name": "psr/container",
+ "version": "1.0.0",
+ "version_normalized": "1.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "time": "2017-02-14T16:28:37+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "install-path": "../psr/container"
+ },
+ {
+ "name": "psr/event-dispatcher",
+ "version": "1.0.0",
+ "version_normalized": "1.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/event-dispatcher.git",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.0"
+ },
+ "time": "2019-01-08T18:20:26+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\EventDispatcher\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Standard interfaces for event handling.",
+ "keywords": [
+ "events",
+ "psr",
+ "psr-14"
+ ],
+ "install-path": "../psr/event-dispatcher"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.1.3",
+ "version_normalized": "1.1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "time": "2020-03-23T09:12:05+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "install-path": "../psr/log"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "4.0.3",
+ "version_normalized": "4.0.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "ffc949a1a2aae270ea064453d7535b82e4c32092"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ffc949a1a2aae270ea064453d7535b82e4c32092",
+ "reference": "ffc949a1a2aae270ea064453d7535b82e4c32092",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3",
+ "symfony/process": "^4.2 || ^5"
+ },
+ "time": "2020-09-28T05:32:55+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff",
+ "udiff",
+ "unidiff",
+ "unified diff"
+ ],
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../sebastian/diff"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v5.1.7",
+ "version_normalized": "5.1.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "ae789a8a2ad189ce7e8216942cdb9b77319f5eb8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/ae789a8a2ad189ce7e8216942cdb9b77319f5eb8",
+ "reference": "ae789a8a2ad189ce7e8216942cdb9b77319f5eb8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php73": "^1.8",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/service-contracts": "^1.1|^2",
+ "symfony/string": "^5.1"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<4.4",
+ "symfony/dotenv": "<5.1",
+ "symfony/event-dispatcher": "<4.4",
+ "symfony/lock": "<4.4",
+ "symfony/process": "<4.4"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/event-dispatcher": "^4.4|^5.0",
+ "symfony/lock": "^4.4|^5.0",
+ "symfony/process": "^4.4|^5.0",
+ "symfony/var-dumper": "^4.4|^5.0"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "time": "2020-10-07T15:23:00+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Console Component",
+ "homepage": "https://symfony.com",
+ "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"
+ }
+ ],
+ "install-path": "../symfony/console"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v2.1.2",
+ "version_normalized": "2.1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "dd99cb3a0aff6cadd2a8d7d7ed72c2161e218337"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/dd99cb3a0aff6cadd2a8d7d7ed72c2161e218337",
+ "reference": "dd99cb3a0aff6cadd2a8d7d7ed72c2161e218337",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "time": "2020-05-27T08:34:37+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "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"
+ }
+ ],
+ "install-path": "../symfony/deprecation-contracts"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v5.1.2",
+ "version_normalized": "5.1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "cc0d059e2e997e79ca34125a52f3e33de4424ac7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/cc0d059e2e997e79ca34125a52f3e33de4424ac7",
+ "reference": "cc0d059e2e997e79ca34125a52f3e33de4424ac7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/event-dispatcher-contracts": "^2",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<4.4"
+ },
+ "provide": {
+ "psr/event-dispatcher-implementation": "1.0",
+ "symfony/event-dispatcher-implementation": "2.0"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/expression-language": "^4.4|^5.0",
+ "symfony/http-foundation": "^4.4|^5.0",
+ "symfony/service-contracts": "^1.1|^2",
+ "symfony/stopwatch": "^4.4|^5.0"
+ },
+ "suggest": {
+ "symfony/dependency-injection": "",
+ "symfony/http-kernel": ""
+ },
+ "time": "2020-05-20T17:43:50+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony EventDispatcher Component",
+ "homepage": "https://symfony.com",
+ "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"
+ }
+ ],
+ "install-path": "../symfony/event-dispatcher"
+ },
+ {
+ "name": "symfony/event-dispatcher-contracts",
+ "version": "v2.1.2",
+ "version_normalized": "2.1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+ "reference": "405952c4e90941a17e52ef7489a2bd94870bb290"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/405952c4e90941a17e52ef7489a2bd94870bb290",
+ "reference": "405952c4e90941a17e52ef7489a2bd94870bb290",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/event-dispatcher": "^1"
+ },
+ "suggest": {
+ "symfony/event-dispatcher-implementation": ""
+ },
+ "time": "2020-05-20T17:43:50+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\EventDispatcher\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to dispatching event",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "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"
+ }
+ ],
+ "install-path": "../symfony/event-dispatcher-contracts"
+ },
+ {
+ "name": "symfony/filesystem",
+ "version": "v5.1.2",
+ "version_normalized": "5.1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "6e4320f06d5f2cce0d96530162491f4465179157"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/6e4320f06d5f2cce0d96530162491f4465179157",
+ "reference": "6e4320f06d5f2cce0d96530162491f4465179157",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "time": "2020-05-30T20:35:19+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Filesystem Component",
+ "homepage": "https://symfony.com",
+ "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"
+ }
+ ],
+ "install-path": "../symfony/filesystem"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v5.1.2",
+ "version_normalized": "5.1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "4298870062bfc667cb78d2b379be4bf5dec5f187"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/4298870062bfc667cb78d2b379be4bf5dec5f187",
+ "reference": "4298870062bfc667cb78d2b379be4bf5dec5f187",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5"
+ },
+ "time": "2020-05-20T17:43:50+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Finder Component",
+ "homepage": "https://symfony.com",
+ "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"
+ }
+ ],
+ "install-path": "../symfony/finder"
+ },
+ {
+ "name": "symfony/options-resolver",
+ "version": "v5.1.2",
+ "version_normalized": "5.1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/options-resolver.git",
+ "reference": "663f5dd5e14057d1954fe721f9709d35837f2447"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/663f5dd5e14057d1954fe721f9709d35837f2447",
+ "reference": "663f5dd5e14057d1954fe721f9709d35837f2447",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "time": "2020-05-23T13:08:13+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\OptionsResolver\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony OptionsResolver Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "config",
+ "configuration",
+ "options"
+ ],
+ "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"
+ }
+ ],
+ "install-path": "../symfony/options-resolver"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.18.1",
+ "version_normalized": "1.18.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "1c302646f6efc070cd46856e600e5e0684d6b454"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454",
+ "reference": "1c302646f6efc070cd46856e600e5e0684d6b454",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-ctype": "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\\Ctype\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "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"
+ }
+ ],
+ "install-path": "../symfony/polyfill-ctype"
+ },
+ {
+ "name": "symfony/polyfill-intl-grapheme",
+ "version": "v1.18.1",
+ "version_normalized": "1.18.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b740103edbdcc39602239ee8860f0f45a8eb9aa5",
+ "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5",
+ "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\\Grapheme\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's grapheme_* functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "grapheme",
+ "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"
+ }
+ ],
+ "install-path": "../symfony/polyfill-intl-grapheme"
+ },
+ {
+ "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": "p@tchwork.com"
+ },
+ {
+ "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"
+ }
+ ],
+ "install-path": "../symfony/polyfill-intl-normalizer"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.18.1",
+ "version_normalized": "1.18.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
+ "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-mbstring": "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\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "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"
+ }
+ ],
+ "install-path": "../symfony/polyfill-mbstring"
+ },
+ {
+ "name": "symfony/polyfill-php70",
+ "version": "v1.17.1",
+ "version_normalized": "1.17.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php70.git",
+ "reference": "471b096aede7025bace8eb356b9ac801aaba7e2d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/471b096aede7025bace8eb356b9ac801aaba7e2d",
+ "reference": "471b096aede7025bace8eb356b9ac801aaba7e2d",
+ "shasum": ""
+ },
+ "require": {
+ "paragonie/random_compat": "~1.0|~2.0|~9.99",
+ "php": ">=5.3.3"
+ },
+ "time": "2020-06-06T08:46:27+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.17-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": "p@tchwork.com"
+ },
+ {
+ "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"
+ }
+ ],
+ "install-path": "../symfony/polyfill-php70"
+ },
+ {
+ "name": "symfony/polyfill-php72",
+ "version": "v1.17.0",
+ "version_normalized": "1.17.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php72.git",
+ "reference": "f048e612a3905f34931127360bdd2def19a5e582"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582",
+ "reference": "f048e612a3905f34931127360bdd2def19a5e582",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "time": "2020-05-12T16:47:27+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.17-dev"
+ }
+ },
+ "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": "p@tchwork.com"
+ },
+ {
+ "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"
+ }
+ ],
+ "install-path": "../symfony/polyfill-php72"
+ },
+ {
+ "name": "symfony/polyfill-php73",
+ "version": "v1.18.1",
+ "version_normalized": "1.18.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
+ "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
+ "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\\Php73\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.3+ 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"
+ }
+ ],
+ "install-path": "../symfony/polyfill-php73"
+ },
+ {
+ "name": "symfony/polyfill-php80",
+ "version": "v1.18.1",
+ "version_normalized": "1.18.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981",
+ "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0.8"
+ },
+ "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\\Php80\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.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"
+ }
+ ],
+ "install-path": "../symfony/polyfill-php80"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v5.1.2",
+ "version_normalized": "5.1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "7f6378c1fa2147eeb1b4c385856ce9de0d46ebd1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/7f6378c1fa2147eeb1b4c385856ce9de0d46ebd1",
+ "reference": "7f6378c1fa2147eeb1b4c385856ce9de0d46ebd1",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "time": "2020-05-30T20:35:19+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Process\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Process Component",
+ "homepage": "https://symfony.com",
+ "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"
+ }
+ ],
+ "install-path": "../symfony/process"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v2.2.0",
+ "version_normalized": "2.2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1",
+ "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/container": "^1.0"
+ },
+ "suggest": {
+ "symfony/service-implementation": ""
+ },
+ "time": "2020-09-07T11:33:47+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "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"
+ }
+ ],
+ "install-path": "../symfony/service-contracts"
+ },
+ {
+ "name": "symfony/stopwatch",
+ "version": "v5.1.2",
+ "version_normalized": "5.1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/stopwatch.git",
+ "reference": "0f7c58cf81dbb5dd67d423a89d577524a2ec0323"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/0f7c58cf81dbb5dd67d423a89d577524a2ec0323",
+ "reference": "0f7c58cf81dbb5dd67d423a89d577524a2ec0323",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/service-contracts": "^1.0|^2"
+ },
+ "time": "2020-05-20T17:43:50+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Stopwatch\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Stopwatch Component",
+ "homepage": "https://symfony.com",
+ "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"
+ }
+ ],
+ "install-path": "../symfony/stopwatch"
+ },
+ {
+ "name": "symfony/string",
+ "version": "v5.1.7",
+ "version_normalized": "5.1.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/string.git",
+ "reference": "4a9afe9d07bac506f75bcee8ed3ce76da5a9343e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/string/zipball/4a9afe9d07bac506f75bcee8ed3ce76da5a9343e",
+ "reference": "4a9afe9d07bac506f75bcee8ed3ce76da5a9343e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-intl-grapheme": "~1.0",
+ "symfony/polyfill-intl-normalizer": "~1.0",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "~1.15"
+ },
+ "require-dev": {
+ "symfony/error-handler": "^4.4|^5.0",
+ "symfony/http-client": "^4.4|^5.0",
+ "symfony/translation-contracts": "^1.1|^2",
+ "symfony/var-exporter": "^4.4|^5.0"
+ },
+ "time": "2020-09-15T12:23:47+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\String\\": ""
+ },
+ "files": [
+ "Resources/functions.php"
+ ],
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony String component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "grapheme",
+ "i18n",
+ "string",
+ "unicode",
+ "utf-8",
+ "utf8"
+ ],
+ "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"
+ }
+ ],
+ "install-path": "../symfony/string"
+ },
+ {
+ "name": "vimeo/psalm",
+ "version": "4.0.1",
+ "version_normalized": "4.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/vimeo/psalm.git",
+ "reference": "b1e2e30026936ef8d5bf6a354d1c3959b6231f44"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/b1e2e30026936ef8d5bf6a354d1c3959b6231f44",
+ "reference": "b1e2e30026936ef8d5bf6a354d1c3959b6231f44",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^2.1",
+ "amphp/byte-stream": "^1.5",
+ "composer/package-versions-deprecated": "^1.8.0",
+ "composer/semver": "^1.4 || ^2.0 || ^3.0",
+ "composer/xdebug-handler": "^1.1",
+ "dnoegel/php-xdg-base-dir": "^0.1.1",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-simplexml": "*",
+ "ext-tokenizer": "*",
+ "felixfbecker/advanced-json-rpc": "^3.0.3",
+ "felixfbecker/language-server-protocol": "^1.4",
+ "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0",
+ "nikic/php-parser": "^4.10.1",
+ "openlss/lib-array2xml": "^1.0",
+ "php": "^7.3|^8",
+ "sebastian/diff": "^3.0 || ^4.0",
+ "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0",
+ "webmozart/glob": "^4.1",
+ "webmozart/path-util": "^2.3"
+ },
+ "provide": {
+ "psalm/psalm": "self.version"
+ },
+ "require-dev": {
+ "amphp/amp": "^2.4.2",
+ "bamarni/composer-bin-plugin": "^1.2",
+ "brianium/paratest": "^4.0.0",
+ "ext-curl": "*",
+ "phpdocumentor/reflection-docblock": "^5",
+ "phpmyadmin/sql-parser": "5.1.0",
+ "phpspec/prophecy": ">=1.9.0",
+ "phpunit/phpunit": "^9.0",
+ "psalm/plugin-phpunit": "^0.13",
+ "slevomat/coding-standard": "^5.0",
+ "squizlabs/php_codesniffer": "^3.5",
+ "symfony/process": "^4.3",
+ "weirdan/prophecy-shim": "^1.0 || ^2.0"
+ },
+ "suggest": {
+ "ext-igbinary": "^2.0.5"
+ },
+ "time": "2020-10-20T13:40:17+00:00",
+ "bin": [
+ "psalm",
+ "psalm-language-server",
+ "psalm-plugin",
+ "psalm-refactor",
+ "psalter"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.x-dev",
+ "dev-3.x": "3.x-dev",
+ "dev-2.x": "2.x-dev",
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psalm\\": "src/Psalm/"
+ },
+ "files": [
+ "src/functions.php",
+ "src/spl_object_id.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Matthew Brown"
+ }
+ ],
+ "description": "A static analysis tool for finding errors in PHP applications",
+ "keywords": [
+ "code",
+ "inspection",
+ "php"
+ ],
+ "install-path": "../vimeo/psalm"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.9.1",
+ "version_normalized": "1.9.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/assert.git",
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0 || ^8.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<3.9.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.36 || ^7.5.13"
+ },
+ "time": "2020-07-08T17:02:28+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "install-path": "../webmozart/assert"
+ },
+ {
+ "name": "webmozart/glob",
+ "version": "4.1.0",
+ "version_normalized": "4.1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/glob.git",
+ "reference": "3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/glob/zipball/3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe",
+ "reference": "3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3|^7.0",
+ "webmozart/path-util": "^2.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6",
+ "sebastian/version": "^1.0.1",
+ "symfony/filesystem": "^2.5"
+ },
+ "time": "2015-12-29T11:14:33+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Glob\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "A PHP implementation of Ant's glob.",
+ "install-path": "../webmozart/glob"
+ },
+ {
+ "name": "webmozart/path-util",
+ "version": "2.3.0",
+ "version_normalized": "2.3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/path-util.git",
+ "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
+ "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "webmozart/assert": "~1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6",
+ "sebastian/version": "^1.0.1"
+ },
+ "time": "2015-12-17T08:42:14+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\PathUtil\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.",
+ "install-path": "../webmozart/path-util"
+ }
+ ],
+ "dev": true
+}
diff --git a/lib/composer/composer/installed.php b/lib/composer/composer/installed.php
new file mode 100644
index 0000000000000..d8a394c4b8eb4
--- /dev/null
+++ b/lib/composer/composer/installed.php
@@ -0,0 +1,482 @@
+
+ array (
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '11fca45e4c9ed5bc53436b6232a656a51f4984fa',
+ 'name' => '__root__',
+ ),
+ 'versions' =>
+ array (
+ '__root__' =>
+ array (
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '11fca45e4c9ed5bc53436b6232a656a51f4984fa',
+ ),
+ 'amphp/amp' =>
+ array (
+ 'pretty_version' => 'v2.5.0',
+ 'version' => '2.5.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'f220a51458bf4dd0dedebb171ac3457813c72bbc',
+ ),
+ 'amphp/byte-stream' =>
+ array (
+ 'pretty_version' => 'v1.8.0',
+ 'version' => '1.8.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'f0c20cf598a958ba2aa8c6e5a71c697d652c7088',
+ ),
+ 'composer/package-versions-deprecated' =>
+ array (
+ 'pretty_version' => '1.11.99',
+ 'version' => '1.11.99.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'c8c9aa8a14cc3d3bec86d0a8c3fa52ea79936855',
+ ),
+ 'composer/semver' =>
+ array (
+ 'pretty_version' => '1.7.1',
+ 'version' => '1.7.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '38276325bd896f90dfcfe30029aa5db40df387a7',
+ ),
+ 'composer/xdebug-handler' =>
+ array (
+ 'pretty_version' => '1.4.3',
+ 'version' => '1.4.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'ebd27a9866ae8254e873866f795491f02418c5a5',
+ ),
+ 'dnoegel/php-xdg-base-dir' =>
+ array (
+ 'pretty_version' => 'v0.1.1',
+ 'version' => '0.1.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd',
+ ),
+ 'doctrine/annotations' =>
+ array (
+ 'pretty_version' => '1.10.3',
+ 'version' => '1.10.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '5db60a4969eba0e0c197a19c077780aadbc43c5d',
+ ),
+ 'doctrine/lexer' =>
+ array (
+ 'pretty_version' => '1.2.1',
+ 'version' => '1.2.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'e864bbf5904cb8f5bb334f99209b48018522f042',
+ ),
+ 'felixfbecker/advanced-json-rpc' =>
+ array (
+ 'pretty_version' => 'v3.1.1',
+ 'version' => '3.1.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '0ed363f8de17d284d479ec813c9ad3f6834b5c40',
+ ),
+ 'felixfbecker/language-server-protocol' =>
+ array (
+ 'pretty_version' => 'v1.4.0',
+ 'version' => '1.4.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '378801f6139bb74ac215d81cca1272af61df9a9f',
+ ),
+ 'friendsofphp/php-cs-fixer' =>
+ array (
+ 'pretty_version' => 'v2.16.3',
+ 'version' => '2.16.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '83baf823a33a1cbd5416c8626935cf3f843c10b0',
+ ),
+ 'netresearch/jsonmapper' =>
+ array (
+ 'pretty_version' => 'v2.1.0',
+ 'version' => '2.1.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'e0f1e33a71587aca81be5cffbb9746510e1fe04e',
+ ),
+ 'nextcloud/coding-standard' =>
+ array (
+ 'pretty_version' => 'v0.3.0',
+ 'version' => '0.3.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '4f5cd012760f8293e19e602651a0ecaa265e4db9',
+ ),
+ 'nikic/php-parser' =>
+ array (
+ 'pretty_version' => 'v4.10.2',
+ 'version' => '4.10.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '658f1be311a230e0907f5dfe0213742aff0596de',
+ ),
+ 'ocramius/package-versions' =>
+ array (
+ 'replaced' =>
+ array (
+ 0 => '1.11.99',
+ ),
+ ),
+ 'openlss/lib-array2xml' =>
+ array (
+ 'pretty_version' => '1.0.0',
+ 'version' => '1.0.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'a91f18a8dfc69ffabe5f9b068bc39bb202c81d90',
+ ),
+ 'paragonie/random_compat' =>
+ array (
+ 'pretty_version' => 'v9.99.99',
+ 'version' => '9.99.99.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95',
+ ),
+ 'php-cs-fixer/diff' =>
+ array (
+ 'pretty_version' => 'v1.3.0',
+ 'version' => '1.3.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '78bb099e9c16361126c86ce82ec4405ebab8e756',
+ ),
+ 'phpdocumentor/reflection-common' =>
+ array (
+ 'pretty_version' => '2.2.0',
+ 'version' => '2.2.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
+ ),
+ 'phpdocumentor/reflection-docblock' =>
+ array (
+ 'pretty_version' => '5.2.2',
+ 'version' => '5.2.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '069a785b2141f5bcf49f3e353548dc1cce6df556',
+ ),
+ 'phpdocumentor/type-resolver' =>
+ array (
+ 'pretty_version' => '1.4.0',
+ 'version' => '1.4.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0',
+ ),
+ 'psalm/psalm' =>
+ array (
+ 'provided' =>
+ array (
+ 0 => '4.0.1',
+ ),
+ ),
+ 'psr/container' =>
+ array (
+ 'pretty_version' => '1.0.0',
+ 'version' => '1.0.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'b7ce3b176482dbbc1245ebf52b181af44c2cf55f',
+ ),
+ 'psr/event-dispatcher' =>
+ array (
+ 'pretty_version' => '1.0.0',
+ 'version' => '1.0.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'dbefd12671e8a14ec7f180cab83036ed26714bb0',
+ ),
+ 'psr/event-dispatcher-implementation' =>
+ array (
+ 'provided' =>
+ array (
+ 0 => '1.0',
+ ),
+ ),
+ 'psr/log' =>
+ array (
+ 'pretty_version' => '1.1.3',
+ 'version' => '1.1.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc',
+ ),
+ 'psr/log-implementation' =>
+ array (
+ 'provided' =>
+ array (
+ 0 => '1.0',
+ ),
+ ),
+ 'sebastian/diff' =>
+ array (
+ 'pretty_version' => '4.0.3',
+ 'version' => '4.0.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'ffc949a1a2aae270ea064453d7535b82e4c32092',
+ ),
+ 'symfony/console' =>
+ array (
+ 'pretty_version' => 'v5.1.7',
+ 'version' => '5.1.7.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'ae789a8a2ad189ce7e8216942cdb9b77319f5eb8',
+ ),
+ 'symfony/deprecation-contracts' =>
+ array (
+ 'pretty_version' => 'v2.1.2',
+ 'version' => '2.1.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'dd99cb3a0aff6cadd2a8d7d7ed72c2161e218337',
+ ),
+ 'symfony/event-dispatcher' =>
+ array (
+ 'pretty_version' => 'v5.1.2',
+ 'version' => '5.1.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'cc0d059e2e997e79ca34125a52f3e33de4424ac7',
+ ),
+ 'symfony/event-dispatcher-contracts' =>
+ array (
+ 'pretty_version' => 'v2.1.2',
+ 'version' => '2.1.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '405952c4e90941a17e52ef7489a2bd94870bb290',
+ ),
+ 'symfony/event-dispatcher-implementation' =>
+ array (
+ 'provided' =>
+ array (
+ 0 => '2.0',
+ ),
+ ),
+ 'symfony/filesystem' =>
+ array (
+ 'pretty_version' => 'v5.1.2',
+ 'version' => '5.1.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '6e4320f06d5f2cce0d96530162491f4465179157',
+ ),
+ 'symfony/finder' =>
+ array (
+ 'pretty_version' => 'v5.1.2',
+ 'version' => '5.1.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '4298870062bfc667cb78d2b379be4bf5dec5f187',
+ ),
+ 'symfony/options-resolver' =>
+ array (
+ 'pretty_version' => 'v5.1.2',
+ 'version' => '5.1.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '663f5dd5e14057d1954fe721f9709d35837f2447',
+ ),
+ 'symfony/polyfill-ctype' =>
+ array (
+ 'pretty_version' => 'v1.18.1',
+ 'version' => '1.18.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '1c302646f6efc070cd46856e600e5e0684d6b454',
+ ),
+ 'symfony/polyfill-intl-grapheme' =>
+ array (
+ 'pretty_version' => 'v1.18.1',
+ 'version' => '1.18.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'b740103edbdcc39602239ee8860f0f45a8eb9aa5',
+ ),
+ 'symfony/polyfill-intl-normalizer' =>
+ array (
+ 'pretty_version' => 'v1.18.1',
+ 'version' => '1.18.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e',
+ ),
+ 'symfony/polyfill-mbstring' =>
+ array (
+ 'pretty_version' => 'v1.18.1',
+ 'version' => '1.18.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'a6977d63bf9a0ad4c65cd352709e230876f9904a',
+ ),
+ 'symfony/polyfill-php70' =>
+ array (
+ 'pretty_version' => 'v1.17.1',
+ 'version' => '1.17.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '471b096aede7025bace8eb356b9ac801aaba7e2d',
+ ),
+ 'symfony/polyfill-php72' =>
+ array (
+ 'pretty_version' => 'v1.17.0',
+ 'version' => '1.17.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'f048e612a3905f34931127360bdd2def19a5e582',
+ ),
+ 'symfony/polyfill-php73' =>
+ array (
+ 'pretty_version' => 'v1.18.1',
+ 'version' => '1.18.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'fffa1a52a023e782cdcc221d781fe1ec8f87fcca',
+ ),
+ 'symfony/polyfill-php80' =>
+ array (
+ 'pretty_version' => 'v1.18.1',
+ 'version' => '1.18.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'd87d5766cbf48d72388a9f6b85f280c8ad51f981',
+ ),
+ 'symfony/process' =>
+ array (
+ 'pretty_version' => 'v5.1.2',
+ 'version' => '5.1.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '7f6378c1fa2147eeb1b4c385856ce9de0d46ebd1',
+ ),
+ 'symfony/service-contracts' =>
+ array (
+ 'pretty_version' => 'v2.2.0',
+ 'version' => '2.2.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'd15da7ba4957ffb8f1747218be9e1a121fd298a1',
+ ),
+ 'symfony/stopwatch' =>
+ array (
+ 'pretty_version' => 'v5.1.2',
+ 'version' => '5.1.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '0f7c58cf81dbb5dd67d423a89d577524a2ec0323',
+ ),
+ 'symfony/string' =>
+ array (
+ 'pretty_version' => 'v5.1.7',
+ 'version' => '5.1.7.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '4a9afe9d07bac506f75bcee8ed3ce76da5a9343e',
+ ),
+ 'vimeo/psalm' =>
+ array (
+ 'pretty_version' => '4.0.1',
+ 'version' => '4.0.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'b1e2e30026936ef8d5bf6a354d1c3959b6231f44',
+ ),
+ 'webmozart/assert' =>
+ array (
+ 'pretty_version' => '1.9.1',
+ 'version' => '1.9.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'bafc69caeb4d49c39fd0779086c03a3738cbb389',
+ ),
+ 'webmozart/glob' =>
+ array (
+ 'pretty_version' => '4.1.0',
+ 'version' => '4.1.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe',
+ ),
+ 'webmozart/path-util' =>
+ array (
+ 'pretty_version' => '2.3.0',
+ 'version' => '2.3.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'd939f7edc24c9a1bb9c0dee5cb05d8e859490725',
+ ),
+ ),
+);
diff --git a/lib/composer/composer/package-versions-deprecated/CHANGELOG.md b/lib/composer/composer/package-versions-deprecated/CHANGELOG.md
new file mode 100644
index 0000000000000..a838c56ad346f
--- /dev/null
+++ b/lib/composer/composer/package-versions-deprecated/CHANGELOG.md
@@ -0,0 +1,120 @@
+# CHANGELOG
+
+## 1.1.3 - 2017-09-06
+
+This release fixes a bug that caused PackageVersions to prevent
+the `composer remove` and `composer update` commands to fail when
+this package is removed.
+
+In addition to that, mutation testing has been added to the suite,
+ensuring that the package is accurately and extensively tested.
+
+Total issues resolved: **3**
+
+- [40: Mutation testing, PHP 7.1 testing](https://github.com/Ocramius/PackageVersions/pull/40) thanks to @Ocramius
+- [41: Removing this package on install results in file access error](https://github.com/Ocramius/PackageVersions/issues/41) thanks to @Xerkus
+- [46: #41 Avoid issues when the package is scheduled for removal](https://github.com/Ocramius/PackageVersions/pull/46) thanks to @Jean85
+
+## 1.1.2 - 2016-12-30
+
+This release fixes a bug that caused PackageVersions to be enabled
+even when it was part of a globally installed package.
+
+Total issues resolved: **3**
+
+- [35: remove all temp directories](https://github.com/Ocramius/PackageVersions/pull/35)
+- [38: Interferes with other projects when installed globally](https://github.com/Ocramius/PackageVersions/issues/38)
+- [39: Ignore the global plugin when updating local projects](https://github.com/Ocramius/PackageVersions/pull/39)
+
+## 1.1.1 - 2016-07-25
+
+This release removes the [`"files"`](https://getcomposer.org/doc/04-schema.md#files) directive from
+[`composer.json`](https://github.com/Ocramius/PackageVersions/commit/86f2636f7c5e7b56fa035fa3826d5fcf80b6dc72),
+as it is no longer needed for `composer install --classmap-authoritative`.
+Also, that directive was causing issues with HHVM installations, since
+PackageVersions is not compatible with it.
+
+Total issues resolved: **1**
+
+- [34: Fatal error during travis build after update to 1.1.0](https://github.com/Ocramius/PackageVersions/issues/34)
+
+## 1.1.0 - 2016-07-22
+
+This release introduces support for running `composer install --classmap-authoritative`
+and `composer install --no-scripts`. Please note that performance
+while using these modes may be degraded, but the package will
+still work.
+
+Additionally, the package was tuned to prevent the plugin from
+running twice at installation.
+
+Total issues resolved: **10**
+
+- [18: Fails when using composer install --no-scripts](https://github.com/Ocramius/PackageVersions/issues/18)
+- [20: CS (spacing)](https://github.com/Ocramius/PackageVersions/pull/20)
+- [22: Document the way the require-dev section is treated](https://github.com/Ocramius/PackageVersions/issues/22)
+- [23: Underline that composer.lock is used as source of information](https://github.com/Ocramius/PackageVersions/pull/23)
+- [27: Fix incompatibility with --classmap-authoritative](https://github.com/Ocramius/PackageVersions/pull/27)
+- [29: mention optimize-autoloader composer.json config option in README](https://github.com/Ocramius/PackageVersions/pull/29)
+- [30: The version class is generated twice during composer update](https://github.com/Ocramius/PackageVersions/issues/30)
+- [31: Remove double registration of the event listeners](https://github.com/Ocramius/PackageVersions/pull/31)
+- [32: Update the usage of mock APIs to use the new API](https://github.com/Ocramius/PackageVersions/pull/32)
+- [33: Fix for #18 - support running with --no-scripts flag](https://github.com/Ocramius/PackageVersions/pull/33)
+
+## 1.0.4 - 2016-04-23
+
+This release includes a fix/workaround for composer/composer#5237,
+which causes `ocramius/package-versions` to sometimes generate a
+`Versions` class with malformed name (something like
+`Versions_composer_tmp0`) when running `composer require `.
+
+Total issues resolved: **2**
+
+- [16: Workaround for composer/composer#5237 - class parsing](https://github.com/Ocramius/PackageVersions/pull/16)
+- [17: Weird Class name being generated](https://github.com/Ocramius/PackageVersions/issues/17)
+
+## 1.0.3 - 2016-02-26
+
+This release fixes an issue related to concurrent autoloader
+re-generation caused by multiple composer plugins being installed.
+The issue was solved by removing autoloader re-generation from this
+package, but it may still affect other packages.
+
+It is now recommended that you run `composer dump-autoload --optimize`
+after installation when using this particular package.
+Please note that `composer (install|update) -o` is not sufficient
+to avoid autoload overhead when using this particular package.
+
+Total issues resolved: **1**
+
+- [15: Remove autoload re-dump optimization](https://github.com/Ocramius/PackageVersions/pull/15)
+
+## 1.0.2 - 2016-02-24
+
+This release fixes issues related to installing the component without
+any dev dependencies or with packages that don't have a source or dist
+reference, which is usual with packages defined directly in the
+`composer.json`.
+
+Total issues resolved: **3**
+
+- [11: fix composer install --no-dev PHP7](https://github.com/Ocramius/PackageVersions/pull/11)
+- [12: Packages don't always have a source/reference](https://github.com/Ocramius/PackageVersions/issues/12)
+- [13: Fix #12 - support dist and missing package version references](https://github.com/Ocramius/PackageVersions/pull/13)
+
+## 1.0.1 - 2016-02-01
+
+This release fixes an issue related with composer updates to
+already installed versions.
+Using `composer require` within a package that already used
+`ocramius/package-versions` caused the installation to be unable
+to write the `PackageVersions\Versions` class to a file.
+
+Total issues resolved: **6**
+
+- [2: remove unused use statement](https://github.com/Ocramius/PackageVersions/pull/2)
+- [3: Remove useless files from dist package](https://github.com/Ocramius/PackageVersions/pull/3)
+- [5: failed to open stream: phar error: write operations disabled by the php.ini setting phar.readonly](https://github.com/Ocramius/PackageVersions/issues/5)
+- [6: Fix/#5 use composer vendor dir](https://github.com/Ocramius/PackageVersions/pull/6)
+- [7: Hotfix - #5 generate package versions also when in phar context](https://github.com/Ocramius/PackageVersions/pull/7)
+- [8: Versions class should be ignored by VCS, as it is an install-time artifact](https://github.com/Ocramius/PackageVersions/pull/8)
diff --git a/lib/composer/composer/package-versions-deprecated/CONTRIBUTING.md b/lib/composer/composer/package-versions-deprecated/CONTRIBUTING.md
new file mode 100644
index 0000000000000..71806175833b0
--- /dev/null
+++ b/lib/composer/composer/package-versions-deprecated/CONTRIBUTING.md
@@ -0,0 +1,39 @@
+---
+title: Contributing
+---
+
+# Contributing
+
+ * Coding standard for the project is [PSR-2](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)
+ * The project will follow strict [object calisthenics](http://www.slideshare.net/guilhermeblanco/object-calisthenics-applied-to-php)
+ * Any contribution must provide tests for additional introduced conditions
+ * Any un-confirmed issue needs a failing test case before being accepted
+ * Pull requests must be sent from a new hotfix/feature branch, not from `master`.
+
+## Installation
+
+To install the project and run the tests, you need to clone it first:
+
+```sh
+$ git clone git://github.com/Ocramius/PackageVersions.git
+```
+
+You will then need to run a composer installation:
+
+```sh
+$ cd PackageVersions
+$ curl -s https://getcomposer.org/installer | php
+$ php composer.phar update
+```
+
+## Testing
+
+The PHPUnit version to be used is the one installed as a dev- dependency via composer:
+
+```sh
+$ ./vendor/bin/phpunit
+```
+
+Accepted coverage for new contributions is 80%. Any contribution not satisfying this requirement
+won't be merged.
+
diff --git a/lib/composer/composer/package-versions-deprecated/LICENSE b/lib/composer/composer/package-versions-deprecated/LICENSE
new file mode 100644
index 0000000000000..a90b0792cc78b
--- /dev/null
+++ b/lib/composer/composer/package-versions-deprecated/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2016 Marco Pivetta
+
+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/lib/composer/composer/package-versions-deprecated/README.md b/lib/composer/composer/package-versions-deprecated/README.md
new file mode 100644
index 0000000000000..c5f5bba103f1d
--- /dev/null
+++ b/lib/composer/composer/package-versions-deprecated/README.md
@@ -0,0 +1,5 @@
+# Package Versions
+
+**`composer/package-versions-deprecated` is a fully-compatible fork of [`ocramius/package-versions`](https://github.com/Ocramius/PackageVersions)** which provides compatibility with Composer 1 and 2 on PHP 7+. It replaces ocramius/package-versions so if you have a dependency requiring it and you want to use Composer v2 but can not upgrade to PHP 7.4 just yet, you can require this package instead.
+
+If you have a direct dependency on ocramius/package-versions, we recommend instead that once you migrated to Composer 2 you also migrate to use the `Composer\Versions` class which offers the functionality present here out of the box.
diff --git a/lib/composer/composer/package-versions-deprecated/SECURITY.md b/lib/composer/composer/package-versions-deprecated/SECURITY.md
new file mode 100644
index 0000000000000..da9c516dd744b
--- /dev/null
+++ b/lib/composer/composer/package-versions-deprecated/SECURITY.md
@@ -0,0 +1,5 @@
+## Security contact information
+
+To report a security vulnerability, please use the
+[Tidelift security contact](https://tidelift.com/security).
+Tidelift will coordinate the fix and disclosure.
diff --git a/lib/composer/composer/package-versions-deprecated/composer.json b/lib/composer/composer/package-versions-deprecated/composer.json
new file mode 100644
index 0000000000000..d5a40daacf364
--- /dev/null
+++ b/lib/composer/composer/package-versions-deprecated/composer.json
@@ -0,0 +1,48 @@
+{
+ "name": "composer/package-versions-deprecated",
+ "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
+ "type": "composer-plugin",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be"
+ }
+ ],
+ "require": {
+ "php": "^7 || ^8",
+ "composer-plugin-api": "^1.1.0 || ^2.0"
+ },
+ "replace": {
+ "ocramius/package-versions": "1.11.99"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.5 || ^7",
+ "composer/composer": "^1.9.3 || ^2.0@dev",
+ "ext-zip": "^1.13"
+ },
+ "autoload": {
+ "psr-4": {
+ "PackageVersions\\": "src/PackageVersions"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "PackageVersionsTest\\": "test/PackageVersionsTest"
+ }
+ },
+ "extra": {
+ "class": "PackageVersions\\Installer",
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "scripts": {
+ "post-update-cmd": "PackageVersions\\Installer::dumpVersionsClass",
+ "post-install-cmd": "PackageVersions\\Installer::dumpVersionsClass"
+ }
+}
diff --git a/lib/composer/composer/package-versions-deprecated/composer.lock b/lib/composer/composer/package-versions-deprecated/composer.lock
new file mode 100644
index 0000000000000..b711f6b13841b
--- /dev/null
+++ b/lib/composer/composer/package-versions-deprecated/composer.lock
@@ -0,0 +1,2603 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "6bfe0a7d7a51c4bdf14a2d7ea1d22d11",
+ "packages": [],
+ "packages-dev": [
+ {
+ "name": "composer/ca-bundle",
+ "version": "1.2.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/ca-bundle.git",
+ "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/ca-bundle/zipball/95c63ab2117a72f48f5a55da9740a3273d45b7fd",
+ "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd",
+ "shasum": ""
+ },
+ "require": {
+ "ext-openssl": "*",
+ "ext-pcre": "*",
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8",
+ "psr/log": "^1.0",
+ "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\CaBundle\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
+ "keywords": [
+ "cabundle",
+ "cacert",
+ "certificate",
+ "ssl",
+ "tls"
+ ],
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-04-08T08:27:21+00:00"
+ },
+ {
+ "name": "composer/composer",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/composer.git",
+ "reference": "a8c105da344dd84ebd5d11be7943a45b09dc076f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/composer/zipball/a8c105da344dd84ebd5d11be7943a45b09dc076f",
+ "reference": "a8c105da344dd84ebd5d11be7943a45b09dc076f",
+ "shasum": ""
+ },
+ "require": {
+ "composer/ca-bundle": "^1.0",
+ "composer/semver": "^1.0",
+ "composer/spdx-licenses": "^1.2",
+ "composer/xdebug-handler": "^1.1",
+ "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0",
+ "php": "^5.3.2 || ^7.0",
+ "psr/log": "^1.0",
+ "seld/jsonlint": "^1.4",
+ "seld/phar-utils": "^1.0",
+ "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0",
+ "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0",
+ "symfony/finder": "^2.7 || ^3.0 || ^4.0 || ^5.0",
+ "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0"
+ },
+ "conflict": {
+ "symfony/console": "2.8.38"
+ },
+ "require-dev": {
+ "phpspec/prophecy": "^1.10",
+ "symfony/phpunit-bridge": "^3.4"
+ },
+ "suggest": {
+ "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
+ "ext-zip": "Enabling the zip extension allows you to unzip archives",
+ "ext-zlib": "Allow gzip compression of HTTP requests"
+ },
+ "bin": [
+ "bin/composer"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\": "src/Composer"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.",
+ "homepage": "https://getcomposer.org/",
+ "keywords": [
+ "autoload",
+ "dependency",
+ "package"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/composer/issues",
+ "source": "https://github.com/composer/composer/tree/master"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-03-29T14:59:26+00:00"
+ },
+ {
+ "name": "composer/semver",
+ "version": "1.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/semver.git",
+ "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/semver/zipball/c6bea70230ef4dd483e6bbcab6005f682ed3a8de",
+ "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.5 || ^5.0.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Semver\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
+ "keywords": [
+ "semantic",
+ "semver",
+ "validation",
+ "versioning"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/semver/issues",
+ "source": "https://github.com/composer/semver/tree/1.5.1"
+ },
+ "time": "2020-01-13T12:06:48+00:00"
+ },
+ {
+ "name": "composer/spdx-licenses",
+ "version": "1.5.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/spdx-licenses.git",
+ "reference": "0c3e51e1880ca149682332770e25977c70cf9dae"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/0c3e51e1880ca149682332770e25977c70cf9dae",
+ "reference": "0c3e51e1880ca149682332770e25977c70cf9dae",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Spdx\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "description": "SPDX licenses list and validation library.",
+ "keywords": [
+ "license",
+ "spdx",
+ "validator"
+ ],
+ "time": "2020-02-14T07:44:31+00:00"
+ },
+ {
+ "name": "composer/xdebug-handler",
+ "version": "1.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/xdebug-handler.git",
+ "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/1ab9842d69e64fb3a01be6b656501032d1b78cb7",
+ "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0",
+ "psr/log": "^1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Composer\\XdebugHandler\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "John Stevenson",
+ "email": "john-stevenson@blueyonder.co.uk"
+ }
+ ],
+ "description": "Restarts a process without Xdebug.",
+ "keywords": [
+ "Xdebug",
+ "performance"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/xdebug-handler/issues",
+ "source": "https://github.com/composer/xdebug-handler/tree/master"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ }
+ ],
+ "time": "2020-03-01T12:26:26+00:00"
+ },
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "ae466f726242e637cebdd526a7d991b9433bacf1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1",
+ "reference": "ae466f726242e637cebdd526a7d991b9433bacf1",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpbench/phpbench": "^0.13",
+ "phpstan/phpstan-phpunit": "^0.11",
+ "phpstan/phpstan-shim": "^0.11",
+ "phpunit/phpunit": "^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.com/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/instantiator/issues",
+ "source": "https://github.com/doctrine/instantiator/tree/master"
+ },
+ "time": "2019-10-21T16:45:58+00:00"
+ },
+ {
+ "name": "justinrainbow/json-schema",
+ "version": "5.2.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/justinrainbow/json-schema.git",
+ "reference": "44c6787311242a979fa15c704327c20e7221a0e4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/44c6787311242a979fa15c704327c20e7221a0e4",
+ "reference": "44c6787311242a979fa15c704327c20e7221a0e4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1",
+ "json-schema/json-schema-test-suite": "1.2.0",
+ "phpunit/phpunit": "^4.8.35"
+ },
+ "bin": [
+ "bin/validate-json"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "JsonSchema\\": "src/JsonSchema/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bruno Prieto Reis",
+ "email": "bruno.p.reis@gmail.com"
+ },
+ {
+ "name": "Justin Rainbow",
+ "email": "justin.rainbow@gmail.com"
+ },
+ {
+ "name": "Igor Wiedler",
+ "email": "igor@wiedler.ch"
+ },
+ {
+ "name": "Robert Schönthal",
+ "email": "seroscho@googlemail.com"
+ }
+ ],
+ "description": "A library to validate a json schema.",
+ "homepage": "https://github.com/justinrainbow/json-schema",
+ "keywords": [
+ "json",
+ "schema"
+ ],
+ "support": {
+ "issues": "https://github.com/justinrainbow/json-schema/issues",
+ "source": "https://github.com/justinrainbow/json-schema/tree/5.2.9"
+ },
+ "time": "2019-09-25T14:49:45+00:00"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.9.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef",
+ "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "replace": {
+ "myclabs/deep-copy": "self.version"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.0",
+ "doctrine/common": "^2.6",
+ "phpunit/phpunit": "^7.1"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ },
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "support": {
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.9.5"
+ },
+ "time": "2020-01-17T21:11:47+00:00"
+ },
+ {
+ "name": "phar-io/manifest",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
+ "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "phar-io/version": "^2.0",
+ "php": "^5.6 || ^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+ "time": "2018-07-08T19:23:20+00:00"
+ },
+ {
+ "name": "phar-io/version",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6",
+ "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Library for handling version information and constraints",
+ "time": "2018-07-08T19:19:57+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a",
+ "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "time": "2018-08-07T13:53:10+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "5.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e",
+ "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "^7.1",
+ "php": "^7.2",
+ "phpdocumentor/reflection-common": "^2.0",
+ "phpdocumentor/type-resolver": "^1.0",
+ "webmozart/assert": "^1"
+ },
+ "require-dev": {
+ "doctrine/instantiator": "^1",
+ "mockery/mockery": "^1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "account@ijaap.nl"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "time": "2020-02-22T12:28:44+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "7462d5f123dfc080dfdf26897032a6513644fc95"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95",
+ "reference": "7462d5f123dfc080dfdf26897032a6513644fc95",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2",
+ "phpdocumentor/reflection-common": "^2.0"
+ },
+ "require-dev": {
+ "ext-tokenizer": "^7.2",
+ "mockery/mockery": "~1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/master"
+ },
+ "time": "2020-02-18T18:59:58+00:00"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "v1.10.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "451c3cd1418cf640de218914901e51b064abb093"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
+ "reference": "451c3cd1418cf640de218914901e51b064abb093",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": "^5.3|^7.0",
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
+ "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^2.5 || ^3.2",
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Prophecy\\": "src/Prophecy"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "marcello.duarte@gmail.com"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ],
+ "support": {
+ "issues": "https://github.com/phpspec/prophecy/issues",
+ "source": "https://github.com/phpspec/prophecy/tree/v1.10.3"
+ },
+ "time": "2020-03-05T15:02:03+00:00"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "6.1.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d",
+ "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.1",
+ "phpunit/php-file-iterator": "^2.0",
+ "phpunit/php-text-template": "^1.2.1",
+ "phpunit/php-token-stream": "^3.0",
+ "sebastian/code-unit-reverse-lookup": "^1.0.1",
+ "sebastian/environment": "^3.1 || ^4.0",
+ "sebastian/version": "^2.0.1",
+ "theseer/tokenizer": "^1.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0"
+ },
+ "suggest": {
+ "ext-xdebug": "^2.6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "6.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "time": "2018-10-31T16:06:48+00:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "050bedf145a257b1ff02746c31894800e5122946"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946",
+ "reference": "050bedf145a257b1ff02746c31894800e5122946",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "time": "2018-09-13T20:33:42+00:00"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "time": "2015-06-21T13:50:34+00:00"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "2.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "1038454804406b0b5f5f520358e78c1c2f71501e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e",
+ "reference": "1038454804406b0b5f5f520358e78c1c2f71501e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "time": "2019-06-07T04:22:29+00:00"
+ },
+ {
+ "name": "phpunit/php-token-stream",
+ "version": "3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+ "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff",
+ "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Wrapper around PHP's tokenizer extension.",
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+ "keywords": [
+ "tokenizer"
+ ],
+ "time": "2019-09-17T06:23:10+00:00"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "7.5.20",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "9467db479d1b0487c99733bb1e7944d32deded2c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c",
+ "reference": "9467db479d1b0487c99733bb1e7944d32deded2c",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.1",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "myclabs/deep-copy": "^1.7",
+ "phar-io/manifest": "^1.0.2",
+ "phar-io/version": "^2.0",
+ "php": "^7.1",
+ "phpspec/prophecy": "^1.7",
+ "phpunit/php-code-coverage": "^6.0.7",
+ "phpunit/php-file-iterator": "^2.0.1",
+ "phpunit/php-text-template": "^1.2.1",
+ "phpunit/php-timer": "^2.1",
+ "sebastian/comparator": "^3.0",
+ "sebastian/diff": "^3.0",
+ "sebastian/environment": "^4.0",
+ "sebastian/exporter": "^3.1",
+ "sebastian/global-state": "^2.0",
+ "sebastian/object-enumerator": "^3.0.3",
+ "sebastian/resource-operations": "^2.0",
+ "sebastian/version": "^2.0.1"
+ },
+ "conflict": {
+ "phpunit/phpunit-mock-objects": "*"
+ },
+ "require-dev": {
+ "ext-pdo": "*"
+ },
+ "suggest": {
+ "ext-soap": "*",
+ "ext-xdebug": "*",
+ "phpunit/php-invoker": "^2.0"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "7.5-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "time": "2020-01-08T08:45:45+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "time": "2017-02-14T16:28:37+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "time": "2020-03-23T09:12:05+00:00"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "time": "2017-03-04T06:30:41+00:00"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
+ "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1",
+ "sebastian/diff": "^3.0",
+ "sebastian/exporter": "^3.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "time": "2018-07-12T15:12:46+00:00"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
+ "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.5 || ^8.0",
+ "symfony/process": "^2 || ^3.3 || ^4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff",
+ "udiff",
+ "unidiff",
+ "unified diff"
+ ],
+ "time": "2019-02-04T06:01:07+00:00"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "4.2.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368",
+ "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.5"
+ },
+ "suggest": {
+ "ext-posix": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.2-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "time": "2019-11-20T08:46:58+00:00"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "3.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e",
+ "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "sebastian/recursion-context": "^3.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "time": "2019-09-14T09:02:43+00:00"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "time": "2017-04-27T15:39:26+00:00"
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "sebastian/object-reflector": "^1.1.1",
+ "sebastian/recursion-context": "^3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "time": "2017-08-03T12:35:26+00:00"
+ },
+ {
+ "name": "sebastian/object-reflector",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "773f97c67f28de00d397be301821b06708fca0be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
+ "reference": "773f97c67f28de00d397be301821b06708fca0be",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "time": "2017-03-29T09:07:27+00:00"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "time": "2017-03-03T06:23:57+00:00"
+ },
+ {
+ "name": "sebastian/resource-operations",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
+ "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "time": "2018-10-04T04:07:39+00:00"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "time": "2016-10-03T07:35:21+00:00"
+ },
+ {
+ "name": "seld/jsonlint",
+ "version": "1.7.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/jsonlint.git",
+ "reference": "e2e5d290e4d2a4f0eb449f510071392e00e10d19"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/e2e5d290e4d2a4f0eb449f510071392e00e10d19",
+ "reference": "e2e5d290e4d2a4f0eb449f510071392e00e10d19",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+ },
+ "bin": [
+ "bin/jsonlint"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Seld\\JsonLint\\": "src/Seld/JsonLint/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "JSON Linter",
+ "keywords": [
+ "json",
+ "linter",
+ "parser",
+ "validator"
+ ],
+ "support": {
+ "issues": "https://github.com/Seldaek/jsonlint/issues",
+ "source": "https://github.com/Seldaek/jsonlint/tree/1.7.2"
+ },
+ "time": "2019-10-24T14:27:39+00:00"
+ },
+ {
+ "name": "seld/phar-utils",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/phar-utils.git",
+ "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8800503d56b9867d43d9c303b9cbcc26016e82f0",
+ "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Seld\\PharUtils\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be"
+ }
+ ],
+ "description": "PHAR file format utilities, for when PHP phars you up",
+ "keywords": [
+ "phar"
+ ],
+ "support": {
+ "issues": "https://github.com/Seldaek/phar-utils/issues",
+ "source": "https://github.com/Seldaek/phar-utils/tree/1.1.0"
+ },
+ "time": "2020-02-14T15:25:33+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v5.0.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "5fa1caadc8cdaa17bcfb25219f3b53fe294a9935"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/5fa1caadc8cdaa17bcfb25219f3b53fe294a9935",
+ "reference": "5fa1caadc8cdaa17bcfb25219f3b53fe294a9935",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php73": "^1.8",
+ "symfony/service-contracts": "^1.1|^2"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<4.4",
+ "symfony/event-dispatcher": "<4.4",
+ "symfony/lock": "<4.4",
+ "symfony/process": "<4.4"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/event-dispatcher": "^4.4|^5.0",
+ "symfony/lock": "^4.4|^5.0",
+ "symfony/process": "^4.4|^5.0",
+ "symfony/var-dumper": "^4.4|^5.0"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Console Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/console/tree/v5.0.7"
+ },
+ "time": "2020-03-30T11:42:42+00:00"
+ },
+ {
+ "name": "symfony/filesystem",
+ "version": "v5.0.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "ca3b87dd09fff9b771731637f5379965fbfab420"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/ca3b87dd09fff9b771731637f5379965fbfab420",
+ "reference": "ca3b87dd09fff9b771731637f5379965fbfab420",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Filesystem Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/filesystem/tree/v5.0.7"
+ },
+ "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"
+ }
+ ],
+ "time": "2020-03-27T16:56:45+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v5.0.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "600a52c29afc0d1caa74acbec8d3095ca7e9910d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/600a52c29afc0d1caa74acbec8d3095ca7e9910d",
+ "reference": "600a52c29afc0d1caa74acbec8d3095ca7e9910d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Finder Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/finder/tree/5.0"
+ },
+ "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"
+ }
+ ],
+ "time": "2020-03-27T16:56:45+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.15.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/4719fa9c18b0464d399f1a63bf624b42b6fa8d14",
+ "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.15-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.15.0"
+ },
+ "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"
+ }
+ ],
+ "time": "2020-02-27T09:26:54+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.15.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/81ffd3a9c6d707be22e3012b827de1c9775fc5ac",
+ "reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.15-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.15.0"
+ },
+ "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"
+ }
+ ],
+ "time": "2020-03-09T19:04:49+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php73",
+ "version": "v1.15.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7",
+ "reference": "0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.15-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.15.0"
+ },
+ "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"
+ }
+ ],
+ "time": "2020-02-27T09:26:54+00:00"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v5.0.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "c5ca4a0fc16a0c888067d43fbcfe1f8a53d8e70e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/c5ca4a0fc16a0c888067d43fbcfe1f8a53d8e70e",
+ "reference": "c5ca4a0fc16a0c888067d43fbcfe1f8a53d8e70e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Process\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Process Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/process/tree/v5.0.7"
+ },
+ "time": "2020-03-27T16:56:45+00:00"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "144c5e51266b281231e947b51223ba14acf1a749"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749",
+ "reference": "144c5e51266b281231e947b51223ba14acf1a749",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5",
+ "psr/container": "^1.0"
+ },
+ "suggest": {
+ "symfony/service-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/service-contracts/tree/v2.0.1"
+ },
+ "time": "2019-11-18T17:27:11+00:00"
+ },
+ {
+ "name": "theseer/tokenizer",
+ "version": "1.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theseer/tokenizer.git",
+ "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
+ "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "time": "2019-06-13T22:48:21+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/assert.git",
+ "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/ab2cb0b3b559010b75981b1bdce728da3ee90ad6",
+ "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "vimeo/psalm": "<3.9.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.36 || ^7.5.13"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "support": {
+ "issues": "https://github.com/webmozart/assert/issues",
+ "source": "https://github.com/webmozart/assert/tree/master"
+ },
+ "time": "2020-04-18T12:12:48+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": {
+ "composer/composer": 20
+ },
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": "^7",
+ "composer-plugin-api": "^1.1.0 || ^2.0"
+ },
+ "platform-dev": {
+ "ext-zip": "^1.13"
+ },
+ "plugin-api-version": "1.1.0"
+}
diff --git a/lib/composer/composer/package-versions-deprecated/phpcs.xml.dist b/lib/composer/composer/package-versions-deprecated/phpcs.xml.dist
new file mode 100644
index 0000000000000..e169c61679d95
--- /dev/null
+++ b/lib/composer/composer/package-versions-deprecated/phpcs.xml.dist
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+ src
+ test
+
+
+ src/PackageVersions/Versions.php
+
+
+
+ src/PackageVersions/Installer.php
+
+
diff --git a/lib/composer/composer/package-versions-deprecated/src/PackageVersions/FallbackVersions.php b/lib/composer/composer/package-versions-deprecated/src/PackageVersions/FallbackVersions.php
new file mode 100644
index 0000000000000..18e5fe64f627d
--- /dev/null
+++ b/lib/composer/composer/package-versions-deprecated/src/PackageVersions/FallbackVersions.php
@@ -0,0 +1,128 @@
+
+ */
+ private static function getVersions(array $packageData): Generator
+ {
+ foreach ($packageData as $package) {
+ yield $package['name'] => $package['version'] . '@' . (
+ $package['source']['reference'] ?? $package['dist']['reference'] ?? ''
+ );
+ }
+
+ yield self::ROOT_PACKAGE_NAME => self::ROOT_PACKAGE_NAME;
+ }
+}
diff --git a/lib/composer/composer/package-versions-deprecated/src/PackageVersions/Installer.php b/lib/composer/composer/package-versions-deprecated/src/PackageVersions/Installer.php
new file mode 100644
index 0000000000000..b87a7b1529f85
--- /dev/null
+++ b/lib/composer/composer/package-versions-deprecated/src/PackageVersions/Installer.php
@@ -0,0 +1,265 @@
+
+ * @internal
+ */
+ const VERSIONS = %s;
+
+ private function __construct()
+ {
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @psalm-suppress ImpureMethodCall we know that {@see InstalledVersions} interaction does not
+ * cause any side effects here.
+ */
+ public static function rootPackageName() : string
+ {
+ if (!class_exists(InstalledVersions::class, false) || !InstalledVersions::getRawData()) {
+ return self::ROOT_PACKAGE_NAME;
+ }
+
+ return InstalledVersions::getRootPackage()['name'];
+ }
+
+ /**
+ * @throws OutOfBoundsException If a version cannot be located.
+ *
+ * @psalm-param key-of $packageName
+ * @psalm-pure
+ *
+ * @psalm-suppress ImpureMethodCall we know that {@see InstalledVersions} interaction does not
+ * cause any side effects here.
+ */
+ public static function getVersion(string $packageName): string
+ {
+ if (class_exists(InstalledVersions::class, false) && InstalledVersions::getRawData()) {
+ return InstalledVersions::getPrettyVersion($packageName)
+ . '@' . InstalledVersions::getReference($packageName);
+ }
+
+ if (isset(self::VERSIONS[$packageName])) {
+ return self::VERSIONS[$packageName];
+ }
+
+ throw new OutOfBoundsException(
+ 'Required package "' . $packageName . '" is not installed: check your ./vendor/composer/installed.json and/or ./composer.lock files'
+ );
+ }
+}
+
+PHP;
+
+ public function activate(Composer $composer, IOInterface $io)
+ {
+ // Nothing to do here, as all features are provided through event listeners
+ }
+
+ public function deactivate(Composer $composer, IOInterface $io)
+ {
+ // Nothing to do here, as all features are provided through event listeners
+ }
+
+ public function uninstall(Composer $composer, IOInterface $io)
+ {
+ // Nothing to do here, as all features are provided through event listeners
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public static function getSubscribedEvents(): array
+ {
+ return [ScriptEvents::POST_AUTOLOAD_DUMP => 'dumpVersionsClass'];
+ }
+
+ /**
+ * @throws RuntimeException
+ */
+ public static function dumpVersionsClass(Event $composerEvent)
+ {
+ $composer = $composerEvent->getComposer();
+ $rootPackage = $composer->getPackage();
+ $versions = iterator_to_array(self::getVersions($composer->getLocker(), $rootPackage));
+
+ if (! array_key_exists('composer/package-versions-deprecated', $versions)) {
+ //plugin must be globally installed - we only want to generate versions for projects which specifically
+ //require composer/package-versions-deprecated
+ return;
+ }
+
+ $versionClass = self::generateVersionsClass($rootPackage->getName(), $versions);
+
+ self::writeVersionClassToFile($versionClass, $composer, $composerEvent->getIO());
+ }
+
+ /**
+ * @param string[] $versions
+ */
+ private static function generateVersionsClass(string $rootPackageName, array $versions): string
+ {
+ return sprintf(
+ self::$generatedClassTemplate,
+ 'fin' . 'al ' . 'cla' . 'ss ' . 'Versions', // note: workaround for regex-based code parsers :-(
+ $rootPackageName,
+ var_export($versions, true)
+ );
+ }
+
+ /**
+ * @throws RuntimeException
+ */
+ private static function writeVersionClassToFile(string $versionClassSource, Composer $composer, IOInterface $io)
+ {
+ $installPath = self::locateRootPackageInstallPath($composer->getConfig(), $composer->getPackage())
+ . '/src/PackageVersions/Versions.php';
+
+ $installDir = dirname($installPath);
+ if (! file_exists($installDir)) {
+ $io->write('composer/package-versions-deprecated: Package not found (probably scheduled for removal); generation of version class skipped.');
+
+ return;
+ }
+
+ if (! is_writable($installDir)) {
+ $io->write(
+ sprintf(
+ 'composer/package-versions-deprecated: %s is not writable; generation of version class skipped.',
+ $installDir
+ )
+ );
+
+ return;
+ }
+
+ $io->write('composer/package-versions-deprecated: Generating version class...');
+
+ $installPathTmp = $installPath . '_' . uniqid('tmp', true);
+ file_put_contents($installPathTmp, $versionClassSource);
+ chmod($installPathTmp, 0664);
+ rename($installPathTmp, $installPath);
+
+ $io->write('composer/package-versions-deprecated: ...done generating version class');
+ }
+
+ /**
+ * @throws RuntimeException
+ */
+ private static function locateRootPackageInstallPath(
+ Config $composerConfig,
+ RootPackageInterface $rootPackage
+ ): string {
+ if (self::getRootPackageAlias($rootPackage)->getName() === 'composer/package-versions-deprecated') {
+ return dirname($composerConfig->get('vendor-dir'));
+ }
+
+ return $composerConfig->get('vendor-dir') . '/composer/package-versions-deprecated';
+ }
+
+ private static function getRootPackageAlias(RootPackageInterface $rootPackage): PackageInterface
+ {
+ $package = $rootPackage;
+
+ while ($package instanceof AliasPackage) {
+ $package = $package->getAliasOf();
+ }
+
+ return $package;
+ }
+
+ /**
+ * @return Generator&string[]
+ *
+ * @psalm-return Generator
+ */
+ private static function getVersions(Locker $locker, RootPackageInterface $rootPackage): Generator
+ {
+ $lockData = $locker->getLockData();
+
+ $lockData['packages-dev'] = $lockData['packages-dev'] ?? [];
+
+ foreach (array_merge($lockData['packages'], $lockData['packages-dev']) as $package) {
+ yield $package['name'] => $package['version'] . '@' . (
+ $package['source']['reference'] ?? $package['dist']['reference'] ?? ''
+ );
+ }
+
+ foreach ($rootPackage->getReplaces() as $replace) {
+ $version = $replace->getPrettyConstraint();
+ if ($version === 'self.version') {
+ $version = $rootPackage->getPrettyVersion();
+ }
+
+ yield $replace->getTarget() => $version . '@' . $rootPackage->getSourceReference();
+ }
+
+ yield $rootPackage->getName() => $rootPackage->getPrettyVersion() . '@' . $rootPackage->getSourceReference();
+ }
+}
diff --git a/lib/composer/composer/package-versions-deprecated/src/PackageVersions/Versions.php b/lib/composer/composer/package-versions-deprecated/src/PackageVersions/Versions.php
new file mode 100644
index 0000000000000..67e8d3d1495f5
--- /dev/null
+++ b/lib/composer/composer/package-versions-deprecated/src/PackageVersions/Versions.php
@@ -0,0 +1,129 @@
+
+ * @internal
+ */
+ const VERSIONS = array (
+ 'amphp/amp' => 'v2.5.0@f220a51458bf4dd0dedebb171ac3457813c72bbc',
+ 'amphp/byte-stream' => 'v1.8.0@f0c20cf598a958ba2aa8c6e5a71c697d652c7088',
+ 'composer/package-versions-deprecated' => '1.11.99@c8c9aa8a14cc3d3bec86d0a8c3fa52ea79936855',
+ 'composer/semver' => '1.7.1@38276325bd896f90dfcfe30029aa5db40df387a7',
+ 'composer/xdebug-handler' => '1.4.3@ebd27a9866ae8254e873866f795491f02418c5a5',
+ 'dnoegel/php-xdg-base-dir' => 'v0.1.1@8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd',
+ 'doctrine/annotations' => '1.10.3@5db60a4969eba0e0c197a19c077780aadbc43c5d',
+ 'doctrine/lexer' => '1.2.1@e864bbf5904cb8f5bb334f99209b48018522f042',
+ 'felixfbecker/advanced-json-rpc' => 'v3.1.1@0ed363f8de17d284d479ec813c9ad3f6834b5c40',
+ 'felixfbecker/language-server-protocol' => 'v1.4.0@378801f6139bb74ac215d81cca1272af61df9a9f',
+ 'friendsofphp/php-cs-fixer' => 'v2.16.3@83baf823a33a1cbd5416c8626935cf3f843c10b0',
+ 'netresearch/jsonmapper' => 'v2.1.0@e0f1e33a71587aca81be5cffbb9746510e1fe04e',
+ 'nextcloud/coding-standard' => 'v0.3.0@4f5cd012760f8293e19e602651a0ecaa265e4db9',
+ 'nikic/php-parser' => 'v4.10.2@658f1be311a230e0907f5dfe0213742aff0596de',
+ 'openlss/lib-array2xml' => '1.0.0@a91f18a8dfc69ffabe5f9b068bc39bb202c81d90',
+ 'paragonie/random_compat' => 'v9.99.99@84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95',
+ 'php-cs-fixer/diff' => 'v1.3.0@78bb099e9c16361126c86ce82ec4405ebab8e756',
+ 'phpdocumentor/reflection-common' => '2.2.0@1d01c49d4ed62f25aa84a747ad35d5a16924662b',
+ 'phpdocumentor/reflection-docblock' => '5.2.2@069a785b2141f5bcf49f3e353548dc1cce6df556',
+ 'phpdocumentor/type-resolver' => '1.4.0@6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0',
+ 'psr/container' => '1.0.0@b7ce3b176482dbbc1245ebf52b181af44c2cf55f',
+ 'psr/event-dispatcher' => '1.0.0@dbefd12671e8a14ec7f180cab83036ed26714bb0',
+ 'psr/log' => '1.1.3@0f73288fd15629204f9d42b7055f72dacbe811fc',
+ 'sebastian/diff' => '4.0.3@ffc949a1a2aae270ea064453d7535b82e4c32092',
+ 'symfony/console' => 'v5.1.7@ae789a8a2ad189ce7e8216942cdb9b77319f5eb8',
+ 'symfony/deprecation-contracts' => 'v2.1.2@dd99cb3a0aff6cadd2a8d7d7ed72c2161e218337',
+ 'symfony/event-dispatcher' => 'v5.1.2@cc0d059e2e997e79ca34125a52f3e33de4424ac7',
+ 'symfony/event-dispatcher-contracts' => 'v2.1.2@405952c4e90941a17e52ef7489a2bd94870bb290',
+ 'symfony/filesystem' => 'v5.1.2@6e4320f06d5f2cce0d96530162491f4465179157',
+ 'symfony/finder' => 'v5.1.2@4298870062bfc667cb78d2b379be4bf5dec5f187',
+ 'symfony/options-resolver' => 'v5.1.2@663f5dd5e14057d1954fe721f9709d35837f2447',
+ 'symfony/polyfill-ctype' => 'v1.18.1@1c302646f6efc070cd46856e600e5e0684d6b454',
+ 'symfony/polyfill-intl-grapheme' => 'v1.18.1@b740103edbdcc39602239ee8860f0f45a8eb9aa5',
+ 'symfony/polyfill-intl-normalizer' => 'v1.18.1@37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e',
+ 'symfony/polyfill-mbstring' => 'v1.18.1@a6977d63bf9a0ad4c65cd352709e230876f9904a',
+ 'symfony/polyfill-php70' => 'v1.17.1@471b096aede7025bace8eb356b9ac801aaba7e2d',
+ 'symfony/polyfill-php72' => 'v1.17.0@f048e612a3905f34931127360bdd2def19a5e582',
+ 'symfony/polyfill-php73' => 'v1.18.1@fffa1a52a023e782cdcc221d781fe1ec8f87fcca',
+ 'symfony/polyfill-php80' => 'v1.18.1@d87d5766cbf48d72388a9f6b85f280c8ad51f981',
+ 'symfony/process' => 'v5.1.2@7f6378c1fa2147eeb1b4c385856ce9de0d46ebd1',
+ 'symfony/service-contracts' => 'v2.2.0@d15da7ba4957ffb8f1747218be9e1a121fd298a1',
+ 'symfony/stopwatch' => 'v5.1.2@0f7c58cf81dbb5dd67d423a89d577524a2ec0323',
+ 'symfony/string' => 'v5.1.7@4a9afe9d07bac506f75bcee8ed3ce76da5a9343e',
+ 'vimeo/psalm' => '4.0.1@b1e2e30026936ef8d5bf6a354d1c3959b6231f44',
+ 'webmozart/assert' => '1.9.1@bafc69caeb4d49c39fd0779086c03a3738cbb389',
+ 'webmozart/glob' => '4.1.0@3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe',
+ 'webmozart/path-util' => '2.3.0@d939f7edc24c9a1bb9c0dee5cb05d8e859490725',
+ '__root__' => 'dev-master@11fca45e4c9ed5bc53436b6232a656a51f4984fa',
+);
+
+ private function __construct()
+ {
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @psalm-suppress ImpureMethodCall we know that {@see InstalledVersions} interaction does not
+ * cause any side effects here.
+ */
+ public static function rootPackageName() : string
+ {
+ if (!class_exists(InstalledVersions::class, false) || !InstalledVersions::getRawData()) {
+ return self::ROOT_PACKAGE_NAME;
+ }
+
+ return InstalledVersions::getRootPackage()['name'];
+ }
+
+ /**
+ * @throws OutOfBoundsException If a version cannot be located.
+ *
+ * @psalm-param key-of $packageName
+ * @psalm-pure
+ *
+ * @psalm-suppress ImpureMethodCall we know that {@see InstalledVersions} interaction does not
+ * cause any side effects here.
+ */
+ public static function getVersion(string $packageName): string
+ {
+ if (class_exists(InstalledVersions::class, false) && InstalledVersions::getRawData()) {
+ return InstalledVersions::getPrettyVersion($packageName)
+ . '@' . InstalledVersions::getReference($packageName);
+ }
+
+ if (isset(self::VERSIONS[$packageName])) {
+ return self::VERSIONS[$packageName];
+ }
+
+ throw new OutOfBoundsException(
+ 'Required package "' . $packageName . '" is not installed: check your ./vendor/composer/installed.json and/or ./composer.lock files'
+ );
+ }
+}
diff --git a/lib/composer/composer/platform_check.php b/lib/composer/composer/platform_check.php
new file mode 100644
index 0000000000000..7bee0cee6314a
--- /dev/null
+++ b/lib/composer/composer/platform_check.php
@@ -0,0 +1,31 @@
+= 70300)) {
+ $issues[] = 'Your Composer dependencies require a PHP version ">= 7.3.0". You are running ' . PHP_VERSION . '.';
+}
+
+$missingExtensions = array();
+extension_loaded('dom') || $missingExtensions[] = 'dom';
+extension_loaded('filter') || $missingExtensions[] = 'filter';
+extension_loaded('json') || $missingExtensions[] = 'json';
+extension_loaded('libxml') || $missingExtensions[] = 'libxml';
+extension_loaded('mbstring') || $missingExtensions[] = 'mbstring';
+extension_loaded('pcre') || $missingExtensions[] = 'pcre';
+extension_loaded('pdo') || $missingExtensions[] = 'pdo';
+extension_loaded('reflection') || $missingExtensions[] = 'reflection';
+extension_loaded('simplexml') || $missingExtensions[] = 'simplexml';
+extension_loaded('spl') || $missingExtensions[] = 'spl';
+extension_loaded('tokenizer') || $missingExtensions[] = 'tokenizer';
+
+if ($missingExtensions) {
+ $issues[] = 'Your Composer dependencies require the following PHP extensions to be installed: ' . implode(', ', $missingExtensions);
+}
+
+if ($issues) {
+ echo 'Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues);
+ exit(104);
+}
diff --git a/lib/composer/composer/semver/CHANGELOG.md b/lib/composer/composer/semver/CHANGELOG.md
new file mode 100644
index 0000000000000..c2dbd3fbfb21e
--- /dev/null
+++ b/lib/composer/composer/semver/CHANGELOG.md
@@ -0,0 +1,102 @@
+# Change Log
+
+All notable changes to this project will be documented in this file.
+This project adheres to [Semantic Versioning](http://semver.org/).
+
+### [1.7.1] 2020-09-27
+
+ * Fixed: accidental validation of broken constraints combining ^/~ and wildcards, and -dev suffix allowing weird cases
+ * Fixed: normalization of beta0 and such which was dropping the 0
+
+### [1.7.0] 2020-09-09
+
+ * Added: support for `x || @dev`, not very useful but seen in the wild and failed to validate with 1.5.2/1.6.0
+ * Added: support for `foobar-dev` being equal to `dev-foobar`, dev-foobar is the official way to write it but we need to support the other for BC and convenience
+
+### [1.6.0] 2020-09-08
+
+ * Added: support for constraints like `^2.x-dev` and `~2.x-dev`, not very useful but seen in the wild and failed to validate with 1.5.2
+ * Fixed: invalid aliases will no longer throw, unless explicitly validated by Composer in the root package
+
+### [1.5.2] 2020-09-08
+
+ * Fixed: handling of some invalid -dev versions which were seen as valid
+ * Fixed: some doctypes
+
+### [1.5.1] 2020-01-13
+
+ * Fixed: Parsing of aliased version was not validating the alias to be a valid version
+
+### [1.5.0] 2019-03-19
+
+ * Added: some support for date versions (e.g. 201903) in `~` operator
+ * Fixed: support for stabilities in `~` operator was inconsistent
+
+### [1.4.2] 2016-08-30
+
+ * Fixed: collapsing of complex constraints lead to buggy constraints
+
+### [1.4.1] 2016-06-02
+
+ * Changed: branch-like requirements no longer strip build metadata - [composer/semver#38](https://github.com/composer/semver/pull/38).
+
+### [1.4.0] 2016-03-30
+
+ * Added: getters on MultiConstraint - [composer/semver#35](https://github.com/composer/semver/pull/35).
+
+### [1.3.0] 2016-02-25
+
+ * Fixed: stability parsing - [composer/composer#1234](https://github.com/composer/composer/issues/4889).
+ * Changed: collapse contiguous constraints when possible.
+
+### [1.2.0] 2015-11-10
+
+ * Changed: allow multiple numerical identifiers in 'pre-release' version part.
+ * Changed: add more 'v' prefix support.
+
+### [1.1.0] 2015-11-03
+
+ * Changed: dropped redundant `test` namespace.
+ * Changed: minor adjustment in datetime parsing normalization.
+ * Changed: `ConstraintInterface` relaxed, setPrettyString is not required anymore.
+ * Changed: `AbstractConstraint` marked deprecated, will be removed in 2.0.
+ * Changed: `Constraint` is now extensible.
+
+### [1.0.0] 2015-09-21
+
+ * Break: `VersionConstraint` renamed to `Constraint`.
+ * Break: `SpecificConstraint` renamed to `AbstractConstraint`.
+ * Break: `LinkConstraintInterface` renamed to `ConstraintInterface`.
+ * Break: `VersionParser::parseNameVersionPairs` was removed.
+ * Changed: `VersionParser::parseConstraints` allows (but ignores) build metadata now.
+ * Changed: `VersionParser::parseConstraints` allows (but ignores) prefixing numeric versions with a 'v' now.
+ * Changed: Fixed namespace(s) of test files.
+ * Changed: `Comparator::compare` no longer throws `InvalidArgumentException`.
+ * Changed: `Constraint` now throws `InvalidArgumentException`.
+
+### [0.1.0] 2015-07-23
+
+ * Added: `Composer\Semver\Comparator`, various methods to compare versions.
+ * Added: various documents such as README.md, LICENSE, etc.
+ * Added: configuration files for Git, Travis, php-cs-fixer, phpunit.
+ * Break: the following namespaces were renamed:
+ - Namespace: `Composer\Package\Version` -> `Composer\Semver`
+ - Namespace: `Composer\Package\LinkConstraint` -> `Composer\Semver\Constraint`
+ - Namespace: `Composer\Test\Package\Version` -> `Composer\Test\Semver`
+ - Namespace: `Composer\Test\Package\LinkConstraint` -> `Composer\Test\Semver\Constraint`
+ * Changed: code style using php-cs-fixer.
+
+[1.7.1]: https://github.com/composer/semver/compare/1.7.0...1.7.1
+[1.7.0]: https://github.com/composer/semver/compare/1.6.0...1.7.0
+[1.6.0]: https://github.com/composer/semver/compare/1.5.2...1.6.0
+[1.5.2]: https://github.com/composer/semver/compare/1.5.1...1.5.2
+[1.5.1]: https://github.com/composer/semver/compare/1.5.0...1.5.1
+[1.5.0]: https://github.com/composer/semver/compare/1.4.2...1.5.0
+[1.4.2]: https://github.com/composer/semver/compare/1.4.1...1.4.2
+[1.4.1]: https://github.com/composer/semver/compare/1.4.0...1.4.1
+[1.4.0]: https://github.com/composer/semver/compare/1.3.0...1.4.0
+[1.3.0]: https://github.com/composer/semver/compare/1.2.0...1.3.0
+[1.2.0]: https://github.com/composer/semver/compare/1.1.0...1.2.0
+[1.1.0]: https://github.com/composer/semver/compare/1.0.0...1.1.0
+[1.0.0]: https://github.com/composer/semver/compare/0.1.0...1.0.0
+[0.1.0]: https://github.com/composer/semver/compare/5e0b9a4da...0.1.0
diff --git a/lib/composer/composer/semver/LICENSE b/lib/composer/composer/semver/LICENSE
new file mode 100644
index 0000000000000..466975862624c
--- /dev/null
+++ b/lib/composer/composer/semver/LICENSE
@@ -0,0 +1,19 @@
+Copyright (C) 2015 Composer
+
+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/lib/composer/composer/semver/README.md b/lib/composer/composer/semver/README.md
new file mode 100644
index 0000000000000..409b9dcbaeb41
--- /dev/null
+++ b/lib/composer/composer/semver/README.md
@@ -0,0 +1,70 @@
+composer/semver
+===============
+
+Semver library that offers utilities, version constraint parsing and validation.
+
+Originally written as part of [composer/composer](https://github.com/composer/composer),
+now extracted and made available as a stand-alone library.
+
+[![Build Status](https://travis-ci.org/composer/semver.svg?branch=master)](https://travis-ci.org/composer/semver)
+
+
+Installation
+------------
+
+Install the latest version with:
+
+```bash
+$ composer require composer/semver
+```
+
+
+Requirements
+------------
+
+* PHP 5.3.2 is required but using the latest version of PHP is highly recommended.
+
+
+Version Comparison
+------------------
+
+For details on how versions are compared, refer to the [Versions](https://getcomposer.org/doc/articles/versions.md)
+article in the documentation section of the [getcomposer.org](https://getcomposer.org) website.
+
+
+Basic usage
+-----------
+
+### Comparator
+
+The `Composer\Semver\Comparator` class provides the following methods for comparing versions:
+
+* greaterThan($v1, $v2)
+* greaterThanOrEqualTo($v1, $v2)
+* lessThan($v1, $v2)
+* lessThanOrEqualTo($v1, $v2)
+* equalTo($v1, $v2)
+* notEqualTo($v1, $v2)
+
+Each function takes two version strings as arguments and returns a boolean. For example:
+
+```php
+use Composer\Semver\Comparator;
+
+Comparator::greaterThan('1.25.0', '1.24.0'); // 1.25.0 > 1.24.0
+```
+
+### Semver
+
+The `Composer\Semver\Semver` class provides the following methods:
+
+* satisfies($version, $constraints)
+* satisfiedBy(array $versions, $constraint)
+* sort($versions)
+* rsort($versions)
+
+
+License
+-------
+
+composer/semver is licensed under the MIT License, see the LICENSE file for details.
diff --git a/lib/composer/composer/semver/composer.json b/lib/composer/composer/semver/composer.json
new file mode 100644
index 0000000000000..981e7d1552f08
--- /dev/null
+++ b/lib/composer/composer/semver/composer.json
@@ -0,0 +1,57 @@
+{
+ "name": "composer/semver",
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
+ "type": "library",
+ "license": "MIT",
+ "keywords": [
+ "semver",
+ "semantic",
+ "versioning",
+ "validation"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/semver/issues"
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.5 || ^5.0.5"
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Semver\\": "src"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Composer\\Semver\\": "tests"
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "scripts": {
+ "test": "phpunit"
+ }
+}
diff --git a/lib/composer/composer/semver/src/Comparator.php b/lib/composer/composer/semver/src/Comparator.php
new file mode 100644
index 0000000000000..a9d758f1c0cee
--- /dev/null
+++ b/lib/composer/composer/semver/src/Comparator.php
@@ -0,0 +1,111 @@
+
+ *
+ * For the full copyright and license information, please view
+ * the LICENSE file that was distributed with this source code.
+ */
+
+namespace Composer\Semver;
+
+use Composer\Semver\Constraint\Constraint;
+
+class Comparator
+{
+ /**
+ * Evaluates the expression: $version1 > $version2.
+ *
+ * @param string $version1
+ * @param string $version2
+ *
+ * @return bool
+ */
+ public static function greaterThan($version1, $version2)
+ {
+ return self::compare($version1, '>', $version2);
+ }
+
+ /**
+ * Evaluates the expression: $version1 >= $version2.
+ *
+ * @param string $version1
+ * @param string $version2
+ *
+ * @return bool
+ */
+ public static function greaterThanOrEqualTo($version1, $version2)
+ {
+ return self::compare($version1, '>=', $version2);
+ }
+
+ /**
+ * Evaluates the expression: $version1 < $version2.
+ *
+ * @param string $version1
+ * @param string $version2
+ *
+ * @return bool
+ */
+ public static function lessThan($version1, $version2)
+ {
+ return self::compare($version1, '<', $version2);
+ }
+
+ /**
+ * Evaluates the expression: $version1 <= $version2.
+ *
+ * @param string $version1
+ * @param string $version2
+ *
+ * @return bool
+ */
+ public static function lessThanOrEqualTo($version1, $version2)
+ {
+ return self::compare($version1, '<=', $version2);
+ }
+
+ /**
+ * Evaluates the expression: $version1 == $version2.
+ *
+ * @param string $version1
+ * @param string $version2
+ *
+ * @return bool
+ */
+ public static function equalTo($version1, $version2)
+ {
+ return self::compare($version1, '==', $version2);
+ }
+
+ /**
+ * Evaluates the expression: $version1 != $version2.
+ *
+ * @param string $version1
+ * @param string $version2
+ *
+ * @return bool
+ */
+ public static function notEqualTo($version1, $version2)
+ {
+ return self::compare($version1, '!=', $version2);
+ }
+
+ /**
+ * Evaluates the expression: $version1 $operator $version2.
+ *
+ * @param string $version1
+ * @param string $operator
+ * @param string $version2
+ *
+ * @return bool
+ */
+ public static function compare($version1, $operator, $version2)
+ {
+ $constraint = new Constraint($operator, $version2);
+
+ return $constraint->matches(new Constraint('==', $version1));
+ }
+}
diff --git a/lib/composer/composer/semver/src/Constraint/AbstractConstraint.php b/lib/composer/composer/semver/src/Constraint/AbstractConstraint.php
new file mode 100644
index 0000000000000..7b5270fa350ac
--- /dev/null
+++ b/lib/composer/composer/semver/src/Constraint/AbstractConstraint.php
@@ -0,0 +1,63 @@
+
+ *
+ * For the full copyright and license information, please view
+ * the LICENSE file that was distributed with this source code.
+ */
+
+namespace Composer\Semver\Constraint;
+
+trigger_error('The ' . __NAMESPACE__ . '\AbstractConstraint abstract class is deprecated, there is no replacement for it, it will be removed in the next major version.', E_USER_DEPRECATED);
+
+/**
+ * Base constraint class.
+ */
+abstract class AbstractConstraint implements ConstraintInterface
+{
+ /** @var string */
+ protected $prettyString;
+
+ /**
+ * @param ConstraintInterface $provider
+ *
+ * @return bool
+ */
+ public function matches(ConstraintInterface $provider)
+ {
+ if ($provider instanceof $this) {
+ // see note at bottom of this class declaration
+ return $this->matchSpecific($provider);
+ }
+
+ // turn matching around to find a match
+ return $provider->matches($this);
+ }
+
+ /**
+ * @param string $prettyString
+ */
+ public function setPrettyString($prettyString)
+ {
+ $this->prettyString = $prettyString;
+ }
+
+ /**
+ * @return string
+ */
+ public function getPrettyString()
+ {
+ if ($this->prettyString) {
+ return $this->prettyString;
+ }
+
+ return $this->__toString();
+ }
+
+ // implementations must implement a method of this format:
+ // not declared abstract here because type hinting violates parameter coherence (TODO right word?)
+ // public function matchSpecific( $provider);
+}
diff --git a/lib/composer/composer/semver/src/Constraint/Constraint.php b/lib/composer/composer/semver/src/Constraint/Constraint.php
new file mode 100644
index 0000000000000..0f28d64357c8d
--- /dev/null
+++ b/lib/composer/composer/semver/src/Constraint/Constraint.php
@@ -0,0 +1,215 @@
+
+ *
+ * For the full copyright and license information, please view
+ * the LICENSE file that was distributed with this source code.
+ */
+
+namespace Composer\Semver\Constraint;
+
+/**
+ * Defines a constraint.
+ */
+class Constraint implements ConstraintInterface
+{
+ /* operator integer values */
+ const OP_EQ = 0;
+ const OP_LT = 1;
+ const OP_LE = 2;
+ const OP_GT = 3;
+ const OP_GE = 4;
+ const OP_NE = 5;
+
+ /**
+ * Operator to integer translation table.
+ *
+ * @var array
+ */
+ private static $transOpStr = array(
+ '=' => self::OP_EQ,
+ '==' => self::OP_EQ,
+ '<' => self::OP_LT,
+ '<=' => self::OP_LE,
+ '>' => self::OP_GT,
+ '>=' => self::OP_GE,
+ '<>' => self::OP_NE,
+ '!=' => self::OP_NE,
+ );
+
+ /**
+ * Integer to operator translation table.
+ *
+ * @var array
+ */
+ private static $transOpInt = array(
+ self::OP_EQ => '==',
+ self::OP_LT => '<',
+ self::OP_LE => '<=',
+ self::OP_GT => '>',
+ self::OP_GE => '>=',
+ self::OP_NE => '!=',
+ );
+
+ /** @var int */
+ protected $operator;
+
+ /** @var string */
+ protected $version;
+
+ /** @var string */
+ protected $prettyString;
+
+ /**
+ * @param ConstraintInterface $provider
+ *
+ * @return bool
+ */
+ public function matches(ConstraintInterface $provider)
+ {
+ if ($provider instanceof $this) {
+ return $this->matchSpecific($provider);
+ }
+
+ // turn matching around to find a match
+ return $provider->matches($this);
+ }
+
+ /**
+ * @param string $prettyString
+ */
+ public function setPrettyString($prettyString)
+ {
+ $this->prettyString = $prettyString;
+ }
+
+ /**
+ * @return string
+ */
+ public function getPrettyString()
+ {
+ if ($this->prettyString) {
+ return $this->prettyString;
+ }
+
+ return $this->__toString();
+ }
+
+ /**
+ * Get all supported comparison operators.
+ *
+ * @return array
+ */
+ public static function getSupportedOperators()
+ {
+ return array_keys(self::$transOpStr);
+ }
+
+ /**
+ * Sets operator and version to compare with.
+ *
+ * @param string $operator
+ * @param string $version
+ *
+ * @throws \InvalidArgumentException if invalid operator is given.
+ */
+ public function __construct($operator, $version)
+ {
+ if (!isset(self::$transOpStr[$operator])) {
+ throw new \InvalidArgumentException(sprintf(
+ 'Invalid operator "%s" given, expected one of: %s',
+ $operator,
+ implode(', ', self::getSupportedOperators())
+ ));
+ }
+
+ $this->operator = self::$transOpStr[$operator];
+ $this->version = $version;
+ }
+
+ /**
+ * @param string $a
+ * @param string $b
+ * @param string $operator
+ * @param bool $compareBranches
+ *
+ * @throws \InvalidArgumentException if invalid operator is given.
+ *
+ * @return bool
+ */
+ public function versionCompare($a, $b, $operator, $compareBranches = false)
+ {
+ if (!isset(self::$transOpStr[$operator])) {
+ throw new \InvalidArgumentException(sprintf(
+ 'Invalid operator "%s" given, expected one of: %s',
+ $operator,
+ implode(', ', self::getSupportedOperators())
+ ));
+ }
+
+ $aIsBranch = 'dev-' === substr($a, 0, 4);
+ $bIsBranch = 'dev-' === substr($b, 0, 4);
+
+ if ($aIsBranch && $bIsBranch) {
+ return $operator === '==' && $a === $b;
+ }
+
+ // when branches are not comparable, we make sure dev branches never match anything
+ if (!$compareBranches && ($aIsBranch || $bIsBranch)) {
+ return false;
+ }
+
+ return version_compare($a, $b, $operator);
+ }
+
+ /**
+ * @param Constraint $provider
+ * @param bool $compareBranches
+ *
+ * @return bool
+ */
+ public function matchSpecific(Constraint $provider, $compareBranches = false)
+ {
+ $noEqualOp = str_replace('=', '', self::$transOpInt[$this->operator]);
+ $providerNoEqualOp = str_replace('=', '', self::$transOpInt[$provider->operator]);
+
+ $isEqualOp = self::OP_EQ === $this->operator;
+ $isNonEqualOp = self::OP_NE === $this->operator;
+ $isProviderEqualOp = self::OP_EQ === $provider->operator;
+ $isProviderNonEqualOp = self::OP_NE === $provider->operator;
+
+ // '!=' operator is match when other operator is not '==' operator or version is not match
+ // these kinds of comparisons always have a solution
+ if ($isNonEqualOp || $isProviderNonEqualOp) {
+ return (!$isEqualOp && !$isProviderEqualOp)
+ || $this->versionCompare($provider->version, $this->version, '!=', $compareBranches);
+ }
+
+ // an example for the condition is <= 2.0 & < 1.0
+ // these kinds of comparisons always have a solution
+ if ($this->operator !== self::OP_EQ && $noEqualOp === $providerNoEqualOp) {
+ return true;
+ }
+
+ if ($this->versionCompare($provider->version, $this->version, self::$transOpInt[$this->operator], $compareBranches)) {
+ // special case, e.g. require >= 1.0 and provide < 1.0
+ // 1.0 >= 1.0 but 1.0 is outside of the provided interval
+ return !($provider->version === $this->version
+ && self::$transOpInt[$provider->operator] === $providerNoEqualOp
+ && self::$transOpInt[$this->operator] !== $noEqualOp);
+ }
+
+ return false;
+ }
+
+ /**
+ * @return string
+ */
+ public function __toString()
+ {
+ return self::$transOpInt[$this->operator] . ' ' . $this->version;
+ }
+}
diff --git a/lib/composer/composer/semver/src/Constraint/ConstraintInterface.php b/lib/composer/composer/semver/src/Constraint/ConstraintInterface.php
new file mode 100644
index 0000000000000..7cb13b6a86e4f
--- /dev/null
+++ b/lib/composer/composer/semver/src/Constraint/ConstraintInterface.php
@@ -0,0 +1,32 @@
+
+ *
+ * For the full copyright and license information, please view
+ * the LICENSE file that was distributed with this source code.
+ */
+
+namespace Composer\Semver\Constraint;
+
+interface ConstraintInterface
+{
+ /**
+ * @param ConstraintInterface $provider
+ *
+ * @return bool
+ */
+ public function matches(ConstraintInterface $provider);
+
+ /**
+ * @return string
+ */
+ public function getPrettyString();
+
+ /**
+ * @return string
+ */
+ public function __toString();
+}
diff --git a/lib/composer/composer/semver/src/Constraint/EmptyConstraint.php b/lib/composer/composer/semver/src/Constraint/EmptyConstraint.php
new file mode 100644
index 0000000000000..a082b80928666
--- /dev/null
+++ b/lib/composer/composer/semver/src/Constraint/EmptyConstraint.php
@@ -0,0 +1,59 @@
+
+ *
+ * For the full copyright and license information, please view
+ * the LICENSE file that was distributed with this source code.
+ */
+
+namespace Composer\Semver\Constraint;
+
+/**
+ * Defines the absence of a constraint.
+ */
+class EmptyConstraint implements ConstraintInterface
+{
+ /** @var string */
+ protected $prettyString;
+
+ /**
+ * @param ConstraintInterface $provider
+ *
+ * @return bool
+ */
+ public function matches(ConstraintInterface $provider)
+ {
+ return true;
+ }
+
+ /**
+ * @param string $prettyString
+ */
+ public function setPrettyString($prettyString)
+ {
+ $this->prettyString = $prettyString;
+ }
+
+ /**
+ * @return string
+ */
+ public function getPrettyString()
+ {
+ if ($this->prettyString) {
+ return $this->prettyString;
+ }
+
+ return (string) $this;
+ }
+
+ /**
+ * @return string
+ */
+ public function __toString()
+ {
+ return '[]';
+ }
+}
diff --git a/lib/composer/composer/semver/src/Constraint/MultiConstraint.php b/lib/composer/composer/semver/src/Constraint/MultiConstraint.php
new file mode 100644
index 0000000000000..911285302dabd
--- /dev/null
+++ b/lib/composer/composer/semver/src/Constraint/MultiConstraint.php
@@ -0,0 +1,120 @@
+
+ *
+ * For the full copyright and license information, please view
+ * the LICENSE file that was distributed with this source code.
+ */
+
+namespace Composer\Semver\Constraint;
+
+/**
+ * Defines a conjunctive or disjunctive set of constraints.
+ */
+class MultiConstraint implements ConstraintInterface
+{
+ /** @var ConstraintInterface[] */
+ protected $constraints;
+
+ /** @var string|null */
+ protected $prettyString;
+
+ /** @var bool */
+ protected $conjunctive;
+
+ /**
+ * @param ConstraintInterface[] $constraints A set of constraints
+ * @param bool $conjunctive Whether the constraints should be treated as conjunctive or disjunctive
+ */
+ public function __construct(array $constraints, $conjunctive = true)
+ {
+ $this->constraints = $constraints;
+ $this->conjunctive = $conjunctive;
+ }
+
+ /**
+ * @return ConstraintInterface[]
+ */
+ public function getConstraints()
+ {
+ return $this->constraints;
+ }
+
+ /**
+ * @return bool
+ */
+ public function isConjunctive()
+ {
+ return $this->conjunctive;
+ }
+
+ /**
+ * @return bool
+ */
+ public function isDisjunctive()
+ {
+ return !$this->conjunctive;
+ }
+
+ /**
+ * @param ConstraintInterface $provider
+ *
+ * @return bool
+ */
+ public function matches(ConstraintInterface $provider)
+ {
+ if (false === $this->conjunctive) {
+ foreach ($this->constraints as $constraint) {
+ if ($constraint->matches($provider)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ foreach ($this->constraints as $constraint) {
+ if (!$constraint->matches($provider)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * @param string|null $prettyString
+ */
+ public function setPrettyString($prettyString)
+ {
+ $this->prettyString = $prettyString;
+ }
+
+ /**
+ * @return string
+ */
+ public function getPrettyString()
+ {
+ if ($this->prettyString) {
+ return $this->prettyString;
+ }
+
+ return (string) $this;
+ }
+
+ /**
+ * @return string
+ */
+ public function __toString()
+ {
+ $constraints = array();
+ foreach ($this->constraints as $constraint) {
+ $constraints[] = (string) $constraint;
+ }
+
+ return '[' . implode($this->conjunctive ? ' ' : ' || ', $constraints) . ']';
+ }
+}
diff --git a/lib/composer/composer/semver/src/Semver.php b/lib/composer/composer/semver/src/Semver.php
new file mode 100644
index 0000000000000..4f312d73d32ef
--- /dev/null
+++ b/lib/composer/composer/semver/src/Semver.php
@@ -0,0 +1,127 @@
+
+ *
+ * For the full copyright and license information, please view
+ * the LICENSE file that was distributed with this source code.
+ */
+
+namespace Composer\Semver;
+
+use Composer\Semver\Constraint\Constraint;
+
+class Semver
+{
+ const SORT_ASC = 1;
+ const SORT_DESC = -1;
+
+ /** @var VersionParser */
+ private static $versionParser;
+
+ /**
+ * Determine if given version satisfies given constraints.
+ *
+ * @param string $version
+ * @param string $constraints
+ *
+ * @return bool
+ */
+ public static function satisfies($version, $constraints)
+ {
+ if (null === self::$versionParser) {
+ self::$versionParser = new VersionParser();
+ }
+
+ $versionParser = self::$versionParser;
+ $provider = new Constraint('==', $versionParser->normalize($version));
+ $parsedConstraints = $versionParser->parseConstraints($constraints);
+
+ return $parsedConstraints->matches($provider);
+ }
+
+ /**
+ * Return all versions that satisfy given constraints.
+ *
+ * @param array $versions
+ * @param string $constraints
+ *
+ * @return array
+ */
+ public static function satisfiedBy(array $versions, $constraints)
+ {
+ $versions = array_filter($versions, function ($version) use ($constraints) {
+ return Semver::satisfies($version, $constraints);
+ });
+
+ return array_values($versions);
+ }
+
+ /**
+ * Sort given array of versions.
+ *
+ * @param array $versions
+ *
+ * @return array
+ */
+ public static function sort(array $versions)
+ {
+ return self::usort($versions, self::SORT_ASC);
+ }
+
+ /**
+ * Sort given array of versions in reverse.
+ *
+ * @param array $versions
+ *
+ * @return array
+ */
+ public static function rsort(array $versions)
+ {
+ return self::usort($versions, self::SORT_DESC);
+ }
+
+ /**
+ * @param array $versions
+ * @param int $direction
+ *
+ * @return array
+ */
+ private static function usort(array $versions, $direction)
+ {
+ if (null === self::$versionParser) {
+ self::$versionParser = new VersionParser();
+ }
+
+ $versionParser = self::$versionParser;
+ $normalized = array();
+
+ // Normalize outside of usort() scope for minor performance increase.
+ // Creates an array of arrays: [[normalized, key], ...]
+ foreach ($versions as $key => $version) {
+ $normalized[] = array($versionParser->normalize($version), $key);
+ }
+
+ usort($normalized, function (array $left, array $right) use ($direction) {
+ if ($left[0] === $right[0]) {
+ return 0;
+ }
+
+ if (Comparator::lessThan($left[0], $right[0])) {
+ return -$direction;
+ }
+
+ return $direction;
+ });
+
+ // Recreate input array, using the original indexes which are now in sorted order.
+ $sorted = array();
+ foreach ($normalized as $item) {
+ $sorted[] = $versions[$item[1]];
+ }
+
+ return $sorted;
+ }
+}
diff --git a/lib/composer/composer/semver/src/VersionParser.php b/lib/composer/composer/semver/src/VersionParser.php
new file mode 100644
index 0000000000000..5af0fa307fb91
--- /dev/null
+++ b/lib/composer/composer/semver/src/VersionParser.php
@@ -0,0 +1,578 @@
+
+ *
+ * For the full copyright and license information, please view
+ * the LICENSE file that was distributed with this source code.
+ */
+
+namespace Composer\Semver;
+
+use Composer\Semver\Constraint\ConstraintInterface;
+use Composer\Semver\Constraint\EmptyConstraint;
+use Composer\Semver\Constraint\MultiConstraint;
+use Composer\Semver\Constraint\Constraint;
+
+/**
+ * Version parser.
+ *
+ * @author Jordi Boggiano
+ */
+class VersionParser
+{
+ /**
+ * Regex to match pre-release data (sort of).
+ *
+ * Due to backwards compatibility:
+ * - Instead of enforcing hyphen, an underscore, dot or nothing at all are also accepted.
+ * - Only stabilities as recognized by Composer are allowed to precede a numerical identifier.
+ * - Numerical-only pre-release identifiers are not supported, see tests.
+ *
+ * |--------------|
+ * [major].[minor].[patch] -[pre-release] +[build-metadata]
+ *
+ * @var string
+ */
+ private static $modifierRegex = '[._-]?(?:(stable|beta|b|RC|alpha|a|patch|pl|p)((?:[.-]?\d+)*+)?)?([.-]?dev)?';
+
+ /** @var string */
+ private static $stabilitiesRegex = 'stable|RC|beta|alpha|dev';
+
+ /**
+ * Returns the stability of a version.
+ *
+ * @param string $version
+ *
+ * @return string
+ */
+ public static function parseStability($version)
+ {
+ $version = preg_replace('{#.+$}i', '', $version);
+
+ if (strpos($version, 'dev-') === 0 || '-dev' === substr($version, -4)) {
+ return 'dev';
+ }
+
+ preg_match('{' . self::$modifierRegex . '(?:\+.*)?$}i', strtolower($version), $match);
+
+ if (!empty($match[3])) {
+ return 'dev';
+ }
+
+ if (!empty($match[1])) {
+ if ('beta' === $match[1] || 'b' === $match[1]) {
+ return 'beta';
+ }
+ if ('alpha' === $match[1] || 'a' === $match[1]) {
+ return 'alpha';
+ }
+ if ('rc' === $match[1]) {
+ return 'RC';
+ }
+ }
+
+ return 'stable';
+ }
+
+ /**
+ * @param string $stability
+ *
+ * @return string
+ */
+ public static function normalizeStability($stability)
+ {
+ $stability = strtolower($stability);
+
+ return $stability === 'rc' ? 'RC' : $stability;
+ }
+
+ /**
+ * Normalizes a version string to be able to perform comparisons on it.
+ *
+ * @param string $version
+ * @param string $fullVersion optional complete version string to give more context
+ *
+ * @throws \UnexpectedValueException
+ *
+ * @return string
+ */
+ public function normalize($version, $fullVersion = null)
+ {
+ $version = trim($version);
+ $origVersion = $version;
+ if (null === $fullVersion) {
+ $fullVersion = $version;
+ }
+
+ // strip off aliasing
+ if (preg_match('{^([^,\s]++) ++as ++([^,\s]++)$}', $version, $match)) {
+ $version = $match[1];
+ }
+
+ // strip off stability flag
+ if (preg_match('{@(?:' . self::$stabilitiesRegex . ')$}i', $version, $match)) {
+ $version = substr($version, 0, strlen($version) - strlen($match[0]));
+ }
+
+ // match master-like branches
+ if (preg_match('{^(?:dev-)?(?:master|trunk|default)$}i', $version)) {
+ return '9999999-dev';
+ }
+
+ // if requirement is branch-like, use full name
+ if (stripos($version, 'dev-') === 0) {
+ return 'dev-' . substr($version, 4);
+ }
+
+ // strip off build metadata
+ if (preg_match('{^([^,\s+]++)\+[^\s]++$}', $version, $match)) {
+ $version = $match[1];
+ }
+
+ // match classical versioning
+ if (preg_match('{^v?(\d{1,5})(\.\d++)?(\.\d++)?(\.\d++)?' . self::$modifierRegex . '$}i', $version, $matches)) {
+ $version = $matches[1]
+ . (!empty($matches[2]) ? $matches[2] : '.0')
+ . (!empty($matches[3]) ? $matches[3] : '.0')
+ . (!empty($matches[4]) ? $matches[4] : '.0');
+ $index = 5;
+ // match date(time) based versioning
+ } elseif (preg_match('{^v?(\d{4}(?:[.:-]?\d{2}){1,6}(?:[.:-]?\d{1,3})?)' . self::$modifierRegex . '$}i', $version, $matches)) {
+ $version = preg_replace('{\D}', '.', $matches[1]);
+ $index = 2;
+ }
+
+ // add version modifiers if a version was matched
+ if (isset($index)) {
+ if (!empty($matches[$index])) {
+ if ('stable' === $matches[$index]) {
+ return $version;
+ }
+ $version .= '-' . $this->expandStability($matches[$index]) . (isset($matches[$index + 1]) && '' !== $matches[$index + 1] ? ltrim($matches[$index + 1], '.-') : '');
+ }
+
+ if (!empty($matches[$index + 2])) {
+ $version .= '-dev';
+ }
+
+ return $version;
+ }
+
+ // match dev branches
+ if (preg_match('{(.*?)[.-]?dev$}i', $version, $match)) {
+ try {
+ $normalized = $this->normalizeBranch($match[1]);
+ // a branch ending with -dev is only valid if it is numeric
+ // if it gets prefixed with dev- it means the branch name should
+ // have had a dev- prefix already when passed to normalize
+ if (strpos($normalized, 'dev-') === false) {
+ return $normalized;
+ }
+ } catch (\Exception $e) {
+ }
+ }
+
+ $extraMessage = '';
+ if (preg_match('{ +as +' . preg_quote($version) . '(?:@(?:'.self::$stabilitiesRegex.'))?$}', $fullVersion)) {
+ $extraMessage = ' in "' . $fullVersion . '", the alias must be an exact version';
+ } elseif (preg_match('{^' . preg_quote($version) . '(?:@(?:'.self::$stabilitiesRegex.'))? +as +}', $fullVersion)) {
+ $extraMessage = ' in "' . $fullVersion . '", the alias source must be an exact version, if it is a branch name you should prefix it with dev-';
+ }
+
+ throw new \UnexpectedValueException('Invalid version string "' . $origVersion . '"' . $extraMessage);
+ }
+
+ /**
+ * Extract numeric prefix from alias, if it is in numeric format, suitable for version comparison.
+ *
+ * @param string $branch Branch name (e.g. 2.1.x-dev)
+ *
+ * @return string|false Numeric prefix if present (e.g. 2.1.) or false
+ */
+ public function parseNumericAliasPrefix($branch)
+ {
+ if (preg_match('{^(?P(\d++\\.)*\d++)(?:\.x)?-dev$}i', $branch, $matches)) {
+ return $matches['version'] . '.';
+ }
+
+ return false;
+ }
+
+ /**
+ * Normalizes a branch name to be able to perform comparisons on it.
+ *
+ * @param string $name
+ *
+ * @return string
+ */
+ public function normalizeBranch($name)
+ {
+ $name = trim($name);
+
+ if (in_array($name, array('master', 'trunk', 'default'))) {
+ return $this->normalize($name);
+ }
+
+ if (preg_match('{^v?(\d++)(\.(?:\d++|[xX*]))?(\.(?:\d++|[xX*]))?(\.(?:\d++|[xX*]))?$}i', $name, $matches)) {
+ $version = '';
+ for ($i = 1; $i < 5; ++$i) {
+ $version .= isset($matches[$i]) ? str_replace(array('*', 'X'), 'x', $matches[$i]) : '.x';
+ }
+
+ return str_replace('x', '9999999', $version) . '-dev';
+ }
+
+ return 'dev-' . $name;
+ }
+
+ /**
+ * Parses a constraint string into MultiConstraint and/or Constraint objects.
+ *
+ * @param string $constraints
+ *
+ * @return ConstraintInterface
+ */
+ public function parseConstraints($constraints)
+ {
+ $prettyConstraint = $constraints;
+
+ $orConstraints = preg_split('{\s*\|\|?\s*}', trim($constraints));
+ $orGroups = array();
+
+ foreach ($orConstraints as $constraints) {
+ $andConstraints = preg_split('{(?< ,]) *(? 1) {
+ $constraintObjects = array();
+ foreach ($andConstraints as $constraint) {
+ foreach ($this->parseConstraint($constraint) as $parsedConstraint) {
+ $constraintObjects[] = $parsedConstraint;
+ }
+ }
+ } else {
+ $constraintObjects = $this->parseConstraint($andConstraints[0]);
+ }
+
+ if (1 === count($constraintObjects)) {
+ $constraint = $constraintObjects[0];
+ } else {
+ $constraint = new MultiConstraint($constraintObjects);
+ }
+
+ $orGroups[] = $constraint;
+ }
+
+ if (1 === count($orGroups)) {
+ $constraint = $orGroups[0];
+ } elseif (2 === count($orGroups)
+ // parse the two OR groups and if they are contiguous we collapse
+ // them into one constraint
+ && $orGroups[0] instanceof MultiConstraint
+ && $orGroups[1] instanceof MultiConstraint
+ && 2 === count($orGroups[0]->getConstraints())
+ && 2 === count($orGroups[1]->getConstraints())
+ && ($a = (string) $orGroups[0])
+ && strpos($a, '[>=') === 0 && (false !== ($posA = strpos($a, '<', 4)))
+ && ($b = (string) $orGroups[1])
+ && strpos($b, '[>=') === 0 && (false !== ($posB = strpos($b, '<', 4)))
+ && substr($a, $posA + 2, -1) === substr($b, 4, $posB - 5)
+ ) {
+ $constraint = new MultiConstraint(array(
+ new Constraint('>=', substr($a, 4, $posA - 5)),
+ new Constraint('<', substr($b, $posB + 2, -1)),
+ ));
+ } else {
+ $constraint = new MultiConstraint($orGroups, false);
+ }
+
+ $constraint->setPrettyString($prettyConstraint);
+
+ return $constraint;
+ }
+
+ /**
+ * @param string $constraint
+ *
+ * @throws \UnexpectedValueException
+ *
+ * @return array
+ */
+ private function parseConstraint($constraint)
+ {
+ // strip off aliasing
+ if (preg_match('{^([^,\s]++) ++as ++([^,\s]++)$}', $constraint, $match)) {
+ $constraint = $match[1];
+ }
+
+ // strip @stability flags, and keep it for later use
+ if (preg_match('{^([^,\s]*?)@(' . self::$stabilitiesRegex . ')$}i', $constraint, $match)) {
+ $constraint = '' !== $match[1] ? $match[1] : '*';
+ if ($match[2] !== 'stable') {
+ $stabilityModifier = $match[2];
+ }
+ }
+
+ // get rid of #refs as those are used by composer only
+ if (preg_match('{^(dev-[^,\s@]+?|[^,\s@]+?\.x-dev)#.+$}i', $constraint, $match)) {
+ $constraint = $match[1];
+ }
+
+ if (preg_match('{^v?[xX*](\.[xX*])*$}i', $constraint)) {
+ return array(new EmptyConstraint());
+ }
+
+ $versionRegex = 'v?(\d++)(?:\.(\d++))?(?:\.(\d++))?(?:\.(\d++))?(?:' . self::$modifierRegex . '|\.([xX*][.-]?dev))(?:\+[^\s]+)?';
+
+ // Tilde Range
+ //
+ // Like wildcard constraints, unsuffixed tilde constraints say that they must be greater than the previous
+ // version, to ensure that unstable instances of the current version are allowed. However, if a stability
+ // suffix is added to the constraint, then a >= match on the current version is used instead.
+ if (preg_match('{^~>?' . $versionRegex . '$}i', $constraint, $matches)) {
+ if (strpos($constraint, '~>') === 0) {
+ throw new \UnexpectedValueException(
+ 'Could not parse version constraint ' . $constraint . ': ' .
+ 'Invalid operator "~>", you probably meant to use the "~" operator'
+ );
+ }
+
+ // Work out which position in the version we are operating at
+ if (isset($matches[4]) && '' !== $matches[4] && null !== $matches[4]) {
+ $position = 4;
+ } elseif (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) {
+ $position = 3;
+ } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) {
+ $position = 2;
+ } else {
+ $position = 1;
+ }
+
+ // when matching 2.x-dev or 3.0.x-dev we have to shift the second or third number, despite no second/third number matching above
+ if (!empty($matches[8])) {
+ $position++;
+ }
+
+ // Calculate the stability suffix
+ $stabilitySuffix = '';
+ if (empty($matches[5]) && empty($matches[7]) && empty($matches[8])) {
+ $stabilitySuffix .= '-dev';
+ }
+
+ $lowVersion = $this->normalize(substr($constraint . $stabilitySuffix, 1));
+ $lowerBound = new Constraint('>=', $lowVersion);
+
+ // For upper bound, we increment the position of one more significance,
+ // but highPosition = 0 would be illegal
+ $highPosition = max(1, $position - 1);
+ $highVersion = $this->manipulateVersionString($matches, $highPosition, 1) . '-dev';
+ $upperBound = new Constraint('<', $highVersion);
+
+ return array(
+ $lowerBound,
+ $upperBound,
+ );
+ }
+
+ // Caret Range
+ //
+ // Allows changes that do not modify the left-most non-zero digit in the [major, minor, patch] tuple.
+ // In other words, this allows patch and minor updates for versions 1.0.0 and above, patch updates for
+ // versions 0.X >=0.1.0, and no updates for versions 0.0.X
+ if (preg_match('{^\^' . $versionRegex . '($)}i', $constraint, $matches)) {
+ // Work out which position in the version we are operating at
+ if ('0' !== $matches[1] || '' === $matches[2] || null === $matches[2]) {
+ $position = 1;
+ } elseif ('0' !== $matches[2] || '' === $matches[3] || null === $matches[3]) {
+ $position = 2;
+ } else {
+ $position = 3;
+ }
+
+ // Calculate the stability suffix
+ $stabilitySuffix = '';
+ if (empty($matches[5]) && empty($matches[7]) && empty($matches[8])) {
+ $stabilitySuffix .= '-dev';
+ }
+
+ $lowVersion = $this->normalize(substr($constraint . $stabilitySuffix, 1));
+ $lowerBound = new Constraint('>=', $lowVersion);
+
+ // For upper bound, we increment the position of one more significance,
+ // but highPosition = 0 would be illegal
+ $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev';
+ $upperBound = new Constraint('<', $highVersion);
+
+ return array(
+ $lowerBound,
+ $upperBound,
+ );
+ }
+
+ // X Range
+ //
+ // Any of X, x, or * may be used to "stand in" for one of the numeric values in the [major, minor, patch] tuple.
+ // A partial version range is treated as an X-Range, so the special character is in fact optional.
+ if (preg_match('{^v?(\d++)(?:\.(\d++))?(?:\.(\d++))?(?:\.[xX*])++$}', $constraint, $matches)) {
+ if (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) {
+ $position = 3;
+ } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) {
+ $position = 2;
+ } else {
+ $position = 1;
+ }
+
+ $lowVersion = $this->manipulateVersionString($matches, $position) . '-dev';
+ $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev';
+
+ if ($lowVersion === '0.0.0.0-dev') {
+ return array(new Constraint('<', $highVersion));
+ }
+
+ return array(
+ new Constraint('>=', $lowVersion),
+ new Constraint('<', $highVersion),
+ );
+ }
+
+ // Hyphen Range
+ //
+ // Specifies an inclusive set. If a partial version is provided as the first version in the inclusive range,
+ // then the missing pieces are replaced with zeroes. If a partial version is provided as the second version in
+ // the inclusive range, then all versions that start with the supplied parts of the tuple are accepted, but
+ // nothing that would be greater than the provided tuple parts.
+ if (preg_match('{^(?P' . $versionRegex . ') +- +(?P' . $versionRegex . ')($)}i', $constraint, $matches)) {
+ // Calculate the stability suffix
+ $lowStabilitySuffix = '';
+ if (empty($matches[6]) && empty($matches[8]) && empty($matches[9])) {
+ $lowStabilitySuffix = '-dev';
+ }
+
+ $lowVersion = $this->normalize($matches['from']);
+ $lowerBound = new Constraint('>=', $lowVersion . $lowStabilitySuffix);
+
+ $empty = function ($x) {
+ return ($x === 0 || $x === '0') ? false : empty($x);
+ };
+
+ if ((!$empty($matches[12]) && !$empty($matches[13])) || !empty($matches[15]) || !empty($matches[17]) || !empty($matches[18])) {
+ $highVersion = $this->normalize($matches['to']);
+ $upperBound = new Constraint('<=', $highVersion);
+ } else {
+ $highMatch = array('', $matches[11], $matches[12], $matches[13], $matches[14]);
+
+ // validate to version
+ $this->normalize($matches['to']);
+
+ $highVersion = $this->manipulateVersionString($highMatch, $empty($matches[12]) ? 1 : 2, 1) . '-dev';
+ $upperBound = new Constraint('<', $highVersion);
+ }
+
+ return array(
+ $lowerBound,
+ $upperBound,
+ );
+ }
+
+ // Basic Comparators
+ if (preg_match('{^(<>|!=|>=?|<=?|==?)?\s*(.*)}', $constraint, $matches)) {
+ try {
+ try {
+ $version = $this->normalize($matches[2]);
+ } catch (\UnexpectedValueException $e) {
+ // recover from an invalid constraint like foobar-dev which should be dev-foobar
+ // except if the constraint uses a known operator, in which case it must be a parse error
+ if (substr($matches[2], -4) === '-dev' && preg_match('{^[0-9a-zA-Z-./]+$}', $matches[2])) {
+ $version = $this->normalize('dev-'.substr($matches[2], 0, -4));
+ } else {
+ throw $e;
+ }
+ }
+
+ $op = $matches[1] ?: '=';
+
+ if ($op !== '==' && $op !== '=' && !empty($stabilityModifier) && self::parseStability($version) === 'stable') {
+ $version .= '-' . $stabilityModifier;
+ } elseif ('<' === $op || '>=' === $op) {
+ if (!preg_match('/-' . self::$modifierRegex . '$/', strtolower($matches[2]))) {
+ if (strpos($matches[2], 'dev-') !== 0) {
+ $version .= '-dev';
+ }
+ }
+ }
+
+ return array(new Constraint($matches[1] ?: '=', $version));
+ } catch (\Exception $e) {
+ }
+ }
+
+ $message = 'Could not parse version constraint ' . $constraint;
+ if (isset($e)) {
+ $message .= ': ' . $e->getMessage();
+ }
+
+ throw new \UnexpectedValueException($message);
+ }
+
+ /**
+ * Increment, decrement, or simply pad a version number.
+ *
+ * Support function for {@link parseConstraint()}
+ *
+ * @param array $matches Array with version parts in array indexes 1,2,3,4
+ * @param int $position 1,2,3,4 - which segment of the version to increment/decrement
+ * @param int $increment
+ * @param string $pad The string to pad version parts after $position
+ *
+ * @return string|null The new version
+ */
+ private function manipulateVersionString($matches, $position, $increment = 0, $pad = '0')
+ {
+ for ($i = 4; $i > 0; --$i) {
+ if ($i > $position) {
+ $matches[$i] = $pad;
+ } elseif ($i === $position && $increment) {
+ $matches[$i] += $increment;
+ // If $matches[$i] was 0, carry the decrement
+ if ($matches[$i] < 0) {
+ $matches[$i] = $pad;
+ --$position;
+
+ // Return null on a carry overflow
+ if ($i === 1) {
+ return null;
+ }
+ }
+ }
+ }
+
+ return $matches[1] . '.' . $matches[2] . '.' . $matches[3] . '.' . $matches[4];
+ }
+
+ /**
+ * Expand shorthand stability string to long version.
+ *
+ * @param string $stability
+ *
+ * @return string
+ */
+ private function expandStability($stability)
+ {
+ $stability = strtolower($stability);
+
+ switch ($stability) {
+ case 'a':
+ return 'alpha';
+ case 'b':
+ return 'beta';
+ case 'p':
+ case 'pl':
+ return 'patch';
+ case 'rc':
+ return 'RC';
+ default:
+ return $stability;
+ }
+ }
+}
diff --git a/lib/composer/composer/xdebug-handler/CHANGELOG.md b/lib/composer/composer/xdebug-handler/CHANGELOG.md
new file mode 100644
index 0000000000000..e580779359a12
--- /dev/null
+++ b/lib/composer/composer/xdebug-handler/CHANGELOG.md
@@ -0,0 +1,78 @@
+## [Unreleased]
+
+## [1.4.3] - 2020-08-19
+ * Fixed: restore SIGINT to default handler in restarted process if no other handler exists.
+
+## [1.4.2] - 2020-06-04
+ * Fixed: ignore SIGINTs to let the restarted process handle them.
+
+## [1.4.1] - 2020-03-01
+ * Fixed: restart fails if an ini file is empty.
+
+## [1.4.0] - 2019-11-06
+ * Added: support for `NO_COLOR` environment variable: https://no-color.org
+ * Added: color support for Hyper terminal: https://github.com/zeit/hyper
+ * Fixed: correct capitalization of Xdebug (apparently).
+ * Fixed: improved handling for uopz extension.
+
+## [1.3.3] - 2019-05-27
+ * Fixed: add environment changes to `$_ENV` if it is being used.
+
+## [1.3.2] - 2019-01-28
+ * Fixed: exit call being blocked by uopz extension, resulting in application code running twice.
+
+## [1.3.1] - 2018-11-29
+ * Fixed: fail restart if `passthru` has been disabled in `disable_functions`.
+ * Fixed: fail restart if an ini file cannot be opened, otherwise settings will be missing.
+
+## [1.3.0] - 2018-08-31
+ * Added: `setPersistent` method to use environment variables for the restart.
+ * Fixed: improved debugging by writing output to stderr.
+ * Fixed: no restart when `php_ini_scanned_files` is not functional and is needed.
+
+## [1.2.1] - 2018-08-23
+ * Fixed: fatal error with apc, when using `apc.mmap_file_mask`.
+
+## [1.2.0] - 2018-08-16
+ * Added: debug information using `XDEBUG_HANDLER_DEBUG`.
+ * Added: fluent interface for setters.
+ * Added: `PhpConfig` helper class for calling PHP sub-processes.
+ * Added: `PHPRC` original value to restart stettings, for use in a restarted process.
+ * Changed: internal procedure to disable ini-scanning, using `-n` command-line option.
+ * Fixed: replaced `escapeshellarg` usage to avoid locale problems.
+ * Fixed: improved color-option handling to respect double-dash delimiter.
+ * Fixed: color-option handling regression from main script changes.
+ * Fixed: improved handling when checking main script.
+ * Fixed: handling for standard input, that never actually did anything.
+ * Fixed: fatal error when ctype extension is not available.
+
+## [1.1.0] - 2018-04-11
+ * Added: `getRestartSettings` method for calling PHP processes in a restarted process.
+ * Added: API definition and @internal class annotations.
+ * Added: protected `requiresRestart` method for extending classes.
+ * Added: `setMainScript` method for applications that change the working directory.
+ * Changed: private `tmpIni` variable to protected for extending classes.
+ * Fixed: environment variables not available in $_SERVER when restored in the restart.
+ * Fixed: relative path problems caused by Phar::interceptFileFuncs.
+ * Fixed: incorrect handling when script file cannot be found.
+
+## [1.0.0] - 2018-03-08
+ * Added: PSR3 logging for optional status output.
+ * Added: existing ini settings are merged to catch command-line overrides.
+ * Added: code, tests and other artefacts to decouple from Composer.
+ * Break: the following class was renamed:
+ - `Composer\XdebugHandler` -> `Composer\XdebugHandler\XdebugHandler`
+
+[Unreleased]: https://github.com/composer/xdebug-handler/compare/1.4.3...HEAD
+[1.4.3]: https://github.com/composer/xdebug-handler/compare/1.4.2...1.4.3
+[1.4.2]: https://github.com/composer/xdebug-handler/compare/1.4.1...1.4.2
+[1.4.1]: https://github.com/composer/xdebug-handler/compare/1.4.0...1.4.1
+[1.4.0]: https://github.com/composer/xdebug-handler/compare/1.3.3...1.4.0
+[1.3.3]: https://github.com/composer/xdebug-handler/compare/1.3.2...1.3.3
+[1.3.2]: https://github.com/composer/xdebug-handler/compare/1.3.1...1.3.2
+[1.3.1]: https://github.com/composer/xdebug-handler/compare/1.3.0...1.3.1
+[1.3.0]: https://github.com/composer/xdebug-handler/compare/1.2.1...1.3.0
+[1.2.1]: https://github.com/composer/xdebug-handler/compare/1.2.0...1.2.1
+[1.2.0]: https://github.com/composer/xdebug-handler/compare/1.1.0...1.2.0
+[1.1.0]: https://github.com/composer/xdebug-handler/compare/1.0.0...1.1.0
+[1.0.0]: https://github.com/composer/xdebug-handler/compare/d66f0d15cb57...1.0.0
diff --git a/lib/composer/composer/xdebug-handler/LICENSE b/lib/composer/composer/xdebug-handler/LICENSE
new file mode 100644
index 0000000000000..963618a14e825
--- /dev/null
+++ b/lib/composer/composer/xdebug-handler/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 Composer
+
+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/lib/composer/composer/xdebug-handler/README.md b/lib/composer/composer/xdebug-handler/README.md
new file mode 100644
index 0000000000000..57fb9adc0d793
--- /dev/null
+++ b/lib/composer/composer/xdebug-handler/README.md
@@ -0,0 +1,293 @@
+# composer/xdebug-handler
+
+[![packagist](https://img.shields.io/packagist/v/composer/xdebug-handler.svg)](https://packagist.org/packages/composer/xdebug-handler)
+[![linux build](https://img.shields.io/travis/composer/xdebug-handler/master.svg?label=linux+build)](https://travis-ci.org/composer/xdebug-handler)
+[![windows build](https://img.shields.io/appveyor/ci/Seldaek/xdebug-handler/master.svg?label=windows+build)](https://ci.appveyor.com/project/Seldaek/xdebug-handler)
+![license](https://img.shields.io/github/license/composer/xdebug-handler.svg)
+![php](https://img.shields.io/packagist/php-v/composer/xdebug-handler.svg?colorB=8892BF&label=php)
+
+Restart a CLI process without loading the Xdebug extension.
+
+Originally written as part of [composer/composer](https://github.com/composer/composer),
+now extracted and made available as a stand-alone library.
+
+## Installation
+
+Install the latest version with:
+
+```bash
+$ composer require composer/xdebug-handler
+```
+
+## Requirements
+
+* PHP 5.3.2 minimum, although functionality is disabled below PHP 5.4.0. Using the latest PHP version is highly recommended.
+
+## Basic Usage
+```php
+use Composer\XdebugHandler\XdebugHandler;
+
+$xdebug = new XdebugHandler('myapp');
+$xdebug->check();
+unset($xdebug);
+```
+
+The constructor takes two parameters:
+
+#### _$envPrefix_
+This is used to create distinct environment variables and is upper-cased and prepended to default base values. The above example enables the use of:
+
+- `MYAPP_ALLOW_XDEBUG=1` to override automatic restart and allow Xdebug
+- `MYAPP_ORIGINAL_INIS` to obtain ini file locations in a restarted process
+
+#### _$colorOption_
+This optional value is added to the restart command-line and is needed to force color output in a piped child process. Only long-options are supported, for example `--ansi` or `--colors=always` etc.
+
+If the original command-line contains an argument that pattern matches this value (for example `--no-ansi`, `--colors=never`) then _$colorOption_ is ignored.
+
+If the pattern match ends with `=auto` (for example `--colors=auto`), the argument is replaced by _$colorOption_. Otherwise it is added at either the end of the command-line, or preceding the first double-dash `--` delimiter.
+
+## Advanced Usage
+
+* [How it works](#how-it-works)
+* [Limitations](#limitations)
+* [Helper methods](#helper-methods)
+* [Setter methods](#setter-methods)
+* [Process configuration](#process-configuration)
+* [Troubleshooting](#troubleshooting)
+* [Extending the library](#extending-the-library)
+
+### How it works
+
+A temporary ini file is created from the loaded (and scanned) ini files, with any references to the Xdebug extension commented out. Current ini settings are merged, so that most ini settings made on the command-line or by the application are included (see [Limitations](#limitations))
+
+* `MYAPP_ALLOW_XDEBUG` is set with internal data to flag and use in the restart.
+* The command-line and environment are [configured](#process-configuration) for the restart.
+* The application is restarted in a new process using `passthru`.
+ * The restart settings are stored in the environment.
+ * `MYAPP_ALLOW_XDEBUG` is unset.
+ * The application runs and exits.
+* The main process exits with the exit code from the restarted process.
+
+#### Signal handling
+From PHP 7.1 with the pcntl extension loaded, asynchronous signal handling is automatically enabled. `SIGINT` is set to `SIG_IGN` in the parent
+process and restored to `SIG_DFL` in the restarted process (if no other handler has been set).
+
+### Limitations
+There are a few things to be aware of when running inside a restarted process.
+
+* Extensions set on the command-line will not be loaded.
+* Ini file locations will be reported as per the restart - see [getAllIniFiles()](#getallinifiles).
+* Php sub-processes may be loaded with Xdebug enabled - see [Process configuration](#process-configuration).
+* On Windows `sapi_windows_set_ctrl_handler` handlers will not receive CTRL events.
+
+### Helper methods
+These static methods provide information from the current process, regardless of whether it has been restarted or not.
+
+#### _getAllIniFiles()_
+Returns an array of the original ini file locations. Use this instead of calling `php_ini_loaded_file` and `php_ini_scanned_files`, which will report the wrong values in a restarted process.
+
+```php
+use Composer\XdebugHandler\XdebugHandler;
+
+$files = XdebugHandler::getAllIniFiles();
+
+# $files[0] always exists, it could be an empty string
+$loadedIni = array_shift($files);
+$scannedInis = $files;
+```
+
+These locations are also available in the `MYAPP_ORIGINAL_INIS` environment variable. This is a path-separated string comprising the location returned from `php_ini_loaded_file`, which could be empty, followed by locations parsed from calling `php_ini_scanned_files`.
+
+#### _getRestartSettings()_
+Returns an array of settings that can be used with PHP [sub-processes](#sub-processes), or null if the process was not restarted.
+
+```php
+use Composer\XdebugHandler\XdebugHandler;
+
+$settings = XdebugHandler::getRestartSettings();
+/**
+ * $settings: array (if the current process was restarted,
+ * or called with the settings from a previous restart), or null
+ *
+ * 'tmpIni' => the temporary ini file used in the restart (string)
+ * 'scannedInis' => if there were any scanned inis (bool)
+ * 'scanDir' => the original PHP_INI_SCAN_DIR value (false|string)
+ * 'phprc' => the original PHPRC value (false|string)
+ * 'inis' => the original inis from getAllIniFiles (array)
+ * 'skipped' => the skipped version from getSkippedVersion (string)
+ */
+```
+
+#### _getSkippedVersion()_
+Returns the Xdebug version string that was skipped by the restart, or an empty value if there was no restart (or Xdebug is still loaded, perhaps by an extending class restarting for a reason other than removing Xdebug).
+
+```php
+use Composer\XdebugHandler\XdebugHandler;
+
+$version = XdebugHandler::getSkippedVersion();
+# $version: '2.6.0' (for example), or an empty string
+```
+
+### Setter methods
+These methods implement a fluent interface and must be called before the main `check()` method.
+
+#### _setLogger($logger)_
+Enables the output of status messages to an external PSR3 logger. All messages are reported with either `DEBUG` or `WARNING` log levels. For example (showing the level and message):
+
+```
+// Restart overridden
+DEBUG Checking MYAPP_ALLOW_XDEBUG
+DEBUG The Xdebug extension is loaded (2.5.0)
+DEBUG No restart (MYAPP_ALLOW_XDEBUG=1)
+
+// Failed restart
+DEBUG Checking MYAPP_ALLOW_XDEBUG
+DEBUG The Xdebug extension is loaded (2.5.0)
+WARNING No restart (Unable to create temp ini file at: ...)
+```
+
+Status messages can also be output with `XDEBUG_HANDLER_DEBUG`. See [Troubleshooting](#troubleshooting).
+
+#### _setMainScript($script)_
+Sets the location of the main script to run in the restart. This is only needed in more esoteric use-cases, or if the `argv[0]` location is inaccessible. The script name `--` is supported for standard input.
+
+#### _setPersistent()_
+Configures the restart using [persistent settings](#persistent-settings), so that Xdebug is not loaded in any sub-process.
+
+Use this method if your application invokes one or more PHP sub-process and the Xdebug extension is not needed. This avoids the overhead of implementing specific [sub-process](#sub-processes) strategies.
+
+Alternatively, this method can be used to set up a default _Xdebug-free_ environment which can be changed if a sub-process requires Xdebug, then restored afterwards:
+
+```php
+function SubProcessWithXdebug()
+{
+ $phpConfig = new Composer\XdebugHandler\PhpConfig();
+
+ # Set the environment to the original configuration
+ $phpConfig->useOriginal();
+
+ # run the process with Xdebug loaded
+ ...
+
+ # Restore Xdebug-free environment
+ $phpConfig->usePersistent();
+}
+```
+
+### Process configuration
+The library offers two strategies to invoke a new PHP process without loading Xdebug, using either _standard_ or _persistent_ settings. Note that this is only important if the application calls a PHP sub-process.
+
+#### Standard settings
+Uses command-line options to remove Xdebug from the new process only.
+
+* The -n option is added to the command-line. This tells PHP not to scan for additional inis.
+* The temporary ini is added to the command-line with the -c option.
+
+>_If the new process calls a PHP sub-process, Xdebug will be loaded in that sub-process (unless it implements xdebug-handler, in which case there will be another restart)._
+
+This is the default strategy used in the restart.
+
+#### Persistent settings
+Uses environment variables to remove Xdebug from the new process and persist these settings to any sub-process.
+
+* `PHP_INI_SCAN_DIR` is set to an empty string. This tells PHP not to scan for additional inis.
+* `PHPRC` is set to the temporary ini.
+
+>_If the new process calls a PHP sub-process, Xdebug will not be loaded in that sub-process._
+
+This strategy can be used in the restart by calling [setPersistent()](#setpersistent).
+
+#### Sub-processes
+The `PhpConfig` helper class makes it easy to invoke a PHP sub-process (with or without Xdebug loaded), regardless of whether there has been a restart.
+
+Each of its methods returns an array of PHP options (to add to the command-line) and sets up the environment for the required strategy. The [getRestartSettings()](#getrestartsettings) method is used internally.
+
+* `useOriginal()` - Xdebug will be loaded in the new process.
+* `useStandard()` - Xdebug will **not** be loaded in the new process - see [standard settings](#standard-settings).
+* `userPersistent()` - Xdebug will **not** be loaded in the new process - see [persistent settings](#persistent-settings)
+
+If there was no restart, an empty options array is returned and the environment is not changed.
+
+```php
+use Composer\XdebugHandler\PhpConfig;
+
+$config = new PhpConfig;
+
+$options = $config->useOriginal();
+# $options: empty array
+# environment: PHPRC and PHP_INI_SCAN_DIR set to original values
+
+$options = $config->useStandard();
+# $options: [-n, -c, tmpIni]
+# environment: PHPRC and PHP_INI_SCAN_DIR set to original values
+
+$options = $config->usePersistent();
+# $options: empty array
+# environment: PHPRC=tmpIni, PHP_INI_SCAN_DIR=''
+```
+
+### Troubleshooting
+The following environment settings can be used to troubleshoot unexpected behavior:
+
+* `XDEBUG_HANDLER_DEBUG=1` Outputs status messages to `STDERR`, if it is defined, irrespective of any PSR3 logger. Each message is prefixed `xdebug-handler[pid]`, where pid is the process identifier.
+
+* `XDEBUG_HANDLER_DEBUG=2` As above, but additionally saves the temporary ini file and reports its location in a status message.
+
+### Extending the library
+The API is defined by classes and their accessible elements that are not annotated as @internal. The main class has two protected methods that can be overridden to provide additional functionality:
+
+#### _requiresRestart($isLoaded)_
+By default the process will restart if Xdebug is loaded. Extending this method allows an application to decide, by returning a boolean (or equivalent) value. It is only called if `MYAPP_ALLOW_XDEBUG` is empty, so it will not be called in the restarted process (where this variable contains internal data), or if the restart has been overridden.
+
+Note that the [setMainScript()](#setmainscriptscript) and [setPersistent()](#setpersistent) setters can be used here, if required.
+
+#### _restart($command)_
+An application can extend this to modify the temporary ini file, its location given in the `tmpIni` property. New settings can be safely appended to the end of the data, which is `PHP_EOL` terminated.
+
+Note that the `$command` parameter is the escaped command-line string that will be used for the new process and must be treated accordingly.
+
+Remember to finish with `parent::restart($command)`.
+
+#### Example
+This example demonstrates two ways to extend basic functionality:
+
+* To avoid the overhead of spinning up a new process, the restart is skipped if a simple help command is requested.
+
+* The application needs write-access to phar files, so it will force a restart if `phar.readonly` is set (regardless of whether Xdebug is loaded) and change this value in the temporary ini file.
+
+```php
+use Composer\XdebugHandler\XdebugHandler;
+use MyApp\Command;
+
+class MyRestarter extends XdebugHandler
+{
+ private $required;
+
+ protected function requiresRestart($isLoaded)
+ {
+ if (Command::isHelp()) {
+ # No need to disable Xdebug for this
+ return false;
+ }
+
+ $this->required = (bool) ini_get('phar.readonly');
+ return $isLoaded || $this->required;
+ }
+
+ protected function restart($command)
+ {
+ if ($this->required) {
+ # Add required ini setting to tmpIni
+ $content = file_get_contents($this->tmpIni);
+ $content .= 'phar.readonly=0'.PHP_EOL;
+ file_put_contents($this->tmpIni, $content);
+ }
+
+ parent::restart($command);
+ }
+}
+```
+
+## License
+composer/xdebug-handler is licensed under the MIT License, see the LICENSE file for details.
diff --git a/lib/composer/composer/xdebug-handler/composer.json b/lib/composer/composer/xdebug-handler/composer.json
new file mode 100644
index 0000000000000..ea40a2f21eff8
--- /dev/null
+++ b/lib/composer/composer/xdebug-handler/composer.json
@@ -0,0 +1,40 @@
+{
+ "name": "composer/xdebug-handler",
+ "description": "Restarts a process without Xdebug.",
+ "type": "library",
+ "license": "MIT",
+ "keywords": [
+ "xdebug",
+ "performance"
+ ],
+ "authors": [
+ {
+ "name": "John Stevenson",
+ "email": "john-stevenson@blueyonder.co.uk"
+ }
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/xdebug-handler/issues"
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0",
+ "psr/log": "^1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8"
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\XdebugHandler\\": "src"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Composer\\XdebugHandler\\": "tests"
+ }
+ },
+ "scripts": {
+ "test": "phpunit"
+ }
+}
diff --git a/lib/composer/composer/xdebug-handler/src/PhpConfig.php b/lib/composer/composer/xdebug-handler/src/PhpConfig.php
new file mode 100644
index 0000000000000..5535eca56e4b3
--- /dev/null
+++ b/lib/composer/composer/xdebug-handler/src/PhpConfig.php
@@ -0,0 +1,73 @@
+
+ *
+ * For the full copyright and license information, please view
+ * the LICENSE file that was distributed with this source code.
+ */
+
+namespace Composer\XdebugHandler;
+
+/**
+ * @author John Stevenson
+ */
+class PhpConfig
+{
+ /**
+ * Use the original PHP configuration
+ *
+ * @return array PHP cli options
+ */
+ public function useOriginal()
+ {
+ $this->getDataAndReset();
+ return array();
+ }
+
+ /**
+ * Use standard restart settings
+ *
+ * @return array PHP cli options
+ */
+ public function useStandard()
+ {
+ if ($data = $this->getDataAndReset()) {
+ return array('-n', '-c', $data['tmpIni']);
+ }
+
+ return array();
+ }
+
+ /**
+ * Use environment variables to persist settings
+ *
+ * @return array PHP cli options
+ */
+ public function usePersistent()
+ {
+ if ($data = $this->getDataAndReset()) {
+ Process::setEnv('PHPRC', $data['tmpIni']);
+ Process::setEnv('PHP_INI_SCAN_DIR', '');
+ }
+
+ return array();
+ }
+
+ /**
+ * Returns restart data if available and resets the environment
+ *
+ * @return array|null
+ */
+ private function getDataAndReset()
+ {
+ if ($data = XdebugHandler::getRestartSettings()) {
+ Process::setEnv('PHPRC', $data['phprc']);
+ Process::setEnv('PHP_INI_SCAN_DIR', $data['scanDir']);
+ }
+
+ return $data;
+ }
+}
diff --git a/lib/composer/composer/xdebug-handler/src/Process.php b/lib/composer/composer/xdebug-handler/src/Process.php
new file mode 100644
index 0000000000000..eb2ad2b4ed1f1
--- /dev/null
+++ b/lib/composer/composer/xdebug-handler/src/Process.php
@@ -0,0 +1,181 @@
+
+ *
+ * For the full copyright and license information, please view
+ * the LICENSE file that was distributed with this source code.
+ */
+
+namespace Composer\XdebugHandler;
+
+/**
+ * Provides utility functions to prepare a child process command-line and set
+ * environment variables in that process.
+ *
+ * @author John Stevenson
+ * @internal
+ */
+class Process
+{
+ /**
+ * Returns an array of parameters, including a color option if required
+ *
+ * A color option is needed because child process output is piped.
+ *
+ * @param array $args The script parameters
+ * @param string $colorOption The long option to force color output
+ *
+ * @return array
+ */
+ public static function addColorOption(array $args, $colorOption)
+ {
+ if (!$colorOption
+ || in_array($colorOption, $args)
+ || !preg_match('/^--([a-z]+$)|(^--[a-z]+=)/', $colorOption, $matches)) {
+ return $args;
+ }
+
+ if (isset($matches[2])) {
+ // Handle --color(s)= options
+ if (false !== ($index = array_search($matches[2].'auto', $args))) {
+ $args[$index] = $colorOption;
+ return $args;
+ } elseif (preg_grep('/^'.$matches[2].'/', $args)) {
+ return $args;
+ }
+ } elseif (in_array('--no-'.$matches[1], $args)) {
+ return $args;
+ }
+
+ // Check for NO_COLOR variable (https://no-color.org/)
+ if (false !== getenv('NO_COLOR')) {
+ return $args;
+ }
+
+ if (false !== ($index = array_search('--', $args))) {
+ // Position option before double-dash delimiter
+ array_splice($args, $index, 0, $colorOption);
+ } else {
+ $args[] = $colorOption;
+ }
+
+ return $args;
+ }
+
+ /**
+ * Escapes a string to be used as a shell argument.
+ *
+ * From https://github.com/johnstevenson/winbox-args
+ * MIT Licensed (c) John Stevenson
+ *
+ * @param string $arg The argument to be escaped
+ * @param bool $meta Additionally escape cmd.exe meta characters
+ * @param bool $module The argument is the module to invoke
+ *
+ * @return string The escaped argument
+ */
+ public static function escape($arg, $meta = true, $module = false)
+ {
+ if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
+ return "'".str_replace("'", "'\\''", $arg)."'";
+ }
+
+ $quote = strpbrk($arg, " \t") !== false || $arg === '';
+
+ $arg = preg_replace('/(\\\\*)"/', '$1$1\\"', $arg, -1, $dquotes);
+
+ if ($meta) {
+ $meta = $dquotes || preg_match('/%[^%]+%/', $arg);
+
+ if (!$meta) {
+ $quote = $quote || strpbrk($arg, '^&|<>()') !== false;
+ } elseif ($module && !$dquotes && $quote) {
+ $meta = false;
+ }
+ }
+
+ if ($quote) {
+ $arg = '"'.preg_replace('/(\\\\*)$/', '$1$1', $arg).'"';
+ }
+
+ if ($meta) {
+ $arg = preg_replace('/(["^&|<>()%])/', '^$1', $arg);
+ }
+
+ return $arg;
+ }
+
+ /**
+ * Returns true if the output stream supports colors
+ *
+ * This is tricky on Windows, because Cygwin, Msys2 etc emulate pseudo
+ * terminals via named pipes, so we can only check the environment.
+ *
+ * @param mixed $output A valid CLI output stream
+ *
+ * @return bool
+ */
+ public static function supportsColor($output)
+ {
+ if ('Hyper' === getenv('TERM_PROGRAM')) {
+ return true;
+ }
+
+ if (defined('PHP_WINDOWS_VERSION_BUILD')) {
+ return (function_exists('sapi_windows_vt100_support')
+ && sapi_windows_vt100_support($output))
+ || false !== getenv('ANSICON')
+ || 'ON' === getenv('ConEmuANSI')
+ || 'xterm' === getenv('TERM');
+ }
+
+ if (function_exists('stream_isatty')) {
+ return stream_isatty($output);
+ }
+
+ if (function_exists('posix_isatty')) {
+ return posix_isatty($output);
+ }
+
+ $stat = fstat($output);
+ // Check if formatted mode is S_IFCHR
+ return $stat ? 0020000 === ($stat['mode'] & 0170000) : false;
+ }
+
+ /**
+ * Makes putenv environment changes available in $_SERVER and $_ENV
+ *
+ * @param string $name
+ * @param string|false $value A false value unsets the variable
+ *
+ * @return bool Whether the environment variable was set
+ */
+ public static function setEnv($name, $value = false)
+ {
+ $unset = false === $value;
+
+ if (!putenv($unset ? $name : $name.'='.$value)) {
+ return false;
+ }
+
+ if ($unset) {
+ unset($_SERVER[$name]);
+ } else {
+ $_SERVER[$name] = $value;
+ }
+
+ // Update $_ENV if it is being used
+ if (false !== stripos((string) ini_get('variables_order'), 'E')) {
+ if ($unset) {
+ unset($_ENV[$name]);
+ } else {
+ $_ENV[$name] = $value;
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/lib/composer/composer/xdebug-handler/src/Status.php b/lib/composer/composer/xdebug-handler/src/Status.php
new file mode 100644
index 0000000000000..e714b1c2c665b
--- /dev/null
+++ b/lib/composer/composer/xdebug-handler/src/Status.php
@@ -0,0 +1,163 @@
+
+ *
+ * For the full copyright and license information, please view
+ * the LICENSE file that was distributed with this source code.
+ */
+
+namespace Composer\XdebugHandler;
+
+use Psr\Log\LoggerInterface;
+use Psr\Log\LogLevel;
+
+/**
+ * @author John Stevenson
+ * @internal
+ */
+class Status
+{
+ const ENV_RESTART = 'XDEBUG_HANDLER_RESTART';
+ const CHECK = 'Check';
+ const ERROR = 'Error';
+ const INFO = 'Info';
+ const NORESTART = 'NoRestart';
+ const RESTART = 'Restart';
+ const RESTARTING = 'Restarting';
+ const RESTARTED = 'Restarted';
+
+ private $debug;
+ private $envAllowXdebug;
+ private $loaded;
+ private $logger;
+ private $time;
+
+ /**
+ * Constructor
+ *
+ * @param string $envAllowXdebug Prefixed _ALLOW_XDEBUG name
+ * @param bool $debug Whether debug output is required
+ */
+ public function __construct($envAllowXdebug, $debug)
+ {
+ $start = getenv(self::ENV_RESTART);
+ Process::setEnv(self::ENV_RESTART);
+ $this->time = $start ? round((microtime(true) - $start) * 1000) : 0;
+
+ $this->envAllowXdebug = $envAllowXdebug;
+ $this->debug = $debug && defined('STDERR');
+ }
+
+ /**
+ * @param LoggerInterface $logger
+ */
+ public function setLogger(LoggerInterface $logger)
+ {
+ $this->logger = $logger;
+ }
+
+ /**
+ * Calls a handler method to report a message
+ *
+ * @param string $op The handler constant
+ * @param null|string $data Data required by the handler
+ */
+ public function report($op, $data)
+ {
+ if ($this->logger || $this->debug) {
+ call_user_func(array($this, 'report'.$op), $data);
+ }
+ }
+
+ /**
+ * Outputs a status message
+ *
+ * @param string $text
+ * @param string $level
+ */
+ private function output($text, $level = null)
+ {
+ if ($this->logger) {
+ $this->logger->log($level ?: LogLevel::DEBUG, $text);
+ }
+
+ if ($this->debug) {
+ fwrite(STDERR, sprintf('xdebug-handler[%d] %s', getmypid(), $text.PHP_EOL));
+ }
+ }
+
+ private function reportCheck($loaded)
+ {
+ $this->loaded = $loaded;
+ $this->output('Checking '.$this->envAllowXdebug);
+ }
+
+ private function reportError($error)
+ {
+ $this->output(sprintf('No restart (%s)', $error), LogLevel::WARNING);
+ }
+
+ private function reportInfo($info)
+ {
+ $this->output($info);
+ }
+
+ private function reportNoRestart()
+ {
+ $this->output($this->getLoadedMessage());
+
+ if ($this->loaded) {
+ $text = sprintf('No restart (%s)', $this->getEnvAllow());
+ if (!getenv($this->envAllowXdebug)) {
+ $text .= ' Allowed by application';
+ }
+ $this->output($text);
+ }
+ }
+
+ private function reportRestart()
+ {
+ $this->output($this->getLoadedMessage());
+ Process::setEnv(self::ENV_RESTART, (string) microtime(true));
+ }
+
+ private function reportRestarted()
+ {
+ $loaded = $this->getLoadedMessage();
+ $text = sprintf('Restarted (%d ms). %s', $this->time, $loaded);
+ $level = $this->loaded ? LogLevel::WARNING : null;
+ $this->output($text, $level);
+ }
+
+ private function reportRestarting($command)
+ {
+ $text = sprintf('Process restarting (%s)', $this->getEnvAllow());
+ $this->output($text);
+ $text = 'Running '.$command;
+ $this->output($text);
+ }
+
+ /**
+ * Returns the _ALLOW_XDEBUG environment variable as name=value
+ *
+ * @return string
+ */
+ private function getEnvAllow()
+ {
+ return $this->envAllowXdebug.'='.getenv($this->envAllowXdebug);
+ }
+
+ /**
+ * Returns the Xdebug status and version
+ *
+ * @return string
+ */
+ private function getLoadedMessage()
+ {
+ $loaded = $this->loaded ? sprintf('loaded (%s)', $this->loaded) : 'not loaded';
+ return 'The Xdebug extension is '.$loaded;
+ }
+}
diff --git a/lib/composer/composer/xdebug-handler/src/XdebugHandler.php b/lib/composer/composer/xdebug-handler/src/XdebugHandler.php
new file mode 100644
index 0000000000000..ed5107ef00cd9
--- /dev/null
+++ b/lib/composer/composer/xdebug-handler/src/XdebugHandler.php
@@ -0,0 +1,597 @@
+
+ *
+ * For the full copyright and license information, please view
+ * the LICENSE file that was distributed with this source code.
+ */
+
+namespace Composer\XdebugHandler;
+
+use Psr\Log\LoggerInterface;
+
+/**
+ * @author John Stevenson
+ */
+class XdebugHandler
+{
+ const SUFFIX_ALLOW = '_ALLOW_XDEBUG';
+ const SUFFIX_INIS = '_ORIGINAL_INIS';
+ const RESTART_ID = 'internal';
+ const RESTART_SETTINGS = 'XDEBUG_HANDLER_SETTINGS';
+ const DEBUG = 'XDEBUG_HANDLER_DEBUG';
+
+ /** @var string|null */
+ protected $tmpIni;
+
+ private static $inRestart;
+ private static $name;
+ private static $skipped;
+
+ private $cli;
+ private $colorOption;
+ private $debug;
+ private $envAllowXdebug;
+ private $envOriginalInis;
+ private $loaded;
+ private $persistent;
+ private $script;
+ /** @var Status|null */
+ private $statusWriter;
+
+ /**
+ * Constructor
+ *
+ * The $envPrefix is used to create distinct environment variables. It is
+ * uppercased and prepended to the default base values. For example 'myapp'
+ * would result in MYAPP_ALLOW_XDEBUG and MYAPP_ORIGINAL_INIS.
+ *
+ * @param string $envPrefix Value used in environment variables
+ * @param string $colorOption Command-line long option to force color output
+ * @throws \RuntimeException If a parameter is invalid
+ */
+ public function __construct($envPrefix, $colorOption = '')
+ {
+ if (!is_string($envPrefix) || empty($envPrefix) || !is_string($colorOption)) {
+ throw new \RuntimeException('Invalid constructor parameter');
+ }
+
+ self::$name = strtoupper($envPrefix);
+ $this->envAllowXdebug = self::$name.self::SUFFIX_ALLOW;
+ $this->envOriginalInis = self::$name.self::SUFFIX_INIS;
+
+ $this->colorOption = $colorOption;
+
+ if (extension_loaded('xdebug')) {
+ $ext = new \ReflectionExtension('xdebug');
+ $this->loaded = $ext->getVersion() ?: 'unknown';
+ }
+
+ if ($this->cli = PHP_SAPI === 'cli') {
+ $this->debug = getenv(self::DEBUG);
+ }
+
+ $this->statusWriter = new Status($this->envAllowXdebug, (bool) $this->debug);
+ }
+
+ /**
+ * Activates status message output to a PSR3 logger
+ *
+ * @param LoggerInterface $logger
+ *
+ * @return $this
+ */
+ public function setLogger(LoggerInterface $logger)
+ {
+ $this->statusWriter->setLogger($logger);
+ return $this;
+ }
+
+ /**
+ * Sets the main script location if it cannot be called from argv
+ *
+ * @param string $script
+ *
+ * @return $this
+ */
+ public function setMainScript($script)
+ {
+ $this->script = $script;
+ return $this;
+ }
+
+ /**
+ * Persist the settings to keep Xdebug out of sub-processes
+ *
+ * @return $this
+ */
+ public function setPersistent()
+ {
+ $this->persistent = true;
+ return $this;
+ }
+
+ /**
+ * Checks if Xdebug is loaded and the process needs to be restarted
+ *
+ * This behaviour can be disabled by setting the MYAPP_ALLOW_XDEBUG
+ * environment variable to 1. This variable is used internally so that
+ * the restarted process is created only once.
+ */
+ public function check()
+ {
+ $this->notify(Status::CHECK, $this->loaded);
+ $envArgs = explode('|', (string) getenv($this->envAllowXdebug));
+
+ if (empty($envArgs[0]) && $this->requiresRestart((bool) $this->loaded)) {
+ // Restart required
+ $this->notify(Status::RESTART);
+
+ if ($this->prepareRestart()) {
+ $command = $this->getCommand();
+ $this->restart($command);
+ }
+ return;
+ }
+
+ if (self::RESTART_ID === $envArgs[0] && count($envArgs) === 5) {
+ // Restarted, so unset environment variable and use saved values
+ $this->notify(Status::RESTARTED);
+
+ Process::setEnv($this->envAllowXdebug);
+ self::$inRestart = true;
+
+ if (!$this->loaded) {
+ // Skipped version is only set if Xdebug is not loaded
+ self::$skipped = $envArgs[1];
+ }
+
+ $this->tryEnableSignals();
+
+ // Put restart settings in the environment
+ $this->setEnvRestartSettings($envArgs);
+ return;
+ }
+
+ $this->notify(Status::NORESTART);
+
+ if ($settings = self::getRestartSettings()) {
+ // Called with existing settings, so sync our settings
+ $this->syncSettings($settings);
+ }
+ }
+
+ /**
+ * Returns an array of php.ini locations with at least one entry
+ *
+ * The equivalent of calling php_ini_loaded_file then php_ini_scanned_files.
+ * The loaded ini location is the first entry and may be empty.
+ *
+ * @return array
+ */
+ public static function getAllIniFiles()
+ {
+ if (!empty(self::$name)) {
+ $env = getenv(self::$name.self::SUFFIX_INIS);
+
+ if (false !== $env) {
+ return explode(PATH_SEPARATOR, $env);
+ }
+ }
+
+ $paths = array((string) php_ini_loaded_file());
+
+ if ($scanned = php_ini_scanned_files()) {
+ $paths = array_merge($paths, array_map('trim', explode(',', $scanned)));
+ }
+
+ return $paths;
+ }
+
+ /**
+ * Returns an array of restart settings or null
+ *
+ * Settings will be available if the current process was restarted, or
+ * called with the settings from an existing restart.
+ *
+ * @return array|null
+ */
+ public static function getRestartSettings()
+ {
+ $envArgs = explode('|', (string) getenv(self::RESTART_SETTINGS));
+
+ if (count($envArgs) !== 6
+ || (!self::$inRestart && php_ini_loaded_file() !== $envArgs[0])) {
+ return;
+ }
+
+ return array(
+ 'tmpIni' => $envArgs[0],
+ 'scannedInis' => (bool) $envArgs[1],
+ 'scanDir' => '*' === $envArgs[2] ? false : $envArgs[2],
+ 'phprc' => '*' === $envArgs[3] ? false : $envArgs[3],
+ 'inis' => explode(PATH_SEPARATOR, $envArgs[4]),
+ 'skipped' => $envArgs[5],
+ );
+ }
+
+ /**
+ * Returns the Xdebug version that triggered a successful restart
+ *
+ * @return string
+ */
+ public static function getSkippedVersion()
+ {
+ return (string) self::$skipped;
+ }
+
+ /**
+ * Returns true if Xdebug is loaded, or as directed by an extending class
+ *
+ * @param bool $isLoaded Whether Xdebug is loaded
+ *
+ * @return bool
+ */
+ protected function requiresRestart($isLoaded)
+ {
+ return $isLoaded;
+ }
+
+ /**
+ * Allows an extending class to access the tmpIni
+ *
+ * @param string $command
+ */
+ protected function restart($command)
+ {
+ $this->doRestart($command);
+ }
+
+ /**
+ * Executes the restarted command then deletes the tmp ini
+ *
+ * @param string $command
+ */
+ private function doRestart($command)
+ {
+ $this->tryEnableSignals();
+ $this->notify(Status::RESTARTING, $command);
+
+ passthru($command, $exitCode);
+ $this->notify(Status::INFO, 'Restarted process exited '.$exitCode);
+
+ if ($this->debug === '2') {
+ $this->notify(Status::INFO, 'Temp ini saved: '.$this->tmpIni);
+ } else {
+ @unlink($this->tmpIni);
+ }
+
+ exit($exitCode);
+ }
+
+ /**
+ * Returns true if everything was written for the restart
+ *
+ * If any of the following fails (however unlikely) we must return false to
+ * stop potential recursion:
+ * - tmp ini file creation
+ * - environment variable creation
+ *
+ * @return bool
+ */
+ private function prepareRestart()
+ {
+ $error = '';
+ $iniFiles = self::getAllIniFiles();
+ $scannedInis = count($iniFiles) > 1;
+ $tmpDir = sys_get_temp_dir();
+
+ if (!$this->cli) {
+ $error = 'Unsupported SAPI: '.PHP_SAPI;
+ } elseif (!defined('PHP_BINARY')) {
+ $error = 'PHP version is too old: '.PHP_VERSION;
+ } elseif (!$this->checkConfiguration($info)) {
+ $error = $info;
+ } elseif (!$this->checkScanDirConfig()) {
+ $error = 'PHP version does not report scanned inis: '.PHP_VERSION;
+ } elseif (!$this->checkMainScript()) {
+ $error = 'Unable to access main script: '.$this->script;
+ } elseif (!$this->writeTmpIni($iniFiles, $tmpDir, $error)) {
+ $error = $error ?: 'Unable to create temp ini file at: '.$tmpDir;
+ } elseif (!$this->setEnvironment($scannedInis, $iniFiles)) {
+ $error = 'Unable to set environment variables';
+ }
+
+ if ($error) {
+ $this->notify(Status::ERROR, $error);
+ }
+
+ return empty($error);
+ }
+
+ /**
+ * Returns true if the tmp ini file was written
+ *
+ * @param array $iniFiles All ini files used in the current process
+ * @param string $tmpDir The system temporary directory
+ * @param string $error Set by method if ini file cannot be read
+ *
+ * @return bool
+ */
+ private function writeTmpIni(array $iniFiles, $tmpDir, &$error)
+ {
+ if (!$this->tmpIni = @tempnam($tmpDir, '')) {
+ return false;
+ }
+
+ // $iniFiles has at least one item and it may be empty
+ if (empty($iniFiles[0])) {
+ array_shift($iniFiles);
+ }
+
+ $content = '';
+ $regex = '/^\s*(zend_extension\s*=.*xdebug.*)$/mi';
+
+ foreach ($iniFiles as $file) {
+ // Check for inaccessible ini files
+ if (($data = @file_get_contents($file)) === false) {
+ $error = 'Unable to read ini: '.$file;
+ return false;
+ }
+ $content .= preg_replace($regex, ';$1', $data).PHP_EOL;
+ }
+
+ // Merge loaded settings into our ini content, if it is valid
+ if ($config = parse_ini_string($content)) {
+ $loaded = ini_get_all(null, false);
+ $content .= $this->mergeLoadedConfig($loaded, $config);
+ }
+
+ // Work-around for https://bugs.php.net/bug.php?id=75932
+ $content .= 'opcache.enable_cli=0'.PHP_EOL;
+
+ return @file_put_contents($this->tmpIni, $content);
+ }
+
+ /**
+ * Returns the restart command line
+ *
+ * @return string
+ */
+ private function getCommand()
+ {
+ $php = array(PHP_BINARY);
+ $args = array_slice($_SERVER['argv'], 1);
+
+ if (!$this->persistent) {
+ // Use command-line options
+ array_push($php, '-n', '-c', $this->tmpIni);
+ }
+
+ if (defined('STDOUT') && Process::supportsColor(STDOUT)) {
+ $args = Process::addColorOption($args, $this->colorOption);
+ }
+
+ $args = array_merge($php, array($this->script), $args);
+
+ $cmd = Process::escape(array_shift($args), true, true);
+ foreach ($args as $arg) {
+ $cmd .= ' '.Process::escape($arg);
+ }
+
+ return $cmd;
+ }
+
+ /**
+ * Returns true if the restart environment variables were set
+ *
+ * No need to update $_SERVER since this is set in the restarted process.
+ *
+ * @param bool $scannedInis Whether there were scanned ini files
+ * @param array $iniFiles All ini files used in the current process
+ *
+ * @return bool
+ */
+ private function setEnvironment($scannedInis, array $iniFiles)
+ {
+ $scanDir = getenv('PHP_INI_SCAN_DIR');
+ $phprc = getenv('PHPRC');
+
+ // Make original inis available to restarted process
+ if (!putenv($this->envOriginalInis.'='.implode(PATH_SEPARATOR, $iniFiles))) {
+ return false;
+ }
+
+ if ($this->persistent) {
+ // Use the environment to persist the settings
+ if (!putenv('PHP_INI_SCAN_DIR=') || !putenv('PHPRC='.$this->tmpIni)) {
+ return false;
+ }
+ }
+
+ // Flag restarted process and save values for it to use
+ $envArgs = array(
+ self::RESTART_ID,
+ $this->loaded,
+ (int) $scannedInis,
+ false === $scanDir ? '*' : $scanDir,
+ false === $phprc ? '*' : $phprc,
+ );
+
+ return putenv($this->envAllowXdebug.'='.implode('|', $envArgs));
+ }
+
+ /**
+ * Logs status messages
+ *
+ * @param string $op Status handler constant
+ * @param null|string $data Optional data
+ */
+ private function notify($op, $data = null)
+ {
+ $this->statusWriter->report($op, $data);
+ }
+
+ /**
+ * Returns default, changed and command-line ini settings
+ *
+ * @param array $loadedConfig All current ini settings
+ * @param array $iniConfig Settings from user ini files
+ *
+ * @return string
+ */
+ private function mergeLoadedConfig(array $loadedConfig, array $iniConfig)
+ {
+ $content = '';
+
+ foreach ($loadedConfig as $name => $value) {
+ // Value will either be null, string or array (HHVM only)
+ if (!is_string($value)
+ || strpos($name, 'xdebug') === 0
+ || $name === 'apc.mmap_file_mask') {
+ continue;
+ }
+
+ if (!isset($iniConfig[$name]) || $iniConfig[$name] !== $value) {
+ // Double-quote escape each value
+ $content .= $name.'="'.addcslashes($value, '\\"').'"'.PHP_EOL;
+ }
+ }
+
+ return $content;
+ }
+
+ /**
+ * Returns true if the script name can be used
+ *
+ * @return bool
+ */
+ private function checkMainScript()
+ {
+ if (null !== $this->script) {
+ // Allow an application to set -- for standard input
+ return file_exists($this->script) || '--' === $this->script;
+ }
+
+ if (file_exists($this->script = $_SERVER['argv'][0])) {
+ return true;
+ }
+
+ // Use a backtrace to resolve Phar and chdir issues
+ $options = PHP_VERSION_ID >= 50306 ? DEBUG_BACKTRACE_IGNORE_ARGS : false;
+ $trace = debug_backtrace($options);
+
+ if (($main = end($trace)) && isset($main['file'])) {
+ return file_exists($this->script = $main['file']);
+ }
+
+ return false;
+ }
+
+ /**
+ * Adds restart settings to the environment
+ *
+ * @param string $envArgs
+ */
+ private function setEnvRestartSettings($envArgs)
+ {
+ $settings = array(
+ php_ini_loaded_file(),
+ $envArgs[2],
+ $envArgs[3],
+ $envArgs[4],
+ getenv($this->envOriginalInis),
+ self::$skipped,
+ );
+
+ Process::setEnv(self::RESTART_SETTINGS, implode('|', $settings));
+ }
+
+ /**
+ * Syncs settings and the environment if called with existing settings
+ *
+ * @param array $settings
+ */
+ private function syncSettings(array $settings)
+ {
+ if (false === getenv($this->envOriginalInis)) {
+ // Called by another app, so make original inis available
+ Process::setEnv($this->envOriginalInis, implode(PATH_SEPARATOR, $settings['inis']));
+ }
+
+ self::$skipped = $settings['skipped'];
+ $this->notify(Status::INFO, 'Process called with existing restart settings');
+ }
+
+ /**
+ * Returns true if there are scanned inis and PHP is able to report them
+ *
+ * php_ini_scanned_files will fail when PHP_CONFIG_FILE_SCAN_DIR is empty.
+ * Fixed in 7.1.13 and 7.2.1
+ *
+ * @return bool
+ */
+ private function checkScanDirConfig()
+ {
+ return !(getenv('PHP_INI_SCAN_DIR')
+ && !PHP_CONFIG_FILE_SCAN_DIR
+ && (PHP_VERSION_ID < 70113
+ || PHP_VERSION_ID === 70200));
+ }
+
+ /**
+ * Returns true if there are no known configuration issues
+ *
+ * @param string $info Set by method
+ */
+ private function checkConfiguration(&$info)
+ {
+ if (false !== strpos(ini_get('disable_functions'), 'passthru')) {
+ $info = 'passthru function is disabled';
+ return false;
+ }
+
+ if (extension_loaded('uopz') && !ini_get('uopz.disable')) {
+ // uopz works at opcode level and disables exit calls
+ if (function_exists('uopz_allow_exit')) {
+ @uopz_allow_exit(true);
+ } else {
+ $info = 'uopz extension is not compatible';
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Enables async signals and control interrupts in the restarted process
+ *
+ * Only available on Unix PHP 7.1+ with the pcntl extension. To replicate on
+ * Windows would require PHP 7.4+ using proc_open rather than passthru.
+ */
+ private function tryEnableSignals()
+ {
+ if (!function_exists('pcntl_async_signals')) {
+ return;
+ }
+
+ pcntl_async_signals(true);
+ $message = 'Async signals enabled';
+
+ if (!self::$inRestart) {
+ // Restarting, so ignore SIGINT in parent
+ pcntl_signal(SIGINT, SIG_IGN);
+ $message .= ' (SIGINT = SIG_IGN)';
+ } elseif (is_int(pcntl_signal_get_handler(SIGINT))) {
+ // Restarted, no handler set so force default action
+ pcntl_signal(SIGINT, SIG_DFL);
+ $message .= ' (SIGINT = SIG_DFL)';
+ }
+
+ $this->notify(Status::INFO, $message);
+ }
+}
diff --git a/lib/composer/dnoegel/php-xdg-base-dir/LICENSE b/lib/composer/dnoegel/php-xdg-base-dir/LICENSE
new file mode 100644
index 0000000000000..029a00ab57fd8
--- /dev/null
+++ b/lib/composer/dnoegel/php-xdg-base-dir/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2014 Daniel Nögel
+
+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/lib/composer/dnoegel/php-xdg-base-dir/README.md b/lib/composer/dnoegel/php-xdg-base-dir/README.md
new file mode 100644
index 0000000000000..ee06b2d646a9d
--- /dev/null
+++ b/lib/composer/dnoegel/php-xdg-base-dir/README.md
@@ -0,0 +1,41 @@
+# XDG Base Directory
+
+[![Latest Stable Version](https://img.shields.io/packagist/v/dnoegel/php-xdg-base-dir.svg?style=flat-square)](https://packagist.org/packages/dnoegel/php-xdg-base-dir)
+[![Total Downloads](https://img.shields.io/packagist/dt/dnoegel/php-xdg-base-dir.svg?style=flat-square)](https://packagist.org/packages/dnoegel/php-xdg-base-dir)
+[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.md)
+[![Build Status](https://img.shields.io/travis/dnoegel/php-xdg-base-dir/master.svg?style=flat-square)](https://travis-ci.org/dnoegel/php-xdg-base-dir)
+
+Implementation of XDG Base Directory specification for php
+
+## Install
+
+Via Composer
+
+``` bash
+$ composer require dnoegel/php-xdg-base-dir
+```
+
+## Usage
+
+``` php
+$xdg = new \XdgBaseDir\Xdg();
+
+echo $xdg->getHomeDir();
+echo $xdg->getHomeConfigDir();
+echo $xdg->getHomeDataDir();
+echo $xdg->getHomeCacheDir();
+echo $xdg->getRuntimeDir();
+
+print_r($xdg->getDataDirs()); // returns array
+print_r($xdg->getConfigDirs()); // returns array
+```
+
+## Testing
+
+``` bash
+$ phpunit
+```
+
+## License
+
+The MIT License (MIT). Please see [License File](https://github.com/dnoegel/php-xdg-base-dir/blob/master/LICENSE) for more information.
diff --git a/lib/composer/dnoegel/php-xdg-base-dir/composer.json b/lib/composer/dnoegel/php-xdg-base-dir/composer.json
new file mode 100644
index 0000000000000..94c463745bfe3
--- /dev/null
+++ b/lib/composer/dnoegel/php-xdg-base-dir/composer.json
@@ -0,0 +1,17 @@
+{
+ "name": "dnoegel/php-xdg-base-dir",
+ "description": "implementation of xdg base directory specification for php",
+ "type": "library",
+ "license": "MIT",
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35"
+ },
+ "autoload": {
+ "psr-4": {
+ "XdgBaseDir\\": "src/"
+ }
+ }
+}
diff --git a/lib/composer/dnoegel/php-xdg-base-dir/src/Xdg.php b/lib/composer/dnoegel/php-xdg-base-dir/src/Xdg.php
new file mode 100644
index 0000000000000..2dd314d0bca4f
--- /dev/null
+++ b/lib/composer/dnoegel/php-xdg-base-dir/src/Xdg.php
@@ -0,0 +1,132 @@
+getHomeDir();
+
+ $path = DIRECTORY_SEPARATOR === $homeDir ? $homeDir.'.config' : $homeDir . DIRECTORY_SEPARATOR . '.config';
+
+ return $path;
+ }
+
+ /**
+ * @return string
+ */
+ public function getHomeDataDir()
+ {
+ $path = getenv('XDG_DATA_HOME') ?: $this->getHomeDir() . DIRECTORY_SEPARATOR . '.local' . DIRECTORY_SEPARATOR . 'share';
+
+ return $path;
+ }
+
+ /**
+ * @return array
+ */
+ public function getConfigDirs()
+ {
+ $configDirs = getenv('XDG_CONFIG_DIRS') ? explode(':', getenv('XDG_CONFIG_DIRS')) : array('/etc/xdg');
+
+ $paths = array_merge(array($this->getHomeConfigDir()), $configDirs);
+
+ return $paths;
+ }
+
+ /**
+ * @return array
+ */
+ public function getDataDirs()
+ {
+ $dataDirs = getenv('XDG_DATA_DIRS') ? explode(':', getenv('XDG_DATA_DIRS')) : array('/usr/local/share', '/usr/share');
+
+ $paths = array_merge(array($this->getHomeDataDir()), $dataDirs);
+
+ return $paths;
+ }
+
+ /**
+ * @return string
+ */
+ public function getHomeCacheDir()
+ {
+ $path = getenv('XDG_CACHE_HOME') ?: $this->getHomeDir() . DIRECTORY_SEPARATOR . '.cache';
+
+ return $path;
+
+ }
+
+ public function getRuntimeDir($strict=true)
+ {
+ if ($runtimeDir = getenv('XDG_RUNTIME_DIR')) {
+ return $runtimeDir;
+ }
+
+ if ($strict) {
+ throw new \RuntimeException('XDG_RUNTIME_DIR was not set');
+ }
+
+ $fallback = sys_get_temp_dir() . DIRECTORY_SEPARATOR . self::RUNTIME_DIR_FALLBACK . getenv('USER');
+
+ $create = false;
+
+ if (!is_dir($fallback)) {
+ mkdir($fallback, 0700, true);
+ }
+
+ $st = lstat($fallback);
+
+ # The fallback must be a directory
+ if (!$st['mode'] & self::S_IFDIR) {
+ rmdir($fallback);
+ $create = true;
+ } elseif ($st['uid'] != $this->getUid() ||
+ $st['mode'] & (self::S_IRWXG | self::S_IRWXO)
+ ) {
+ rmdir($fallback);
+ $create = true;
+ }
+
+ if ($create) {
+ mkdir($fallback, 0700, true);
+ }
+
+ return $fallback;
+ }
+
+ private function getUid()
+ {
+ if (function_exists('posix_getuid')) {
+ return posix_getuid();
+ }
+
+ return getmyuid();
+ }
+}
diff --git a/lib/composer/doctrine/annotations/.doctrine-project.json b/lib/composer/doctrine/annotations/.doctrine-project.json
new file mode 100644
index 0000000000000..25d470860a67a
--- /dev/null
+++ b/lib/composer/doctrine/annotations/.doctrine-project.json
@@ -0,0 +1,40 @@
+{
+ "active": true,
+ "name": "Annotations",
+ "slug": "annotations",
+ "docsSlug": "doctrine-annotations",
+ "versions": [
+ {
+ "name": "1.9",
+ "branchName": "1.9",
+ "slug": "1.9",
+ "aliases": [
+ "latest"
+ ],
+ "upcoming": true
+ },
+ {
+ "name": "1.8",
+ "branchName": "1.8",
+ "slug": "1.8",
+ "current": true,
+ "aliases": [
+ "current",
+ "stable"
+ ],
+ "maintained": true
+ },
+ {
+ "name": "1.7",
+ "branchName": "1.7",
+ "slug": "1.7",
+ "maintained": false
+ },
+ {
+ "name": "1.6",
+ "branchName": "1.6",
+ "slug": "1.6",
+ "maintained": false
+ }
+ ]
+}
diff --git a/lib/composer/doctrine/annotations/CHANGELOG.md b/lib/composer/doctrine/annotations/CHANGELOG.md
new file mode 100644
index 0000000000000..0b0ba1a71d8c7
--- /dev/null
+++ b/lib/composer/doctrine/annotations/CHANGELOG.md
@@ -0,0 +1,162 @@
+## Changelog
+
+### 1.6.1
+
+This release fixes an issue in which annotations such as `@foo-bar`
+and `@foo-` were incorrectly recognised as valid, and both erroneously
+parsed as `@foo`.
+
+Any annotation with `@name-*` format will now silently be ignored,
+allowing vendor-specific annotations to be prefixed with the tool
+name.
+
+Total issues resolved: **3**
+
+- [165: Update the composer branch alias](https://github.com/doctrine/annotations/pull/165) thanks to @mikeSimonson
+- [209: Change Annotation::value typehint to mixed](https://github.com/doctrine/annotations/pull/209) thanks to @malarzm
+- [257: Skip parsing annotations containing dashes, such as `@Foo-bar`, or `@Foo-`](https://github.com/doctrine/annotations/pull/257) thanks to @Ocramius
+
+### 1.6.0
+
+This release brings a new endpoint that make sure that you can't shoot yourself in the foot by calling ```registerLoader``` multiple times and a few tests improvements.
+
+Total issues resolved: **7**
+
+- [145: Memory leak in AnnotationRegistry::registerLoader() when called multiple times](https://github.com/doctrine/annotations/issues/145) thanks to @TriAnMan
+- [146: Import error on @experimental Annotation](https://github.com/doctrine/annotations/issues/146) thanks to @aturki
+- [147: Ignoring @experimental annotation used by Symfony 3.3 CacheAdapter](https://github.com/doctrine/annotations/pull/147) thanks to @aturki
+- [151: Remove duplicate code in `DCOM58Test`](https://github.com/doctrine/annotations/pull/151) thanks to @tuanphpvn
+- [161: Prevent loading class_exists multiple times](https://github.com/doctrine/annotations/pull/161) thanks to @jrjohnson
+- [162: Add registerUniqueLoader to AnnotationRegistry](https://github.com/doctrine/annotations/pull/162) thanks to @jrjohnson
+- [163: Use assertDirectoryExists and assertDirectoryNotExists](https://github.com/doctrine/annotations/pull/163) thanks to @carusogabriel
+
+Thanks to everyone involved in this release.
+
+### 1.5.0
+
+This release increments the minimum supported PHP version to 7.1.0.
+
+Also, HHVM official support has been dropped.
+
+Some noticeable performance improvements to annotation autoloading
+have been applied, making failed annotation autoloading less heavy
+on the filesystem access.
+
+- [133: Add @throws annotation in AnnotationReader#__construct()](https://github.com/doctrine/annotations/issues/133) thanks to @SenseException
+- [134: Require PHP 7.1, drop HHVM support](https://github.com/doctrine/annotations/issues/134) thanks to @lcobucci
+- [135: Prevent the same loader from being registered twice](https://github.com/doctrine/annotations/issues/135) thanks to @jrjohnson
+- [137: #135 optimise multiple class load attempts in AnnotationRegistry](https://github.com/doctrine/annotations/issues/137) thanks to @Ocramius
+
+
+### 1.4.0
+
+This release fix an issue were some annotations could be not loaded if the namespace in the use statement started with a backslash.
+It also update the tests and drop the support for php 5.X
+
+- [115: Missing annotations with the latest composer version](https://github.com/doctrine/annotations/issues/115) thanks to @pascalporedda
+- [120: Missing annotations with the latest composer version](https://github.com/doctrine/annotations/pull/120) thanks to @gnat42
+- [121: Adding a more detailed explanation of the test](https://github.com/doctrine/annotations/pull/121) thanks to @mikeSimonson
+- [101: Test annotation parameters containing space](https://github.com/doctrine/annotations/pull/101) thanks to @mikeSimonson
+- [111: Cleanup: move to correct phpunit assertions](https://github.com/doctrine/annotations/pull/111) thanks to @Ocramius
+- [112: Removes support for PHP 5.x](https://github.com/doctrine/annotations/pull/112) thanks to @railto
+- [113: bumped phpunit version to 5.7](https://github.com/doctrine/annotations/pull/113) thanks to @gabbydgab
+- [114: Enhancement: Use SVG Travis build badge](https://github.com/doctrine/annotations/pull/114) thanks to @localheinz
+- [118: Integrating PHPStan](https://github.com/doctrine/annotations/pull/118) thanks to @ondrejmirtes
+
+### 1.3.1 - 2016-12-30
+
+This release fixes an issue with ignored annotations that were already
+autoloaded, causing the `SimpleAnnotationReader` to pick them up
+anyway. [#110](https://github.com/doctrine/annotations/pull/110)
+
+Additionally, an issue was fixed in the `CachedReader`, which was
+not correctly checking the freshness of cached annotations when
+traits were defined on a class. [#105](https://github.com/doctrine/annotations/pull/105)
+
+Total issues resolved: **2**
+
+- [105: Return single max timestamp](https://github.com/doctrine/annotations/pull/105)
+- [110: setIgnoreNotImportedAnnotations(true) didn’t work for existing classes](https://github.com/doctrine/annotations/pull/110)
+
+### 1.3.0
+
+This release introduces a PHP version bump. `doctrine/annotations` now requires PHP
+5.6 or later to be installed.
+
+A series of additional improvements have been introduced:
+
+ * support for PHP 7 "grouped use statements"
+ * support for ignoring entire namespace names
+ via `Doctrine\Common\Annotations\AnnotationReader::addGlobalIgnoredNamespace()` and
+ `Doctrine\Common\Annotations\DocParser::setIgnoredAnnotationNamespaces()`. This will
+ allow you to ignore annotations from namespaces that you cannot autoload
+ * testing all parent classes and interfaces when checking if the annotation cache
+ in the `CachedReader` is fresh
+ * simplifying the cache keys used by the `CachedReader`: keys are no longer artificially
+ namespaced, since `Doctrine\Common\Cache` already supports that
+ * corrected parsing of multibyte strings when `mbstring.func_overload` is enabled
+ * corrected parsing of annotations when `"\t"` is put before the first annotation
+ in a docblock
+ * allow skipping non-imported annotations when a custom `DocParser` is passed to
+ the `AnnotationReader` constructor
+
+Total issues resolved: **15**
+
+- [45: DocParser can now ignore whole namespaces](https://github.com/doctrine/annotations/pull/45)
+- [57: Switch to the docker-based infrastructure on Travis](https://github.com/doctrine/annotations/pull/57)
+- [59: opcache.load_comments has been removed from PHP 7](https://github.com/doctrine/annotations/pull/59)
+- [62: [CachedReader\ Test traits and parent class to see if cache is fresh](https://github.com/doctrine/annotations/pull/62)
+- [65: Remove cache salt making key unnecessarily long](https://github.com/doctrine/annotations/pull/65)
+- [66: Fix of incorrect parsing multibyte strings](https://github.com/doctrine/annotations/pull/66)
+- [68: Annotations that are indented by tab are not processed.](https://github.com/doctrine/annotations/issues/68)
+- [69: Support for Group Use Statements](https://github.com/doctrine/annotations/pull/69)
+- [70: Allow tab character before first annotation in DocBlock](https://github.com/doctrine/annotations/pull/70)
+- [74: Ignore not registered annotations fix](https://github.com/doctrine/annotations/pull/74)
+- [92: Added tests for AnnotationRegistry class.](https://github.com/doctrine/annotations/pull/92)
+- [96: Fix/#62 check trait and parent class ttl in annotations](https://github.com/doctrine/annotations/pull/96)
+- [97: Feature - #45 - allow ignoring entire namespaces](https://github.com/doctrine/annotations/pull/97)
+- [98: Enhancement/#65 remove cache salt from cached reader](https://github.com/doctrine/annotations/pull/98)
+- [99: Fix - #70 - allow tab character before first annotation in docblock](https://github.com/doctrine/annotations/pull/99)
+
+### 1.2.4
+
+Total issues resolved: **1**
+
+- [51: FileCacheReader::saveCacheFile::unlink fix](https://github.com/doctrine/annotations/pull/51)
+
+### 1.2.3
+
+Total issues resolved: [**2**](https://github.com/doctrine/annotations/milestones/v1.2.3)
+
+- [49: #46 - applying correct `chmod()` to generated cache file](https://github.com/doctrine/annotations/pull/49)
+- [50: Hotfix: match escaped quotes (revert #44)](https://github.com/doctrine/annotations/pull/50)
+
+### 1.2.2
+
+Total issues resolved: **4**
+
+- [43: Exclude files from distribution with .gitattributes](https://github.com/doctrine/annotations/pull/43)
+- [44: Update DocLexer.php](https://github.com/doctrine/annotations/pull/44)
+- [46: A plain "file_put_contents" can cause havoc](https://github.com/doctrine/annotations/pull/46)
+- [48: Deprecating the `FileCacheReader` in 1.2.2: will be removed in 2.0.0](https://github.com/doctrine/annotations/pull/48)
+
+### 1.2.1
+
+Total issues resolved: **4**
+
+- [38: fixes doctrine/common#326](https://github.com/doctrine/annotations/pull/38)
+- [39: Remove superfluous NS](https://github.com/doctrine/annotations/pull/39)
+- [41: Warn if load_comments is not enabled.](https://github.com/doctrine/annotations/pull/41)
+- [42: Clean up unused uses](https://github.com/doctrine/annotations/pull/42)
+
+### 1.2.0
+
+ * HHVM support
+ * Allowing dangling comma in annotations
+ * Excluded annotations are no longer autoloaded
+ * Importing namespaces also in traits
+ * Added support for `::class` 5.5-style constant, works also in 5.3 and 5.4
+
+### 1.1.0
+
+ * Add Exception when ZendOptimizer+ or Opcache is configured to drop comments
diff --git a/lib/composer/doctrine/annotations/LICENSE b/lib/composer/doctrine/annotations/LICENSE
new file mode 100644
index 0000000000000..5e781fce4bb50
--- /dev/null
+++ b/lib/composer/doctrine/annotations/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2006-2013 Doctrine Project
+
+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/lib/composer/doctrine/annotations/README.md b/lib/composer/doctrine/annotations/README.md
new file mode 100644
index 0000000000000..a53b91f2b0d85
--- /dev/null
+++ b/lib/composer/doctrine/annotations/README.md
@@ -0,0 +1,17 @@
+# Doctrine Annotations
+
+[![Build Status](https://travis-ci.org/doctrine/annotations.svg?branch=master)](https://travis-ci.org/doctrine/annotations)
+[![Dependency Status](https://www.versioneye.com/package/php--doctrine--annotations/badge.png)](https://www.versioneye.com/package/php--doctrine--annotations)
+[![Reference Status](https://www.versioneye.com/php/doctrine:annotations/reference_badge.svg)](https://www.versioneye.com/php/doctrine:annotations/references)
+[![Total Downloads](https://poser.pugx.org/doctrine/annotations/downloads.png)](https://packagist.org/packages/doctrine/annotations)
+[![Latest Stable Version](https://poser.pugx.org/doctrine/annotations/v/stable.png)](https://packagist.org/packages/doctrine/annotations)
+
+Docblock Annotations Parser library (extracted from [Doctrine Common](https://github.com/doctrine/common)).
+
+## Documentation
+
+See the [doctrine-project website](https://www.doctrine-project.org/projects/doctrine-annotations/en/latest/index.html).
+
+## Changelog
+
+See [CHANGELOG.md](CHANGELOG.md).
diff --git a/lib/composer/doctrine/annotations/composer.json b/lib/composer/doctrine/annotations/composer.json
new file mode 100644
index 0000000000000..040e71732c4d4
--- /dev/null
+++ b/lib/composer/doctrine/annotations/composer.json
@@ -0,0 +1,44 @@
+{
+ "name": "doctrine/annotations",
+ "type": "library",
+ "description": "Docblock Annotations Parser",
+ "keywords": ["annotations", "docblock", "parser"],
+ "homepage": "http://www.doctrine-project.org",
+ "license": "MIT",
+ "authors": [
+ {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"},
+ {"name": "Roman Borschel", "email": "roman@code-factory.org"},
+ {"name": "Benjamin Eberlei", "email": "kontakt@beberlei.de"},
+ {"name": "Jonathan Wage", "email": "jonwage@gmail.com"},
+ {"name": "Johannes Schmitt", "email": "schmittjoh@gmail.com"}
+ ],
+ "require": {
+ "php": "^7.1 || ^8.0",
+ "ext-tokenizer": "*",
+ "doctrine/lexer": "1.*"
+ },
+ "require-dev": {
+ "doctrine/cache": "1.*",
+ "phpunit/phpunit": "^7.5"
+ },
+ "config": {
+ "sort-packages": true
+ },
+ "autoload": {
+ "psr-4": { "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Doctrine\\Performance\\Common\\Annotations\\": "tests/Doctrine/Performance/Common/Annotations",
+ "Doctrine\\Tests\\Common\\Annotations\\": "tests/Doctrine/Tests/Common/Annotations"
+ },
+ "files": [
+ "tests/Doctrine/Tests/Common/Annotations/Fixtures/SingleClassLOC1000.php"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.9.x-dev"
+ }
+ }
+}
diff --git a/lib/composer/doctrine/annotations/docs/en/annotations.rst b/lib/composer/doctrine/annotations/docs/en/annotations.rst
new file mode 100644
index 0000000000000..1984dba5f7c2d
--- /dev/null
+++ b/lib/composer/doctrine/annotations/docs/en/annotations.rst
@@ -0,0 +1,271 @@
+Handling Annotations
+====================
+
+There are several different approaches to handling annotations in PHP.
+Doctrine Annotations maps docblock annotations to PHP classes. Because
+not all docblock annotations are used for metadata purposes a filter is
+applied to ignore or skip classes that are not Doctrine annotations.
+
+Take a look at the following code snippet:
+
+.. code-block:: php
+
+ namespace MyProject\Entities;
+
+ use Doctrine\ORM\Mapping AS ORM;
+ use Symfony\Component\Validation\Constraints AS Assert;
+
+ /**
+ * @author Benjamin Eberlei
+ * @ORM\Entity
+ * @MyProject\Annotations\Foobarable
+ */
+ class User
+ {
+ /**
+ * @ORM\Id @ORM\Column @ORM\GeneratedValue
+ * @dummy
+ * @var int
+ */
+ private $id;
+
+ /**
+ * @ORM\Column(type="string")
+ * @Assert\NotEmpty
+ * @Assert\Email
+ * @var string
+ */
+ private $email;
+ }
+
+In this snippet you can see a variety of different docblock annotations:
+
+- Documentation annotations such as ``@var`` and ``@author``. These
+ annotations are on a blacklist and never considered for throwing an
+ exception due to wrongly used annotations.
+- Annotations imported through use statements. The statement ``use
+ Doctrine\ORM\Mapping AS ORM`` makes all classes under that namespace
+ available as ``@ORM\ClassName``. Same goes for the import of
+ ``@Assert``.
+- The ``@dummy`` annotation. It is not a documentation annotation and
+ not blacklisted. For Doctrine Annotations it is not entirely clear how
+ to handle this annotation. Depending on the configuration an exception
+ (unknown annotation) will be thrown when parsing this annotation.
+- The fully qualified annotation ``@MyProject\Annotations\Foobarable``.
+ This is transformed directly into the given class name.
+
+How are these annotations loaded? From looking at the code you could
+guess that the ORM Mapping, Assert Validation and the fully qualified
+annotation can just be loaded using
+the defined PHP autoloaders. This is not the case however: For error
+handling reasons every check for class existence inside the
+``AnnotationReader`` sets the second parameter $autoload
+of ``class_exists($name, $autoload)`` to false. To work flawlessly the
+``AnnotationReader`` requires silent autoloaders which many autoloaders are
+not. Silent autoloading is NOT part of the `PSR-0 specification
+`_
+for autoloading.
+
+This is why Doctrine Annotations uses its own autoloading mechanism
+through a global registry. If you are wondering about the annotation
+registry being global, there is no other way to solve the architectural
+problems of autoloading annotation classes in a straightforward fashion.
+Additionally if you think about PHP autoloading then you recognize it is
+a global as well.
+
+To anticipate the configuration section, making the above PHP class work
+with Doctrine Annotations requires this setup:
+
+.. code-block:: php
+
+ use Doctrine\Common\Annotations\AnnotationReader;
+ use Doctrine\Common\Annotations\AnnotationRegistry;
+
+ AnnotationRegistry::registerFile("/path/to/doctrine/lib/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php");
+ AnnotationRegistry::registerAutoloadNamespace("Symfony\Component\Validator\Constraint", "/path/to/symfony/src");
+ AnnotationRegistry::registerAutoloadNamespace("MyProject\Annotations", "/path/to/myproject/src");
+
+ $reader = new AnnotationReader();
+ AnnotationReader::addGlobalIgnoredName('dummy');
+
+The second block with the annotation registry calls registers all the
+three different annotation namespaces that are used.
+Doctrine Annotations saves all its annotations in a single file, that is
+why ``AnnotationRegistry#registerFile`` is used in contrast to
+``AnnotationRegistry#registerAutoloadNamespace`` which creates a PSR-0
+compatible loading mechanism for class to file names.
+
+In the third block, we create the actual ``AnnotationReader`` instance.
+Note that we also add ``dummy`` to the global list of ignored
+annotations for which we do not throw exceptions. Setting this is
+necessary in our example case, otherwise ``@dummy`` would trigger an
+exception to be thrown during the parsing of the docblock of
+``MyProject\Entities\User#id``.
+
+Setup and Configuration
+-----------------------
+
+To use the annotations library is simple, you just need to create a new
+``AnnotationReader`` instance:
+
+.. code-block:: php
+
+ $reader = new \Doctrine\Common\Annotations\AnnotationReader();
+
+This creates a simple annotation reader with no caching other than in
+memory (in php arrays). Since parsing docblocks can be expensive you
+should cache this process by using a caching reader.
+
+You can use a file caching reader, but please note it is deprecated to
+do so:
+
+.. code-block:: php
+
+ use Doctrine\Common\Annotations\FileCacheReader;
+ use Doctrine\Common\Annotations\AnnotationReader;
+
+ $reader = new FileCacheReader(
+ new AnnotationReader(),
+ "/path/to/cache",
+ $debug = true
+ );
+
+If you set the ``debug`` flag to ``true`` the cache reader will check
+for changes in the original files, which is very important during
+development. If you don't set it to ``true`` you have to delete the
+directory to clear the cache. This gives faster performance, however
+should only be used in production, because of its inconvenience during
+development.
+
+You can also use one of the ``Doctrine\Common\Cache\Cache`` cache
+implementations to cache the annotations:
+
+.. code-block:: php
+
+ use Doctrine\Common\Annotations\AnnotationReader;
+ use Doctrine\Common\Annotations\CachedReader;
+ use Doctrine\Common\Cache\ApcCache;
+
+ $reader = new CachedReader(
+ new AnnotationReader(),
+ new ApcCache(),
+ $debug = true
+ );
+
+The ``debug`` flag is used here as well to invalidate the cache files
+when the PHP class with annotations changed and should be used during
+development.
+
+.. warning ::
+
+ The ``AnnotationReader`` works and caches under the
+ assumption that all annotations of a doc-block are processed at
+ once. That means that annotation classes that do not exist and
+ aren't loaded and cannot be autoloaded (using the
+ AnnotationRegistry) would never be visible and not accessible if a
+ cache is used unless the cache is cleared and the annotations
+ requested again, this time with all annotations defined.
+
+By default the annotation reader returns a list of annotations with
+numeric indexes. If you want your annotations to be indexed by their
+class name you can wrap the reader in an ``IndexedReader``:
+
+.. code-block:: php
+
+ use Doctrine\Common\Annotations\AnnotationReader;
+ use Doctrine\Common\Annotations\IndexedReader;
+
+ $reader = new IndexedReader(new AnnotationReader());
+
+.. warning::
+
+ You should never wrap the indexed reader inside a cached reader,
+ only the other way around. This way you can re-use the cache with
+ indexed or numeric keys, otherwise your code may experience failures
+ due to caching in a numerical or indexed format.
+
+Registering Annotations
+~~~~~~~~~~~~~~~~~~~~~~~
+
+As explained in the introduction, Doctrine Annotations uses its own
+autoloading mechanism to determine if a given annotation has a
+corresponding PHP class that can be autoloaded. For annotation
+autoloading you have to configure the
+``Doctrine\Common\Annotations\AnnotationRegistry``. There are three
+different mechanisms to configure annotation autoloading:
+
+- Calling ``AnnotationRegistry#registerFile($file)`` to register a file
+ that contains one or more annotation classes.
+- Calling ``AnnotationRegistry#registerNamespace($namespace, $dirs =
+ null)`` to register that the given namespace contains annotations and
+ that their base directory is located at the given $dirs or in the
+ include path if ``NULL`` is passed. The given directories should *NOT*
+ be the directory where classes of the namespace are in, but the base
+ directory of the root namespace. The AnnotationRegistry uses a
+ namespace to directory separator approach to resolve the correct path.
+- Calling ``AnnotationRegistry#registerLoader($callable)`` to register
+ an autoloader callback. The callback accepts the class as first and
+ only parameter and has to return ``true`` if the corresponding file
+ was found and included.
+
+.. note::
+
+ Loaders have to fail silently, if a class is not found even if it
+ matches for example the namespace prefix of that loader. Never is a
+ loader to throw a warning or exception if the loading failed
+ otherwise parsing doc block annotations will become a huge pain.
+
+A sample loader callback could look like:
+
+.. code-block:: php
+
+ use Doctrine\Common\Annotations\AnnotationRegistry;
+ use Symfony\Component\ClassLoader\UniversalClassLoader;
+
+ AnnotationRegistry::registerLoader(function($class) {
+ $file = str_replace("\\", DIRECTORY_SEPARATOR, $class) . ".php";
+
+ if (file_exists("/my/base/path/" . $file)) {
+ // file_exists() makes sure that the loader fails silently
+ require "/my/base/path/" . $file;
+ }
+ });
+
+ $loader = new UniversalClassLoader();
+ AnnotationRegistry::registerLoader(array($loader, "loadClass"));
+
+
+Ignoring missing exceptions
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+By default an exception is thrown from the ``AnnotationReader`` if an
+annotation was found that:
+
+- is not part of the blacklist of ignored "documentation annotations";
+- was not imported through a use statement;
+- is not a fully qualified class that exists.
+
+You can disable this behavior for specific names if your docblocks do
+not follow strict requirements:
+
+.. code-block:: php
+
+ $reader = new \Doctrine\Common\Annotations\AnnotationReader();
+ AnnotationReader::addGlobalIgnoredName('foo');
+
+PHP Imports
+~~~~~~~~~~~
+
+By default the annotation reader parses the use-statement of a php file
+to gain access to the import rules and register them for the annotation
+processing. Only if you are using PHP Imports can you validate the
+correct usage of annotations and throw exceptions if you misspelled an
+annotation. This mechanism is enabled by default.
+
+To ease the upgrade path, we still allow you to disable this mechanism.
+Note however that we will remove this in future versions:
+
+.. code-block:: php
+
+ $reader = new \Doctrine\Common\Annotations\AnnotationReader();
+ $reader->setEnabledPhpImports(false);
diff --git a/lib/composer/doctrine/annotations/docs/en/custom.rst b/lib/composer/doctrine/annotations/docs/en/custom.rst
new file mode 100644
index 0000000000000..e589a5432a1bb
--- /dev/null
+++ b/lib/composer/doctrine/annotations/docs/en/custom.rst
@@ -0,0 +1,353 @@
+Custom Annotation Classes
+=========================
+
+If you want to define your own annotations, you just have to group them
+in a namespace and register this namespace in the ``AnnotationRegistry``.
+Annotation classes have to contain a class-level docblock with the text
+``@Annotation``:
+
+.. code-block:: php
+
+ namespace MyCompany\Annotations;
+
+ /** @Annotation */
+ class Bar
+ {
+ // some code
+ }
+
+Inject annotation values
+------------------------
+
+The annotation parser checks if the annotation constructor has arguments,
+if so then it will pass the value array, otherwise it will try to inject
+values into public properties directly:
+
+
+.. code-block:: php
+
+ namespace MyCompany\Annotations;
+
+ /**
+ * @Annotation
+ *
+ * Some Annotation using a constructor
+ */
+ class Bar
+ {
+ private $foo;
+
+ public function __construct(array $values)
+ {
+ $this->foo = $values['foo'];
+ }
+ }
+
+ /**
+ * @Annotation
+ *
+ * Some Annotation without a constructor
+ */
+ class Foo
+ {
+ public $bar;
+ }
+
+Annotation Target
+-----------------
+
+``@Target`` indicates the kinds of class elements to which an annotation
+type is applicable. Then you could define one or more targets:
+
+- ``CLASS`` Allowed in class docblocks
+- ``PROPERTY`` Allowed in property docblocks
+- ``METHOD`` Allowed in the method docblocks
+- ``ALL`` Allowed in class, property and method docblocks
+- ``ANNOTATION`` Allowed inside other annotations
+
+If the annotations is not allowed in the current context, an
+``AnnotationException`` is thrown.
+
+.. code-block:: php
+
+ namespace MyCompany\Annotations;
+
+ /**
+ * @Annotation
+ * @Target({"METHOD","PROPERTY"})
+ */
+ class Bar
+ {
+ // some code
+ }
+
+ /**
+ * @Annotation
+ * @Target("CLASS")
+ */
+ class Foo
+ {
+ // some code
+ }
+
+Attribute types
+---------------
+
+The annotation parser checks the given parameters using the phpdoc
+annotation ``@var``, The data type could be validated using the ``@var``
+annotation on the annotation properties or using the ``@Attributes`` and
+``@Attribute`` annotations.
+
+If the data type does not match you get an ``AnnotationException``
+
+.. code-block:: php
+
+ namespace MyCompany\Annotations;
+
+ /**
+ * @Annotation
+ * @Target({"METHOD","PROPERTY"})
+ */
+ class Bar
+ {
+ /** @var mixed */
+ public $mixed;
+
+ /** @var boolean */
+ public $boolean;
+
+ /** @var bool */
+ public $bool;
+
+ /** @var float */
+ public $float;
+
+ /** @var string */
+ public $string;
+
+ /** @var integer */
+ public $integer;
+
+ /** @var array */
+ public $array;
+
+ /** @var SomeAnnotationClass */
+ public $annotation;
+
+ /** @var array */
+ public $arrayOfIntegers;
+
+ /** @var array */
+ public $arrayOfAnnotations;
+ }
+
+ /**
+ * @Annotation
+ * @Target({"METHOD","PROPERTY"})
+ * @Attributes({
+ * @Attribute("stringProperty", type = "string"),
+ * @Attribute("annotProperty", type = "SomeAnnotationClass"),
+ * })
+ */
+ class Foo
+ {
+ public function __construct(array $values)
+ {
+ $this->stringProperty = $values['stringProperty'];
+ $this->annotProperty = $values['annotProperty'];
+ }
+
+ // some code
+ }
+
+Annotation Required
+-------------------
+
+``@Required`` indicates that the field must be specified when the
+annotation is used. If it is not used you get an ``AnnotationException``
+stating that this value can not be null.
+
+Declaring a required field:
+
+.. code-block:: php
+
+ /**
+ * @Annotation
+ * @Target("ALL")
+ */
+ class Foo
+ {
+ /** @Required */
+ public $requiredField;
+ }
+
+Usage:
+
+.. code-block:: php
+
+ /** @Foo(requiredField="value") */
+ public $direction; // Valid
+
+ /** @Foo */
+ public $direction; // Required field missing, throws an AnnotationException
+
+
+Enumerated values
+-----------------
+
+- An annotation property marked with ``@Enum`` is a field that accepts a
+ fixed set of scalar values.
+- You should use ``@Enum`` fields any time you need to represent fixed
+ values.
+- The annotation parser checks the given value and throws an
+ ``AnnotationException`` if the value does not match.
+
+
+Declaring an enumerated property:
+
+.. code-block:: php
+
+ /**
+ * @Annotation
+ * @Target("ALL")
+ */
+ class Direction
+ {
+ /**
+ * @Enum({"NORTH", "SOUTH", "EAST", "WEST"})
+ */
+ public $value;
+ }
+
+Annotation usage:
+
+.. code-block:: php
+
+ /** @Direction("NORTH") */
+ public $direction; // Valid value
+
+ /** @Direction("NORTHEAST") */
+ public $direction; // Invalid value, throws an AnnotationException
+
+
+Constants
+---------
+
+The use of constants and class constants is available on the annotations
+parser.
+
+The following usages are allowed:
+
+.. code-block:: php
+
+ namespace MyCompany\Entity;
+
+ use MyCompany\Annotations\Foo;
+ use MyCompany\Annotations\Bar;
+ use MyCompany\Entity\SomeClass;
+
+ /**
+ * @Foo(PHP_EOL)
+ * @Bar(Bar::FOO)
+ * @Foo({SomeClass::FOO, SomeClass::BAR})
+ * @Bar({SomeClass::FOO_KEY = SomeClass::BAR_VALUE})
+ */
+ class User
+ {
+ }
+
+
+Be careful with constants and the cache !
+
+.. note::
+
+ The cached reader will not re-evaluate each time an annotation is
+ loaded from cache. When a constant is changed the cache must be
+ cleaned.
+
+
+Usage
+-----
+
+Using the library API is simple. Using the annotations described in the
+previous section, you can now annotate other classes with your
+annotations:
+
+.. code-block:: php
+
+ namespace MyCompany\Entity;
+
+ use MyCompany\Annotations\Foo;
+ use MyCompany\Annotations\Bar;
+
+ /**
+ * @Foo(bar="foo")
+ * @Bar(foo="bar")
+ */
+ class User
+ {
+ }
+
+Now we can write a script to get the annotations above:
+
+.. code-block:: php
+
+ $reflClass = new ReflectionClass('MyCompany\Entity\User');
+ $classAnnotations = $reader->getClassAnnotations($reflClass);
+
+ foreach ($classAnnotations AS $annot) {
+ if ($annot instanceof \MyCompany\Annotations\Foo) {
+ echo $annot->bar; // prints "foo";
+ } else if ($annot instanceof \MyCompany\Annotations\Bar) {
+ echo $annot->foo; // prints "bar";
+ }
+ }
+
+You have a complete API for retrieving annotation class instances from a
+class, property or method docblock:
+
+
+Reader API
+~~~~~~~~~~
+
+Access all annotations of a class
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: php
+
+ public function getClassAnnotations(\ReflectionClass $class);
+
+Access one annotation of a class
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: php
+
+ public function getClassAnnotation(\ReflectionClass $class, $annotationName);
+
+Access all annotations of a method
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: php
+
+ public function getMethodAnnotations(\ReflectionMethod $method);
+
+Access one annotation of a method
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: php
+
+ public function getMethodAnnotation(\ReflectionMethod $method, $annotationName);
+
+Access all annotations of a property
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: php
+
+ public function getPropertyAnnotations(\ReflectionProperty $property);
+
+Access one annotation of a property
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: php
+
+ public function getPropertyAnnotation(\ReflectionProperty $property, $annotationName);
diff --git a/lib/composer/doctrine/annotations/docs/en/index.rst b/lib/composer/doctrine/annotations/docs/en/index.rst
new file mode 100644
index 0000000000000..3b3368c962714
--- /dev/null
+++ b/lib/composer/doctrine/annotations/docs/en/index.rst
@@ -0,0 +1,97 @@
+Introduction
+============
+
+Doctrine Annotations allows to implement custom annotation
+functionality for PHP classes.
+
+.. code-block:: php
+
+ class Foo
+ {
+ /**
+ * @MyAnnotation(myProperty="value")
+ */
+ private $bar;
+ }
+
+Annotations aren't implemented in PHP itself which is why this component
+offers a way to use the PHP doc-blocks as a place for the well known
+annotation syntax using the ``@`` char.
+
+Annotations in Doctrine are used for the ORM configuration to build the
+class mapping, but it can be used in other projects for other purposes
+too.
+
+Installation
+============
+
+You can install the Annotation component with composer:
+
+.. code-block::
+
+ $ composer require doctrine/annotations
+
+Create an annotation class
+==========================
+
+An annotation class is a representation of the later used annotation
+configuration in classes. The annotation class of the previous example
+looks like this:
+
+.. code-block:: php
+
+ /**
+ * @Annotation
+ */
+ final class MyAnnotation
+ {
+ public $myProperty;
+ }
+
+The annotation class is declared as an annotation by ``@Annotation``.
+
+:ref:`Read more about custom annotations. `
+
+Reading annotations
+===================
+
+The access to the annotations happens by reflection of the class
+containing them. There are multiple reader-classes implementing the
+``Doctrine\Common\Annotations\Reader`` interface, that can access the
+annotations of a class. A common one is
+``Doctrine\Common\Annotations\AnnotationReader``:
+
+.. code-block:: php
+
+ use Doctrine\Common\Annotations\AnnotationReader;
+ use Doctrine\Common\Annotations\AnnotationRegistry;
+
+ // Deprecated and will be removed in 2.0 but currently needed
+ AnnotationRegistry::registerLoader('class_exists');
+
+ $reflectionClass = new ReflectionClass(Foo::class);
+ $property = $reflectionClass->getProperty('bar');
+
+ $reader = new AnnotationReader();
+ $myAnnotation = $reader->getPropertyAnnotation($property, MyAnnotation::class);
+
+ echo $myAnnotation->myProperty; // result: "value"
+
+Note that ``AnnotationRegistry::registerLoader('class_exists')`` only works
+if you already have an autoloader configured (i.e. composer autoloader).
+Otherwise, :ref:`please take a look to the other annotation autoload mechanisms `.
+
+A reader has multiple methods to access the annotations of a class.
+
+:ref:`Read more about handling annotations. `
+
+IDE Support
+-----------
+
+Some IDEs already provide support for annotations:
+
+- Eclipse via the `Symfony2 Plugin `_
+- PHPStorm via the `PHP Annotations Plugin `_ or the `Symfony2 Plugin `_
+
+.. _Read more about handling annotations.: annotations
+.. _Read more about custom annotations.: custom
diff --git a/lib/composer/doctrine/annotations/docs/en/sidebar.rst b/lib/composer/doctrine/annotations/docs/en/sidebar.rst
new file mode 100644
index 0000000000000..6f5d13c46ab07
--- /dev/null
+++ b/lib/composer/doctrine/annotations/docs/en/sidebar.rst
@@ -0,0 +1,6 @@
+.. toctree::
+ :depth: 3
+
+ index
+ annotations
+ custom
diff --git a/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation.php b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation.php
new file mode 100644
index 0000000000000..a79a0f8f0a18d
--- /dev/null
+++ b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation.php
@@ -0,0 +1,79 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+/**
+ * Annotations class.
+ *
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ */
+class Annotation
+{
+ /**
+ * Value property. Common among all derived classes.
+ *
+ * @var string
+ */
+ public $value;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data Key-value for properties to be defined in this class.
+ */
+ public final function __construct(array $data)
+ {
+ foreach ($data as $key => $value) {
+ $this->$key = $value;
+ }
+ }
+
+ /**
+ * Error handler for unknown property accessor in Annotation class.
+ *
+ * @param string $name Unknown property name.
+ *
+ * @throws \BadMethodCallException
+ */
+ public function __get($name)
+ {
+ throw new \BadMethodCallException(
+ sprintf("Unknown property '%s' on annotation '%s'.", $name, get_class($this))
+ );
+ }
+
+ /**
+ * Error handler for unknown property mutator in Annotation class.
+ *
+ * @param string $name Unknown property name.
+ * @param mixed $value Property value.
+ *
+ * @throws \BadMethodCallException
+ */
+ public function __set($name, $value)
+ {
+ throw new \BadMethodCallException(
+ sprintf("Unknown property '%s' on annotation '%s'.", $name, get_class($this))
+ );
+ }
+}
diff --git a/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attribute.php b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attribute.php
new file mode 100644
index 0000000000000..dbef6df087497
--- /dev/null
+++ b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attribute.php
@@ -0,0 +1,47 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations\Annotation;
+
+/**
+ * Annotation that can be used to signal to the parser
+ * to check the attribute type during the parsing process.
+ *
+ * @author Fabio B. Silva
+ *
+ * @Annotation
+ */
+final class Attribute
+{
+ /**
+ * @var string
+ */
+ public $name;
+
+ /**
+ * @var string
+ */
+ public $type;
+
+ /**
+ * @var boolean
+ */
+ public $required = false;
+}
diff --git a/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attributes.php b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attributes.php
new file mode 100644
index 0000000000000..53134e3097af6
--- /dev/null
+++ b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attributes.php
@@ -0,0 +1,37 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations\Annotation;
+
+/**
+ * Annotation that can be used to signal to the parser
+ * to check the types of all declared attributes during the parsing process.
+ *
+ * @author Fabio B. Silva
+ *
+ * @Annotation
+ */
+final class Attributes
+{
+ /**
+ * @var array
+ */
+ public $value;
+}
diff --git a/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Enum.php b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Enum.php
new file mode 100644
index 0000000000000..82f6241ec96c4
--- /dev/null
+++ b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Enum.php
@@ -0,0 +1,84 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations\Annotation;
+
+/**
+ * Annotation that can be used to signal to the parser
+ * to check the available values during the parsing process.
+ *
+ * @since 2.4
+ * @author Fabio B. Silva
+ *
+ * @Annotation
+ * @Attributes({
+ * @Attribute("value", required = true, type = "array"),
+ * @Attribute("literal", required = false, type = "array")
+ * })
+ */
+final class Enum
+{
+ /**
+ * @var array
+ */
+ public $value;
+
+ /**
+ * Literal target declaration.
+ *
+ * @var array
+ */
+ public $literal;
+
+ /**
+ * Annotation constructor.
+ *
+ * @param array $values
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function __construct(array $values)
+ {
+ if ( ! isset($values['literal'])) {
+ $values['literal'] = [];
+ }
+
+ foreach ($values['value'] as $var) {
+ if( ! is_scalar($var)) {
+ throw new \InvalidArgumentException(sprintf(
+ '@Enum supports only scalar values "%s" given.',
+ is_object($var) ? get_class($var) : gettype($var)
+ ));
+ }
+ }
+
+ foreach ($values['literal'] as $key => $var) {
+ if( ! in_array($key, $values['value'])) {
+ throw new \InvalidArgumentException(sprintf(
+ 'Undefined enumerator value "%s" for literal "%s".',
+ $key , $var
+ ));
+ }
+ }
+
+ $this->value = $values['value'];
+ $this->literal = $values['literal'];
+ }
+}
diff --git a/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/IgnoreAnnotation.php b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/IgnoreAnnotation.php
new file mode 100644
index 0000000000000..85ec3d6dd1d25
--- /dev/null
+++ b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/IgnoreAnnotation.php
@@ -0,0 +1,54 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations\Annotation;
+
+/**
+ * Annotation that can be used to signal to the parser to ignore specific
+ * annotations during the parsing process.
+ *
+ * @Annotation
+ * @author Johannes M. Schmitt
+ */
+final class IgnoreAnnotation
+{
+ /**
+ * @var array
+ */
+ public $names;
+
+ /**
+ * Constructor.
+ *
+ * @param array $values
+ *
+ * @throws \RuntimeException
+ */
+ public function __construct(array $values)
+ {
+ if (is_string($values['value'])) {
+ $values['value'] = [$values['value']];
+ }
+ if (!is_array($values['value'])) {
+ throw new \RuntimeException(sprintf('@IgnoreAnnotation expects either a string name, or an array of strings, but got %s.', json_encode($values['value'])));
+ }
+
+ $this->names = $values['value'];
+ }
+}
diff --git a/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Required.php b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Required.php
new file mode 100644
index 0000000000000..d67f9606879fd
--- /dev/null
+++ b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Required.php
@@ -0,0 +1,33 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations\Annotation;
+
+/**
+ * Annotation that can be used to signal to the parser
+ * to check if that attribute is required during the parsing process.
+ *
+ * @author Fabio B. Silva
+ *
+ * @Annotation
+ */
+final class Required
+{
+}
diff --git a/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php
new file mode 100644
index 0000000000000..a52972b8b4782
--- /dev/null
+++ b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php
@@ -0,0 +1,107 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations\Annotation;
+
+/**
+ * Annotation that can be used to signal to the parser
+ * to check the annotation target during the parsing process.
+ *
+ * @author Fabio B. Silva
+ *
+ * @Annotation
+ */
+final class Target
+{
+ const TARGET_CLASS = 1;
+ const TARGET_METHOD = 2;
+ const TARGET_PROPERTY = 4;
+ const TARGET_ANNOTATION = 8;
+ const TARGET_ALL = 15;
+
+ /**
+ * @var array
+ */
+ private static $map = [
+ 'ALL' => self::TARGET_ALL,
+ 'CLASS' => self::TARGET_CLASS,
+ 'METHOD' => self::TARGET_METHOD,
+ 'PROPERTY' => self::TARGET_PROPERTY,
+ 'ANNOTATION' => self::TARGET_ANNOTATION,
+ ];
+
+ /**
+ * @var array
+ */
+ public $value;
+
+ /**
+ * Targets as bitmask.
+ *
+ * @var integer
+ */
+ public $targets;
+
+ /**
+ * Literal target declaration.
+ *
+ * @var integer
+ */
+ public $literal;
+
+ /**
+ * Annotation constructor.
+ *
+ * @param array $values
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function __construct(array $values)
+ {
+ if (!isset($values['value'])){
+ $values['value'] = null;
+ }
+ if (is_string($values['value'])){
+ $values['value'] = [$values['value']];
+ }
+ if (!is_array($values['value'])){
+ throw new \InvalidArgumentException(
+ sprintf('@Target expects either a string value, or an array of strings, "%s" given.',
+ is_object($values['value']) ? get_class($values['value']) : gettype($values['value'])
+ )
+ );
+ }
+
+ $bitmask = 0;
+ foreach ($values['value'] as $literal) {
+ if(!isset(self::$map[$literal])){
+ throw new \InvalidArgumentException(
+ sprintf('Invalid Target "%s". Available targets: [%s]',
+ $literal, implode(', ', array_keys(self::$map)))
+ );
+ }
+ $bitmask |= self::$map[$literal];
+ }
+
+ $this->targets = $bitmask;
+ $this->value = $values['value'];
+ $this->literal = implode(', ', $this->value);
+ }
+}
diff --git a/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php
new file mode 100644
index 0000000000000..d06fe663c2696
--- /dev/null
+++ b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php
@@ -0,0 +1,197 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+/**
+ * Description of AnnotationException
+ *
+ * @since 2.0
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ */
+class AnnotationException extends \Exception
+{
+ /**
+ * Creates a new AnnotationException describing a Syntax error.
+ *
+ * @param string $message Exception message
+ *
+ * @return AnnotationException
+ */
+ public static function syntaxError($message)
+ {
+ return new self('[Syntax Error] ' . $message);
+ }
+
+ /**
+ * Creates a new AnnotationException describing a Semantical error.
+ *
+ * @param string $message Exception message
+ *
+ * @return AnnotationException
+ */
+ public static function semanticalError($message)
+ {
+ return new self('[Semantical Error] ' . $message);
+ }
+
+ /**
+ * Creates a new AnnotationException describing an error which occurred during
+ * the creation of the annotation.
+ *
+ * @since 2.2
+ *
+ * @param string $message
+ *
+ * @return AnnotationException
+ */
+ public static function creationError($message)
+ {
+ return new self('[Creation Error] ' . $message);
+ }
+
+ /**
+ * Creates a new AnnotationException describing a type error.
+ *
+ * @since 1.1
+ *
+ * @param string $message
+ *
+ * @return AnnotationException
+ */
+ public static function typeError($message)
+ {
+ return new self('[Type Error] ' . $message);
+ }
+
+ /**
+ * Creates a new AnnotationException describing a constant semantical error.
+ *
+ * @since 2.3
+ *
+ * @param string $identifier
+ * @param string $context
+ *
+ * @return AnnotationException
+ */
+ public static function semanticalErrorConstants($identifier, $context = null)
+ {
+ return self::semanticalError(sprintf(
+ "Couldn't find constant %s%s.",
+ $identifier,
+ $context ? ', ' . $context : ''
+ ));
+ }
+
+ /**
+ * Creates a new AnnotationException describing an type error of an attribute.
+ *
+ * @since 2.2
+ *
+ * @param string $attributeName
+ * @param string $annotationName
+ * @param string $context
+ * @param string $expected
+ * @param mixed $actual
+ *
+ * @return AnnotationException
+ */
+ public static function attributeTypeError($attributeName, $annotationName, $context, $expected, $actual)
+ {
+ return self::typeError(sprintf(
+ 'Attribute "%s" of @%s declared on %s expects %s, but got %s.',
+ $attributeName,
+ $annotationName,
+ $context,
+ $expected,
+ is_object($actual) ? 'an instance of ' . get_class($actual) : gettype($actual)
+ ));
+ }
+
+ /**
+ * Creates a new AnnotationException describing an required error of an attribute.
+ *
+ * @since 2.2
+ *
+ * @param string $attributeName
+ * @param string $annotationName
+ * @param string $context
+ * @param string $expected
+ *
+ * @return AnnotationException
+ */
+ public static function requiredError($attributeName, $annotationName, $context, $expected)
+ {
+ return self::typeError(sprintf(
+ 'Attribute "%s" of @%s declared on %s expects %s. This value should not be null.',
+ $attributeName,
+ $annotationName,
+ $context,
+ $expected
+ ));
+ }
+
+ /**
+ * Creates a new AnnotationException describing a invalid enummerator.
+ *
+ * @since 2.4
+ *
+ * @param string $attributeName
+ * @param string $annotationName
+ * @param string $context
+ * @param array $available
+ * @param mixed $given
+ *
+ * @return AnnotationException
+ */
+ public static function enumeratorError($attributeName, $annotationName, $context, $available, $given)
+ {
+ return new self(sprintf(
+ '[Enum Error] Attribute "%s" of @%s declared on %s accept only [%s], but got %s.',
+ $attributeName,
+ $annotationName,
+ $context,
+ implode(', ', $available),
+ is_object($given) ? get_class($given) : $given
+ ));
+ }
+
+ /**
+ * @return AnnotationException
+ */
+ public static function optimizerPlusSaveComments()
+ {
+ return new self(
+ "You have to enable opcache.save_comments=1 or zend_optimizerplus.save_comments=1."
+ );
+ }
+
+ /**
+ * @return AnnotationException
+ */
+ public static function optimizerPlusLoadComments()
+ {
+ return new self(
+ "You have to enable opcache.load_comments=1 or zend_optimizerplus.load_comments=1."
+ );
+ }
+}
diff --git a/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationReader.php b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationReader.php
new file mode 100644
index 0000000000000..8811c2951d230
--- /dev/null
+++ b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationReader.php
@@ -0,0 +1,418 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+use Doctrine\Common\Annotations\Annotation\IgnoreAnnotation;
+use Doctrine\Common\Annotations\Annotation\Target;
+use ReflectionClass;
+use ReflectionMethod;
+use ReflectionProperty;
+
+/**
+ * A reader for docblock annotations.
+ *
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ * @author Johannes M. Schmitt
+ */
+class AnnotationReader implements Reader
+{
+ /**
+ * Global map for imports.
+ *
+ * @var array
+ */
+ private static $globalImports = [
+ 'ignoreannotation' => 'Doctrine\Common\Annotations\Annotation\IgnoreAnnotation',
+ ];
+
+ /**
+ * A list with annotations that are not causing exceptions when not resolved to an annotation class.
+ *
+ * The names are case sensitive.
+ *
+ * @var array
+ */
+ private static $globalIgnoredNames = [
+ // Annotation tags
+ 'Annotation' => true, 'Attribute' => true, 'Attributes' => true,
+ /* Can we enable this? 'Enum' => true, */
+ 'Required' => true,
+ 'Target' => true,
+ // Widely used tags (but not existent in phpdoc)
+ 'fix' => true , 'fixme' => true,
+ 'override' => true,
+ // PHPDocumentor 1 tags
+ 'abstract'=> true, 'access'=> true,
+ 'code' => true,
+ 'deprec'=> true,
+ 'endcode' => true, 'exception'=> true,
+ 'final'=> true,
+ 'ingroup' => true, 'inheritdoc'=> true, 'inheritDoc'=> true,
+ 'magic' => true,
+ 'name'=> true,
+ 'toc' => true, 'tutorial'=> true,
+ 'private' => true,
+ 'static'=> true, 'staticvar'=> true, 'staticVar'=> true,
+ 'throw' => true,
+ // PHPDocumentor 2 tags.
+ 'api' => true, 'author'=> true,
+ 'category'=> true, 'copyright'=> true,
+ 'deprecated'=> true,
+ 'example'=> true,
+ 'filesource'=> true,
+ 'global'=> true,
+ 'ignore'=> true, /* Can we enable this? 'index' => true, */ 'internal'=> true,
+ 'license'=> true, 'link'=> true,
+ 'method' => true,
+ 'package'=> true, 'param'=> true, 'property' => true, 'property-read' => true, 'property-write' => true,
+ 'return'=> true,
+ 'see'=> true, 'since'=> true, 'source' => true, 'subpackage'=> true,
+ 'throws'=> true, 'todo'=> true, 'TODO'=> true,
+ 'usedby'=> true, 'uses' => true,
+ 'var'=> true, 'version'=> true,
+ // PHPUnit tags
+ 'codeCoverageIgnore' => true, 'codeCoverageIgnoreStart' => true, 'codeCoverageIgnoreEnd' => true,
+ // PHPCheckStyle
+ 'SuppressWarnings' => true,
+ // PHPStorm
+ 'noinspection' => true,
+ // PEAR
+ 'package_version' => true,
+ // PlantUML
+ 'startuml' => true, 'enduml' => true,
+ // Symfony 3.3 Cache Adapter
+ 'experimental' => true,
+ // Slevomat Coding Standard
+ 'phpcsSuppress' => true,
+ // PHP CodeSniffer
+ 'codingStandardsIgnoreStart' => true,
+ 'codingStandardsIgnoreEnd' => true,
+ // PHPStan
+ 'template' => true, 'implements' => true, 'extends' => true, 'use' => true,
+ ];
+
+ /**
+ * A list with annotations that are not causing exceptions when not resolved to an annotation class.
+ *
+ * The names are case sensitive.
+ *
+ * @var array
+ */
+ private static $globalIgnoredNamespaces = [];
+
+ /**
+ * Add a new annotation to the globally ignored annotation names with regard to exception handling.
+ *
+ * @param string $name
+ */
+ static public function addGlobalIgnoredName($name)
+ {
+ self::$globalIgnoredNames[$name] = true;
+ }
+
+ /**
+ * Add a new annotation to the globally ignored annotation namespaces with regard to exception handling.
+ *
+ * @param string $namespace
+ */
+ static public function addGlobalIgnoredNamespace($namespace)
+ {
+ self::$globalIgnoredNamespaces[$namespace] = true;
+ }
+
+ /**
+ * Annotations parser.
+ *
+ * @var \Doctrine\Common\Annotations\DocParser
+ */
+ private $parser;
+
+ /**
+ * Annotations parser used to collect parsing metadata.
+ *
+ * @var \Doctrine\Common\Annotations\DocParser
+ */
+ private $preParser;
+
+ /**
+ * PHP parser used to collect imports.
+ *
+ * @var \Doctrine\Common\Annotations\PhpParser
+ */
+ private $phpParser;
+
+ /**
+ * In-memory cache mechanism to store imported annotations per class.
+ *
+ * @var array
+ */
+ private $imports = [];
+
+ /**
+ * In-memory cache mechanism to store ignored annotations per class.
+ *
+ * @var array
+ */
+ private $ignoredAnnotationNames = [];
+
+ /**
+ * Constructor.
+ *
+ * Initializes a new AnnotationReader.
+ *
+ * @param DocParser $parser
+ *
+ * @throws AnnotationException
+ */
+ public function __construct(DocParser $parser = null)
+ {
+ if (extension_loaded('Zend Optimizer+') && (ini_get('zend_optimizerplus.save_comments') === "0" || ini_get('opcache.save_comments') === "0")) {
+ throw AnnotationException::optimizerPlusSaveComments();
+ }
+
+ if (extension_loaded('Zend OPcache') && ini_get('opcache.save_comments') == 0) {
+ throw AnnotationException::optimizerPlusSaveComments();
+ }
+
+ // Make sure that the IgnoreAnnotation annotation is loaded
+ class_exists(IgnoreAnnotation::class);
+
+ $this->parser = $parser ?: new DocParser();
+
+ $this->preParser = new DocParser;
+
+ $this->preParser->setImports(self::$globalImports);
+ $this->preParser->setIgnoreNotImportedAnnotations(true);
+ $this->preParser->setIgnoredAnnotationNames(self::$globalIgnoredNames);
+
+ $this->phpParser = new PhpParser;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotations(ReflectionClass $class)
+ {
+ $this->parser->setTarget(Target::TARGET_CLASS);
+ $this->parser->setImports($this->getClassImports($class));
+ $this->parser->setIgnoredAnnotationNames($this->getIgnoredAnnotationNames($class));
+ $this->parser->setIgnoredAnnotationNamespaces(self::$globalIgnoredNamespaces);
+
+ return $this->parser->parse($class->getDocComment(), 'class ' . $class->getName());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotation(ReflectionClass $class, $annotationName)
+ {
+ $annotations = $this->getClassAnnotations($class);
+
+ foreach ($annotations as $annotation) {
+ if ($annotation instanceof $annotationName) {
+ return $annotation;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotations(ReflectionProperty $property)
+ {
+ $class = $property->getDeclaringClass();
+ $context = 'property ' . $class->getName() . "::\$" . $property->getName();
+
+ $this->parser->setTarget(Target::TARGET_PROPERTY);
+ $this->parser->setImports($this->getPropertyImports($property));
+ $this->parser->setIgnoredAnnotationNames($this->getIgnoredAnnotationNames($class));
+ $this->parser->setIgnoredAnnotationNamespaces(self::$globalIgnoredNamespaces);
+
+ return $this->parser->parse($property->getDocComment(), $context);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotation(ReflectionProperty $property, $annotationName)
+ {
+ $annotations = $this->getPropertyAnnotations($property);
+
+ foreach ($annotations as $annotation) {
+ if ($annotation instanceof $annotationName) {
+ return $annotation;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotations(ReflectionMethod $method)
+ {
+ $class = $method->getDeclaringClass();
+ $context = 'method ' . $class->getName() . '::' . $method->getName() . '()';
+
+ $this->parser->setTarget(Target::TARGET_METHOD);
+ $this->parser->setImports($this->getMethodImports($method));
+ $this->parser->setIgnoredAnnotationNames($this->getIgnoredAnnotationNames($class));
+ $this->parser->setIgnoredAnnotationNamespaces(self::$globalIgnoredNamespaces);
+
+ return $this->parser->parse($method->getDocComment(), $context);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotation(ReflectionMethod $method, $annotationName)
+ {
+ $annotations = $this->getMethodAnnotations($method);
+
+ foreach ($annotations as $annotation) {
+ if ($annotation instanceof $annotationName) {
+ return $annotation;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Returns the ignored annotations for the given class.
+ *
+ * @param \ReflectionClass $class
+ *
+ * @return array
+ */
+ private function getIgnoredAnnotationNames(ReflectionClass $class)
+ {
+ $name = $class->getName();
+ if (isset($this->ignoredAnnotationNames[$name])) {
+ return $this->ignoredAnnotationNames[$name];
+ }
+
+ $this->collectParsingMetadata($class);
+
+ return $this->ignoredAnnotationNames[$name];
+ }
+
+ /**
+ * Retrieves imports.
+ *
+ * @param \ReflectionClass $class
+ *
+ * @return array
+ */
+ private function getClassImports(ReflectionClass $class)
+ {
+ $name = $class->getName();
+ if (isset($this->imports[$name])) {
+ return $this->imports[$name];
+ }
+
+ $this->collectParsingMetadata($class);
+
+ return $this->imports[$name];
+ }
+
+ /**
+ * Retrieves imports for methods.
+ *
+ * @param \ReflectionMethod $method
+ *
+ * @return array
+ */
+ private function getMethodImports(ReflectionMethod $method)
+ {
+ $class = $method->getDeclaringClass();
+ $classImports = $this->getClassImports($class);
+
+ $traitImports = [];
+
+ foreach ($class->getTraits() as $trait) {
+ if ($trait->hasMethod($method->getName())
+ && $trait->getFileName() === $method->getFileName()
+ ) {
+ $traitImports = array_merge($traitImports, $this->phpParser->parseClass($trait));
+ }
+ }
+
+ return array_merge($classImports, $traitImports);
+ }
+
+ /**
+ * Retrieves imports for properties.
+ *
+ * @param \ReflectionProperty $property
+ *
+ * @return array
+ */
+ private function getPropertyImports(ReflectionProperty $property)
+ {
+ $class = $property->getDeclaringClass();
+ $classImports = $this->getClassImports($class);
+
+ $traitImports = [];
+
+ foreach ($class->getTraits() as $trait) {
+ if ($trait->hasProperty($property->getName())) {
+ $traitImports = array_merge($traitImports, $this->phpParser->parseClass($trait));
+ }
+ }
+
+ return array_merge($classImports, $traitImports);
+ }
+
+ /**
+ * Collects parsing metadata for a given class.
+ *
+ * @param \ReflectionClass $class
+ */
+ private function collectParsingMetadata(ReflectionClass $class)
+ {
+ $ignoredAnnotationNames = self::$globalIgnoredNames;
+ $annotations = $this->preParser->parse($class->getDocComment(), 'class ' . $class->name);
+
+ foreach ($annotations as $annotation) {
+ if ($annotation instanceof IgnoreAnnotation) {
+ foreach ($annotation->names AS $annot) {
+ $ignoredAnnotationNames[$annot] = true;
+ }
+ }
+ }
+
+ $name = $class->getName();
+
+ $this->imports[$name] = array_merge(
+ self::$globalImports,
+ $this->phpParser->parseClass($class),
+ ['__NAMESPACE__' => $class->getNamespaceName()]
+ );
+
+ $this->ignoredAnnotationNames[$name] = $ignoredAnnotationNames;
+ }
+}
diff --git a/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php
new file mode 100644
index 0000000000000..ceb7eb7e097ad
--- /dev/null
+++ b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php
@@ -0,0 +1,180 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+final class AnnotationRegistry
+{
+ /**
+ * A map of namespaces to use for autoloading purposes based on a PSR-0 convention.
+ *
+ * Contains the namespace as key and an array of directories as value. If the value is NULL
+ * the include path is used for checking for the corresponding file.
+ *
+ * This autoloading mechanism does not utilize the PHP autoloading but implements autoloading on its own.
+ *
+ * @var string[][]|string[]|null[]
+ */
+ static private $autoloadNamespaces = [];
+
+ /**
+ * A map of autoloader callables.
+ *
+ * @var callable[]
+ */
+ static private $loaders = [];
+
+ /**
+ * An array of classes which cannot be found
+ *
+ * @var null[] indexed by class name
+ */
+ static private $failedToAutoload = [];
+
+ /**
+ * Whenever registerFile() was used. Disables use of standard autoloader.
+ *
+ * @var bool
+ */
+ static private $registerFileUsed = false;
+
+ public static function reset() : void
+ {
+ self::$autoloadNamespaces = [];
+ self::$loaders = [];
+ self::$failedToAutoload = [];
+ self::$registerFileUsed = false;
+ }
+
+ /**
+ * Registers file.
+ *
+ * @deprecated This method is deprecated and will be removed in doctrine/annotations 2.0. Annotations will be autoloaded in 2.0.
+ */
+ public static function registerFile(string $file) : void
+ {
+ self::$registerFileUsed = true;
+
+ require_once $file;
+ }
+
+ /**
+ * Adds a namespace with one or many directories to look for files or null for the include path.
+ *
+ * Loading of this namespaces will be done with a PSR-0 namespace loading algorithm.
+ *
+ * @param string $namespace
+ * @param string|array|null $dirs
+ *
+ * @deprecated This method is deprecated and will be removed in doctrine/annotations 2.0. Annotations will be autoloaded in 2.0.
+ */
+ public static function registerAutoloadNamespace(string $namespace, $dirs = null) : void
+ {
+ self::$autoloadNamespaces[$namespace] = $dirs;
+ }
+
+ /**
+ * Registers multiple namespaces.
+ *
+ * Loading of this namespaces will be done with a PSR-0 namespace loading algorithm.
+ *
+ * @param string[][]|string[]|null[] $namespaces indexed by namespace name
+ *
+ * @deprecated This method is deprecated and will be removed in doctrine/annotations 2.0. Annotations will be autoloaded in 2.0.
+ */
+ public static function registerAutoloadNamespaces(array $namespaces) : void
+ {
+ self::$autoloadNamespaces = \array_merge(self::$autoloadNamespaces, $namespaces);
+ }
+
+ /**
+ * Registers an autoloading callable for annotations, much like spl_autoload_register().
+ *
+ * NOTE: These class loaders HAVE to be silent when a class was not found!
+ * IMPORTANT: Loaders have to return true if they loaded a class that could contain the searched annotation class.
+ *
+ * @deprecated This method is deprecated and will be removed in doctrine/annotations 2.0. Annotations will be autoloaded in 2.0.
+ */
+ public static function registerLoader(callable $callable) : void
+ {
+ // Reset our static cache now that we have a new loader to work with
+ self::$failedToAutoload = [];
+ self::$loaders[] = $callable;
+ }
+
+ /**
+ * Registers an autoloading callable for annotations, if it is not already registered
+ *
+ * @deprecated This method is deprecated and will be removed in doctrine/annotations 2.0. Annotations will be autoloaded in 2.0.
+ */
+ public static function registerUniqueLoader(callable $callable) : void
+ {
+ if ( ! in_array($callable, self::$loaders, true) ) {
+ self::registerLoader($callable);
+ }
+ }
+
+ /**
+ * Autoloads an annotation class silently.
+ */
+ public static function loadAnnotationClass(string $class) : bool
+ {
+ if (\class_exists($class, false)) {
+ return true;
+ }
+
+ if (\array_key_exists($class, self::$failedToAutoload)) {
+ return false;
+ }
+
+ foreach (self::$autoloadNamespaces AS $namespace => $dirs) {
+ if (\strpos($class, $namespace) === 0) {
+ $file = \str_replace('\\', \DIRECTORY_SEPARATOR, $class) . '.php';
+
+ if ($dirs === null) {
+ if ($path = stream_resolve_include_path($file)) {
+ require $path;
+ return true;
+ }
+ } else {
+ foreach((array) $dirs AS $dir) {
+ if (is_file($dir . \DIRECTORY_SEPARATOR . $file)) {
+ require $dir . \DIRECTORY_SEPARATOR . $file;
+ return true;
+ }
+ }
+ }
+ }
+ }
+
+ foreach (self::$loaders AS $loader) {
+ if ($loader($class) === true) {
+ return true;
+ }
+ }
+
+ if (self::$loaders === [] && self::$autoloadNamespaces === [] && self::$registerFileUsed === false && \class_exists($class)) {
+ return true;
+ }
+
+ self::$failedToAutoload[$class] = null;
+
+ return false;
+ }
+}
diff --git a/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php
new file mode 100644
index 0000000000000..8ed16f1a0d77a
--- /dev/null
+++ b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php
@@ -0,0 +1,278 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+use Doctrine\Common\Cache\Cache;
+use ReflectionClass;
+
+/**
+ * A cache aware annotation reader.
+ *
+ * @author Johannes M. Schmitt
+ * @author Benjamin Eberlei
+ */
+final class CachedReader implements Reader
+{
+ /**
+ * @var Reader
+ */
+ private $delegate;
+
+ /**
+ * @var Cache
+ */
+ private $cache;
+
+ /**
+ * @var boolean
+ */
+ private $debug;
+
+ /**
+ * @var array
+ */
+ private $loadedAnnotations = [];
+
+ /**
+ * @var int[]
+ */
+ private $loadedFilemtimes = [];
+
+ /**
+ * @param bool $debug
+ */
+ public function __construct(Reader $reader, Cache $cache, $debug = false)
+ {
+ $this->delegate = $reader;
+ $this->cache = $cache;
+ $this->debug = (boolean) $debug;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotations(ReflectionClass $class)
+ {
+ $cacheKey = $class->getName();
+
+ if (isset($this->loadedAnnotations[$cacheKey])) {
+ return $this->loadedAnnotations[$cacheKey];
+ }
+
+ if (false === ($annots = $this->fetchFromCache($cacheKey, $class))) {
+ $annots = $this->delegate->getClassAnnotations($class);
+ $this->saveToCache($cacheKey, $annots);
+ }
+
+ return $this->loadedAnnotations[$cacheKey] = $annots;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotation(ReflectionClass $class, $annotationName)
+ {
+ foreach ($this->getClassAnnotations($class) as $annot) {
+ if ($annot instanceof $annotationName) {
+ return $annot;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotations(\ReflectionProperty $property)
+ {
+ $class = $property->getDeclaringClass();
+ $cacheKey = $class->getName().'$'.$property->getName();
+
+ if (isset($this->loadedAnnotations[$cacheKey])) {
+ return $this->loadedAnnotations[$cacheKey];
+ }
+
+ if (false === ($annots = $this->fetchFromCache($cacheKey, $class))) {
+ $annots = $this->delegate->getPropertyAnnotations($property);
+ $this->saveToCache($cacheKey, $annots);
+ }
+
+ return $this->loadedAnnotations[$cacheKey] = $annots;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotation(\ReflectionProperty $property, $annotationName)
+ {
+ foreach ($this->getPropertyAnnotations($property) as $annot) {
+ if ($annot instanceof $annotationName) {
+ return $annot;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotations(\ReflectionMethod $method)
+ {
+ $class = $method->getDeclaringClass();
+ $cacheKey = $class->getName().'#'.$method->getName();
+
+ if (isset($this->loadedAnnotations[$cacheKey])) {
+ return $this->loadedAnnotations[$cacheKey];
+ }
+
+ if (false === ($annots = $this->fetchFromCache($cacheKey, $class))) {
+ $annots = $this->delegate->getMethodAnnotations($method);
+ $this->saveToCache($cacheKey, $annots);
+ }
+
+ return $this->loadedAnnotations[$cacheKey] = $annots;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotation(\ReflectionMethod $method, $annotationName)
+ {
+ foreach ($this->getMethodAnnotations($method) as $annot) {
+ if ($annot instanceof $annotationName) {
+ return $annot;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Clears loaded annotations.
+ *
+ * @return void
+ */
+ public function clearLoadedAnnotations()
+ {
+ $this->loadedAnnotations = [];
+ $this->loadedFilemtimes = [];
+ }
+
+ /**
+ * Fetches a value from the cache.
+ *
+ * @param string $cacheKey The cache key.
+ *
+ * @return mixed The cached value or false when the value is not in cache.
+ */
+ private function fetchFromCache($cacheKey, ReflectionClass $class)
+ {
+ if (($data = $this->cache->fetch($cacheKey)) !== false) {
+ if (!$this->debug || $this->isCacheFresh($cacheKey, $class)) {
+ return $data;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Saves a value to the cache.
+ *
+ * @param string $cacheKey The cache key.
+ * @param mixed $value The value.
+ *
+ * @return void
+ */
+ private function saveToCache($cacheKey, $value)
+ {
+ $this->cache->save($cacheKey, $value);
+ if ($this->debug) {
+ $this->cache->save('[C]'.$cacheKey, time());
+ }
+ }
+
+ /**
+ * Checks if the cache is fresh.
+ *
+ * @param string $cacheKey
+ *
+ * @return boolean
+ */
+ private function isCacheFresh($cacheKey, ReflectionClass $class)
+ {
+ $lastModification = $this->getLastModification($class);
+ if ($lastModification === 0) {
+ return true;
+ }
+
+ return $this->cache->fetch('[C]'.$cacheKey) >= $lastModification;
+ }
+
+ /**
+ * Returns the time the class was last modified, testing traits and parents
+ *
+ * @return int
+ */
+ private function getLastModification(ReflectionClass $class)
+ {
+ $filename = $class->getFileName();
+
+ if (isset($this->loadedFilemtimes[$filename])) {
+ return $this->loadedFilemtimes[$filename];
+ }
+
+ $parent = $class->getParentClass();
+
+ $lastModification = max(array_merge(
+ [$filename ? filemtime($filename) : 0],
+ array_map([$this, 'getTraitLastModificationTime'], $class->getTraits()),
+ array_map([$this, 'getLastModification'], $class->getInterfaces()),
+ $parent ? [$this->getLastModification($parent)] : []
+ ));
+
+ assert($lastModification !== false);
+
+ return $this->loadedFilemtimes[$filename] = $lastModification;
+ }
+
+ /**
+ * @return int
+ */
+ private function getTraitLastModificationTime(ReflectionClass $reflectionTrait)
+ {
+ $fileName = $reflectionTrait->getFileName();
+
+ if (isset($this->loadedFilemtimes[$fileName])) {
+ return $this->loadedFilemtimes[$fileName];
+ }
+
+ $lastModificationTime = max(array_merge(
+ [$fileName ? filemtime($fileName) : 0],
+ array_map([$this, 'getTraitLastModificationTime'], $reflectionTrait->getTraits())
+ ));
+
+ assert($lastModificationTime !== false);
+
+ return $this->loadedFilemtimes[$fileName] = $lastModificationTime;
+ }
+}
diff --git a/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php
new file mode 100644
index 0000000000000..8182f6c6e0c5a
--- /dev/null
+++ b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php
@@ -0,0 +1,147 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+use Doctrine\Common\Lexer\AbstractLexer;
+
+/**
+ * Simple lexer for docblock annotations.
+ *
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ * @author Johannes M. Schmitt
+ */
+final class DocLexer extends AbstractLexer
+{
+ const T_NONE = 1;
+ const T_INTEGER = 2;
+ const T_STRING = 3;
+ const T_FLOAT = 4;
+
+ // All tokens that are also identifiers should be >= 100
+ const T_IDENTIFIER = 100;
+ const T_AT = 101;
+ const T_CLOSE_CURLY_BRACES = 102;
+ const T_CLOSE_PARENTHESIS = 103;
+ const T_COMMA = 104;
+ const T_EQUALS = 105;
+ const T_FALSE = 106;
+ const T_NAMESPACE_SEPARATOR = 107;
+ const T_OPEN_CURLY_BRACES = 108;
+ const T_OPEN_PARENTHESIS = 109;
+ const T_TRUE = 110;
+ const T_NULL = 111;
+ const T_COLON = 112;
+ const T_MINUS = 113;
+
+ /**
+ * @var array
+ */
+ protected $noCase = [
+ '@' => self::T_AT,
+ ',' => self::T_COMMA,
+ '(' => self::T_OPEN_PARENTHESIS,
+ ')' => self::T_CLOSE_PARENTHESIS,
+ '{' => self::T_OPEN_CURLY_BRACES,
+ '}' => self::T_CLOSE_CURLY_BRACES,
+ '=' => self::T_EQUALS,
+ ':' => self::T_COLON,
+ '-' => self::T_MINUS,
+ '\\' => self::T_NAMESPACE_SEPARATOR
+ ];
+
+ /**
+ * @var array
+ */
+ protected $withCase = [
+ 'true' => self::T_TRUE,
+ 'false' => self::T_FALSE,
+ 'null' => self::T_NULL
+ ];
+
+ /**
+ * Whether the next token starts immediately, or if there were
+ * non-captured symbols before that
+ */
+ public function nextTokenIsAdjacent() : bool
+ {
+ return $this->token === null
+ || ($this->lookahead !== null
+ && ($this->lookahead['position'] - $this->token['position']) === strlen($this->token['value']));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function getCatchablePatterns()
+ {
+ return [
+ '[a-z_\\\][a-z0-9_\:\\\]*[a-z_][a-z0-9_]*',
+ '(?:[+-]?[0-9]+(?:[\.][0-9]+)*)(?:[eE][+-]?[0-9]+)?',
+ '"(?:""|[^"])*+"',
+ ];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function getNonCatchablePatterns()
+ {
+ return ['\s+', '\*+', '(.)'];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function getType(&$value)
+ {
+ $type = self::T_NONE;
+
+ if ($value[0] === '"') {
+ $value = str_replace('""', '"', substr($value, 1, strlen($value) - 2));
+
+ return self::T_STRING;
+ }
+
+ if (isset($this->noCase[$value])) {
+ return $this->noCase[$value];
+ }
+
+ if ($value[0] === '_' || $value[0] === '\\' || ctype_alpha($value[0])) {
+ return self::T_IDENTIFIER;
+ }
+
+ $lowerValue = strtolower($value);
+
+ if (isset($this->withCase[$lowerValue])) {
+ return $this->withCase[$lowerValue];
+ }
+
+ // Checking numeric value
+ if (is_numeric($value)) {
+ return (strpos($value, '.') !== false || stripos($value, 'e') !== false)
+ ? self::T_FLOAT : self::T_INTEGER;
+ }
+
+ return $type;
+ }
+}
diff --git a/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php
new file mode 100644
index 0000000000000..741149ae24ae0
--- /dev/null
+++ b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php
@@ -0,0 +1,1221 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+use Doctrine\Common\Annotations\Annotation\Attribute;
+use ReflectionClass;
+use Doctrine\Common\Annotations\Annotation\Enum;
+use Doctrine\Common\Annotations\Annotation\Target;
+use Doctrine\Common\Annotations\Annotation\Attributes;
+
+/**
+ * A parser for docblock annotations.
+ *
+ * It is strongly discouraged to change the default annotation parsing process.
+ *
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ * @author Johannes M. Schmitt
+ * @author Fabio B. Silva
+ */
+final class DocParser
+{
+ /**
+ * An array of all valid tokens for a class name.
+ *
+ * @var array
+ */
+ private static $classIdentifiers = [
+ DocLexer::T_IDENTIFIER,
+ DocLexer::T_TRUE,
+ DocLexer::T_FALSE,
+ DocLexer::T_NULL
+ ];
+
+ /**
+ * The lexer.
+ *
+ * @var \Doctrine\Common\Annotations\DocLexer
+ */
+ private $lexer;
+
+ /**
+ * Current target context.
+ *
+ * @var integer
+ */
+ private $target;
+
+ /**
+ * Doc parser used to collect annotation target.
+ *
+ * @var \Doctrine\Common\Annotations\DocParser
+ */
+ private static $metadataParser;
+
+ /**
+ * Flag to control if the current annotation is nested or not.
+ *
+ * @var boolean
+ */
+ private $isNestedAnnotation = false;
+
+ /**
+ * Hashmap containing all use-statements that are to be used when parsing
+ * the given doc block.
+ *
+ * @var array
+ */
+ private $imports = [];
+
+ /**
+ * This hashmap is used internally to cache results of class_exists()
+ * look-ups.
+ *
+ * @var array
+ */
+ private $classExists = [];
+
+ /**
+ * Whether annotations that have not been imported should be ignored.
+ *
+ * @var boolean
+ */
+ private $ignoreNotImportedAnnotations = false;
+
+ /**
+ * An array of default namespaces if operating in simple mode.
+ *
+ * @var string[]
+ */
+ private $namespaces = [];
+
+ /**
+ * A list with annotations that are not causing exceptions when not resolved to an annotation class.
+ *
+ * The names must be the raw names as used in the class, not the fully qualified
+ * class names.
+ *
+ * @var bool[] indexed by annotation name
+ */
+ private $ignoredAnnotationNames = [];
+
+ /**
+ * A list with annotations in namespaced format
+ * that are not causing exceptions when not resolved to an annotation class.
+ *
+ * @var bool[] indexed by namespace name
+ */
+ private $ignoredAnnotationNamespaces = [];
+
+ /**
+ * @var string
+ */
+ private $context = '';
+
+ /**
+ * Hash-map for caching annotation metadata.
+ *
+ * @var array
+ */
+ private static $annotationMetadata = [
+ 'Doctrine\Common\Annotations\Annotation\Target' => [
+ 'is_annotation' => true,
+ 'has_constructor' => true,
+ 'properties' => [],
+ 'targets_literal' => 'ANNOTATION_CLASS',
+ 'targets' => Target::TARGET_CLASS,
+ 'default_property' => 'value',
+ 'attribute_types' => [
+ 'value' => [
+ 'required' => false,
+ 'type' =>'array',
+ 'array_type'=>'string',
+ 'value' =>'array'
+ ]
+ ],
+ ],
+ 'Doctrine\Common\Annotations\Annotation\Attribute' => [
+ 'is_annotation' => true,
+ 'has_constructor' => false,
+ 'targets_literal' => 'ANNOTATION_ANNOTATION',
+ 'targets' => Target::TARGET_ANNOTATION,
+ 'default_property' => 'name',
+ 'properties' => [
+ 'name' => 'name',
+ 'type' => 'type',
+ 'required' => 'required'
+ ],
+ 'attribute_types' => [
+ 'value' => [
+ 'required' => true,
+ 'type' =>'string',
+ 'value' =>'string'
+ ],
+ 'type' => [
+ 'required' =>true,
+ 'type' =>'string',
+ 'value' =>'string'
+ ],
+ 'required' => [
+ 'required' =>false,
+ 'type' =>'boolean',
+ 'value' =>'boolean'
+ ]
+ ],
+ ],
+ 'Doctrine\Common\Annotations\Annotation\Attributes' => [
+ 'is_annotation' => true,
+ 'has_constructor' => false,
+ 'targets_literal' => 'ANNOTATION_CLASS',
+ 'targets' => Target::TARGET_CLASS,
+ 'default_property' => 'value',
+ 'properties' => [
+ 'value' => 'value'
+ ],
+ 'attribute_types' => [
+ 'value' => [
+ 'type' =>'array',
+ 'required' =>true,
+ 'array_type'=>'Doctrine\Common\Annotations\Annotation\Attribute',
+ 'value' =>'array'
+ ]
+ ],
+ ],
+ 'Doctrine\Common\Annotations\Annotation\Enum' => [
+ 'is_annotation' => true,
+ 'has_constructor' => true,
+ 'targets_literal' => 'ANNOTATION_PROPERTY',
+ 'targets' => Target::TARGET_PROPERTY,
+ 'default_property' => 'value',
+ 'properties' => [
+ 'value' => 'value'
+ ],
+ 'attribute_types' => [
+ 'value' => [
+ 'type' => 'array',
+ 'required' => true,
+ ],
+ 'literal' => [
+ 'type' => 'array',
+ 'required' => false,
+ ],
+ ],
+ ],
+ ];
+
+ /**
+ * Hash-map for handle types declaration.
+ *
+ * @var array
+ */
+ private static $typeMap = [
+ 'float' => 'double',
+ 'bool' => 'boolean',
+ // allow uppercase Boolean in honor of George Boole
+ 'Boolean' => 'boolean',
+ 'int' => 'integer',
+ ];
+
+ /**
+ * Constructs a new DocParser.
+ */
+ public function __construct()
+ {
+ $this->lexer = new DocLexer;
+ }
+
+ /**
+ * Sets the annotation names that are ignored during the parsing process.
+ *
+ * The names are supposed to be the raw names as used in the class, not the
+ * fully qualified class names.
+ *
+ * @param bool[] $names indexed by annotation name
+ *
+ * @return void
+ */
+ public function setIgnoredAnnotationNames(array $names)
+ {
+ $this->ignoredAnnotationNames = $names;
+ }
+
+ /**
+ * Sets the annotation namespaces that are ignored during the parsing process.
+ *
+ * @param bool[] $ignoredAnnotationNamespaces indexed by annotation namespace name
+ *
+ * @return void
+ */
+ public function setIgnoredAnnotationNamespaces($ignoredAnnotationNamespaces)
+ {
+ $this->ignoredAnnotationNamespaces = $ignoredAnnotationNamespaces;
+ }
+
+ /**
+ * Sets ignore on not-imported annotations.
+ *
+ * @param boolean $bool
+ *
+ * @return void
+ */
+ public function setIgnoreNotImportedAnnotations($bool)
+ {
+ $this->ignoreNotImportedAnnotations = (boolean) $bool;
+ }
+
+ /**
+ * Sets the default namespaces.
+ *
+ * @param string $namespace
+ *
+ * @return void
+ *
+ * @throws \RuntimeException
+ */
+ public function addNamespace($namespace)
+ {
+ if ($this->imports) {
+ throw new \RuntimeException('You must either use addNamespace(), or setImports(), but not both.');
+ }
+
+ $this->namespaces[] = $namespace;
+ }
+
+ /**
+ * Sets the imports.
+ *
+ * @param array $imports
+ *
+ * @return void
+ *
+ * @throws \RuntimeException
+ */
+ public function setImports(array $imports)
+ {
+ if ($this->namespaces) {
+ throw new \RuntimeException('You must either use addNamespace(), or setImports(), but not both.');
+ }
+
+ $this->imports = $imports;
+ }
+
+ /**
+ * Sets current target context as bitmask.
+ *
+ * @param integer $target
+ *
+ * @return void
+ */
+ public function setTarget($target)
+ {
+ $this->target = $target;
+ }
+
+ /**
+ * Parses the given docblock string for annotations.
+ *
+ * @param string $input The docblock string to parse.
+ * @param string $context The parsing context.
+ *
+ * @return array Array of annotations. If no annotations are found, an empty array is returned.
+ */
+ public function parse($input, $context = '')
+ {
+ $pos = $this->findInitialTokenPosition($input);
+ if ($pos === null) {
+ return [];
+ }
+
+ $this->context = $context;
+
+ $this->lexer->setInput(trim(substr($input, $pos), '* /'));
+ $this->lexer->moveNext();
+
+ return $this->Annotations();
+ }
+
+ /**
+ * Finds the first valid annotation
+ *
+ * @param string $input The docblock string to parse
+ *
+ * @return int|null
+ */
+ private function findInitialTokenPosition($input)
+ {
+ $pos = 0;
+
+ // search for first valid annotation
+ while (($pos = strpos($input, '@', $pos)) !== false) {
+ $preceding = substr($input, $pos - 1, 1);
+
+ // if the @ is preceded by a space, a tab or * it is valid
+ if ($pos === 0 || $preceding === ' ' || $preceding === '*' || $preceding === "\t") {
+ return $pos;
+ }
+
+ $pos++;
+ }
+
+ return null;
+ }
+
+ /**
+ * Attempts to match the given token with the current lookahead token.
+ * If they match, updates the lookahead token; otherwise raises a syntax error.
+ *
+ * @param integer $token Type of token.
+ *
+ * @return boolean True if tokens match; false otherwise.
+ */
+ private function match($token)
+ {
+ if ( ! $this->lexer->isNextToken($token) ) {
+ $this->syntaxError($this->lexer->getLiteral($token));
+ }
+
+ return $this->lexer->moveNext();
+ }
+
+ /**
+ * Attempts to match the current lookahead token with any of the given tokens.
+ *
+ * If any of them matches, this method updates the lookahead token; otherwise
+ * a syntax error is raised.
+ *
+ * @param array $tokens
+ *
+ * @return boolean
+ */
+ private function matchAny(array $tokens)
+ {
+ if ( ! $this->lexer->isNextTokenAny($tokens)) {
+ $this->syntaxError(implode(' or ', array_map([$this->lexer, 'getLiteral'], $tokens)));
+ }
+
+ return $this->lexer->moveNext();
+ }
+
+ /**
+ * Generates a new syntax error.
+ *
+ * @param string $expected Expected string.
+ * @param array|null $token Optional token.
+ *
+ * @return void
+ *
+ * @throws AnnotationException
+ */
+ private function syntaxError($expected, $token = null)
+ {
+ if ($token === null) {
+ $token = $this->lexer->lookahead;
+ }
+
+ $message = sprintf('Expected %s, got ', $expected);
+ $message .= ($this->lexer->lookahead === null)
+ ? 'end of string'
+ : sprintf("'%s' at position %s", $token['value'], $token['position']);
+
+ if (strlen($this->context)) {
+ $message .= ' in ' . $this->context;
+ }
+
+ $message .= '.';
+
+ throw AnnotationException::syntaxError($message);
+ }
+
+ /**
+ * Attempts to check if a class exists or not. This never goes through the PHP autoloading mechanism
+ * but uses the {@link AnnotationRegistry} to load classes.
+ *
+ * @param string $fqcn
+ *
+ * @return boolean
+ */
+ private function classExists($fqcn)
+ {
+ if (isset($this->classExists[$fqcn])) {
+ return $this->classExists[$fqcn];
+ }
+
+ // first check if the class already exists, maybe loaded through another AnnotationReader
+ if (class_exists($fqcn, false)) {
+ return $this->classExists[$fqcn] = true;
+ }
+
+ // final check, does this class exist?
+ return $this->classExists[$fqcn] = AnnotationRegistry::loadAnnotationClass($fqcn);
+ }
+
+ /**
+ * Collects parsing metadata for a given annotation class
+ *
+ * @param string $name The annotation name
+ *
+ * @return void
+ */
+ private function collectAnnotationMetadata($name)
+ {
+ if (self::$metadataParser === null) {
+ self::$metadataParser = new self();
+
+ self::$metadataParser->setIgnoreNotImportedAnnotations(true);
+ self::$metadataParser->setIgnoredAnnotationNames($this->ignoredAnnotationNames);
+ self::$metadataParser->setImports([
+ 'enum' => 'Doctrine\Common\Annotations\Annotation\Enum',
+ 'target' => 'Doctrine\Common\Annotations\Annotation\Target',
+ 'attribute' => 'Doctrine\Common\Annotations\Annotation\Attribute',
+ 'attributes' => 'Doctrine\Common\Annotations\Annotation\Attributes'
+ ]);
+
+ // Make sure that annotations from metadata are loaded
+ class_exists(Enum::class);
+ class_exists(Target::class);
+ class_exists(Attribute::class);
+ class_exists(Attributes::class);
+ }
+
+ $class = new \ReflectionClass($name);
+ $docComment = $class->getDocComment();
+
+ // Sets default values for annotation metadata
+ $metadata = [
+ 'default_property' => null,
+ 'has_constructor' => (null !== $constructor = $class->getConstructor()) && $constructor->getNumberOfParameters() > 0,
+ 'properties' => [],
+ 'property_types' => [],
+ 'attribute_types' => [],
+ 'targets_literal' => null,
+ 'targets' => Target::TARGET_ALL,
+ 'is_annotation' => false !== strpos($docComment, '@Annotation'),
+ ];
+
+ // verify that the class is really meant to be an annotation
+ if ($metadata['is_annotation']) {
+ self::$metadataParser->setTarget(Target::TARGET_CLASS);
+
+ foreach (self::$metadataParser->parse($docComment, 'class @' . $name) as $annotation) {
+ if ($annotation instanceof Target) {
+ $metadata['targets'] = $annotation->targets;
+ $metadata['targets_literal'] = $annotation->literal;
+
+ continue;
+ }
+
+ if ($annotation instanceof Attributes) {
+ foreach ($annotation->value as $attribute) {
+ $this->collectAttributeTypeMetadata($metadata, $attribute);
+ }
+ }
+ }
+
+ // if not has a constructor will inject values into public properties
+ if (false === $metadata['has_constructor']) {
+ // collect all public properties
+ foreach ($class->getProperties(\ReflectionProperty::IS_PUBLIC) as $property) {
+ $metadata['properties'][$property->name] = $property->name;
+
+ if (false === ($propertyComment = $property->getDocComment())) {
+ continue;
+ }
+
+ $attribute = new Attribute();
+
+ $attribute->required = (false !== strpos($propertyComment, '@Required'));
+ $attribute->name = $property->name;
+ $attribute->type = (false !== strpos($propertyComment, '@var') && preg_match('/@var\s+([^\s]+)/',$propertyComment, $matches))
+ ? $matches[1]
+ : 'mixed';
+
+ $this->collectAttributeTypeMetadata($metadata, $attribute);
+
+ // checks if the property has @Enum
+ if (false !== strpos($propertyComment, '@Enum')) {
+ $context = 'property ' . $class->name . "::\$" . $property->name;
+
+ self::$metadataParser->setTarget(Target::TARGET_PROPERTY);
+
+ foreach (self::$metadataParser->parse($propertyComment, $context) as $annotation) {
+ if ( ! $annotation instanceof Enum) {
+ continue;
+ }
+
+ $metadata['enum'][$property->name]['value'] = $annotation->value;
+ $metadata['enum'][$property->name]['literal'] = ( ! empty($annotation->literal))
+ ? $annotation->literal
+ : $annotation->value;
+ }
+ }
+ }
+
+ // choose the first property as default property
+ $metadata['default_property'] = reset($metadata['properties']);
+ }
+ }
+
+ self::$annotationMetadata[$name] = $metadata;
+ }
+
+ /**
+ * Collects parsing metadata for a given attribute.
+ *
+ * @param array $metadata
+ * @param Attribute $attribute
+ *
+ * @return void
+ */
+ private function collectAttributeTypeMetadata(&$metadata, Attribute $attribute)
+ {
+ // handle internal type declaration
+ $type = self::$typeMap[$attribute->type] ?? $attribute->type;
+
+ // handle the case if the property type is mixed
+ if ('mixed' === $type) {
+ return;
+ }
+
+ // Evaluate type
+ switch (true) {
+ // Checks if the property has array
+ case (false !== $pos = strpos($type, '<')):
+ $arrayType = substr($type, $pos + 1, -1);
+ $type = 'array';
+
+ if (isset(self::$typeMap[$arrayType])) {
+ $arrayType = self::$typeMap[$arrayType];
+ }
+
+ $metadata['attribute_types'][$attribute->name]['array_type'] = $arrayType;
+ break;
+
+ // Checks if the property has type[]
+ case (false !== $pos = strrpos($type, '[')):
+ $arrayType = substr($type, 0, $pos);
+ $type = 'array';
+
+ if (isset(self::$typeMap[$arrayType])) {
+ $arrayType = self::$typeMap[$arrayType];
+ }
+
+ $metadata['attribute_types'][$attribute->name]['array_type'] = $arrayType;
+ break;
+ }
+
+ $metadata['attribute_types'][$attribute->name]['type'] = $type;
+ $metadata['attribute_types'][$attribute->name]['value'] = $attribute->type;
+ $metadata['attribute_types'][$attribute->name]['required'] = $attribute->required;
+ }
+
+ /**
+ * Annotations ::= Annotation {[ "*" ]* [Annotation]}*
+ *
+ * @return array
+ */
+ private function Annotations()
+ {
+ $annotations = [];
+
+ while (null !== $this->lexer->lookahead) {
+ if (DocLexer::T_AT !== $this->lexer->lookahead['type']) {
+ $this->lexer->moveNext();
+ continue;
+ }
+
+ // make sure the @ is preceded by non-catchable pattern
+ if (null !== $this->lexer->token && $this->lexer->lookahead['position'] === $this->lexer->token['position'] + strlen($this->lexer->token['value'])) {
+ $this->lexer->moveNext();
+ continue;
+ }
+
+ // make sure the @ is followed by either a namespace separator, or
+ // an identifier token
+ if ((null === $peek = $this->lexer->glimpse())
+ || (DocLexer::T_NAMESPACE_SEPARATOR !== $peek['type'] && !in_array($peek['type'], self::$classIdentifiers, true))
+ || $peek['position'] !== $this->lexer->lookahead['position'] + 1) {
+ $this->lexer->moveNext();
+ continue;
+ }
+
+ $this->isNestedAnnotation = false;
+ if (false !== $annot = $this->Annotation()) {
+ $annotations[] = $annot;
+ }
+ }
+
+ return $annotations;
+ }
+
+ /**
+ * Annotation ::= "@" AnnotationName MethodCall
+ * AnnotationName ::= QualifiedName | SimpleName
+ * QualifiedName ::= NameSpacePart "\" {NameSpacePart "\"}* SimpleName
+ * NameSpacePart ::= identifier | null | false | true
+ * SimpleName ::= identifier | null | false | true
+ *
+ * @return mixed False if it is not a valid annotation.
+ *
+ * @throws AnnotationException
+ */
+ private function Annotation()
+ {
+ $this->match(DocLexer::T_AT);
+
+ // check if we have an annotation
+ $name = $this->Identifier();
+
+ if ($this->lexer->isNextToken(DocLexer::T_MINUS)
+ && $this->lexer->nextTokenIsAdjacent()
+ ) {
+ // Annotations with dashes, such as "@foo-" or "@foo-bar", are to be discarded
+ return false;
+ }
+
+ // only process names which are not fully qualified, yet
+ // fully qualified names must start with a \
+ $originalName = $name;
+
+ if ('\\' !== $name[0]) {
+ $pos = strpos($name, '\\');
+ $alias = (false === $pos)? $name : substr($name, 0, $pos);
+ $found = false;
+ $loweredAlias = strtolower($alias);
+
+ if ($this->namespaces) {
+ foreach ($this->namespaces as $namespace) {
+ if ($this->classExists($namespace.'\\'.$name)) {
+ $name = $namespace.'\\'.$name;
+ $found = true;
+ break;
+ }
+ }
+ } elseif (isset($this->imports[$loweredAlias])) {
+ $namespace = ltrim($this->imports[$loweredAlias], '\\');
+ $name = (false !== $pos)
+ ? $namespace . substr($name, $pos)
+ : $namespace;
+ $found = $this->classExists($name);
+ } elseif ( ! isset($this->ignoredAnnotationNames[$name])
+ && isset($this->imports['__NAMESPACE__'])
+ && $this->classExists($this->imports['__NAMESPACE__'] . '\\' . $name)
+ ) {
+ $name = $this->imports['__NAMESPACE__'].'\\'.$name;
+ $found = true;
+ } elseif (! isset($this->ignoredAnnotationNames[$name]) && $this->classExists($name)) {
+ $found = true;
+ }
+
+ if ( ! $found) {
+ if ($this->isIgnoredAnnotation($name)) {
+ return false;
+ }
+
+ throw AnnotationException::semanticalError(sprintf('The annotation "@%s" in %s was never imported. Did you maybe forget to add a "use" statement for this annotation?', $name, $this->context));
+ }
+ }
+
+ $name = ltrim($name,'\\');
+
+ if ( ! $this->classExists($name)) {
+ throw AnnotationException::semanticalError(sprintf('The annotation "@%s" in %s does not exist, or could not be auto-loaded.', $name, $this->context));
+ }
+
+ // at this point, $name contains the fully qualified class name of the
+ // annotation, and it is also guaranteed that this class exists, and
+ // that it is loaded
+
+
+ // collects the metadata annotation only if there is not yet
+ if ( ! isset(self::$annotationMetadata[$name])) {
+ $this->collectAnnotationMetadata($name);
+ }
+
+ // verify that the class is really meant to be an annotation and not just any ordinary class
+ if (self::$annotationMetadata[$name]['is_annotation'] === false) {
+ if ($this->isIgnoredAnnotation($originalName) || $this->isIgnoredAnnotation($name)) {
+ return false;
+ }
+
+ throw AnnotationException::semanticalError(sprintf('The class "%s" is not annotated with @Annotation. Are you sure this class can be used as annotation? If so, then you need to add @Annotation to the _class_ doc comment of "%s". If it is indeed no annotation, then you need to add @IgnoreAnnotation("%s") to the _class_ doc comment of %s.', $name, $name, $originalName, $this->context));
+ }
+
+ //if target is nested annotation
+ $target = $this->isNestedAnnotation ? Target::TARGET_ANNOTATION : $this->target;
+
+ // Next will be nested
+ $this->isNestedAnnotation = true;
+
+ //if annotation does not support current target
+ if (0 === (self::$annotationMetadata[$name]['targets'] & $target) && $target) {
+ throw AnnotationException::semanticalError(
+ sprintf('Annotation @%s is not allowed to be declared on %s. You may only use this annotation on these code elements: %s.',
+ $originalName, $this->context, self::$annotationMetadata[$name]['targets_literal'])
+ );
+ }
+
+ $values = $this->MethodCall();
+
+ if (isset(self::$annotationMetadata[$name]['enum'])) {
+ // checks all declared attributes
+ foreach (self::$annotationMetadata[$name]['enum'] as $property => $enum) {
+ // checks if the attribute is a valid enumerator
+ if (isset($values[$property]) && ! in_array($values[$property], $enum['value'])) {
+ throw AnnotationException::enumeratorError($property, $name, $this->context, $enum['literal'], $values[$property]);
+ }
+ }
+ }
+
+ // checks all declared attributes
+ foreach (self::$annotationMetadata[$name]['attribute_types'] as $property => $type) {
+ if ($property === self::$annotationMetadata[$name]['default_property']
+ && !isset($values[$property]) && isset($values['value'])) {
+ $property = 'value';
+ }
+
+ // handle a not given attribute or null value
+ if (!isset($values[$property])) {
+ if ($type['required']) {
+ throw AnnotationException::requiredError($property, $originalName, $this->context, 'a(n) '.$type['value']);
+ }
+
+ continue;
+ }
+
+ if ($type['type'] === 'array') {
+ // handle the case of a single value
+ if ( ! is_array($values[$property])) {
+ $values[$property] = [$values[$property]];
+ }
+
+ // checks if the attribute has array type declaration, such as "array"
+ if (isset($type['array_type'])) {
+ foreach ($values[$property] as $item) {
+ if (gettype($item) !== $type['array_type'] && !$item instanceof $type['array_type']) {
+ throw AnnotationException::attributeTypeError($property, $originalName, $this->context, 'either a(n) '.$type['array_type'].', or an array of '.$type['array_type'].'s', $item);
+ }
+ }
+ }
+ } elseif (gettype($values[$property]) !== $type['type'] && !$values[$property] instanceof $type['type']) {
+ throw AnnotationException::attributeTypeError($property, $originalName, $this->context, 'a(n) '.$type['value'], $values[$property]);
+ }
+ }
+
+ // check if the annotation expects values via the constructor,
+ // or directly injected into public properties
+ if (self::$annotationMetadata[$name]['has_constructor'] === true) {
+ return new $name($values);
+ }
+
+ $instance = new $name();
+
+ foreach ($values as $property => $value) {
+ if (!isset(self::$annotationMetadata[$name]['properties'][$property])) {
+ if ('value' !== $property) {
+ throw AnnotationException::creationError(sprintf('The annotation @%s declared on %s does not have a property named "%s". Available properties: %s', $originalName, $this->context, $property, implode(', ', self::$annotationMetadata[$name]['properties'])));
+ }
+
+ // handle the case if the property has no annotations
+ if ( ! $property = self::$annotationMetadata[$name]['default_property']) {
+ throw AnnotationException::creationError(sprintf('The annotation @%s declared on %s does not accept any values, but got %s.', $originalName, $this->context, json_encode($values)));
+ }
+ }
+
+ $instance->{$property} = $value;
+ }
+
+ return $instance;
+ }
+
+ /**
+ * MethodCall ::= ["(" [Values] ")"]
+ *
+ * @return array
+ */
+ private function MethodCall()
+ {
+ $values = [];
+
+ if ( ! $this->lexer->isNextToken(DocLexer::T_OPEN_PARENTHESIS)) {
+ return $values;
+ }
+
+ $this->match(DocLexer::T_OPEN_PARENTHESIS);
+
+ if ( ! $this->lexer->isNextToken(DocLexer::T_CLOSE_PARENTHESIS)) {
+ $values = $this->Values();
+ }
+
+ $this->match(DocLexer::T_CLOSE_PARENTHESIS);
+
+ return $values;
+ }
+
+ /**
+ * Values ::= Array | Value {"," Value}* [","]
+ *
+ * @return array
+ */
+ private function Values()
+ {
+ $values = [$this->Value()];
+
+ while ($this->lexer->isNextToken(DocLexer::T_COMMA)) {
+ $this->match(DocLexer::T_COMMA);
+
+ if ($this->lexer->isNextToken(DocLexer::T_CLOSE_PARENTHESIS)) {
+ break;
+ }
+
+ $token = $this->lexer->lookahead;
+ $value = $this->Value();
+
+ if ( ! is_object($value) && ! is_array($value)) {
+ $this->syntaxError('Value', $token);
+ }
+
+ $values[] = $value;
+ }
+
+ foreach ($values as $k => $value) {
+ if (is_object($value) && $value instanceof \stdClass) {
+ $values[$value->name] = $value->value;
+ } else if ( ! isset($values['value'])){
+ $values['value'] = $value;
+ } else {
+ if ( ! is_array($values['value'])) {
+ $values['value'] = [$values['value']];
+ }
+
+ $values['value'][] = $value;
+ }
+
+ unset($values[$k]);
+ }
+
+ return $values;
+ }
+
+ /**
+ * Constant ::= integer | string | float | boolean
+ *
+ * @return mixed
+ *
+ * @throws AnnotationException
+ */
+ private function Constant()
+ {
+ $identifier = $this->Identifier();
+
+ if ( ! defined($identifier) && false !== strpos($identifier, '::') && '\\' !== $identifier[0]) {
+ list($className, $const) = explode('::', $identifier);
+
+ $pos = strpos($className, '\\');
+ $alias = (false === $pos) ? $className : substr($className, 0, $pos);
+ $found = false;
+ $loweredAlias = strtolower($alias);
+
+ switch (true) {
+ case !empty ($this->namespaces):
+ foreach ($this->namespaces as $ns) {
+ if (class_exists($ns.'\\'.$className) || interface_exists($ns.'\\'.$className)) {
+ $className = $ns.'\\'.$className;
+ $found = true;
+ break;
+ }
+ }
+ break;
+
+ case isset($this->imports[$loweredAlias]):
+ $found = true;
+ $className = (false !== $pos)
+ ? $this->imports[$loweredAlias] . substr($className, $pos)
+ : $this->imports[$loweredAlias];
+ break;
+
+ default:
+ if(isset($this->imports['__NAMESPACE__'])) {
+ $ns = $this->imports['__NAMESPACE__'];
+
+ if (class_exists($ns.'\\'.$className) || interface_exists($ns.'\\'.$className)) {
+ $className = $ns.'\\'.$className;
+ $found = true;
+ }
+ }
+ break;
+ }
+
+ if ($found) {
+ $identifier = $className . '::' . $const;
+ }
+ }
+
+ /**
+ * Checks if identifier ends with ::class and remove the leading backslash if it exists.
+ */
+ if ($this->identifierEndsWithClassConstant($identifier) && ! $this->identifierStartsWithBackslash($identifier)) {
+ return substr($identifier, 0, $this->getClassConstantPositionInIdentifier($identifier));
+ }
+ if ($this->identifierEndsWithClassConstant($identifier) && $this->identifierStartsWithBackslash($identifier)) {
+ return substr($identifier, 1, $this->getClassConstantPositionInIdentifier($identifier) - 1);
+ }
+
+ if (!defined($identifier)) {
+ throw AnnotationException::semanticalErrorConstants($identifier, $this->context);
+ }
+
+ return constant($identifier);
+ }
+
+ private function identifierStartsWithBackslash(string $identifier) : bool
+ {
+ return '\\' === $identifier[0];
+ }
+
+ private function identifierEndsWithClassConstant(string $identifier) : bool
+ {
+ return $this->getClassConstantPositionInIdentifier($identifier) === strlen($identifier) - strlen('::class');
+ }
+
+ /**
+ * @return int|false
+ */
+ private function getClassConstantPositionInIdentifier(string $identifier)
+ {
+ return stripos($identifier, '::class');
+ }
+
+ /**
+ * Identifier ::= string
+ *
+ * @return string
+ */
+ private function Identifier()
+ {
+ // check if we have an annotation
+ if ( ! $this->lexer->isNextTokenAny(self::$classIdentifiers)) {
+ $this->syntaxError('namespace separator or identifier');
+ }
+
+ $this->lexer->moveNext();
+
+ $className = $this->lexer->token['value'];
+
+ while (
+ null !== $this->lexer->lookahead &&
+ $this->lexer->lookahead['position'] === ($this->lexer->token['position'] + strlen($this->lexer->token['value'])) &&
+ $this->lexer->isNextToken(DocLexer::T_NAMESPACE_SEPARATOR)
+ ) {
+ $this->match(DocLexer::T_NAMESPACE_SEPARATOR);
+ $this->matchAny(self::$classIdentifiers);
+
+ $className .= '\\' . $this->lexer->token['value'];
+ }
+
+ return $className;
+ }
+
+ /**
+ * Value ::= PlainValue | FieldAssignment
+ *
+ * @return mixed
+ */
+ private function Value()
+ {
+ $peek = $this->lexer->glimpse();
+
+ if (DocLexer::T_EQUALS === $peek['type']) {
+ return $this->FieldAssignment();
+ }
+
+ return $this->PlainValue();
+ }
+
+ /**
+ * PlainValue ::= integer | string | float | boolean | Array | Annotation
+ *
+ * @return mixed
+ */
+ private function PlainValue()
+ {
+ if ($this->lexer->isNextToken(DocLexer::T_OPEN_CURLY_BRACES)) {
+ return $this->Arrayx();
+ }
+
+ if ($this->lexer->isNextToken(DocLexer::T_AT)) {
+ return $this->Annotation();
+ }
+
+ if ($this->lexer->isNextToken(DocLexer::T_IDENTIFIER)) {
+ return $this->Constant();
+ }
+
+ switch ($this->lexer->lookahead['type']) {
+ case DocLexer::T_STRING:
+ $this->match(DocLexer::T_STRING);
+ return $this->lexer->token['value'];
+
+ case DocLexer::T_INTEGER:
+ $this->match(DocLexer::T_INTEGER);
+ return (int)$this->lexer->token['value'];
+
+ case DocLexer::T_FLOAT:
+ $this->match(DocLexer::T_FLOAT);
+ return (float)$this->lexer->token['value'];
+
+ case DocLexer::T_TRUE:
+ $this->match(DocLexer::T_TRUE);
+ return true;
+
+ case DocLexer::T_FALSE:
+ $this->match(DocLexer::T_FALSE);
+ return false;
+
+ case DocLexer::T_NULL:
+ $this->match(DocLexer::T_NULL);
+ return null;
+
+ default:
+ $this->syntaxError('PlainValue');
+ }
+ }
+
+ /**
+ * FieldAssignment ::= FieldName "=" PlainValue
+ * FieldName ::= identifier
+ *
+ * @return \stdClass
+ */
+ private function FieldAssignment()
+ {
+ $this->match(DocLexer::T_IDENTIFIER);
+ $fieldName = $this->lexer->token['value'];
+
+ $this->match(DocLexer::T_EQUALS);
+
+ $item = new \stdClass();
+ $item->name = $fieldName;
+ $item->value = $this->PlainValue();
+
+ return $item;
+ }
+
+ /**
+ * Array ::= "{" ArrayEntry {"," ArrayEntry}* [","] "}"
+ *
+ * @return array
+ */
+ private function Arrayx()
+ {
+ $array = $values = [];
+
+ $this->match(DocLexer::T_OPEN_CURLY_BRACES);
+
+ // If the array is empty, stop parsing and return.
+ if ($this->lexer->isNextToken(DocLexer::T_CLOSE_CURLY_BRACES)) {
+ $this->match(DocLexer::T_CLOSE_CURLY_BRACES);
+
+ return $array;
+ }
+
+ $values[] = $this->ArrayEntry();
+
+ while ($this->lexer->isNextToken(DocLexer::T_COMMA)) {
+ $this->match(DocLexer::T_COMMA);
+
+ // optional trailing comma
+ if ($this->lexer->isNextToken(DocLexer::T_CLOSE_CURLY_BRACES)) {
+ break;
+ }
+
+ $values[] = $this->ArrayEntry();
+ }
+
+ $this->match(DocLexer::T_CLOSE_CURLY_BRACES);
+
+ foreach ($values as $value) {
+ list ($key, $val) = $value;
+
+ if ($key !== null) {
+ $array[$key] = $val;
+ } else {
+ $array[] = $val;
+ }
+ }
+
+ return $array;
+ }
+
+ /**
+ * ArrayEntry ::= Value | KeyValuePair
+ * KeyValuePair ::= Key ("=" | ":") PlainValue | Constant
+ * Key ::= string | integer | Constant
+ *
+ * @return array
+ */
+ private function ArrayEntry()
+ {
+ $peek = $this->lexer->glimpse();
+
+ if (DocLexer::T_EQUALS === $peek['type']
+ || DocLexer::T_COLON === $peek['type']) {
+
+ if ($this->lexer->isNextToken(DocLexer::T_IDENTIFIER)) {
+ $key = $this->Constant();
+ } else {
+ $this->matchAny([DocLexer::T_INTEGER, DocLexer::T_STRING]);
+ $key = $this->lexer->token['value'];
+ }
+
+ $this->matchAny([DocLexer::T_EQUALS, DocLexer::T_COLON]);
+
+ return [$key, $this->PlainValue()];
+ }
+
+ return [null, $this->Value()];
+ }
+
+ /**
+ * Checks whether the given $name matches any ignored annotation name or namespace
+ *
+ * @param string $name
+ *
+ * @return bool
+ */
+ private function isIgnoredAnnotation($name)
+ {
+ if ($this->ignoreNotImportedAnnotations || isset($this->ignoredAnnotationNames[$name])) {
+ return true;
+ }
+
+ foreach (array_keys($this->ignoredAnnotationNamespaces) as $ignoredAnnotationNamespace) {
+ $ignoredAnnotationNamespace = rtrim($ignoredAnnotationNamespace, '\\') . '\\';
+
+ if (0 === stripos(rtrim($name, '\\') . '\\', $ignoredAnnotationNamespace)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+}
diff --git a/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/FileCacheReader.php b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/FileCacheReader.php
new file mode 100644
index 0000000000000..40141af28eaeb
--- /dev/null
+++ b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/FileCacheReader.php
@@ -0,0 +1,290 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+/**
+ * File cache reader for annotations.
+ *
+ * @author Johannes M. Schmitt
+ * @author Benjamin Eberlei
+ *
+ * @deprecated the FileCacheReader is deprecated and will be removed
+ * in version 2.0.0 of doctrine/annotations. Please use the
+ * {@see \Doctrine\Common\Annotations\CachedReader} instead.
+ */
+class FileCacheReader implements Reader
+{
+ /**
+ * @var Reader
+ */
+ private $reader;
+
+ /**
+ * @var string
+ */
+ private $dir;
+
+ /**
+ * @var bool
+ */
+ private $debug;
+
+ /**
+ * @var array
+ */
+ private $loadedAnnotations = [];
+
+ /**
+ * @var array
+ */
+ private $classNameHashes = [];
+
+ /**
+ * @var int
+ */
+ private $umask;
+
+ /**
+ * Constructor.
+ *
+ * @param Reader $reader
+ * @param string $cacheDir
+ * @param boolean $debug
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function __construct(Reader $reader, $cacheDir, $debug = false, $umask = 0002)
+ {
+ if ( ! is_int($umask)) {
+ throw new \InvalidArgumentException(sprintf(
+ 'The parameter umask must be an integer, was: %s',
+ gettype($umask)
+ ));
+ }
+
+ $this->reader = $reader;
+ $this->umask = $umask;
+
+ if (!is_dir($cacheDir) && !@mkdir($cacheDir, 0777 & (~$this->umask), true)) {
+ throw new \InvalidArgumentException(sprintf('The directory "%s" does not exist and could not be created.', $cacheDir));
+ }
+
+ $this->dir = rtrim($cacheDir, '\\/');
+ $this->debug = $debug;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotations(\ReflectionClass $class)
+ {
+ if ( ! isset($this->classNameHashes[$class->name])) {
+ $this->classNameHashes[$class->name] = sha1($class->name);
+ }
+ $key = $this->classNameHashes[$class->name];
+
+ if (isset($this->loadedAnnotations[$key])) {
+ return $this->loadedAnnotations[$key];
+ }
+
+ $path = $this->dir.'/'.strtr($key, '\\', '-').'.cache.php';
+ if (!is_file($path)) {
+ $annot = $this->reader->getClassAnnotations($class);
+ $this->saveCacheFile($path, $annot);
+ return $this->loadedAnnotations[$key] = $annot;
+ }
+
+ if ($this->debug
+ && (false !== $filename = $class->getFileName())
+ && filemtime($path) < filemtime($filename)) {
+ @unlink($path);
+
+ $annot = $this->reader->getClassAnnotations($class);
+ $this->saveCacheFile($path, $annot);
+ return $this->loadedAnnotations[$key] = $annot;
+ }
+
+ return $this->loadedAnnotations[$key] = include $path;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotations(\ReflectionProperty $property)
+ {
+ $class = $property->getDeclaringClass();
+ if ( ! isset($this->classNameHashes[$class->name])) {
+ $this->classNameHashes[$class->name] = sha1($class->name);
+ }
+ $key = $this->classNameHashes[$class->name].'$'.$property->getName();
+
+ if (isset($this->loadedAnnotations[$key])) {
+ return $this->loadedAnnotations[$key];
+ }
+
+ $path = $this->dir.'/'.strtr($key, '\\', '-').'.cache.php';
+ if (!is_file($path)) {
+ $annot = $this->reader->getPropertyAnnotations($property);
+ $this->saveCacheFile($path, $annot);
+ return $this->loadedAnnotations[$key] = $annot;
+ }
+
+ if ($this->debug
+ && (false !== $filename = $class->getFilename())
+ && filemtime($path) < filemtime($filename)) {
+ @unlink($path);
+
+ $annot = $this->reader->getPropertyAnnotations($property);
+ $this->saveCacheFile($path, $annot);
+ return $this->loadedAnnotations[$key] = $annot;
+ }
+
+ return $this->loadedAnnotations[$key] = include $path;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotations(\ReflectionMethod $method)
+ {
+ $class = $method->getDeclaringClass();
+ if ( ! isset($this->classNameHashes[$class->name])) {
+ $this->classNameHashes[$class->name] = sha1($class->name);
+ }
+ $key = $this->classNameHashes[$class->name].'#'.$method->getName();
+
+ if (isset($this->loadedAnnotations[$key])) {
+ return $this->loadedAnnotations[$key];
+ }
+
+ $path = $this->dir.'/'.strtr($key, '\\', '-').'.cache.php';
+ if (!is_file($path)) {
+ $annot = $this->reader->getMethodAnnotations($method);
+ $this->saveCacheFile($path, $annot);
+ return $this->loadedAnnotations[$key] = $annot;
+ }
+
+ if ($this->debug
+ && (false !== $filename = $class->getFilename())
+ && filemtime($path) < filemtime($filename)) {
+ @unlink($path);
+
+ $annot = $this->reader->getMethodAnnotations($method);
+ $this->saveCacheFile($path, $annot);
+ return $this->loadedAnnotations[$key] = $annot;
+ }
+
+ return $this->loadedAnnotations[$key] = include $path;
+ }
+
+ /**
+ * Saves the cache file.
+ *
+ * @param string $path
+ * @param mixed $data
+ *
+ * @return void
+ */
+ private function saveCacheFile($path, $data)
+ {
+ if (!is_writable($this->dir)) {
+ throw new \InvalidArgumentException(sprintf('The directory "%s" is not writable. Both, the webserver and the console user need access. You can manage access rights for multiple users with "chmod +a". If your system does not support this, check out the acl package.', $this->dir));
+ }
+
+ $tempfile = tempnam($this->dir, uniqid('', true));
+
+ if (false === $tempfile) {
+ throw new \RuntimeException(sprintf('Unable to create tempfile in directory: %s', $this->dir));
+ }
+
+ @chmod($tempfile, 0666 & (~$this->umask));
+
+ $written = file_put_contents($tempfile, 'umask));
+
+ if (false === rename($tempfile, $path)) {
+ @unlink($tempfile);
+ throw new \RuntimeException(sprintf('Unable to rename %s to %s', $tempfile, $path));
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotation(\ReflectionClass $class, $annotationName)
+ {
+ $annotations = $this->getClassAnnotations($class);
+
+ foreach ($annotations as $annotation) {
+ if ($annotation instanceof $annotationName) {
+ return $annotation;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotation(\ReflectionMethod $method, $annotationName)
+ {
+ $annotations = $this->getMethodAnnotations($method);
+
+ foreach ($annotations as $annotation) {
+ if ($annotation instanceof $annotationName) {
+ return $annotation;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotation(\ReflectionProperty $property, $annotationName)
+ {
+ $annotations = $this->getPropertyAnnotations($property);
+
+ foreach ($annotations as $annotation) {
+ if ($annotation instanceof $annotationName) {
+ return $annotation;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Clears loaded annotations.
+ *
+ * @return void
+ */
+ public function clearLoadedAnnotations()
+ {
+ $this->loadedAnnotations = [];
+ }
+}
diff --git a/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/IndexedReader.php b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/IndexedReader.php
new file mode 100644
index 0000000000000..4e8c3c8c3cb54
--- /dev/null
+++ b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/IndexedReader.php
@@ -0,0 +1,119 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+/**
+ * Allows the reader to be used in-place of Doctrine's reader.
+ *
+ * @author Johannes M. Schmitt
+ */
+class IndexedReader implements Reader
+{
+ /**
+ * @var Reader
+ */
+ private $delegate;
+
+ /**
+ * Constructor.
+ *
+ * @param Reader $reader
+ */
+ public function __construct(Reader $reader)
+ {
+ $this->delegate = $reader;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotations(\ReflectionClass $class)
+ {
+ $annotations = [];
+ foreach ($this->delegate->getClassAnnotations($class) as $annot) {
+ $annotations[get_class($annot)] = $annot;
+ }
+
+ return $annotations;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotation(\ReflectionClass $class, $annotation)
+ {
+ return $this->delegate->getClassAnnotation($class, $annotation);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotations(\ReflectionMethod $method)
+ {
+ $annotations = [];
+ foreach ($this->delegate->getMethodAnnotations($method) as $annot) {
+ $annotations[get_class($annot)] = $annot;
+ }
+
+ return $annotations;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotation(\ReflectionMethod $method, $annotation)
+ {
+ return $this->delegate->getMethodAnnotation($method, $annotation);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotations(\ReflectionProperty $property)
+ {
+ $annotations = [];
+ foreach ($this->delegate->getPropertyAnnotations($property) as $annot) {
+ $annotations[get_class($annot)] = $annot;
+ }
+
+ return $annotations;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotation(\ReflectionProperty $property, $annotation)
+ {
+ return $this->delegate->getPropertyAnnotation($property, $annotation);
+ }
+
+ /**
+ * Proxies all methods to the delegate.
+ *
+ * @param string $method
+ * @param array $args
+ *
+ * @return mixed
+ */
+ public function __call($method, $args)
+ {
+ return call_user_func_array([$this->delegate, $method], $args);
+ }
+}
diff --git a/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php
new file mode 100644
index 0000000000000..ec871813ba676
--- /dev/null
+++ b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php
@@ -0,0 +1,91 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+use SplFileObject;
+
+/**
+ * Parses a file for namespaces/use/class declarations.
+ *
+ * @author Fabien Potencier
+ * @author Christian Kaps
+ */
+final class PhpParser
+{
+ /**
+ * Parses a class.
+ *
+ * @param \ReflectionClass $class A ReflectionClass
object.
+ *
+ * @return array A list with use statements in the form (Alias => FQN).
+ */
+ public function parseClass(\ReflectionClass $class)
+ {
+ if (method_exists($class, 'getUseStatements')) {
+ return $class->getUseStatements();
+ }
+
+ if (false === $filename = $class->getFileName()) {
+ return [];
+ }
+
+ $content = $this->getFileContent($filename, $class->getStartLine());
+
+ if (null === $content) {
+ return [];
+ }
+
+ $namespace = preg_quote($class->getNamespaceName());
+ $content = preg_replace('/^.*?(\bnamespace\s+' . $namespace . '\s*[;{].*)$/s', '\\1', $content);
+ $tokenizer = new TokenParser('parseUseStatements($class->getNamespaceName());
+
+ return $statements;
+ }
+
+ /**
+ * Gets the content of the file right up to the given line number.
+ *
+ * @param string $filename The name of the file to load.
+ * @param integer $lineNumber The number of lines to read from file.
+ *
+ * @return string|null The content of the file or null if the file does not exist.
+ */
+ private function getFileContent($filename, $lineNumber)
+ {
+ if ( ! is_file($filename)) {
+ return null;
+ }
+
+ $content = '';
+ $lineCnt = 0;
+ $file = new SplFileObject($filename);
+ while (!$file->eof()) {
+ if ($lineCnt++ == $lineNumber) {
+ break;
+ }
+
+ $content .= $file->fgets();
+ }
+
+ return $content;
+ }
+}
diff --git a/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php
new file mode 100644
index 0000000000000..4774f87312bfc
--- /dev/null
+++ b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php
@@ -0,0 +1,89 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+/**
+ * Interface for annotation readers.
+ *
+ * @author Johannes M. Schmitt
+ */
+interface Reader
+{
+ /**
+ * Gets the annotations applied to a class.
+ *
+ * @param \ReflectionClass $class The ReflectionClass of the class from which
+ * the class annotations should be read.
+ *
+ * @return array An array of Annotations.
+ */
+ function getClassAnnotations(\ReflectionClass $class);
+
+ /**
+ * Gets a class annotation.
+ *
+ * @param \ReflectionClass $class The ReflectionClass of the class from which
+ * the class annotations should be read.
+ * @param string $annotationName The name of the annotation.
+ *
+ * @return object|null The Annotation or NULL, if the requested annotation does not exist.
+ */
+ function getClassAnnotation(\ReflectionClass $class, $annotationName);
+
+ /**
+ * Gets the annotations applied to a method.
+ *
+ * @param \ReflectionMethod $method The ReflectionMethod of the method from which
+ * the annotations should be read.
+ *
+ * @return array An array of Annotations.
+ */
+ function getMethodAnnotations(\ReflectionMethod $method);
+
+ /**
+ * Gets a method annotation.
+ *
+ * @param \ReflectionMethod $method The ReflectionMethod to read the annotations from.
+ * @param string $annotationName The name of the annotation.
+ *
+ * @return object|null The Annotation or NULL, if the requested annotation does not exist.
+ */
+ function getMethodAnnotation(\ReflectionMethod $method, $annotationName);
+
+ /**
+ * Gets the annotations applied to a property.
+ *
+ * @param \ReflectionProperty $property The ReflectionProperty of the property
+ * from which the annotations should be read.
+ *
+ * @return array An array of Annotations.
+ */
+ function getPropertyAnnotations(\ReflectionProperty $property);
+
+ /**
+ * Gets a property annotation.
+ *
+ * @param \ReflectionProperty $property The ReflectionProperty to read the annotations from.
+ * @param string $annotationName The name of the annotation.
+ *
+ * @return object|null The Annotation or NULL, if the requested annotation does not exist.
+ */
+ function getPropertyAnnotation(\ReflectionProperty $property, $annotationName);
+}
diff --git a/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/SimpleAnnotationReader.php b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/SimpleAnnotationReader.php
new file mode 100644
index 0000000000000..d4757eea2fb59
--- /dev/null
+++ b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/SimpleAnnotationReader.php
@@ -0,0 +1,127 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+/**
+ * Simple Annotation Reader.
+ *
+ * This annotation reader is intended to be used in projects where you have
+ * full-control over all annotations that are available.
+ *
+ * @since 2.2
+ * @author Johannes M. Schmitt
+ * @author Fabio B. Silva
+ */
+class SimpleAnnotationReader implements Reader
+{
+ /**
+ * @var DocParser
+ */
+ private $parser;
+
+ /**
+ * Constructor.
+ *
+ * Initializes a new SimpleAnnotationReader.
+ */
+ public function __construct()
+ {
+ $this->parser = new DocParser();
+ $this->parser->setIgnoreNotImportedAnnotations(true);
+ }
+
+ /**
+ * Adds a namespace in which we will look for annotations.
+ *
+ * @param string $namespace
+ *
+ * @return void
+ */
+ public function addNamespace($namespace)
+ {
+ $this->parser->addNamespace($namespace);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotations(\ReflectionClass $class)
+ {
+ return $this->parser->parse($class->getDocComment(), 'class '.$class->getName());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotations(\ReflectionMethod $method)
+ {
+ return $this->parser->parse($method->getDocComment(), 'method '.$method->getDeclaringClass()->name.'::'.$method->getName().'()');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotations(\ReflectionProperty $property)
+ {
+ return $this->parser->parse($property->getDocComment(), 'property '.$property->getDeclaringClass()->name.'::$'.$property->getName());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotation(\ReflectionClass $class, $annotationName)
+ {
+ foreach ($this->getClassAnnotations($class) as $annot) {
+ if ($annot instanceof $annotationName) {
+ return $annot;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotation(\ReflectionMethod $method, $annotationName)
+ {
+ foreach ($this->getMethodAnnotations($method) as $annot) {
+ if ($annot instanceof $annotationName) {
+ return $annot;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotation(\ReflectionProperty $property, $annotationName)
+ {
+ foreach ($this->getPropertyAnnotations($property) as $annot) {
+ if ($annot instanceof $annotationName) {
+ return $annot;
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/TokenParser.php b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/TokenParser.php
new file mode 100644
index 0000000000000..03d9320ab0b04
--- /dev/null
+++ b/lib/composer/doctrine/annotations/lib/Doctrine/Common/Annotations/TokenParser.php
@@ -0,0 +1,194 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+/**
+ * Parses a file for namespaces/use/class declarations.
+ *
+ * @author Fabien Potencier
+ * @author Christian Kaps
+ */
+class TokenParser
+{
+ /**
+ * The token list.
+ *
+ * @var array
+ */
+ private $tokens;
+
+ /**
+ * The number of tokens.
+ *
+ * @var int
+ */
+ private $numTokens;
+
+ /**
+ * The current array pointer.
+ *
+ * @var int
+ */
+ private $pointer = 0;
+
+ /**
+ * @param string $contents
+ */
+ public function __construct($contents)
+ {
+ $this->tokens = token_get_all($contents);
+
+ // The PHP parser sets internal compiler globals for certain things. Annoyingly, the last docblock comment it
+ // saw gets stored in doc_comment. When it comes to compile the next thing to be include()d this stored
+ // doc_comment becomes owned by the first thing the compiler sees in the file that it considers might have a
+ // docblock. If the first thing in the file is a class without a doc block this would cause calls to
+ // getDocBlock() on said class to return our long lost doc_comment. Argh.
+ // To workaround, cause the parser to parse an empty docblock. Sure getDocBlock() will return this, but at least
+ // it's harmless to us.
+ token_get_all("numTokens = count($this->tokens);
+ }
+
+ /**
+ * Gets the next non whitespace and non comment token.
+ *
+ * @param boolean $docCommentIsComment If TRUE then a doc comment is considered a comment and skipped.
+ * If FALSE then only whitespace and normal comments are skipped.
+ *
+ * @return array|null The token if exists, null otherwise.
+ */
+ public function next($docCommentIsComment = TRUE)
+ {
+ for ($i = $this->pointer; $i < $this->numTokens; $i++) {
+ $this->pointer++;
+ if ($this->tokens[$i][0] === T_WHITESPACE ||
+ $this->tokens[$i][0] === T_COMMENT ||
+ ($docCommentIsComment && $this->tokens[$i][0] === T_DOC_COMMENT)) {
+
+ continue;
+ }
+
+ return $this->tokens[$i];
+ }
+
+ return null;
+ }
+
+ /**
+ * Parses a single use statement.
+ *
+ * @return array A list with all found class names for a use statement.
+ */
+ public function parseUseStatement()
+ {
+
+ $groupRoot = '';
+ $class = '';
+ $alias = '';
+ $statements = [];
+ $explicitAlias = false;
+ while (($token = $this->next())) {
+ $isNameToken = $token[0] === T_STRING || $token[0] === T_NS_SEPARATOR;
+ if (!$explicitAlias && $isNameToken) {
+ $class .= $token[1];
+ $alias = $token[1];
+ } else if ($explicitAlias && $isNameToken) {
+ $alias .= $token[1];
+ } else if ($token[0] === T_AS) {
+ $explicitAlias = true;
+ $alias = '';
+ } else if ($token === ',') {
+ $statements[strtolower($alias)] = $groupRoot . $class;
+ $class = '';
+ $alias = '';
+ $explicitAlias = false;
+ } else if ($token === ';') {
+ $statements[strtolower($alias)] = $groupRoot . $class;
+ break;
+ } else if ($token === '{' ) {
+ $groupRoot = $class;
+ $class = '';
+ } else if ($token === '}' ) {
+ continue;
+ } else {
+ break;
+ }
+ }
+
+ return $statements;
+ }
+
+ /**
+ * Gets all use statements.
+ *
+ * @param string $namespaceName The namespace name of the reflected class.
+ *
+ * @return array A list with all found use statements.
+ */
+ public function parseUseStatements($namespaceName)
+ {
+ $statements = [];
+ while (($token = $this->next())) {
+ if ($token[0] === T_USE) {
+ $statements = array_merge($statements, $this->parseUseStatement());
+ continue;
+ }
+ if ($token[0] !== T_NAMESPACE || $this->parseNamespace() != $namespaceName) {
+ continue;
+ }
+
+ // Get fresh array for new namespace. This is to prevent the parser to collect the use statements
+ // for a previous namespace with the same name. This is the case if a namespace is defined twice
+ // or if a namespace with the same name is commented out.
+ $statements = [];
+ }
+
+ return $statements;
+ }
+
+ /**
+ * Gets the namespace.
+ *
+ * @return string The found namespace.
+ */
+ public function parseNamespace()
+ {
+ $name = '';
+ while (($token = $this->next()) && ($token[0] === T_STRING || $token[0] === T_NS_SEPARATOR)) {
+ $name .= $token[1];
+ }
+
+ return $name;
+ }
+
+ /**
+ * Gets the class name.
+ *
+ * @return string The found class name.
+ */
+ public function parseClass()
+ {
+ // Namespaces and class names are tokenized the same: T_STRINGs
+ // separated by T_NS_SEPARATOR so we can use one function to provide
+ // both.
+ return $this->parseNamespace();
+ }
+}
diff --git a/lib/composer/doctrine/annotations/phpbench.json.dist b/lib/composer/doctrine/annotations/phpbench.json.dist
new file mode 100644
index 0000000000000..35edde9500650
--- /dev/null
+++ b/lib/composer/doctrine/annotations/phpbench.json.dist
@@ -0,0 +1,4 @@
+{
+ "bootstrap": "tests/Doctrine/Performance/Common/bootstrap.php",
+ "path": "tests/Doctrine/Performance/Common/Annotations"
+}
diff --git a/lib/composer/doctrine/annotations/phpstan.neon b/lib/composer/doctrine/annotations/phpstan.neon
new file mode 100644
index 0000000000000..bac7f83c4d6fa
--- /dev/null
+++ b/lib/composer/doctrine/annotations/phpstan.neon
@@ -0,0 +1,14 @@
+parameters:
+ autoload_files:
+ - %currentWorkingDirectory%/tests/Doctrine/Tests/Common/Annotations/DocParserTest.php
+ excludes_analyse:
+ - %currentWorkingDirectory%/tests/*/Fixtures/*
+ - %currentWorkingDirectory%/tests/Doctrine/Tests/Common/Annotations/ReservedKeywordsClasses.php
+ - %currentWorkingDirectory%/tests/Doctrine/Tests/Common/Annotations/Ticket/DCOM58Entity.php
+ - %currentWorkingDirectory%/tests/Doctrine/Tests/DoctrineTestCase.php
+ polluteScopeWithLoopInitialAssignments: true
+ ignoreErrors:
+ - '#Class Doctrine_Tests_Common_Annotations_Fixtures_ClassNoNamespaceNoComment not found#'
+ - '#Instantiated class Doctrine_Tests_Common_Annotations_Fixtures_ClassNoNamespaceNoComment not found#'
+ - '#Property Doctrine\\Tests\\Common\\Annotations\\DummyClassNonAnnotationProblem::\$foo has unknown class#'
+ - '#Call to an undefined method ReflectionClass::getUseStatements\(\)#'
diff --git a/lib/composer/doctrine/lexer/LICENSE b/lib/composer/doctrine/lexer/LICENSE
new file mode 100644
index 0000000000000..e8fdec4afb76e
--- /dev/null
+++ b/lib/composer/doctrine/lexer/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2006-2018 Doctrine Project
+
+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/lib/composer/doctrine/lexer/README.md b/lib/composer/doctrine/lexer/README.md
new file mode 100644
index 0000000000000..e1b419a696ad0
--- /dev/null
+++ b/lib/composer/doctrine/lexer/README.md
@@ -0,0 +1,9 @@
+# Doctrine Lexer
+
+Build Status: [![Build Status](https://travis-ci.org/doctrine/lexer.svg?branch=master)](https://travis-ci.org/doctrine/lexer)
+
+Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.
+
+This lexer is used in Doctrine Annotations and in Doctrine ORM (DQL).
+
+https://www.doctrine-project.org/projects/lexer.html
diff --git a/lib/composer/doctrine/lexer/composer.json b/lib/composer/doctrine/lexer/composer.json
new file mode 100644
index 0000000000000..3432bae4af49a
--- /dev/null
+++ b/lib/composer/doctrine/lexer/composer.json
@@ -0,0 +1,41 @@
+{
+ "name": "doctrine/lexer",
+ "type": "library",
+ "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
+ "keywords": [
+ "php",
+ "parser",
+ "lexer",
+ "annotations",
+ "docblock"
+ ],
+ "homepage": "https://www.doctrine-project.org/projects/lexer.html",
+ "license": "MIT",
+ "authors": [
+ {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"},
+ {"name": "Roman Borschel", "email": "roman@code-factory.org"},
+ {"name": "Johannes Schmitt", "email": "schmittjoh@gmail.com"}
+ ],
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "phpstan/phpstan": "^0.11.8",
+ "phpunit/phpunit": "^8.2"
+ },
+ "autoload": {
+ "psr-4": { "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" }
+ },
+ "autoload-dev": {
+ "psr-4": { "Doctrine\\Tests\\": "tests/Doctrine" }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "config": {
+ "sort-packages": true
+ }
+}
diff --git a/lib/composer/doctrine/lexer/lib/Doctrine/Common/Lexer/AbstractLexer.php b/lib/composer/doctrine/lexer/lib/Doctrine/Common/Lexer/AbstractLexer.php
new file mode 100644
index 0000000000000..385643a4acea5
--- /dev/null
+++ b/lib/composer/doctrine/lexer/lib/Doctrine/Common/Lexer/AbstractLexer.php
@@ -0,0 +1,328 @@
+input = $input;
+ $this->tokens = [];
+
+ $this->reset();
+ $this->scan($input);
+ }
+
+ /**
+ * Resets the lexer.
+ *
+ * @return void
+ */
+ public function reset()
+ {
+ $this->lookahead = null;
+ $this->token = null;
+ $this->peek = 0;
+ $this->position = 0;
+ }
+
+ /**
+ * Resets the peek pointer to 0.
+ *
+ * @return void
+ */
+ public function resetPeek()
+ {
+ $this->peek = 0;
+ }
+
+ /**
+ * Resets the lexer position on the input to the given position.
+ *
+ * @param int $position Position to place the lexical scanner.
+ *
+ * @return void
+ */
+ public function resetPosition($position = 0)
+ {
+ $this->position = $position;
+ }
+
+ /**
+ * Retrieve the original lexer's input until a given position.
+ *
+ * @param int $position
+ *
+ * @return string
+ */
+ public function getInputUntilPosition($position)
+ {
+ return substr($this->input, 0, $position);
+ }
+
+ /**
+ * Checks whether a given token matches the current lookahead.
+ *
+ * @param int|string $token
+ *
+ * @return bool
+ */
+ public function isNextToken($token)
+ {
+ return $this->lookahead !== null && $this->lookahead['type'] === $token;
+ }
+
+ /**
+ * Checks whether any of the given tokens matches the current lookahead.
+ *
+ * @param array $tokens
+ *
+ * @return bool
+ */
+ public function isNextTokenAny(array $tokens)
+ {
+ return $this->lookahead !== null && in_array($this->lookahead['type'], $tokens, true);
+ }
+
+ /**
+ * Moves to the next token in the input string.
+ *
+ * @return bool
+ */
+ public function moveNext()
+ {
+ $this->peek = 0;
+ $this->token = $this->lookahead;
+ $this->lookahead = isset($this->tokens[$this->position])
+ ? $this->tokens[$this->position++] : null;
+
+ return $this->lookahead !== null;
+ }
+
+ /**
+ * Tells the lexer to skip input tokens until it sees a token with the given value.
+ *
+ * @param string $type The token type to skip until.
+ *
+ * @return void
+ */
+ public function skipUntil($type)
+ {
+ while ($this->lookahead !== null && $this->lookahead['type'] !== $type) {
+ $this->moveNext();
+ }
+ }
+
+ /**
+ * Checks if given value is identical to the given token.
+ *
+ * @param mixed $value
+ * @param int|string $token
+ *
+ * @return bool
+ */
+ public function isA($value, $token)
+ {
+ return $this->getType($value) === $token;
+ }
+
+ /**
+ * Moves the lookahead token forward.
+ *
+ * @return array|null The next token or NULL if there are no more tokens ahead.
+ */
+ public function peek()
+ {
+ if (isset($this->tokens[$this->position + $this->peek])) {
+ return $this->tokens[$this->position + $this->peek++];
+ }
+
+ return null;
+ }
+
+ /**
+ * Peeks at the next token, returns it and immediately resets the peek.
+ *
+ * @return array|null The next token or NULL if there are no more tokens ahead.
+ */
+ public function glimpse()
+ {
+ $peek = $this->peek();
+ $this->peek = 0;
+
+ return $peek;
+ }
+
+ /**
+ * Scans the input string for tokens.
+ *
+ * @param string $input A query string.
+ *
+ * @return void
+ */
+ protected function scan($input)
+ {
+ if (! isset($this->regex)) {
+ $this->regex = sprintf(
+ '/(%s)|%s/%s',
+ implode(')|(', $this->getCatchablePatterns()),
+ implode('|', $this->getNonCatchablePatterns()),
+ $this->getModifiers()
+ );
+ }
+
+ $flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE;
+ $matches = preg_split($this->regex, $input, -1, $flags);
+
+ if ($matches === false) {
+ // Work around https://bugs.php.net/78122
+ $matches = [[$input, 0]];
+ }
+
+ foreach ($matches as $match) {
+ // Must remain before 'value' assignment since it can change content
+ $type = $this->getType($match[0]);
+
+ $this->tokens[] = [
+ 'value' => $match[0],
+ 'type' => $type,
+ 'position' => $match[1],
+ ];
+ }
+ }
+
+ /**
+ * Gets the literal for a given token.
+ *
+ * @param int|string $token
+ *
+ * @return int|string
+ */
+ public function getLiteral($token)
+ {
+ $className = static::class;
+ $reflClass = new ReflectionClass($className);
+ $constants = $reflClass->getConstants();
+
+ foreach ($constants as $name => $value) {
+ if ($value === $token) {
+ return $className . '::' . $name;
+ }
+ }
+
+ return $token;
+ }
+
+ /**
+ * Regex modifiers
+ *
+ * @return string
+ */
+ protected function getModifiers()
+ {
+ return 'iu';
+ }
+
+ /**
+ * Lexical catchable patterns.
+ *
+ * @return array
+ */
+ abstract protected function getCatchablePatterns();
+
+ /**
+ * Lexical non-catchable patterns.
+ *
+ * @return array
+ */
+ abstract protected function getNonCatchablePatterns();
+
+ /**
+ * Retrieve token type. Also processes the token value if necessary.
+ *
+ * @param string $value
+ *
+ * @return int|string|null
+ */
+ abstract protected function getType(&$value);
+}
diff --git a/lib/composer/felixfbecker/advanced-json-rpc/.travis.yml b/lib/composer/felixfbecker/advanced-json-rpc/.travis.yml
new file mode 100644
index 0000000000000..3fb59a191a253
--- /dev/null
+++ b/lib/composer/felixfbecker/advanced-json-rpc/.travis.yml
@@ -0,0 +1,43 @@
+language: php
+
+php:
+ - '7.0'
+ - '7.2'
+
+env:
+ global:
+ - FORCE_COLOR=1
+
+cache:
+ directories:
+ - $HOME/.composer/cache
+ - $HOME/.npm
+
+install:
+ - composer install --prefer-dist
+
+script:
+ - vendor/bin/phpunit --coverage-clover=coverage.xml --whitelist lib --bootstrap vendor/autoload.php tests
+
+after_success:
+ - bash <(curl -s https://codecov.io/bash)
+
+jobs:
+ include:
+ - stage: release
+ language: node_js
+ node_js: '8'
+ install:
+ - npm ci
+ script:
+ - npm run semantic-release
+ after_success: false
+
+stages:
+ - test
+ - name: release
+ if: branch = master AND type = push AND fork = false
+
+branches:
+ except:
+ - /^v\d+\.\d+\.\d+$/
diff --git a/lib/composer/felixfbecker/advanced-json-rpc/LICENSE b/lib/composer/felixfbecker/advanced-json-rpc/LICENSE
new file mode 100644
index 0000000000000..fc354170c54a5
--- /dev/null
+++ b/lib/composer/felixfbecker/advanced-json-rpc/LICENSE
@@ -0,0 +1,15 @@
+ISC License
+
+Copyright (c) 2016, Felix Frederick Becker
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/lib/composer/felixfbecker/advanced-json-rpc/composer.json b/lib/composer/felixfbecker/advanced-json-rpc/composer.json
new file mode 100644
index 0000000000000..a7e1d7bbee10e
--- /dev/null
+++ b/lib/composer/felixfbecker/advanced-json-rpc/composer.json
@@ -0,0 +1,32 @@
+{
+ "name": "felixfbecker/advanced-json-rpc",
+ "description": "A more advanced JSONRPC implementation",
+ "type": "library",
+ "license": "ISC",
+ "authors": [
+ {
+ "name": "Felix Becker",
+ "email": "felix.b@outlook.com"
+ }
+ ],
+ "autoload": {
+ "psr-4": {
+ "AdvancedJsonRpc\\": "lib/"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "AdvancedJsonRpc\\Tests\\": "tests/"
+ }
+ },
+ "require": {
+ "php": ">=7.0",
+ "netresearch/jsonmapper": "^1.0 || ^2.0",
+ "phpdocumentor/reflection-docblock": "^4.0.0 || ^5.0.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0.0"
+ },
+ "minimum-stability": "dev",
+ "prefer-stable": true
+}
diff --git a/lib/composer/felixfbecker/advanced-json-rpc/lib/Dispatcher.php b/lib/composer/felixfbecker/advanced-json-rpc/lib/Dispatcher.php
new file mode 100644
index 0000000000000..a2ad10fc9480d
--- /dev/null
+++ b/lib/composer/felixfbecker/advanced-json-rpc/lib/Dispatcher.php
@@ -0,0 +1,172 @@
+ ReflectionMethod[]
+ *
+ * @var ReflectionMethod
+ */
+ private $methods;
+
+ /**
+ * @var \phpDocumentor\Reflection\DocBlockFactory
+ */
+ private $docBlockFactory;
+
+ /**
+ * @var \phpDocumentor\Reflection\Types\ContextFactory
+ */
+ private $contextFactory;
+
+ /**
+ * @param object $target The target object that should receive the method calls
+ * @param string $delimiter A delimiter for method calls on properties, for example someProperty->someMethod
+ */
+ public function __construct($target, $delimiter = '->')
+ {
+ $this->target = $target;
+ $this->delimiter = $delimiter;
+ $this->docBlockFactory = DocBlockFactory::createInstance();
+ $this->contextFactory = new Types\ContextFactory();
+ $this->mapper = new JsonMapper();
+ }
+
+ /**
+ * Calls the appropriate method handler for an incoming Message
+ *
+ * @param string|object $msg The incoming message
+ * @return mixed
+ */
+ public function dispatch($msg)
+ {
+ if (is_string($msg)) {
+ $msg = json_decode($msg);
+ if (json_last_error() !== JSON_ERROR_NONE) {
+ throw new Error(json_last_error_msg(), ErrorCode::PARSE_ERROR);
+ }
+ }
+ // Find out the object and function that should be called
+ $obj = $this->target;
+ $parts = explode($this->delimiter, $msg->method);
+ // The function to call is always the last part of the method
+ $fn = array_pop($parts);
+ // For namespaced methods like textDocument/didOpen, call the didOpen method on the $textDocument property
+ // For simple methods like initialize, shutdown, exit, this loop will simply not be entered and $obj will be
+ // the target
+ foreach ($parts as $part) {
+ if (!isset($obj->$part)) {
+ throw new Error("Method {$msg->method} is not implemented", ErrorCode::METHOD_NOT_FOUND);
+ }
+ $obj = $obj->$part;
+ }
+ if (!isset($this->methods[$msg->method])) {
+ try {
+ $method = new ReflectionMethod($obj, $fn);
+ $this->methods[$msg->method] = $method;
+ } catch (ReflectionException $e) {
+ throw new Error($e->getMessage(), ErrorCode::METHOD_NOT_FOUND, null, $e);
+ }
+ }
+ $method = $this->methods[$msg->method];
+ $parameters = $method->getParameters();
+ if ($method->getDocComment()) {
+ $docBlock = $this->docBlockFactory->create(
+ $method->getDocComment(),
+ $this->contextFactory->createFromReflector($method->getDeclaringClass())
+ );
+ $paramTags = $docBlock->getTagsByName('param');
+ }
+ $args = [];
+ if (isset($msg->params)) {
+ // Find out the position
+ if (is_array($msg->params)) {
+ $args = $msg->params;
+ } else if (is_object($msg->params)) {
+ foreach ($parameters as $pos => $parameter) {
+ $value = null;
+ foreach(get_object_vars($msg->params) as $key => $val) {
+ if ($parameter->name === $key) {
+ $value = $val;
+ break;
+ }
+ }
+ $args[$pos] = $value;
+ }
+ } else {
+ throw new Error('Params must be structured or omitted', ErrorCode::INVALID_REQUEST);
+ }
+ foreach ($args as $position => $value) {
+ try {
+ // If the type is structured (array or object), map it with JsonMapper
+ if (is_object($value)) {
+ // Does the parameter have a type hint?
+ $param = $parameters[$position];
+ if ($param->hasType()) {
+ $paramType = $param->getType();
+ if ($paramType instanceof ReflectionNamedType) {
+ // We have object data to map and want the class name.
+ // This should not include the `?` if the type was nullable.
+ $class = $paramType->getName();
+ } else {
+ // Fallback for php 7.0, which is still supported (and doesn't have nullable).
+ $class = (string)$paramType;
+ }
+ $value = $this->mapper->map($value, new $class());
+ }
+ } else if (is_array($value) && isset($docBlock)) {
+ // Get the array type from the DocBlock
+ $type = $paramTags[$position]->getType();
+ // For union types, use the first one that is a class array (often it is SomeClass[]|null)
+ if ($type instanceof Types\Compound) {
+ for ($i = 0; $t = $type->get($i); $i++) {
+ if (
+ $t instanceof Types\Array_
+ && $t->getValueType() instanceof Types\Object_
+ && (string)$t->getValueType() !== 'object'
+ ) {
+ $class = (string)$t->getValueType()->getFqsen();
+ $value = $this->mapper->mapArray($value, [], $class);
+ break;
+ }
+ }
+ } else if ($type instanceof Types\Array_) {
+ $class = (string)$type->getValueType()->getFqsen();
+ $value = $this->mapper->mapArray($value, [], $class);
+ } else {
+ throw new Error('Type is not matching @param tag', ErrorCode::INVALID_PARAMS);
+ }
+ }
+ } catch (JsonMapper_Exception $e) {
+ throw new Error($e->getMessage(), ErrorCode::INVALID_PARAMS, null, $e);
+ }
+ $args[$position] = $value;
+ }
+ }
+ ksort($args);
+ $result = $obj->$fn(...$args);
+ return $result;
+ }
+}
diff --git a/lib/composer/felixfbecker/advanced-json-rpc/lib/Error.php b/lib/composer/felixfbecker/advanced-json-rpc/lib/Error.php
new file mode 100644
index 0000000000000..b2801918b7d0b
--- /dev/null
+++ b/lib/composer/felixfbecker/advanced-json-rpc/lib/Error.php
@@ -0,0 +1,38 @@
+data = $data;
+ }
+}
diff --git a/lib/composer/felixfbecker/advanced-json-rpc/lib/ErrorCode.php b/lib/composer/felixfbecker/advanced-json-rpc/lib/ErrorCode.php
new file mode 100644
index 0000000000000..f0ef47927c86b
--- /dev/null
+++ b/lib/composer/felixfbecker/advanced-json-rpc/lib/ErrorCode.php
@@ -0,0 +1,48 @@
+id) && isset($msg->error);
+ }
+
+ /**
+ * @param int|string $id
+ * @param \AdvancedJsonRpc\Error $error
+ */
+ public function __construct($id, Error $error)
+ {
+ parent::__construct($id);
+ $this->error = $error;
+ }
+}
diff --git a/lib/composer/felixfbecker/advanced-json-rpc/lib/Message.php b/lib/composer/felixfbecker/advanced-json-rpc/lib/Message.php
new file mode 100644
index 0000000000000..e2231dc538e22
--- /dev/null
+++ b/lib/composer/felixfbecker/advanced-json-rpc/lib/Message.php
@@ -0,0 +1,52 @@
+method, $decoded->params ?? null);
+ } else if (Request::isRequest($decoded)) {
+ $obj = new Request($decoded->id, $decoded->method, $decoded->params ?? null);
+ } else if (SuccessResponse::isSuccessResponse($decoded)) {
+ $obj = new SuccessResponse($decoded->id, $decoded->result);
+ } else if (ErrorResponse::isErrorResponse($decoded)) {
+ $obj = new ErrorResponse($decoded->id, new Error($decoded->error->message, $decoded->error->code, $decoded->error->data ?? null));
+ } else {
+ throw new Error('Invalid message', ErrorCode::INVALID_REQUEST);
+ }
+ return $obj;
+ }
+
+ public function __toString(): string
+ {
+ $encoded = json_encode($this);
+ if ($encoded === false) {
+ throw new Error(json_last_error_msg(), ErrorCode::INTERNAL_ERROR);
+ }
+ return $encoded;
+ }
+}
diff --git a/lib/composer/felixfbecker/advanced-json-rpc/lib/Notification.php b/lib/composer/felixfbecker/advanced-json-rpc/lib/Notification.php
new file mode 100644
index 0000000000000..3440164d9c240
--- /dev/null
+++ b/lib/composer/felixfbecker/advanced-json-rpc/lib/Notification.php
@@ -0,0 +1,56 @@
+method);
+ }
+
+ /**
+ * @param string $method
+ * @param mixed $params
+ */
+ public function __construct(string $method, $params = null)
+ {
+ $this->method = $method;
+ $this->params = $params;
+ }
+}
diff --git a/lib/composer/felixfbecker/advanced-json-rpc/lib/Request.php b/lib/composer/felixfbecker/advanced-json-rpc/lib/Request.php
new file mode 100644
index 0000000000000..1429008258410
--- /dev/null
+++ b/lib/composer/felixfbecker/advanced-json-rpc/lib/Request.php
@@ -0,0 +1,63 @@
+method);
+ }
+
+ /**
+ * @param string|int $id
+ * @param string $method
+ * @param object|array $params
+ */
+ public function __construct($id, string $method, $params = null)
+ {
+ $this->id = $id;
+ $this->method = $method;
+ $this->params = $params;
+ }
+}
diff --git a/lib/composer/felixfbecker/advanced-json-rpc/lib/Response.php b/lib/composer/felixfbecker/advanced-json-rpc/lib/Response.php
new file mode 100644
index 0000000000000..a871eeac26a04
--- /dev/null
+++ b/lib/composer/felixfbecker/advanced-json-rpc/lib/Response.php
@@ -0,0 +1,40 @@
+error));
+ }
+
+ /**
+ * @param int|string $id
+ * @param mixed $result
+ * @param ResponseError $error
+ */
+ public function __construct($id)
+ {
+ $this->id = $id;
+ }
+}
diff --git a/lib/composer/felixfbecker/advanced-json-rpc/lib/SuccessResponse.php b/lib/composer/felixfbecker/advanced-json-rpc/lib/SuccessResponse.php
new file mode 100644
index 0000000000000..222fd46e777ff
--- /dev/null
+++ b/lib/composer/felixfbecker/advanced-json-rpc/lib/SuccessResponse.php
@@ -0,0 +1,40 @@
+result = $result;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/.editorconfig b/lib/composer/felixfbecker/language-server-protocol/.editorconfig
new file mode 100644
index 0000000000000..b5f0c5dfe7dda
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/.editorconfig
@@ -0,0 +1,17 @@
+
+[*]
+insert_final_newline = true
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+indent_style = space
+indent_size = 4
+
+[*.{json,yml}]
+indent_size = 2
+
+[composer.json]
+indent_size = 4
+
+[*.md]
+trim_trailing_whitespace = false
diff --git a/lib/composer/felixfbecker/language-server-protocol/LICENSE b/lib/composer/felixfbecker/language-server-protocol/LICENSE
new file mode 100644
index 0000000000000..fc354170c54a5
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/LICENSE
@@ -0,0 +1,15 @@
+ISC License
+
+Copyright (c) 2016, Felix Frederick Becker
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/lib/composer/felixfbecker/language-server-protocol/README.md b/lib/composer/felixfbecker/language-server-protocol/README.md
new file mode 100644
index 0000000000000..1e169d1e6ed2a
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/README.md
@@ -0,0 +1,19 @@
+# Language Server Protocol for PHP
+
+[![packagist](https://img.shields.io/packagist/v/felixfbecker/language-server-protocol.svg)](https://packagist.org/packages/felixfbecker/language-server-protocol)
+[![build](https://travis-ci.org/felixfbecker/php-language-server-protocol.svg?branch=master)](https://travis-ci.org/felixfbecker/php-language-server-protocol)
+[![php](https://img.shields.io/badge/php-%3E%3D%207.0-8892BF.svg)](https://php.net/)
+[![license](https://img.shields.io/packagist/l/felixfbecker/language-server-protocol.svg)](https://github.com/felixfbecker/php-language-server-protocol/blob/master/LICENSE)
+
+Protocol classes for the [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) in PHP
+
+## Installation
+
+```
+composer require felixfbecker/language-server-protocol
+```
+
+## Releases
+
+Releases are done automatically in CI by analyzing commit messages.
+Make sure to follow the [Conventional Commits Convention](https://www.conventionalcommits.org/en/v1.0.0-beta.2/).
diff --git a/lib/composer/felixfbecker/language-server-protocol/composer.json b/lib/composer/felixfbecker/language-server-protocol/composer.json
new file mode 100644
index 0000000000000..6890e8b48d973
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/composer.json
@@ -0,0 +1,36 @@
+{
+ "name": "felixfbecker/language-server-protocol",
+ "description": "PHP classes for the Language Server Protocol",
+ "license": "ISC",
+ "keywords": [
+ "php",
+ "language",
+ "server",
+ "microsoft"
+ ],
+ "authors": [
+ {
+ "name": "Felix Becker",
+ "email": "felix.b@outlook.com"
+ }
+ ],
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.3",
+ "phpstan/phpstan": "*",
+ "squizlabs/php_codesniffer": "^3.1"
+ },
+ "autoload": {
+ "psr-4": {
+ "LanguageServerProtocol\\": "src/"
+ }
+ },
+ "minimum-stability": "dev",
+ "prefer-stable": true,
+ "scripts":
+ {
+ "phpstan": "./vendor/bin/phpstan analyse -c phpstan.neon --ansi --level=7 -vvv src"
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/package-lock.json b/lib/composer/felixfbecker/language-server-protocol/package-lock.json
new file mode 100644
index 0000000000000..7fcdd3b4e054b
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/package-lock.json
@@ -0,0 +1,6489 @@
+{
+ "name": "php-language-server-protocol",
+ "version": "1.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@mrmlnc/readdir-enhanced": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
+ "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
+ "dev": true,
+ "requires": {
+ "call-me-maybe": "^1.0.1",
+ "glob-to-regexp": "^0.3.0"
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.2.tgz",
+ "integrity": "sha512-yprFYuno9FtNsSHVlSWd+nRlmGoAbqbeCwOryP6sC/zoCjhpArcRMYp19EvpSUSizJAlsXEwJv+wcWS9XaXdMw==",
+ "dev": true
+ },
+ "@octokit/rest": {
+ "version": "15.12.0",
+ "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-15.12.0.tgz",
+ "integrity": "sha512-5wRag4kHRkp0JDo++L9x9FkDlHEALbLnbSede16D8u+a2/t+gX32uhDs8cukVLyyrZR79nmh1lNpxZmffwoNoQ==",
+ "dev": true,
+ "requires": {
+ "before-after-hook": "^1.1.0",
+ "btoa-lite": "^1.0.0",
+ "debug": "^3.1.0",
+ "http-proxy-agent": "^2.1.0",
+ "https-proxy-agent": "^2.2.0",
+ "lodash": "^4.17.4",
+ "node-fetch": "^2.1.1",
+ "universal-user-agent": "^2.0.0",
+ "url-template": "^2.0.8"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
+ "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ }
+ }
+ },
+ "@semantic-release/commit-analyzer": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-6.0.1.tgz",
+ "integrity": "sha512-ENCRn1tm1D08CCBnIPsID8GjboWT6E97s0Lk3XrpAh+IMx615uAU1X2FoXyOGGc6zmqp9Ff4s8KECd/GjMcodQ==",
+ "dev": true,
+ "requires": {
+ "conventional-changelog-angular": "^5.0.0",
+ "conventional-commits-filter": "^2.0.0",
+ "conventional-commits-parser": "^3.0.0",
+ "debug": "^4.0.0",
+ "import-from": "^2.1.0",
+ "lodash": "^4.17.4"
+ }
+ },
+ "@semantic-release/error": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz",
+ "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==",
+ "dev": true
+ },
+ "@semantic-release/github": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-5.0.5.tgz",
+ "integrity": "sha512-Hdt6b8ST2pg6pl151PlcsnTcdsC2UJhA5FdbmunbZG/TVmlnKCZ4WUzpji7YqJtDLjbQTuFm/vhM6atW3XjMWg==",
+ "dev": true,
+ "requires": {
+ "@octokit/rest": "^15.2.0",
+ "@semantic-release/error": "^2.2.0",
+ "aggregate-error": "^1.0.0",
+ "bottleneck": "^2.0.1",
+ "debug": "^4.0.0",
+ "dir-glob": "^2.0.0",
+ "fs-extra": "^7.0.0",
+ "globby": "^8.0.0",
+ "http-proxy-agent": "^2.1.0",
+ "https-proxy-agent": "^2.2.1",
+ "issue-parser": "^3.0.0",
+ "lodash": "^4.17.4",
+ "mime": "^2.0.3",
+ "p-filter": "^1.0.0",
+ "p-retry": "^2.0.0",
+ "parse-github-url": "^1.0.1",
+ "url-join": "^4.0.0"
+ }
+ },
+ "@semantic-release/npm": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-5.0.4.tgz",
+ "integrity": "sha512-ExGXP9GnM2hqUIgTnp6sXKB1G0Yh+fuLftmIopq5KHBWj34Wd2YbM/3iLkXXnAP1YZ9YCp7hsAdsR014ctbwHg==",
+ "dev": true,
+ "requires": {
+ "@semantic-release/error": "^2.2.0",
+ "aggregate-error": "^1.0.0",
+ "detect-indent": "^5.0.0",
+ "detect-newline": "^2.1.0",
+ "execa": "^1.0.0",
+ "fs-extra": "^7.0.0",
+ "lodash": "^4.17.4",
+ "nerf-dart": "^1.0.0",
+ "normalize-url": "^3.0.0",
+ "npm": "^6.3.0",
+ "parse-json": "^4.0.0",
+ "rc": "^1.2.8",
+ "read-pkg": "^4.0.0",
+ "registry-auth-token": "^3.3.1"
+ },
+ "dependencies": {
+ "read-pkg": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
+ "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=",
+ "dev": true,
+ "requires": {
+ "normalize-package-data": "^2.3.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0"
+ }
+ }
+ }
+ },
+ "@semantic-release/release-notes-generator": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-7.0.2.tgz",
+ "integrity": "sha512-fomHrGq/gfZIAQYZk0MLRwfQ8d+DbTcI3kuO1hU2L0fDJYKHZHuPmKnsfVa5KoNdVVPHx878D/ojgyStRqhc9g==",
+ "dev": true,
+ "requires": {
+ "conventional-changelog-angular": "^5.0.0",
+ "conventional-changelog-writer": "^4.0.0",
+ "conventional-commits-filter": "^2.0.0",
+ "conventional-commits-parser": "^3.0.0",
+ "debug": "^4.0.0",
+ "get-stream": "^4.0.0",
+ "git-url-parse": "^10.0.1",
+ "import-from": "^2.1.0",
+ "into-stream": "^3.1.0",
+ "lodash": "^4.17.4"
+ }
+ },
+ "JSONStream": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.4.tgz",
+ "integrity": "sha512-Y7vfi3I5oMOYIr+WxV8NZxDSwcbNgzdKYsTNInmycOq9bUYwGg9ryu57Wg5NLmCjqdFPNUmpMBo3kSJN9tCbXg==",
+ "dev": true,
+ "requires": {
+ "jsonparse": "^1.2.0",
+ "through": ">=2.2.7 <3"
+ }
+ },
+ "agent-base": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
+ "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
+ "dev": true,
+ "requires": {
+ "es6-promisify": "^5.0.0"
+ }
+ },
+ "aggregate-error": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-1.0.0.tgz",
+ "integrity": "sha1-iINE2tAiCnLjr1CQYRf0h3GSX6w=",
+ "dev": true,
+ "requires": {
+ "clean-stack": "^1.0.0",
+ "indent-string": "^3.0.0"
+ }
+ },
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "ansicolors": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz",
+ "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=",
+ "dev": true
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "argv-formatter": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz",
+ "integrity": "sha1-oMoMvCmltz6Dbuvhy/bF4OTrgvk=",
+ "dev": true
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+ "dev": true
+ },
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "dev": true
+ },
+ "array-ify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
+ "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=",
+ "dev": true
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true,
+ "requires": {
+ "array-uniq": "^1.0.1"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+ "dev": true
+ },
+ "async": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
+ "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.10"
+ }
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "requires": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "before-after-hook": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-1.1.0.tgz",
+ "integrity": "sha512-VOMDtYPwLbIncTxNoSzRyvaMxtXmLWLUqr8k5AfC1BzLk34HvBXaQX8snOwQZ4c0aX8aSERqtJSiI9/m2u5kuA==",
+ "dev": true
+ },
+ "bottleneck": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.11.0.tgz",
+ "integrity": "sha512-DvKiYR1kG1qRVoLBUtPlmJffktoBZIz3qtdUbINlwzQXDhlhZdF8gWesPjwp05xqr5QZ7wXA2k1w78/COCweTg==",
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "btoa-lite": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz",
+ "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=",
+ "dev": true
+ },
+ "builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+ "dev": true
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "requires": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ }
+ },
+ "call-me-maybe": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
+ "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ },
+ "camelcase-keys": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
+ "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^4.1.0",
+ "map-obj": "^2.0.0",
+ "quick-lru": "^1.0.0"
+ }
+ },
+ "cardinal": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz",
+ "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=",
+ "dev": true,
+ "requires": {
+ "ansicolors": "~0.3.2",
+ "redeyed": "~2.1.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "clean-stack": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz",
+ "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=",
+ "dev": true
+ },
+ "cli-table": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz",
+ "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=",
+ "dev": true,
+ "requires": {
+ "colors": "1.0.3"
+ }
+ },
+ "cliui": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^2.1.1",
+ "strip-ansi": "^4.0.0",
+ "wrap-ansi": "^2.0.0"
+ }
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "dev": true
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "dev": true,
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "colors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
+ "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=",
+ "dev": true
+ },
+ "commander": {
+ "version": "2.17.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+ "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
+ "dev": true,
+ "optional": true
+ },
+ "compare-func": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz",
+ "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=",
+ "dev": true,
+ "requires": {
+ "array-ify": "^1.0.0",
+ "dot-prop": "^3.0.0"
+ }
+ },
+ "component-emitter": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "conventional-changelog-angular": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.1.tgz",
+ "integrity": "sha512-q4ylJ68fWZDdrFC9z4zKcf97HW6hp7Mo2YlqD4owfXhecFKy/PJCU/1oVFF4TqochchChqmZ0Vb0e0g8/MKNlA==",
+ "dev": true,
+ "requires": {
+ "compare-func": "^1.3.1",
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-writer": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.0.tgz",
+ "integrity": "sha512-hMZPe0AQ6Bi05epeK/7hz80xxk59nPA5z/b63TOHq2wigM0/akreOc8N4Jam5b9nFgKWX1e9PdPv2ewgW6bcfg==",
+ "dev": true,
+ "requires": {
+ "compare-func": "^1.3.1",
+ "conventional-commits-filter": "^2.0.0",
+ "dateformat": "^3.0.0",
+ "handlebars": "^4.0.2",
+ "json-stringify-safe": "^5.0.1",
+ "lodash": "^4.2.1",
+ "meow": "^4.0.0",
+ "semver": "^5.5.0",
+ "split": "^1.0.0",
+ "through2": "^2.0.0"
+ }
+ },
+ "conventional-commits-filter": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.0.tgz",
+ "integrity": "sha512-Cfl0j1/NquB/TMVx7Wrmyq7uRM+/rPQbtVVGwzfkhZ6/yH6fcMmP0Q/9044TBZPTNdGzm46vXFXL14wbET0/Mg==",
+ "dev": true,
+ "requires": {
+ "is-subset": "^0.1.1",
+ "modify-values": "^1.0.0"
+ }
+ },
+ "conventional-commits-parser": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.0.tgz",
+ "integrity": "sha512-GWh71U26BLWgMykCp+VghZ4s64wVbtseECcKQ/PvcPZR2cUnz+FUc2J9KjxNl7/ZbCxST8R03c9fc+Vi0umS9Q==",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.4",
+ "is-text-path": "^1.0.0",
+ "lodash": "^4.2.1",
+ "meow": "^4.0.0",
+ "split2": "^2.0.0",
+ "through2": "^2.0.0",
+ "trim-off-newlines": "^1.0.0"
+ }
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "cosmiconfig": {
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.6.tgz",
+ "integrity": "sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ==",
+ "dev": true,
+ "requires": {
+ "is-directory": "^0.3.1",
+ "js-yaml": "^3.9.0",
+ "parse-json": "^4.0.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "dev": true,
+ "requires": {
+ "array-find-index": "^1.0.1"
+ }
+ },
+ "dateformat": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
+ "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
+ "dev": true
+ },
+ "debug": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.0.1.tgz",
+ "integrity": "sha512-K23FHJ/Mt404FSlp6gSZCevIbTMLX0j3fmHhUEhQ3Wq0FMODW3+cUSoLdy1Gx4polAf4t/lphhmHH35BB8cLYw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
+ },
+ "decamelize-keys": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
+ "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
+ "dev": true,
+ "requires": {
+ "decamelize": "^1.1.0",
+ "map-obj": "^1.0.0"
+ },
+ "dependencies": {
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ }
+ }
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+ "dev": true
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "detect-indent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz",
+ "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=",
+ "dev": true
+ },
+ "detect-newline": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz",
+ "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=",
+ "dev": true
+ },
+ "dir-glob": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz",
+ "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==",
+ "dev": true,
+ "requires": {
+ "arrify": "^1.0.1",
+ "path-type": "^3.0.0"
+ }
+ },
+ "dot-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz",
+ "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=",
+ "dev": true,
+ "requires": {
+ "is-obj": "^1.0.0"
+ }
+ },
+ "duplexer2": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
+ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "end-of-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
+ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+ "dev": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "env-ci": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-3.0.0.tgz",
+ "integrity": "sha512-3Xt4Cfjdy9MTTrg/eWTnJNQIrtU1DDV0KyuWOGlrR2oa9dOdzoOMbQBFbfrTiv+GypdiWWIw5HdmtakZO+rzWA==",
+ "dev": true,
+ "requires": {
+ "execa": "^1.0.0",
+ "java-properties": "^0.2.9"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "es6-promise": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz",
+ "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==",
+ "dev": true
+ },
+ "es6-promisify": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
+ "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
+ "dev": true,
+ "requires": {
+ "es6-promise": "^4.0.3"
+ }
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "fast-glob": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz",
+ "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==",
+ "dev": true,
+ "requires": {
+ "@mrmlnc/readdir-enhanced": "^2.2.1",
+ "@nodelib/fs.stat": "^1.0.1",
+ "glob-parent": "^3.1.0",
+ "is-glob": "^4.0.0",
+ "merge2": "^1.2.1",
+ "micromatch": "^3.1.10"
+ }
+ },
+ "figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "find-versions": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-2.0.0.tgz",
+ "integrity": "sha1-KtkNSQ9oKMGqQCks9wmsMxghDDw=",
+ "dev": true,
+ "requires": {
+ "array-uniq": "^1.0.0",
+ "semver-regex": "^1.0.0"
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "dev": true,
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
+ }
+ },
+ "fs-extra": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.0.tgz",
+ "integrity": "sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.0.0.tgz",
+ "integrity": "sha512-FneLKMENeOR7wOK0/ZXCh+lwqtnPwkeunJjRN28LPqzGvNAhYvrTAhXv6xDm4vsJ0M7lcRbIYHQudKsSy2RtSQ==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "dev": true
+ },
+ "git-log-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz",
+ "integrity": "sha1-LmpMGxP8AAKCB7p5WnrDFme5/Uo=",
+ "dev": true,
+ "requires": {
+ "argv-formatter": "~1.0.0",
+ "spawn-error-forwarder": "~1.0.0",
+ "split2": "~1.0.0",
+ "stream-combiner2": "~1.1.1",
+ "through2": "~2.0.0",
+ "traverse": "~0.6.6"
+ },
+ "dependencies": {
+ "split2": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz",
+ "integrity": "sha1-UuLiIdiMdfmnP5BVbiY/+WdysxQ=",
+ "dev": true,
+ "requires": {
+ "through2": "~2.0.0"
+ }
+ }
+ }
+ },
+ "git-up": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/git-up/-/git-up-2.0.10.tgz",
+ "integrity": "sha512-2v4UN3qV2RGypD9QpmUjpk+4+RlYpW8GFuiZqQnKmvei08HsFPd0RfbDvEhnE4wBvnYs8ORVtYpOFuuCEmBVBw==",
+ "dev": true,
+ "requires": {
+ "is-ssh": "^1.3.0",
+ "parse-url": "^1.3.0"
+ }
+ },
+ "git-url-parse": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-10.0.1.tgz",
+ "integrity": "sha512-Tq2u8UPXc/FawC/dO8bvh8jcck0Lkor5OhuZvmVSeyJGRucDBfw9y2zy/GNCx28lMYh1N12IzPwDexjUNFyAeg==",
+ "dev": true,
+ "requires": {
+ "git-up": "^2.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "glob-to-regexp": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
+ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
+ "dev": true
+ },
+ "globby": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz",
+ "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==",
+ "dev": true,
+ "requires": {
+ "array-union": "^1.0.1",
+ "dir-glob": "^2.0.0",
+ "fast-glob": "^2.0.2",
+ "glob": "^7.1.2",
+ "ignore": "^3.3.5",
+ "pify": "^3.0.0",
+ "slash": "^1.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "handlebars": {
+ "version": "4.0.12",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz",
+ "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==",
+ "dev": true,
+ "requires": {
+ "async": "^2.5.0",
+ "optimist": "^0.6.1",
+ "source-map": "^0.6.1",
+ "uglify-js": "^3.1.4"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "hook-std": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-1.1.0.tgz",
+ "integrity": "sha512-aIyBZbZl3NS8XoSwIDQ+ZaiBuPOhhPWoBFA3QX0Q8hOMO8Tx4xGRTDnn/nl/LAtZWdieXzFC9ohAtTSnWrlHCQ==",
+ "dev": true
+ },
+ "hosted-git-info": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
+ "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
+ "dev": true
+ },
+ "http-proxy-agent": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
+ "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
+ "dev": true,
+ "requires": {
+ "agent-base": "4",
+ "debug": "3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "https-proxy-agent": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
+ "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
+ "dev": true,
+ "requires": {
+ "agent-base": "^4.1.0",
+ "debug": "^3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
+ "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ }
+ }
+ },
+ "ignore": {
+ "version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
+ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
+ "dev": true
+ },
+ "import-from": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz",
+ "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=",
+ "dev": true,
+ "requires": {
+ "resolve-from": "^3.0.0"
+ },
+ "dependencies": {
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ "dev": true
+ }
+ }
+ },
+ "indent-string": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
+ "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+ "dev": true
+ },
+ "into-stream": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz",
+ "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=",
+ "dev": true,
+ "requires": {
+ "from2": "^2.1.1",
+ "p-is-promise": "^1.1.0"
+ }
+ },
+ "invert-kv": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+ "dev": true
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-builtin-module": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
+ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
+ "dev": true,
+ "requires": {
+ "builtin-modules": "^1.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "is-directory": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
+ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
+ "dev": true
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
+ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-obj": {
+ "version": "1.0.1",
+ "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+ "dev": true
+ },
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "dev": true
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "is-ssh": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.0.tgz",
+ "integrity": "sha1-6+oRaaJhTaOSpjdANmw84EnY3/Y=",
+ "dev": true,
+ "requires": {
+ "protocols": "^1.1.0"
+ }
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ },
+ "is-subset": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz",
+ "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=",
+ "dev": true
+ },
+ "is-text-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz",
+ "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=",
+ "dev": true,
+ "requires": {
+ "text-extensions": "^1.0.0"
+ }
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "issue-parser": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-3.0.0.tgz",
+ "integrity": "sha512-VWIhBdy0eOhlvpxOOMecBCHMpjx7lWVZcYpSzjD4dSdxptzI9TBR/cQEh057HL8+7jQKTLs+uCtezY/9VoveCA==",
+ "dev": true,
+ "requires": {
+ "lodash.capitalize": "^4.2.1",
+ "lodash.escaperegexp": "^4.1.2",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.isstring": "^4.0.1",
+ "lodash.uniqby": "^4.7.0"
+ }
+ },
+ "java-properties": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-0.2.10.tgz",
+ "integrity": "sha512-CpKJh9VRNhS+XqZtg1UMejETGEiqwCGDC/uwPEEQwc2nfdbSm73SIE29TplG2gLYuBOOTNDqxzG6A9NtEPLt0w==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
+ "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "jsonparse": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
+ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ },
+ "lcid": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+ "dev": true,
+ "requires": {
+ "invert-kv": "^2.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "dependencies": {
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ }
+ }
+ },
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+ "dev": true
+ },
+ "lodash.assign": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
+ "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
+ "dev": true
+ },
+ "lodash.capitalize": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz",
+ "integrity": "sha1-+CbJtOKoUR2E46yinbBeGk87cqk=",
+ "dev": true
+ },
+ "lodash.escaperegexp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz",
+ "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=",
+ "dev": true
+ },
+ "lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
+ "dev": true
+ },
+ "lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=",
+ "dev": true
+ },
+ "lodash.toarray": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
+ "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=",
+ "dev": true
+ },
+ "lodash.uniqby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz",
+ "integrity": "sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=",
+ "dev": true
+ },
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "dev": true,
+ "requires": {
+ "currently-unhandled": "^0.4.1",
+ "signal-exit": "^3.0.0"
+ }
+ },
+ "macos-release": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-1.1.0.tgz",
+ "integrity": "sha512-mmLbumEYMi5nXReB9js3WGsB8UE6cDBWyIO62Z4DNx6GbRhDxHNjA1MlzSpJ2S2KM1wyiPRA0d19uHWYYvMHjA==",
+ "dev": true
+ },
+ "map-age-cleaner": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz",
+ "integrity": "sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==",
+ "dev": true,
+ "requires": {
+ "p-defer": "^1.0.0"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true
+ },
+ "map-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
+ "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=",
+ "dev": true
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "dev": true,
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "marked": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-0.5.0.tgz",
+ "integrity": "sha512-UhjmkCWKu1SS/BIePL2a59BMJ7V42EYtTfksodPRXzPEGEph3Inp5dylseqt+KbU9Jglsx8xcMKmlumfJMBXAA==",
+ "dev": true
+ },
+ "marked-terminal": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-3.1.1.tgz",
+ "integrity": "sha512-7UBFww1rdx0w9HehLMCVYa8/AxXaiDigDfMsJcj82/wgLQG9cj+oiMAVlJpeWD57VFJY2OYY+bKeEVIjIlxi+w==",
+ "dev": true,
+ "requires": {
+ "cardinal": "^2.1.1",
+ "chalk": "^2.4.1",
+ "cli-table": "^0.3.1",
+ "lodash.assign": "^4.2.0",
+ "node-emoji": "^1.4.1"
+ }
+ },
+ "mem": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz",
+ "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==",
+ "dev": true,
+ "requires": {
+ "map-age-cleaner": "^0.1.1",
+ "mimic-fn": "^1.0.0",
+ "p-is-promise": "^1.1.0"
+ }
+ },
+ "meow": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
+ "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^4.0.0",
+ "decamelize-keys": "^1.0.0",
+ "loud-rejection": "^1.0.0",
+ "minimist": "^1.1.3",
+ "minimist-options": "^3.0.1",
+ "normalize-package-data": "^2.3.4",
+ "read-pkg-up": "^3.0.0",
+ "redent": "^2.0.0",
+ "trim-newlines": "^2.0.0"
+ },
+ "dependencies": {
+ "read-pkg-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
+ "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^3.0.0"
+ }
+ }
+ }
+ },
+ "merge2": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz",
+ "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "mime": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz",
+ "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==",
+ "dev": true
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "minimist-options": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz",
+ "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
+ "dev": true,
+ "requires": {
+ "arrify": "^1.0.1",
+ "is-plain-obj": "^1.1.0"
+ }
+ },
+ "mixin-deep": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
+ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "modify-values": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
+ "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "nerf-dart": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz",
+ "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=",
+ "dev": true
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "node-emoji": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.8.1.tgz",
+ "integrity": "sha512-+ktMAh1Jwas+TnGodfCfjUbJKoANqPaJFN0z0iqh41eqD8dvguNzcitVSBSVK1pidz0AqGbLKcoVuVLRVZ/aVg==",
+ "dev": true,
+ "requires": {
+ "lodash.toarray": "^4.4.0"
+ }
+ },
+ "node-fetch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.2.0.tgz",
+ "integrity": "sha512-OayFWziIxiHY8bCUyLX6sTpDH8Jsbp4FfYd1j1f7vZyfgkcOnAyM4oQR16f8a0s7Gl/viMGRey8eScYk4V4EZA==",
+ "dev": true
+ },
+ "normalize-package-data": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "is-builtin-module": "^1.0.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "normalize-url": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz",
+ "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==",
+ "dev": true
+ },
+ "npm": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/npm/-/npm-6.4.1.tgz",
+ "integrity": "sha512-mXJL1NTVU136PtuopXCUQaNWuHlXCTp4McwlSW8S9/Aj8OEPAlSBgo8og7kJ01MjCDrkmqFQTvN5tTEhBMhXQg==",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.3.4",
+ "abbrev": "~1.1.1",
+ "ansicolors": "~0.3.2",
+ "ansistyles": "~0.1.3",
+ "aproba": "~1.2.0",
+ "archy": "~1.0.0",
+ "bin-links": "^1.1.2",
+ "bluebird": "~3.5.1",
+ "byte-size": "^4.0.3",
+ "cacache": "^11.2.0",
+ "call-limit": "~1.1.0",
+ "chownr": "~1.0.1",
+ "ci-info": "^1.4.0",
+ "cli-columns": "^3.1.2",
+ "cli-table3": "^0.5.0",
+ "cmd-shim": "~2.0.2",
+ "columnify": "~1.5.4",
+ "config-chain": "~1.1.11",
+ "debuglog": "*",
+ "detect-indent": "~5.0.0",
+ "detect-newline": "^2.1.0",
+ "dezalgo": "~1.0.3",
+ "editor": "~1.0.0",
+ "figgy-pudding": "^3.4.1",
+ "find-npm-prefix": "^1.0.2",
+ "fs-vacuum": "~1.2.10",
+ "fs-write-stream-atomic": "~1.0.10",
+ "gentle-fs": "^2.0.1",
+ "glob": "~7.1.2",
+ "graceful-fs": "~4.1.11",
+ "has-unicode": "~2.0.1",
+ "hosted-git-info": "^2.7.1",
+ "iferr": "^1.0.2",
+ "imurmurhash": "*",
+ "inflight": "~1.0.6",
+ "inherits": "~2.0.3",
+ "ini": "^1.3.5",
+ "init-package-json": "^1.10.3",
+ "is-cidr": "^2.0.6",
+ "json-parse-better-errors": "^1.0.2",
+ "lazy-property": "~1.0.0",
+ "libcipm": "^2.0.2",
+ "libnpmhook": "^4.0.1",
+ "libnpx": "^10.2.0",
+ "lock-verify": "^2.0.2",
+ "lockfile": "^1.0.4",
+ "lodash._baseindexof": "*",
+ "lodash._baseuniq": "~4.6.0",
+ "lodash._bindcallback": "*",
+ "lodash._cacheindexof": "*",
+ "lodash._createcache": "*",
+ "lodash._getnative": "*",
+ "lodash.clonedeep": "~4.5.0",
+ "lodash.restparam": "*",
+ "lodash.union": "~4.6.0",
+ "lodash.uniq": "~4.5.0",
+ "lodash.without": "~4.4.0",
+ "lru-cache": "^4.1.3",
+ "meant": "~1.0.1",
+ "mississippi": "^3.0.0",
+ "mkdirp": "~0.5.1",
+ "move-concurrently": "^1.0.1",
+ "node-gyp": "^3.8.0",
+ "nopt": "~4.0.1",
+ "normalize-package-data": "~2.4.0",
+ "npm-audit-report": "^1.3.1",
+ "npm-cache-filename": "~1.0.2",
+ "npm-install-checks": "~3.0.0",
+ "npm-lifecycle": "^2.1.0",
+ "npm-package-arg": "^6.1.0",
+ "npm-packlist": "^1.1.11",
+ "npm-pick-manifest": "^2.1.0",
+ "npm-profile": "^3.0.2",
+ "npm-registry-client": "^8.6.0",
+ "npm-registry-fetch": "^1.1.0",
+ "npm-user-validate": "~1.0.0",
+ "npmlog": "~4.1.2",
+ "once": "~1.4.0",
+ "opener": "^1.5.0",
+ "osenv": "^0.1.5",
+ "pacote": "^8.1.6",
+ "path-is-inside": "~1.0.2",
+ "promise-inflight": "~1.0.1",
+ "qrcode-terminal": "^0.12.0",
+ "query-string": "^6.1.0",
+ "qw": "~1.0.1",
+ "read": "~1.0.7",
+ "read-cmd-shim": "~1.0.1",
+ "read-installed": "~4.0.3",
+ "read-package-json": "^2.0.13",
+ "read-package-tree": "^5.2.1",
+ "readable-stream": "^2.3.6",
+ "readdir-scoped-modules": "*",
+ "request": "^2.88.0",
+ "retry": "^0.12.0",
+ "rimraf": "~2.6.2",
+ "safe-buffer": "^5.1.2",
+ "semver": "^5.5.0",
+ "sha": "~2.0.1",
+ "slide": "~1.1.6",
+ "sorted-object": "~2.0.1",
+ "sorted-union-stream": "~2.1.3",
+ "ssri": "^6.0.0",
+ "stringify-package": "^1.0.0",
+ "tar": "^4.4.6",
+ "text-table": "~0.2.0",
+ "tiny-relative-date": "^1.3.0",
+ "uid-number": "0.0.6",
+ "umask": "~1.1.0",
+ "unique-filename": "~1.1.0",
+ "unpipe": "~1.0.0",
+ "update-notifier": "^2.5.0",
+ "uuid": "^3.3.2",
+ "validate-npm-package-license": "^3.0.4",
+ "validate-npm-package-name": "~3.0.0",
+ "which": "^1.3.1",
+ "worker-farm": "^1.6.0",
+ "write-file-atomic": "^2.3.0"
+ },
+ "dependencies": {
+ "JSONStream": {
+ "version": "1.3.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "jsonparse": "^1.2.0",
+ "through": ">=2.2.7 <3"
+ }
+ },
+ "abbrev": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "agent-base": {
+ "version": "4.2.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "es6-promisify": "^5.0.0"
+ }
+ },
+ "agentkeepalive": {
+ "version": "3.4.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "humanize-ms": "^1.2.1"
+ }
+ },
+ "ajv": {
+ "version": "5.5.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "co": "^4.6.0",
+ "fast-deep-equal": "^1.0.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.3.0"
+ }
+ },
+ "ansi-align": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "string-width": "^2.0.0"
+ }
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "ansicolors": {
+ "version": "0.3.2",
+ "bundled": true,
+ "dev": true
+ },
+ "ansistyles": {
+ "version": "0.1.3",
+ "bundled": true,
+ "dev": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true
+ },
+ "archy": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "asap": {
+ "version": "2.0.6",
+ "bundled": true,
+ "dev": true
+ },
+ "asn1": {
+ "version": "0.2.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "bundled": true,
+ "dev": true
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "bundled": true,
+ "dev": true
+ },
+ "aws4": {
+ "version": "1.8.0",
+ "bundled": true,
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "bin-links": {
+ "version": "1.1.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.0",
+ "cmd-shim": "^2.0.2",
+ "gentle-fs": "^2.0.0",
+ "graceful-fs": "^4.1.11",
+ "write-file-atomic": "^2.3.0"
+ }
+ },
+ "block-stream": {
+ "version": "0.0.9",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.0"
+ }
+ },
+ "bluebird": {
+ "version": "3.5.1",
+ "bundled": true,
+ "dev": true
+ },
+ "boxen": {
+ "version": "1.3.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ansi-align": "^2.0.0",
+ "camelcase": "^4.0.0",
+ "chalk": "^2.0.1",
+ "cli-boxes": "^1.0.0",
+ "string-width": "^2.0.0",
+ "term-size": "^1.2.0",
+ "widest-line": "^2.0.0"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "buffer-from": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "builtin-modules": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "builtins": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "byline": {
+ "version": "5.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "byte-size": {
+ "version": "4.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "cacache": {
+ "version": "11.2.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.1",
+ "chownr": "^1.0.1",
+ "figgy-pudding": "^3.1.0",
+ "glob": "^7.1.2",
+ "graceful-fs": "^4.1.11",
+ "lru-cache": "^4.1.3",
+ "mississippi": "^3.0.0",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.6.2",
+ "ssri": "^6.0.0",
+ "unique-filename": "^1.1.0",
+ "y18n": "^4.0.0"
+ }
+ },
+ "call-limit": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "capture-stack-trace": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "bundled": true,
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "chownr": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "ci-info": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true
+ },
+ "cidr-regex": {
+ "version": "2.0.9",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ip-regex": "^2.1.0"
+ }
+ },
+ "cli-boxes": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "cli-columns": {
+ "version": "3.1.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "string-width": "^2.0.0",
+ "strip-ansi": "^3.0.1"
+ }
+ },
+ "cli-table3": {
+ "version": "0.5.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "colors": "^1.1.2",
+ "object-assign": "^4.1.0",
+ "string-width": "^2.1.1"
+ }
+ },
+ "cliui": {
+ "version": "4.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "string-width": "^2.1.1",
+ "strip-ansi": "^4.0.0",
+ "wrap-ansi": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "clone": {
+ "version": "1.0.4",
+ "bundled": true,
+ "dev": true
+ },
+ "cmd-shim": {
+ "version": "2.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "mkdirp": "~0.5.0"
+ }
+ },
+ "co": {
+ "version": "4.6.0",
+ "bundled": true,
+ "dev": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "color-convert": {
+ "version": "1.9.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "color-name": "^1.1.1"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "bundled": true,
+ "dev": true
+ },
+ "colors": {
+ "version": "1.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "columnify": {
+ "version": "1.5.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "strip-ansi": "^3.0.0",
+ "wcwidth": "^1.0.0"
+ }
+ },
+ "combined-stream": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "config-chain": {
+ "version": "1.1.11",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ini": "^1.3.4",
+ "proto-list": "~1.2.1"
+ }
+ },
+ "configstore": {
+ "version": "3.1.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "dot-prop": "^4.1.0",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^1.0.0",
+ "unique-string": "^1.0.0",
+ "write-file-atomic": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
+ }
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "copy-concurrently": {
+ "version": "1.0.5",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1",
+ "fs-write-stream-atomic": "^1.0.8",
+ "iferr": "^0.1.5",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.0"
+ },
+ "dependencies": {
+ "iferr": {
+ "version": "0.1.5",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "create-error-class": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "capture-stack-trace": "^1.0.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "5.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "crypto-random-string": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "cyclist": {
+ "version": "0.2.2",
+ "bundled": true,
+ "dev": true
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "debug": {
+ "version": "3.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "debuglog": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "bundled": true,
+ "dev": true
+ },
+ "deep-extend": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true
+ },
+ "defaults": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "clone": "^1.0.2"
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "detect-indent": {
+ "version": "5.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "detect-newline": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "dezalgo": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "asap": "^2.0.0",
+ "wrappy": "1"
+ }
+ },
+ "dot-prop": {
+ "version": "4.2.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-obj": "^1.0.0"
+ }
+ },
+ "dotenv": {
+ "version": "5.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "duplexer3": {
+ "version": "0.1.4",
+ "bundled": true,
+ "dev": true
+ },
+ "duplexify": {
+ "version": "3.6.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "ecc-jsbn": {
+ "version": "0.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "editor": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "encoding": {
+ "version": "0.1.12",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "iconv-lite": "~0.4.13"
+ }
+ },
+ "end-of-stream": {
+ "version": "1.4.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "err-code": {
+ "version": "1.1.2",
+ "bundled": true,
+ "dev": true
+ },
+ "errno": {
+ "version": "0.1.7",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "prr": "~1.0.1"
+ }
+ },
+ "es6-promise": {
+ "version": "4.2.4",
+ "bundled": true,
+ "dev": true
+ },
+ "es6-promisify": {
+ "version": "5.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "es6-promise": "^4.0.3"
+ }
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "bundled": true,
+ "dev": true
+ },
+ "execa": {
+ "version": "0.7.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "extend": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "bundled": true,
+ "dev": true
+ },
+ "fast-deep-equal": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "figgy-pudding": {
+ "version": "3.4.1",
+ "bundled": true,
+ "dev": true
+ },
+ "find-npm-prefix": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "flush-write-stream": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.4"
+ }
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "bundled": true,
+ "dev": true
+ },
+ "form-data": {
+ "version": "2.3.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "from2": {
+ "version": "2.3.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
+ }
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "fs-vacuum": {
+ "version": "1.2.10",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "path-is-inside": "^1.0.1",
+ "rimraf": "^2.5.2"
+ }
+ },
+ "fs-write-stream-atomic": {
+ "version": "1.0.10",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "iferr": "^0.1.5",
+ "imurmurhash": "^0.1.4",
+ "readable-stream": "1 || 2"
+ },
+ "dependencies": {
+ "iferr": {
+ "version": "0.1.5",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "fstream": {
+ "version": "1.0.11",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "inherits": "~2.0.0",
+ "mkdirp": ">=0.5 0",
+ "rimraf": "2"
+ }
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ },
+ "dependencies": {
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ }
+ }
+ },
+ "genfun": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "gentle-fs": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.2",
+ "fs-vacuum": "^1.2.10",
+ "graceful-fs": "^4.1.11",
+ "iferr": "^0.1.5",
+ "mkdirp": "^0.5.1",
+ "path-is-inside": "^1.0.2",
+ "read-cmd-shim": "^1.0.1",
+ "slide": "^1.1.6"
+ },
+ "dependencies": {
+ "iferr": {
+ "version": "0.1.5",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "get-caller-file": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "global-dirs": {
+ "version": "0.1.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ini": "^1.3.4"
+ }
+ },
+ "got": {
+ "version": "6.7.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "create-error-class": "^3.0.0",
+ "duplexer3": "^0.1.4",
+ "get-stream": "^3.0.0",
+ "is-redirect": "^1.0.0",
+ "is-retry-allowed": "^1.0.0",
+ "is-stream": "^1.0.0",
+ "lowercase-keys": "^1.0.0",
+ "safe-buffer": "^5.0.1",
+ "timed-out": "^4.0.0",
+ "unzip-response": "^2.0.1",
+ "url-parse-lax": "^1.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "bundled": true,
+ "dev": true
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "har-validator": {
+ "version": "5.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ajv": "^5.3.0",
+ "har-schema": "^2.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "hosted-git-info": {
+ "version": "2.7.1",
+ "bundled": true,
+ "dev": true
+ },
+ "http-cache-semantics": {
+ "version": "3.8.1",
+ "bundled": true,
+ "dev": true
+ },
+ "http-proxy-agent": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "agent-base": "4",
+ "debug": "3.1.0"
+ }
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ }
+ },
+ "https-proxy-agent": {
+ "version": "2.2.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "agent-base": "^4.1.0",
+ "debug": "^3.1.0"
+ }
+ },
+ "humanize-ms": {
+ "version": "1.2.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ms": "^2.0.0"
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.23",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "iferr": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "import-lazy": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "bundled": true,
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "bundled": true,
+ "dev": true
+ },
+ "init-package-json": {
+ "version": "1.10.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.1",
+ "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0",
+ "promzard": "^0.3.0",
+ "read": "~1.0.1",
+ "read-package-json": "1 || 2",
+ "semver": "2.x || 3.x || 4 || 5",
+ "validate-npm-package-license": "^3.0.1",
+ "validate-npm-package-name": "^3.0.0"
+ }
+ },
+ "invert-kv": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "ip": {
+ "version": "1.1.5",
+ "bundled": true,
+ "dev": true
+ },
+ "ip-regex": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "is-builtin-module": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "builtin-modules": "^1.0.0"
+ }
+ },
+ "is-ci": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ci-info": "^1.0.0"
+ }
+ },
+ "is-cidr": {
+ "version": "2.0.6",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "cidr-regex": "^2.0.8"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "is-installed-globally": {
+ "version": "0.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "global-dirs": "^0.1.0",
+ "is-path-inside": "^1.0.0"
+ }
+ },
+ "is-npm": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "is-obj": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "is-path-inside": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "path-is-inside": "^1.0.1"
+ }
+ },
+ "is-redirect": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "is-retry-allowed": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "bundled": true,
+ "dev": true
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "bundled": true,
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.3.1",
+ "bundled": true,
+ "dev": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "jsonparse": {
+ "version": "1.3.1",
+ "bundled": true,
+ "dev": true
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ }
+ },
+ "latest-version": {
+ "version": "3.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "package-json": "^4.0.0"
+ }
+ },
+ "lazy-property": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "lcid": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "invert-kv": "^1.0.0"
+ }
+ },
+ "libcipm": {
+ "version": "2.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "bin-links": "^1.1.2",
+ "bluebird": "^3.5.1",
+ "find-npm-prefix": "^1.0.2",
+ "graceful-fs": "^4.1.11",
+ "lock-verify": "^2.0.2",
+ "mkdirp": "^0.5.1",
+ "npm-lifecycle": "^2.0.3",
+ "npm-logical-tree": "^1.2.1",
+ "npm-package-arg": "^6.1.0",
+ "pacote": "^8.1.6",
+ "protoduck": "^5.0.0",
+ "read-package-json": "^2.0.13",
+ "rimraf": "^2.6.2",
+ "worker-farm": "^1.6.0"
+ }
+ },
+ "libnpmhook": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "figgy-pudding": "^3.1.0",
+ "npm-registry-fetch": "^3.0.0"
+ },
+ "dependencies": {
+ "npm-registry-fetch": {
+ "version": "3.1.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.1",
+ "figgy-pudding": "^3.1.0",
+ "lru-cache": "^4.1.2",
+ "make-fetch-happen": "^4.0.0",
+ "npm-package-arg": "^6.0.0"
+ }
+ }
+ }
+ },
+ "libnpx": {
+ "version": "10.2.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "dotenv": "^5.0.1",
+ "npm-package-arg": "^6.0.0",
+ "rimraf": "^2.6.2",
+ "safe-buffer": "^5.1.0",
+ "update-notifier": "^2.3.0",
+ "which": "^1.3.0",
+ "y18n": "^4.0.0",
+ "yargs": "^11.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "lock-verify": {
+ "version": "2.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "npm-package-arg": "^5.1.2 || 6",
+ "semver": "^5.4.1"
+ }
+ },
+ "lockfile": {
+ "version": "1.0.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "lodash._baseindexof": {
+ "version": "3.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "lodash._baseuniq": {
+ "version": "4.6.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "lodash._createset": "~4.0.0",
+ "lodash._root": "~3.0.0"
+ }
+ },
+ "lodash._bindcallback": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "lodash._cacheindexof": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "lodash._createcache": {
+ "version": "3.1.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "lodash._getnative": "^3.0.0"
+ }
+ },
+ "lodash._createset": {
+ "version": "4.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "lodash._getnative": {
+ "version": "3.9.1",
+ "bundled": true,
+ "dev": true
+ },
+ "lodash._root": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "lodash.clonedeep": {
+ "version": "4.5.0",
+ "bundled": true,
+ "dev": true
+ },
+ "lodash.restparam": {
+ "version": "3.6.1",
+ "bundled": true,
+ "dev": true
+ },
+ "lodash.union": {
+ "version": "4.6.0",
+ "bundled": true,
+ "dev": true
+ },
+ "lodash.uniq": {
+ "version": "4.5.0",
+ "bundled": true,
+ "dev": true
+ },
+ "lodash.without": {
+ "version": "4.4.0",
+ "bundled": true,
+ "dev": true
+ },
+ "lowercase-keys": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "4.1.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "make-dir": {
+ "version": "1.3.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "make-fetch-happen": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "agentkeepalive": "^3.4.1",
+ "cacache": "^11.0.1",
+ "http-cache-semantics": "^3.8.1",
+ "http-proxy-agent": "^2.1.0",
+ "https-proxy-agent": "^2.2.1",
+ "lru-cache": "^4.1.2",
+ "mississippi": "^3.0.0",
+ "node-fetch-npm": "^2.0.2",
+ "promise-retry": "^1.1.1",
+ "socks-proxy-agent": "^4.0.0",
+ "ssri": "^6.0.0"
+ }
+ },
+ "meant": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "mem": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "mime-db": {
+ "version": "1.35.0",
+ "bundled": true,
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.19",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "mime-db": "~1.35.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true,
+ "dev": true
+ },
+ "minipass": {
+ "version": "2.3.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ },
+ "dependencies": {
+ "yallist": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "minizlib": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "mississippi": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^3.0.0",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "move-concurrently": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1",
+ "copy-concurrently": "^1.0.0",
+ "fs-write-stream-atomic": "^1.0.8",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.3"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "mute-stream": {
+ "version": "0.0.7",
+ "bundled": true,
+ "dev": true
+ },
+ "node-fetch-npm": {
+ "version": "2.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "encoding": "^0.1.11",
+ "json-parse-better-errors": "^1.0.0",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "node-gyp": {
+ "version": "3.8.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "fstream": "^1.0.0",
+ "glob": "^7.0.3",
+ "graceful-fs": "^4.1.2",
+ "mkdirp": "^0.5.0",
+ "nopt": "2 || 3",
+ "npmlog": "0 || 1 || 2 || 3 || 4",
+ "osenv": "0",
+ "request": "^2.87.0",
+ "rimraf": "2",
+ "semver": "~5.3.0",
+ "tar": "^2.0.0",
+ "which": "1"
+ },
+ "dependencies": {
+ "nopt": {
+ "version": "3.0.6",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "abbrev": "1"
+ }
+ },
+ "semver": {
+ "version": "5.3.0",
+ "bundled": true,
+ "dev": true
+ },
+ "tar": {
+ "version": "2.2.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "block-stream": "*",
+ "fstream": "^1.0.2",
+ "inherits": "2"
+ }
+ }
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "normalize-package-data": {
+ "version": "2.4.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "is-builtin-module": "^1.0.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "npm-audit-report": {
+ "version": "1.3.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "cli-table3": "^0.5.0",
+ "console-control-strings": "^1.1.0"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.0.5",
+ "bundled": true,
+ "dev": true
+ },
+ "npm-cache-filename": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "npm-install-checks": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "semver": "^2.3.0 || 3.x || 4 || 5"
+ }
+ },
+ "npm-lifecycle": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "byline": "^5.0.0",
+ "graceful-fs": "^4.1.11",
+ "node-gyp": "^3.8.0",
+ "resolve-from": "^4.0.0",
+ "slide": "^1.1.6",
+ "uid-number": "0.0.6",
+ "umask": "^1.1.0",
+ "which": "^1.3.1"
+ }
+ },
+ "npm-logical-tree": {
+ "version": "1.2.1",
+ "bundled": true,
+ "dev": true
+ },
+ "npm-package-arg": {
+ "version": "6.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^2.6.0",
+ "osenv": "^0.1.5",
+ "semver": "^5.5.0",
+ "validate-npm-package-name": "^3.0.0"
+ }
+ },
+ "npm-packlist": {
+ "version": "1.1.11",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1"
+ }
+ },
+ "npm-pick-manifest": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "npm-package-arg": "^6.0.0",
+ "semver": "^5.4.1"
+ }
+ },
+ "npm-profile": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.2 || 2",
+ "make-fetch-happen": "^2.5.0 || 3 || 4"
+ }
+ },
+ "npm-registry-client": {
+ "version": "8.6.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "concat-stream": "^1.5.2",
+ "graceful-fs": "^4.1.6",
+ "normalize-package-data": "~1.0.1 || ^2.0.0",
+ "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0",
+ "npmlog": "2 || ^3.1.0 || ^4.0.0",
+ "once": "^1.3.3",
+ "request": "^2.74.0",
+ "retry": "^0.10.0",
+ "safe-buffer": "^5.1.1",
+ "semver": "2 >=2.2.1 || 3.x || 4 || 5",
+ "slide": "^1.1.3",
+ "ssri": "^5.2.4"
+ },
+ "dependencies": {
+ "retry": {
+ "version": "0.10.1",
+ "bundled": true,
+ "dev": true
+ },
+ "ssri": {
+ "version": "5.3.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.1"
+ }
+ }
+ }
+ },
+ "npm-registry-fetch": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.1",
+ "figgy-pudding": "^2.0.1",
+ "lru-cache": "^4.1.2",
+ "make-fetch-happen": "^3.0.0",
+ "npm-package-arg": "^6.0.0",
+ "safe-buffer": "^5.1.1"
+ },
+ "dependencies": {
+ "cacache": {
+ "version": "10.0.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.1",
+ "chownr": "^1.0.1",
+ "glob": "^7.1.2",
+ "graceful-fs": "^4.1.11",
+ "lru-cache": "^4.1.1",
+ "mississippi": "^2.0.0",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.6.2",
+ "ssri": "^5.2.4",
+ "unique-filename": "^1.1.0",
+ "y18n": "^4.0.0"
+ },
+ "dependencies": {
+ "mississippi": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^2.0.1",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
+ }
+ }
+ }
+ },
+ "figgy-pudding": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "make-fetch-happen": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "agentkeepalive": "^3.4.1",
+ "cacache": "^10.0.4",
+ "http-cache-semantics": "^3.8.1",
+ "http-proxy-agent": "^2.1.0",
+ "https-proxy-agent": "^2.2.0",
+ "lru-cache": "^4.1.2",
+ "mississippi": "^3.0.0",
+ "node-fetch-npm": "^2.0.2",
+ "promise-retry": "^1.1.1",
+ "socks-proxy-agent": "^3.0.1",
+ "ssri": "^5.2.4"
+ }
+ },
+ "pump": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "smart-buffer": {
+ "version": "1.1.15",
+ "bundled": true,
+ "dev": true
+ },
+ "socks": {
+ "version": "1.1.10",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ip": "^1.1.4",
+ "smart-buffer": "^1.0.13"
+ }
+ },
+ "socks-proxy-agent": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "agent-base": "^4.1.0",
+ "socks": "^1.1.10"
+ }
+ },
+ "ssri": {
+ "version": "5.3.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.1"
+ }
+ }
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "npm-user-validate": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "oauth-sign": {
+ "version": "0.9.0",
+ "bundled": true,
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "opener": {
+ "version": "1.5.0",
+ "bundled": true,
+ "dev": true
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "os-locale": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "execa": "^0.7.0",
+ "lcid": "^1.0.0",
+ "mem": "^1.1.0"
+ }
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "p-limit": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "package-json": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "got": "^6.7.1",
+ "registry-auth-token": "^3.0.1",
+ "registry-url": "^3.0.3",
+ "semver": "^5.1.0"
+ }
+ },
+ "pacote": {
+ "version": "8.1.6",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.1",
+ "cacache": "^11.0.2",
+ "get-stream": "^3.0.0",
+ "glob": "^7.1.2",
+ "lru-cache": "^4.1.3",
+ "make-fetch-happen": "^4.0.1",
+ "minimatch": "^3.0.4",
+ "minipass": "^2.3.3",
+ "mississippi": "^3.0.0",
+ "mkdirp": "^0.5.1",
+ "normalize-package-data": "^2.4.0",
+ "npm-package-arg": "^6.1.0",
+ "npm-packlist": "^1.1.10",
+ "npm-pick-manifest": "^2.1.0",
+ "osenv": "^0.1.5",
+ "promise-inflight": "^1.0.1",
+ "promise-retry": "^1.1.1",
+ "protoduck": "^5.0.0",
+ "rimraf": "^2.6.2",
+ "safe-buffer": "^5.1.2",
+ "semver": "^5.5.0",
+ "ssri": "^6.0.0",
+ "tar": "^4.4.3",
+ "unique-filename": "^1.1.0",
+ "which": "^1.3.0"
+ }
+ },
+ "parallel-transform": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "cyclist": "~0.2.2",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "pify": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "prepend-http": {
+ "version": "1.0.4",
+ "bundled": true,
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "promise-inflight": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "promise-retry": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "err-code": "^1.0.0",
+ "retry": "^0.10.0"
+ },
+ "dependencies": {
+ "retry": {
+ "version": "0.10.1",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "promzard": {
+ "version": "0.3.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "read": "1"
+ }
+ },
+ "proto-list": {
+ "version": "1.2.4",
+ "bundled": true,
+ "dev": true
+ },
+ "protoduck": {
+ "version": "5.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "genfun": "^4.0.1"
+ }
+ },
+ "prr": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "psl": {
+ "version": "1.1.29",
+ "bundled": true,
+ "dev": true
+ },
+ "pump": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "pumpify": {
+ "version": "1.5.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "duplexify": "^3.6.0",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
+ },
+ "dependencies": {
+ "pump": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ }
+ }
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "bundled": true,
+ "dev": true
+ },
+ "qrcode-terminal": {
+ "version": "0.12.0",
+ "bundled": true,
+ "dev": true
+ },
+ "qs": {
+ "version": "6.5.2",
+ "bundled": true,
+ "dev": true
+ },
+ "query-string": {
+ "version": "6.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "decode-uri-component": "^0.2.0",
+ "strict-uri-encode": "^2.0.0"
+ }
+ },
+ "qw": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "rc": {
+ "version": "1.2.7",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "deep-extend": "^0.5.1",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "read": {
+ "version": "1.0.7",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "mute-stream": "~0.0.4"
+ }
+ },
+ "read-cmd-shim": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2"
+ }
+ },
+ "read-installed": {
+ "version": "4.0.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "debuglog": "^1.0.1",
+ "graceful-fs": "^4.1.2",
+ "read-package-json": "^2.0.0",
+ "readdir-scoped-modules": "^1.0.0",
+ "semver": "2 || 3 || 4 || 5",
+ "slide": "~1.1.3",
+ "util-extend": "^1.0.1"
+ }
+ },
+ "read-package-json": {
+ "version": "2.0.13",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.1",
+ "graceful-fs": "^4.1.2",
+ "json-parse-better-errors": "^1.0.1",
+ "normalize-package-data": "^2.0.0",
+ "slash": "^1.0.0"
+ }
+ },
+ "read-package-tree": {
+ "version": "5.2.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "debuglog": "^1.0.1",
+ "dezalgo": "^1.0.0",
+ "once": "^1.3.0",
+ "read-package-json": "^2.0.0",
+ "readdir-scoped-modules": "^1.0.0"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "readdir-scoped-modules": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "debuglog": "^1.0.1",
+ "dezalgo": "^1.0.0",
+ "graceful-fs": "^4.1.2",
+ "once": "^1.3.0"
+ }
+ },
+ "registry-auth-token": {
+ "version": "3.3.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "rc": "^1.1.6",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "registry-url": {
+ "version": "3.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "rc": "^1.0.1"
+ }
+ },
+ "request": {
+ "version": "2.88.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.8.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.0",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "~2.4.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.3.2"
+ }
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "require-main-filename": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "retry": {
+ "version": "0.12.0",
+ "bundled": true,
+ "dev": true
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "glob": "^7.0.5"
+ }
+ },
+ "run-queue": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "bundled": true,
+ "dev": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "bundled": true,
+ "dev": true
+ },
+ "semver": {
+ "version": "5.5.0",
+ "bundled": true,
+ "dev": true
+ },
+ "semver-diff": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "semver": "^5.0.3"
+ }
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "sha": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "slash": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "slide": {
+ "version": "1.1.6",
+ "bundled": true,
+ "dev": true
+ },
+ "smart-buffer": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "socks": {
+ "version": "2.2.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ip": "^1.1.5",
+ "smart-buffer": "^4.0.1"
+ }
+ },
+ "socks-proxy-agent": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "agent-base": "~4.2.0",
+ "socks": "~2.2.0"
+ }
+ },
+ "sorted-object": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "sorted-union-stream": {
+ "version": "2.1.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "from2": "^1.3.0",
+ "stream-iterate": "^1.1.0"
+ },
+ "dependencies": {
+ "from2": {
+ "version": "1.3.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.1",
+ "readable-stream": "~1.1.10"
+ }
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "spdx-correct": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-exceptions": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "sshpk": {
+ "version": "1.14.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
+ }
+ },
+ "ssri": {
+ "version": "6.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "stream-each": {
+ "version": "1.2.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "stream-iterate": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.1.5",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "stream-shift": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "strict-uri-encode": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "stringify-package": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.4.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "tar": {
+ "version": "4.4.6",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "chownr": "^1.0.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.3.3",
+ "minizlib": "^1.1.0",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.2"
+ },
+ "dependencies": {
+ "yallist": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "term-size": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "execa": "^0.7.0"
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "bundled": true,
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "bundled": true,
+ "dev": true
+ },
+ "through2": {
+ "version": "2.0.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.1.5",
+ "xtend": "~4.0.1"
+ }
+ },
+ "timed-out": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "tiny-relative-date": {
+ "version": "1.3.0",
+ "bundled": true,
+ "dev": true
+ },
+ "tough-cookie": {
+ "version": "2.4.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "psl": "^1.1.24",
+ "punycode": "^1.4.1"
+ }
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "bundled": true,
+ "dev": true
+ },
+ "uid-number": {
+ "version": "0.0.6",
+ "bundled": true,
+ "dev": true
+ },
+ "umask": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "unique-filename": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "unique-slug": "^2.0.0"
+ }
+ },
+ "unique-slug": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "imurmurhash": "^0.1.4"
+ }
+ },
+ "unique-string": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "crypto-random-string": "^1.0.0"
+ }
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "unzip-response": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "update-notifier": {
+ "version": "2.5.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "boxen": "^1.2.1",
+ "chalk": "^2.0.1",
+ "configstore": "^3.0.0",
+ "import-lazy": "^2.1.0",
+ "is-ci": "^1.0.10",
+ "is-installed-globally": "^0.1.0",
+ "is-npm": "^1.0.0",
+ "latest-version": "^3.0.0",
+ "semver-diff": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
+ }
+ },
+ "url-parse-lax": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "prepend-http": "^1.0.1"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "util-extend": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "uuid": {
+ "version": "3.3.2",
+ "bundled": true,
+ "dev": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "validate-npm-package-name": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "builtins": "^1.0.3"
+ }
+ },
+ "verror": {
+ "version": "1.10.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
+ "wcwidth": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "wide-align": {
+ "version": "1.1.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.2"
+ },
+ "dependencies": {
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ }
+ }
+ },
+ "widest-line": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "string-width": "^2.1.1"
+ }
+ },
+ "worker-farm": {
+ "version": "1.6.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "errno": "~0.1.7"
+ }
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "write-file-atomic": {
+ "version": "2.3.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "xdg-basedir": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "y18n": {
+ "version": "4.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "bundled": true,
+ "dev": true
+ },
+ "yargs": {
+ "version": "11.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "cliui": "^4.0.0",
+ "decamelize": "^1.1.1",
+ "find-up": "^2.1.0",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^2.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1",
+ "yargs-parser": "^9.0.2"
+ },
+ "dependencies": {
+ "y18n": {
+ "version": "3.2.1",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "9.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "camelcase": "^4.1.0"
+ }
+ }
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "dev": true,
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "dev": true,
+ "requires": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.0"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "dev": true,
+ "requires": {
+ "minimist": "~0.0.1",
+ "wordwrap": "~0.0.2"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.10",
+ "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
+ "dev": true
+ }
+ }
+ },
+ "os-locale": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz",
+ "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==",
+ "dev": true,
+ "requires": {
+ "execa": "^0.10.0",
+ "lcid": "^2.0.0",
+ "mem": "^4.0.0"
+ },
+ "dependencies": {
+ "execa": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz",
+ "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "dev": true
+ }
+ }
+ },
+ "os-name": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/os-name/-/os-name-2.0.1.tgz",
+ "integrity": "sha1-uaOGNhwXrjohc27wWZQFyajF3F4=",
+ "dev": true,
+ "requires": {
+ "macos-release": "^1.0.0",
+ "win-release": "^1.0.0"
+ }
+ },
+ "p-defer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+ "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
+ "dev": true
+ },
+ "p-filter": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-1.0.0.tgz",
+ "integrity": "sha1-Yp0xcVAgnI/VCLoTdxPvS7kg6ds=",
+ "dev": true,
+ "requires": {
+ "p-map": "^1.0.0"
+ }
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "dev": true
+ },
+ "p-is-promise": {
+ "version": "1.1.0",
+ "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
+ "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ },
+ "dependencies": {
+ "p-limit": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
+ "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
+ "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
+ "dev": true
+ }
+ }
+ },
+ "p-map": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
+ "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
+ "dev": true
+ },
+ "p-reduce": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz",
+ "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=",
+ "dev": true
+ },
+ "p-retry": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-2.0.0.tgz",
+ "integrity": "sha512-ZbCuzAmiwJ45q4evp/IG9D+5MUllGSUeCWwPt3j/tdYSi1KPkSD+46uqmAA1LhccDhOXv8kYZKNb8x78VflzfA==",
+ "dev": true,
+ "requires": {
+ "retry": "^0.12.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ },
+ "parse-github-url": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz",
+ "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==",
+ "dev": true
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "parse-url": {
+ "version": "1.3.11",
+ "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-1.3.11.tgz",
+ "integrity": "sha1-V8FUKKuKiSsfQ4aWRccR0OFEtVQ=",
+ "dev": true,
+ "requires": {
+ "is-ssh": "^1.3.0",
+ "protocols": "^1.4.0"
+ }
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "dev": true
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "pkg-conf": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz",
+ "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "load-json-file": "^4.0.0"
+ }
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+ "dev": true
+ },
+ "protocols": {
+ "version": "1.4.6",
+ "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.6.tgz",
+ "integrity": "sha1-+LsmPqG1/Xp2BNJri+Ob13Z4v4o=",
+ "dev": true
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+ "dev": true
+ },
+ "quick-lru": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
+ "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=",
+ "dev": true
+ },
+ "rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dev": true,
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ }
+ },
+ "read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz",
+ "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0",
+ "read-pkg": "^3.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "redent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
+ "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
+ "dev": true,
+ "requires": {
+ "indent-string": "^3.0.0",
+ "strip-indent": "^2.0.0"
+ }
+ },
+ "redeyed": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz",
+ "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=",
+ "dev": true,
+ "requires": {
+ "esprima": "~4.0.0"
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "registry-auth-token": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
+ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
+ "dev": true,
+ "requires": {
+ "rc": "^1.1.6",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "repeat-element": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "dev": true
+ },
+ "require-main-filename": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+ "dev": true
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+ "dev": true
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true
+ },
+ "retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
+ "dev": true
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "dev": true,
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ },
+ "semantic-release": {
+ "version": "15.9.16",
+ "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-15.9.16.tgz",
+ "integrity": "sha512-5RWqMFwDBXzIaNGUdnJxI4aCd4DtKtdc+5ZNjNWXABEmkimZVuuzZhMaTVNhHYfSuVUqWG9GuATEKhjlVoTzfQ==",
+ "dev": true,
+ "requires": {
+ "@semantic-release/commit-analyzer": "^6.0.0",
+ "@semantic-release/error": "^2.2.0",
+ "@semantic-release/github": "^5.0.0",
+ "@semantic-release/npm": "^5.0.1",
+ "@semantic-release/release-notes-generator": "^7.0.0",
+ "aggregate-error": "^1.0.0",
+ "cosmiconfig": "^5.0.1",
+ "debug": "^4.0.0",
+ "env-ci": "^3.0.0",
+ "execa": "^1.0.0",
+ "figures": "^2.0.0",
+ "find-versions": "^2.0.0",
+ "get-stream": "^4.0.0",
+ "git-log-parser": "^1.2.0",
+ "git-url-parse": "^10.0.1",
+ "hook-std": "^1.1.0",
+ "hosted-git-info": "^2.7.1",
+ "lodash": "^4.17.4",
+ "marked": "^0.5.0",
+ "marked-terminal": "^3.0.0",
+ "p-locate": "^3.0.0",
+ "p-reduce": "^1.0.0",
+ "read-pkg-up": "^4.0.0",
+ "resolve-from": "^4.0.0",
+ "semver": "^5.4.1",
+ "signale": "^1.2.1",
+ "yargs": "^12.0.0"
+ }
+ },
+ "semver": {
+ "version": "5.5.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz",
+ "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==",
+ "dev": true
+ },
+ "semver-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz",
+ "integrity": "sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=",
+ "dev": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true
+ },
+ "set-value": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
+ "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
+ "signale": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/signale/-/signale-1.3.0.tgz",
+ "integrity": "sha512-TyFhsQ9wZDYDfsPqWMyjCxsDoMwfpsT0130Mce7wDiVCSDdtWSg83dOqoj8aGpGCs3n1YPcam6sT1OFPuGT/OQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.3.2",
+ "figures": "^2.0.0",
+ "pkg-conf": "^2.1.0"
+ }
+ },
+ "slash": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+ "dev": true
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "requires": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.2.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "source-map-resolve": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
+ "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+ "dev": true,
+ "requires": {
+ "atob": "^2.1.1",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+ "dev": true
+ },
+ "spawn-error-forwarder": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz",
+ "integrity": "sha1-Gv2Uc46ZmwNG17n8NzvlXgdXcCk=",
+ "dev": true
+ },
+ "spdx-correct": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz",
+ "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==",
+ "dev": true,
+ "requires": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-exceptions": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz",
+ "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==",
+ "dev": true
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
+ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+ "dev": true,
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz",
+ "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==",
+ "dev": true
+ },
+ "split": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
+ "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+ "dev": true,
+ "requires": {
+ "through": "2"
+ }
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ }
+ },
+ "split2": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz",
+ "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==",
+ "dev": true,
+ "requires": {
+ "through2": "^2.0.2"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "dev": true,
+ "requires": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "stream-combiner2": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
+ "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=",
+ "dev": true,
+ "requires": {
+ "duplexer2": "~0.1.0",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "dev": true
+ },
+ "strip-indent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
+ "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "text-extensions": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.8.0.tgz",
+ "integrity": "sha512-mVzjRxuWnDKs/qH1rbOJEVHLlSX9kty9lpi7lMvLgU9S74mQ8/Ozg9UPcKxShh0qG2NZ+NyPOPpcZU4C1Eld9A==",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "through2": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
+ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.1.5",
+ "xtend": "~4.0.1"
+ }
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ },
+ "traverse": {
+ "version": "0.6.6",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz",
+ "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=",
+ "dev": true
+ },
+ "trim-newlines": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
+ "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=",
+ "dev": true
+ },
+ "trim-off-newlines": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz",
+ "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "3.4.9",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
+ "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "commander": "~2.17.1",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "union-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
+ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^0.4.3"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "set-value": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
+ "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.1",
+ "to-object-path": "^0.3.0"
+ }
+ }
+ }
+ },
+ "universal-user-agent": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-2.0.1.tgz",
+ "integrity": "sha512-vz+heWVydO0iyYAa65VHD7WZkYzhl7BeNVy4i54p4TF8OMiLSXdbuQe4hm+fmWAsL+rVibaQHXfhvkw3c1Ws2w==",
+ "dev": true,
+ "requires": {
+ "os-name": "^2.0.1"
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "dev": true,
+ "requires": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+ "dev": true
+ }
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "dev": true
+ },
+ "url-join": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz",
+ "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=",
+ "dev": true
+ },
+ "url-template": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz",
+ "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=",
+ "dev": true
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
+ "requires": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
+ },
+ "win-release": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz",
+ "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=",
+ "dev": true,
+ "requires": {
+ "semver": "^5.0.1"
+ }
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "xregexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz",
+ "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==",
+ "dev": true
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+ "dev": true
+ },
+ "y18n": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "12.0.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz",
+ "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==",
+ "dev": true,
+ "requires": {
+ "cliui": "^4.0.0",
+ "decamelize": "^2.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^3.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1 || ^4.0.0",
+ "yargs-parser": "^10.1.0"
+ },
+ "dependencies": {
+ "decamelize": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz",
+ "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==",
+ "dev": true,
+ "requires": {
+ "xregexp": "4.0.0"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
+ "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^4.1.0"
+ }
+ }
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/package.json b/lib/composer/felixfbecker/language-server-protocol/package.json
new file mode 100644
index 0000000000000..314301e0aee95
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/package.json
@@ -0,0 +1,15 @@
+{
+ "private": true,
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/felixfbecker/php-language-server-protocol"
+ },
+ "release": {
+ "verifyConditions": "@semantic-release/github",
+ "prepare": [],
+ "publish": "@semantic-release/github"
+ },
+ "devDependencies": {
+ "semantic-release": "^15.9.16"
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/ClientCapabilities.php b/lib/composer/felixfbecker/language-server-protocol/src/ClientCapabilities.php
new file mode 100644
index 0000000000000..335bf68aa3771
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/ClientCapabilities.php
@@ -0,0 +1,34 @@
+xfilesProvider = $xfilesProvider;
+ $this->xcontentProvider = $xcontentProvider;
+ $this->xcacheProvider = $xcacheProvider;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/CodeActionContext.php b/lib/composer/felixfbecker/language-server-protocol/src/CodeActionContext.php
new file mode 100644
index 0000000000000..ec87380158bc0
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/CodeActionContext.php
@@ -0,0 +1,25 @@
+diagnostics = $diagnostics;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/CodeLens.php b/lib/composer/felixfbecker/language-server-protocol/src/CodeLens.php
new file mode 100644
index 0000000000000..6a863ad2f5a8a
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/CodeLens.php
@@ -0,0 +1,42 @@
+range = $range;
+ $this->command = $command;
+ $this->data = $data;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/CodeLensOptions.php b/lib/composer/felixfbecker/language-server-protocol/src/CodeLensOptions.php
new file mode 100644
index 0000000000000..7db0d4df1f862
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/CodeLensOptions.php
@@ -0,0 +1,21 @@
+resolveProvider = $resolveProvider;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/Command.php b/lib/composer/felixfbecker/language-server-protocol/src/Command.php
new file mode 100644
index 0000000000000..01664f0a8a695
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/Command.php
@@ -0,0 +1,39 @@
+title = $title;
+ $this->command = $command;
+ $this->arguments = $arguments;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/CompletionContext.php b/lib/composer/felixfbecker/language-server-protocol/src/CompletionContext.php
new file mode 100644
index 0000000000000..4cda4eb28c32f
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/CompletionContext.php
@@ -0,0 +1,30 @@
+triggerKind = $triggerKind;
+ $this->triggerCharacter = $triggerCharacter;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/CompletionItem.php b/lib/composer/felixfbecker/language-server-protocol/src/CompletionItem.php
new file mode 100644
index 0000000000000..0798fd50ec862
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/CompletionItem.php
@@ -0,0 +1,149 @@
+label = $label;
+ $this->kind = $kind;
+ $this->detail = $detail;
+ $this->documentation = $documentation;
+ $this->sortText = $sortText;
+ $this->filterText = $filterText;
+ $this->insertText = $insertText;
+ $this->textEdit = $textEdit;
+ $this->additionalTextEdits = $additionalTextEdits;
+ $this->command = $command;
+ $this->data = $data;
+ $this->insertTextFormat = $insertTextFormat;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/CompletionItemKind.php b/lib/composer/felixfbecker/language-server-protocol/src/CompletionItemKind.php
new file mode 100644
index 0000000000000..7de7a59c4e35b
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/CompletionItemKind.php
@@ -0,0 +1,70 @@
+items = $items;
+ $this->isIncomplete = $isIncomplete;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/CompletionOptions.php b/lib/composer/felixfbecker/language-server-protocol/src/CompletionOptions.php
new file mode 100644
index 0000000000000..43d44fe21e346
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/CompletionOptions.php
@@ -0,0 +1,30 @@
+resolveProvider = $resolveProvider;
+ $this->triggerCharacters = $triggerCharacters;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/CompletionTriggerKind.php b/lib/composer/felixfbecker/language-server-protocol/src/CompletionTriggerKind.php
new file mode 100644
index 0000000000000..f84c48b5d177b
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/CompletionTriggerKind.php
@@ -0,0 +1,16 @@
+range = $range;
+ $this->rangeLength = $rangeLength;
+ $this->text = $text;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/DependencyReference.php b/lib/composer/felixfbecker/language-server-protocol/src/DependencyReference.php
new file mode 100644
index 0000000000000..afb6d30d4b8c1
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/DependencyReference.php
@@ -0,0 +1,27 @@
+attributes = $attributes ?? new \stdClass;
+ $this->hints = $hints;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/Diagnostic.php b/lib/composer/felixfbecker/language-server-protocol/src/Diagnostic.php
new file mode 100644
index 0000000000000..41615fa4b3a70
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/Diagnostic.php
@@ -0,0 +1,63 @@
+message = $message;
+ $this->range = $range;
+ $this->code = $code;
+ $this->severity = $severity;
+ $this->source = $source;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/DiagnosticSeverity.php b/lib/composer/felixfbecker/language-server-protocol/src/DiagnosticSeverity.php
new file mode 100644
index 0000000000000..d11ed95d4cc20
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/DiagnosticSeverity.php
@@ -0,0 +1,26 @@
+range = $range;
+ $this->kind = $kind;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/DocumentHighlightKind.php b/lib/composer/felixfbecker/language-server-protocol/src/DocumentHighlightKind.php
new file mode 100644
index 0000000000000..21c5001e9fa02
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/DocumentHighlightKind.php
@@ -0,0 +1,24 @@
+firstTriggerCharacter = $firstTriggerCharacter;
+ $this->moreTriggerCharacter = $moreTriggerCharacter;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/ErrorCode.php b/lib/composer/felixfbecker/language-server-protocol/src/ErrorCode.php
new file mode 100644
index 0000000000000..ffbc075550eda
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/ErrorCode.php
@@ -0,0 +1,17 @@
+uri = $uri;
+ $this->type = $type;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/FormattingOptions.php b/lib/composer/felixfbecker/language-server-protocol/src/FormattingOptions.php
new file mode 100644
index 0000000000000..fe77dce5db232
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/FormattingOptions.php
@@ -0,0 +1,31 @@
+tabSize = $tabSize;
+ $this->insertSpaces = $insertSpaces;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/Hover.php b/lib/composer/felixfbecker/language-server-protocol/src/Hover.php
new file mode 100644
index 0000000000000..d7b5a65363cae
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/Hover.php
@@ -0,0 +1,33 @@
+contents = $contents;
+ $this->range = $range;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/InitializeResult.php b/lib/composer/felixfbecker/language-server-protocol/src/InitializeResult.php
new file mode 100644
index 0000000000000..557b16683bfe4
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/InitializeResult.php
@@ -0,0 +1,21 @@
+capabilities = $capabilities ?? new ServerCapabilities();
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/InsertTextFormat.php b/lib/composer/felixfbecker/language-server-protocol/src/InsertTextFormat.php
new file mode 100644
index 0000000000000..e3c7ae11054d9
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/InsertTextFormat.php
@@ -0,0 +1,25 @@
+uri = $uri;
+ $this->range = $range;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/MarkedString.php b/lib/composer/felixfbecker/language-server-protocol/src/MarkedString.php
new file mode 100644
index 0000000000000..c3ac254f04b1e
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/MarkedString.php
@@ -0,0 +1,22 @@
+language = $language;
+ $this->value = $value;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/MarkupContent.php b/lib/composer/felixfbecker/language-server-protocol/src/MarkupContent.php
new file mode 100644
index 0000000000000..f7d6dc8221062
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/MarkupContent.php
@@ -0,0 +1,50 @@
+kind = $kind;
+ $this->value = $value;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/MarkupKind.php b/lib/composer/felixfbecker/language-server-protocol/src/MarkupKind.php
new file mode 100644
index 0000000000000..962fb0318465e
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/MarkupKind.php
@@ -0,0 +1,23 @@
+title = $title;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/MessageType.php b/lib/composer/felixfbecker/language-server-protocol/src/MessageType.php
new file mode 100644
index 0000000000000..1d01540bdc187
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/MessageType.php
@@ -0,0 +1,29 @@
+name = $name;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/ParameterInformation.php b/lib/composer/felixfbecker/language-server-protocol/src/ParameterInformation.php
new file mode 100644
index 0000000000000..bb3db396b0a9d
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/ParameterInformation.php
@@ -0,0 +1,45 @@
+label = $label;
+ $this->documentation = $documentation;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/Position.php b/lib/composer/felixfbecker/language-server-protocol/src/Position.php
new file mode 100644
index 0000000000000..399f3fa67a1e2
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/Position.php
@@ -0,0 +1,65 @@
+line = $line;
+ $this->character = $character;
+ }
+
+ /**
+ * Compares this position to another position
+ * Returns
+ * - 0 if the positions match
+ * - a negative number if $this is before $position
+ * - a positive number otherwise
+ *
+ * @param Position $position
+ * @return int
+ */
+ public function compare(Position $position): int
+ {
+ if ($this->line === $position->line && $this->character === $position->character) {
+ return 0;
+ }
+
+ if ($this->line !== $position->line) {
+ return $this->line - $position->line;
+ }
+
+ return $this->character - $position->character;
+ }
+
+ /**
+ * Returns the offset of the position in a string
+ *
+ * @param string $content
+ * @return int
+ */
+ public function toOffset(string $content): int
+ {
+ $lines = explode("\n", $content);
+ $slice = array_slice($lines, 0, $this->line);
+ return (int) array_sum(array_map('strlen', $slice)) + count($slice) + $this->character;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/Range.php b/lib/composer/felixfbecker/language-server-protocol/src/Range.php
new file mode 100644
index 0000000000000..74f23935181f6
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/Range.php
@@ -0,0 +1,40 @@
+start = $start;
+ $this->end = $end;
+ }
+
+ /**
+ * Checks if a position is within the range
+ *
+ * @param Position $position
+ * @return bool
+ */
+ public function includes(Position $position): bool
+ {
+ return $this->start->compare($position) <= 0 && $this->end->compare($position) >= 0;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/ReferenceContext.php b/lib/composer/felixfbecker/language-server-protocol/src/ReferenceContext.php
new file mode 100644
index 0000000000000..caeb04119e43c
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/ReferenceContext.php
@@ -0,0 +1,18 @@
+includeDeclaration = $includeDeclaration;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/ReferenceInformation.php b/lib/composer/felixfbecker/language-server-protocol/src/ReferenceInformation.php
new file mode 100644
index 0000000000000..f5f76b7de5e0b
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/ReferenceInformation.php
@@ -0,0 +1,36 @@
+reference = $reference;
+ $this->symbol = $symbol;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/SaveOptions.php b/lib/composer/felixfbecker/language-server-protocol/src/SaveOptions.php
new file mode 100644
index 0000000000000..356252840a329
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/SaveOptions.php
@@ -0,0 +1,15 @@
+signatures = $signatures;
+ $this->activeSignature = $activeSignature;
+ $this->activeParameter = $activeParameter;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/SignatureHelpOptions.php b/lib/composer/felixfbecker/language-server-protocol/src/SignatureHelpOptions.php
new file mode 100644
index 0000000000000..7247452cacfa3
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/SignatureHelpOptions.php
@@ -0,0 +1,21 @@
+triggerCharacters = $triggerCharacters;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/SignatureInformation.php b/lib/composer/felixfbecker/language-server-protocol/src/SignatureInformation.php
new file mode 100644
index 0000000000000..f6c6e0f7bda27
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/SignatureInformation.php
@@ -0,0 +1,49 @@
+label = $label;
+ $this->parameters = $parameters;
+ $this->documentation = $documentation;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/SymbolDescriptor.php b/lib/composer/felixfbecker/language-server-protocol/src/SymbolDescriptor.php
new file mode 100644
index 0000000000000..7415ed15c594f
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/SymbolDescriptor.php
@@ -0,0 +1,34 @@
+fqsen = $fqsen;
+ $this->package = $package;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/SymbolInformation.php b/lib/composer/felixfbecker/language-server-protocol/src/SymbolInformation.php
new file mode 100644
index 0000000000000..4cf6654346d65
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/SymbolInformation.php
@@ -0,0 +1,52 @@
+name = $name;
+ $this->kind = $kind;
+ $this->location = $location;
+ $this->containerName = $containerName;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/SymbolKind.php b/lib/composer/felixfbecker/language-server-protocol/src/SymbolKind.php
new file mode 100644
index 0000000000000..b59eecae11bef
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/SymbolKind.php
@@ -0,0 +1,28 @@
+symbol = $symbol;
+ $this->location = $location;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/TextDocumentContentChangeEvent.php b/lib/composer/felixfbecker/language-server-protocol/src/TextDocumentContentChangeEvent.php
new file mode 100644
index 0000000000000..0336c733b84ce
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/TextDocumentContentChangeEvent.php
@@ -0,0 +1,38 @@
+range = $range;
+ $this->rangeLength = $rangeLength;
+ $this->text = $text;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/TextDocumentIdentifier.php b/lib/composer/felixfbecker/language-server-protocol/src/TextDocumentIdentifier.php
new file mode 100644
index 0000000000000..7478f7f6fa2a3
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/TextDocumentIdentifier.php
@@ -0,0 +1,21 @@
+uri = $uri;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/TextDocumentItem.php b/lib/composer/felixfbecker/language-server-protocol/src/TextDocumentItem.php
new file mode 100644
index 0000000000000..a5f1024dfd5b6
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/TextDocumentItem.php
@@ -0,0 +1,46 @@
+uri = $uri;
+ $this->languageId = $languageId;
+ $this->version = $version;
+ $this->text = $text;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/TextDocumentSyncKind.php b/lib/composer/felixfbecker/language-server-protocol/src/TextDocumentSyncKind.php
new file mode 100644
index 0000000000000..0adf634599a1c
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/TextDocumentSyncKind.php
@@ -0,0 +1,25 @@
+range = $range;
+ $this->newText = $newText;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/VersionedTextDocumentIdentifier.php b/lib/composer/felixfbecker/language-server-protocol/src/VersionedTextDocumentIdentifier.php
new file mode 100644
index 0000000000000..6232713ff8362
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/VersionedTextDocumentIdentifier.php
@@ -0,0 +1,19 @@
+version = $version;
+ }
+}
diff --git a/lib/composer/felixfbecker/language-server-protocol/src/WorkspaceEdit.php b/lib/composer/felixfbecker/language-server-protocol/src/WorkspaceEdit.php
new file mode 100644
index 0000000000000..4a918d82b4b64
--- /dev/null
+++ b/lib/composer/felixfbecker/language-server-protocol/src/WorkspaceEdit.php
@@ -0,0 +1,24 @@
+changes = $changes;
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/CHANGELOG.md b/lib/composer/friendsofphp/php-cs-fixer/CHANGELOG.md
new file mode 100644
index 0000000000000..40461ad0e139c
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/CHANGELOG.md
@@ -0,0 +1,3153 @@
+CHANGELOG for PHP CS Fixer
+==========================
+
+This file contains changelogs for stable releases only.
+
+Changelog for v2.16.3
+---------------------
+
+* bug #4915 Fix handling property PHPDocs with unsupported type (julienfalque)
+* minor #4916 Fix AppVeyor build (julienfalque)
+* minor #4917 CircleCI - Bump xcode to 11.4 (GrahamCampbell)
+* minor #4918 DX: do not fix ".phpt" files by default (kubawerlos)
+
+Changelog for v2.16.2
+---------------------
+
+* bug #3820 Braces - (re)indenting comment issues (SpacePossum)
+* bug #3911 PhpdocVarWithoutNameFixer - fix for properties only (dmvdbrugge)
+* bug #4601 ClassKeywordRemoveFixer - Fix for namespace (yassine-ah, kubawerlos)
+* bug #4630 FullyQualifiedStrictTypesFixer - Ignore partial class names which look like FQCNs (localheinz, SpacePossum)
+* bug #4661 ExplicitStringVariableFixer - variables pair if one is already explicit (kubawerlos)
+* bug #4675 NonPrintableCharacterFixer - fix for backslash and quotes when changing to escape sequences (kubawerlos)
+* bug #4678 TokensAnalyzer::isConstantInvocation - fix for importing multiple classes with single "use" (kubawerlos)
+* bug #4682 Fix handling array type declaration in properties (julienfalque)
+* bug #4685 Improve Symfony 5 compatibility (keradus)
+* bug #4688 TokensAnalyzer::isConstantInvocation - Fix detection for fully qualified return type (julienfalque)
+* bug #4689 DeclareStrictTypesFixer - fix for "strict_types" set to "0" (kubawerlos)
+* bug #4690 PhpdocVarAnnotationCorrectOrderFixer - fix for multiline `@var` without type (kubawerlos)
+* bug #4710 SingleTraitInsertPerStatement - fix formatting for multiline "use" (kubawerlos)
+* bug #4711 Ensure that files from "tests" directory in release are autoloaded (kubawerlos)
+* bug #4749 TokensAnalyze::isUnaryPredecessorOperator fix for CT::T_ARRAY_INDEX_C… (SpacePossum)
+* bug #4759 Add more priority cases (SpacePossum)
+* bug #4761 NoSuperfluousElseifFixer - handle single line (SpacePossum)
+* bug #4783 NoSuperfluousPhpdocTagsFixer - fix for really big PHPDoc (kubawerlos, mvorisek)
+* bug #4787 NoUnneededFinalMethodFixer - Mark as risky (SpacePossum)
+* bug #4795 OrderedClassElementsFixer - Fix (SpacePossum)
+* bug #4801 GlobalNamespaceImportFixer - fix docblock handling (gharlan)
+* bug #4804 TokensAnalyzer::isUnarySuccessorOperator fix for array curly braces (SpacePossum)
+* bug #4807 IncrementStyleFixer - handle after ")" (SpacePossum)
+* bug #4808 Modernize types casting fixer array curly (SpacePossum)
+* bug #4809 Fix "braces" and "method_argument_space" priority (julienfalque)
+* bug #4813 BracesFixer - fix invalid code generation on alternative syntax (SpacePossum)
+* bug #4822 fix 2 bugs in phpdoc_line_span (lmichelin)
+* bug #4823 ReturnAssignmentFixer - repeat fix (SpacePossum)
+* bug #4824 NoUnusedImportsFixer - SingleLineAfterImportsFixer - fix priority (SpacePossum)
+* bug #4825 GlobalNamespaceImportFixer - do not import global into global (SpacePossum)
+* bug #4829 YodaStyleFixer - fix precedence for T_MOD_EQUAL and T_COALESCE_EQUAL (SpacePossum)
+* bug #4830 TernaryToNullCoalescingFixer - handle yield from (SpacePossum)
+* bug #4835 Remove duplicate "function_to_constant" from RuleSet (SpacePossum)
+* bug #4840 LineEndingFixer - T_CLOSE_TAG support, StringLineEndingFixer - T_INLI… (SpacePossum)
+* bug #4846 FunctionsAnalyzer - better isGlobalFunctionCall detection (SpacePossum)
+* bug #4852 Priority issues (SpacePossum)
+* bug #4870 HeaderCommentFixer - do not remove class docs (gharlan)
+* bug #4871 NoExtraBlankLinesFixer - handle cases on same line (SpacePossum)
+* bug #4895 Fix conflict between header_comment and declare_strict_types (BackEndTea, julienfalque)
+* bug #4911 PhpdocSeparationFixer - fix regression with lack of next line (keradus)
+* feature #4742 FunctionToConstantFixer - get_class($this) support (SpacePossum)
+* minor #4377 CommentsAnalyzer - fix for declare before header comment (kubawerlos)
+* minor #4636 DX: do not check for PHPDBG when collecting coverage (kubawerlos)
+* minor #4644 Docs: add info about "-vv..." (voku)
+* minor #4691 Run Travis CI on stable PHP 7.4 (kubawerlos)
+* minor #4693 Increase Travis CI Git clone depth (julienfalque)
+* minor #4699 LineEndingFixer - handle "\r\r\n" (kubawerlos)
+* minor #4703 NoSuperfluousPhpdocTagsFixer,PhpdocAddMissingParamAnnotationFixer - p… (SpacePossum)
+* minor #4707 Fix typos (TysonAndre)
+* minor #4712 NoBlankLinesAfterPhpdocFixer — Do not strip newline between docblock and use statements (mollierobbert)
+* minor #4715 Enhancement: Install ergebnis/composer-normalize via Phive (localheinz)
+* minor #4722 Fix Circle CI build (julienfalque)
+* minor #4724 DX: Simplify installing PCOV (kubawerlos)
+* minor #4736 NoUnusedImportsFixer - do not match variable name as import (SpacePossum)
+* minor #4746 NoSuperfluousPhpdocTagsFixer - Remove for typed properties (PHP 7.4) (ruudk)
+* minor #4753 Do not apply any text/.git filters to fixtures (mvorisek)
+* minor #4757 Test $expected is used before $input (SpacePossum)
+* minor #4758 Autoreview the PHPDoc of *Fixer::getPriority based on the priority map (SpacePossum)
+* minor #4765 Add test on some return types (SpacePossum)
+* minor #4766 Remove false test skip (SpacePossum)
+* minor #4767 Remove useless priority comments (kubawerlos)
+* minor #4769 DX: add missing priority tests (kubawerlos)
+* minor #4772 NoUnneededFinalMethodFixer - update description (kubawerlos)
+* minor #4774 DX: simplify Utils::camelCaseToUnderscore (kubawerlos)
+* minor #4781 NoUnneededCurlyBracesFixer - handle namespaces (SpacePossum)
+* minor #4784 Travis CI - Use multiple keyservers (ktomk)
+* minor #4785 Improve static analysis (enumag)
+* minor #4788 Configurable fixers code sample (SpacePossum)
+* minor #4791 Increase PHPStan level to 3 (julienfalque)
+* minor #4797 clean ups (SpacePossum)
+* minor #4803 FinalClassFixer - Doctrine\ORM\Mapping as ORM alias should not be required (localheinz)
+* minor #4839 2.15 - clean ups (SpacePossum)
+* minor #4842 ReturnAssignmentFixer - Support more cases (julienfalque)
+* minor #4843 NoSuperfluousPhpdocTagsFixer - fix typo in option description (OndraM)
+* minor #4844 Same requirements for descriptions (SpacePossum)
+* minor #4849 Increase PHPStan level to 5 (julienfalque)
+* minor #4850 Fix phpstan (SpacePossum)
+* minor #4857 Fixed the unit tests (GrahamCampbell)
+* minor #4865 Use latest xcode image (GrahamCampbell)
+* minor #4892 CombineNestedDirnameFixer - Add space after comma (julienfalque)
+* minor #4894 DX: PhpdocToParamTypeFixer - improve typing (keradus)
+* minor #4898 FixerTest - yield the data in AutoReview (Nyholm)
+* minor #4899 Fix exception message format for fabbot.io (SpacePossum)
+* minor #4905 Support composer v2 installed.json files (GrahamCampbell)
+* minor #4906 CI: use Composer stable release for AppVeyor (kubawerlos)
+* minor #4909 DX: HeaderCommentFixer - use non-aliased version of option name in code (keradus)
+* minor #4912 CI: Fix AppVeyor integration (keradus)
+
+Changelog for v2.16.1
+---------------------
+
+* bug #4476 FunctionsAnalyzer - add "isTheSameClassCall" for correct verifying of function calls (kubawerlos)
+* bug #4605 PhpdocToParamTypeFixer - cover more cases (keradus, julienfalque)
+* bug #4626 FinalPublicMethodForAbstractClassFixer - Do not attempt to mark abstract public methods as final (localheinz)
+* bug #4632 NullableTypeDeclarationForDefaultNullValueFixer - fix for not lowercase "null" (kubawerlos)
+* bug #4638 Ensure compatibility with PHP 7.4 (julienfalque)
+* bug #4641 Add typed properties test to VisibilityRequiredFixerTest (GawainLynch, julienfalque)
+* bug #4654 ArrayIndentationFixer - Fix array indentation for multiline values (julienfalque)
+* bug #4660 TokensAnalyzer::isConstantInvocation - fix for extending multiple interfaces (kubawerlos)
+* bug #4668 TokensAnalyzer::isConstantInvocation - fix for interface method return type (kubawerlos)
+* minor #4608 Allow Symfony 5 components (l-vo)
+* minor #4622 Disallow PHP 7.4 failures on Travis CI (julienfalque)
+* minor #4623 README - Mark up as code (localheinz)
+* minor #4637 PHP 7.4 integration test (GawainLynch, julienfalque)
+* minor #4643 DX: Update .gitattributes and move ci-integration.sh to root of the project (kubawerlos, keradus)
+* minor #4645 Check PHP extensions on runtime (kubawerlos)
+* minor #4655 Improve docs - README (mvorisek)
+* minor #4662 DX: generate headers in README.rst (kubawerlos)
+* minor #4669 Enable execution under PHP 7.4 (keradus)
+* minor #4670 TravisTest - rewrite tests to allow last supported by tool PHP version to be snapshot (keradus)
+* minor #4671 TravisTest - rewrite tests to allow last supported by tool PHP version to be snapshot (keradus)
+
+Changelog for v2.16.0
+---------------------
+
+* feature #3810 PhpdocLineSpanFixer - Introduction (BackEndTea)
+* feature #3928 Add FinalPublicMethodForAbstractClassFixer (Slamdunk)
+* feature #4000 FinalStaticAccessFixer - Introduction (ntzm)
+* feature #4275 Issue #4274: Let lowercase_constants directive to be configurable. (drupol)
+* feature #4355 GlobalNamespaceImportFixer - Introduction (gharlan)
+* feature #4358 SelfStaticAccessorFixer - Introduction (SpacePossum)
+* feature #4385 CommentToPhpdocFixer - allow to ignore tags (kubawerlos)
+* feature #4401 Add NullableTypeDeclarationForDefaultNullValueFixer (HypeMC)
+* feature #4452 Add SingleLineThrowFixer (kubawerlos)
+* feature #4500 NoSuperfluousPhpdocTags - Add remove_inheritdoc option (julienfalque)
+* feature #4505 NoSuperfluousPhpdocTagsFixer - allow params that aren't on the signature (azjezz)
+* feature #4531 PhpdocAlignFixer - add "property-read" and "property-write" to allowed tags (kubawerlos)
+* feature #4583 Phpdoc to param type fixer rebase (jg-development)
+* minor #4033 Raise deprecation warnings on usage of deprecated aliases (ntzm)
+* minor #4423 DX: update branch alias (keradus)
+* minor #4537 SelfStaticAccessor - extend itests (keradus)
+* minor #4607 Configure no_superfluous_phpdoc_tags for Symfony (keradus)
+* minor #4618 DX: fix usage of deprecated options (0x450x6c)
+* minor #4619 Fix PHP 7.3 strict mode warnings (keradus)
+* minor #4621 Add single_line_throw to Symfony ruleset (keradus)
+
+Changelog for v2.15.7
+---------------------
+
+* bug #4915 Fix handling property PHPDocs with unsupported type (julienfalque)
+* minor #4916 Fix AppVeyor build (julienfalque)
+* minor #4917 CircleCI - Bump xcode to 11.4 (GrahamCampbell)
+* minor #4918 DX: do not fix ".phpt" files by default (kubawerlos)
+
+Changelog for v2.15.6
+---------------------
+
+* bug #3820 Braces - (re)indenting comment issues (SpacePossum)
+* bug #3911 PhpdocVarWithoutNameFixer - fix for properties only (dmvdbrugge)
+* bug #4601 ClassKeywordRemoveFixer - Fix for namespace (yassine-ah, kubawerlos)
+* bug #4630 FullyQualifiedStrictTypesFixer - Ignore partial class names which look like FQCNs (localheinz, SpacePossum)
+* bug #4661 ExplicitStringVariableFixer - variables pair if one is already explicit (kubawerlos)
+* bug #4675 NonPrintableCharacterFixer - fix for backslash and quotes when changing to escape sequences (kubawerlos)
+* bug #4678 TokensAnalyzer::isConstantInvocation - fix for importing multiple classes with single "use" (kubawerlos)
+* bug #4682 Fix handling array type declaration in properties (julienfalque)
+* bug #4685 Improve Symfony 5 compatibility (keradus)
+* bug #4688 TokensAnalyzer::isConstantInvocation - Fix detection for fully qualified return type (julienfalque)
+* bug #4689 DeclareStrictTypesFixer - fix for "strict_types" set to "0" (kubawerlos)
+* bug #4690 PhpdocVarAnnotationCorrectOrderFixer - fix for multiline `@var` without type (kubawerlos)
+* bug #4710 SingleTraitInsertPerStatement - fix formatting for multiline "use" (kubawerlos)
+* bug #4711 Ensure that files from "tests" directory in release are autoloaded (kubawerlos)
+* bug #4749 TokensAnalyze::isUnaryPredecessorOperator fix for CT::T_ARRAY_INDEX_C… (SpacePossum)
+* bug #4759 Add more priority cases (SpacePossum)
+* bug #4761 NoSuperfluousElseifFixer - handle single line (SpacePossum)
+* bug #4783 NoSuperfluousPhpdocTagsFixer - fix for really big PHPDoc (kubawerlos, mvorisek)
+* bug #4787 NoUnneededFinalMethodFixer - Mark as risky (SpacePossum)
+* bug #4795 OrderedClassElementsFixer - Fix (SpacePossum)
+* bug #4804 TokensAnalyzer::isUnarySuccessorOperator fix for array curly braces (SpacePossum)
+* bug #4807 IncrementStyleFixer - handle after ")" (SpacePossum)
+* bug #4808 Modernize types casting fixer array curly (SpacePossum)
+* bug #4809 Fix "braces" and "method_argument_space" priority (julienfalque)
+* bug #4813 BracesFixer - fix invalid code generation on alternative syntax (SpacePossum)
+* bug #4823 ReturnAssignmentFixer - repeat fix (SpacePossum)
+* bug #4824 NoUnusedImportsFixer - SingleLineAfterImportsFixer - fix priority (SpacePossum)
+* bug #4829 YodaStyleFixer - fix precedence for T_MOD_EQUAL and T_COALESCE_EQUAL (SpacePossum)
+* bug #4830 TernaryToNullCoalescingFixer - handle yield from (SpacePossum)
+* bug #4835 Remove duplicate "function_to_constant" from RuleSet (SpacePossum)
+* bug #4840 LineEndingFixer - T_CLOSE_TAG support, StringLineEndingFixer - T_INLI… (SpacePossum)
+* bug #4846 FunctionsAnalyzer - better isGlobalFunctionCall detection (SpacePossum)
+* bug #4852 Priority issues (SpacePossum)
+* bug #4870 HeaderCommentFixer - do not remove class docs (gharlan)
+* bug #4871 NoExtraBlankLinesFixer - handle cases on same line (SpacePossum)
+* bug #4895 Fix conflict between header_comment and declare_strict_types (BackEndTea, julienfalque)
+* bug #4911 PhpdocSeparationFixer - fix regression with lack of next line (keradus)
+* feature #4742 FunctionToConstantFixer - get_class($this) support (SpacePossum)
+* minor #4377 CommentsAnalyzer - fix for declare before header comment (kubawerlos)
+* minor #4636 DX: do not check for PHPDBG when collecting coverage (kubawerlos)
+* minor #4644 Docs: add info about "-vv..." (voku)
+* minor #4691 Run Travis CI on stable PHP 7.4 (kubawerlos)
+* minor #4693 Increase Travis CI Git clone depth (julienfalque)
+* minor #4699 LineEndingFixer - handle "\r\r\n" (kubawerlos)
+* minor #4703 NoSuperfluousPhpdocTagsFixer,PhpdocAddMissingParamAnnotationFixer - p… (SpacePossum)
+* minor #4707 Fix typos (TysonAndre)
+* minor #4712 NoBlankLinesAfterPhpdocFixer — Do not strip newline between docblock and use statements (mollierobbert)
+* minor #4715 Enhancement: Install ergebnis/composer-normalize via Phive (localheinz)
+* minor #4722 Fix Circle CI build (julienfalque)
+* minor #4724 DX: Simplify installing PCOV (kubawerlos)
+* minor #4736 NoUnusedImportsFixer - do not match variable name as import (SpacePossum)
+* minor #4746 NoSuperfluousPhpdocTagsFixer - Remove for typed properties (PHP 7.4) (ruudk)
+* minor #4753 Do not apply any text/.git filters to fixtures (mvorisek)
+* minor #4757 Test $expected is used before $input (SpacePossum)
+* minor #4758 Autoreview the PHPDoc of *Fixer::getPriority based on the priority map (SpacePossum)
+* minor #4765 Add test on some return types (SpacePossum)
+* minor #4766 Remove false test skip (SpacePossum)
+* minor #4767 Remove useless priority comments (kubawerlos)
+* minor #4769 DX: add missing priority tests (kubawerlos)
+* minor #4772 NoUnneededFinalMethodFixer - update description (kubawerlos)
+* minor #4774 DX: simplify Utils::camelCaseToUnderscore (kubawerlos)
+* minor #4781 NoUnneededCurlyBracesFixer - handle namespaces (SpacePossum)
+* minor #4784 Travis CI - Use multiple keyservers (ktomk)
+* minor #4785 Improve static analysis (enumag)
+* minor #4788 Configurable fixers code sample (SpacePossum)
+* minor #4791 Increase PHPStan level to 3 (julienfalque)
+* minor #4797 clean ups (SpacePossum)
+* minor #4803 FinalClassFixer - Doctrine\ORM\Mapping as ORM alias should not be required (localheinz)
+* minor #4839 2.15 - clean ups (SpacePossum)
+* minor #4842 ReturnAssignmentFixer - Support more cases (julienfalque)
+* minor #4844 Same requirements for descriptions (SpacePossum)
+* minor #4849 Increase PHPStan level to 5 (julienfalque)
+* minor #4857 Fixed the unit tests (GrahamCampbell)
+* minor #4865 Use latest xcode image (GrahamCampbell)
+* minor #4892 CombineNestedDirnameFixer - Add space after comma (julienfalque)
+* minor #4898 FixerTest - yield the data in AutoReview (Nyholm)
+* minor #4899 Fix exception message format for fabbot.io (SpacePossum)
+* minor #4905 Support composer v2 installed.json files (GrahamCampbell)
+* minor #4906 CI: use Composer stable release for AppVeyor (kubawerlos)
+* minor #4909 DX: HeaderCommentFixer - use non-aliased version of option name in code (keradus)
+* minor #4912 CI: Fix AppVeyor integration (keradus)
+
+Changelog for v2.15.5
+---------------------
+
+* bug #4476 FunctionsAnalyzer - add "isTheSameClassCall" for correct verifying of function calls (kubawerlos)
+* bug #4641 Add typed properties test to VisibilityRequiredFixerTest (GawainLynch, julienfalque)
+* bug #4654 ArrayIndentationFixer - Fix array indentation for multiline values (julienfalque)
+* bug #4660 TokensAnalyzer::isConstantInvocation - fix for extending multiple interfaces (kubawerlos)
+* bug #4668 TokensAnalyzer::isConstantInvocation - fix for interface method return type (kubawerlos)
+* minor #4608 Allow Symfony 5 components (l-vo)
+* minor #4622 Disallow PHP 7.4 failures on Travis CI (julienfalque)
+* minor #4637 PHP 7.4 integration test (GawainLynch, julienfalque)
+* minor #4643 DX: Update .gitattributes and move ci-integration.sh to root of the project (kubawerlos, keradus)
+* minor #4645 Check PHP extensions on runtime (kubawerlos)
+* minor #4655 Improve docs - README (mvorisek)
+* minor #4662 DX: generate headers in README.rst (kubawerlos)
+* minor #4669 Enable execution under PHP 7.4 (keradus)
+* minor #4671 TravisTest - rewrite tests to allow last supported by tool PHP version to be snapshot (keradus)
+
+Changelog for v2.15.4
+---------------------
+
+* bug #4183 IndentationTypeFixer - fix handling 2 spaces indent (kubawerlos)
+* bug #4406 NoSuperfluousElseifFixer - fix invalid escape sequence in character class (remicollet, SpacePossum)
+* bug #4416 NoUnusedImports - Fix imports detected as used in namespaces (julienfalque, SpacePossum)
+* bug #4518 PhpUnitNoExpectationAnnotationFixer - fix handling expect empty exception message (ktomk)
+* bug #4548 HeredocIndentationFixer - remove whitespace in empty lines (gharlan)
+* bug #4556 ClassKeywordRemoveFixer - fix for self,static and parent keywords (kubawerlos)
+* bug #4572 TokensAnalyzer - handle nested anonymous classes (SpacePossum)
+* bug #4573 CombineConsecutiveIssetsFixer - fix stop based on precedence (SpacePossum)
+* bug #4577 Fix command exit code on lint error after fixing fix. (SpacePossum)
+* bug #4581 FunctionsAnalyzer: fix for comment in type (kubawerlos)
+* bug #4586 BracesFixer - handle dynamic static method call (SpacePossum)
+* bug #4594 Braces - fix both single line comment styles (SpacePossum)
+* bug #4609 PhpdocTypesOrderFixer - Prevent unexpected default value change (laurent35240)
+* minor #4458 Add PHPStan (julienfalque)
+* minor #4479 IncludeFixer - remove braces when the statement is wrapped in block (kubawerlos)
+* minor #4490 Allow running if installed as project specific (ticktackk)
+* minor #4517 Verify PCRE pattern before use (ktomk)
+* minor #4521 Remove superfluous leading backslash, closes 4520 (ktomk)
+* minor #4532 DX: ensure data providers are used (kubawerlos)
+* minor #4534 Redo PHP7.4 - Add "str_split" => "mb_str_split" mapping (keradus, Slamdunk)
+* minor #4536 DX: use PHIVE for dev tools (keradus)
+* minor #4538 Docs: update Cookbook (keradus)
+* minor #4541 Enhancement: Use default name property to configure command names (localheinz)
+* minor #4546 DX: removing unnecessary variable initialization (kubawerlos)
+* minor #4549 DX: use ::class whenever possible (keradus, kubawerlos)
+* minor #4550 DX: travis_retry for dev-tools install (ktomk, keradus)
+* minor #4559 Allow 7.4snapshot to fail due to a bug on it (kubawerlos)
+* minor #4563 GitlabReporter - fix report output (mjanser)
+* minor #4564 Move readme-update command to Section 3 (iwasherefirst2)
+* minor #4566 Update symfony ruleset (gharlan)
+* minor #4570 Command::execute() should always return an integer (derrabus)
+* minor #4580 Add suport for true/false return type hints. (SpacePossum)
+* minor #4584 Increase PHPStan level to 1 (julienfalque)
+* minor #4585 Fix deprecation notices (julienfalque)
+* minor #4587 Output details - Explain why a file was skipped (SpacePossum)
+* minor #4588 Fix STDIN test when path is one level deep (julienfalque)
+* minor #4589 PhpdocToReturnType - Add support for Foo[][] (SpacePossum)
+* minor #4593 Ensure compatibility with PHP 7.4 typed properties (julienfalque)
+* minor #4595 Import cannot be used after `::` so can be removed (SpacePossum)
+* minor #4596 Ensure compatibility with PHP 7.4 numeric literal separator (julienfalque)
+* minor #4597 Fix PHP 7.4 deprecation notices (julienfalque)
+* minor #4600 Ensure compatibility with PHP 7.4 arrow functions (julienfalque)
+* minor #4602 Ensure compatibility with PHP 7.4 spread operator in array expression (julienfalque)
+* minor #4603 Ensure compatibility with PHP 7.4 null coalescing assignment operator (julienfalque)
+* minor #4606 Configure no_superfluous_phpdoc_tags for Symfony (keradus)
+* minor #4610 Travis CI - Update known files list (julienfalque)
+* minor #4615 Remove workaround for dev-tools install reg. Phive (ktomk)
+
+Changelog for v2.15.3
+---------------------
+
+* bug #4533 Revert PHP7.4 - Add "str_split" => "mb_str_split" mapping (keradus)
+* minor #4264 DX: AutoReview - ensure Travis handle all needed PHP versions (keradus)
+* minor #4524 MethodArgumentSpaceFixerTest - make explicit configuration to prevent fail on configuration change (keradus)
+
+Changelog for v2.15.2
+---------------------
+
+* bug #4132 BlankLineAfterNamespaceFixer - do not remove indent, handle comments (kubawerlos)
+* bug #4384 MethodArgumentSpaceFixer - fix for on_multiline:ensure_fully_multiline with trailing comma in function call (kubawerlos)
+* bug #4404 FileLintingIterator - fix current value on end/invalid (SpacePossum)
+* bug #4421 FunctionTypehintSpaceFixer - Ensure single space between type declaration and parameter (localheinz)
+* bug #4436 MethodArgumentSpaceFixer - handle misplaced ) (keradus)
+* bug #4439 NoLeadingImportSlashFixer - Add space if needed (SpacePossum)
+* bug #4440 SimpleToComplexStringVariableFixer - Fix $ bug (dmvdbrugge)
+* bug #4453 Fix preg_match error on 7.4snapshot (kubawerlos)
+* bug #4461 IsNullFixer - fix null coalescing operator handling (linniksa)
+* bug #4467 ToolInfo - fix access to reference without checking existence (black-silence)
+* bug #4472 Fix non-static closure unbinding this on PHP 7.4 (kelunik)
+* minor #3726 Use Box 3 to build the PHAR (theofidry, keradus)
+* minor #4412 PHP 7.4 - Tests for support (SpacePossum)
+* minor #4431 DX: test that default config is not passed in RuleSet (kubawerlos)
+* minor #4433 DX: test to ensure @PHPUnitMigration rule sets are correctly defined (kubawerlos)
+* minor #4445 DX: static call of markTestSkippedOrFail (kubawerlos)
+* minor #4463 Add apostrophe to possessive "team's" (ChandlerSwift)
+* minor #4471 ReadmeCommandTest - use CommandTester (kubawerlos)
+* minor #4477 DX: control names of public methods in test's classes (kubawerlos)
+* minor #4483 NewWithBracesFixer - Fix object operator and curly brace open cases (SpacePossum)
+* minor #4484 fix typos in README (Sven Ludwig)
+* minor #4494 DX: Fix shell script syntax in order to fix Travis builds (drupol)
+* minor #4516 DX: Lock binary SCA tools versions (keradus)
+
+Changelog for v2.15.1
+---------------------
+
+* bug #4418 PhpUnitNamespacedFixer - properly translate classes which do not follow translation pattern (ktomk)
+* bug #4419 PhpUnitTestCaseStaticMethodCallsFixer - skip anonymous classes and lambda (SpacePossum)
+* bug #4420 MethodArgumentSpaceFixer - PHP7.3 trailing commas in function calls (SpacePossum)
+* minor #4345 Travis: PHP 7.4 isn't allowed to fail anymore (Slamdunk)
+* minor #4403 LowercaseStaticReferenceFixer - Fix invalid PHP version in example (HypeMC)
+* minor #4424 DX: cleanup of composer.json - no need for branch-alias (keradus)
+* minor #4425 DX: assertions are static, adjust custom assertions (keradus)
+* minor #4426 DX: handle deprecations of symfony/event-dispatcher:4.3 (keradus)
+* minor #4427 DX: stop using reserved T_FN in code samples (keradus)
+* minor #4428 DX: update dev-tools (keradus)
+* minor #4429 DX: MethodArgumentSpaceFixerTest - fix hidden merge conflict (keradus)
+
+Changelog for v2.15.0
+---------------------
+
+* feature #3927 Add FinalClassFixer (Slamdunk)
+* feature #3939 Add PhpUnitSizeClassFixer (Jefersson Nathan)
+* feature #3942 SimpleToComplexStringVariableFixer - Introduction (dmvdbrugge, SpacePossum)
+* feature #4113 OrderedInterfacesFixer - Introduction (dmvdbrugge)
+* feature #4121 SingleTraitInsertPerStatementFixer - Introduction (SpacePossum)
+* feature #4126 NativeFunctionTypeDeclarationCasingFixer - Introduction (SpacePossum)
+* feature #4167 PhpUnitMockShortWillReturnFixer - Introduction (michadam-pearson)
+* feature #4191 [7.3] NoWhitespaceBeforeCommaInArrayFixer - fix comma after heredoc-end (gharlan)
+* feature #4288 Add Gitlab Reporter (hco)
+* feature #4328 Add PhpUnitDedicateAssertInternalTypeFixer (Slamdunk)
+* feature #4341 [7.3] TrailingCommaInMultilineArrayFixer - fix comma after heredoc-end (gharlan)
+* feature #4342 [7.3] MethodArgumentSpaceFixer - fix comma after heredoc-end (gharlan)
+* minor #4112 NoSuperfluousPhpdocTagsFixer - Add missing code sample, groom tests (keradus, SpacePossum)
+* minor #4360 Add gitlab as output format in the README/help doc. (SpacePossum)
+* minor #4386 Add PhpUnitMockShortWillReturnFixer to @Symfony:risky rule set (kubawerlos)
+* minor #4398 New ruleset "@PHP73Migration" (gharlan)
+* minor #4399 Fix 2.15 line (keradus)
+
+Changelog for v2.14.6
+---------------------
+
+* bug #4533 Revert PHP7.4 - Add "str_split" => "mb_str_split" mapping (keradus)
+* minor #4264 DX: AutoReview - ensure Travis handle all needed PHP versions (keradus)
+* minor #4524 MethodArgumentSpaceFixerTest - make explicit configuration to prevent fail on configuration change (keradus)
+
+Changelog for v2.14.5
+---------------------
+
+* bug #4132 BlankLineAfterNamespaceFixer - do not remove indent, handle comments (kubawerlos)
+* bug #4384 MethodArgumentSpaceFixer - fix for on_multiline:ensure_fully_multiline with trailing comma in function call (kubawerlos)
+* bug #4404 FileLintingIterator - fix current value on end/invalid (SpacePossum)
+* bug #4421 FunctionTypehintSpaceFixer - Ensure single space between type declaration and parameter (localheinz)
+* bug #4436 MethodArgumentSpaceFixer - handle misplaced ) (keradus)
+* bug #4439 NoLeadingImportSlashFixer - Add space if needed (SpacePossum)
+* bug #4453 Fix preg_match error on 7.4snapshot (kubawerlos)
+* bug #4461 IsNullFixer - fix null coalescing operator handling (linniksa)
+* bug #4467 ToolInfo - fix access to reference without checking existence (black-silence)
+* bug #4472 Fix non-static closure unbinding this on PHP 7.4 (kelunik)
+* minor #3726 Use Box 3 to build the PHAR (theofidry, keradus)
+* minor #4412 PHP 7.4 - Tests for support (SpacePossum)
+* minor #4431 DX: test that default config is not passed in RuleSet (kubawerlos)
+* minor #4433 DX: test to ensure @PHPUnitMigration rule sets are correctly defined (kubawerlos)
+* minor #4445 DX: static call of markTestSkippedOrFail (kubawerlos)
+* minor #4463 Add apostrophe to possessive "team's" (ChandlerSwift)
+* minor #4471 ReadmeCommandTest - use CommandTester (kubawerlos)
+* minor #4477 DX: control names of public methods in test's classes (kubawerlos)
+* minor #4483 NewWithBracesFixer - Fix object operator and curly brace open cases (SpacePossum)
+* minor #4484 fix typos in README (Sven Ludwig)
+* minor #4494 DX: Fix shell script syntax in order to fix Travis builds (drupol)
+* minor #4516 DX: Lock binary SCA tools versions (keradus)
+
+Changelog for v2.14.4
+---------------------
+
+* bug #4418 PhpUnitNamespacedFixer - properly translate classes which do not follow translation pattern (ktomk)
+* bug #4419 PhpUnitTestCaseStaticMethodCallsFixer - skip anonymous classes and lambda (SpacePossum)
+* bug #4420 MethodArgumentSpaceFixer - PHP7.3 trailing commas in function calls (SpacePossum)
+* minor #4345 Travis: PHP 7.4 isn't allowed to fail anymore (Slamdunk)
+* minor #4403 LowercaseStaticReferenceFixer - Fix invalid PHP version in example (HypeMC)
+* minor #4425 DX: assertions are static, adjust custom assertions (keradus)
+* minor #4426 DX: handle deprecations of symfony/event-dispatcher:4.3 (keradus)
+* minor #4427 DX: stop using reserved T_FN in code samples (keradus)
+* minor #4428 DX: update dev-tools (keradus)
+
+Changelog for v2.14.3
+---------------------
+
+* bug #4298 NoTrailingWhitespaceInCommentFixer - fix for non-Unix line separators (kubawerlos)
+* bug #4303 FullyQualifiedStrictTypesFixer - Fix the short type detection when a question mark (nullable) is prefixing it. (drupol)
+* bug #4313 SelfAccessorFixer - fix for part qualified class name (kubawerlos, SpacePossum)
+* bug #4314 PhpUnitTestCaseStaticMethodCallsFixer - fix for having property with name as method to update (kubawerlos, SpacePossum)
+* bug #4316 NoUnsetCastFixer - Test for higher-precedence operators (SpacePossum)
+* bug #4327 TokensAnalyzer - add concat operator to list of binary operators (SpacePossum)
+* bug #4335 Cache - add indent and line ending to cache signature (dmvdbrugge)
+* bug #4344 VoidReturnFixer - handle yield from (SpacePossum)
+* bug #4346 BracesFixer - Do not pull close tag onto same line as a comment (SpacePossum)
+* bug #4350 StrictParamFixer - Don't detect functions in use statements (bolmstedt)
+* bug #4357 Fix short list syntax detection. (SpacePossum)
+* bug #4365 Fix output escaping of diff for text format when line is not changed (SpacePossum)
+* bug #4370 PhpUnitConstructFixer - Fix handle different casing (SpacePossum)
+* bug #4379 ExplicitStringVariableFixer - add test case for variable as an array key (kubawerlos, Slamdunk)
+* feature #4337 PhpUnitTestCaseStaticMethodCallsFixer - prepare for PHPUnit 8 (kubawerlos)
+* minor #3799 DX: php_unit_test_case_static_method_calls - use default config (keradus)
+* minor #4103 NoExtraBlankLinesFixer - fix candidate detection (SpacePossum)
+* minor #4245 LineEndingFixer - BracesFixer - Priority (dmvdbrugge)
+* minor #4325 Use lowercase mikey179/vfsStream in composer.json (lolli42)
+* minor #4336 Collect coverage with PCOV (kubawerlos)
+* minor #4338 Fix wording (kmvan, kubawerlos)
+* minor #4339 Change BracesFixer to avoid indenting PHP inline braces (alecgeatches)
+* minor #4340 Travis: build against 7.4snapshot instead of nightly (Slamdunk)
+* minor #4351 code grooming (SpacePossum)
+* minor #4353 Add more priority tests (SpacePossum)
+* minor #4364 DX: MethodChainingIndentationFixer - remove unneccesary loop (Sijun Zhu)
+* minor #4366 Unset the auxillary variable $a (GrahamCampbell)
+* minor #4368 Fixed TypeShortNameResolverTest::testResolver (GrahamCampbell)
+* minor #4380 PHP7.4 - Add "str_split" => "mb_str_split" mapping. (SpacePossum)
+* minor #4381 PHP7.4 - Add support for magic methods (un)serialize. (SpacePossum)
+* minor #4393 DX: add missing explicit return types (kubawerlos)
+
+Changelog for v2.14.2
+---------------------
+
+* minor #4306 DX: Drop HHVM conflict on Composer level to help Composer with HHVM compatibility, we still prevent HHVM on runtime (keradus)
+
+Changelog for v2.14.1
+---------------------
+
+* bug #4240 ModernizeTypesCastingFixer - fix for operators with higher precedence (kubawerlos)
+* bug #4254 PhpUnitDedicateAssertFixer - fix for count with additional operations (kubawerlos)
+* bug #4260 Psr0Fixer and Psr4Fixer - fix for multiple classes in file with anonymous class (kubawerlos)
+* bug #4262 FixCommand - fix help (keradus)
+* bug #4276 MethodChainingIndentationFixer, ArrayIndentationFixer - Fix priority issue (dmvdbrugge)
+* bug #4280 MethodArgumentSpaceFixer - Fix method argument alignment (Billz95)
+* bug #4286 IncrementStyleFixer - fix for static statement (kubawerlos)
+* bug #4291 ArrayIndentationFixer - Fix indentation after trailing spaces (julienfalque, keradus)
+* bug #4292 NoSuperfluousPhpdocTagsFixer - Make null only type not considered superfluous (julienfalque)
+* minor #4204 DX: Tokens - do not unregister/register found tokens when collection is not changing (kubawerlos)
+* minor #4235 DX: more specific @param types (kubawerlos)
+* minor #4263 DX: AppVeyor - bump PHP version (keradus)
+* minor #4293 Add official support for PHP 7.3 (keradus)
+* minor #4295 DX: MethodArgumentSpaceFixerTest - fix edge case for handling different line ending when only expected code is provided (keradus)
+* minor #4296 DX: cleanup testing with fixer config (keradus)
+* minor #4299 NativeFunctionInvocationFixer - add array_key_exists (deguif, keradus)
+* minor #4300 DX: cleanup testing with fixer config (keradus)
+
+Changelog for v2.14.0
+---------------------
+
+* bug #4220 NativeFunctionInvocationFixer - namespaced strict to remove backslash (kubawerlos)
+* feature #3881 Add PhpdocVarAnnotationCorrectOrderFixer (kubawerlos)
+* feature #3915 Add HeredocIndentationFixer (gharlan)
+* feature #4002 NoSuperfluousPhpdocTagsFixer - Allow `mixed` in superfluous PHPDoc by configuration (MortalFlesh)
+* feature #4030 Add get_required_files and user_error aliases (ntzm)
+* feature #4043 NativeFunctionInvocationFixer - add option to remove redundant backslashes (kubawerlos)
+* feature #4102 Add NoUnsetCastFixer (SpacePossum)
+* minor #4025 Add phpdoc_types_order rule to Symfony's ruleset (carusogabriel)
+* minor #4213 [7.3] PHP7.3 integration tests (SpacePossum)
+* minor #4233 Add official support for PHP 7.3 (keradus)
+
+Changelog for v2.13.3
+---------------------
+
+* bug #4216 Psr4Fixer - fix for multiple classy elements in file (keradus, kubawerlos)
+* bug #4217 Psr0Fixer - class with anonymous class (kubawerlos)
+* bug #4219 NativeFunctionCasingFixer - handle T_RETURN_REF (kubawerlos)
+* bug #4224 FunctionToConstantFixer - handle T_RETURN_REF (SpacePossum)
+* bug #4229 IsNullFixer - fix parenthesis not closed (guilliamxavier)
+* minor #4193 [7.3] CombineNestedDirnameFixer - support PHP 7.3 (kubawerlos)
+* minor #4198 [7.3] PowToExponentiationFixer - adding to PHP7.3 integration test (kubawerlos)
+* minor #4199 [7.3] MethodChainingIndentationFixer - add tests for PHP 7.3 (kubawerlos)
+* minor #4200 [7.3] ModernizeTypesCastingFixer - support PHP 7.3 (kubawerlos)
+* minor #4201 [7.3] MultilineWhitespaceBeforeSemicolonsFixer - add tests for PHP 7.3 (kubawerlos)
+* minor #4202 [7.3] ErrorSuppressionFixer - support PHP 7.3 (kubawerlos)
+* minor #4205 DX: PhpdocAlignFixer - refactor to use DocBlock (kubawerlos)
+* minor #4206 DX: enable multiline_whitespace_before_semicolons (keradus)
+* minor #4207 [7.3] RandomApiMigrationFixerTest - tests for 7.3 (SpacePossum)
+* minor #4208 [7.3] NativeFunctionCasingFixerTest - tests for 7.3 (SpacePossum)
+* minor #4209 [7.3] PhpUnitStrictFixerTest - tests for 7.3 (SpacePossum)
+* minor #4210 [7.3] PhpUnitConstructFixer - add test for PHP 7.3 (kubawerlos)
+* minor #4211 [7.3] PhpUnitDedicateAssertFixer - support PHP 7.3 (kubawerlos)
+* minor #4214 [7.3] NoUnsetOnPropertyFixerTest - tests for 7.3 (SpacePossum)
+* minor #4222 [7.3] PhpUnitExpectationFixer - support PHP 7.3 (kubawerlos)
+* minor #4223 [7.3] PhpUnitMockFixer - add tests for PHP 7.3 (kubawerlos)
+* minor #4230 [7.3] IsNullFixer - fix trailing comma (guilliamxavier)
+* minor #4232 DX: remove Utils::splitLines (kubawerlos)
+* minor #4234 [7.3] Test that "LITERAL instanceof X" is valid (guilliamxavier)
+
+Changelog for v2.13.2
+---------------------
+
+* bug #3968 SelfAccessorFixer - support FQCN (kubawerlos)
+* bug #3974 Psr4Fixer - class with anonymous class (kubawerlos)
+* bug #3987 Run HeaderCommentFixer after NoBlankLinesAfterPhpdocFixer (StanAngeloff)
+* bug #4009 TypeAlternationTransformer - Fix pipes in function call with constants being classified incorrectly (ntzm, SpacePossum)
+* bug #4022 NoUnsetOnPropertyFixer - refactor and bugfixes (kubawerlos)
+* bug #4036 ExplicitStringVariableFixer - fixes for backticks and for 2 variables next to each other (kubawerlos, Slamdunk)
+* bug #4038 CommentToPhpdocFixer - handling nested PHPDoc (kubawerlos)
+* bug #4064 Ignore invalid mode strings, add option to remove the "b" flag. (SpacePossum)
+* bug #4071 DX: do not insert Token when calling removeLeadingWhitespace/removeTrailingWhitespace from Tokens (kubawerlos)
+* bug #4073 IsNullFixer - fix function detection (kubawerlos)
+* bug #4074 FileFilterIterator - do not filter out files that need fixing (SpacePossum)
+* bug #4076 EregToPregFixer - fix function detection (kubawerlos)
+* bug #4084 MethodChainingIndentation - fix priority with Braces (dmvdbrugge)
+* bug #4099 HeaderCommentFixer - throw exception on invalid header configuration (SpacePossum)
+* bug #4100 PhpdocAddMissingParamAnnotationFixer - Handle variable number of arguments and pass by reference cases (SpacePossum)
+* bug #4101 ReturnAssignmentFixer - do not touch invalid code (SpacePossum)
+* bug #4104 Change transformers order, fixing untransformed T_USE (dmvdbrugge)
+* bug #4107 Preg::split - fix for non-UTF8 subject (ostrolucky, kubawerlos)
+* bug #4109 NoBlankLines*: fix removing lines consisting only of spaces (kubawerlos, keradus)
+* bug #4114 VisibilityRequiredFixer - don't remove comments (kubawerlos)
+* bug #4116 OrderedImportsFixer - fix sorting without any grouping (SpacePossum)
+* bug #4119 PhpUnitNoExpectationAnnotationFixer - fix extracting content from annotation (kubawerlos)
+* bug #4127 LowercaseConstantsFixer - Fix case with properties using constants as their name (srathbone)
+* bug #4134 [7.3] SquareBraceTransformer - nested array destructuring not handled correctly (SpacePossum)
+* bug #4153 PhpUnitFqcnAnnotationFixer - handle only PhpUnit classes (kubawerlos)
+* bug #4169 DirConstantFixer - Fixes for PHP7.3 syntax (SpacePossum)
+* bug #4181 MultilineCommentOpeningClosingFixer - fix handling empty comment (kubawerlos)
+* bug #4186 Tokens - fix removal of leading/trailing whitespace with empty token in collection (kubawerlos)
+* minor #3436 Add a handful of integration tests (BackEndTea)
+* minor #3774 PhpUnitTestClassRequiresCoversFixer - Remove unneeded loop and use phpunit indicator class (BackEndTea, SpacePossum)
+* minor #3778 DX: Throw an exception if FileReader::read fails (ntzm)
+* minor #3916 New ruleset "@PhpCsFixer" (gharlan)
+* minor #4007 Fixes cookbook for fixers (greeflas)
+* minor #4031 Correct FixerOptionBuilder::getOption return type (ntzm)
+* minor #4046 Token - Added fast isset() path to token->equals() (staabm)
+* minor #4047 Token - inline $other->getPrototype() to speedup equals() (staabm, keradus)
+* minor #4048 Tokens - inlined extractTokenKind() call on the hot path (staabm)
+* minor #4069 DX: Add dev-tools directory to gitattributes as export-ignore (alexmanno)
+* minor #4070 Docs: Add link to a VS Code extension in readme (jakebathman)
+* minor #4077 DX: cleanup - NoAliasFunctionsFixer - use FunctionsAnalyzer (kubawerlos)
+* minor #4088 Add Travis test with strict types (kubawerlos)
+* minor #4091 Adjust misleading sentence in CONTRIBUTING.md (ostrolucky)
+* minor #4092 UseTransformer - simplify/optimize (SpacePossum)
+* minor #4095 DX: Use ::class (keradus)
+* minor #4096 DX: fixing typo (kubawerlos)
+* minor #4097 DX: namespace casing (kubawerlos)
+* minor #4110 Enhancement: Update localheinz/composer-normalize (localheinz)
+* minor #4115 Changes for upcoming Travis' infra migration (sergeyklay)
+* minor #4122 DX: AppVeyor - Update Composer download link (SpacePossum)
+* minor #4128 DX: cleanup - AbstractFunctionReferenceFixer - use FunctionsAnalyzer (SpacePossum, kubawerlos)
+* minor #4129 Fix: Symfony 4.2 deprecations (kubawerlos)
+* minor #4139 DX: Fix CircleCI (kubawerlos)
+* minor #4142 [7.3] NoAliasFunctionsFixer - mbregex_encoding' => 'mb_regex_encoding (SpacePossum)
+* minor #4143 PhpUnitTestCaseStaticMethodCallsFixer - Add PHPUnit 7.5 new assertions (Slamdunk)
+* minor #4149 [7.3] ArgumentsAnalyzer - PHP7.3 support (SpacePossum)
+* minor #4161 DX: CI - show packages installed via Composer (keradus)
+* minor #4162 DX: Drop symfony/lts (keradus)
+* minor #4166 DX: do not use AbstractFunctionReferenceFixer when no need to (kubawerlos)
+* minor #4168 DX: FopenFlagsFixer - remove useless proxy method (SpacePossum)
+* minor #4171 Fix CircleCI cache (kubawerlos)
+* minor #4173 [7.3] PowToExponentiationFixer - add support for PHP7.3 (SpacePossum)
+* minor #4175 Fixing typo (kubawerlos)
+* minor #4177 CI: Check that tag is matching version of PHP CS Fixer during deployment (keradus)
+* minor #4180 Fixing typo (kubawerlos)
+* minor #4182 DX: update php-cs-fixer file style (kubawerlos)
+* minor #4185 [7.3] ImplodeCallFixer - add tests for PHP7.3 (kubawerlos)
+* minor #4187 [7.3] IsNullFixer - support PHP 7.3 (kubawerlos)
+* minor #4188 DX: cleanup (keradus)
+* minor #4189 Travis - add PHP 7.3 job (keradus)
+* minor #4190 Travis CI - fix config (kubawerlos)
+* minor #4192 [7.3] MagicMethodCasingFixer - add tests for PHP 7.3 (kubawerlos)
+* minor #4194 [7.3] NativeFunctionInvocationFixer - add tests for PHP 7.3 (kubawerlos)
+* minor #4195 [7.3] SetTypeToCastFixer - support PHP 7.3 (kubawerlos)
+* minor #4196 Update website (keradus)
+* minor #4197 [7.3] StrictParamFixer - support PHP 7.3 (kubawerlos)
+
+Changelog for v2.13.1
+---------------------
+
+* bug #3977 NoSuperfluousPhpdocTagsFixer - Fix handling of description with variable (julienfalque)
+* bug #4027 PhpdocAnnotationWithoutDotFixer - add failing cases (keradus)
+* bug #4028 PhpdocNoEmptyReturnFixer - handle single line PHPDoc (kubawerlos)
+* bug #4034 PhpUnitTestCaseIndicator - handle anonymous class (kubawerlos)
+* bug #4037 NativeFunctionInvocationFixer - fix function detection (kubawerlos)
+* feature #4019 PhpdocTypesFixer - allow for configuration (keradus)
+* minor #3980 Clarifies allow-risky usage (josephzidell)
+* minor #4016 Bump console component due to it's bug (keradus)
+* minor #4023 Enhancement: Update localheinz/composer-normalize (localheinz)
+* minor #4049 use parent::offset*() methods when moving items around in insertAt() (staabm)
+
+Changelog for v2.13.0
+---------------------
+
+* feature #3739 Add MagicMethodCasingFixer (SpacePossum)
+* feature #3812 Add FopenFlagOrderFixer & FopenFlagsFixer (SpacePossum)
+* feature #3826 Add CombineNestedDirnameFixer (gharlan)
+* feature #3833 BinaryOperatorSpacesFixer - Add "no space" fix strategy (SpacePossum)
+* feature #3841 NoAliasFunctionsFixer - add opt in option for ext-mbstring aliasses (SpacePossum)
+* feature #3876 NativeConstantInvocationFixer - add the scope option (stof, keradus)
+* feature #3886 Add PhpUnitMethodCasingFixer (Slamdunk)
+* feature #3907 Add ImplodeCallFixer (kubawerlos)
+* feature #3914 NoUnreachableDefaultArgumentValueFixer - remove `null` for nullable typehints (gharlan, keradus)
+* minor #3813 PhpUnitDedicateAssertFixer - fix "sizeOf" same as "count". (SpacePossum)
+* minor #3873 Add the native_function_invocation fixer in the Symfony:risky ruleset (stof)
+* minor #3979 DX: enable php_unit_method_casing (keradus)
+
+Changelog for v2.12.12
+----------------------
+
+* bug #4533 Revert PHP7.4 - Add "str_split" => "mb_str_split" mapping (keradus)
+* minor #4264 DX: AutoReview - ensure Travis handle all needed PHP versions (keradus)
+* minor #4524 MethodArgumentSpaceFixerTest - make explicit configuration to prevent fail on configuration change (keradus)
+
+Changelog for v2.12.11
+----------------------
+
+* bug #4132 BlankLineAfterNamespaceFixer - do not remove indent, handle comments (kubawerlos)
+* bug #4384 MethodArgumentSpaceFixer - fix for on_multiline:ensure_fully_multiline with trailing comma in function call (kubawerlos)
+* bug #4404 FileLintingIterator - fix current value on end/invalid (SpacePossum)
+* bug #4421 FunctionTypehintSpaceFixer - Ensure single space between type declaration and parameter (localheinz)
+* bug #4436 MethodArgumentSpaceFixer - handle misplaced ) (keradus)
+* bug #4439 NoLeadingImportSlashFixer - Add space if needed (SpacePossum)
+* bug #4453 Fix preg_match error on 7.4snapshot (kubawerlos)
+* bug #4461 IsNullFixer - fix null coalescing operator handling (linniksa)
+* bug #4467 ToolInfo - fix access to reference without checking existence (black-silence)
+* bug #4472 Fix non-static closure unbinding this on PHP 7.4 (kelunik)
+* minor #3726 Use Box 3 to build the PHAR (theofidry, keradus)
+* minor #4412 PHP 7.4 - Tests for support (SpacePossum)
+* minor #4431 DX: test that default config is not passed in RuleSet (kubawerlos)
+* minor #4433 DX: test to ensure @PHPUnitMigration rule sets are correctly defined (kubawerlos)
+* minor #4445 DX: static call of markTestSkippedOrFail (kubawerlos)
+* minor #4463 Add apostrophe to possessive "team's" (ChandlerSwift)
+* minor #4471 ReadmeCommandTest - use CommandTester (kubawerlos)
+* minor #4477 DX: control names of public methods in test's classes (kubawerlos)
+* minor #4483 NewWithBracesFixer - Fix object operator and curly brace open cases (SpacePossum)
+* minor #4484 fix typos in README (Sven Ludwig)
+* minor #4494 DX: Fix shell script syntax in order to fix Travis builds (drupol)
+* minor #4516 DX: Lock binary SCA tools versions (keradus)
+
+Changelog for v2.12.10
+----------------------
+
+* bug #4418 PhpUnitNamespacedFixer - properly translate classes which do not follow translation pattern (ktomk)
+* bug #4419 PhpUnitTestCaseStaticMethodCallsFixer - skip anonymous classes and lambda (SpacePossum)
+* bug #4420 MethodArgumentSpaceFixer - PHP7.3 trailing commas in function calls (SpacePossum)
+* minor #4345 Travis: PHP 7.4 isn't allowed to fail anymore (Slamdunk)
+* minor #4403 LowercaseStaticReferenceFixer - Fix invalid PHP version in example (HypeMC)
+* minor #4425 DX: assertions are static, adjust custom assertions (keradus)
+* minor #4426 DX: handle deprecations of symfony/event-dispatcher:4.3 (keradus)
+* minor #4427 DX: stop using reserved T_FN in code samples (keradus)
+
+Changelog for v2.12.9
+---------------------
+
+* bug #4298 NoTrailingWhitespaceInCommentFixer - fix for non-Unix line separators (kubawerlos)
+* bug #4303 FullyQualifiedStrictTypesFixer - Fix the short type detection when a question mark (nullable) is prefixing it. (drupol)
+* bug #4313 SelfAccessorFixer - fix for part qualified class name (kubawerlos, SpacePossum)
+* bug #4314 PhpUnitTestCaseStaticMethodCallsFixer - fix for having property with name as method to update (kubawerlos, SpacePossum)
+* bug #4327 TokensAnalyzer - add concat operator to list of binary operators (SpacePossum)
+* bug #4335 Cache - add indent and line ending to cache signature (dmvdbrugge)
+* bug #4344 VoidReturnFixer - handle yield from (SpacePossum)
+* bug #4346 BracesFixer - Do not pull close tag onto same line as a comment (SpacePossum)
+* bug #4350 StrictParamFixer - Don't detect functions in use statements (bolmstedt)
+* bug #4357 Fix short list syntax detection. (SpacePossum)
+* bug #4365 Fix output escaping of diff for text format when line is not changed (SpacePossum)
+* bug #4370 PhpUnitConstructFixer - Fix handle different casing (SpacePossum)
+* bug #4379 ExplicitStringVariableFixer - add test case for variable as an array key (kubawerlos, Slamdunk)
+* feature #4337 PhpUnitTestCaseStaticMethodCallsFixer - prepare for PHPUnit 8 (kubawerlos)
+* minor #3799 DX: php_unit_test_case_static_method_calls - use default config (keradus)
+* minor #4103 NoExtraBlankLinesFixer - fix candidate detection (SpacePossum)
+* minor #4245 LineEndingFixer - BracesFixer - Priority (dmvdbrugge)
+* minor #4325 Use lowercase mikey179/vfsStream in composer.json (lolli42)
+* minor #4336 Collect coverage with PCOV (kubawerlos)
+* minor #4338 Fix wording (kmvan, kubawerlos)
+* minor #4339 Change BracesFixer to avoid indenting PHP inline braces (alecgeatches)
+* minor #4340 Travis: build against 7.4snapshot instead of nightly (Slamdunk)
+* minor #4351 code grooming (SpacePossum)
+* minor #4353 Add more priority tests (SpacePossum)
+* minor #4364 DX: MethodChainingIndentationFixer - remove unneccesary loop (Sijun Zhu)
+* minor #4366 Unset the auxillary variable $a (GrahamCampbell)
+* minor #4368 Fixed TypeShortNameResolverTest::testResolver (GrahamCampbell)
+* minor #4380 PHP7.4 - Add "str_split" => "mb_str_split" mapping. (SpacePossum)
+* minor #4393 DX: add missing explicit return types (kubawerlos)
+
+Changelog for v2.12.8
+---------------------
+
+* minor #4306 DX: Drop HHVM conflict on Composer level to help Composer with HHVM compatibility, we still prevent HHVM on runtime (keradus)
+
+Changelog for v2.12.7
+---------------------
+
+* bug #4240 ModernizeTypesCastingFixer - fix for operators with higher precedence (kubawerlos)
+* bug #4254 PhpUnitDedicateAssertFixer - fix for count with additional operations (kubawerlos)
+* bug #4260 Psr0Fixer and Psr4Fixer - fix for multiple classes in file with anonymous class (kubawerlos)
+* bug #4262 FixCommand - fix help (keradus)
+* bug #4276 MethodChainingIndentationFixer, ArrayIndentationFixer - Fix priority issue (dmvdbrugge)
+* bug #4280 MethodArgumentSpaceFixer - Fix method argument alignment (Billz95)
+* bug #4286 IncrementStyleFixer - fix for static statement (kubawerlos)
+* bug #4291 ArrayIndentationFixer - Fix indentation after trailing spaces (julienfalque, keradus)
+* bug #4292 NoSuperfluousPhpdocTagsFixer - Make null only type not considered superfluous (julienfalque)
+* minor #4204 DX: Tokens - do not unregister/register found tokens when collection is not changing (kubawerlos)
+* minor #4235 DX: more specific @param types (kubawerlos)
+* minor #4263 DX: AppVeyor - bump PHP version (keradus)
+* minor #4293 Add official support for PHP 7.3 (keradus)
+* minor #4295 DX: MethodArgumentSpaceFixerTest - fix edge case for handling different line ending when only expected code is provided (keradus)
+* minor #4296 DX: cleanup testing with fixer config (keradus)
+* minor #4299 NativeFunctionInvocationFixer - add array_key_exists (deguif, keradus)
+
+Changelog for v2.12.6
+---------------------
+
+* bug #4216 Psr4Fixer - fix for multiple classy elements in file (keradus, kubawerlos)
+* bug #4217 Psr0Fixer - class with anonymous class (kubawerlos)
+* bug #4219 NativeFunctionCasingFixer - handle T_RETURN_REF (kubawerlos)
+* bug #4224 FunctionToConstantFixer - handle T_RETURN_REF (SpacePossum)
+* bug #4229 IsNullFixer - fix parenthesis not closed (guilliamxavier)
+* minor #4198 [7.3] PowToExponentiationFixer - adding to PHP7.3 integration test (kubawerlos)
+* minor #4199 [7.3] MethodChainingIndentationFixer - add tests for PHP 7.3 (kubawerlos)
+* minor #4200 [7.3] ModernizeTypesCastingFixer - support PHP 7.3 (kubawerlos)
+* minor #4201 [7.3] MultilineWhitespaceBeforeSemicolonsFixer - add tests for PHP 7.3 (kubawerlos)
+* minor #4202 [7.3] ErrorSuppressionFixer - support PHP 7.3 (kubawerlos)
+* minor #4205 DX: PhpdocAlignFixer - refactor to use DocBlock (kubawerlos)
+* minor #4206 DX: enable multiline_whitespace_before_semicolons (keradus)
+* minor #4207 [7.3] RandomApiMigrationFixerTest - tests for 7.3 (SpacePossum)
+* minor #4208 [7.3] NativeFunctionCasingFixerTest - tests for 7.3 (SpacePossum)
+* minor #4209 [7.3] PhpUnitStrictFixerTest - tests for 7.3 (SpacePossum)
+* minor #4210 [7.3] PhpUnitConstructFixer - add test for PHP 7.3 (kubawerlos)
+* minor #4211 [7.3] PhpUnitDedicateAssertFixer - support PHP 7.3 (kubawerlos)
+* minor #4214 [7.3] NoUnsetOnPropertyFixerTest - tests for 7.3 (SpacePossum)
+* minor #4222 [7.3] PhpUnitExpectationFixer - support PHP 7.3 (kubawerlos)
+* minor #4223 [7.3] PhpUnitMockFixer - add tests for PHP 7.3 (kubawerlos)
+* minor #4230 [7.3] IsNullFixer - fix trailing comma (guilliamxavier)
+* minor #4232 DX: remove Utils::splitLines (kubawerlos)
+* minor #4234 [7.3] Test that "LITERAL instanceof X" is valid (guilliamxavier)
+
+Changelog for v2.12.5
+---------------------
+
+* bug #3968 SelfAccessorFixer - support FQCN (kubawerlos)
+* bug #3974 Psr4Fixer - class with anonymous class (kubawerlos)
+* bug #3987 Run HeaderCommentFixer after NoBlankLinesAfterPhpdocFixer (StanAngeloff)
+* bug #4009 TypeAlternationTransformer - Fix pipes in function call with constants being classified incorrectly (ntzm, SpacePossum)
+* bug #4022 NoUnsetOnPropertyFixer - refactor and bugfixes (kubawerlos)
+* bug #4036 ExplicitStringVariableFixer - fixes for backticks and for 2 variables next to each other (kubawerlos, Slamdunk)
+* bug #4038 CommentToPhpdocFixer - handling nested PHPDoc (kubawerlos)
+* bug #4071 DX: do not insert Token when calling removeLeadingWhitespace/removeTrailingWhitespace from Tokens (kubawerlos)
+* bug #4073 IsNullFixer - fix function detection (kubawerlos)
+* bug #4074 FileFilterIterator - do not filter out files that need fixing (SpacePossum)
+* bug #4076 EregToPregFixer - fix function detection (kubawerlos)
+* bug #4084 MethodChainingIndentation - fix priority with Braces (dmvdbrugge)
+* bug #4099 HeaderCommentFixer - throw exception on invalid header configuration (SpacePossum)
+* bug #4100 PhpdocAddMissingParamAnnotationFixer - Handle variable number of arguments and pass by reference cases (SpacePossum)
+* bug #4101 ReturnAssignmentFixer - do not touch invalid code (SpacePossum)
+* bug #4104 Change transformers order, fixing untransformed T_USE (dmvdbrugge)
+* bug #4107 Preg::split - fix for non-UTF8 subject (ostrolucky, kubawerlos)
+* bug #4109 NoBlankLines*: fix removing lines consisting only of spaces (kubawerlos, keradus)
+* bug #4114 VisibilityRequiredFixer - don't remove comments (kubawerlos)
+* bug #4116 OrderedImportsFixer - fix sorting without any grouping (SpacePossum)
+* bug #4119 PhpUnitNoExpectationAnnotationFixer - fix extracting content from annotation (kubawerlos)
+* bug #4127 LowercaseConstantsFixer - Fix case with properties using constants as their name (srathbone)
+* bug #4134 [7.3] SquareBraceTransformer - nested array destructuring not handled correctly (SpacePossum)
+* bug #4153 PhpUnitFqcnAnnotationFixer - handle only PhpUnit classes (kubawerlos)
+* bug #4169 DirConstantFixer - Fixes for PHP7.3 syntax (SpacePossum)
+* bug #4181 MultilineCommentOpeningClosingFixer - fix handling empty comment (kubawerlos)
+* bug #4186 Tokens - fix removal of leading/trailing whitespace with empty token in collection (kubawerlos)
+* minor #3436 Add a handful of integration tests (BackEndTea)
+* minor #3774 PhpUnitTestClassRequiresCoversFixer - Remove unneeded loop and use phpunit indicator class (BackEndTea, SpacePossum)
+* minor #3778 DX: Throw an exception if FileReader::read fails (ntzm)
+* minor #3916 New ruleset "@PhpCsFixer" (gharlan)
+* minor #4007 Fixes cookbook for fixers (greeflas)
+* minor #4031 Correct FixerOptionBuilder::getOption return type (ntzm)
+* minor #4046 Token - Added fast isset() path to token->equals() (staabm)
+* minor #4047 Token - inline $other->getPrototype() to speedup equals() (staabm, keradus)
+* minor #4048 Tokens - inlined extractTokenKind() call on the hot path (staabm)
+* minor #4069 DX: Add dev-tools directory to gitattributes as export-ignore (alexmanno)
+* minor #4070 Docs: Add link to a VS Code extension in readme (jakebathman)
+* minor #4077 DX: cleanup - NoAliasFunctionsFixer - use FunctionsAnalyzer (kubawerlos)
+* minor #4088 Add Travis test with strict types (kubawerlos)
+* minor #4091 Adjust misleading sentence in CONTRIBUTING.md (ostrolucky)
+* minor #4092 UseTransformer - simplify/optimize (SpacePossum)
+* minor #4095 DX: Use ::class (keradus)
+* minor #4097 DX: namespace casing (kubawerlos)
+* minor #4110 Enhancement: Update localheinz/composer-normalize (localheinz)
+* minor #4115 Changes for upcoming Travis' infra migration (sergeyklay)
+* minor #4122 DX: AppVeyor - Update Composer download link (SpacePossum)
+* minor #4128 DX: cleanup - AbstractFunctionReferenceFixer - use FunctionsAnalyzer (SpacePossum, kubawerlos)
+* minor #4129 Fix: Symfony 4.2 deprecations (kubawerlos)
+* minor #4139 DX: Fix CircleCI (kubawerlos)
+* minor #4143 PhpUnitTestCaseStaticMethodCallsFixer - Add PHPUnit 7.5 new assertions (Slamdunk)
+* minor #4149 [7.3] ArgumentsAnalyzer - PHP7.3 support (SpacePossum)
+* minor #4161 DX: CI - show packages installed via Composer (keradus)
+* minor #4162 DX: Drop symfony/lts (keradus)
+* minor #4166 DX: do not use AbstractFunctionReferenceFixer when no need to (kubawerlos)
+* minor #4171 Fix CircleCI cache (kubawerlos)
+* minor #4173 [7.3] PowToExponentiationFixer - add support for PHP7.3 (SpacePossum)
+* minor #4175 Fixing typo (kubawerlos)
+* minor #4177 CI: Check that tag is matching version of PHP CS Fixer during deployment (keradus)
+* minor #4182 DX: update php-cs-fixer file style (kubawerlos)
+* minor #4187 [7.3] IsNullFixer - support PHP 7.3 (kubawerlos)
+* minor #4188 DX: cleanup (keradus)
+* minor #4189 Travis - add PHP 7.3 job (keradus)
+* minor #4190 Travis CI - fix config (kubawerlos)
+* minor #4194 [7.3] NativeFunctionInvocationFixer - add tests for PHP 7.3 (kubawerlos)
+* minor #4195 [7.3] SetTypeToCastFixer - support PHP 7.3 (kubawerlos)
+* minor #4196 Update website (keradus)
+* minor #4197 [7.3] StrictParamFixer - support PHP 7.3 (kubawerlos)
+
+Changelog for v2.12.4
+---------------------
+
+* bug #3977 NoSuperfluousPhpdocTagsFixer - Fix handling of description with variable (julienfalque)
+* bug #4027 PhpdocAnnotationWithoutDotFixer - add failing cases (keradus)
+* bug #4028 PhpdocNoEmptyReturnFixer - handle single line PHPDoc (kubawerlos)
+* bug #4034 PhpUnitTestCaseIndicator - handle anonymous class (kubawerlos)
+* bug #4037 NativeFunctionInvocationFixer - fix function detection (kubawerlos)
+* feature #4019 PhpdocTypesFixer - allow for configuration (keradus)
+* minor #3980 Clarifies allow-risky usage (josephzidell)
+* minor #4016 Bump console component due to it's bug (keradus)
+* minor #4023 Enhancement: Update localheinz/composer-normalize (localheinz)
+* minor #4049 use parent::offset*() methods when moving items around in insertAt() (staabm)
+
+Changelog for v2.12.3
+---------------------
+
+* bug #3867 PhpdocAnnotationWithoutDotFixer - Handle trailing whitespaces (kubawerlos)
+* bug #3884 NoSuperfluousPhpdocTagsFixer - handle null in every position (dmvdbrugge, julienfalque)
+* bug #3885 AlignMultilineCommentFixer - ArrayIndentationFixer - Priority (dmvdbrugge)
+* bug #3887 ArrayIndentFixer - Don't indent empty lines (dmvdbrugge)
+* bug #3888 NoExtraBlankLinesFixer - remove blank lines after open tag (kubawerlos)
+* bug #3890 StrictParamFixer - make it case-insensitive (kubawerlos)
+* bug #3895 FunctionsAnalyzer - false positive for constant and function definition (kubawerlos)
+* bug #3908 StrictParamFixer - fix edge case (kubawerlos)
+* bug #3910 FunctionsAnalyzer - fix isGlobalFunctionCall (gharlan)
+* bug #3912 FullyQualifiedStrictTypesFixer - NoSuperfluousPhpdocTagsFixer - adjust priority (dmvdbrugge)
+* bug #3913 TokensAnalyzer - fix isConstantInvocation (gharlan, keradus)
+* bug #3921 TypeAnalysis - Fix iterable not being detected as a reserved type (ntzm)
+* bug #3924 FullyQualifiedStrictTypesFixer - space bug (dmvdbrugge)
+* bug #3937 LowercaseStaticReferenceFixer - Fix "Parent" word in namespace (kubawerlos)
+* bug #3944 ExplicitStringVariableFixer - fix array handling (gharlan)
+* bug #3951 NoSuperfluousPhpdocTagsFixer - do not call strtolower with null (SpacePossum)
+* bug #3954 NoSuperfluousPhpdocTagsFixer - Index invalid or out of range (kubawerlos)
+* bug #3957 NoTrailingWhitespaceFixer - trim space after opening tag (kubawerlos)
+* minor #3798 DX: enable native_function_invocation (keradus)
+* minor #3882 PhpdocAnnotationWithoutDotFixer - Handle empty line in comment (kubawerlos)
+* minor #3889 DX: Cleanup - remove unused variables (kubawerlos, SpacePossum)
+* minor #3891 PhpdocNoEmptyReturnFixer - account for null[] (dmvdbrugge)
+* minor #3892 PhpdocNoEmptyReturnFixer - fix docs (keradus)
+* minor #3897 DX: FunctionsAnalyzer - simplifying return expression (kubawerlos)
+* minor #3903 DX: cleanup - remove special treatment for PHP <5.6 (kubawerlos)
+* minor #3905 DX: Upgrade composer-require-checker to stable version (keradus)
+* minor #3919 Simplify single uses of Token::isGivenKind (ntzm)
+* minor #3920 Docs: Fix typo (ntzm)
+* minor #3940 DX: fix phpdoc parameter type (malukenho)
+* minor #3948 DX: cleanup - remove redundant @param annotations (kubawerlos)
+* minor #3950 Circle CI v2 yml (siad007)
+* minor #3952 DX: AbstractFixerTestCase - drop testing method already provided by trait (keradus)
+* minor #3973 Bump xdebug-handler (keradus)
+
+Changelog for v2.12.2
+---------------------
+
+* bug #3823 NativeConstantInvocationFixer - better constant detection (gharlan, SpacePossum, keradus)
+* bug #3832 "yield from" as keyword (SpacePossum)
+* bug #3835 Fix priority between PHPDoc return type fixers (julienfalque, keradus)
+* bug #3839 MethodArgumentSpaceFixer - add empty line incorrectly (SpacePossum)
+* bug #3866 SpaceAfterSemicolonFixer - loop over all tokens (SpacePossum)
+* minor #3817 Update integrations tests (SpacePossum)
+* minor #3829 Fix typos in changelog (mnabialek)
+* minor #3848 Add install/update instructions for PHIVE to the README (SpacePossum)
+* minor #3877 NamespacesAnalyzer - Optimize performance (stof)
+* minor #3878 NativeFunctionInvocationFixer - use the NamespacesAnalyzer to remove duplicated code (stof)
+
+Changelog for v2.12.1
+---------------------
+
+* bug #3808 LowercaseStaticReferenceFixer - Fix constants handling (kubawerlos, keradus)
+* bug #3815 NoSuperfluousPhpdocTagsFixer - support array/callable type hints (gharlan)
+* minor #3824 DX: Support PHPUnit 7.2 (keradus)
+* minor #3825 UX: Provide full diff for code samples (keradus)
+
+Changelog for v2.12.0
+---------------------
+
+* feature #2577 Add LogicalOperatorsFixer (hkdobrev, keradus)
+* feature #3060 Add ErrorSuppressionFixer (kubawerlos)
+* feature #3127 Add NativeConstantInvocationFixer (Slamdunk, keradus)
+* feature #3223 NativeFunctionInvocationFixer - add namespace scope and include sets (SpacePossum)
+* feature #3453 PhpdocAlignFixer - add align option (robert.ahmerov)
+* feature #3476 Add PhpUnitTestCaseStaticMethodCallsFixer (Slamdunk, keradus)
+* feature #3524 MethodArgumentSpaceFixer - Add ensure_single_line option (julienfalque, keradus)
+* feature #3534 MultilineWhitespaceBeforeSemicolonsFixer - support static calls (ntzm)
+* feature #3585 Add ReturnAssignmentFixer (SpacePossum, keradus)
+* feature #3640 Add PhpdocToReturnTypeFixer (Slamdunk, keradus)
+* feature #3691 Add PhpdocTrimAfterDescriptionFixer (nobuf, keradus)
+* feature #3698 YodaStyleFixer - Add always_move_variable option (julienfalque, SpacePossum)
+* feature #3709 Add SetTypeToCastFixer (SpacePossum)
+* feature #3724 BlankLineBeforeStatementFixer - Add case and default as options (dmvdbrugge)
+* feature #3734 Add NoSuperfluousPhpdocTagsFixer (julienfalque)
+* feature #3735 Add LowercaseStaticReferenceFixer (kubawerlos, SpacePossum)
+* feature #3737 Add NoUnsetOnPropertyFixer (BackEndTea, SpacePossum)
+* feature #3745 Add PhpUnitInternalClassFixer (BackEndTea, SpacePossum, keradus)
+* feature #3766 Add NoBinaryStringFixer (ntzm, SpacePossum, keradus)
+* feature #3780 ShortScalarCastFixer - Change binary cast to string cast as well (ntzm)
+* feature #3785 PhpUnitDedicateAssertFixer - fix to assertCount too (SpacePossum)
+* feature #3802 Convert PhpdocTrimAfterDescriptionFixer into PhpdocTrimConsecutiveBlankLineSeparationFixer (keradus)
+* minor #3738 ReturnAssignmentFixer description update (kubawerlos)
+* minor #3761 Application: when run with FUTURE_MODE, error_reporting(-1) is done in entry file instead (keradus)
+* minor #3772 DX: use PhpUnitTestCaseIndicator->isPhpUnitClass to discover PHPUnit classes (keradus)
+* minor #3783 CI: Split COLLECT_COVERAGE job (keradus)
+* minor #3789 DX: ProjectCodeTest.testThatDataProvidersAreCorrectlyNamed - performance optimization (keradus)
+* minor #3791 DX: Fix collecting code coverage (keradus)
+* minor #3792 DX: Upgrade DX deps (keradus)
+* minor #3797 DX: ProjectCodeTest - shall not depends on xdebug/phpdbg anymore (keradus, SpacePossum)
+* minor #3800 Symfony:risky ruleset: include set_type_to_cast rule (keradus)
+* minor #3801 NativeFunctionInvocationFixer - fix buggy config validation (keradus, SpacePossum)
+
+Changelog for v2.11.2
+---------------------
+
+* bug #3233 PhpdocAlignFixer - Fix linebreak inconsistency (SpacePossum, keradus)
+* bug #3445 Rewrite NoUnusedImportsFixer (kubawerlos, julienfalque)
+* bug #3528 MethodChainingIndentationFixer - nested params bugfix (Slamdunk)
+* bug #3547 MultilineWhitespaceBeforeSemicolonsFixer - chained call for a return fix (egircys, keradus)
+* bug #3597 DeclareStrictTypesFixer - fix bug of removing line (kubawerlos, keradus)
+* bug #3605 DoctrineAnnotationIndentationFixer - Fix indentation with mixed lines (julienfalque)
+* bug #3606 PhpdocToCommentFixer - allow multiple ( (SpacePossum)
+* bug #3614 Refactor PhpdocToCommentFixer - extract checking to CommentsAnalyzer (kubawerlos)
+* bug #3668 Rewrite NoUnusedImportsFixer (kubawerlos, julienfalque)
+* bug #3670 PhpdocTypesOrderFixer - Fix ordering of nested generics (julienfalque)
+* bug #3671 ArrayIndentationFixer - Fix indentation in HTML (julienfalque)
+* bug #3673 PhpdocScalarFixer - Add "types" option (julienfalque, keradus)
+* bug #3674 YodaStyleFixer - Fix variable detection for multidimensional arrays (julienfalque, SpacePossum)
+* bug #3684 PhpUnitStrictFixer - Do not fix if not correct # of arguments are used (SpacePossum)
+* bug #3708 EspaceImplicitBackslashesFixer - Fix escaping multiple backslashes (julienfalque)
+* bug #3715 SingleImportPerStatementFixer - Fix handling whitespace before opening brace (julienfalque)
+* bug #3731 PhpdocIndentFixer - crash fix (SpacePossum)
+* bug #3755 YodaStyleFixer - handle space between var name and index (SpacePossum)
+* bug #3765 Fix binary-prefixed double-quoted strings to single quotes (ntzm)
+* bug #3770 Handle binary flags in heredoc_to_nowdoc (ntzm)
+* bug #3776 ExplicitStringVariableFixer - handle binary strings (ntzm)
+* bug #3777 EscapeImplicitBackslashesFixer - handle binary strings (ntzm)
+* bug #3790 ProcessLinter - don't execute external process without timeout! It can freeze! (keradus)
+* minor #3188 AppVeyor - add PHP 7.x (keradus, julienfalque)
+* minor #3451 Update findPHPUnit functions (BackEndTea, SpacePossum, keradus)
+* minor #3548 Make shell scripts POSIX-compatible (EvgenyOrekhov, keradus)
+* minor #3568 New Autoreview: Correct option casing (ntzm)
+* minor #3578 Add interface for deprecated options (julienfalque, keradus)
+* minor #3590 Use XdebugHandler to avoid perormance penalty (AJenbo, keradus)
+* minor #3607 PhpdocVarWithoutNameFixer - update sample with @ type (SpacePossum)
+* minor #3617 Tests stability patches (Tom Klingenberg, keradus)
+* minor #3622 Docs: Update descriptions (localheinz)
+* minor #3627 Fix tests execution under phpdbg (keradus)
+* minor #3629 ProjectFixerConfigurationTest - test rules are sorted (SpacePossum)
+* minor #3639 DX: use benefits of symfony/force-lowest (keradus)
+* minor #3641 Update check_trailing_spaces script with upstream (keradus)
+* minor #3646 Extract SameStringsConstraint and XmlMatchesXsdConstraint (keradus)
+* minor #3647 DX: Add CachingLinter for tests (keradus)
+* minor #3649 Update check_trailing_spaces script with upstream (keradus)
+* minor #3652 CiIntegrationTest - run tests with POSIX sh, not Bash (keradus)
+* minor #3656 DX: Clean ups (SpacePossum)
+* minor #3657 update phpunitgoodpractices/traits (SpacePossum, keradus)
+* minor #3658 DX: Clean ups (SpacePossum)
+* minor #3660 Fix do not rely on order of fixing in CiIntegrationTest (kubawerlos)
+* minor #3661 Fix: covers annotation for NoAlternativeSyntaxFixerTest (kubawerlos)
+* minor #3662 DX: Add Smoke/InstallViaComposerTest (keradus)
+* minor #3663 DX: During deployment, run all smoke tests and don't allow to skip phar-related ones (keradus)
+* minor #3665 CircleCI fix (kubawerlos)
+* minor #3666 Use "set -eu" in shell scripts (EvgenyOrekhov)
+* minor #3669 Document possible values for subset options (julienfalque, keradus)
+* minor #3672 Remove SameStringsConstraint and XmlMatchesXsdConstraint (keradus)
+* minor #3676 RunnerTest - workaround for failing Symfony v2.8.37 (kubawerlos)
+* minor #3680 DX: Tokens - removeLeadingWhitespace and removeTrailingWhitespace must act in same way (SpacePossum)
+* minor #3686 README.rst - Format all code-like strings in fixer descriptions (ntzm, keradus)
+* minor #3692 DX: Optimize tests (julienfalque)
+* minor #3700 README.rst - Format all code-like strings in fixer description (ntzm)
+* minor #3701 Use correct casing for "PHPDoc" (ntzm)
+* minor #3703 DX: InstallViaComposerTest - groom naming (keradus)
+* minor #3704 DX: Tokens - fix naming (keradus)
+* minor #3706 Update homebrew installation instructions (ntzm)
+* minor #3713 Use HTTPS whenever possible (fabpot)
+* minor #3723 Extend tests coverage (ntzm)
+* minor #3733 Disable Composer optimized autoloader by default (julienfalque)
+* minor #3748 PhpUnitStrictFixer - extend risky note (jnvsor)
+* minor #3749 Make sure PHPUnit is cased correctly in fixers descriptions (kubawerlos)
+* minor #3768 Improve deprecation messages (julienfalque, SpacePossum)
+* minor #3773 AbstractFixerWithAliasedOptionsTestCase - don't export (keradus)
+* minor #3775 Add tests for binary strings in string_line_ending (ntzm)
+* minor #3779 Misc fixes (ntzm, keradus)
+* minor #3796 DX: StdinTest - do not assume name of folder, into which project was cloned (keradus)
+* minor #3803 NoEmptyPhpdocFixer/PhpdocAddMissingParamAnnotationFixer - missing priority test (SpacePossum, keradus)
+* minor #3804 Cleanup: remove useless constructor comment (kubawerlos)
+* minor #3805 Cleanup: add missing @param type (kubawerlos, keradus)
+
+Changelog for v2.11.1
+---------------------
+
+* bug #3626 ArrayIndentationFixer: priority bug with BinaryOperatorSpacesFixer and MethodChainingIndentationFixer (Slamdunk)
+* bug #3632 DateTimeImmutableFixer bug with adding tokens while iterating over them (kubawerlos)
+* minor #3478 PhpUnitDedicateAssertFixer: handle static calls (Slamdunk)
+* minor #3618 DateTimeImmutableFixer - grooming (keradus)
+
+Changelog for v2.11.0
+---------------------
+
+* feature #3135 Add ArrayIndentationFixer (julienfalque)
+* feature #3235 Implement StandardizeIncrementFixer (ntzm, SpacePossum)
+* feature #3260 Add DateTimeImmutableFixer (kubawerlos)
+* feature #3276 Transform Fully Qualified parameters and return types to short version (veewee, keradus)
+* feature #3299 SingleQuoteFixer - fix single quote char (Slamdunk)
+* feature #3340 Verbose LintingException after fixing (Slamdunk)
+* feature #3423 FunctionToConstantFixer - add fix "get_called_class" option (SpacePossum)
+* feature #3434 Add PhpUnitSetUpTearDownVisibilityFixer (BackEndTea, SpacePossum)
+* feature #3442 Add CommentToPhpdocFixer (kubawerlos, keradus)
+* feature #3448 OrderedClassElementsFixer - added sortAlgorithm option (meridius)
+* feature #3454 Add StringLineEndingFixer (iluuu1994, SpacePossum, keradus, julienfalque)
+* feature #3477 PhpUnitStrictFixer: handle static calls (Slamdunk)
+* feature #3479 PhpUnitConstructFixer: handle static calls (Slamdunk)
+* feature #3507 Add PhpUnitOrderedCoversFixer (Slamdunk)
+* feature #3545 Add the 'none' sort algorithm to OrderedImportsFixer (EvgenyOrekhov)
+* feature #3588 Add NoAlternativeSyntaxFixer (eddmash, keradus)
+* minor #3414 DescribeCommand: add fixer class when verbose (Slamdunk)
+* minor #3432 ConfigurationDefinitionFixerInterface - fix deprecation notice (keradus)
+* minor #3527 Deprecate last param of Tokens::findBlockEnd (ntzm, keradus)
+* minor #3539 Update UnifiedDiffOutputBuilder from gecko-packages/gecko-diff-output-builder usage after it was incorporated into sebastian/diff (keradus)
+* minor #3549 DescribeCommand - use our Differ wrapper class, not external one directly (keradus)
+* minor #3592 Support PHPUnit 7 (keradus)
+* minor #3619 Travis - extend additional files list (keradus)
+
+Changelog for v2.10.5
+---------------------
+
+* bug #3344 Fix method chaining indentation in HTML (julienfalque)
+* bug #3594 ElseifFixer - Bug with alternative syntax (kubawerlos)
+* bug #3600 StrictParamFixer - Fix issue when functions are imported (ntzm, keradus)
+* minor #3589 FixerFactoryTest - add missing test (SpacePossum, keradus)
+* minor #3610 make phar extension optional (Tom Klingenberg, keradus)
+* minor #3612 Travis - allow for hhvm failures (keradus)
+* minor #3615 Detect fabbot.io (julienfalque, keradus)
+* minor #3616 FixerFactoryTest - Don't rely on autovivification (keradus)
+* minor #3621 FixerFactoryTest - apply CS (keradus)
+
+Changelog for v2.10.4
+---------------------
+
+* bug #3446 Add PregWrapper (kubawerlos)
+* bug #3464 IncludeFixer - fix incorrect order of fixing (kubawerlos, SpacePossum)
+* bug #3496 Bug in Tokens::removeLeadingWhitespace (kubawerlos, SpacePossum, keradus)
+* bug #3557 AbstractDoctrineAnnotationFixer: edge case bugfix (Slamdunk)
+* bug #3574 GeneralPhpdocAnnotationRemoveFixer - remove PHPDoc if no content is left (SpacePossum)
+* minor #3563 DX add missing covers annotations (keradus)
+* minor #3564 Use ::class keyword when possible (keradus)
+* minor #3565 Use EventDispatcherInterface instead of EventDispatcher when possible (keradus)
+* minor #3566 Update PHPUnitGoodPractices\Traits (keradus)
+* minor #3572 DX: allow for more phpunit-speedtrap versions to support more PHPUnit versions (keradus)
+* minor #3576 Fix Doctrine Annotation test cases merging (julienfalque)
+* minor #3577 DoctrineAnnotationArrayAssignmentFixer - Add test case (julienfalque)
+
+Changelog for v2.10.3
+---------------------
+
+* bug #3504 NoBlankLinesAfterPhpdocFixer - allow blank line before declare statement (julienfalque)
+* bug #3522 Remove LOCK_EX (SpacePossum)
+* bug #3560 SelfAccessorFixer is risky (Slamdunk)
+* minor #3435 Add tests for general_phpdoc_annotation_remove (BackEndTea)
+* minor #3484 Create Tokens::findBlockStart (ntzm)
+* minor #3512 Add missing array typehints (ntzm)
+* minor #3513 Making AppVeyor happy (kubawerlos)
+* minor #3516 Use null|type instead of ?type in PHPDocs (ntzm)
+* minor #3518 FixerFactoryTest - Test each priority test file is listed as test (SpacePossum)
+* minor #3519 Fix typo (SpacePossum)
+* minor #3520 Fix typos: ran vs. run (SpacePossum)
+* minor #3521 Use HTTPS (carusogabriel)
+* minor #3526 Remove gecko dependency (SpacePossum, keradus, julienfalque)
+* minor #3531 Backport PHPMD to LTS version to ease maintainability (keradus)
+* minor #3532 Implement Tokens::findOppositeBlockEdge (ntzm)
+* minor #3533 DX: SCA - drop src/Resources exclusion (keradus)
+* minor #3538 Don't use third parameter of Tokens::findBlockStart (ntzm)
+* minor #3542 Enhancement: Run composer-normalize on Travis CI (localheinz, keradus)
+* minor #3550 AutoReview\FixerFactoryTest - fix missing priority test, mark not fully valid test as incomplete (keradus)
+* minor #3555 DX: composer.json - drop branch-alias, branch is already following the version (keradus)
+* minor #3556 DX: Add AutoReview/ComposerTest (keradus)
+* minor #3559 Don't expose new files under Test namespace (keradus)
+* minor #3561 PHPUnit5 - add in place missing compat layer for PHPUnit6 (keradus)
+
+Changelog for v2.10.2
+---------------------
+
+* bug #3502 Fix missing file in export (keradus)
+
+Changelog for v2.10.1
+---------------------
+
+* bug #3265 YodaFixer - fix problems of block statements followed by ternary statements (weareoutman, keradus, SpacePossum)
+* bug #3367 NoUnusedImportsFixer - fix comment handling (SpacePossum, keradus)
+* bug #3438 PhpUnitTestAnnotationFixer: Do not prepend with test if method is test() (localheinz, SpacePossum)
+* bug #3455 NoEmptyCommentFixer - comment block detection for line ending different than LF (kubawerlos, SpacePossum)
+* bug #3458 SilencedDeprecationErrorFixer - fix edge cases (kubawerlos)
+* bug #3466 no_whitespace_in_blank_line and no_blank_lines_after_phpdoc fixers bug (kubawerlos, keradus)
+* bug #3472 YodaStyleFixer - do not un-Yoda if right side is assignment (SpacePossum, keradus)
+* bug #3492 PhpdocScalarFixer - Add callback pesudo-type to callable type (carusogabriel)
+* minor #3354 Added missing types to the PhpdocTypesFixer (GrahamCampbell)
+* minor #3406 Fix for escaping in README (kubawerlos)
+* minor #3430 Fix integration test (SpacePossum)
+* minor #3431 Add missing tests (SpacePossum)
+* minor #3440 Add a handful of integration tests (BackEndTea)
+* minor #3443 ConfigurableFixerInterface - not deprecated but TODO (SpacePossum)
+* minor #3444 IntegrationTest - ensure tests in priority dir are priority tests indeed (keradus)
+* minor #3494 Add missing PHPDoc param type (ntzm)
+* minor #3495 Swap @var type and element (ntzm)
+* minor #3498 NoUnusedImportsFixer - fix deprecation (keradus)
+
+Changelog for v2.10.0
+---------------------
+
+* feature #3290 Add PhpdocOpeningClosingFixer (Slamdunk, keradus)
+* feature #3327 Add MultilineWhitespaceBeforeSemicolonsFixer (egircys, keradus)
+* feature #3351 PhuUnit: migrate getMock to createPartialMock when arguments count is 2 (Slamdunk)
+* feature #3362 Add BacktickToShellExecFixer (Slamdunk)
+* minor #3285 PHPUnit - use protective traits (keradus)
+* minor #3329 ConfigurationResolver - detect deprecated fixers (keradus, SpacePossum)
+* minor #3343 Tokens - improve block end lookup (keradus)
+* minor #3360 Adjust Symfony ruleset (keradus)
+* minor #3361 no_extra_consecutive_blank_lines - rename to no_extra_blank_lines (with BC layer) (keradus)
+* minor #3363 progress-type - name main option value 'dots' (keradus)
+* minor #3404 Deprecate "use_yoda_style" in IsNullFixer (kubawerlos, keradus)
+* minor #3418 ConfigurableFixerInterface, ConfigurationDefinitionFixerInterface - update deprecations (keradus)
+* minor #3419 Dont use deprecated fixer in itest (keradus)
+
+Changelog for v2.9.3
+--------------------
+
+* bug #3502 Fix missing file in export (keradus)
+
+Changelog for v2.9.2
+--------------------
+
+* bug #3265 YodaFixer - fix problems of block statements followed by ternary statements (weareoutman, keradus, SpacePossum)
+* bug #3367 NoUnusedImportsFixer - fix comment handling (SpacePossum, keradus)
+* bug #3438 PhpUnitTestAnnotationFixer: Do not prepend with test if method is test() (localheinz, SpacePossum)
+* bug #3455 NoEmptyCommentFixer - comment block detection for line ending different than LF (kubawerlos, SpacePossum)
+* bug #3458 SilencedDeprecationErrorFixer - fix edge cases (kubawerlos)
+* bug #3466 no_whitespace_in_blank_line and no_blank_lines_after_phpdoc fixers bug (kubawerlos, keradus)
+* bug #3472 YodaStyleFixer - do not un-Yoda if right side is assignment (SpacePossum, keradus)
+* minor #3354 Added missing types to the PhpdocTypesFixer (GrahamCampbell)
+* minor #3406 Fix for escaping in README (kubawerlos)
+* minor #3430 Fix integration test (SpacePossum)
+* minor #3431 Add missing tests (SpacePossum)
+* minor #3440 Add a handful of integration tests (BackEndTea)
+* minor #3444 IntegrationTest - ensure tests in priority dir are priority tests indeed (keradus)
+* minor #3494 Add missing PHPDoc param type (ntzm)
+* minor #3495 Swap @var type and element (ntzm)
+* minor #3498 NoUnusedImportsFixer - fix deprecation (keradus)
+
+Changelog for v2.9.1
+--------------------
+
+* bug #3298 DiffConsoleFormatter - fix output escaping. (SpacePossum)
+* bug #3312 PhpUnitTestAnnotationFixer: Only remove prefix if it really is a prefix (localheinz)
+* bug #3318 SingleLineCommentStyleFixer - fix closing tag inside comment causes an error (kubawerlos)
+* bug #3334 ExplicitStringVariableFixer: handle parsed array and object (Slamdunk)
+* bug #3337 BracesFixer: nowdoc bug on template files (Slamdunk)
+* bug #3349 Fix stdin handling and add tests for it (keradus)
+* bug #3350 PhpUnitNoExpectationAnnotationFixer - fix handling of multiline expectedExceptionMessage annotation (Slamdunk)
+* bug #3352 FunctionToConstantFixer - bugfix for get_class with leading backslash (kubawerlos)
+* bug #3359 BracesFixer - handle comment for content outside of given block (keradus)
+* bug #3371 IsNullFixer must be run before YodaStyleFixer (kubawerlos)
+* bug #3373 PhpdocAlignFixer - Fix removing of everything after @ when there is a space after the @ (ntzm)
+* bug #3415 FileFilterIterator - input checks and utests (SpacePossum, keradus)
+* bug #3420 SingleLineCommentStyleFixer - fix 'strpos() expects parameter 1 to be string, boolean given' (keradus, SpacePossum)
+* bug #3428 Fix archive analysing (keradus)
+* bug #3429 Fix archive analysing (keradus)
+* minor #3137 PHPUnit - use common base class (keradus)
+* minor #3311 FinalInternalClassFixer - fix typo (localheinz)
+* minor #3328 Remove duplicated space in exceptions (keradus)
+* minor #3342 PhpUnitDedicateAssertFixer - Remove unexistent method is_boolean (carusogabriel)
+* minor #3345 StdinFileInfo - fix __toString (keradus)
+* minor #3346 StdinFileInfo - drop getContents (keradus)
+* minor #3347 DX: reapply newest CS (keradus)
+* minor #3365 COOKBOOK-FIXERS.md - update to provide definition instead of description (keradus)
+* minor #3370 AbstractFixer - FQCN in in exceptions (Slamdunk)
+* minor #3372 ProjectCodeTest - fix comment (keradus)
+* minor #3393 Method call typos (Slamdunk, keradus)
+* minor #3402 Always provide delimiter to `preg_quote` calls (ntzm)
+* minor #3403 Remove unused import (ntzm)
+* minor #3405 Fix `fopen` mode (ntzm)
+* minor #3407 CombineConsecutiveIssetsFixer - Improve description (kubawerlos)
+* minor #3408 Improving fixers descriptions (kubawerlos)
+* minor #3409 move itests from misc to priority (keradus)
+* minor #3411 Better type hinting for AbstractFixerTestCase::$fixer (kubawerlos)
+* minor #3412 Convert `strtolower` inside `strpos` to just `stripos` (ntzm)
+* minor #3421 DX: Use ::class (keradus)
+* minor #3424 AbstractFixerTest: fix expectException arguments (Slamdunk, keradus)
+* minor #3425 FixerFactoryTest - test that priority pair fixers have itest (keradus, SpacePossum)
+* minor #3427 ConfigurationResolver: fix @return annotation (Slamdunk)
+
+Changelog for v2.9.0
+--------------------
+
+* feature #3063 Method chaining indentation fixer (boliev, julienfalque)
+* feature #3076 Add ExplicitStringVariableFixer (Slamdunk, keradus)
+* feature #3098 MethodSeparationFixer - add class elements separation options (SpacePossum, keradus)
+* feature #3155 Add EscapeImplicitBackslashesFixer (Slamdunk)
+* feature #3164 Add ExplicitIndirectVariableFixer (Slamdunk, keradus)
+* feature #3183 FinalInternalClassFixer introduction (keradus, SpacePossum)
+* feature #3187 StaticLambdaFixer - introduction (SpacePossum, keradus)
+* feature #3209 PhpdocAlignFixer - Make @method alignable (ntzm)
+* feature #3275 Add PhpUnitTestAnnotationFixer (BackEndTea, keradus)
+
+Changelog for v2.8.4
+--------------------
+
+* bug #3281 SelfAccessorFixer - stop modifying traits (kubawerlos)
+* minor #3195 Add self-update command test (julienfalque)
+* minor #3287 FileCacheManagerTest - drop duplicated line (keradus)
+* minor #3292 PHPUnit - set memory limit (veewee)
+* minor #3306 Token - better input validation (keradus)
+* minor #3310 Upgrade PHP Coveralls (keradus)
+
+Changelog for v2.8.3
+--------------------
+
+* bug #3173 SimplifiedNullReturnFixer - handle nullable return types (Slamdunk)
+* bug #3268 PhpUnitNoExpectationAnnotationFixer - add case with backslashes (keradus, Slamdunk)
+* bug #3272 PhpdocTrimFixer - unicode support (SpacePossum)
+
+Changelog for v2.8.2
+--------------------
+
+* bug #3225 PhpdocTrimFixer - Fix handling of lines without leading asterisk (julienfalque)
+* bug #3241 NoExtraConsecutiveBlankLinesFixer - do not crash on ^M LF only (SpacePossum)
+* bug #3242 PhpUnitNoExpectationAnnotationFixer - fix ' handling (keradus)
+* bug #3243 PhpUnitExpectationFixer - don't create ->expectExceptionMessage(null) (keradus)
+* bug #3244 PhpUnitNoExpectationAnnotationFixer - expectation extracted from annotation shall be separated from rest of code with one blank line (keradus)
+* bug #3259 PhpUnitNamespacedFixer - fix isCandidate to not rely on class declaration (keradus)
+* bug #3261 PhpUnitNamespacedFixer - properly fix next usage of already fixed class (keradus)
+* bug #3262 ToolInfo - support installation by branch as well (keradus)
+* bug #3263 NoBreakCommentFixer - Fix handling comment text with PCRE characters (julienfalque)
+* bug #3266 PhpUnitConstructFixer - multiple asserts bug (kubawerlos)
+* minor #3239 Improve contributing guide and issue template (julienfalque)
+* minor #3246 Make ToolInfo methods non-static (julienfalque)
+* minor #3249 PhpUnitNoExpectationAnnotationFixerTest - fix hidden conflict (keradus)
+* minor #3250 Travis: fail early, spare resources, save the Earth (Slamdunk, keradus)
+* minor #3251 Create Title for config file docs section (IanEdington)
+* minor #3254 AutoReview/FixerFactoryTest::testFixersPriority: verbose assertion message (Slamdunk)
+* minor #3255 IntegrationTest: output exception stack trace (Slamdunk)
+* minor #3257 README.rst - Fixed bullet list formatting (moebrowne)
+
+Changelog for v2.8.1
+--------------------
+
+* bug #3199 TokensAnalyzer - getClassyElements (SpacePossum)
+* bug #3208 BracesFixer - Fix for instantiation in control structures (julienfalque, SpacePossum)
+* bug #3215 BinaryOperatorSpacesFixer - Fix spaces around multiple exception catching (|) (ntzm)
+* bug #3216 AbstractLinesBeforeNamespaceFixer - add min. and max. option, not only single target count (SpacePossum)
+* bug #3217 TokenizerLinter - fix lack of linting when code is cached (SpacePossum, keradus)
+* minor #3200 Skip slow test when Xdebug is loaded (julienfalque)
+* minor #3211 Use udiff format in CI (julienfalque)
+* minor #3212 Handle rulesets unknown to fabbot.io (julienfalque)
+* minor #3219 Normalise references to GitHub in docs (ntzm)
+* minor #3226 Remove unused imports (ntzm)
+* minor #3231 Fix typos (ntzm)
+* minor #3234 Simplify Cache\Signature::equals (ntzm)
+* minor #3237 UnconfigurableFixer - use only LF (keradus)
+* minor #3238 AbstractFixerTest - fix @cover annotation (keradus)
+
+Changelog for v2.8.0
+--------------------
+
+* feature #3065 Add IncrementStyleFixer (kubawerlos)
+* feature #3119 Feature checkstyle reporter (K-Phoen)
+* feature #3162 Add udiff as diff format (SpacePossum, keradus)
+* feature #3170 Add CompactNullableTypehintFixer (jfcherng)
+* feature #3189 Add PHP_CS_FIXER_FUTURE_MODE env (keradus)
+* feature #3201 Add PHPUnit Migration rulesets and fixers (keradus)
+* minor #3149 AbstractProxyFixer - Support multiple proxied fixers (julienfalque)
+* minor #3160 Add DeprecatedFixerInterface (kubawerlos)
+* minor #3185 IndentationTypeFixerTest - clean up (SpacePossum, keradus)
+* minor #3198 Cleanup: add test that there is no deprecated fixer in rule set (kubawerlos)
+
+Changelog for v2.7.5
+--------------------
+
+* bug #3225 PhpdocTrimFixer - Fix handling of lines without leading asterisk (julienfalque)
+* bug #3241 NoExtraConsecutiveBlankLinesFixer - do not crash on ^M LF only (SpacePossum)
+* bug #3262 ToolInfo - support installation by branch as well (keradus)
+* bug #3263 NoBreakCommentFixer - Fix handling comment text with PCRE characters (julienfalque)
+* bug #3266 PhpUnitConstructFixer - multiple asserts bug (kubawerlos)
+* minor #3239 Improve contributing guide and issue template (julienfalque)
+* minor #3246 Make ToolInfo methods non-static (julienfalque)
+* minor #3250 Travis: fail early, spare resources, save the Earth (Slamdunk, keradus)
+* minor #3251 Create Title for config file docs section (IanEdington)
+* minor #3254 AutoReview/FixerFactoryTest::testFixersPriority: verbose assertion message (Slamdunk)
+* minor #3255 IntegrationTest: output exception stack trace (Slamdunk)
+
+Changelog for v2.7.4
+--------------------
+
+* bug #3199 TokensAnalyzer - getClassyElements (SpacePossum)
+* bug #3208 BracesFixer - Fix for instantiation in control structures (julienfalque, SpacePossum)
+* bug #3215 BinaryOperatorSpacesFixer - Fix spaces around multiple exception catching (|) (ntzm)
+* bug #3216 AbstractLinesBeforeNamespaceFixer - add min. and max. option, not only single target count (SpacePossum)
+* bug #3217 TokenizerLinter - fix lack of linting when code is cached (SpacePossum, keradus)
+* minor #3200 Skip slow test when Xdebug is loaded (julienfalque)
+* minor #3219 Normalise references to GitHub in docs (ntzm)
+* minor #3226 Remove unused imports (ntzm)
+* minor #3231 Fix typos (ntzm)
+* minor #3234 Simplify Cache\Signature::equals (ntzm)
+* minor #3237 UnconfigurableFixer - use only LF (keradus)
+* minor #3238 AbstractFixerTest - fix @cover annotation (keradus)
+
+Changelog for v2.7.3
+--------------------
+
+* bug #3114 SelfAccessorFixer - Fix type declarations replacement (julienfalque)
+
+Changelog for v2.7.2
+--------------------
+
+* bug #3062 BraceClassInstantiationTransformer - Fix instantiation inside method call braces case (julienfalque, keradus)
+* bug #3083 SingleBlankLineBeforeNamespaceFixer - Fix handling namespace right after opening tag (mlocati)
+* bug #3109 SwitchCaseSemicolonToColonFixer - Fix bug with nested constructs (SpacePossum)
+* bug #3117 Multibyte character in array key makes alignment incorect (kubawerlos)
+* bug #3123 Cache - File permissions (SpacePossum)
+* bug #3138 NoHomoglyphNamesFixer - fix crash on non-ascii but not mapped either (SpacePossum)
+* bug #3172 IndentationTypeFixer - do not touch whitespace that is not indentation (SpacePossum)
+* bug #3176 NoMultilineWhitespaceBeforeSemicolonsFixer - SpaceAfterSemicolonFixer - priority fix (SpacePossum)
+* bug #3193 TokensAnalyzer::getClassyElements - sort result before returning (SpacePossum)
+* bug #3196 SelfUpdateCommand - fix exit status when can't determine newest version (julienfalque)
+* minor #3107 ConfigurationResolver - improve error message when rule is not found (SpacePossum)
+* minor #3113 Add WordMatcher (keradus)
+* minor #3128 README: remove deprecated rule from CLI examples (chteuchteu)
+* minor #3133 Unify Reporter tests (keradus)
+* minor #3134 Allow Symfony 4 (keradus, garak)
+* minor #3136 PHPUnit - call hooks from parent class as well (keradus)
+* minor #3141 Unify description of deprecated fixer (kubawerlos)
+* minor #3144 PhpUnitDedicateAssertFixer - Sort map and array by function name (localheinz)
+* minor #3145 misc - Typo (localheinz)
+* minor #3150 Fix CircleCI (julienfalque)
+* minor #3151 Update gitattributes to ignore next file (keradus)
+* minor #3156 Update php-coveralls (keradus)
+* minor #3166 README - add link to new gitter channel. (SpacePossum)
+* minor #3174 Update UPGRADE.md (vitek-rostislav)
+* minor #3180 Fix usage of static variables (kubawerlos)
+* minor #3182 Add support for PHPUnit 6, drop PHPUnit 4 (keradus)
+* minor #3184 Code grooming - sort content of arrays (keradus)
+* minor #3191 Travis - add nightly build to allow_failures due to Travis issues (keradus)
+* minor #3197 DX groom CS (keradus)
+
+Changelog for v2.7.1
+--------------------
+
+* bug #3115 NoUnneededFinalMethodFixer - fix edge case (Slamdunk)
+
+Changelog for v2.7.0
+--------------------
+
+* feature #2573 BinaryOperatorSpaces reworked (SpacePossum, keradus)
+* feature #3073 SpaceAfterSemicolonFixer - Add option to remove space in empty for expressions (julienfalque)
+* feature #3089 NoAliasFunctionsFixer - add imap aliases (Slamdunk)
+* feature #3093 NoUnneededFinalMethodFixer - Remove final keyword from private methods (localheinz, keradus)
+* minor #3068 Symfony:risky ruleset - add no_homoglyph_names (keradus)
+* minor #3074 [IO] Replace Diff with fork version (SpacePossum)
+
+Changelog for v2.6.1
+--------------------
+
+* bug #3052 Fix false positive warning about paths overridden by provided as command arguments (kubawerlos)
+* bug #3053 CombineConsecutiveIssetsFixer - fix priority (SpacePossum)
+* bug #3058 IsNullFixer - fix whitespace handling (roukmoute)
+* bug #3069 MethodArgumentSpaceFixer - new test case (keradus)
+* bug #3072 IsNullFixer - fix non_yoda_style edge case (keradus)
+* bug #3088 Drop dedicated Phar stub (keradus)
+* bug #3100 NativeFunctionInvocationFixer - Fix test if previous token is already namespace separator (SpacePossum)
+* bug #3104 DoctrineAnnotationIndentationFixer - Fix str_repeat() error (julienfalque)
+* minor #3038 Support PHP 7.2 (SpacePossum, keradus)
+* minor #3064 Fix couple of typos (KKSzymanowski)
+* minor #3070 YodaStyleFixer - Clarify configuration parameters (SteveJobzniak)
+* minor #3078 ConfigurationResolver - hide context while including config file (keradus)
+* minor #3080 Direct function call instead of by string (kubawerlos)
+* minor #3085 CiIntegrationTest - skip when no git is available (keradus)
+* minor #3087 phar-stub.php - allow PHP 7.2 (keradus)
+* minor #3092 .travis.yml - fix matrix for PHP 7.1 (keradus)
+* minor #3094 NoUnneededFinalMethodFixer - Add test cases (julienfalque)
+* minor #3111 DoctrineAnnotationIndentationFixer - Restore test case (julienfalque)
+
+Changelog for v2.6.0
+--------------------
+
+* bug #3039 YodaStyleFixer - Fix echo case (SpacePossum, keradus)
+* feature #2446 Add YodaStyleFixer (SpacePossum)
+* feature #2940 Add NoHomoglyphNamesFixer (mcfedr, keradus)
+* feature #3012 Add CombineConsecutiveIssetsFixer (SpacePossum)
+* minor #3037 Update SF rule set (SpacePossum)
+
+Changelog for v2.5.1
+--------------------
+
+* bug #3002 Bugfix braces (mnabialek)
+* bug #3010 Fix handling of Github releases (julienfalque, keradus)
+* bug #3015 Fix exception arguments (julienfalque)
+* bug #3016 Verify phar file (keradus)
+* bug #3021 Risky rules cleanup (kubawerlos)
+* bug #3023 RandomApiMigrationFixer - "rand();" to "random_int(0, getrandmax());" fixing (SpacePossum)
+* bug #3024 ConfigurationResolver - Handle empty "rules" value (SpacePossum, keradus)
+* bug #3031 IndentationTypeFixer - fix handling tabs in indented comments (keradus)
+* minor #2999 Notice when paths from config file are overridden by command arguments (julienfalque, keradus)
+* minor #3007 Add PHP 7.2 to Travis build matrix (Jean85)
+* minor #3009 CiIntegrationTest - run local (SpacePossum)
+* minor #3013 Adjust phpunit configuration (localheinz)
+* minor #3017 Fix: Risky tests (localheinz)
+* minor #3018 Fix: Make sure that data providers are named correctly (localheinz, keradus)
+* minor #3032 .php_cs.dist - handling UnexpectedValueException (keradus)
+* minor #3033 Use ::class (keradus)
+* minor #3034 Follow newest CS (keradus)
+* minor #3036 Drop not existing Standalone group from PHPUnit configuration and duplicated internal tags (keradus)
+* minor #3042 Update gitter address (keradus)
+
+Changelog for v2.5.0
+--------------------
+
+* feature #2770 DoctrineAnnotationSpaces - split assignments options (julienfalque)
+* feature #2843 Add estimating-max progress output type (julienfalque)
+* feature #2885 Add NoSuperfluousElseifFixer (julienfalque)
+* feature #2929 Add NoUnneededCurlyBracesFixer (SpacePossum)
+* feature #2944 FunctionToConstantFixer - handle get_class() -> __CLASS__ as well (SpacePossum)
+* feature #2953 BlankLineBeforeStatementFixer - Add more statements (localheinz, keradus)
+* feature #2972 Add NoUnneededFinalMethodFixer (Slamdunk, keradus)
+* feature #2992 Add Doctrine Annotation ruleset (julienfalque)
+* minor #2926 Token::getNameForId (SpacePossum)
+
+Changelog for v2.4.2
+--------------------
+
+* bug #3002 Bugfix braces (mnabialek)
+* bug #3010 Fix handling of Github releases (julienfalque, keradus)
+* bug #3015 Fix exception arguments (julienfalque)
+* bug #3016 Verify phar file (keradus)
+* bug #3021 Risky rules cleanup (kubawerlos)
+* bug #3023 RandomApiMigrationFixer - "rand();" to "random_int(0, getrandmax());" fixing (SpacePossum)
+* bug #3024 ConfigurationResolver - Handle empty "rules" value (SpacePossum, keradus)
+* bug #3031 IndentationTypeFixer - fix handling tabs in indented comments (keradus)
+* minor #2999 Notice when paths from config file are overridden by command arguments (julienfalque, keradus)
+* minor #3007 Add PHP 7.2 to Travis build matrix (Jean85)
+* minor #3009 CiIntegrationTest - run local (SpacePossum)
+* minor #3013 Adjust phpunit configuration (localheinz)
+* minor #3017 Fix: Risky tests (localheinz)
+* minor #3018 Fix: Make sure that data providers are named correctly (localheinz, keradus)
+* minor #3032 .php_cs.dist - handling UnexpectedValueException (keradus)
+* minor #3033 Use ::class (keradus)
+* minor #3034 Follow newest CS (keradus)
+* minor #3036 Drop not existing Standalone group from PHPUnit configuration and duplicated internal tags (keradus)
+* minor #3042 Update gitter address (keradus)
+
+Changelog for v2.4.1
+--------------------
+
+* bug #2925 Improve CI integration suggestion (julienfalque)
+* bug #2928 TokensAnalyzer::getClassyElements - Anonymous class support (SpacePossum)
+* bug #2931 Psr0Fixer, Psr4Fixer - ignore "new class" syntax (dg, keradus)
+* bug #2934 Config - fix handling rule without value (keradus, SpacePossum)
+* bug #2939 NoUnusedImportsFixer - Fix extra blank line (julienfalque)
+* bug #2941 PHP 7.2 - Group imports with trailing comma support (SpacePossum, julienfalque)
+* bug #2954 NoBreakCommentFixer - Disable case sensitivity (julienfalque)
+* bug #2959 MethodArgumentSpaceFixer - Skip body of fixed function (greg0ire)
+* bug #2984 AlignMultilineCommentFixer - handle uni code (SpacePossum)
+* bug #2987 Fix incorrect indentation of comments in `braces` fixer (rob006)
+* minor #2924 Add missing Token deprecations (julienfalque)
+* minor #2927 WhiteSpaceConfig - update message copy and more strict tests (SpacePossum, keradus)
+* minor #2930 Trigger website build (keradus)
+* minor #2932 Integrate CircleCI (keradus, aidantwoods)
+* minor #2933 ProcessLinterTest - Ensure Windows test only runs on Windows, add a Mac test execution (aidantwoods)
+* minor #2935 special handling of fabbot.io service if it's using too old PHP CS Fixer version (keradus)
+* minor #2937 Travis: execute 5.3 job on precise (keradus)
+* minor #2938 Tests fix configuration of project (SpacePossum, keradus)
+* minor #2943 FunctionToConstantFixer - test with diff. arguments than fixable (SpacePossum)
+* minor #2945 BlankLineBeforeStatementFixerTest - Fix covered class (julienfalque)
+* minor #2946 Detect extra old installations (keradus)
+* minor #2947 Test suggested CI integration (keradus)
+* minor #2951 AccessibleObject - remove most of usage (keradus)
+* minor #2952 BlankLineBeforeStatementFixer - Reference fixer instead of test class (localheinz)
+* minor #2955 Travis - stop using old TASK_SCA residue (keradus)
+* minor #2968 AssertTokensTrait - don't use AccessibleObject (keradus)
+* minor #2969 Shrink down AccessibleObject usage (keradus)
+* minor #2982 TrailingCommaInMultilineArrayFixer - simplify isMultilineArray condition (TomasVotruba)
+* minor #2989 CiIntegrationTest - fix min supported PHP versions (keradus)
+
+Changelog for v2.4.0
+--------------------
+
+* bug #2880 NoBreakCommentFixer - fix edge case (julienfalque)
+* bug #2900 VoidReturnFixer - handle functions containing anonymous functions/classes (bendavies, keradus)
+* bug #2902 Fix test classes constructor (julienfalque)
+* feature #2384 Add BlankLineBeforeStatementFixer (localheinz, keradus, SpacePossum)
+* feature #2440 MethodArgumentSpaceFixer - add ensure_fully_multiline option (greg0ire)
+* feature #2649 PhpdocAlignFixer - make fixer configurable (ntzm)
+* feature #2664 Add DoctrineAnnotationArrayAssignmentFixer (julienfalque)
+* feature #2667 Add NoBreakCommentFixer (julienfalque)
+* feature #2684 BracesFixer - new options for braces position after control structures and anonymous constructs (aidantwoods, keradus)
+* feature #2701 NoExtraConsecutiveBlankLinesFixer - Add more configuration options related to switch statements (SpacePossum)
+* feature #2740 Add VoidReturnFixer (mrmark)
+* feature #2765 DoctrineAnnotationIndentationFixer - add option to indent mixed lines (julienfalque)
+* feature #2815 NonPrintableCharacterFixer - Add option to replace with escape sequences (julienfalque, keradus)
+* feature #2822 Add NoNullPropertyInitializationFixer (ntzm, julienfalque, SpacePossum)
+* feature #2825 Add PhpdocTypesOrderFixer (julienfalque, keradus)
+* feature #2856 CastSpacesFixer - add space option (kubawerlos, keradus)
+* feature #2857 Add AlignMultilineCommentFixer (Slamdunk, keradus)
+* feature #2866 Add SingleLineCommentStyleFixer, deprecate HashToSlashCommentFixer (Slamdunk, keradus)
+* minor #2773 Travis - use stages (keradus)
+* minor #2794 Drop HHVM support (keradus, julienfalque)
+* minor #2801 ProjectCodeTest - Fix typo in deprecation message (SpacePossum)
+* minor #2818 Token become immutable, performance optimizations (keradus)
+* minor #2877 Fix PHPMD report (julienfalque)
+* minor #2894 NonPrintableCharacterFixer - fix handling required PHP version on PHPUnit 4.x (keradus)
+* minor #2921 InvalidForEnvFixerConfigurationException - fix handling in tests on 2.4 line (keradus)
+
+Changelog for v2.3.3
+--------------------
+
+* bug #2807 NoUselessElseFixer - Fix detection of conditional block (SpacePossum)
+* bug #2809 Phar release - fix readme generation (SpacePossum, keradus)
+* bug #2827 MethodArgumentSpaceFixer - Always remove trailing spaces (julienfalque)
+* bug #2835 SelfAcessorFixer - class property fix (mnabialek)
+* bug #2848 PhpdocIndentFixer - fix edge case with inline phpdoc (keradus)
+* bug #2849 BracesFixer - Fix indentation issues with comments (julienfalque)
+* bug #2851 Tokens - ensureWhitespaceAtIndex (GrahamCampbell, SpacePossum)
+* bug #2854 NoLeadingImportSlashFixer - Removing leading slash from import even when in global space (kubawerlos)
+* bug #2858 Support generic types (keradus)
+* bug #2869 Fix handling required configuration (keradus)
+* bug #2881 NoUnusedImportsFixer - Bug when trying to insert empty token (GrahamCampbell, keradus)
+* bug #2882 DocBlock\Annotation - Fix parsing of collections with multiple key types (julienfalque)
+* bug #2886 NoSpacesInsideParenthesisFixer - Do not remove whitespace if next token is comment (SpacePossum)
+* bug #2888 SingleImportPerStatementFixer - Add support for function and const (SpacePossum)
+* bug #2901 Add missing files to archive files (keradus)
+* bug #2914 HeredocToNowdocFixer - works with CRLF line ending (dg)
+* bug #2920 RuleSet - Update deprecated configuration of fixers (SpacePossum, keradus)
+* minor #1531 Update docs for few generic types (keradus)
+* minor #2793 COOKBOOK-FIXERS.md - update to current version, fix links (keradus)
+* minor #2812 ProcessLinter - compatibility with Symfony 3.3 (keradus)
+* minor #2816 Tokenizer - better docs and validation (keradus)
+* minor #2817 Tokenizer - use future-compatible interface (keradus)
+* minor #2819 Fix benchmark (keradus)
+* minor #2820 MagicConstantCasingFixer - Remove defined check (SpacePossum)
+* minor #2823 Tokenizer - use future-compatible interface (keradus)
+* minor #2824 code grooming (keradus)
+* minor #2826 Exceptions - provide utests (localheinz)
+* minor #2828 Enhancement: Reference phpunit.xsd from phpunit.xml.dist (localheinz)
+* minor #2830 Differs - add tests (localheinz)
+* minor #2832 Fix: Use all the columns (localheinz)
+* minor #2833 Doctrine\Annotation\Token - provide utests (localheinz)
+* minor #2839 Use PHP 7.2 polyfill instead of xml one (keradus)
+* minor #2842 Move null to first position in PHPDoc types (julienfalque)
+* minor #2850 ReadmeCommandTest - Prevent diff output (julienfalque)
+* minor #2859 Fixed typo and dead code removal (GrahamCampbell)
+* minor #2863 FileSpecificCodeSample - add tests (localheinz)
+* minor #2864 WhitespacesAwareFixerInterface clean up (Slamdunk)
+* minor #2865 AutoReview\FixerTest - test configuration samples (SpacePossum, keradus)
+* minor #2867 VersionSpecification - Fix copy-paste typo (SpacePossum)
+* minor #2870 Tokens - ensureWhitespaceAtIndex - Clear tokens before compare. (SpacePossum)
+* minor #2874 LineTest - fix typo (keradus)
+* minor #2875 HelpCommand - recursive layout fix (SpacePossum)
+* minor #2883 DescribeCommand - Show which sample uses the default configuration (SpacePossum)
+* minor #2887 Housekeeping - Strict whitespace checks (SpacePossum)
+* minor #2895 ProjectCodeTest - check that classes in no-tests exception exist (keradus)
+* minor #2896 Move testing related classes from src to tests (keradus)
+* minor #2904 Reapply CS (keradus)
+* minor #2910 PhpdocAnnotationWithoutDotFixer - Restrict lowercasing (oschwald)
+* minor #2913 Tests - tweaks (SpacePossum, keradus)
+* minor #2916 FixerFactory - drop return in sortFixers(), never used (TomasVotruba)
+
+Changelog for v2.3.2
+--------------------
+
+* bug #2682 DoctrineAnnotationIndentationFixer - fix handling nested annotations (edhgoose, julienfalque)
+* bug #2700 Fix Doctrine Annotation end detection (julienfalque)
+* bug #2715 OrderedImportsFixer - handle indented groups (pilgerone)
+* bug #2732 HeaderCommentFixer - fix handling blank lines (s7b4)
+* bug #2745 Fix Doctrine Annotation newlines (julienfalque)
+* bug #2752 FixCommand - fix typo in warning message (mnapoli)
+* bug #2757 GeckoPHPUnit is not dev dependency (keradus)
+* bug #2759 Update gitattributes (SpacePossum)
+* bug #2763 Fix describe command with PSR-0 fixer (julienfalque)
+* bug #2768 Tokens::ensureWhitespaceAtIndex - clean up comment check, add check for T_OPEN (SpacePossum)
+* bug #2783 Tokens::ensureWhitespaceAtIndex - Fix handling line endings (SpacePossum)
+* minor #2304 DX: use PHPMD (keradus)
+* minor #2663 Use colors for keywords in commands output (julienfalque, keradus)
+* minor #2706 Update README (SpacePossum)
+* minor #2714 README.rst - fix wrong value in example (mleko)
+* minor #2718 Remove old Symfony exception message expectation (julienfalque)
+* minor #2721 Update phpstorm article link to a fresh blog post (valeryan)
+* minor #2725 Use method chaining for configuration definitions (julienfalque)
+* minor #2727 PHPUnit - use speedtrap (keradus)
+* minor #2728 SelfUpdateCommand - verify that it's possible to replace current file (keradus)
+* minor #2729 DescribeCommand - add decorated output test (julienfalque)
+* minor #2731 BracesFixer - properly pass config in utest dataProvider (keradus)
+* minor #2738 Upgrade tests to use new, namespaced PHPUnit TestCase class (keradus)
+* minor #2742 Code cleanup (GrahamCampbell, keradus)
+* minor #2743 Fixing example and description for GeneralPhpdocAnnotationRemoveFixer (kubawerlos)
+* minor #2744 AbstractDoctrineAnnotationFixerTestCase - split fixers test cases (julienfalque)
+* minor #2755 Fix compatibility with PHPUnit 5.4.x (keradus)
+* minor #2758 Readme - improve CI integration guidelines (keradus)
+* minor #2769 Psr0Fixer - remove duplicated example (julienfalque)
+* minor #2774 AssertTokens Trait (keradus)
+* minor #2775 NoExtraConsecutiveBlankLinesFixer - remove duplicate code sample. (SpacePossum)
+* minor #2778 AutoReview - watch that code samples are unique (keradus)
+* minor #2787 Add warnings about missing dom ext and require json ext (keradus)
+* minor #2792 Use composer-require-checker (keradus)
+* minor #2796 Update .gitattributes (SpacePossum)
+* minor #2797 Update .gitattributes (SpacePossum)
+* minor #2800 PhpdocTypesFixerTest - Fix typo in covers annotation (SpacePossum)
+
+Changelog for v2.3.1
+--------------------
+
+Port of v2.2.3.
+
+* bug #2724 Revert #2554 Add short diff. output format (keradus)
+
+Changelog for v2.3.0
+--------------------
+
+* feature #2450 Add ListSyntaxFixer (SpacePossum)
+* feature #2708 Add PhpUnitTestClassRequiresCoversFixer (keradus)
+* minor #2568 Require PHP 5.6+ (keradus)
+* minor #2672 Bump symfony/* deps (keradus)
+
+Changelog for v2.2.20
+---------------------
+
+* bug #3233 PhpdocAlignFixer - Fix linebreak inconsistency (SpacePossum, keradus)
+* bug #3445 Rewrite NoUnusedImportsFixer (kubawerlos, julienfalque)
+* bug #3597 DeclareStrictTypesFixer - fix bug of removing line (kubawerlos, keradus)
+* bug #3605 DoctrineAnnotationIndentationFixer - Fix indentation with mixed lines (julienfalque)
+* bug #3606 PhpdocToCommentFixer - allow multiple ( (SpacePossum)
+* bug #3684 PhpUnitStrictFixer - Do not fix if not correct # of arguments are used (SpacePossum)
+* bug #3715 SingleImportPerStatementFixer - Fix handling whitespace before opening brace (julienfalque)
+* bug #3731 PhpdocIndentFixer - crash fix (SpacePossum)
+* bug #3765 Fix binary-prefixed double-quoted strings to single quotes (ntzm)
+* bug #3770 Handle binary flags in heredoc_to_nowdoc (ntzm)
+* bug #3790 ProcessLinter - don't execute external process without timeout! It can freeze! (keradus)
+* minor #3548 Make shell scripts POSIX-compatible (EvgenyOrekhov, keradus)
+* minor #3568 New Autoreview: Correct option casing (ntzm)
+* minor #3590 Use XdebugHandler to avoid performance penalty (AJenbo, keradus)
+* minor #3607 PhpdocVarWithoutNameFixer - update sample with @ type (SpacePossum)
+* minor #3617 Tests stability patches (Tom Klingenberg, keradus)
+* minor #3627 Fix tests execution under phpdbg (keradus)
+* minor #3629 ProjectFixerConfigurationTest - test rules are sorted (SpacePossum)
+* minor #3639 DX: use benefits of symfony/force-lowest (keradus)
+* minor #3641 Update check_trailing_spaces script with upstream (keradus)
+* minor #3646 Extract SameStringsConstraint and XmlMatchesXsdConstraint (keradus)
+* minor #3647 DX: Add CachingLinter for tests (keradus)
+* minor #3649 Update check_trailing_spaces script with upstream (keradus)
+* minor #3652 CiIntegrationTest - run tests with POSIX sh, not Bash (keradus)
+* minor #3656 DX: Clean ups (SpacePossum)
+* minor #3660 Fix do not rely on order of fixing in CiIntegrationTest (kubawerlos)
+* minor #3662 DX: Add Smoke/InstallViaComposerTest (keradus)
+* minor #3663 DX: During deployment, run all smoke tests and don't allow to skip phar-related ones (keradus)
+* minor #3665 CircleCI fix (kubawerlos)
+* minor #3666 Use "set -eu" in shell scripts (EvgenyOrekhov)
+* minor #3669 Document possible values for subset options (julienfalque, keradus)
+* minor #3676 RunnerTest - workaround for failing Symfony v2.8.37 (kubawerlos)
+* minor #3680 DX: Tokens - removeLeadingWhitespace and removeTrailingWhitespace must act in same way (SpacePossum)
+* minor #3686 README.rst - Format all code-like strings in fixer descriptions (ntzm, keradus)
+* minor #3692 DX: Optimize tests (julienfalque)
+* minor #3701 Use correct casing for "PHPDoc" (ntzm)
+* minor #3703 DX: InstallViaComposerTets - groom naming (keradus)
+* minor #3704 DX: Tokens - fix naming (keradus)
+* minor #3706 Update homebrew installation instructions (ntzm)
+* minor #3713 Use HTTPS whenever possible (fabpot)
+* minor #3723 Extend tests coverage (ntzm)
+* minor #3733 Disable Composer optimized autoloader by default (julienfalque)
+* minor #3748 PhpUnitStrictFixer - extend risky note (jnvsor)
+* minor #3749 Make sure PHPUnit is cased correctly in fixers descriptions (kubawerlos)
+* minor #3773 AbstractFixerWithAliasedOptionsTestCase - don't export (keradus)
+* minor #3796 DX: StdinTest - do not assume name of folder, into which project was cloned (keradus)
+* minor #3803 NoEmptyPhpdocFixer/PhpdocAddMissingParamAnnotationFixer - missing priority test (SpacePossum, keradus)
+* minor #3804 Cleanup: remove useless constructor comment (kubawerlos)
+
+Changelog for v2.2.19
+---------------------
+
+* bug #3594 ElseifFixer - Bug with alternative syntax (kubawerlos)
+* bug #3600 StrictParamFixer - Fix issue when functions are imported (ntzm, keradus)
+* minor #3589 FixerFactoryTest - add missing test (SpacePossum, keradus)
+* minor #3610 make phar extension optional (Tom Klingenberg, keradus)
+* minor #3612 Travis - allow for hhvm failures (keradus)
+* minor #3615 Detect fabbot.io (julienfalque, keradus)
+* minor #3616 FixerFactoryTest - Don't rely on autovivification (keradus)
+
+Changelog for v2.2.18
+---------------------
+
+* bug #3446 Add PregWrapper (kubawerlos)
+* bug #3464 IncludeFixer - fix incorrect order of fixing (kubawerlos, SpacePossum)
+* bug #3496 Bug in Tokens::removeLeadingWhitespace (kubawerlos, SpacePossum, keradus)
+* bug #3557 AbstractDoctrineAnnotationFixer: edge case bugfix (Slamdunk)
+* bug #3574 GeneralPhpdocAnnotationRemoveFixer - remove PHPDoc if no content is left (SpacePossum)
+* minor #3563 DX add missing covers annotations (keradus)
+* minor #3565 Use EventDispatcherInterface instead of EventDispatcher when possible (keradus)
+* minor #3572 DX: allow for more phpunit-speedtrap versions to support more PHPUnit versions (keradus)
+* minor #3576 Fix Doctrine Annotation test cases merging (julienfalque)
+
+Changelog for v2.2.17
+---------------------
+
+* bug #3504 NoBlankLinesAfterPhpdocFixer - allow blank line before declare statement (julienfalque)
+* bug #3522 Remove LOCK_EX (SpacePossum)
+* bug #3560 SelfAccessorFixer is risky (Slamdunk)
+* minor #3435 Add tests for general_phpdoc_annotation_remove (BackEndTea)
+* minor #3484 Create Tokens::findBlockStart (ntzm)
+* minor #3512 Add missing array typehints (ntzm)
+* minor #3516 Use null|type instead of ?type in PHPDocs (ntzm)
+* minor #3518 FixerFactoryTest - Test each priority test file is listed as test (SpacePossum)
+* minor #3520 Fix typos: ran vs. run (SpacePossum)
+* minor #3521 Use HTTPS (carusogabriel)
+* minor #3526 Remove gecko dependency (SpacePossum, keradus, julienfalque)
+* minor #3531 Backport PHPMD to LTS version to ease maintainability (keradus)
+* minor #3532 Implement Tokens::findOppositeBlockEdge (ntzm)
+* minor #3533 DX: SCA - drop src/Resources exclusion (keradus)
+* minor #3538 Don't use third parameter of Tokens::findBlockStart (ntzm)
+* minor #3542 Enhancement: Run composer-normalize on Travis CI (localheinz, keradus)
+* minor #3555 DX: composer.json - drop branch-alias, branch is already following the version (keradus)
+* minor #3556 DX: Add AutoReview/ComposerTest (keradus)
+* minor #3559 Don't expose new files under Test namespace (keradus)
+
+Changelog for v2.2.16
+---------------------
+
+* bug #3502 Fix missing file in export (keradus)
+
+Changelog for v2.2.15
+---------------------
+
+* bug #3367 NoUnusedImportsFixer - fix comment handling (SpacePossum, keradus)
+* bug #3455 NoEmptyCommentFixer - comment block detection for line ending different than LF (kubawerlos, SpacePossum)
+* bug #3458 SilencedDeprecationErrorFixer - fix edge cases (kubawerlos)
+* bug #3466 no_whitespace_in_blank_line and no_blank_lines_after_phpdoc fixers bug (kubawerlos, keradus)
+* minor #3354 Added missing types to the PhpdocTypesFixer (GrahamCampbell)
+* minor #3406 Fix for escaping in README (kubawerlos)
+* minor #3431 Add missing tests (SpacePossum)
+* minor #3440 Add a handful of integration tests (BackEndTea)
+* minor #3444 IntegrationTest - ensure tests in priority dir are priority tests indeed (keradus)
+* minor #3494 Add missing PHPDoc param type (ntzm)
+* minor #3495 Swap @var type and element (ntzm)
+* minor #3498 NoUnusedImportsFixer - fix deprecation (keradus)
+
+Changelog for v2.2.14
+---------------------
+
+* bug #3298 DiffConsoleFormatter - fix output escaping. (SpacePossum)
+* bug #3337 BracesFixer: nowdoc bug on template files (Slamdunk)
+* bug #3349 Fix stdin handling and add tests for it (keradus)
+* bug #3359 BracesFixer - handle comment for content outside of given block (keradus)
+* bug #3415 FileFilterIterator - input checks and utests (SpacePossum, keradus)
+* bug #3429 Fix archive analysing (keradus)
+* minor #3137 PHPUnit - use common base class (keradus)
+* minor #3342 PhpUnitDedicateAssertFixer - Remove unexistent method is_boolean (carusogabriel)
+* minor #3345 StdinFileInfo - fix `__toString` (keradus)
+* minor #3346 StdinFileInfo - drop getContents (keradus)
+* minor #3347 DX: reapply newest CS (keradus)
+* minor #3365 COOKBOOK-FIXERS.md - update to provide definition instead of description (keradus)
+* minor #3370 AbstractFixer - FQCN in in exceptions (Slamdunk)
+* minor #3372 ProjectCodeTest - fix comment (keradus)
+* minor #3402 Always provide delimiter to `preg_quote` calls (ntzm)
+* minor #3403 Remove unused import (ntzm)
+* minor #3405 Fix `fopen` mode (ntzm)
+* minor #3408 Improving fixers descriptions (kubawerlos)
+* minor #3409 move itests from misc to priority (keradus)
+* minor #3411 Better type hinting for AbstractFixerTestCase::$fixer (kubawerlos)
+* minor #3412 Convert `strtolower` inside `strpos` to just `stripos` (ntzm)
+* minor #3425 FixerFactoryTest - test that priority pair fixers have itest (keradus, SpacePossum)
+* minor #3427 ConfigurationResolver: fix @return annotation (Slamdunk)
+
+Changelog for v2.2.13
+---------------------
+
+* bug #3281 SelfAccessorFixer - stop modifying traits (kubawerlos)
+* minor #3195 Add self-update command test (julienfalque)
+* minor #3292 PHPUnit - set memory limit (veewee)
+* minor #3306 Token - better input validation (keradus)
+
+Changelog for v2.2.12
+---------------------
+
+* bug #3173 SimplifiedNullReturnFixer - handle nullable return types (Slamdunk)
+* bug #3272 PhpdocTrimFixer - unicode support (SpacePossum)
+
+Changelog for v2.2.11
+---------------------
+
+* bug #3225 PhpdocTrimFixer - Fix handling of lines without leading asterisk (julienfalque)
+* bug #3262 ToolInfo - support installation by branch as well (keradus)
+* bug #3266 PhpUnitConstructFixer - multiple asserts bug (kubawerlos)
+* minor #3239 Improve contributing guide and issue template (julienfalque)
+* minor #3246 Make ToolInfo methods non-static (julienfalque)
+* minor #3250 Travis: fail early, spare resources, save the Earth (Slamdunk, keradus)
+* minor #3251 Create Title for config file docs section (IanEdington)
+* minor #3254 AutoReview/FixerFactoryTest::testFixersPriority: verbose assertion message (Slamdunk)
+
+Changelog for v2.2.10
+---------------------
+
+* bug #3199 TokensAnalyzer - getClassyElements (SpacePossum)
+* bug #3208 BracesFixer - Fix for instantiation in control structures (julienfalque, SpacePossum)
+* bug #3215 BinaryOperatorSpacesFixer - Fix spaces around multiple exception catching (|) (ntzm)
+* bug #3216 AbstractLinesBeforeNamespaceFixer - add min. and max. option, not only single target count (SpacePossum)
+* bug #3217 TokenizerLinter - fix lack of linting when code is cached (SpacePossum, keradus)
+* minor #3200 Skip slow test when Xdebug is loaded (julienfalque)
+* minor #3219 Normalise references to GitHub in docs (ntzm)
+* minor #3226 Remove unused imports (ntzm)
+* minor #3231 Fix typos (ntzm)
+* minor #3234 Simplify Cache\Signature::equals (ntzm)
+* minor #3237 UnconfigurableFixer - use only LF (keradus)
+* minor #3238 AbstractFixerTest - fix @cover annotation (keradus)
+
+Changelog for v2.2.9
+--------------------
+
+* bug #3062 BraceClassInstantiationTransformer - Fix instantiation inside method call braces case (julienfalque, keradus)
+* bug #3083 SingleBlankLineBeforeNamespaceFixer - Fix handling namespace right after opening tag (mlocati)
+* bug #3109 SwitchCaseSemicolonToColonFixer - Fix bug with nested constructs (SpacePossum)
+* bug #3123 Cache - File permissions (SpacePossum)
+* bug #3172 IndentationTypeFixer - do not touch whitespace that is not indentation (SpacePossum)
+* bug #3176 NoMultilineWhitespaceBeforeSemicolonsFixer - SpaceAfterSemicolonFixer - priority fix (SpacePossum)
+* bug #3193 TokensAnalyzer::getClassyElements - sort result before returning (SpacePossum)
+* bug #3196 SelfUpdateCommand - fix exit status when can't determine newest version (julienfalque)
+* minor #3107 ConfigurationResolver - improve error message when rule is not found (SpacePossum)
+* minor #3113 Add WordMatcher (keradus)
+* minor #3133 Unify Reporter tests (keradus)
+* minor #3134 Allow Symfony 4 (keradus, garak)
+* minor #3136 PHPUnit - call hooks from parent class as well (keradus)
+* minor #3145 misc - Typo (localheinz)
+* minor #3150 Fix CircleCI (julienfalque)
+* minor #3151 Update gitattributes to ignore next file (keradus)
+* minor #3156 Update php-coveralls (keradus)
+* minor #3166 README - add link to new gitter channel. (SpacePossum)
+* minor #3174 Update UPGRADE.md (vitek-rostislav)
+* minor #3180 Fix usage of static variables (kubawerlos)
+* minor #3184 Code grooming - sort content of arrays (keradus)
+* minor #3191 Travis - add nightly build to allow_failures due to Travis issues (keradus)
+* minor #3197 DX groom CS (keradus)
+
+Changelog for v2.2.8
+--------------------
+
+* bug #3052 Fix false positive warning about paths overridden by provided as command arguments (kubawerlos)
+* bug #3058 IsNullFixer - fix whitespace handling (roukmoute)
+* bug #3072 IsNullFixer - fix non_yoda_style edge case (keradus)
+* bug #3088 Drop dedicated Phar stub (keradus)
+* bug #3100 NativeFunctionInvocationFixer - Fix test if previous token is already namespace separator (SpacePossum)
+* bug #3104 DoctrineAnnotationIndentationFixer - Fix str_repeat() error (julienfalque)
+* minor #3038 Support PHP 7.2 (SpacePossum, keradus)
+* minor #3064 Fix couple of typos (KKSzymanowski)
+* minor #3078 ConfigurationResolver - hide context while including config file (keradus)
+* minor #3080 Direct function call instead of by string (kubawerlos)
+* minor #3085 CiIntegrationTest - skip when no git is available (keradus)
+* minor #3087 phar-stub.php - allow PHP 7.2 (keradus)
+
+Changelog for v2.2.7
+--------------------
+
+* bug #3002 Bugfix braces (mnabialek)
+* bug #3010 Fix handling of Github releases (julienfalque, keradus)
+* bug #3015 Fix exception arguments (julienfalque)
+* bug #3016 Verify phar file (keradus)
+* bug #3021 Risky rules cleanup (kubawerlos)
+* bug #3023 RandomApiMigrationFixer - "rand();" to "random_int(0, getrandmax());" fixing (SpacePossum)
+* bug #3024 ConfigurationResolver - Handle empty "rules" value (SpacePossum, keradus)
+* bug #3031 IndentationTypeFixer - fix handling tabs in indented comments (keradus)
+* minor #2999 Notice when paths from config file are overridden by command arguments (julienfalque, keradus)
+* minor #3007 Add PHP 7.2 to Travis build matrix (Jean85)
+* minor #3009 CiIntegrationTest - run local (SpacePossum)
+* minor #3013 Adjust phpunit configuration (localheinz)
+* minor #3017 Fix: Risky tests (localheinz)
+* minor #3018 Fix: Make sure that data providers are named correctly (localheinz, keradus)
+* minor #3032 .php_cs.dist - handling UnexpectedValueException (keradus)
+* minor #3034 Follow newest CS (keradus)
+* minor #3036 Drop not existing Standalone group from PHPUnit configuration and duplicated internal tags (keradus)
+* minor #3042 Update gitter address (keradus)
+
+Changelog for v2.2.6
+--------------------
+
+* bug #2925 Improve CI integration suggestion (julienfalque)
+* bug #2928 TokensAnalyzer::getClassyElements - Anonymous class support (SpacePossum)
+* bug #2931 Psr0Fixer, Psr4Fixer - ignore "new class" syntax (dg, keradus)
+* bug #2934 Config - fix handling rule without value (keradus, SpacePossum)
+* bug #2939 NoUnusedImportsFixer - Fix extra blank line (julienfalque)
+* bug #2941 PHP 7.2 - Group imports with trailing comma support (SpacePossum, julienfalque)
+* bug #2987 Fix incorrect indentation of comments in `braces` fixer (rob006)
+* minor #2927 WhiteSpaceConfig - update message copy and more strict tests (SpacePossum, keradus)
+* minor #2930 Trigger website build (keradus)
+* minor #2932 Integrate CircleCI (keradus, aidantwoods)
+* minor #2933 ProcessLinterTest - Ensure Windows test only runs on Windows, add a Mac test execution (aidantwoods)
+* minor #2935 special handling of fabbot.io service if it's using too old PHP CS Fixer version (keradus)
+* minor #2937 Travis: execute 5.3 job on precise (keradus)
+* minor #2938 Tests fix configuration of project (SpacePossum, keradus)
+* minor #2943 FunctionToConstantFixer - test with diff. arguments than fixable (SpacePossum)
+* minor #2946 Detect extra old installations (keradus)
+* minor #2947 Test suggested CI integration (keradus)
+* minor #2951 AccessibleObject - remove most of usage (keradus)
+* minor #2969 Shrink down AccessibleObject usage (keradus)
+* minor #2982 TrailingCommaInMultilineArrayFixer - simplify isMultilineArray condition (TomasVotruba)
+
+Changelog for v2.2.5
+--------------------
+
+* bug #2807 NoUselessElseFixer - Fix detection of conditional block (SpacePossum)
+* bug #2809 Phar release - fix readme generation (SpacePossum, keradus)
+* bug #2827 MethodArgumentSpaceFixer - Always remove trailing spaces (julienfalque)
+* bug #2835 SelfAcessorFixer - class property fix (mnabialek)
+* bug #2848 PhpdocIndentFixer - fix edge case with inline phpdoc (keradus)
+* bug #2849 BracesFixer - Fix indentation issues with comments (julienfalque)
+* bug #2851 Tokens - ensureWhitespaceAtIndex (GrahamCampbell, SpacePossum)
+* bug #2854 NoLeadingImportSlashFixer - Removing leading slash from import even when in global space (kubawerlos)
+* bug #2858 Support generic types (keradus)
+* bug #2869 Fix handling required configuration (keradus)
+* bug #2881 NoUnusedImportsFixer - Bug when trying to insert empty token (GrahamCampbell, keradus)
+* bug #2882 DocBlock\Annotation - Fix parsing of collections with multiple key types (julienfalque)
+* bug #2886 NoSpacesInsideParenthesisFixer - Do not remove whitespace if next token is comment (SpacePossum)
+* bug #2888 SingleImportPerStatementFixer - Add support for function and const (SpacePossum)
+* bug #2901 Add missing files to archive files (keradus)
+* bug #2914 HeredocToNowdocFixer - works with CRLF line ending (dg)
+* bug #2920 RuleSet - Update deprecated configuration of fixers (SpacePossum, keradus)
+* minor #1531 Update docs for few generic types (keradus)
+* minor #2793 COOKBOOK-FIXERS.md - update to current version, fix links (keradus)
+* minor #2812 ProcessLinter - compatibility with Symfony 3.3 (keradus)
+* minor #2816 Tokenizer - better docs and validation (keradus)
+* minor #2817 Tokenizer - use future-compatible interface (keradus)
+* minor #2819 Fix benchmark (keradus)
+* minor #2824 code grooming (keradus)
+* minor #2826 Exceptions - provide utests (localheinz)
+* minor #2828 Enhancement: Reference phpunit.xsd from phpunit.xml.dist (localheinz)
+* minor #2830 Differs - add tests (localheinz)
+* minor #2832 Fix: Use all the columns (localheinz)
+* minor #2833 Doctrine\Annotation\Token - provide utests (localheinz)
+* minor #2839 Use PHP 7.2 polyfill instead of xml one (keradus)
+* minor #2842 Move null to first position in PHPDoc types (julienfalque)
+* minor #2850 ReadmeCommandTest - Prevent diff output (julienfalque)
+* minor #2859 Fixed typo and dead code removal (GrahamCampbell)
+* minor #2863 FileSpecificCodeSample - add tests (localheinz)
+* minor #2864 WhitespacesAwareFixerInterface clean up (Slamdunk)
+* minor #2865 AutoReview\FixerTest - test configuration samples (SpacePossum, keradus)
+* minor #2867 VersionSpecification - Fix copy-paste typo (SpacePossum)
+* minor #2874 LineTest - fix typo (keradus)
+* minor #2875 HelpCommand - recursive layout fix (SpacePossum)
+* minor #2883 DescribeCommand - Show which sample uses the default configuration (SpacePossum)
+* minor #2887 Housekeeping - Strict whitespace checks (SpacePossum)
+* minor #2895 ProjectCodeTest - check that classes in no-tests exception exist (keradus)
+* minor #2896 Move testing related classes from src to tests (keradus)
+* minor #2904 Reapply CS (keradus)
+* minor #2910 PhpdocAnnotationWithoutDotFixer - Restrict lowercasing (oschwald)
+* minor #2913 Tests - tweaks (SpacePossum, keradus)
+* minor #2916 FixerFactory - drop return in sortFixers(), never used (TomasVotruba)
+
+Changelog for v2.2.4
+--------------------
+
+* bug #2682 DoctrineAnnotationIndentationFixer - fix handling nested annotations (edhgoose, julienfalque)
+* bug #2700 Fix Doctrine Annotation end detection (julienfalque)
+* bug #2715 OrderedImportsFixer - handle indented groups (pilgerone)
+* bug #2732 HeaderCommentFixer - fix handling blank lines (s7b4)
+* bug #2745 Fix Doctrine Annotation newlines (julienfalque)
+* bug #2752 FixCommand - fix typo in warning message (mnapoli)
+* bug #2757 GeckoPHPUnit is not dev dependency (keradus)
+* bug #2759 Update gitattributes (SpacePossum)
+* bug #2763 Fix describe command with PSR-0 fixer (julienfalque)
+* bug #2768 Tokens::ensureWhitespaceAtIndex - clean up comment check, add check for T_OPEN (SpacePossum)
+* bug #2783 Tokens::ensureWhitespaceAtIndex - Fix handling line endings (SpacePossum)
+* minor #2663 Use colors for keywords in commands output (julienfalque, keradus)
+* minor #2706 Update README (SpacePossum)
+* minor #2714 README.rst - fix wrong value in example (mleko)
+* minor #2721 Update phpstorm article link to a fresh blog post (valeryan)
+* minor #2727 PHPUnit - use speedtrap (keradus)
+* minor #2728 SelfUpdateCommand - verify that it's possible to replace current file (keradus)
+* minor #2729 DescribeCommand - add decorated output test (julienfalque)
+* minor #2731 BracesFixer - properly pass config in utest dataProvider (keradus)
+* minor #2738 Upgrade tests to use new, namespaced PHPUnit TestCase class (keradus)
+* minor #2743 Fixing example and description for GeneralPhpdocAnnotationRemoveFixer (kubawerlos)
+* minor #2744 AbstractDoctrineAnnotationFixerTestCase - split fixers test cases (julienfalque)
+* minor #2755 Fix compatibility with PHPUnit 5.4.x (keradus)
+* minor #2758 Readme - improve CI integration guidelines (keradus)
+* minor #2769 Psr0Fixer - remove duplicated example (julienfalque)
+* minor #2775 NoExtraConsecutiveBlankLinesFixer - remove duplicate code sample. (SpacePossum)
+* minor #2778 AutoReview - watch that code samples are unique (keradus)
+* minor #2787 Add warnings about missing dom ext and require json ext (keradus)
+* minor #2792 Use composer-require-checker (keradus)
+* minor #2796 Update .gitattributes (SpacePossum)
+* minor #2800 PhpdocTypesFixerTest - Fix typo in covers annotation (SpacePossum)
+
+Changelog for v2.2.3
+--------------------
+
+* bug #2724 Revert #2554 Add short diff. output format (keradus)
+
+Changelog for v2.2.2
+--------------------
+
+Warning, this release breaks BC due to introduction of:
+* minor #2554 Add short diff. output format (SpacePossum, keradus)
+That PR was reverted in v2.2.3, which should be used instead of v2.2.2.
+
+* bug #2545 RuleSet - change resolvement (SpacePossum)
+* bug #2686 Commands readme and describe - fix rare casing when not displaying some possible options of configuration (keradus)
+* bug #2711 FixCommand - fix diff optional value handling (keradus)
+* minor #2688 AppVeyor - Remove github oauth (keradus)
+* minor #2703 Clean ups - No mixed annotations (SpacePossum)
+* minor #2704 Create PHP70Migration:risky ruleset (keradus)
+* minor #2707 Deprecate other than "yes" or "no" for input options (SpacePossum)
+* minor #2709 code grooming (keradus)
+* minor #2710 Travis - run more rules on TASK_SCA (keradus)
+
+Changelog for v2.2.1
+--------------------
+
+* bug #2621 Tokenizer - fix edge cases with empty code, registered found tokens and code hash (SpacePossum, keradus)
+* bug #2674 SemicolonAfterInstructionFixer - Fix case where block ends with an opening curly brace (ntzm)
+* bug #2675 ProcessOutputTest - update tests to pass on newest Symfony components under Windows (keradus)
+* minor #2651 Fix UPGRADE.md table syntax so it works in GitHub (ntzm, keradus)
+* minor #2665 Travis - Improve trailing spaces detection (julienfalque)
+* minor #2666 TransformersTest - move test to auto-review group (keradus)
+* minor #2668 add covers annotation (keradus)
+* minor #2669 TokensTest - grooming (SpacePossum)
+* minor #2670 AbstractFixer: use applyFix instead of fix (Slamdunk)
+* minor #2677 README: Correct progressbar option support (Laurens St�tzel)
+
+Changelog for v2.2.0
+--------------------
+
+* bug #2640 NoExtraConsecutiveBlankLinesFixer - Fix single indent characters not working (ntzm)
+* feature #2220 Doctrine annotation fixers (julienfalque)
+* feature #2431 MethodArgumentSpaceFixer: allow to retain multiple spaces after comma (Slamdunk)
+* feature #2459 BracesFixer - Add option for keeping opening brackets on the same line (jtojnar, SpacePossum)
+* feature #2486 Add FunctionToConstantFixer (SpacePossum, keradus)
+* feature #2505 FunctionDeclarationFixer - Make space after anonymous function configurable (jtojnar, keradus)
+* feature #2509 FullOpeningTagFixer - Ensure opening PHP tag is lowercase (jtojnar)
+* feature #2532 FixCommand - add stop-on-violation option (keradus)
+* feature #2591 Improve process output (julienfalque)
+* feature #2603 Add InvisibleSymbols Fixer (ivan1986, keradus)
+* feature #2642 Add MagicConstantCasingFixer (ntzm)
+* feature #2657 PhpdocToCommentFixer - Allow phpdoc for language constructs (ceeram, SpacePossum)
+* minor #2500 Configuration resolver (julienfalque, SpacePossum, keradus)
+* minor #2566 Show more details on errors and exceptions. (SpacePossum, julienfalque)
+* minor #2597 HHVM - bump required version to 3.18 (keradus)
+* minor #2606 FixCommand - fix missing comment close tag (keradus)
+* minor #2623 OrderedClassElementsFixer - remove dead code (SpacePossum)
+* minor #2625 Update Symfony and Symfony:risky rulesets (keradus)
+* minor #2626 TernaryToNullCoalescingFixer - adjust ruleset membership and description (keradus)
+* minor #2635 ProjectCodeTest - watch that all classes have dedicated tests (keradus)
+* minor #2647 DescribeCommandTest - remove deprecated code usage (julienfalque)
+* minor #2648 Move non-code covering tests to AutoReview subnamespace (keradus)
+* minor #2652 NoSpacesAroundOffsetFixerTest - fix deprecation (keradus)
+* minor #2656 Code grooming (keradus)
+* minor #2659 Travis - speed up preparation for phar building (keradus)
+* minor #2660 Fixed typo in suggest for ext-mbstring (pascal-hofmann)
+* minor #2661 NonPrintableCharacterFixer - include into Symfony:risky ruleset (keradus)
+
+Changelog for v2.1.3
+--------------------
+
+* bug #2358 Cache - Deal with signature encoding (keradus, GrahamCampbell)
+* bug #2475 Add shorthand array destructing support (SpacePossum, keradus)
+* bug #2595 NoUnusedImportsFixer - Fix import usage detection with properties (julienfalque)
+* bug #2605 PhpdocAddMissingParamAnnotationFixer, PhpdocOrderFixer - fix priority issue (SpacePossum)
+* bug #2607 Fixers - better comments handling (SpacePossum)
+* bug #2612 BracesFixer - Fix early bracket close for do-while loop inside an if without brackets (felixgomez)
+* bug #2614 Ensure that '*Fixer::fix()' won't crash when running on non-candidate collection (keradus)
+* bug #2630 HeaderCommentFixer - Fix trailing whitespace not removed after AliasFunctionsFixer (kalessil)
+* feature #1275 Added PhpdocInlineTagFixer (SpacePossum, keradus)
+* feature #1292 Added MethodSeparationFixer (SpacePossum)
+* feature #1383 Introduce rules and sets (keradus)
+* feature #1416 Mark fixers as risky (keradus)
+* feature #1440 Made AbstractFixerTestCase and AbstractIntegrationTestCase public (keradus)
+* feature #1489 Added Psr4Fixer (GrahamCampbell)
+* feature #1497 ExtraEmptyLinesFixer - allow to remove empty blank lines after configured tags (SpacePossum)
+* feature #1529 Added PhpdocPropertyFixer, refactored Tag and Annotation (GrahamCampbell)
+* feature #1628 Added OrderedClassElementsFixer (gharlan)
+* feature #1742 path argument is used to create an intersection with existing finder (keradus, gharlan)
+* feature #1779 Added GeneralPhpdocAnnotationRemoveFixer, GeneralPhpdocAnnotationRenameFixer (keradus)
+* feature #1811 Added NoSpacesInsideOfssetFixer (phansys)
+* feature #1819 Added DirConstantFixer, ModernizeTypesCastingFixer, RandomApiMigrationFixer (kalessil, SpacePossum, keradus)
+* feature #1825 Added junit format (ekho)
+* feature #1862 FixerFactory - Do not allow conflicting fixers (SpacePossum)
+* feature #1888 Cache refactoring, better cache handling in dry-run mode (localheinz)
+* feature #1889 Added SingleClassElementPerStatementFixer (phansys, SpacePossum)
+* feature #1903 FixCommand - allow to pass multiple path argument (keradus)
+* feature #1913 Introduce path-mode CLI option (keradus)
+* feature #1949 Added DeclareStrictTypesFixer, introduce options for HeaderCommentFixer (Seldaek, SpacePossum, keradus)
+* feature #1955 Introduce CT_ARRAY_INDEX_CURLY_BRACE_OPEN and CT_ARRAY_INDEX_CURLY_BRACE_CLOSE (keradus)
+* feature #1958 Added NormalizeIndexBraceFixer (keradus)
+* feature #2069 Add semicolon after instruction fixer (SpacePossum)
+* feature #2089 Add `no_spaces_around_offset` fixer (phansys)
+* feature #2179 BinaryOperatorSpacesFixer - add (un)align configuration options (SpacePossum)
+* feature #2192 Add PowToExponentiationFixer (SpacePossum, keradus)
+* feature #2207 Added ReturnTypeDeclarationFixer (keradus)
+* feature #2213 VisibilityRequiredFixer - Add support for class const visibility added in PHP7.1. (SpacePossum)
+* feature #2221 Add support for user-defined whitespaces (keradus)
+* feature #2244 Config cleanup (keradus, SpacePossum)
+* feature #2247 PhpdocAnnotationWithoutDotFixer - support more cases (keradus)
+* feature #2289 Add PhpdocAddMissingParamAnnotationFixer (keradus)
+* feature #2331 Add DescribeCommand (keradus, SpacePossum)
+* feature #2332 New colours of diff on console (keradus)
+* feature #829 add support for .php_cs.dist file (keradus)
+* feature #998 MethodArgumentSpaceFixer - enhance, now only one space after comma (trilopin, keradus)
+* minor #1007 Simplify Transformers (keradus)
+* minor #1050 Make Config's setDir() fluent like the rest of methods (gonzaloserrano)
+* minor #1062 Added NamespaceOperatorTransformer (gharlan)
+* minor #1078 Exit status should be 0 if there are no errors (gharlan)
+* minor #1101 CS: fix project itself (localheinz)
+* minor #1102 Enhancement: List errors occurred before, during and after fixing (localheinz)
+* minor #1105 Token::isStructureAlternativeEnd - remove unused method (keradus)
+* minor #1106 readme grooming (SpacePossum, keradus)
+* minor #1115 Fixer - simplify flow (keradus)
+* minor #1118 Process output refactor (SpacePossum)
+* minor #1132 Linter - public methods should be first (keradus)
+* minor #1134 Token::isWhitespace - simplify interface (keradus)
+* minor #1140 FixerInterface - check if fixer should be applied by isCandidate method (keradus)
+* minor #1146 Linter - detect executable (keradus)
+* minor #1156 deleted old ConfigurationResolver class (keradus)
+* minor #1160 Grammar fix to README (Falkirks)
+* minor #1174 DefaultFinder - boost performance by not filtering when files array is empty (keradus)
+* minor #1179 Exit with non-zero if invalid files were detected prior to fixing (localheinz)
+* minor #1186 Finder - do not search for .xml and .yml files (keradus)
+* minor #1206 BracesFixer::getClassyTokens - remove duplicated method (keradus)
+* minor #1222 Made fixers final (GrahamCampbell)
+* minor #1229 Tokens - Fix PHPDoc (SpacePossum)
+* minor #1241 More details on exceptions. (SpacePossum)
+* minor #1263 Made internal classes final (GrahamCampbell)
+* minor #1272 Readme - Add spaces around PHP-CS-Fixer headers (Soullivaneuh)
+* minor #1283 Error - Fixed type phpdoc (GrahamCampbell)
+* minor #1284 Token - Fix PHPDoc (SpacePossum)
+* minor #1314 Added missing internal annotations (keradus)
+* minor #1329 Psr0Fixer - move to contrib level (gharlan)
+* minor #1340 Clean ups (SpacePossum)
+* minor #1341 Linter - throw exception when write fails (SpacePossum)
+* minor #1348 Linter - Prefer error output when throwing a linting exception (GrahamCampbell)
+* minor #1350 Add "phpt" as a valid extension (henriquemoody)
+* minor #1376 Add time and memory to XML report (junichi11)
+* minor #1387 Made all test classes final (keradus)
+* minor #1388 Made all tests internal (keradus)
+* minor #1390 Added ProjectCodeTest that tests if all classes inside tests are internal and final or abstract (keradus)
+* minor #1391 Fixer::getLevelAsString is no longer static (keradus)
+* minor #1392 Add report to XML report as the root node (junichi11)
+* minor #1394 Stop mixing level from config file and fixers from CLI arg when one of fixers has dash (keradus)
+* minor #1426 MethodSeparationFixer - Fix spacing around comments (SpacePossum, keradus)
+* minor #1432 Fixer check on factory (Soullivaneuh)
+* minor #1434 Add Test\AccessibleObject class (keradus)
+* minor #1442 FixerFactory - disallow to register multiple fixers with same name (keradus)
+* minor #1477 rename PhpdocShortDescriptionFixer into PhpdocSummaryFixer (keradus)
+* minor #1481 Fix running the tests (keradus)
+* minor #1482 move AbstractTransformerTestBase class outside Tests dir (keradus)
+* minor #1530 Added missing internal annotation (GrahamCampbell)
+* minor #1534 Clean ups (SpacePossum)
+* minor #1536 Typo fix (fabpot)
+* minor #1555 Fixed indentation in composer.json (GrahamCampbell)
+* minor #1558 [2.0] Cleanup the tags property in the abstract phpdoc types fixer (GrahamCampbell)
+* minor #1567 PrintToEchoFixer - add to symfony rule set (gharlan)
+* minor #1607 performance improvement (gharlan)
+* minor #1621 Switch to PSR-4 (keradus)
+* minor #1631 Configuration exceptions exception cases on master. (SpacePossum)
+* minor #1646 Remove non-default Config/Finder classes (keradus)
+* minor #1648 Fixer - avoid extra calls to getFileRelativePathname (GrahamCampbell)
+* minor #1649 Consider the php version when caching (GrahamCampbell)
+* minor #1652 Rename namespace "Symfony\CS" to "PhpCsFixer" (gharlan)
+* minor #1666 new Runner, ProcessOutputInterface, DifferInterface and ResultInterface (keradus)
+* minor #1674 Config - add addCustomFixers method (PedroTroller)
+* minor #1677 Enhance tests (keradus)
+* minor #1695 Rename Fixers (keradus)
+* minor #1702 Upgrade guide (keradus)
+* minor #1707 ExtraEmptyLinesFixer - fix configure docs (keradus)
+* minor #1712 NoExtraConsecutiveBlankLinesFixer - Remove blankline after curly brace open (SpacePossum)
+* minor #1718 CLI: rename --config-file argument (keradus)
+* minor #1722 Renamed not_operators_with_space to not_operator_with_space (GrahamCampbell)
+* minor #1728 PhpdocNoSimplifiedNullReturnFixer - rename back to PhpdocNoEmptyReturnFixer (keradus)
+* minor #1729 Renamed whitespacy_lines to no_whitespace_in_blank_lines (GrahamCampbell)
+* minor #1731 FixCommand - value for config option is required (keradus)
+* minor #1732 move fixer classes from level subdirs to thematic subdirs (gharlan, keradus)
+* minor #1733 ConfigurationResolver - look for .php_cs file in cwd as well (keradus)
+* minor #1737 RuleSet/FixerFactory - sort arrays content (keradus)
+* minor #1751 FixerInterface::configure - method should always override configuration, not patch it (keradus)
+* minor #1752 Remove unused code (keradus)
+* minor #1756 Finder - clean up code (keradus)
+* minor #1757 Psr0Fixer - change way of configuring the fixer (keradus)
+* minor #1762 Remove ConfigInterface::getDir, ConfigInterface::setDir, Finder::setDir and whole FinderInterface (keradus)
+* minor #1764 Remove ConfigAwareInterface (keradus)
+* minor #1780 AbstractFixer - throw error on configuring non-configurable Fixer (keradus)
+* minor #1782 rename fixers (gharlan)
+* minor #1815 NoSpacesInsideParenthesisFixer - simplify implementation (keradus)
+* minor #1821 Ensure that PhpUnitDedicateAssertFixer runs after NoAliasFunctionsFixer, clean up NoEmptyCommentFixer (SpacePossum)
+* minor #1824 Reporting extracted to separate classes (ekho, keradus, SpacePossum)
+* minor #1826 Fixer - remove measuring fixing time per file (keradus)
+* minor #1843 FileFilterIterator - add missing import (GrahamCampbell)
+* minor #1845 FileCacheManager - Allow linting to determine the cache state too (GrahamCampbell)
+* minor #1846 FileFilterIterator - Corrected an iterator typehint (GrahamCampbell)
+* minor #1848 DocBlock - Remove some old unused phpdoc tags (GrahamCampbell)
+* minor #1856 NoDuplicateSemicolonsFixer - Remove overcomplete fixer (SpacePossum)
+* minor #1861 Fix: Ofsset should be Offset (localheinz)
+* minor #1867 Print non-report output to stdErr (SpacePossum, keradus)
+* minor #1873 Enhancement: Show path to cache file if it exists (localheinz)
+* minor #1875 renamed Composer package (fabpot)
+* minor #1882 Runner - Handle throwables too (GrahamCampbell)
+* minor #1886 PhpdocScalarFixer - Fix lowercase str to string too (GrahamCampbell)
+* minor #1940 README.rst - update CI example (keradus)
+* minor #1947 SCA, CS, add more tests (SpacePossum, keradus)
+* minor #1954 tests - stop using deprecated method (sebastianbergmann)
+* minor #1962 TextDiffTest - tests should not produce cache file (keradus)
+* minor #1973 Introduce fast PHP7 based linter (keradus)
+* minor #1999 Runner - No need to determine relative file name twice (localheinz)
+* minor #2002 FileCacheManagerTest - Adjust name of test and variable (localheinz)
+* minor #2010 NoExtraConsecutiveBlankLinesFixer - SF rule set, add 'extra' (SpacePossum)
+* minor #2013 no_whitespace_in_blank_lines -> no_whitespace_in_blank_line (SpacePossum)
+* minor #2024 AbstractFixerTestCase - check if there is no duplicated Token instance inside Tokens collection (keradus)
+* minor #2031 COOKBOOK-FIXERS.md - update calling doTest method (keradus)
+* minor #2032 code grooming (keradus)
+* minor #2068 Code grooming (keradus)
+* minor #2073 DeclareStrictTypesFixer - Remove fix CS fix logic from fixer. (SpacePossum)
+* minor #2088 TokenizerLintingResult - expose line number of parsing error (keradus)
+* minor #2093 Tokens - add block type BLOCK_TYPE_ARRAY_INDEX_CURLY_BRACE (SpacePossum)
+* minor #2095 Transformers - add required PHP version (keradus)
+* minor #2096 Introduce CT for PHP7 (keradus)
+* minor #2119 Create @Symfony:risky ruleset (keradus)
+* minor #2163 ClassKeywordRemoveFixerTest - Fix tests (SpacePossum)
+* minor #2180 FixCommand - don't refer to renamed rules (keradus)
+* minor #2181 Disallow to disable linter (keradus)
+* minor #2194 semicolon_after_instruction,no_unneeded_control_parentheses prio issue (SpacePossum)
+* minor #2199 make fixers less risky (SpacePossum)
+* minor #2206 Add PHP70Migration ruleset (keradus)
+* minor #2217 SelfUpdateCommand - Print version of update fixer (SpacePossum)
+* minor #2223 update integration test format (keradus)
+* minor #2227 Stop polluting global namespace with CT (keradus)
+* minor #2237 DX: extend integration tests for PSR2 and Symfony rulesets (keradus)
+* minor #2240 Make some objects immutable (keradus)
+* minor #2251 ProtectedToPrivateFixer - fix priority, fix comments with new fixer names (SpacePossum)
+* minor #2252 ClassDefinitionFixer - Set configuration of the fixer in the RuleSet of SF. (SpacePossum)
+* minor #2257 extend Symfony_whitespaces itest (keradus)
+* minor #2258 README.rst - indicate configurable rules (keradus)
+* minor #2267 RuleSet - validate set (keradus)
+* minor #2268 Use strict parameters for PHP functions (keradus)
+* minor #2273 fixed typo (fabpot)
+* minor #2274 ShortArraySyntaxFixer/LongArraySyntaxFixer - Merge conflicting fixers (SpacePossum)
+* minor #2275 Clean ups (SpacePossum)
+* minor #2278 Concat*Fixer - unify concat fixers (SpacePossum, keradus)
+* minor #2279 Use Prophecy (keradus)
+* minor #2284 Code grooming (SpacePossum)
+* minor #2285 IntegrationCase is now aware about RuleSet but not Fixers (keradus, SpacePossum)
+* minor #2286 Phpdoc*Fixer - unify rename fixers (SpacePossum, keradus)
+* minor #2288 FixerInterface::configure(null) reset fixer to use default configuration (keradus)
+* minor #2291 Make fixers ready to use directly after creation (keradus)
+* minor #2295 Code grooming (keradus)
+* minor #2296 ProjectCodeTest - make test part of regular testsuite, not standalone one (keradus)
+* minor #2298 ConfigurationResolver - grooming (SpacePossum)
+* minor #2300 Simplify rule set (SpacePossum, keradus)
+* minor #2306 DeclareStrictTypesFixer - do not move tokens (SpacePossum)
+* minor #2312 RuleSet - sort rules (localheinz)
+* minor #2313 DX: provide doctyping for tests (keradus)
+* minor #2317 Add utests (keradus)
+* minor #2318 *TestCase - Reduce visibility of setUp() (localheinz)
+* minor #2319 Code grooming (keradus)
+* minor #2322 DX: use whitemessy aware assertion (keradus)
+* minor #2324 Echo|Print*Fixer - unify printing fixers (SpacePossum, keradus)
+* minor #2337 Normalize rule naming (keradus)
+* minor #2338 Drop hacks for unsupported HHVM (keradus)
+* minor #2339 Add some Fixer descriptions (SpacePossum, keradus)
+* minor #2343 PowToExponentiationFixer - allow to run on 5.6.0 as well (keradus)
+* minor #767 Add @internal tag (keradus)
+* minor #807 Tokens::isMethodNameIsMagic - remove unused method (keradus)
+* minor #809 Split Tokens into Tokens and TokensAnalyzer (keradus)
+* minor #844 Renamed phpdoc_params to phpdoc_align (GrahamCampbell)
+* minor #854 Change default level to PSR2 (keradus)
+* minor #873 Config - using cache by default (keradus)
+* minor #902 change FixerInterface (keradus)
+* minor #911 remove Token::$line (keradus)
+* minor #914 All Transformer classes should be named with Transformer as suffix (keradus)
+* minor #915 add UseTransformer (keradus)
+* minor #916 add ArraySquareBraceTransformer (keradus)
+* minor #917 clean up Transformer tests (keradus)
+* minor #919 CurlyBraceTransformer - one transformer to handle all curly braces transformations (keradus)
+* minor #928 remove Token::getLine (keradus)
+* minor #929 add WhitespacyCommentTransformer (keradus)
+* minor #937 fix docs/typehinting in few classes (keradus)
+* minor #958 FileCacheManager - remove code for BC support (keradus)
+* minor #979 Improve Tokens::clearEmptyTokens performance (keradus)
+* minor #981 Tokens - code grooming (keradus)
+* minor #988 Fixers - no need to search for tokens of given kind in extra loop (keradus)
+* minor #989 No need for loop in Token::equals (keradus)
+
+Changelog for v1.13.3
+---------------------
+
+* minor #3042 Update gitter address (keradus)
+
+Changelog for v1.13.2
+---------------------
+
+* minor #2946 Detect extra old installations (keradus)
+
+Changelog for v1.13.1
+---------------------
+
+* minor #2342 Application - adjust test to not depend on symfony/console version (keradus)
+* minor #2344 AppVeyor: enforce PHP version (keradus)
+
+Changelog for v1.13.0
+---------------------
+
+* bug #2303 ClassDefinitionFixer - Anonymous classes fixing (SpacePossum)
+* feature #2208 Added fixer for PHPUnit's @expectedException annotation (ro0NL)
+* feature #2249 Added ProtectedToPrivateFixer (Slamdunk, SpacePossum)
+* feature #2264 SelfUpdateCommand - Do not update to next major version by default (SpacePossum)
+* feature #2328 ClassDefinitionFixer - Anonymous classes format by PSR12 (SpacePossum)
+* feature #2333 PhpUnitFqcnAnnotationFixer - support more annotations (keradus)
+* minor #2256 EmptyReturnFixer - it's now risky fixer due to null vs void (keradus)
+* minor #2281 Add issue template (SpacePossum)
+* minor #2307 Update .editorconfig (SpacePossum)
+* minor #2310 CI: update AppVeyor to use newest PHP, silence the composer (keradus)
+* minor #2315 Token - Deprecate getLine() (SpacePossum)
+* minor #2320 Clear up status code on 1.x (SpacePossum)
+
+Changelog for v1.12.4
+---------------------
+
+* bug #2235 OrderedImportsFixer - PHP 7 group imports support (SpacePossum)
+* minor #2276 Tokens cleanup (keradus)
+* minor #2277 Remove trailing spaces (keradus)
+* minor #2294 Improve Travis configuration (keradus)
+* minor #2297 Use phpdbg instead of xdebug (keradus)
+* minor #2299 Travis: proper xdebug disabling (keradus)
+* minor #2301 Travis: update platform adjusting (keradus)
+
+Changelog for v1.12.3
+---------------------
+
+* bug #2155 ClassDefinitionFixer - overhaul (SpacePossum)
+* bug #2187 MultipleUseFixer - Fix handling comments (SpacePossum)
+* bug #2209 LinefeedFixer - Fix in a safe way (SpacePossum)
+* bug #2228 NoEmptyLinesAfterPhpdocs, SingleBlankLineBeforeNamespace - Fix priority (SpacePossum)
+* bug #2230 FunctionDeclarationFixer - Fix T_USE case (SpacePossum)
+* bug #2232 Add a test for style of varaible decalration : var (daiglej)
+* bug #2246 Fix itest requirements (keradus)
+* minor #2238 .gitattributes - specified line endings (keradus)
+* minor #2239 IntegrationCase - no longer internal (keradus)
+
+Changelog for v1.12.2
+---------------------
+
+* bug #2191 PhpdocToCommentFixer - fix false positive for docblock of variable (keradus)
+* bug #2193 UnneededControlParenthesesFixer - Fix more return cases. (SpacePossum)
+* bug #2198 FileCacheManager - fix exception message and undefined property (j0k3r)
+* minor #2170 Add dollar sign prefix for consistency (bcremer)
+* minor #2190 .travis.yml - improve Travis speed for tags (keradus)
+* minor #2196 PhpdocTypesFixer - support iterable type (GrahamCampbell)
+* minor #2197 Update cookbook and readme (g105b, SpacePossum)
+* minor #2203 README.rst - change formatting (ro0NL)
+* minor #2204 FixCommand - clean unused var (keradus)
+* minor #2205 Add integration test for iterable type (keradus)
+
+Changelog for v1.12.1
+---------------------
+
+* bug #2144 Remove temporary files not deleted by destructor on failure (adawolfa)
+* bug #2150 SelfUpdateCommand: resolve symlink (julienfalque)
+* bug #2162 Fix issue where an exception is thrown if the cache file exists but is empty. (ikari7789)
+* bug #2164 OperatorsSpacesFixer - Do not unalign double arrow and equals operators (SpacePossum)
+* bug #2167 Rewrite file removal (keradus)
+* minor #2152 Code cleanup (keradus)
+* minor #2154 ShutdownFileRemoval - Fixed file header (GrahamCampbell)
+
+Changelog for v1.12.0
+---------------------
+
+* feature #1493 Added MethodArgumentDefaultValueFixer (lmanzke)
+* feature #1495 BracesFixer - added support for declare (EspadaV8)
+* feature #1518 Added ClassDefinitionFixer (SpacePossum)
+* feature #1543 [PSR-2] Switch case space fixer (Soullivaneuh)
+* feature #1577 Added SpacesAfterSemicolonFixer (SpacePossum)
+* feature #1580 Added HeredocToNowdocFixer (gharlan)
+* feature #1581 UnneededControlParenthesesFixer - add "break" and "continue" support (gharlan)
+* feature #1610 HashToSlashCommentFixer - Add (SpacePossum)
+* feature #1613 ScalarCastFixer - LowerCaseCastFixer - Add (SpacePossum)
+* feature #1659 NativeFunctionCasingFixer - Add (SpacePossum)
+* feature #1661 SwitchCaseSemicolonToColonFixer - Add (SpacePossum)
+* feature #1662 Added CombineConsecutiveUnsetsFixer (SpacePossum)
+* feature #1671 Added NoEmptyStatementFixer (SpacePossum)
+* feature #1705 Added NoUselessReturnFixer (SpacePossum, keradus)
+* feature #1735 Added NoTrailingWhitespaceInCommentFixer (keradus)
+* feature #1750 Add PhpdocSingleLineVarSpacingFixer (SpacePossum)
+* feature #1765 Added NoEmptyPhpdocFixer (SpacePossum)
+* feature #1773 Add NoUselessElseFixer (gharlan, SpacePossum)
+* feature #1786 Added NoEmptyCommentFixer (SpacePossum)
+* feature #1792 Add PhpUnitDedicateAssertFixer. (SpacePossum)
+* feature #1894 BracesFixer - correctly fix indents of anonymous functions/classes (gharlan)
+* feature #1985 Added ClassKeywordRemoveFixer (Soullivaneuh)
+* feature #2020 Added PhpdocAnnotationWithoutDotFixer (keradus)
+* feature #2067 Added DeclareEqualNormalizeFixer (keradus)
+* feature #2078 Added SilencedDeprecationErrorFixer (HeahDude)
+* feature #2082 Added MbStrFunctionsFixer (Slamdunk)
+* bug #1657 SwitchCaseSpaceFixer - Fix spacing between 'case' and semicolon (SpacePossum)
+* bug #1684 SpacesAfterSemicolonFixer - fix loops handling (SpacePossum, keradus)
+* bug #1700 Fixer - resolve import conflict (keradus)
+* bug #1836 NoUselessReturnFixer - Do not remove return if last statement in short if statement (SpacePossum)
+* bug #1879 HeredocToNowdocFixer - Handle space in heredoc token (SpacePossum)
+* bug #1896 FixCommand - Fix escaping of diff output (SpacePossum)
+* bug #2034 IncludeFixer - fix support for close tag (SpacePossum)
+* bug #2040 PhpdocAnnotationWithoutDotFixer - fix crash on odd character (keradus)
+* bug #2041 DefaultFinder should implement FinderInterface (keradus)
+* bug #2050 PhpdocAnnotationWithoutDotFixer - handle ellipsis (keradus)
+* bug #2051 NativeFunctionCasingFixer - call to constructor with default NS of class with name matching native function name fix (SpacePossum)
+* minor #1538 Added possibility to lint tests (gharlan)
+* minor #1569 Add sample to get a specific version of the fixer (Soullivaneuh)
+* minor #1571 Enhance integration tests (keradus)
+* minor #1578 Code grooming (keradus)
+* minor #1583 Travis - update matrix (keradus)
+* minor #1585 Code grooming - Improve utests code coverage (SpacePossum)
+* minor #1586 Add configuration exception classes and exit codes (SpacePossum)
+* minor #1594 Fix invalid PHP code samples in utests (SpacePossum)
+* minor #1597 MethodArgumentDefaultValueFixer - refactoring and fix closures with "use" clause (gharlan)
+* minor #1600 Added more integration tests (SpacePossum, keradus)
+* minor #1605 integration tests - swap EXPECT and INPUT (optional INPUT) (gharlan)
+* minor #1608 Travis - change matrix order for faster results (gharlan)
+* minor #1609 CONTRIBUTING.md - Don't rebase always on master (SpacePossum)
+* minor #1616 IncludeFixer - fix and test more cases (SpacePossum)
+* minor #1622 AbstractIntegratationTest - fix linting test cases (gharlan)
+* minor #1624 fix invalid code in test cases (gharlan)
+* minor #1625 Travis - switch to trusty (keradus)
+* minor #1627 FixCommand - fix output (keradus)
+* minor #1630 Pass along the exception code. (SpacePossum)
+* minor #1632 Php Inspections (EA Extended): SCA for 1.12 (kalessil)
+* minor #1633 Fix CS for project itself (keradus)
+* minor #1634 Backport some minor changes from 2.x line (keradus)
+* minor #1637 update PHP Coveralls (keradus)
+* minor #1639 Revert "Travis - set dist to trusty" (keradus)
+* minor #1641 AppVeyor/Travis - use GITHUB_OAUTH_TOKEN (keradus)
+* minor #1642 AppVeyor - install dev deps as well (keradus)
+* minor #1647 Deprecate non-default Configs and Finders (keradus)
+* minor #1654 Split output to stderr and stdout (SpacePossum)
+* minor #1660 update phpunit version (gharlan)
+* minor #1663 DuplicateSemicolonFixer - Remove duplicate semicolons even if there are comments between those (SpacePossum)
+* minor #1664 IncludeFixer - Add missing test case (SpacePossum)
+* minor #1668 Code grooming (keradus)
+* minor #1669 NativeFunctionCasingFixer - move to Symfony level (keradus)
+* minor #1670 Backport Finder and Config classes from 2.x line (keradus)
+* minor #1682 ElseifFixer - handle comments (SpacePossum)
+* minor #1689 AbstractIntegrationTest - no need for single-char group and docs grooming (keradus)
+* minor #1690 Integration tests - allow to not check priority, introduce IntegrationCase (keradus)
+* minor #1701 Fixer - Renamed import alias (GrahamCampbell)
+* minor #1708 Update composer.json requirements (keradus)
+* minor #1734 Travis: Turn on linting (keradus)
+* minor #1736 Integration tests - don't check priority for tests using short_tag fixer (keradus)
+* minor #1739 NoTrailingWhitespaceInCommentFixer - move to PSR2 level (keradus)
+* minor #1763 Deprecate ConfigInterface::getDir, ConfigInterface::setDir, Finder::setDir (keradus)
+* minor #1777 NoTrailingWhitespaceInCommentFixer - fix parent class (keradus)
+* minor #1816 PhpUnitDedicateAssertFixer - configuration is not required anymore (keradus)
+* minor #1849 DocBlock - The category tag should be together with package (GrahamCampbell)
+* minor #1870 Update README.rst (glensc)
+* minor #1880 FixCommand - fix stdErr detection (SpacePossum)
+* minor #1881 NoEmptyStatementFixer - handle anonymous classes correctly (gharlan)
+* minor #1906 .php_cs - use no_useless_else rule (keradus)
+* minor #1915 NoEmptyComment - move to Symfony level (SpacePossum)
+* minor #1917 BracesFixer - fixed comment handling (gharlan)
+* minor #1919 EmptyReturnFixer - move fixer outside of Symfony level (keradus)
+* minor #2036 OrderedUseFixer - adjust tests (keradus)
+* minor #2056 Travis - run nightly PHP (keradus)
+* minor #2061 UnusedUseFixer and LineAfterNamespace - add new integration test (keradus)
+* minor #2097 Add lambda tests for 7.0 and 7.1 (SpacePossum)
+* minor #2111 .travis.yml - rename PHP 7.1 env (keradus)
+* minor #2112 Fix 1.12 line (keradus)
+* minor #2118 SilencedDeprecationErrorFixer - adjust level (keradus)
+* minor #2132 composer.json - rename package name (keradus)
+* minor #2133 Apply ordered_class_elements rule (keradus)
+* minor #2138 composer.json - disallow to run on PHP 7.2+ (keradus)
+
+Changelog for v1.11.8
+---------------------
+
+* bug #2143 ReadmeCommand - fix running command on phar file (keradus)
+* minor #2129 Add .gitattributes to remove unneeded files (Slamdunk)
+* minor #2141 Move phar building to PHP 5.6 job as newest box.phar is no longer working on 5.3 (keradus)
+
+Changelog for v1.11.7
+---------------------
+
+* bug #2108 ShortArraySyntaxFixer, TernarySpacesFixer, UnalignEqualsFixer - fix priority bug (SpacePossum)
+* bug #2092 ConcatWithoutSpacesFixer, OperatorsSpacesFixer - fix too many spaces, fix incorrect fixing of lines with comments (SpacePossum)
+
+Changelog for v1.11.6
+---------------------
+
+* bug #2086 Braces - fix bug with comment in method prototype (keradus)
+* bug #2077 SingleLineAfterImportsFixer - Do not remove lines between use cases (SpacePossum)
+* bug #2079 TernarySpacesFixer - Remove multiple spaces (SpacePossum)
+* bug #2087 Fixer - handle PHP7 Errors as well (keradus)
+* bug #2072 LowercaseKeywordsFixer - handle CT_CLASS_CONSTANT (tgabi333)
+* bug #2066 LineAfterNamespaceFixer - Handle close tag (SpacePossum)
+* bug #2057 LineAfterNamespaceFixer - adding too much extra lines where namespace is last statement (keradus)
+* bug #2059 OperatorsSpacesFixer - handle declare statement (keradus)
+* bug #2060 UnusedUseFixer - fix handling whitespaces around removed import (keradus)
+* minor #2071 ShortEchoTagFixer - allow to run tests on PHP 5.3 (keradus)
+
+Changelog for v1.11.5
+---------------------
+
+* bug #2012 Properly build phar file for lowest supported PHP version (keradus)
+* bug #2037 BracesFixer - add support for anonymous classes (keradus)
+* bug #1989 Add support for PHP 7 namespaces (SpacePossum)
+* bug #2019 Fixing newlines added after curly brace string index access (jaydiablo)
+* bug #1840 [Bug] BracesFixer - Do add a line before close tag (SpacePossum)
+* bug #1994 EchoToPrintFixer - Fix T_OPEN_TAG_WITH_ECHO on hhvm (keradus)
+* bug #1970 Tokens - handle semi-reserved PHP 7 keywords (keradus)
+* minor #2017 PHP7 integration tests (keradus)
+* minor #1465 Bump supported HHVM version, improve ShortEchoTagFixer on HHVM (keradus)
+* minor #1995 Rely on own phpunit, not one from CI service (keradus)
+
+Changelog for v1.11.4
+---------------------
+
+* bug #1956 SelfUpdateCommand - don't update to non-stable version (keradus)
+* bug #1963 Fix not wanted unneeded_control_parentheses fixer for clone (Soullivaneuh)
+* bug #1960 Fix invalid test cases (keradus)
+* bug #1939 BracesFixer - fix handling comment around control token (keradus)
+* minor #1927 NewWithBracesFixer - remove invalid testcase (keradus)
+
+Changelog for v1.11.3
+---------------------
+
+* bug #1868 NewWithBracesFixer - fix handling more neighbor tokens (keradus)
+* bug #1893 BracesFixer - handle comments inside lambda function prototype (keradus)
+* bug #1806 SelfAccessorFixer - skip anonymous classes (gharlan)
+* bug #1813 BlanklineAfterOpenTagFixer, NoBlankLinesBeforeNamespaceFixer - fix priority (SpacePossum)
+* minor #1807 Tokens - simplify isLambda() (gharlan)
+
+Changelog for v1.11.2
+---------------------
+
+* bug #1776 EofEndingFixer - new line on end line comment is allowed (Slamdunk)
+* bug #1775 FileCacheManager - ignore corrupted serialized data (keradus)
+* bug #1769 FunctionDeclarationFixer - fix more cases (keradus)
+* bug #1747 Fixer - Fix ordering of fixer when both level and custom fixers are used (SpacePossum)
+* bug #1744 Fixer - fix rare situation when file was visited twice (keradus)
+* bug #1710 LowercaseConstantFixer - Fix comment cases. (SpacePossum)
+* bug #1711 FunctioncallSpaceFixer - do not touch function declarations. (SpacePossum)
+* minor #1798 LintManager - meaningful tempnam (Slamdunk)
+* minor #1759 UniqueFileIterator - performance improvement (GrahamCampbell)
+* minor #1745 appveyor - fix build (keradus)
+
+Changelog for v1.11.1
+---------------------
+
+* bug #1680 NewWithBracesFixer - End tags (SpacePossum)
+* bug #1685 EmptyReturnFixer - Make independent of LowercaseConstantsFixer (SpacePossum)
+* bug #1640 IntegrationTest - fix directory separator (keradus)
+* bug #1595 ShortTagFixer - fix priority (keradus)
+* bug #1576 SpacesBeforeSemicolonFixer - do not remove space before semicolon if that space is after a semicolon (SpacePossum)
+* bug #1570 UnneededControlParenthesesFixer - fix test samples (keradus)
+* minor #1653 Update license year (gharlan)
+
+Changelog for v1.11
+-------------------
+
+* feature #1550 Added UnneededControlParenthesesFixer (Soullivaneuh, keradus)
+* feature #1532 Added ShortBoolCastFixer (SpacePossum)
+* feature #1523 Added EchoToPrintFixer and PrintToEchoFixer (Soullivaneuh)
+* feature #1552 Warn when running with xdebug extension (SpacePossum)
+* feature #1484 Added ArrayElementNoSpaceBeforeCommaFixer and ArrayElementWhiteSpaceAfterCommaFixer (amarczuk)
+* feature #1449 PhpUnitConstructFixer - Fix more use cases (SpacePossum)
+* feature #1382 Added PhpdocTypesFixer (GrahamCampbell)
+* feature #1384 Add integration tests (SpacePossum)
+* feature #1349 Added FunctionTypehintSpaceFixer (keradus)
+* minor #1562 Fix invalid PHP code samples in utests (SpacePossum)
+* minor #1560 Fixed project name in xdebug warning (gharlan)
+* minor #1545 Fix invalid PHP code samples in utests (SpacePossum)
+* minor #1554 Alphabetically sort entries in .gitignore (GrahamCampbell)
+* minor #1527 Refactor the way types work on annotations (GrahamCampbell)
+* minor #1546 Update coding guide in cookbook (keradus)
+* minor #1526 Support more annotations when fixing types in phpdoc (GrahamCampbell)
+* minor #1535 clean ups (SpacePossum)
+* minor #1510 Added Symfony 3.0 support (Ener-Getick)
+* minor #1520 Code grooming (keradus)
+* minor #1515 Support property, property-read and property-write tags (GrahamCampbell)
+* minor #1488 Added more inline phpdoc tests (GrahamCampbell)
+* minor #1496 Add docblock to AbstractFixerTestBase::makeTest (lmanzke)
+* minor #1467 PhpdocShortDescriptionFixer - add support for Japanese sentence-ending characters (fritz-c)
+* minor #1453 remove calling array_keys in foreach loops (keradus)
+* minor #1448 Code grooming (keradus)
+* minor #1437 Added import fixers integration test (GrahamCampbell)
+* minor #1433 phpunit.xml.dist - disable gc (keradus)
+* minor #1427 Change arounded to surrounded in README.rst (36degrees)
+* minor #1420 AlignDoubleArrowFixer, AlignEqualsFixer - add integration tests (keradus)
+* minor #1423 appveyor.yml - do not cache C:\tools, its internal forAppVeyor (keradus)
+* minor #1400 appveyor.yml - add file (keradus)
+* minor #1396 AbstractPhpdocTypesFixer - instance method should be called on instance (keradus)
+* minor #1395 code grooming (keradus)
+* minor #1393 boost .travis.yml file (keradus)
+* minor #1372 Don't allow PHP 7 to fail (GrahamCampbell)
+* minor #1332 PhpUnitConstructFixer - fix more functions (keradus)
+* minor #1339 CONTRIBUTING.md - add link to PSR-5 (keradus)
+* minor #1346 Core grooming (SpacePossum)
+* minor #1328 Tokens: added typehint for Iterator elements (gharlan)
+
+Changelog for v1.10.3
+---------------------
+
+* bug #1559 WhitespacyLinesFixer - fix bug cases (SpacePossum, keradus)
+* bug #1541 Psr0Fixer - Ignore filenames that are a reserved keyword or predefined constant (SpacePossum)
+* bug #1537 Psr0Fixer - ignore file without name or with name started by digit (keradus)
+* bug #1516 FixCommand - fix wrong message for dry-run (SpacePossum)
+* bug #1486 ExtraEmptyLinesFixer - Remove extra lines after comment lines too (SpacePossum)
+* bug #1503 Psr0Fixer - fix case with comments lying around (GrahamCampbell)
+* bug #1474 PhpdocToCommentFixer - fix not properly fixing for block right after namespace (GrahamCampbell)
+* bug #1478 BracesFixer - do not remove empty lines after class opening (keradus)
+* bug #1468 Add missing ConfigInterface::getHideProgress() (Eugene Leonovich, rybakit)
+* bug #1466 Fix bad indent on align double arrow fixer (Soullivaneuh, keradus)
+* bug #1479 Tokens - fix detection of short array (keradus)
+
+Changelog for v1.10.2
+---------------------
+
+* bug #1461 PhpUnitConstructFixer - fix case when first argument is an expression (keradus)
+* bug #1460 AlignDoubleArrowFixer - fix handling of nested arrays (Soullivaneuh, keradus)
+
+Changelog for v1.10.1
+---------------------
+
+* bug #1424 Fixed the import fixer priorities (GrahamCampbell)
+* bug #1444 OrderedUseFixer - fix next case (keradus)
+* bug #1441 BracesFixer - fix next case (keradus)
+* bug #1422 AlignDoubleArrowFixer - fix handling of nested array (SpacePossum)
+* bug #1425 PhpdocInlineTagFixerTest - fix case when met inalid PHPDoc (keradus)
+* bug #1419 AlignDoubleArrowFixer, AlignEqualsFixer - fix priorities (keradus)
+* bug #1415 BlanklineAfterOpenTagFixer - Do not add a line break if there is one already. (SpacePossum)
+* bug #1410 PhpdocIndentFixer - Fix for open tag (SpacePossum)
+* bug #1401 PhpdocVarWithoutNameFixer - Fixed the var without name fixer for inline docs (keradus, GrahamCampbell)
+* bug #1369 Fix not well-formed XML output (junichi11)
+* bug #1356 Psr0Fixer - disallow run on StdinFileInfo (keradus)
+
+Changelog for v1.10
+-------------------
+
+* feature #1306 Added LogicalNotOperatorsWithSuccessorSpaceFixer (phansys)
+* feature #1286 Added PhpUnitConstructFixer (keradus)
+* feature #1316 Added PhpdocInlineTagFixer (SpacePossum, keradus)
+* feature #1303 Added LogicalNotOperatorsWithSpacesFixer (phansys)
+* feature #1279 Added PhpUnitStrictFixer (keradus)
+* feature #1267 SingleQuoteFixer fix more use cases (SpacePossum)
+* minor #1319 PhpUnitConstructFixer - fix performance and add to local .php_cs (keradus)
+* minor #1280 Fix non-utf characters in docs (keradus)
+* minor #1274 Cookbook - No change auto-test note (Soullivaneuh)
+
+Changelog for v1.9.3
+--------------------
+
+* bug #1327 DocBlock\Tag - keep the case of tags (GrahamCampbell)
+
+Changelog for v1.9.2
+--------------------
+
+* bug #1313 AlignDoubleArrowFixer - fix aligning after UTF8 chars (keradus)
+* bug #1296 PhpdocScalarFixer - fix property annotation too (GrahamCampbell)
+* bug #1299 WhitespacyLinesFixer - spaces on next valid line must not be fixed (Slamdunk)
+
+Changelog for v1.9.1
+--------------------
+
+* bug #1288 TrimArraySpacesFixer - fix moving first comment (keradus)
+* bug #1287 PhpdocParamsFixer - now works on any indentation level (keradus)
+* bug #1278 Travis - fix PHP7 build (keradus)
+* bug #1277 WhitespacyLinesFixer - stop changing non-whitespacy tokens (SpacePossum, SamBurns-awin, keradus)
+* bug #1224 TrailingSpacesFixer - stop changing non-whitespacy tokens (SpacePossum, SamBurns-awin, keradus)
+* bug #1266 FunctionCallSpaceFixer - better detection of function call (funivan)
+* bug #1255 make sure some phpdoc fixers are run in right order (SpacePossum)
+
+Changelog for v1.9
+------------------
+
+* feature #1097 Added ShortEchoTagFixer (vinkla)
+* minor #1238 Fixed error handler to respect current error_reporting (JanJakes)
+* minor #1234 Add class to exception message, use sprintf for exceptions (SpacePossum)
+* minor #1210 set custom error handler for application run (keradus)
+* minor #1214 Tokens::isMonolithicPhp - enhance performance (keradus)
+* minor #1207 Update code documentation (keradus)
+* minor #1202 Update IDE tool urls (keradus)
+* minor #1195 PreIncrementFixer - move to Symfony level (gharlan)
+
+Changelog for v1.8.1
+--------------------
+
+* bug #1193 EofEndingFixer - do not add an empty line at EOF if the PHP tags have been closed (SpacePossum)
+* bug #1209 PhpdocParamsFixer - fix corrupting following custom annotation (keradus)
+* bug #1205 BracesFixer - fix missing indentation fixes for class level (keradus)
+* bug #1204 Tag - fix treating complex tag as simple PhpDoc tag (keradus)
+* bug #1198 Tokens - fixed unary/binary operator check for type-hinted reference arguments (gharlan)
+* bug #1201 Php4ConstructorFixer - fix invalid handling of subnamespaces (gharlan)
+* minor #1221 Add more tests (SpacePossum)
+* minor #1216 Tokens - Add unit test for array detection (SpacePossum)
+
+Changelog for v1.8
+------------------
+
+* feature #1168 Added UnalignEqualsFixer (keradus)
+* feature #1167 Added UnalignDoubleArrowFixer (keradus)
+* bug #1169 ToolInfo - Fix way to find script dir (sp-ian-monge)
+* minor #1181 composer.json - Update description (SpacePossum)
+* minor #1180 create Tokens::overrideAt method (keradus)
+
+Changelog for v1.7.1
+--------------------
+
+* bug #1165 BracesFixer - fix bug when comment is a first statement in control structure without braces (keradus)
+
+Changelog for v1.7
+------------------
+
+* feature #1113 Added PreIncrementFixer (gharlan)
+* feature #1144 Added PhpdocNoAccessFixer (GrahamCampbell)
+* feature #1116 Added SelfAccessorFixer (gharlan)
+* feature #1064 OperatorsSpacesFixer enhancements (gharlan)
+* bug #1151 Prevent token collection corruption by fixers (stof, keradus)
+* bug #1152 LintManager - fix handling of temporary file (keradus)
+* bug #1139 NamespaceNoLeadingWhitespaceFixer - remove need for ctype extension (keradus)
+* bug #1117 Tokens - fix iterator used with foreach by reference (keradus)
+* minor #1148 code grooming (keradus)
+* minor #1142 We are actually PSR-4, not PSR-0 (GrahamCampbell)
+* minor #1131 Phpdocs and typos (SpacePossum)
+* minor #1069 state min HHVM version (keradus)
+* minor #1129 [DX] Help developers choose the right branch (SpacePossum)
+* minor #1138 PhpClosingTagFixer - simplify flow, no need for loop (keradus)
+* minor #1123 Reference mismatches fixed, SCA (kalessil)
+* minor #1109 SingleQuoteFixer - made fixer more accurate (gharlan)
+* minor #1110 code grooming (kalessil)
+
+Changelog for v1.6.2
+--------------------
+
+* bug #1149 UnusedUseFixer - must be run before LineAfterNamespaceFixer, fix token collection corruption (keradus)
+* minor #1145 AbstractLinesBeforeNamespaceFixer - fix docs for fixLinesBeforeNamespace (GrahamCampbell)
+
+Changelog for v1.6.1
+--------------------
+
+* bug #1108 UnusedUseFixer - fix false positive when name is used as part of another namespace (gharlan)
+* bug #1114 Fixed PhpdocParamsFixer with malformed doc block (gharlan)
+* minor #1135 PhpdocTrimFixer - fix doc typo (localheinz)
+* minor #1093 Travis - test lowest dependencies (boekkooi)
+
+Changelog for v1.6
+------------------
+
+* feature #1089 Added NewlineAfterOpenTagFixer and BlanklineAfterOpenTagFixer (ceeram, keradus)
+* feature #1090 Added TrimArraySpacesFixer (jaredh159, keradus)
+* feature #1058 Added SingleQuoteFixer (gharlan)
+* feature #1059 Added LongArraySyntaxFixer (gharlan)
+* feature #1037 Added PhpdocScalarFixer (GrahamCampbell, keradus)
+* feature #1028 Add ListCommasFixer (keradus)
+* bug #1047 Utils::camelCaseToUnderscore - fix regexp (odin-delrio)
+* minor #1073 ShortTagFixer enhancement (gharlan)
+* minor #1079 Use LongArraySyntaxFixer for this repo (gharlan)
+* minor #1070 Tokens::isMonolithicPhp - remove unused T_CLOSE_TAG search (keradus)
+* minor #1049 OrderedUseFixer - grooming (keradus)
+
+Changelog for v1.5.2
+--------------------
+
+* bug #1025 Fixer - ignore symlinks (kix)
+* bug #1071 Psr0Fixer - fix bug for fixing file with long extension like .class.php (keradus)
+* bug #1080 ShortTagFixer - fix false positive (gharlan)
+* bug #1066 Php4ConstructorFixer - fix causing infinite recursion (mbeccati)
+* bug #1056 VisibilityFixer - fix T_VAR with multiple props (localheinz, keradus)
+* bug #1065 Php4ConstructorFixer - fix detection of a PHP4 parent constructor variant (mbeccati)
+* bug #1060 Tokens::isShortArray: tests and bugfixes (gharlan)
+* bug #1057 unused_use: fix false positive when name is only used as variable name (gharlan)
+
+Changelog for v1.5.1
+--------------------
+
+* bug #1054 VisibilityFixer - fix var with array value assigned (localheinz, keradus)
+* bug #1048 MultilineArrayTrailingCommaFixer, SingleArrayNoTrailingCommaFixer - using heredoc inside array not cousing to treat it as multiline array (keradus)
+* bug #1043 PhpdocToCommentFixer - also check other control structures, besides foreach (ceeram)
+* bug #1045 OrderedUseFixer - fix namespace order for trailing digits (rusitschka)
+* bug #1035 PhpdocToCommentFixer - Add static as valid keyword for structural element (ceeram)
+* bug #1020 BracesFixer - fix missing braces for nested if elseif else (malengrin)
+* minor #1036 Added php7 to travis build (fonsecas72)
+* minor #1026 Fix typo in ShortArraySyntaxFixer (tommygnr)
+* minor #1024 code grooming (keradus)
+
+Changelog for v1.5
+------------------
+
+* feature #887 Added More Phpdoc Fixers (GrahamCampbell, keradus)
+* feature #1002 Add HeaderCommentFixer (ajgarlag)
+* feature #974 Add EregToPregFixer (mbeccati)
+* feature #970 Added Php4ConstructorFixer (mbeccati)
+* feature #997 Add PhpdocToCommentFixer (ceeram, keradus)
+* feature #932 Add NoBlankLinesAfterClassOpeningFixer (ceeram)
+* feature #879 Add SingleBlankLineBeforeNamespaceFixer and NoBlankLinesBeforeNamespaceFixer (GrahamCampbell)
+* feature #860 Add single_line_after_imports fixer (ceeram)
+* minor #1014 Fixed a few file headers (GrahamCampbell)
+* minor #1011 Fix HHVM as it works different than PHP (keradus)
+* minor #1010 Fix invalid UTF-8 char in docs (ajgarlag)
+* minor #1003 Fix header comment in php files (ajgarlag)
+* minor #1005 Add Utils::calculateBitmask method (keradus)
+* minor #973 Add Tokens::findSequence (mbeccati)
+* minor #991 Longer explanation of how to use blacklist (bmitch, networkscraper)
+* minor #972 Add case sensitive option to the tokenizer (mbeccati)
+* minor #986 Add benchmark script (dericofilho)
+* minor #985 Fix typo in COOKBOOK-FIXERS.md (mattleff)
+* minor #978 Token - fix docs (keradus)
+* minor #957 Fix Fixers methods order (GrahamCampbell)
+* minor #944 Enable caching of composer downloads on Travis (stof)
+* minor #941 EncodingFixer - enhance tests (keradus)
+* minor #938 Psr0Fixer - remove unneded assignment (keradus)
+* minor #936 FixerTest - test description consistency (keradus)
+* minor #933 NoEmptyLinesAfterPhpdocsFixer - remove unneeded code, clarify description (ceeram)
+* minor #934 StdinFileInfo::getFilename - Replace phpdoc with normal comment and add back empty line before return (ceeram)
+* minor #927 Exclude the resources folder from coverage reports (GrahamCampbell)
+* minor #926 Update Token::isGivenKind phpdoc (GrahamCampbell)
+* minor #925 Improved AbstractFixerTestBase (GrahamCampbell)
+* minor #922 AbstractFixerTestBase::makeTest - test if input is different than expected (keradus)
+* minor #904 Refactoring Utils (GrahamCampbell)
+* minor #901 Improved Readme Formatting (GrahamCampbell)
+* minor #898 Tokens::getImportUseIndexes - simplify function (keradus)
+* minor #897 phpunit.xml.dist - split testsuite (keradus)
+
+Changelog for v1.4.2
+--------------------
+
+* bug #994 Fix detecting of short arrays (keradus)
+* bug #995 DuplicateSemicolonFixer - ignore duplicated semicolons inside T_FOR (keradus)
+
+Changelog for v1.4.1
+--------------------
+
+* bug #990 MultilineArrayTrailingCommaFixer - fix case with short array on return (keradus)
+* bug #975 NoEmptyLinesAfterPhpdocsFixer - fix only when documentation documents sth (keradus)
+* bug #976 PhpdocIndentFixer - fix error when there is a comment between docblock and next meaningful token (keradus, ceeram)
+
+Changelog for v1.4
+------------------
+
+* feature #841 PhpdocParamsFixer: added aligning var/type annotations (GrahamCampbell)
+* bug #965 Fix detection of lambda function that returns a reference (keradus)
+* bug #962 PhpdocIndentFixer - fix bug when documentation is on the end of braces block (keradus)
+* bug #961 Fixer - fix handling of empty file (keradus)
+* bug #960 IncludeFixer - fix bug when include is part of condition statement (keradus)
+* bug #954 AlignDoubleArrowFixer - fix new buggy case (keradus)
+* bug #955 ParenthesisFixer - fix case with list call with trailing comma (keradus)
+* bug #950 Tokens::isLambda - fix detection near comments (keradus)
+* bug #951 Tokens::getImportUseIndexes - fix detection near comments (keradus)
+* bug #949 Tokens::isShortArray - fix detection near comments (keradus)
+* bug #948 NewWithBracesFixer - fix case with multidimensional array (keradus)
+* bug #945 Skip files containing __halt_compiler() on PHP 5.3 (stof)
+* bug #946 BracesFixer - fix typo in exception name (keradus)
+* bug #940 Tokens::setCode - apply missing transformation (keradus)
+* bug #908 BracesFixer - fix invalide inserting brace for control structure without brace and lambda inside of it (keradus)
+* bug #903 NoEmptyLinesAfterPhpdocsFixer - fix bug with Windows style lines (GrahamCampbell)
+* bug #895 [PSR-2] Preserve blank line after control structure opening brace (marcaube)
+* bug #892 Fixed the double arrow multiline whitespace fixer (GrahamCampbell)
+* bug #874 BracesFixer - fix bug of removing empty lines after class' opening { (ceeram)
+* bug #868 BracesFixer - fix missing braces when statement is not followed by ; (keradus)
+* bug #861 Updated PhpdocParamsFixer not to change line endings (keradus, GrahamCampbell)
+* bug #837 FixCommand - stop corrupting xml/json format (keradus)
+* bug #846 Made phpdoc_params run after phpdoc_indent (GrahamCampbell)
+* bug #834 Correctly handle tab indentation (ceeram)
+* bug #822 PhpdocIndentFixer - Ignore inline docblocks (ceeram)
+* bug #813 MultilineArrayTrailingCommaFixer - do not move array end to new line (keradus)
+* bug #817 LowercaseConstantsFixer - ignore class' constants TRUE/FALSE/NULL (keradus)
+* bug #821 JoinFunctionFixer - stop changing declaration method name (ceeram)
+* minor #963 State the minimum version of PHPUnit in CONTRIBUTING.md (SpacePossum)
+* minor #943 Improve the cookbook to use relative links (stof)
+* minor #921 Add changelog file (keradus)
+* minor #909 BracesFixerTest - no \n line in \r\n test (keradus)
+* minor #864 Added NoEmptyLinesAfterPhpdocsFixer (GrahamCampbell)
+* minor #871 Added missing author (GrahamCampbell)
+* minor #852 Fixed the coveralls version constraint (GrahamCampbell)
+* minor #863 Tweaked testRetainsNewLineCharacters (GrahamCampbell)
+* minor #849 Removed old alias (GrahamCampbell)
+* minor #843 integer should be int (GrahamCampbell)
+* minor #830 Remove whitespace before opening tag (ceeram)
+* minor #835 code grooming (keradus)
+* minor #828 PhpdocIndentFixerTest - code grooming (keradus)
+* minor #827 UnusedUseFixer - code grooming (keradus)
+* minor #825 improve code coverage (keradus)
+* minor #810 improve code coverage (keradus)
+* minor #811 ShortArraySyntaxFixer - remove not needed if statement (keradus)
+
+Changelog for v1.3
+------------------
+
+* feature #790 Add docblock indent fixer (ceeram)
+* feature #771 Add JoinFunctionFixer (keradus)
+* bug #798 Add DynamicVarBrace Transformer for properly handling ${$foo} syntax (keradus)
+* bug #796 LowercaseConstantsFixer - rewrite to handle new test cases (keradus)
+* bug #789 T_CASE is not succeeded by parentheses (dericofilho)
+* minor #814 Minor improvements to the phpdoc_params fixer (GrahamCampbell)
+* minor #815 Minor fixes (GrahamCampbell)
+* minor #782 Cookbook on how to make a new fixer (dericofilho)
+* minor #806 Fix Tokens::detectBlockType call (keradus)
+* minor #758 travis - disable sudo (keradus)
+* minor #808 Tokens - remove commented code (keradus)
+* minor #802 Address Sensiolabs Insight's warning of code cloning. (dericofilho)
+* minor #803 README.rst - fix \` into \`\` (keradus)
+
+Changelog for v1.2
+------------------
+
+* feature #706 Remove lead slash (dericofilho)
+* feature #740 Add EmptyReturnFixer (GrahamCampbell)
+* bug #775 PhpClosingTagFixer - fix case with T_OPEN_TAG_WITH_ECHO (keradus)
+* bug #756 Fix broken cases for AlignDoubleArrowFixer (dericofilho)
+* bug #763 MethodArgumentSpaceFixer - fix receiving data in list context with omitted values (keradus)
+* bug #759 Fix Tokens::isArrayMultiLine (stof, keradus)
+* bug #754 LowercaseKeywordsFixer - __HALT_COMPILER must not be lowercased (keradus)
+* bug #753 Fix for double arrow misalignment in deeply nested arrays. (dericofilho)
+* bug #752 OrderedUseFixer should be case-insensitive (rusitschka)
+* minor #779 Fixed a docblock type (GrahamCampbell)
+* minor #765 Typehinting in FileCacheManager, remove unused variable in Tokens (keradus)
+* minor #764 SelfUpdateCommand - get local version only if remote version was successfully obtained (keradus)
+* minor #761 aling => (keradus)
+* minor #757 Some minor code simplify and extra test (keradus)
+* minor #713 Download php-cs-fixer.phar without sudo (michaelsauter)
+* minor #742 Various Minor Improvements (GrahamCampbell)
+
+Changelog for v1.1
+------------------
+
+* feature #749 remove the --no-progress option (replaced by the standard -v) (fabpot, keradus)
+* feature #728 AlignDoubleArrowFixer - standardize whitespace after => (keradus)
+* feature #647 Add DoubleArrowMultilineWhitespacesFixer (dericofilho, keradus)
+* bug #746 SpacesBeforeSemicolonFixerTest - fix bug with semicolon after comment (keradus)
+* bug #741 Fix caching when composer is installed in custom path (cmodijk)
+* bug #725 DuplicateSemicolonFixer - fix clearing whitespace after duplicated semicolon (keradus)
+* bug #730 Cache busting when fixers list changes (Seldaek)
+* bug #722 Fix lint for STDIN-files (ossinkine)
+* bug #715 TrailingSpacesFixer - fix bug with french UTF-8 chars (keradus)
+* bug #718 Fix package name for composer cache (Seldaek)
+* bug #711 correct vendor name (keradus)
+* minor #745 Show progress by default and allow to disable it (keradus)
+* minor #731 Add a way to disable all default filters and really provide a whitelist (Seldaek)
+* minor #737 Extract tool info into new class, self-update command works now only for PHAR version (keradus)
+* minor #739 fix fabbot issues (keradus)
+* minor #726 update CONTRIBUTING.md for installing dependencies (keradus)
+* minor #736 Fix fabbot issues (GrahamCampbell)
+* minor #727 Fixed typos (pborreli)
+* minor #719 Add update instructions for composer and caching docs (Seldaek)
+
+Changelog for v1.0
+------------------
+
+First stable release.
diff --git a/lib/composer/friendsofphp/php-cs-fixer/CONTRIBUTING.md b/lib/composer/friendsofphp/php-cs-fixer/CONTRIBUTING.md
new file mode 100644
index 0000000000000..4b4f5e3919d4d
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/CONTRIBUTING.md
@@ -0,0 +1,41 @@
+# Contributions Are Welcome!
+
+If you need any help, don't hesitate to ask the community on [Gitter](https://gitter.im/PHP-CS-Fixer/Lobby).
+
+## Quick Guide
+
+* [Fork](https://help.github.com/articles/fork-a-repo/) the repo.
+* [Checkout](https://git-scm.com/docs/git-checkout) the branch you want to make changes on:
+ * If you are fixing a bug or typo, improving tests or for any small tweak: the lowest branch where the changes can be applied. Once your Pull Request is accepted, the changes will get merged up to highest branches.
+ * `master` in other cases (new feature, deprecation, or backwards compatibility breaking changes). Note that most of the time, `master` represents the next minor release of PHP CS Fixer, so Pull Requests that break backwards compatibility might be postponed.
+* Install dependencies: `composer install`.
+* Create a new branch, e.g. `feature-foo` or `bugfix-bar`.
+* Make changes.
+* If you are adding functionality or fixing a bug - add a test! Prefer adding new test cases over modifying existing ones.
+* Make sure there is no trailing spaces in code: `./check_trailing_spaces.sh`.
+* Regenerate README: `php php-cs-fixer readme > README.rst`. Do not modify `README.rst` manually!
+* Check if tests pass: `vendor/bin/phpunit`.
+* Fix project itself: `php php-cs-fixer fix`.
+
+## Opening a [Pull Request](https://help.github.com/articles/about-pull-requests/)
+
+You can do some things to increase the chance that your Pull Request is accepted the first time:
+
+* Submit one Pull Request per fix or feature.
+* If your changes are not up to date, [rebase](https://git-scm.com/docs/git-rebase) your branch onto the parent branch.
+* Follow the conventions used in the project.
+* Remember about tests and documentation.
+* Don't bump version.
+
+## Making New Fixers
+
+There is a [cookbook](doc/COOKBOOK-FIXERS.md) with basic instructions on how to build a new fixer. Consider reading it
+before opening a PR.
+
+## Project's Standards
+
+* [PSR-1: Basic Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md)
+* [PSR-2: Coding Style Guide](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)
+* [PSR-4: Autoloading Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md)
+* [PSR-5: PHPDoc (draft)](https://github.com/phpDocumentor/fig-standards/blob/master/proposed/phpdoc.md)
+* [Symfony Coding Standards](https://symfony.com/doc/current/contributing/code/standards.html)
diff --git a/lib/composer/friendsofphp/php-cs-fixer/LICENSE b/lib/composer/friendsofphp/php-cs-fixer/LICENSE
new file mode 100644
index 0000000000000..e060f2ac162c9
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/LICENSE
@@ -0,0 +1,20 @@
+Copyright (c) 2012-2020 Fabien Potencier
+ Dariusz Rumiński
+
+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/lib/composer/friendsofphp/php-cs-fixer/README.rst b/lib/composer/friendsofphp/php-cs-fixer/README.rst
new file mode 100644
index 0000000000000..cc6b17ff58f88
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/README.rst
@@ -0,0 +1,2188 @@
+PHP Coding Standards Fixer
+==========================
+
+The PHP Coding Standards Fixer (PHP CS Fixer) tool fixes your code to follow standards;
+whether you want to follow PHP coding standards as defined in the PSR-1, PSR-2, etc.,
+or other community driven ones like the Symfony one.
+You can **also** define your (team's) style through configuration.
+
+It can modernize your code (like converting the ``pow`` function to the ``**`` operator on PHP 5.6)
+and (micro) optimize it.
+
+If you are already using a linter to identify coding standards problems in your
+code, you know that fixing them by hand is tedious, especially on large
+projects. This tool does not only detect them, but also fixes them for you.
+
+The PHP CS Fixer is maintained on GitHub at https://github.com/FriendsOfPHP/PHP-CS-Fixer
+bug reports and ideas about new features are welcome there.
+
+You can talk to us at https://gitter.im/PHP-CS-Fixer/Lobby about the project,
+configuration, possible improvements, ideas and questions, please visit us!
+
+Requirements
+------------
+
+PHP needs to be a minimum version of PHP 5.6.0.
+
+Installation
+------------
+
+Locally
+~~~~~~~
+
+Download the `php-cs-fixer.phar`_ file and store it somewhere on your computer.
+
+Globally (manual)
+~~~~~~~~~~~~~~~~~
+
+You can run these commands to easily access latest ``php-cs-fixer`` from anywhere on
+your system:
+
+.. code-block:: bash
+
+ $ wget https://cs.symfony.com/download/php-cs-fixer-v2.phar -O php-cs-fixer
+
+or with specified version:
+
+.. code-block:: bash
+
+ $ wget https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v2.16.3/php-cs-fixer.phar -O php-cs-fixer
+
+or with curl:
+
+.. code-block:: bash
+
+ $ curl -L https://cs.symfony.com/download/php-cs-fixer-v2.phar -o php-cs-fixer
+
+then:
+
+.. code-block:: bash
+
+ $ sudo chmod a+x php-cs-fixer
+ $ sudo mv php-cs-fixer /usr/local/bin/php-cs-fixer
+
+Then, just run ``php-cs-fixer``.
+
+Globally (Composer)
+~~~~~~~~~~~~~~~~~~~
+
+To install PHP CS Fixer, `install Composer `_ and issue the following command:
+
+.. code-block:: bash
+
+ $ composer global require friendsofphp/php-cs-fixer
+
+Then make sure you have the global Composer binaries directory in your ``PATH``. This directory is platform-dependent, see `Composer documentation `_ for details. Example for some Unix systems:
+
+.. code-block:: bash
+
+ $ export PATH="$PATH:$HOME/.composer/vendor/bin"
+
+Globally (homebrew)
+~~~~~~~~~~~~~~~~~~~
+
+.. code-block:: bash
+
+ $ brew install php-cs-fixer
+
+Locally (PHIVE)
+~~~~~~~~~~~~~~~
+
+Install `PHIVE `_ and issue the following command:
+
+.. code-block:: bash
+
+ $ phive install php-cs-fixer # use `--global` for global install
+
+Update
+------
+
+Locally
+~~~~~~~
+
+The ``self-update`` command tries to update ``php-cs-fixer`` itself:
+
+.. code-block:: bash
+
+ $ php php-cs-fixer.phar self-update
+
+Globally (manual)
+~~~~~~~~~~~~~~~~~
+
+You can update ``php-cs-fixer`` through this command:
+
+.. code-block:: bash
+
+ $ sudo php-cs-fixer self-update
+
+Globally (Composer)
+~~~~~~~~~~~~~~~~~~~
+
+You can update ``php-cs-fixer`` through this command:
+
+.. code-block:: bash
+
+ $ ./composer.phar global update friendsofphp/php-cs-fixer
+
+Globally (homebrew)
+~~~~~~~~~~~~~~~~~~~
+
+You can update ``php-cs-fixer`` through this command:
+
+.. code-block:: bash
+
+ $ brew upgrade php-cs-fixer
+
+Locally (PHIVE)
+~~~~~~~~~~~~~~~
+
+.. code-block:: bash
+
+ $ phive update php-cs-fixer
+
+Usage
+-----
+
+The ``fix`` command tries to fix as much coding standards
+problems as possible on a given file or files in a given directory and its subdirectories:
+
+.. code-block:: bash
+
+ $ php php-cs-fixer.phar fix /path/to/dir
+ $ php php-cs-fixer.phar fix /path/to/file
+
+By default ``--path-mode`` is set to ``override``, which means, that if you specify the path to a file or a directory via
+command arguments, then the paths provided to a ``Finder`` in config file will be ignored. You can use ``--path-mode=intersection``
+to merge paths from the config file and from the argument:
+
+.. code-block:: bash
+
+ $ php php-cs-fixer.phar fix --path-mode=intersection /path/to/dir
+
+The ``--format`` option for the output format. Supported formats are ``txt`` (default one), ``json``, ``xml``, ``checkstyle``, ``junit`` and ``gitlab``.
+
+NOTE: the output for the following formats are generated in accordance with XML schemas
+
+* ``junit`` follows the `JUnit xml schema from Jenkins `_
+* ``checkstyle`` follows the common `"checkstyle" xml schema `_
+
+The ``--quiet`` Do not output any message.
+
+The ``--verbose`` option will show the applied rules. When using the ``txt`` format it will also display progress notifications.
+
+NOTE: if there is an error like "errors reported during linting after fixing", you can use this to be even more verbose for debugging purpose
+
+* ``--verbose=0`` or no option: normal
+* ``--verbose``, ``--verbose=1``, ``-v``: verbose
+* ``--verbose=2``, ``-vv``: very verbose
+* ``--verbose=3``, ``-vvv``: debug
+
+The ``--rules`` option limits the rules to apply to the
+project:
+
+.. code-block:: bash
+
+ $ php php-cs-fixer.phar fix /path/to/project --rules=@PSR2
+
+By default the PSR1 and PSR2 rules are used.
+
+The ``--rules`` option lets you choose the exact rules to
+apply (the rule names must be separated by a comma):
+
+.. code-block:: bash
+
+ $ php php-cs-fixer.phar fix /path/to/dir --rules=line_ending,full_opening_tag,indentation_type
+
+You can also blacklist the rules you don't want by placing a dash in front of the rule name, if this is more convenient,
+using ``-name_of_fixer``:
+
+.. code-block:: bash
+
+ $ php php-cs-fixer.phar fix /path/to/dir --rules=-full_opening_tag,-indentation_type
+
+When using combinations of exact and blacklist rules, applying exact rules along with above blacklisted results:
+
+.. code-block:: bash
+
+ $ php php-cs-fixer.phar fix /path/to/project --rules=@Symfony,-@PSR1,-blank_line_before_statement,strict_comparison
+
+Complete configuration for rules can be supplied using a ``json`` formatted string.
+
+.. code-block:: bash
+
+ $ php php-cs-fixer.phar fix /path/to/project --rules='{"concat_space": {"spacing": "none"}}'
+
+The ``--dry-run`` flag will run the fixer without making changes to your files.
+
+The ``--diff`` flag can be used to let the fixer output all the changes it makes.
+
+The ``--diff-format`` option allows to specify in which format the fixer should output the changes it makes:
+
+* ``udiff``: unified diff format;
+* ``sbd``: Sebastianbergmann/diff format (default when using `--diff` without specifying `diff-format`).
+
+The ``--allow-risky`` option (pass ``yes`` or ``no``) allows you to set whether risky rules may run. Default value is taken from config file.
+A rule is considered risky if it could change code behaviour. By default no risky rules are run.
+
+The ``--stop-on-violation`` flag stops the execution upon first file that needs to be fixed.
+
+The ``--show-progress`` option allows you to choose the way process progress is rendered:
+
+* ``none``: disables progress output;
+* ``run-in``: [deprecated] simple single-line progress output;
+* ``estimating``: [deprecated] multiline progress output with number of files and percentage on each line. Note that with this option, the files list is evaluated before processing to get the total number of files and then kept in memory to avoid using the file iterator twice. This has an impact on memory usage so using this option is not recommended on very large projects;
+* ``estimating-max``: [deprecated] same as ``dots``;
+* ``dots``: same as ``estimating`` but using all terminal columns instead of default 80.
+
+If the option is not provided, it defaults to ``run-in`` unless a config file that disables output is used, in which case it defaults to ``none``. This option has no effect if the verbosity of the command is less than ``verbose``.
+
+.. code-block:: bash
+
+ $ php php-cs-fixer.phar fix --verbose --show-progress=estimating
+
+The command can also read from standard input, in which case it won't
+automatically fix anything:
+
+.. code-block:: bash
+
+ $ cat foo.php | php php-cs-fixer.phar fix --diff -
+
+Finally, if you don't need BC kept on CLI level, you might use `PHP_CS_FIXER_FUTURE_MODE` to start using options that
+would be default in next MAJOR release (unified differ, estimating, full-width progress indicator):
+
+.. code-block:: bash
+
+ $ PHP_CS_FIXER_FUTURE_MODE=1 php php-cs-fixer.phar fix -v --diff
+
+Choose from the list of available rules:
+
+* **align_multiline_comment** [@PhpCsFixer]
+
+ Each line of multi-line DocComments must have an asterisk [PSR-5] and
+ must be aligned with the first one.
+
+ Configuration options:
+
+ - ``comment_type`` (``'all_multiline'``, ``'phpdocs_like'``, ``'phpdocs_only'``): whether
+ to fix PHPDoc comments only (``phpdocs_only``), any multi-line comment
+ whose lines all start with an asterisk (``phpdocs_like``) or any
+ multi-line comment (``all_multiline``); defaults to ``'phpdocs_only'``
+
+* **array_indentation** [@PhpCsFixer]
+
+ Each element of an array must be indented exactly once.
+
+* **array_syntax** [@Symfony, @PhpCsFixer]
+
+ PHP arrays should be declared using the configured syntax.
+
+ Configuration options:
+
+ - ``syntax`` (``'long'``, ``'short'``): whether to use the ``long`` or ``short`` array
+ syntax; defaults to ``'long'``
+
+* **backtick_to_shell_exec**
+
+ Converts backtick operators to ``shell_exec`` calls.
+
+* **binary_operator_spaces** [@Symfony, @PhpCsFixer]
+
+ Binary operators should be surrounded by space as configured.
+
+ Configuration options:
+
+ - ``align_double_arrow`` (``false``, ``null``, ``true``): whether to apply, remove or
+ ignore double arrows alignment; defaults to ``false``. DEPRECATED: use
+ options ``operators`` and ``default`` instead
+ - ``align_equals`` (``false``, ``null``, ``true``): whether to apply, remove or ignore
+ equals alignment; defaults to ``false``. DEPRECATED: use options
+ ``operators`` and ``default`` instead
+ - ``default`` (``'align'``, ``'align_single_space'``, ``'align_single_space_minimal'``,
+ ``'no_space'``, ``'single_space'``, ``null``): default fix strategy; defaults to
+ ``'single_space'``
+ - ``operators`` (``array``): dictionary of ``binary operator`` => ``fix strategy``
+ values that differ from the default strategy; defaults to ``[]``
+
+* **blank_line_after_namespace** [@PSR2, @Symfony, @PhpCsFixer]
+
+ There MUST be one blank line after the namespace declaration.
+
+* **blank_line_after_opening_tag** [@Symfony, @PhpCsFixer]
+
+ Ensure there is no code on the same line as the PHP open tag and it is
+ followed by a blank line.
+
+* **blank_line_before_return**
+
+ An empty line feed should precede a return statement. DEPRECATED: use
+ ``blank_line_before_statement`` instead.
+
+* **blank_line_before_statement** [@Symfony, @PhpCsFixer]
+
+ An empty line feed must precede any configured statement.
+
+ Configuration options:
+
+ - ``statements`` (a subset of ``['break', 'case', 'continue', 'declare',
+ 'default', 'die', 'do', 'exit', 'for', 'foreach', 'goto', 'if',
+ 'include', 'include_once', 'require', 'require_once', 'return',
+ 'switch', 'throw', 'try', 'while', 'yield']``): list of statements which
+ must be preceded by an empty line; defaults to ``['break', 'continue',
+ 'declare', 'return', 'throw', 'try']``
+
+* **braces** [@PSR2, @Symfony, @PhpCsFixer]
+
+ The body of each structure MUST be enclosed by braces. Braces should be
+ properly placed. Body of braces should be properly indented.
+
+ Configuration options:
+
+ - ``allow_single_line_closure`` (``bool``): whether single line lambda notation
+ should be allowed; defaults to ``false``
+ - ``position_after_anonymous_constructs`` (``'next'``, ``'same'``): whether the
+ opening brace should be placed on "next" or "same" line after anonymous
+ constructs (anonymous classes and lambda functions); defaults to ``'same'``
+ - ``position_after_control_structures`` (``'next'``, ``'same'``): whether the opening
+ brace should be placed on "next" or "same" line after control
+ structures; defaults to ``'same'``
+ - ``position_after_functions_and_oop_constructs`` (``'next'``, ``'same'``): whether
+ the opening brace should be placed on "next" or "same" line after
+ classy constructs (non-anonymous classes, interfaces, traits, methods
+ and non-lambda functions); defaults to ``'next'``
+
+* **cast_spaces** [@Symfony, @PhpCsFixer]
+
+ A single space or none should be between cast and variable.
+
+ Configuration options:
+
+ - ``space`` (``'none'``, ``'single'``): spacing to apply between cast and variable;
+ defaults to ``'single'``
+
+* **class_attributes_separation** [@Symfony, @PhpCsFixer]
+
+ Class, trait and interface elements must be separated with one blank
+ line.
+
+ Configuration options:
+
+ - ``elements`` (a subset of ``['const', 'method', 'property']``): list of classy
+ elements; 'const', 'method', 'property'; defaults to ``['const',
+ 'method', 'property']``
+
+* **class_definition** [@PSR2, @Symfony, @PhpCsFixer]
+
+ Whitespace around the keywords of a class, trait or interfaces
+ definition should be one space.
+
+ Configuration options:
+
+ - ``multi_line_extends_each_single_line`` (``bool``): whether definitions should
+ be multiline; defaults to ``false``; DEPRECATED alias:
+ ``multiLineExtendsEachSingleLine``
+ - ``single_item_single_line`` (``bool``): whether definitions should be single
+ line when including a single item; defaults to ``false``; DEPRECATED alias:
+ ``singleItemSingleLine``
+ - ``single_line`` (``bool``): whether definitions should be single line; defaults
+ to ``false``; DEPRECATED alias: ``singleLine``
+
+* **class_keyword_remove**
+
+ Converts ``::class`` keywords to FQCN strings.
+
+* **combine_consecutive_issets** [@PhpCsFixer]
+
+ Using ``isset($var) &&`` multiple times should be done in one call.
+
+* **combine_consecutive_unsets** [@PhpCsFixer]
+
+ Calling ``unset`` on multiple items should be done in one call.
+
+* **combine_nested_dirname** [@PHP70Migration:risky, @PHP71Migration:risky]
+
+ Replace multiple nested calls of ``dirname`` by only one call with second
+ ``$level`` parameter. Requires PHP >= 7.0.
+
+ *Risky rule: risky when the function ``dirname`` is overridden.*
+
+* **comment_to_phpdoc** [@PhpCsFixer:risky]
+
+ Comments with annotation should be docblock when used on structural
+ elements.
+
+ *Risky rule: risky as new docblocks might mean more, e.g. a Doctrine entity might have a new column in database.*
+
+ Configuration options:
+
+ - ``ignored_tags`` (``array``): list of ignored tags; defaults to ``[]``
+
+* **compact_nullable_typehint** [@PhpCsFixer]
+
+ Remove extra spaces in a nullable typehint.
+
+* **concat_space** [@Symfony, @PhpCsFixer]
+
+ Concatenation should be spaced according configuration.
+
+ Configuration options:
+
+ - ``spacing`` (``'none'``, ``'one'``): spacing to apply around concatenation operator;
+ defaults to ``'none'``
+
+* **constant_case** [@PSR2, @Symfony, @PhpCsFixer]
+
+ The PHP constants ``true``, ``false``, and ``null`` MUST be written using the
+ correct casing.
+
+ Configuration options:
+
+ - ``case`` (``'lower'``, ``'upper'``): whether to use the ``upper`` or ``lower`` case
+ syntax; defaults to ``'lower'``
+
+* **date_time_immutable**
+
+ Class ``DateTimeImmutable`` should be used instead of ``DateTime``.
+
+ *Risky rule: risky when the code relies on modifying ``DateTime`` objects or if any of the ``date_create*`` functions are overridden.*
+
+* **declare_equal_normalize** [@Symfony, @PhpCsFixer]
+
+ Equal sign in declare statement should be surrounded by spaces or not
+ following configuration.
+
+ Configuration options:
+
+ - ``space`` (``'none'``, ``'single'``): spacing to apply around the equal sign;
+ defaults to ``'none'``
+
+* **declare_strict_types** [@PHP70Migration:risky, @PHP71Migration:risky]
+
+ Force strict types declaration in all files. Requires PHP >= 7.0.
+
+ *Risky rule: forcing strict types will stop non strict code from working.*
+
+* **dir_constant** [@Symfony:risky, @PhpCsFixer:risky]
+
+ Replaces ``dirname(__FILE__)`` expression with equivalent ``__DIR__``
+ constant.
+
+ *Risky rule: risky when the function ``dirname`` is overridden.*
+
+* **doctrine_annotation_array_assignment** [@DoctrineAnnotation]
+
+ Doctrine annotations must use configured operator for assignment in
+ arrays.
+
+ Configuration options:
+
+ - ``ignored_tags`` (``array``): list of tags that must not be treated as Doctrine
+ Annotations; defaults to ``['abstract', 'access', 'code', 'deprec',
+ 'encode', 'exception', 'final', 'ingroup', 'inheritdoc', 'inheritDoc',
+ 'magic', 'name', 'toc', 'tutorial', 'private', 'static', 'staticvar',
+ 'staticVar', 'throw', 'api', 'author', 'category', 'copyright',
+ 'deprecated', 'example', 'filesource', 'global', 'ignore', 'internal',
+ 'license', 'link', 'method', 'package', 'param', 'property',
+ 'property-read', 'property-write', 'return', 'see', 'since', 'source',
+ 'subpackage', 'throws', 'todo', 'TODO', 'usedBy', 'uses', 'var',
+ 'version', 'after', 'afterClass', 'backupGlobals',
+ 'backupStaticAttributes', 'before', 'beforeClass',
+ 'codeCoverageIgnore', 'codeCoverageIgnoreStart',
+ 'codeCoverageIgnoreEnd', 'covers', 'coversDefaultClass',
+ 'coversNothing', 'dataProvider', 'depends', 'expectedException',
+ 'expectedExceptionCode', 'expectedExceptionMessage',
+ 'expectedExceptionMessageRegExp', 'group', 'large', 'medium',
+ 'preserveGlobalState', 'requires', 'runTestsInSeparateProcesses',
+ 'runInSeparateProcess', 'small', 'test', 'testdox', 'ticket', 'uses',
+ 'SuppressWarnings', 'noinspection', 'package_version', 'enduml',
+ 'startuml', 'fix', 'FIXME', 'fixme', 'override']``
+ - ``operator`` (``':'``, ``'='``): the operator to use; defaults to ``'='``
+
+* **doctrine_annotation_braces** [@DoctrineAnnotation]
+
+ Doctrine annotations without arguments must use the configured syntax.
+
+ Configuration options:
+
+ - ``ignored_tags`` (``array``): list of tags that must not be treated as Doctrine
+ Annotations; defaults to ``['abstract', 'access', 'code', 'deprec',
+ 'encode', 'exception', 'final', 'ingroup', 'inheritdoc', 'inheritDoc',
+ 'magic', 'name', 'toc', 'tutorial', 'private', 'static', 'staticvar',
+ 'staticVar', 'throw', 'api', 'author', 'category', 'copyright',
+ 'deprecated', 'example', 'filesource', 'global', 'ignore', 'internal',
+ 'license', 'link', 'method', 'package', 'param', 'property',
+ 'property-read', 'property-write', 'return', 'see', 'since', 'source',
+ 'subpackage', 'throws', 'todo', 'TODO', 'usedBy', 'uses', 'var',
+ 'version', 'after', 'afterClass', 'backupGlobals',
+ 'backupStaticAttributes', 'before', 'beforeClass',
+ 'codeCoverageIgnore', 'codeCoverageIgnoreStart',
+ 'codeCoverageIgnoreEnd', 'covers', 'coversDefaultClass',
+ 'coversNothing', 'dataProvider', 'depends', 'expectedException',
+ 'expectedExceptionCode', 'expectedExceptionMessage',
+ 'expectedExceptionMessageRegExp', 'group', 'large', 'medium',
+ 'preserveGlobalState', 'requires', 'runTestsInSeparateProcesses',
+ 'runInSeparateProcess', 'small', 'test', 'testdox', 'ticket', 'uses',
+ 'SuppressWarnings', 'noinspection', 'package_version', 'enduml',
+ 'startuml', 'fix', 'FIXME', 'fixme', 'override']``
+ - ``syntax`` (``'with_braces'``, ``'without_braces'``): whether to add or remove
+ braces; defaults to ``'without_braces'``
+
+* **doctrine_annotation_indentation** [@DoctrineAnnotation]
+
+ Doctrine annotations must be indented with four spaces.
+
+ Configuration options:
+
+ - ``ignored_tags`` (``array``): list of tags that must not be treated as Doctrine
+ Annotations; defaults to ``['abstract', 'access', 'code', 'deprec',
+ 'encode', 'exception', 'final', 'ingroup', 'inheritdoc', 'inheritDoc',
+ 'magic', 'name', 'toc', 'tutorial', 'private', 'static', 'staticvar',
+ 'staticVar', 'throw', 'api', 'author', 'category', 'copyright',
+ 'deprecated', 'example', 'filesource', 'global', 'ignore', 'internal',
+ 'license', 'link', 'method', 'package', 'param', 'property',
+ 'property-read', 'property-write', 'return', 'see', 'since', 'source',
+ 'subpackage', 'throws', 'todo', 'TODO', 'usedBy', 'uses', 'var',
+ 'version', 'after', 'afterClass', 'backupGlobals',
+ 'backupStaticAttributes', 'before', 'beforeClass',
+ 'codeCoverageIgnore', 'codeCoverageIgnoreStart',
+ 'codeCoverageIgnoreEnd', 'covers', 'coversDefaultClass',
+ 'coversNothing', 'dataProvider', 'depends', 'expectedException',
+ 'expectedExceptionCode', 'expectedExceptionMessage',
+ 'expectedExceptionMessageRegExp', 'group', 'large', 'medium',
+ 'preserveGlobalState', 'requires', 'runTestsInSeparateProcesses',
+ 'runInSeparateProcess', 'small', 'test', 'testdox', 'ticket', 'uses',
+ 'SuppressWarnings', 'noinspection', 'package_version', 'enduml',
+ 'startuml', 'fix', 'FIXME', 'fixme', 'override']``
+ - ``indent_mixed_lines`` (``bool``): whether to indent lines that have content
+ before closing parenthesis; defaults to ``false``
+
+* **doctrine_annotation_spaces** [@DoctrineAnnotation]
+
+ Fixes spaces in Doctrine annotations.
+
+ Configuration options:
+
+ - ``after_argument_assignments`` (``null``, ``bool``): whether to add, remove or
+ ignore spaces after argument assignment operator; defaults to ``false``
+ - ``after_array_assignments_colon`` (``null``, ``bool``): whether to add, remove or
+ ignore spaces after array assignment ``:`` operator; defaults to ``true``
+ - ``after_array_assignments_equals`` (``null``, ``bool``): whether to add, remove or
+ ignore spaces after array assignment ``=`` operator; defaults to ``true``
+ - ``around_argument_assignments`` (``bool``): whether to fix spaces around
+ argument assignment operator; defaults to ``true``. DEPRECATED: use options
+ ``before_argument_assignments`` and ``after_argument_assignments`` instead
+ - ``around_array_assignments`` (``bool``): whether to fix spaces around array
+ assignment operators; defaults to ``true``. DEPRECATED: use options
+ ``before_array_assignments_equals``, ``after_array_assignments_equals``,
+ ``before_array_assignments_colon`` and ``after_array_assignments_colon``
+ instead
+ - ``around_commas`` (``bool``): whether to fix spaces around commas; defaults to
+ ``true``
+ - ``around_parentheses`` (``bool``): whether to fix spaces around parentheses;
+ defaults to ``true``
+ - ``before_argument_assignments`` (``null``, ``bool``): whether to add, remove or
+ ignore spaces before argument assignment operator; defaults to ``false``
+ - ``before_array_assignments_colon`` (``null``, ``bool``): whether to add, remove or
+ ignore spaces before array ``:`` assignment operator; defaults to ``true``
+ - ``before_array_assignments_equals`` (``null``, ``bool``): whether to add, remove or
+ ignore spaces before array ``=`` assignment operator; defaults to ``true``
+ - ``ignored_tags`` (``array``): list of tags that must not be treated as Doctrine
+ Annotations; defaults to ``['abstract', 'access', 'code', 'deprec',
+ 'encode', 'exception', 'final', 'ingroup', 'inheritdoc', 'inheritDoc',
+ 'magic', 'name', 'toc', 'tutorial', 'private', 'static', 'staticvar',
+ 'staticVar', 'throw', 'api', 'author', 'category', 'copyright',
+ 'deprecated', 'example', 'filesource', 'global', 'ignore', 'internal',
+ 'license', 'link', 'method', 'package', 'param', 'property',
+ 'property-read', 'property-write', 'return', 'see', 'since', 'source',
+ 'subpackage', 'throws', 'todo', 'TODO', 'usedBy', 'uses', 'var',
+ 'version', 'after', 'afterClass', 'backupGlobals',
+ 'backupStaticAttributes', 'before', 'beforeClass',
+ 'codeCoverageIgnore', 'codeCoverageIgnoreStart',
+ 'codeCoverageIgnoreEnd', 'covers', 'coversDefaultClass',
+ 'coversNothing', 'dataProvider', 'depends', 'expectedException',
+ 'expectedExceptionCode', 'expectedExceptionMessage',
+ 'expectedExceptionMessageRegExp', 'group', 'large', 'medium',
+ 'preserveGlobalState', 'requires', 'runTestsInSeparateProcesses',
+ 'runInSeparateProcess', 'small', 'test', 'testdox', 'ticket', 'uses',
+ 'SuppressWarnings', 'noinspection', 'package_version', 'enduml',
+ 'startuml', 'fix', 'FIXME', 'fixme', 'override']``
+
+* **elseif** [@PSR2, @Symfony, @PhpCsFixer]
+
+ The keyword ``elseif`` should be used instead of ``else if`` so that all
+ control keywords look like single words.
+
+* **encoding** [@PSR1, @PSR2, @Symfony, @PhpCsFixer]
+
+ PHP code MUST use only UTF-8 without BOM (remove BOM).
+
+* **ereg_to_preg** [@Symfony:risky, @PhpCsFixer:risky]
+
+ Replace deprecated ``ereg`` regular expression functions with ``preg``.
+
+ *Risky rule: risky if the ``ereg`` function is overridden.*
+
+* **error_suppression** [@Symfony:risky, @PhpCsFixer:risky]
+
+ Error control operator should be added to deprecation notices and/or
+ removed from other cases.
+
+ *Risky rule: risky because adding/removing ``@`` might cause changes to code behaviour or if ``trigger_error`` function is overridden.*
+
+ Configuration options:
+
+ - ``mute_deprecation_error`` (``bool``): whether to add ``@`` in deprecation
+ notices; defaults to ``true``
+ - ``noise_remaining_usages`` (``bool``): whether to remove ``@`` in remaining
+ usages; defaults to ``false``
+ - ``noise_remaining_usages_exclude`` (``array``): list of global functions to
+ exclude from removing ``@``; defaults to ``[]``
+
+* **escape_implicit_backslashes** [@PhpCsFixer]
+
+ Escape implicit backslashes in strings and heredocs to ease the
+ understanding of which are special chars interpreted by PHP and which
+ not.
+
+ Configuration options:
+
+ - ``double_quoted`` (``bool``): whether to fix double-quoted strings; defaults to
+ ``true``
+ - ``heredoc_syntax`` (``bool``): whether to fix heredoc syntax; defaults to ``true``
+ - ``single_quoted`` (``bool``): whether to fix single-quoted strings; defaults to
+ ``false``
+
+* **explicit_indirect_variable** [@PhpCsFixer]
+
+ Add curly braces to indirect variables to make them clear to understand.
+ Requires PHP >= 7.0.
+
+* **explicit_string_variable** [@PhpCsFixer]
+
+ Converts implicit variables into explicit ones in double-quoted strings
+ or heredoc syntax.
+
+* **final_class**
+
+ All classes must be final, except abstract ones and Doctrine entities.
+
+ *Risky rule: risky when subclassing non-abstract classes.*
+
+* **final_internal_class** [@PhpCsFixer:risky]
+
+ Internal classes should be ``final``.
+
+ *Risky rule: changing classes to ``final`` might cause code execution to break.*
+
+ Configuration options:
+
+ - ``annotation-black-list`` (``array``): class level annotations tags that must be
+ omitted to fix the class, even if all of the white list ones are used
+ as well. (case insensitive); defaults to ``['@final', '@Entity',
+ '@ORM\\Entity', '@ORM\\Mapping\\Entity', '@Mapping\\Entity']``
+ - ``annotation-white-list`` (``array``): class level annotations tags that must be
+ set in order to fix the class. (case insensitive); defaults to
+ ``['@internal']``
+ - ``consider-absent-docblock-as-internal-class`` (``bool``): should classes
+ without any DocBlock be fixed to final?; defaults to ``false``
+
+* **final_public_method_for_abstract_class**
+
+ All ``public`` methods of ``abstract`` classes should be ``final``.
+
+ *Risky rule: risky when overriding ``public`` methods of ``abstract`` classes.*
+
+* **final_static_access**
+
+ Converts ``static`` access to ``self`` access in ``final`` classes.
+
+* **fopen_flag_order** [@Symfony:risky, @PhpCsFixer:risky]
+
+ Order the flags in ``fopen`` calls, ``b`` and ``t`` must be last.
+
+ *Risky rule: risky when the function ``fopen`` is overridden.*
+
+* **fopen_flags** [@Symfony:risky, @PhpCsFixer:risky]
+
+ The flags in ``fopen`` calls must omit ``t``, and ``b`` must be omitted or
+ included consistently.
+
+ *Risky rule: risky when the function ``fopen`` is overridden.*
+
+ Configuration options:
+
+ - ``b_mode`` (``bool``): the ``b`` flag must be used (``true``) or omitted (``false``);
+ defaults to ``true``
+
+* **full_opening_tag** [@PSR1, @PSR2, @Symfony, @PhpCsFixer]
+
+ PHP code must use the long ``= 7.3.
+
+* **heredoc_to_nowdoc** [@PhpCsFixer]
+
+ Convert ``heredoc`` to ``nowdoc`` where possible.
+
+* **implode_call** [@Symfony:risky, @PhpCsFixer:risky]
+
+ Function ``implode`` must be called with 2 arguments in the documented
+ order.
+
+ *Risky rule: risky when the function ``implode`` is overridden.*
+
+* **include** [@Symfony, @PhpCsFixer]
+
+ Include/Require and file path should be divided with a single space.
+ File path should not be placed under brackets.
+
+* **increment_style** [@Symfony, @PhpCsFixer]
+
+ Pre- or post-increment and decrement operators should be used if
+ possible.
+
+ Configuration options:
+
+ - ``style`` (``'post'``, ``'pre'``): whether to use pre- or post-increment and
+ decrement operators; defaults to ``'pre'``
+
+* **indentation_type** [@PSR2, @Symfony, @PhpCsFixer]
+
+ Code MUST use configured indentation type.
+
+* **is_null** [@Symfony:risky, @PhpCsFixer:risky]
+
+ Replaces ``is_null($var)`` expression with ``null === $var``.
+
+ *Risky rule: risky when the function ``is_null`` is overridden.*
+
+ Configuration options:
+
+ - ``use_yoda_style`` (``bool``): whether Yoda style conditions should be used;
+ defaults to ``true``. DEPRECATED: use ``yoda_style`` fixer instead
+
+* **line_ending** [@PSR2, @Symfony, @PhpCsFixer]
+
+ All PHP files must use same line ending.
+
+* **linebreak_after_opening_tag**
+
+ Ensure there is no code on the same line as the PHP open tag.
+
+* **list_syntax**
+
+ List (``array`` destructuring) assignment should be declared using the
+ configured syntax. Requires PHP >= 7.1.
+
+ Configuration options:
+
+ - ``syntax`` (``'long'``, ``'short'``): whether to use the ``long`` or ``short`` ``list``
+ syntax; defaults to ``'long'``
+
+* **logical_operators** [@PhpCsFixer:risky]
+
+ Use ``&&`` and ``||`` logical operators instead of ``and`` and ``or``.
+
+ *Risky rule: risky, because you must double-check if using and/or with lower precedence was intentional.*
+
+* **lowercase_cast** [@Symfony, @PhpCsFixer]
+
+ Cast should be written in lower case.
+
+* **lowercase_constants**
+
+ The PHP constants ``true``, ``false``, and ``null`` MUST be in lower case.
+ DEPRECATED: use ``constant_case`` instead.
+
+* **lowercase_keywords** [@PSR2, @Symfony, @PhpCsFixer]
+
+ PHP keywords MUST be in lower case.
+
+* **lowercase_static_reference** [@Symfony, @PhpCsFixer]
+
+ Class static references ``self``, ``static`` and ``parent`` MUST be in lower
+ case.
+
+* **magic_constant_casing** [@Symfony, @PhpCsFixer]
+
+ Magic constants should be referred to using the correct casing.
+
+* **magic_method_casing** [@Symfony, @PhpCsFixer]
+
+ Magic method definitions and calls must be using the correct casing.
+
+* **mb_str_functions**
+
+ Replace non multibyte-safe functions with corresponding mb function.
+
+ *Risky rule: risky when any of the functions are overridden.*
+
+* **method_argument_space** [@PSR2, @Symfony, @PhpCsFixer]
+
+ In method arguments and method call, there MUST NOT be a space before
+ each comma and there MUST be one space after each comma. Argument lists
+ MAY be split across multiple lines, where each subsequent line is
+ indented once. When doing so, the first item in the list MUST be on the
+ next line, and there MUST be only one argument per line.
+
+ Configuration options:
+
+ - ``after_heredoc`` (``bool``): whether the whitespace between heredoc end and
+ comma should be removed; defaults to ``false``
+ - ``ensure_fully_multiline`` (``bool``): ensure every argument of a multiline
+ argument list is on its own line; defaults to ``false``. DEPRECATED: use
+ option ``on_multiline`` instead
+ - ``keep_multiple_spaces_after_comma`` (``bool``): whether keep multiple spaces
+ after comma; defaults to ``false``
+ - ``on_multiline`` (``'ensure_fully_multiline'``, ``'ensure_single_line'``, ``'ignore'``):
+ defines how to handle function arguments lists that contain newlines;
+ defaults to ``'ignore'``
+
+* **method_chaining_indentation** [@PhpCsFixer]
+
+ Method chaining MUST be properly indented. Method chaining with
+ different levels of indentation is not supported.
+
+* **method_separation**
+
+ Methods must be separated with one blank line. DEPRECATED: use
+ ``class_attributes_separation`` instead.
+
+* **modernize_types_casting** [@Symfony:risky, @PhpCsFixer:risky]
+
+ Replaces ``intval``, ``floatval``, ``doubleval``, ``strval`` and ``boolval``
+ function calls with according type casting operator.
+
+ *Risky rule: risky if any of the functions ``intval``, ``floatval``, ``doubleval``, ``strval`` or ``boolval`` are overridden.*
+
+* **multiline_comment_opening_closing** [@PhpCsFixer]
+
+ DocBlocks must start with two asterisks, multiline comments must start
+ with a single asterisk, after the opening slash. Both must end with a
+ single asterisk before the closing slash.
+
+* **multiline_whitespace_before_semicolons** [@PhpCsFixer]
+
+ Forbid multi-line whitespace before the closing semicolon or move the
+ semicolon to the new line for chained calls.
+
+ Configuration options:
+
+ - ``strategy`` (``'new_line_for_chained_calls'``, ``'no_multi_line'``): forbid
+ multi-line whitespace or move the semicolon to the new line for chained
+ calls; defaults to ``'no_multi_line'``
+
+* **native_constant_invocation** [@Symfony:risky, @PhpCsFixer:risky]
+
+ Add leading ``\`` before constant invocation of internal constant to speed
+ up resolving. Constant name match is case-sensitive, except for ``null``,
+ ``false`` and ``true``.
+
+ *Risky rule: risky when any of the constants are namespaced or overridden.*
+
+ Configuration options:
+
+ - ``exclude`` (``array``): list of constants to ignore; defaults to ``['null',
+ 'false', 'true']``
+ - ``fix_built_in`` (``bool``): whether to fix constants returned by
+ ``get_defined_constants``. User constants are not accounted in this list
+ and must be specified in the include one; defaults to ``true``
+ - ``include`` (``array``): list of additional constants to fix; defaults to ``[]``
+ - ``scope`` (``'all'``, ``'namespaced'``): only fix constant invocations that are made
+ within a namespace or fix all; defaults to ``'all'``
+
+* **native_function_casing** [@Symfony, @PhpCsFixer]
+
+ Function defined by PHP should be called using the correct casing.
+
+* **native_function_invocation** [@Symfony:risky, @PhpCsFixer:risky]
+
+ Add leading ``\`` before function invocation to speed up resolving.
+
+ *Risky rule: risky when any of the functions are overridden.*
+
+ Configuration options:
+
+ - ``exclude`` (``array``): list of functions to ignore; defaults to ``[]``
+ - ``include`` (``array``): list of function names or sets to fix. Defined sets are
+ ``@internal`` (all native functions), ``@all`` (all global functions) and
+ ``@compiler_optimized`` (functions that are specially optimized by Zend);
+ defaults to ``['@internal']``
+ - ``scope`` (``'all'``, ``'namespaced'``): only fix function calls that are made
+ within a namespace or fix all; defaults to ``'all'``
+ - ``strict`` (``bool``): whether leading ``\`` of function call not meant to have it
+ should be removed; defaults to ``false``
+
+* **native_function_type_declaration_casing** [@Symfony, @PhpCsFixer]
+
+ Native type hints for functions should use the correct case.
+
+* **new_with_braces** [@Symfony, @PhpCsFixer]
+
+ All instances created with new keyword must be followed by braces.
+
+* **no_alias_functions** [@Symfony:risky, @PhpCsFixer:risky]
+
+ Master functions shall be used instead of aliases.
+
+ *Risky rule: risky when any of the alias functions are overridden.*
+
+ Configuration options:
+
+ - ``sets`` (a subset of ``['@internal', '@IMAP', '@mbreg', '@all']``): list of
+ sets to fix. Defined sets are ``@internal`` (native functions), ``@IMAP``
+ (IMAP functions), ``@mbreg`` (from ``ext-mbstring``) ``@all`` (all listed
+ sets); defaults to ``['@internal', '@IMAP']``
+
+* **no_alternative_syntax** [@PhpCsFixer]
+
+ Replace control structure alternative syntax to use braces.
+
+* **no_binary_string** [@PhpCsFixer]
+
+ There should not be a binary flag before strings.
+
+* **no_blank_lines_after_class_opening** [@Symfony, @PhpCsFixer]
+
+ There should be no empty lines after class opening brace.
+
+* **no_blank_lines_after_phpdoc** [@Symfony, @PhpCsFixer]
+
+ There should not be blank lines between docblock and the documented
+ element.
+
+* **no_blank_lines_before_namespace**
+
+ There should be no blank lines before a namespace declaration.
+
+* **no_break_comment** [@PSR2, @Symfony, @PhpCsFixer]
+
+ There must be a comment when fall-through is intentional in a non-empty
+ case body.
+
+ Configuration options:
+
+ - ``comment_text`` (``string``): the text to use in the added comment and to
+ detect it; defaults to ``'no break'``
+
+* **no_closing_tag** [@PSR2, @Symfony, @PhpCsFixer]
+
+ The closing ``?>`` tag MUST be omitted from files containing only PHP.
+
+* **no_empty_comment** [@Symfony, @PhpCsFixer]
+
+ There should not be any empty comments.
+
+* **no_empty_phpdoc** [@Symfony, @PhpCsFixer]
+
+ There should not be empty PHPDoc blocks.
+
+* **no_empty_statement** [@Symfony, @PhpCsFixer]
+
+ Remove useless semicolon statements.
+
+* **no_extra_blank_lines** [@Symfony, @PhpCsFixer]
+
+ Removes extra blank lines and/or blank lines following configuration.
+
+ Configuration options:
+
+ - ``tokens`` (a subset of ``['break', 'case', 'continue', 'curly_brace_block',
+ 'default', 'extra', 'parenthesis_brace_block', 'return',
+ 'square_brace_block', 'switch', 'throw', 'use', 'useTrait',
+ 'use_trait']``): list of tokens to fix; defaults to ``['extra']``
+
+* **no_extra_consecutive_blank_lines**
+
+ Removes extra blank lines and/or blank lines following configuration.
+ DEPRECATED: use ``no_extra_blank_lines`` instead.
+
+ Configuration options:
+
+ - ``tokens`` (a subset of ``['break', 'case', 'continue', 'curly_brace_block',
+ 'default', 'extra', 'parenthesis_brace_block', 'return',
+ 'square_brace_block', 'switch', 'throw', 'use', 'useTrait',
+ 'use_trait']``): list of tokens to fix; defaults to ``['extra']``
+
+* **no_homoglyph_names** [@Symfony:risky, @PhpCsFixer:risky]
+
+ Replace accidental usage of homoglyphs (non ascii characters) in names.
+
+ *Risky rule: renames classes and cannot rename the files. You might have string references to renamed code (``$$name``).*
+
+* **no_leading_import_slash** [@Symfony, @PhpCsFixer]
+
+ Remove leading slashes in ``use`` clauses.
+
+* **no_leading_namespace_whitespace** [@Symfony, @PhpCsFixer]
+
+ The namespace declaration line shouldn't contain leading whitespace.
+
+* **no_mixed_echo_print** [@Symfony, @PhpCsFixer]
+
+ Either language construct ``print`` or ``echo`` should be used.
+
+ Configuration options:
+
+ - ``use`` (``'echo'``, ``'print'``): the desired language construct; defaults to
+ ``'echo'``
+
+* **no_multiline_whitespace_around_double_arrow** [@Symfony, @PhpCsFixer]
+
+ Operator ``=>`` should not be surrounded by multi-line whitespaces.
+
+* **no_multiline_whitespace_before_semicolons**
+
+ Multi-line whitespace before closing semicolon are prohibited.
+ DEPRECATED: use ``multiline_whitespace_before_semicolons`` instead.
+
+* **no_null_property_initialization** [@PhpCsFixer]
+
+ Properties MUST not be explicitly initialized with ``null`` except when
+ they have a type declaration (PHP 7.4).
+
+* **no_php4_constructor**
+
+ Convert PHP4-style constructors to ``__construct``.
+
+ *Risky rule: risky when old style constructor being fixed is overridden or overrides parent one.*
+
+* **no_short_bool_cast** [@Symfony, @PhpCsFixer]
+
+ Short cast ``bool`` using double exclamation mark should not be used.
+
+* **no_short_echo_tag** [@PhpCsFixer]
+
+ Replace short-echo ``=`` with long format ````.
+
+* **ordered_class_elements** [@PhpCsFixer]
+
+ Orders the elements of classes/interfaces/traits.
+
+ Configuration options:
+
+ - ``order`` (a subset of ``['use_trait', 'public', 'protected', 'private',
+ 'constant', 'constant_public', 'constant_protected',
+ 'constant_private', 'property', 'property_static', 'property_public',
+ 'property_protected', 'property_private', 'property_public_static',
+ 'property_protected_static', 'property_private_static', 'method',
+ 'method_static', 'method_public', 'method_protected', 'method_private',
+ 'method_public_static', 'method_protected_static',
+ 'method_private_static', 'construct', 'destruct', 'magic', 'phpunit']``):
+ list of strings defining order of elements; defaults to ``['use_trait',
+ 'constant_public', 'constant_protected', 'constant_private',
+ 'property_public', 'property_protected', 'property_private',
+ 'construct', 'destruct', 'magic', 'phpunit', 'method_public',
+ 'method_protected', 'method_private']``
+ - ``sortAlgorithm`` (``'alpha'``, ``'none'``): how multiple occurrences of same type
+ statements should be sorted; defaults to ``'none'``
+
+* **ordered_imports** [@Symfony, @PhpCsFixer]
+
+ Ordering ``use`` statements.
+
+ Configuration options:
+
+ - ``imports_order`` (``array``, ``null``): defines the order of import types; defaults
+ to ``null``; DEPRECATED alias: ``importsOrder``
+ - ``sort_algorithm`` (``'alpha'``, ``'length'``, ``'none'``): whether the statements
+ should be sorted alphabetically or by length, or not sorted; defaults
+ to ``'alpha'``; DEPRECATED alias: ``sortAlgorithm``
+
+* **ordered_interfaces**
+
+ Orders the interfaces in an ``implements`` or ``interface extends`` clause.
+
+ *Risky rule: risky for ``implements`` when specifying both an interface and its parent interface, because PHP doesn't break on ``parent, child`` but does on ``child, parent``.*
+
+ Configuration options:
+
+ - ``direction`` (``'ascend'``, ``'descend'``): which direction the interfaces should
+ be ordered; defaults to ``'ascend'``
+ - ``order`` (``'alpha'``, ``'length'``): how the interfaces should be ordered;
+ defaults to ``'alpha'``
+
+* **php_unit_construct** [@Symfony:risky, @PhpCsFixer:risky]
+
+ PHPUnit assertion method calls like ``->assertSame(true, $foo)`` should be
+ written with dedicated method like ``->assertTrue($foo)``.
+
+ *Risky rule: fixer could be risky if one is overriding PHPUnit's native methods.*
+
+ Configuration options:
+
+ - ``assertions`` (a subset of ``['assertSame', 'assertEquals',
+ 'assertNotEquals', 'assertNotSame']``): list of assertion methods to fix;
+ defaults to ``['assertEquals', 'assertSame', 'assertNotEquals',
+ 'assertNotSame']``
+
+* **php_unit_dedicate_assert** [@PHPUnit30Migration:risky, @PHPUnit32Migration:risky, @PHPUnit35Migration:risky, @PHPUnit43Migration:risky, @PHPUnit48Migration:risky, @PHPUnit50Migration:risky, @PHPUnit52Migration:risky, @PHPUnit54Migration:risky, @PHPUnit55Migration:risky, @PHPUnit56Migration:risky, @PHPUnit57Migration:risky, @PHPUnit60Migration:risky, @PHPUnit75Migration:risky]
+
+ PHPUnit assertions like ``assertInternalType``, ``assertFileExists``, should
+ be used over ``assertTrue``.
+
+ *Risky rule: fixer could be risky if one is overriding PHPUnit's native methods.*
+
+ Configuration options:
+
+ - ``functions`` (a subset of ``['array_key_exists', 'empty', 'file_exists',
+ 'is_array', 'is_bool', 'is_callable', 'is_double', 'is_float',
+ 'is_infinite', 'is_int', 'is_integer', 'is_long', 'is_nan', 'is_null',
+ 'is_numeric', 'is_object', 'is_real', 'is_resource', 'is_scalar',
+ 'is_string']``, ``null``): list of assertions to fix (overrides ``target``);
+ defaults to ``null``. DEPRECATED: use option ``target`` instead
+ - ``target`` (``'3.0'``, ``'3.5'``, ``'5.0'``, ``'5.6'``, ``'newest'``): target version of
+ PHPUnit; defaults to ``'5.0'``
+
+* **php_unit_dedicate_assert_internal_type** [@PHPUnit75Migration:risky]
+
+ PHPUnit assertions like ``assertIsArray`` should be used over
+ ``assertInternalType``.
+
+ *Risky rule: risky when PHPUnit methods are overridden or when project has PHPUnit incompatibilities.*
+
+ Configuration options:
+
+ - ``target`` (``'7.5'``, ``'newest'``): target version of PHPUnit; defaults to
+ ``'newest'``
+
+* **php_unit_expectation** [@PHPUnit52Migration:risky, @PHPUnit54Migration:risky, @PHPUnit55Migration:risky, @PHPUnit56Migration:risky, @PHPUnit57Migration:risky, @PHPUnit60Migration:risky, @PHPUnit75Migration:risky]
+
+ Usages of ``->setExpectedException*`` methods MUST be replaced by
+ ``->expectException*`` methods.
+
+ *Risky rule: risky when PHPUnit classes are overridden or not accessible, or when project has PHPUnit incompatibilities.*
+
+ Configuration options:
+
+ - ``target`` (``'5.2'``, ``'5.6'``, ``'newest'``): target version of PHPUnit; defaults to
+ ``'newest'``
+
+* **php_unit_fqcn_annotation** [@Symfony, @PhpCsFixer]
+
+ PHPUnit annotations should be a FQCNs including a root namespace.
+
+* **php_unit_internal_class** [@PhpCsFixer]
+
+ All PHPUnit test classes should be marked as internal.
+
+ Configuration options:
+
+ - ``types`` (a subset of ``['normal', 'final', 'abstract']``): what types of
+ classes to mark as internal; defaults to ``['normal', 'final']``
+
+* **php_unit_method_casing** [@PhpCsFixer]
+
+ Enforce camel (or snake) case for PHPUnit test methods, following
+ configuration.
+
+ Configuration options:
+
+ - ``case`` (``'camel_case'``, ``'snake_case'``): apply camel or snake case to test
+ methods; defaults to ``'camel_case'``
+
+* **php_unit_mock** [@PHPUnit54Migration:risky, @PHPUnit55Migration:risky, @PHPUnit56Migration:risky, @PHPUnit57Migration:risky, @PHPUnit60Migration:risky, @PHPUnit75Migration:risky]
+
+ Usages of ``->getMock`` and
+ ``->getMockWithoutInvokingTheOriginalConstructor`` methods MUST be
+ replaced by ``->createMock`` or ``->createPartialMock`` methods.
+
+ *Risky rule: risky when PHPUnit classes are overridden or not accessible, or when project has PHPUnit incompatibilities.*
+
+ Configuration options:
+
+ - ``target`` (``'5.4'``, ``'5.5'``, ``'newest'``): target version of PHPUnit; defaults to
+ ``'newest'``
+
+* **php_unit_mock_short_will_return** [@Symfony:risky, @PhpCsFixer:risky]
+
+ Usage of PHPUnit's mock e.g. ``->will($this->returnValue(..))`` must be
+ replaced by its shorter equivalent such as ``->willReturn(...)``.
+
+ *Risky rule: risky when PHPUnit classes are overridden or not accessible, or when project has PHPUnit incompatibilities.*
+
+* **php_unit_namespaced** [@PHPUnit48Migration:risky, @PHPUnit50Migration:risky, @PHPUnit52Migration:risky, @PHPUnit54Migration:risky, @PHPUnit55Migration:risky, @PHPUnit56Migration:risky, @PHPUnit57Migration:risky, @PHPUnit60Migration:risky, @PHPUnit75Migration:risky]
+
+ PHPUnit classes MUST be used in namespaced version, e.g.
+ ``\PHPUnit\Framework\TestCase`` instead of ``\PHPUnit_Framework_TestCase``.
+
+ *Risky rule: risky when PHPUnit classes are overridden or not accessible, or when project has PHPUnit incompatibilities.*
+
+ Configuration options:
+
+ - ``target`` (``'4.8'``, ``'5.7'``, ``'6.0'``, ``'newest'``): target version of PHPUnit;
+ defaults to ``'newest'``
+
+* **php_unit_no_expectation_annotation** [@PHPUnit32Migration:risky, @PHPUnit35Migration:risky, @PHPUnit43Migration:risky, @PHPUnit48Migration:risky, @PHPUnit50Migration:risky, @PHPUnit52Migration:risky, @PHPUnit54Migration:risky, @PHPUnit55Migration:risky, @PHPUnit56Migration:risky, @PHPUnit57Migration:risky, @PHPUnit60Migration:risky, @PHPUnit75Migration:risky]
+
+ Usages of ``@expectedException*`` annotations MUST be replaced by
+ ``->setExpectedException*`` methods.
+
+ *Risky rule: risky when PHPUnit classes are overridden or not accessible, or when project has PHPUnit incompatibilities.*
+
+ Configuration options:
+
+ - ``target`` (``'3.2'``, ``'4.3'``, ``'newest'``): target version of PHPUnit; defaults to
+ ``'newest'``
+ - ``use_class_const`` (``bool``): use ::class notation; defaults to ``true``
+
+* **php_unit_ordered_covers** [@PhpCsFixer]
+
+ Order ``@covers`` annotation of PHPUnit tests.
+
+* **php_unit_set_up_tear_down_visibility** [@PhpCsFixer:risky]
+
+ Changes the visibility of the ``setUp()`` and ``tearDown()`` functions of
+ PHPUnit to ``protected``, to match the PHPUnit TestCase.
+
+ *Risky rule: this fixer may change functions named ``setUp()`` or ``tearDown()`` outside of PHPUnit tests, when a class is wrongly seen as a PHPUnit test.*
+
+* **php_unit_size_class**
+
+ All PHPUnit test cases should have ``@small``, ``@medium`` or ``@large``
+ annotation to enable run time limits.
+
+ Configuration options:
+
+ - ``group`` (``'large'``, ``'medium'``, ``'small'``): define a specific group to be used
+ in case no group is already in use; defaults to ``'small'``
+
+* **php_unit_strict** [@PhpCsFixer:risky]
+
+ PHPUnit methods like ``assertSame`` should be used instead of
+ ``assertEquals``.
+
+ *Risky rule: risky when any of the functions are overridden or when testing object equality.*
+
+ Configuration options:
+
+ - ``assertions`` (a subset of ``['assertAttributeEquals',
+ 'assertAttributeNotEquals', 'assertEquals', 'assertNotEquals']``): list
+ of assertion methods to fix; defaults to ``['assertAttributeEquals',
+ 'assertAttributeNotEquals', 'assertEquals', 'assertNotEquals']``
+
+* **php_unit_test_annotation** [@PhpCsFixer:risky]
+
+ Adds or removes @test annotations from tests, following configuration.
+
+ *Risky rule: this fixer may change the name of your tests, and could cause incompatibility with abstract classes or interfaces.*
+
+ Configuration options:
+
+ - ``case`` (``'camel'``, ``'snake'``): whether to camel or snake case when adding the
+ test prefix; defaults to ``'camel'``. DEPRECATED: use
+ ``php_unit_method_casing`` fixer instead
+ - ``style`` (``'annotation'``, ``'prefix'``): whether to use the @test annotation or
+ not; defaults to ``'prefix'``
+
+* **php_unit_test_case_static_method_calls** [@PhpCsFixer:risky]
+
+ Calls to ``PHPUnit\Framework\TestCase`` static methods must all be of the
+ same type, either ``$this->``, ``self::`` or ``static::``.
+
+ *Risky rule: risky when PHPUnit methods are overridden or not accessible, or when project has PHPUnit incompatibilities.*
+
+ Configuration options:
+
+ - ``call_type`` (``'self'``, ``'static'``, ``'this'``): the call type to use for referring
+ to PHPUnit methods; defaults to ``'static'``
+ - ``methods`` (``array``): dictionary of ``method`` => ``call_type`` values that
+ differ from the default strategy; defaults to ``[]``
+
+* **php_unit_test_class_requires_covers** [@PhpCsFixer]
+
+ Adds a default ``@coversNothing`` annotation to PHPUnit test classes that
+ have no ``@covers*`` annotation.
+
+* **phpdoc_add_missing_param_annotation** [@PhpCsFixer]
+
+ PHPDoc should contain ``@param`` for all params.
+
+ Configuration options:
+
+ - ``only_untyped`` (``bool``): whether to add missing ``@param`` annotations for
+ untyped parameters only; defaults to ``true``
+
+* **phpdoc_align** [@Symfony, @PhpCsFixer]
+
+ All items of the given phpdoc tags must be either left-aligned or (by
+ default) aligned vertically.
+
+ Configuration options:
+
+ - ``align`` (``'left'``, ``'vertical'``): align comments; defaults to ``'vertical'``
+ - ``tags`` (a subset of ``['param', 'property', 'property-read',
+ 'property-write', 'return', 'throws', 'type', 'var', 'method']``): the
+ tags that should be aligned; defaults to ``['param', 'return', 'throws',
+ 'type', 'var']``
+
+* **phpdoc_annotation_without_dot** [@Symfony, @PhpCsFixer]
+
+ PHPDoc annotation descriptions should not be a sentence.
+
+* **phpdoc_indent** [@Symfony, @PhpCsFixer]
+
+ Docblocks should have the same indentation as the documented subject.
+
+* **phpdoc_inline_tag** [@Symfony, @PhpCsFixer]
+
+ Fix PHPDoc inline tags, make ``@inheritdoc`` always inline.
+
+* **phpdoc_line_span**
+
+ Changes doc blocks from single to multi line, or reversed. Works for
+ class constants, properties and methods only.
+
+ Configuration options:
+
+ - ``const`` (``'multi'``, ``'single'``): whether const blocks should be single or
+ multi line; defaults to ``'multi'``
+ - ``method`` (``'multi'``, ``'single'``): whether method doc blocks should be single
+ or multi line; defaults to ``'multi'``
+ - ``property`` (``'multi'``, ``'single'``): whether property doc blocks should be
+ single or multi line; defaults to ``'multi'``
+
+* **phpdoc_no_access** [@Symfony, @PhpCsFixer]
+
+ ``@access`` annotations should be omitted from PHPDoc.
+
+* **phpdoc_no_alias_tag** [@Symfony, @PhpCsFixer]
+
+ No alias PHPDoc tags should be used.
+
+ Configuration options:
+
+ - ``replacements`` (``array``): mapping between replaced annotations with new
+ ones; defaults to ``['property-read' => 'property', 'property-write' =>
+ 'property', 'type' => 'var', 'link' => 'see']``
+
+* **phpdoc_no_empty_return** [@PhpCsFixer]
+
+ ``@return void`` and ``@return null`` annotations should be omitted from
+ PHPDoc.
+
+* **phpdoc_no_package** [@Symfony, @PhpCsFixer]
+
+ ``@package`` and ``@subpackage`` annotations should be omitted from PHPDoc.
+
+* **phpdoc_no_useless_inheritdoc** [@Symfony, @PhpCsFixer]
+
+ Classy that does not inherit must not have ``@inheritdoc`` tags.
+
+* **phpdoc_order** [@PhpCsFixer]
+
+ Annotations in PHPDoc should be ordered so that ``@param`` annotations
+ come first, then ``@throws`` annotations, then ``@return`` annotations.
+
+* **phpdoc_return_self_reference** [@Symfony, @PhpCsFixer]
+
+ The type of ``@return`` annotations of methods returning a reference to
+ itself must the configured one.
+
+ Configuration options:
+
+ - ``replacements`` (``array``): mapping between replaced return types with new
+ ones; defaults to ``['this' => '$this', '@this' => '$this', '$self' =>
+ 'self', '@self' => 'self', '$static' => 'static', '@static' =>
+ 'static']``
+
+* **phpdoc_scalar** [@Symfony, @PhpCsFixer]
+
+ Scalar types should always be written in the same form. ``int`` not
+ ``integer``, ``bool`` not ``boolean``, ``float`` not ``real`` or ``double``.
+
+ Configuration options:
+
+ - ``types`` (a subset of ``['boolean', 'callback', 'double', 'integer', 'real',
+ 'str']``): a map of types to fix; defaults to ``['boolean', 'double',
+ 'integer', 'real', 'str']``
+
+* **phpdoc_separation** [@Symfony, @PhpCsFixer]
+
+ Annotations in PHPDoc should be grouped together so that annotations of
+ the same type immediately follow each other, and annotations of a
+ different type are separated by a single blank line.
+
+* **phpdoc_single_line_var_spacing** [@Symfony, @PhpCsFixer]
+
+ Single line ``@var`` PHPDoc should have proper spacing.
+
+* **phpdoc_summary** [@Symfony, @PhpCsFixer]
+
+ PHPDoc summary should end in either a full stop, exclamation mark, or
+ question mark.
+
+* **phpdoc_to_comment** [@Symfony, @PhpCsFixer]
+
+ Docblocks should only be used on structural elements.
+
+* **phpdoc_to_param_type**
+
+ EXPERIMENTAL: Takes ``@param`` annotations of non-mixed types and adjusts
+ accordingly the function signature. Requires PHP >= 7.0.
+
+ *Risky rule: [1] This rule is EXPERIMENTAL and is not covered with backward compatibility promise. [2] ``@param`` annotation is mandatory for the fixer to make changes, signatures of methods without it (no docblock, inheritdocs) will not be fixed. [3] Manual actions are required if inherited signatures are not properly documented.*
+
+ Configuration options:
+
+ - ``scalar_types`` (``bool``): fix also scalar types; may have unexpected
+ behaviour due to PHP bad type coercion system; defaults to ``true``
+
+* **phpdoc_to_return_type**
+
+ EXPERIMENTAL: Takes ``@return`` annotation of non-mixed types and adjusts
+ accordingly the function signature. Requires PHP >= 7.0.
+
+ *Risky rule: [1] This rule is EXPERIMENTAL and is not covered with backward compatibility promise. [2] ``@return`` annotation is mandatory for the fixer to make changes, signatures of methods without it (no docblock, inheritdocs) will not be fixed. [3] Manual actions are required if inherited signatures are not properly documented. [4] ``@inheritdocs`` support is under construction.*
+
+ Configuration options:
+
+ - ``scalar_types`` (``bool``): fix also scalar types; may have unexpected
+ behaviour due to PHP bad type coercion system; defaults to ``true``
+
+* **phpdoc_trim** [@Symfony, @PhpCsFixer]
+
+ PHPDoc should start and end with content, excluding the very first and
+ last line of the docblocks.
+
+* **phpdoc_trim_consecutive_blank_line_separation** [@Symfony, @PhpCsFixer]
+
+ Removes extra blank lines after summary and after description in PHPDoc.
+
+* **phpdoc_types** [@Symfony, @PhpCsFixer]
+
+ The correct case must be used for standard PHP types in PHPDoc.
+
+ Configuration options:
+
+ - ``groups`` (a subset of ``['simple', 'alias', 'meta']``): type groups to fix;
+ defaults to ``['simple', 'alias', 'meta']``
+
+* **phpdoc_types_order** [@Symfony, @PhpCsFixer]
+
+ Sorts PHPDoc types.
+
+ Configuration options:
+
+ - ``null_adjustment`` (``'always_first'``, ``'always_last'``, ``'none'``): forces the
+ position of ``null`` (overrides ``sort_algorithm``); defaults to
+ ``'always_first'``
+ - ``sort_algorithm`` (``'alpha'``, ``'none'``): the sorting algorithm to apply;
+ defaults to ``'alpha'``
+
+* **phpdoc_var_annotation_correct_order** [@PhpCsFixer]
+
+ ``@var`` and ``@type`` annotations must have type and name in the correct
+ order.
+
+* **phpdoc_var_without_name** [@Symfony, @PhpCsFixer]
+
+ ``@var`` and ``@type`` annotations of classy properties should not contain
+ the name.
+
+* **pow_to_exponentiation** [@PHP56Migration:risky, @PHP70Migration:risky, @PHP71Migration:risky]
+
+ Converts ``pow`` to the ``**`` operator.
+
+ *Risky rule: risky when the function ``pow`` is overridden.*
+
+* **pre_increment**
+
+ Pre incrementation/decrementation should be used if possible.
+ DEPRECATED: use ``increment_style`` instead.
+
+* **protected_to_private** [@PhpCsFixer]
+
+ Converts ``protected`` variables and methods to ``private`` where possible.
+
+* **psr0**
+
+ Classes must be in a path that matches their namespace, be at least one
+ namespace deep and the class name should match the file name.
+
+ *Risky rule: this fixer may change your class name, which will break the code that depends on the old name.*
+
+ Configuration options:
+
+ - ``dir`` (``string``): the directory where the project code is placed; defaults
+ to ``''``
+
+* **psr4** [@Symfony:risky, @PhpCsFixer:risky]
+
+ Class names should match the file name.
+
+ *Risky rule: this fixer may change your class name, which will break the code that depends on the old name.*
+
+* **random_api_migration** [@PHP70Migration:risky, @PHP71Migration:risky]
+
+ Replaces ``rand``, ``srand``, ``getrandmax`` functions calls with their ``mt_*``
+ analogs.
+
+ *Risky rule: risky when the configured functions are overridden.*
+
+ Configuration options:
+
+ - ``replacements`` (``array``): mapping between replaced functions with the new
+ ones; defaults to ``['getrandmax' => 'mt_getrandmax', 'rand' =>
+ 'mt_rand', 'srand' => 'mt_srand']``
+
+* **return_assignment** [@PhpCsFixer]
+
+ Local, dynamic and directly referenced variables should not be assigned
+ and directly returned by a function or method.
+
+* **return_type_declaration** [@Symfony, @PhpCsFixer]
+
+ There should be one or no space before colon, and one space after it in
+ return type declarations, according to configuration.
+
+ Configuration options:
+
+ - ``space_before`` (``'none'``, ``'one'``): spacing to apply before colon; defaults to
+ ``'none'``
+
+* **self_accessor** [@Symfony:risky, @PhpCsFixer:risky]
+
+ Inside class or interface element ``self`` should be preferred to the
+ class name itself.
+
+ *Risky rule: risky when using dynamic calls like get_called_class() or late static binding.*
+
+* **self_static_accessor**
+
+ Inside a ``final`` class or anonymous class ``self`` should be preferred to
+ ``static``.
+
+* **semicolon_after_instruction** [@Symfony, @PhpCsFixer]
+
+ Instructions must be terminated with a semicolon.
+
+* **set_type_to_cast** [@Symfony:risky, @PhpCsFixer:risky]
+
+ Cast shall be used, not ``settype``.
+
+ *Risky rule: risky when the ``settype`` function is overridden or when used as the 2nd or 3rd expression in a ``for`` loop .*
+
+* **short_scalar_cast** [@Symfony, @PhpCsFixer]
+
+ Cast ``(boolean)`` and ``(integer)`` should be written as ``(bool)`` and
+ ``(int)``, ``(double)`` and ``(real)`` as ``(float)``, ``(binary)`` as
+ ``(string)``.
+
+* **silenced_deprecation_error**
+
+ Ensures deprecation notices are silenced. DEPRECATED: use
+ ``error_suppression`` instead.
+
+ *Risky rule: silencing of deprecation errors might cause changes to code behaviour.*
+
+* **simple_to_complex_string_variable** [@PhpCsFixer]
+
+ Converts explicit variables in double-quoted strings and heredoc syntax
+ from simple to complex format (``${`` to ``{$``).
+
+* **simplified_null_return**
+
+ A return statement wishing to return ``void`` should not return ``null``.
+
+* **single_blank_line_at_eof** [@PSR2, @Symfony, @PhpCsFixer]
+
+ A PHP file without end tag must always end with a single empty line
+ feed.
+
+* **single_blank_line_before_namespace** [@Symfony, @PhpCsFixer]
+
+ There should be exactly one blank line before a namespace declaration.
+
+* **single_class_element_per_statement** [@PSR2, @Symfony, @PhpCsFixer]
+
+ There MUST NOT be more than one property or constant declared per
+ statement.
+
+ Configuration options:
+
+ - ``elements`` (a subset of ``['const', 'property']``): list of strings which
+ element should be modified; defaults to ``['const', 'property']``
+
+* **single_import_per_statement** [@PSR2, @Symfony, @PhpCsFixer]
+
+ There MUST be one use keyword per declaration.
+
+* **single_line_after_imports** [@PSR2, @Symfony, @PhpCsFixer]
+
+ Each namespace use MUST go on its own line and there MUST be one blank
+ line after the use statements block.
+
+* **single_line_comment_style** [@Symfony, @PhpCsFixer]
+
+ Single-line comments and multi-line comments with only one line of
+ actual content should use the ``//`` syntax.
+
+ Configuration options:
+
+ - ``comment_types`` (a subset of ``['asterisk', 'hash']``): list of comment types
+ to fix; defaults to ``['asterisk', 'hash']``
+
+* **single_line_throw** [@Symfony]
+
+ Throwing exception must be done in single line.
+
+* **single_quote** [@Symfony, @PhpCsFixer]
+
+ Convert double quotes to single quotes for simple strings.
+
+ Configuration options:
+
+ - ``strings_containing_single_quote_chars`` (``bool``): whether to fix
+ double-quoted strings that contains single-quotes; defaults to ``false``
+
+* **single_trait_insert_per_statement** [@Symfony, @PhpCsFixer]
+
+ Each trait ``use`` must be done as single statement.
+
+* **space_after_semicolon** [@Symfony, @PhpCsFixer]
+
+ Fix whitespace after a semicolon.
+
+ Configuration options:
+
+ - ``remove_in_empty_for_expressions`` (``bool``): whether spaces should be removed
+ for empty ``for`` expressions; defaults to ``false``
+
+* **standardize_increment** [@Symfony, @PhpCsFixer]
+
+ Increment and decrement operators should be used if possible.
+
+* **standardize_not_equals** [@Symfony, @PhpCsFixer]
+
+ Replace all ``<>`` with ``!=``.
+
+* **static_lambda**
+
+ Lambdas not (indirect) referencing ``$this`` must be declared ``static``.
+
+ *Risky rule: risky when using ``->bindTo`` on lambdas without referencing to ``$this``.*
+
+* **strict_comparison** [@PhpCsFixer:risky]
+
+ Comparisons should be strict.
+
+ *Risky rule: changing comparisons to strict might change code behavior.*
+
+* **strict_param** [@PhpCsFixer:risky]
+
+ Functions should be used with ``$strict`` param set to ``true``.
+
+ *Risky rule: risky when the fixed function is overridden or if the code relies on non-strict usage.*
+
+* **string_line_ending** [@PhpCsFixer:risky]
+
+ All multi-line strings must use correct line ending.
+
+ *Risky rule: changing the line endings of multi-line strings might affect string comparisons and outputs.*
+
+* **switch_case_semicolon_to_colon** [@PSR2, @Symfony, @PhpCsFixer]
+
+ A case should be followed by a colon and not a semicolon.
+
+* **switch_case_space** [@PSR2, @Symfony, @PhpCsFixer]
+
+ Removes extra spaces between colon and case value.
+
+* **ternary_operator_spaces** [@Symfony, @PhpCsFixer]
+
+ Standardize spaces around ternary operator.
+
+* **ternary_to_null_coalescing** [@PHP70Migration, @PHP71Migration, @PHP73Migration]
+
+ Use ``null`` coalescing operator ``??`` where possible. Requires PHP >= 7.0.
+
+* **trailing_comma_in_multiline_array** [@Symfony, @PhpCsFixer]
+
+ PHP multi-line arrays should have a trailing comma.
+
+ Configuration options:
+
+ - ``after_heredoc`` (``bool``): whether a trailing comma should also be placed
+ after heredoc end; defaults to ``false``
+
+* **trim_array_spaces** [@Symfony, @PhpCsFixer]
+
+ Arrays should be formatted like function/method arguments, without
+ leading or trailing single line space.
+
+* **unary_operator_spaces** [@Symfony, @PhpCsFixer]
+
+ Unary operators should be placed adjacent to their operands.
+
+* **visibility_required** [@PSR2, @Symfony, @PhpCsFixer, @PHP71Migration, @PHP73Migration]
+
+ Visibility MUST be declared on all properties and methods; ``abstract``
+ and ``final`` MUST be declared before the visibility; ``static`` MUST be
+ declared after the visibility.
+
+ Configuration options:
+
+ - ``elements`` (a subset of ``['property', 'method', 'const']``): the structural
+ elements to fix (PHP >= 7.1 required for ``const``); defaults to
+ ``['property', 'method']``
+
+* **void_return** [@PHP71Migration:risky]
+
+ Add ``void`` return type to functions with missing or empty return
+ statements, but priority is given to ``@return`` annotations. Requires
+ PHP >= 7.1.
+
+ *Risky rule: modifies the signature of functions.*
+
+* **whitespace_after_comma_in_array** [@Symfony, @PhpCsFixer]
+
+ In array declaration, there MUST be a whitespace after each comma.
+
+* **yoda_style** [@Symfony, @PhpCsFixer]
+
+ Write conditions in Yoda style (``true``), non-Yoda style (``false``) or
+ ignore those conditions (``null``) based on configuration.
+
+ Configuration options:
+
+ - ``always_move_variable`` (``bool``): whether variables should always be on non
+ assignable side when applying Yoda style; defaults to ``false``
+ - ``equal`` (``bool``, ``null``): style for equal (``==``, ``!=``) statements; defaults to
+ ``true``
+ - ``identical`` (``bool``, ``null``): style for identical (``===``, ``!==``) statements;
+ defaults to ``true``
+ - ``less_and_greater`` (``bool``, ``null``): style for less and greater than (``<``,
+ ``<=``, ``>``, ``>=``) statements; defaults to ``null``
+
+
+The ``--dry-run`` option displays the files that need to be
+fixed but without actually modifying them:
+
+.. code-block:: bash
+
+ $ php php-cs-fixer.phar fix /path/to/code --dry-run
+
+Config file
+-----------
+
+Instead of using command line options to customize the rule, you can save the
+project configuration in a ``.php_cs.dist`` file in the root directory of your project.
+The file must return an instance of `PhpCsFixer\\ConfigInterface `_
+which lets you configure the rules, the files and directories that
+need to be analyzed. You may also create ``.php_cs`` file, which is
+the local configuration that will be used instead of the project configuration. It
+is a good practice to add that file into your ``.gitignore`` file.
+With the ``--config`` option you can specify the path to the
+``.php_cs`` file.
+
+The example below will add two rules to the default list of PSR2 set rules:
+
+.. code-block:: php
+
+ exclude('somedir')
+ ->notPath('src/Symfony/Component/Translation/Tests/fixtures/resources.php')
+ ->in(__DIR__)
+ ;
+
+ return PhpCsFixer\Config::create()
+ ->setRules([
+ '@PSR2' => true,
+ 'strict_param' => true,
+ 'array_syntax' => ['syntax' => 'short'],
+ ])
+ ->setFinder($finder)
+ ;
+
+**NOTE**: ``exclude`` will work only for directories, so if you need to exclude file, try ``notPath``.
+Both ``exclude`` and ``notPath`` methods accept only relative paths to the ones defined with the ``in`` method.
+
+See `Symfony\\Finder `_
+online documentation for other `Finder` methods.
+
+You may also use a blacklist for the rules instead of the above shown whitelist approach.
+The following example shows how to use all ``Symfony`` rules but the ``full_opening_tag`` rule.
+
+.. code-block:: php
+
+ exclude('somedir')
+ ->in(__DIR__)
+ ;
+
+ return PhpCsFixer\Config::create()
+ ->setRules([
+ '@Symfony' => true,
+ 'full_opening_tag' => false,
+ ])
+ ->setFinder($finder)
+ ;
+
+You may want to use non-linux whitespaces in your project. Then you need to
+configure them in your config file.
+
+.. code-block:: php
+
+ setIndent("\t")
+ ->setLineEnding("\r\n")
+ ;
+
+By using ``--using-cache`` option with ``yes`` or ``no`` you can set if the caching
+mechanism should be used.
+
+Caching
+-------
+
+The caching mechanism is enabled by default. This will speed up further runs by
+fixing only files that were modified since the last run. The tool will fix all
+files if the tool version has changed or the list of rules has changed.
+Cache is supported only for tool downloaded as phar file or installed via
+composer.
+
+Cache can be disabled via ``--using-cache`` option or config file:
+
+.. code-block:: php
+
+ setUsingCache(false)
+ ;
+
+Cache file can be specified via ``--cache-file`` option or config file:
+
+.. code-block:: php
+
+ setCacheFile(__DIR__.'/.php_cs.cache')
+ ;
+
+Using PHP CS Fixer on CI
+------------------------
+
+Require ``friendsofphp/php-cs-fixer`` as a ``dev`` dependency:
+
+.. code-block:: bash
+
+ $ ./composer.phar require --dev friendsofphp/php-cs-fixer
+
+Then, add the following command to your CI:
+
+.. code-block:: bash
+
+ $ IFS='
+ $ '
+ $ CHANGED_FILES=$(git diff --name-only --diff-filter=ACMRTUXB "${COMMIT_RANGE}")
+ $ if ! echo "${CHANGED_FILES}" | grep -qE "^(\\.php_cs(\\.dist)?|composer\\.lock)$"; then EXTRA_ARGS=$(printf -- '--path-mode=intersection\n--\n%s' "${CHANGED_FILES}"); else EXTRA_ARGS=''; fi
+ $ vendor/bin/php-cs-fixer fix --config=.php_cs.dist -v --dry-run --stop-on-violation --using-cache=no ${EXTRA_ARGS}
+
+Where ``$COMMIT_RANGE`` is your range of commits, e.g. ``$TRAVIS_COMMIT_RANGE`` or ``HEAD~..HEAD``.
+
+Exit code
+---------
+
+Exit code is built using following bit flags:
+
+* 0 - OK.
+* 1 - General error (or PHP minimal requirement not matched).
+* 4 - Some files have invalid syntax (only in dry-run mode).
+* 8 - Some files need fixing (only in dry-run mode).
+* 16 - Configuration error of the application.
+* 32 - Configuration error of a Fixer.
+* 64 - Exception raised within the application.
+
+(Applies to exit code of the ``fix`` command only)
+
+Helpers
+-------
+
+Dedicated plugins exist for:
+
+* `Atom`_
+* `NetBeans`_
+* `PhpStorm`_
+* `Sublime Text`_
+* `Vim`_
+* `VS Code`_
+
+Contribute
+----------
+
+The tool comes with quite a few built-in fixers, but everyone is more than
+welcome to `contribute`_ more of them.
+
+Fixers
+~~~~~~
+
+A *fixer* is a class that tries to fix one CS issue (a ``Fixer`` class must
+implement ``FixerInterface``).
+
+Configs
+~~~~~~~
+
+A *config* knows about the CS rules and the files and directories that must be
+scanned by the tool when run in the directory of your project. It is useful for
+projects that follow a well-known directory structures (like for Symfony
+projects for instance).
+
+.. _php-cs-fixer.phar: https://cs.symfony.com/download/php-cs-fixer-v2.phar
+.. _Atom: https://github.com/Glavin001/atom-beautify
+.. _NetBeans: http://plugins.netbeans.org/plugin/49042/php-cs-fixer
+.. _PhpStorm: https://medium.com/@valeryan/how-to-configure-phpstorm-to-use-php-cs-fixer-1844991e521f
+.. _Sublime Text: https://github.com/benmatselby/sublime-phpcs
+.. _Vim: https://github.com/stephpy/vim-php-cs-fixer
+.. _VS Code: https://github.com/junstyle/vscode-php-cs-fixer
+.. _contribute: https://github.com/FriendsOfPHP/PHP-CS-Fixer/blob/master/CONTRIBUTING.md
diff --git a/lib/composer/friendsofphp/php-cs-fixer/UPGRADE.md b/lib/composer/friendsofphp/php-cs-fixer/UPGRADE.md
new file mode 100644
index 0000000000000..435d016f9a022
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/UPGRADE.md
@@ -0,0 +1,184 @@
+UPGRADE GUIDE FROM 1.x to 2.0
+=============================
+
+This is guide for upgrade from version 1.x to 2.0 for using the CLI tool.
+
+Rules and sets
+--------------
+To configure which fixers should be used you must now set rules and sets instead of fixers and level. This affects both configuration file and CLI arguments.
+
+Default ruleset was changed from Symfony standard to more generic PSR2. You can still use Symfony standard, which in fact extends PSR2.
+
+The term of risky fixers was introduced. Risky fixer is a fixer that may change the meaning of code (like `StrictComparisonFixer` fixer, which will change `==` into `===`). No rules that are followed by risky fixers are run by default. You need to explicitly permit risky fixers to run them.
+
+Default configuration changes
+----------------------------
+By default, PSR2 rules are used instead of Symfony rules.
+Files that will be fixed are php/phpt/twig instead of php/twig/xml/yml.
+Finally, the caching mechanism is enabled by default.
+
+CLI options
+-----------
+
+| 1.x | 2.0 | Description | Note |
+| --------------- | --------------- | ------------------------------------------------------------------------------ | ------------------------------- |
+| | --allow-risky | Are risky fixers allowed | |
+| | --cache-file | The path to the cache file | option was added |
+| --config | | Config class codename | option was removed |
+| --config-file | --config | The path to a .php_cs file | option was renamed |
+| --diff | --diff | Show diff | |
+| --dry-run | --dry-run | Run in dry-run mode | |
+| --fixers | | Coding standard fixers | option was removed, see --rules |
+| --format | --format | Choose format | |
+| --level | | Coding standard level | option was removed, see --rules |
+| | --path-mode | Should the finder from config be
overridden or intersected with `path` arg | option was added |
+| | --rules | Rules to be used | option was added |
+| | --using-cache | Does cache should be used | option was added |
+
+
+CLI argument
+------------
+
+On 2.x line `path` argument is an array, so you may pass multiple paths.
+
+Intersection path mode makes the `path` argument a mask for finder you have defined in your configuration file.
+Only files pointed by both finder and CLI `path` argument will be fixed.
+
+Exit codes
+----------
+
+Exit codes for `fix` command have been changed and are build using the following bit flags:
+
+| 1.x bit | 2.0 bit | Description | Note |
+| -------:| -------:| ----------------------------------------------------------- | ---------------------------------------------------------------- |
+| 0 | 0 | OK | |
+| 1 | 1 | General error (or PHP/HHVM minimal requirement not matched) | no longer used for other states, never combined with other flags |
+| | 4 | Some files have invalid syntax | flag was added, works only in dry-run mode |
+| | 8 | Some files need fixing | flag was added, works only in dry-run mode |
+| 16 | 16 | Configuration error of the application | |
+| 32 | 32 | Configuration error of a Fixer | |
+| | 64 | Exception within the application | flag was added |
+
+Namespace
+---------
+`Symfony\CS` namespace was renamed into `PhpCsFixer`.
+
+Config file
+-----------
+From now you can create new configuration file: `.php_cs.dist`. This file is used if no `.php_cs` file was found. It is recommended to create `.php_cs.dist` file attached in your repository and add `.php_cs` file to `.gitignore` for allowing your contributors to have theirs own configuration file.
+
+Config and Finder classes
+-------------------------
+All off `Symfony\CS\Config\*` and `Symfony\CS\Finder\*` classes have been removed, instead use `PhpCsFixer\Config` and `PhpCsFixer\Finder`.
+
+For that reason you can not set config class by `--config` CLI argument, from now it is used to set configuration file. Therefor the `--config-file` CLI argument is no longer available.
+
+Renamed rules
+-------------
+
+Old name | New name | Note
+-------- | -------- | ----
+align_double_arrow | binary_operator_spaces | use configuration ['align_double_arrow' => true]
+align_equals | binary_operator_spaces | use configuration ['align_equals' => true]
+array_element_no_space_before_comma | no_whitespace_before_comma_in_array
+array_element_white_space_after_comma | whitespace_after_comma_in_array
+blankline_after_open_tag | blank_line_after_opening_tag
+concat_with_spaces | concat_space | use configuration ['spacing' => 'one']
+concat_without_spaces | concat_space | use configuration ['spacing' => 'none']
+double_arrow_multiline_whitespaces | no_multiline_whitespace_around_double_arrow
+duplicate_semicolon | no_empty_statement | new one fixes more cases
+empty_return | simplified_null_return
+echo_to_print | no_mixed_echo_print | use configuration ['use' => 'print']
+eof_ending | single_blank_line_at_eof
+extra_empty_lines | no_extra_consecutive_blank_lines
+function_call_space | no_spaces_after_function_name
+general_phpdoc_annotation_rename | phpdoc_no_alias_tag | use configuration ['property-read' => 'property', 'property-write' => 'property']
+indentation | indentation_type
+join_function | no_alias_functions | new one fixes more aliases
+line_after_namespace | blank_line_after_namespace
+linefeed | line_ending | whitespaces type aware
+list_commas | no_trailing_comma_in_list_call
+logical_not_operators_with_spaces | not_operator_with_space
+logical_not_operators_with_successor_space | not_operator_with_successor_space
+long_array_syntax | array_syntax | use configuration ['syntax' => 'long']
+method_argument_default_value | no_unreachable_default_argument_value
+multiline_array_trailing_comma | trailing_comma_in_multiline_array
+multiline_spaces_before_semicolon | no_multiline_whitespace_before_semicolons
+multiple_use | single_import_per_statement
+namespace_no_leading_whitespace | no_leading_namespace_whitespace
+newline_after_open_tag | linebreak_after_opening_tag
+no_empty_lines_after_phpdocs | no_blank_lines_after_phpdoc
+object_operator | object_operator_without_whitespace
+operators_spaces | binary_operator_spaces
+ordered_use | ordered_imports
+parenthesis | no_spaces_inside_parenthesis
+php4_constructor | no_php4_constructor
+php_closing_tag | no_closing_tag
+phpdoc_params | phpdoc_align
+phpdoc_property | phpdoc_no_alias_tag | use configuration ['type' => 'var']
+phpdoc_short_description | phpdoc_summary
+phpdoc_type_to_var | phpdoc_no_alias_tag | use configuration ['type' => 'var']
+phpdoc_var_to_type | phpdoc_no_alias_tag | use configuration ['var' => 'type']
+print_to_echo | no_mixed_echo_print | use configuration ['use' => 'echo']
+remove_leading_slash_use | no_leading_import_slash
+remove_lines_between_uses | no_extra_consecutive_blank_lines | use configuration ['use']
+return | blank_line_before_return
+short_array_syntax | array_syntax | use configuration ['syntax' => 'short']
+short_bool_cast | no_short_bool_cast
+short_echo_tag | no_short_echo_tag
+short_tag | full_opening_tag
+single_array_no_trailing_comma | no_trailing_comma_in_singleline_array
+spaces_after_semicolon | space_after_semicolon
+spaces_before_semicolon | no_singleline_whitespace_before_semicolons
+spaces_cast | cast_spaces
+standardize_not_equal | standardize_not_equals
+strict | strict_comparison
+ternary_spaces | ternary_operator_spaces
+trailing_spaces | no_trailing_whitespace
+unalign_double_arrow | binary_operator_spaces | use configuration ['align_double_arrow' => false]
+unalign_equals | binary_operator_spaces | use configuration ['align_equals' => false]
+unary_operators_spaces | unary_operator_spaces
+unneeded_control_parentheses | no_unneeded_control_parentheses
+unused_use | no_unused_imports
+visibility | visibility_required
+whitespacy_lines | no_whitespace_in_blank_line
+
+Changes to Fixers
+-----------------
+
+Fixer | Note
+----- | ----
+psr0 | Fixer no longer takes base dir from `ConfigInterface::getDir`, instead you may configure the fixer with `['dir' => 'my/path']`.
+
+Custom fixers
+-------------
+
+If you have registered custom fixers in your config file `*.php_cs` using `addCustomFixer()` method...
+```
+fixers([
+ 'blankline_after_open_tag',
+ // ...
+ ])
+ ->addCustomFixer(new ShopSys\CodingStandards\CsFixer\MissingButtonTypeFixer())
+ ->addCustomFixer(new ShopSys\CodingStandards\CsFixer\OrmJoinColumnRequireNullableFixer());
+```
+...now you have to use `registerCustomFixers()` method instead and enable the custom fixers by their names in the `setRules()` method:
+```
+registerCustomFixers([
+ new ShopSys\CodingStandards\CsFixer\MissingButtonTypeFixer(),
+ new ShopSys\CodingStandards\CsFixer\OrmJoinColumnRequireNullableFixer(),
+ ])
+ ->setRules([
+ 'blankline_after_open_tag',
+ 'Shopsys/missing_button_type' => true,
+ 'Shopsys/orm_join_column_require_nullable' => true,
+ // ...
+ ]);
+
+```
diff --git a/lib/composer/friendsofphp/php-cs-fixer/ci-integration.sh b/lib/composer/friendsofphp/php-cs-fixer/ci-integration.sh
new file mode 100644
index 0000000000000..489c5d26a9f37
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/ci-integration.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -eu
+
+IFS='
+'
+CHANGED_FILES=$(git diff --name-only --diff-filter=ACMRTUXB "${COMMIT_RANGE}")
+if ! echo "${CHANGED_FILES}" | grep -qE "^(\\.php_cs(\\.dist)?|composer\\.lock)$"; then EXTRA_ARGS=$(printf -- '--path-mode=intersection\n--\n%s' "${CHANGED_FILES}"); else EXTRA_ARGS=''; fi
+vendor/bin/php-cs-fixer fix --config=.php_cs.dist -v --dry-run --stop-on-violation --using-cache=no ${EXTRA_ARGS}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/composer.json b/lib/composer/friendsofphp/php-cs-fixer/composer.json
new file mode 100644
index 0000000000000..ee88eef79e7fa
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/composer.json
@@ -0,0 +1,83 @@
+{
+ "name": "friendsofphp/php-cs-fixer",
+ "type": "application",
+ "description": "A tool to automatically fix PHP code style",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Dariusz Rumiński",
+ "email": "dariusz.ruminski@gmail.com"
+ }
+ ],
+ "require": {
+ "php": "^5.6 || ^7.0",
+ "ext-json": "*",
+ "ext-tokenizer": "*",
+ "composer/semver": "^1.4",
+ "composer/xdebug-handler": "^1.2",
+ "doctrine/annotations": "^1.2",
+ "php-cs-fixer/diff": "^1.3",
+ "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0",
+ "symfony/event-dispatcher": "^3.0 || ^4.0 || ^5.0",
+ "symfony/filesystem": "^3.0 || ^4.0 || ^5.0",
+ "symfony/finder": "^3.0 || ^4.0 || ^5.0",
+ "symfony/options-resolver": "^3.0 || ^4.0 || ^5.0",
+ "symfony/polyfill-php70": "^1.0",
+ "symfony/polyfill-php72": "^1.4",
+ "symfony/process": "^3.0 || ^4.0 || ^5.0",
+ "symfony/stopwatch": "^3.0 || ^4.0 || ^5.0"
+ },
+ "require-dev": {
+ "johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0",
+ "justinrainbow/json-schema": "^5.0",
+ "keradus/cli-executor": "^1.2",
+ "mikey179/vfsstream": "^1.6",
+ "php-coveralls/php-coveralls": "^2.1",
+ "php-cs-fixer/accessible-object": "^1.0",
+ "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.1",
+ "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.1",
+ "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.1",
+ "phpunitgoodpractices/traits": "^1.8",
+ "symfony/phpunit-bridge": "^4.3 || ^5.0",
+ "symfony/yaml": "^3.0 || ^4.0 || ^5.0"
+ },
+ "suggest": {
+ "ext-dom": "For handling output formats in XML",
+ "ext-mbstring": "For handling non-UTF8 characters in cache signature.",
+ "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.",
+ "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.",
+ "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible."
+ },
+ "config": {
+ "sort-packages": true
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpCsFixer\\": "src/"
+ },
+ "classmap": [
+ "tests/Test/AbstractFixerTestCase.php",
+ "tests/Test/AbstractIntegrationCaseFactory.php",
+ "tests/Test/AbstractIntegrationTestCase.php",
+ "tests/Test/Assert/AssertTokensTrait.php",
+ "tests/Test/IntegrationCase.php",
+ "tests/Test/IntegrationCaseFactory.php",
+ "tests/Test/IntegrationCaseFactoryInterface.php",
+ "tests/Test/InternalIntegrationCaseFactory.php",
+ "tests/Test/IsIdenticalConstraint.php",
+ "tests/TestCase.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "PhpCsFixer\\Tests\\": "tests/"
+ }
+ },
+ "bin": [
+ "php-cs-fixer"
+ ]
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/doc/COOKBOOK-FIXERS.md b/lib/composer/friendsofphp/php-cs-fixer/doc/COOKBOOK-FIXERS.md
new file mode 100644
index 0000000000000..afc627aa90e4c
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/doc/COOKBOOK-FIXERS.md
@@ -0,0 +1,530 @@
+Cookbook - Making a new Fixer for PHP CS Fixer
+==============================================
+
+You want to make a new fixer to PHP CS Fixer and do not know how to
+start. Follow this document and you will be able to do it.
+
+## Background
+
+In order to be able to create a new fixer, you need some background.
+PHP CS Fixer is a transcompiler which takes valid PHP code and pretty
+print valid PHP code. It does all transformations in multiple passes,
+a.k.a., multi-pass compiler.
+
+Therefore, a new fixer is meant to be ideally
+[idempotent](https://en.wikipedia.org/wiki/Idempotence#Computer_science_meaning),
+or at least atomic in its actions. More on this later.
+
+All contributions go through a code review process. Do not feel
+discouraged - it is meant only to give more people more chance to
+contribute, and to detect bugs ([Linus'
+Law](https://en.wikipedia.org/wiki/Linus%27s_Law)).
+
+If possible, try to get acquainted with the public interface for the
+[Tokens class](/src/Tokenizer/Tokens.php)
+and [Token class](/src/Tokenizer/Token.php)
+classes.
+
+## Assumptions
+
+* You are familiar with Test Driven Development.
+* Forked FriendsOfPHP/PHP-CS-Fixer into your own GitHub Account.
+* Cloned your forked repository locally.
+* Installed the dependencies of PHP CS Fixer using [Composer](https://getcomposer.org/).
+* You have read [`CONTRIBUTING.md`](/CONTRIBUTING.md).
+
+## Step by step
+
+For this step-by-step, we are going to create a simple fixer that
+removes all comments of the code that are preceded by ';' (semicolon).
+
+We are calling it `remove_comments` (code name), or,
+`RemoveCommentsFixer` (class name).
+
+### Step 1 - Creating files
+
+Create a new file in `src/Fixer/Comment/RemoveCommentsFixer.php`.
+Put this content inside:
+```php
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Fixer\Comment;
+
+use PhpCsFixer\AbstractFixer;
+use PhpCsFixer\Tokenizer\Tokens;
+
+/**
+ * @author Your name
+ */
+final class RemoveCommentsFixer extends AbstractFixer
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function getDefinition()
+ {
+ // Return a definition of the fixer, it will be used in the README.rst.
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function isCandidate(Tokens $tokens)
+ {
+ // Check whether the collection is a candidate for fixing.
+ // Has to be ultra cheap to execute.
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function applyFix(\SplFileInfo $file, Tokens $tokens)
+ {
+ // Add the fixing logic of the fixer here.
+ }
+}
+```
+
+Note how the class and file name match. Also keep in mind that all
+fixers must implement `Fixer\FixerInterface`. In this case, the fixer is
+inheriting from `AbstractFixer`, which fulfills the interface with some
+default behavior.
+
+Now let us create the test file at
+`tests/Fixer/Comment/RemoveCommentsFixerTest.php`. Put this content inside:
+
+```php
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Tests\Fixer\Comment;
+
+use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
+
+/**
+ * @author Your name
+ *
+ * @internal
+ *
+ * @covers \PhpCsFixer\Fixer\Comment\RemoveCommentsFixer
+ */
+final class RemoveCommentsFixerTest extends AbstractFixerTestCase
+{
+ /**
+ * @param string $expected
+ * @param null|string $input
+ *
+ * @dataProvider provideFixCases
+ */
+ public function testFix($expected, $input = null)
+ {
+ $this->doTest($expected, $input);
+ }
+
+ public function provideFixCases()
+ {
+ return [];
+ }
+}
+```
+### Step 2 - Using tests to define fixers behavior
+
+Now that the files are created, you can start writing test to define the
+behavior of the fixer. You have to do it in two ways: first, ensuring
+the fixer changes what it should be changing; second, ensuring that
+fixer does not change what is not supposed to change. Thus:
+
+#### Keeping things as they are:
+`tests/Fixer/Comment/RemoveCommentsFixerTest.php`@provideFixCases:
+```php
+ ...
+ public function provideFixCases()
+ {
+ return [
+ ['
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Tests\Fixer\Comment;
+
+use PhpCsFixer\Tests\Fixer\AbstractFixerTestBase;
+
+/**
+ * @author Your name
+ *
+ * @internal
+ */
+final class RemoveCommentsFixerTest extends AbstractFixerTestBase
+{
+ /**
+ * @param string $expected
+ * @param null|string $input
+ *
+ * @dataProvider provideFixCases
+ */
+ public function testFix($expected, $input = null)
+ {
+ $this->doTest($expected, $input);
+ }
+
+ public function provideFixCases()
+ {
+ return [
+ [
+ ' README.rst`
+
+Next, we must filter what type of tokens we want to fix. Here, we are interested in code that contains `T_COMMENT` tokens:
+`src/Fixer/Comment/RemoveCommentsFixer.php`:
+```php
+final class RemoveCommentsFixer extends AbstractFixer
+{
+ ...
+
+ /**
+ * {@inheritdoc}
+ */
+ public function isCandidate(Tokens $tokens)
+ {
+ return $tokens->isTokenKindFound(T_COMMENT);
+ }
+}
+```
+
+For now, let us just make a fixer that applies no modification:
+`src/Fixer/Comment/RemoveCommentsFixer.php`:
+```php
+class RemoveCommentsFixer extends AbstractFixer
+{
+ ...
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function applyFix(\SplFileInfo $file, Tokens $tokens)
+ {
+ // no action
+ }
+}
+```
+
+Run `$ phpunit tests/Fixer/Comment/RemoveCommentsFixerTest.php`.
+You are going to see that the tests fails.
+
+### Break
+Now we have pretty much a cradle to work with. A file with a failing
+test, and the fixer, that for now does not do anything.
+
+How do fixers work? In the PHP CS Fixer, they work by iterating through
+pieces of codes (each being a Token), and inspecting what exists before
+and after that bit and making a decision, usually:
+
+ * Adding code.
+ * Modifying code.
+ * Deleting code.
+ * Ignoring code.
+
+In our case, we want to find all comments, and foreach (pun intended)
+one of them check if they are preceded by a semicolon symbol.
+
+Now you need to do some reading, because all these symbols obey a list
+defined by the PHP compiler. It is the ["List of Parser
+Tokens"](https://php.net/manual/en/tokens.php).
+
+Internally, PHP CS Fixer transforms some of PHP native tokens into custom
+tokens through the use of [Transfomers](/src/Tokenizer/Transformer),
+they aim to help you reason about the changes you may want to do in the
+fixers.
+
+So we can get to move forward, humor me in believing that comments have
+one symbol name: `T_COMMENT`.
+
+### Step 3 - Implement your solution - continuation.
+
+We do not want all symbols to be analysed. Only `T_COMMENT`. So let us
+iterate the token(s) we are interested in.
+`src/Fixer/Comment/RemoveCommentsFixer.php`:
+```php
+final class RemoveCommentsFixer extends AbstractFixer
+{
+ ...
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function applyFix(\SplFileInfo $file, Tokens $tokens)
+ {
+ foreach ($tokens as $index => $token) {
+ if (!$token->isGivenKind(T_COMMENT)) {
+ continue;
+ }
+
+ // need to figure out what to do here!
+ }
+ }
+}
+```
+
+OK, now for each `T_COMMENT`, all we need to do is check if the previous
+token is a semicolon.
+`src/Fixer/Comment/RemoveCommentsFixer.php`:
+```php
+final class RemoveCommentsFixer extends AbstractFixer
+{
+ ...
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function applyFix(\SplFileInfo $file, Tokens $tokens)
+ {
+ foreach ($tokens as $index => $token) {
+ if (!$token->isGivenKind(T_COMMENT)) {
+ continue;
+ }
+
+ $prevTokenIndex = $tokens->getPrevMeaningfulToken($index);
+ $prevToken = $tokens[$prevTokenIndex];
+
+ if ($prevToken->equals(';')) {
+ $tokens->clearAt($index);
+ }
+ }
+ }
+}
+```
+
+So the fixer in the end looks like this:
+```php
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Fixer\Comment;
+
+use PhpCsFixer\AbstractFixer;
+use PhpCsFixer\Tokenizer\Tokens;
+
+/**
+ * @author Your name
+ */
+final class RemoveCommentsFixer extends AbstractFixer
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function getDefinition()
+ {
+ return new FixerDefinition(
+ 'Removes all comments of the code that are preceded by ";" (semicolon).', // Trailing dot is important. We thrive to use English grammar properly.
+ [
+ new CodeSample(
+ 'isTokenKindFound(T_COMMENT);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function applyFix(\SplFileInfo $file, Tokens $tokens) {
+ foreach($tokens as $index => $token){
+ if (!$token->isGivenKind(T_COMMENT)) {
+ continue;
+ }
+
+ $prevTokenIndex = $tokens->getPrevMeaningfulToken($index);
+ $prevToken = $tokens[$prevTokenIndex];
+
+ if ($prevToken->equals(';')) {
+ $tokens->clearAt($index);
+ }
+ }
+ }
+}
+```
+
+### Step 4 - Format, Commit, PR.
+
+Note that so far, we have not coded adhering to PSR-1/2. This is done on
+purpose. For every commit you make, you must use PHP CS Fixer to fix
+itself. Thus, on the command line call:
+
+`$ php php-cs-fixer fix`
+
+This will fix all the coding style mistakes.
+
+After the final CS fix, you are ready to commit. Do it.
+
+Now, go to GitHub and open a Pull Request.
+
+
+### Step 5 - Peer review: it is all about code and community building.
+
+Congratulations, you have made your first fixer. Be proud. Your work
+will be reviewed carefully by PHP CS Fixer community.
+
+The review usually flows like this:
+
+1. People will check your code for common mistakes and logical
+caveats. Usually, the person building a fixer is blind about some
+behavior mistakes of fixers. Expect to write few more tests to cater for
+the reviews.
+2. People will discuss the relevance of your fixer. If it is
+something that goes along with Symfony style standards, or PSR-1/PSR-2
+standards, they will ask you to add it to existing ruleset.
+3. People will also discuss whether your fixer is idempotent or not.
+If they understand that your fixer must always run before or after a
+certain fixer, they will ask you to override a method named
+`getPriority()`. Do not be afraid of asking the reviewer for help on how
+to do it.
+4. People may ask you to rebase your code to unify commits or to get
+rid of merge commits.
+5. Go to 1 until no actions are needed anymore.
+
+Your fixer will be incorporated in the next release.
+
+# Congratulations! You have done it.
+
+
+
+## Q&A
+
+#### Why is not my PR merged yet?
+
+PHP CS Fixer is used by many people, that expect it to be stable. So
+sometimes, few PR are delayed a bit so to avoid cluttering at @dev
+channel on composer.
+
+Other possibility is that reviewers are giving time to other members of
+PHP CS Fixer community to partake on the review debates of your fixer.
+
+In any case, we care a lot about what you do and we want to see it being
+part of the application as soon as possible.
+
+#### Why am I asked to use `getPrevMeaningfulToken()` instead of `getPrevNonWhitespace()`?
+
+The main difference is that `getPrevNonWhitespace()` ignores only
+whitespaces (`T_WHITESPACE`), while `getPrevMeaningfulToken()` ignores
+whitespaces and comments. And usually that is what you want. For
+example:
+
+```php
+$a->/*comment*/func();
+```
+
+If you are inspecting `func()`, and you want to check whether this is
+part of an object, if you use `getPrevNonWhitespace()` you are going to
+get `/*comment*/`, which might belie your test. On the other hand, if
+you use `getPrevMeaningfulToken()`, no matter if you have got a comment
+or a whitespace, the returned token will always be `->`.
diff --git a/lib/composer/friendsofphp/php-cs-fixer/doc/checkstyle.xsd b/lib/composer/friendsofphp/php-cs-fixer/doc/checkstyle.xsd
new file mode 100644
index 0000000000000..02249fa5de7d2
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/doc/checkstyle.xsd
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lib/composer/friendsofphp/php-cs-fixer/doc/junit-10.xsd b/lib/composer/friendsofphp/php-cs-fixer/doc/junit-10.xsd
new file mode 100644
index 0000000000000..1f41ea36a62ee
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/doc/junit-10.xsd
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/composer/friendsofphp/php-cs-fixer/doc/schema.json b/lib/composer/friendsofphp/php-cs-fixer/doc/schema.json
new file mode 100644
index 0000000000000..15db1e455f2cd
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/doc/schema.json
@@ -0,0 +1,47 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "type": "object",
+ "properties": {
+ "files": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "appliedFixers": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "name"
+ ]
+ }
+ },
+ "time": {
+ "type": "object",
+ "properties": {
+ "total": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "total"
+ ]
+ },
+ "memory": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "files",
+ "time",
+ "memory"
+ ]
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/doc/xml.xsd b/lib/composer/friendsofphp/php-cs-fixer/doc/xml.xsd
new file mode 100644
index 0000000000000..c7159a36f051a
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/doc/xml.xsd
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lib/composer/friendsofphp/php-cs-fixer/php-cs-fixer b/lib/composer/friendsofphp/php-cs-fixer/php-cs-fixer
new file mode 100755
index 0000000000000..0a61d13333cf8
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/php-cs-fixer
@@ -0,0 +1,99 @@
+#!/usr/bin/env php
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+if (getenv('PHP_CS_FIXER_FUTURE_MODE')) {
+ error_reporting(-1);
+}
+
+if (defined('HHVM_VERSION_ID')) {
+ fwrite(STDERR, "HHVM is not supported.\n");
+
+ if (getenv('PHP_CS_FIXER_IGNORE_ENV')) {
+ fwrite(STDERR, "Ignoring environment requirements because `PHP_CS_FIXER_IGNORE_ENV` is set. Execution may be unstable.\n");
+ } else {
+ exit(1);
+ }
+} elseif (!defined('PHP_VERSION_ID') || \PHP_VERSION_ID < 50600 || \PHP_VERSION_ID >= 70500) {
+ fwrite(STDERR, "PHP needs to be a minimum version of PHP 5.6.0 and maximum version of PHP 7.4.*.\n");
+
+ if (getenv('PHP_CS_FIXER_IGNORE_ENV')) {
+ fwrite(STDERR, "Ignoring environment requirements because `PHP_CS_FIXER_IGNORE_ENV` is set. Execution may be unstable.\n");
+ } else {
+ exit(1);
+ }
+}
+
+foreach (['json', 'tokenizer'] as $extension) {
+ if (!extension_loaded($extension)) {
+ fwrite(STDERR, sprintf("PHP extension ext-%s is missing from your system. Install or enable it.\n", $extension));
+
+ if (getenv('PHP_CS_FIXER_IGNORE_ENV')) {
+ fwrite(STDERR, "Ignoring environment requirements because `PHP_CS_FIXER_IGNORE_ENV` is set. Execution may be unstable.\n");
+ } else {
+ exit(1);
+ }
+ }
+}
+unset($extension);
+
+set_error_handler(static function ($severity, $message, $file, $line) {
+ if ($severity & error_reporting()) {
+ throw new ErrorException($message, 0, $severity, $file, $line);
+ }
+});
+
+$require = true;
+if (class_exists('Phar')) {
+ // Maybe this file is used as phar-stub? Let's try!
+ try {
+ Phar::mapPhar('php-cs-fixer.phar');
+ require_once 'phar://php-cs-fixer.phar/vendor/autoload.php';
+ $require = false;
+ } catch (PharException $e) {
+ }
+}
+
+if ($require) {
+ // OK, it's not, let give Composer autoloader a try!
+ $possibleFiles = [__DIR__.'/../../autoload.php', __DIR__.'/../autoload.php', __DIR__.'/vendor/autoload.php'];
+ $file = null;
+ foreach ($possibleFiles as $possibleFile) {
+ if (file_exists($possibleFile)) {
+ $file = $possibleFile;
+
+ break;
+ }
+ }
+
+ if (null === $file) {
+ throw new RuntimeException('Unable to locate autoload.php file.');
+ }
+
+ require_once $file;
+
+ unset($possibleFiles, $possibleFile, $file);
+}
+unset($require);
+
+use Composer\XdebugHandler\XdebugHandler;
+use PhpCsFixer\Console\Application;
+
+// Restart if xdebug is loaded, unless the environment variable PHP_CS_FIXER_ALLOW_XDEBUG is set.
+$xdebug = new XdebugHandler('PHP_CS_FIXER', '--ansi');
+$xdebug->check();
+unset($xdebug);
+
+$application = new Application();
+$application->run();
+
+__HALT_COMPILER();
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/AbstractAlignFixerHelper.php b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractAlignFixerHelper.php
new file mode 100644
index 0000000000000..a24881ee3cfc9
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractAlignFixerHelper.php
@@ -0,0 +1,122 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer;
+
+use PhpCsFixer\Tokenizer\Tokens;
+
+/**
+ * @author Carlos Cirello
+ *
+ * @internal
+ *
+ * @deprecated
+ */
+abstract class AbstractAlignFixerHelper
+{
+ /**
+ * @const Placeholder used as anchor for right alignment.
+ */
+ const ALIGNABLE_PLACEHOLDER = "\x2 ALIGNABLE%d \x3";
+
+ /**
+ * Keep track of the deepest level ever achieved while
+ * parsing the code. Used later to replace alignment
+ * placeholders with spaces.
+ *
+ * @var int
+ */
+ protected $deepestLevel = 0;
+
+ public function fix(Tokens $tokens)
+ {
+ // This fixer works partially on Tokens and partially on string representation of code.
+ // During the process of fixing internal state of single Token may be affected by injecting ALIGNABLE_PLACEHOLDER to its content.
+ // The placeholder will be resolved by `replacePlaceholder` method by removing placeholder or changing it into spaces.
+ // That way of fixing the code causes disturbances in marking Token as changed - if code is perfectly valid then placeholder
+ // still be injected and removed, which will cause the `changed` flag to be set.
+ // To handle that unwanted behavior we work on clone of Tokens collection and then override original collection with fixed collection.
+ $tokensClone = clone $tokens;
+
+ $this->injectAlignmentPlaceholders($tokensClone, 0, \count($tokens));
+ $content = $this->replacePlaceholder($tokensClone);
+
+ $tokens->setCode($content);
+ }
+
+ /**
+ * Inject into the text placeholders of candidates of vertical alignment.
+ *
+ * @param int $startAt
+ * @param int $endAt
+ */
+ abstract protected function injectAlignmentPlaceholders(Tokens $tokens, $startAt, $endAt);
+
+ /**
+ * Look for group of placeholders, and provide vertical alignment.
+ *
+ * @return string
+ */
+ protected function replacePlaceholder(Tokens $tokens)
+ {
+ $tmpCode = $tokens->generateCode();
+
+ for ($j = 0; $j <= $this->deepestLevel; ++$j) {
+ $placeholder = sprintf(self::ALIGNABLE_PLACEHOLDER, $j);
+
+ if (false === strpos($tmpCode, $placeholder)) {
+ continue;
+ }
+
+ $lines = explode("\n", $tmpCode);
+ $linesWithPlaceholder = [];
+ $blockSize = 0;
+
+ $linesWithPlaceholder[$blockSize] = [];
+
+ foreach ($lines as $index => $line) {
+ if (substr_count($line, $placeholder) > 0) {
+ $linesWithPlaceholder[$blockSize][] = $index;
+ } else {
+ ++$blockSize;
+ $linesWithPlaceholder[$blockSize] = [];
+ }
+ }
+
+ foreach ($linesWithPlaceholder as $group) {
+ if (\count($group) < 1) {
+ continue;
+ }
+
+ $rightmostSymbol = 0;
+ foreach ($group as $index) {
+ $rightmostSymbol = max($rightmostSymbol, strpos(utf8_decode($lines[$index]), $placeholder));
+ }
+
+ foreach ($group as $index) {
+ $line = $lines[$index];
+ $currentSymbol = strpos(utf8_decode($line), $placeholder);
+ $delta = abs($rightmostSymbol - $currentSymbol);
+
+ if ($delta > 0) {
+ $line = str_replace($placeholder, str_repeat(' ', $delta).$placeholder, $line);
+ $lines[$index] = $line;
+ }
+ }
+ }
+
+ $tmpCode = str_replace($placeholder, '', implode("\n", $lines));
+ }
+
+ return $tmpCode;
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/AbstractDoctrineAnnotationFixer.php b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractDoctrineAnnotationFixer.php
new file mode 100644
index 0000000000000..93b11687e75bd
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractDoctrineAnnotationFixer.php
@@ -0,0 +1,221 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer;
+
+use PhpCsFixer\Doctrine\Annotation\Tokens as DoctrineAnnotationTokens;
+use PhpCsFixer\Fixer\ConfigurationDefinitionFixerInterface;
+use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver;
+use PhpCsFixer\FixerConfiguration\FixerOptionBuilder;
+use PhpCsFixer\Tokenizer\Token as PhpToken;
+use PhpCsFixer\Tokenizer\Tokens as PhpTokens;
+use PhpCsFixer\Tokenizer\TokensAnalyzer;
+
+/**
+ * @internal
+ */
+abstract class AbstractDoctrineAnnotationFixer extends AbstractFixer implements ConfigurationDefinitionFixerInterface
+{
+ /**
+ * @var array
+ */
+ private $classyElements;
+
+ /**
+ * {@inheritdoc}
+ */
+ public function isCandidate(PhpTokens $tokens)
+ {
+ return $tokens->isTokenKindFound(T_DOC_COMMENT);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function applyFix(\SplFileInfo $file, PhpTokens $phpTokens)
+ {
+ // fetch indexes one time, this is safe as we never add or remove a token during fixing
+ $analyzer = new TokensAnalyzer($phpTokens);
+ $this->classyElements = $analyzer->getClassyElements();
+
+ /** @var PhpToken $docCommentToken */
+ foreach ($phpTokens->findGivenKind(T_DOC_COMMENT) as $index => $docCommentToken) {
+ if (!$this->nextElementAcceptsDoctrineAnnotations($phpTokens, $index)) {
+ continue;
+ }
+
+ $tokens = DoctrineAnnotationTokens::createFromDocComment(
+ $docCommentToken,
+ $this->configuration['ignored_tags']
+ );
+ $this->fixAnnotations($tokens);
+ $phpTokens[$index] = new PhpToken([T_DOC_COMMENT, $tokens->getCode()]);
+ }
+ }
+
+ /**
+ * Fixes Doctrine annotations from the given PHPDoc style comment.
+ */
+ abstract protected function fixAnnotations(DoctrineAnnotationTokens $doctrineAnnotationTokens);
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function createConfigurationDefinition()
+ {
+ return new FixerConfigurationResolver([
+ (new FixerOptionBuilder('ignored_tags', 'List of tags that must not be treated as Doctrine Annotations.'))
+ ->setAllowedTypes(['array'])
+ ->setAllowedValues([static function ($values) {
+ foreach ($values as $value) {
+ if (!\is_string($value)) {
+ return false;
+ }
+ }
+
+ return true;
+ }])
+ ->setDefault([
+ // PHPDocumentor 1
+ 'abstract',
+ 'access',
+ 'code',
+ 'deprec',
+ 'encode',
+ 'exception',
+ 'final',
+ 'ingroup',
+ 'inheritdoc',
+ 'inheritDoc',
+ 'magic',
+ 'name',
+ 'toc',
+ 'tutorial',
+ 'private',
+ 'static',
+ 'staticvar',
+ 'staticVar',
+ 'throw',
+
+ // PHPDocumentor 2
+ 'api',
+ 'author',
+ 'category',
+ 'copyright',
+ 'deprecated',
+ 'example',
+ 'filesource',
+ 'global',
+ 'ignore',
+ 'internal',
+ 'license',
+ 'link',
+ 'method',
+ 'package',
+ 'param',
+ 'property',
+ 'property-read',
+ 'property-write',
+ 'return',
+ 'see',
+ 'since',
+ 'source',
+ 'subpackage',
+ 'throws',
+ 'todo',
+ 'TODO',
+ 'usedBy',
+ 'uses',
+ 'var',
+ 'version',
+
+ // PHPUnit
+ 'after',
+ 'afterClass',
+ 'backupGlobals',
+ 'backupStaticAttributes',
+ 'before',
+ 'beforeClass',
+ 'codeCoverageIgnore',
+ 'codeCoverageIgnoreStart',
+ 'codeCoverageIgnoreEnd',
+ 'covers',
+ 'coversDefaultClass',
+ 'coversNothing',
+ 'dataProvider',
+ 'depends',
+ 'expectedException',
+ 'expectedExceptionCode',
+ 'expectedExceptionMessage',
+ 'expectedExceptionMessageRegExp',
+ 'group',
+ 'large',
+ 'medium',
+ 'preserveGlobalState',
+ 'requires',
+ 'runTestsInSeparateProcesses',
+ 'runInSeparateProcess',
+ 'small',
+ 'test',
+ 'testdox',
+ 'ticket',
+ 'uses',
+
+ // PHPCheckStyle
+ 'SuppressWarnings',
+
+ // PHPStorm
+ 'noinspection',
+
+ // PEAR
+ 'package_version',
+
+ // PlantUML
+ 'enduml',
+ 'startuml',
+
+ // other
+ 'fix',
+ 'FIXME',
+ 'fixme',
+ 'override',
+ ])
+ ->getOption(),
+ ]);
+ }
+
+ /**
+ * @param int $index
+ *
+ * @return bool
+ */
+ private function nextElementAcceptsDoctrineAnnotations(PhpTokens $tokens, $index)
+ {
+ do {
+ $index = $tokens->getNextMeaningfulToken($index);
+
+ if (null === $index) {
+ return false;
+ }
+ } while ($tokens[$index]->isGivenKind([T_ABSTRACT, T_FINAL]));
+
+ if ($tokens[$index]->isClassy()) {
+ return true;
+ }
+
+ while ($tokens[$index]->isGivenKind([T_PUBLIC, T_PROTECTED, T_PRIVATE, T_FINAL, T_ABSTRACT])) {
+ $index = $tokens->getNextMeaningfulToken($index);
+ }
+
+ return isset($this->classyElements[$index]);
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/AbstractFixer.php b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractFixer.php
new file mode 100644
index 0000000000000..b8ae6ddb41137
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractFixer.php
@@ -0,0 +1,227 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer;
+
+use PhpCsFixer\ConfigurationException\InvalidFixerConfigurationException;
+use PhpCsFixer\ConfigurationException\InvalidForEnvFixerConfigurationException;
+use PhpCsFixer\ConfigurationException\RequiredFixerConfigurationException;
+use PhpCsFixer\Console\Application;
+use PhpCsFixer\Fixer\ConfigurableFixerInterface;
+use PhpCsFixer\Fixer\ConfigurationDefinitionFixerInterface;
+use PhpCsFixer\Fixer\DefinedFixerInterface;
+use PhpCsFixer\Fixer\FixerInterface;
+use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface;
+use PhpCsFixer\FixerConfiguration\DeprecatedFixerOption;
+use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface;
+use PhpCsFixer\FixerConfiguration\InvalidOptionsForEnvException;
+use PhpCsFixer\Tokenizer\Tokens;
+use Symfony\Component\OptionsResolver\Exception\ExceptionInterface;
+use Symfony\Component\OptionsResolver\Exception\MissingOptionsException;
+
+/**
+ * @author Dariusz Rumiński
+ *
+ * @internal
+ */
+abstract class AbstractFixer implements FixerInterface, DefinedFixerInterface
+{
+ /**
+ * @var null|array
+ */
+ protected $configuration;
+
+ /**
+ * @var WhitespacesFixerConfig
+ */
+ protected $whitespacesConfig;
+
+ /**
+ * @var null|FixerConfigurationResolverInterface
+ */
+ private $configurationDefinition;
+
+ public function __construct()
+ {
+ if ($this instanceof ConfigurableFixerInterface) {
+ try {
+ $this->configure([]);
+ } catch (RequiredFixerConfigurationException $e) {
+ // ignore
+ }
+ }
+
+ if ($this instanceof WhitespacesAwareFixerInterface) {
+ $this->whitespacesConfig = $this->getDefaultWhitespacesFixerConfig();
+ }
+ }
+
+ final public function fix(\SplFileInfo $file, Tokens $tokens)
+ {
+ if ($this instanceof ConfigurableFixerInterface && null === $this->configuration) {
+ throw new RequiredFixerConfigurationException($this->getName(), 'Configuration is required.');
+ }
+
+ if (0 < $tokens->count() && $this->isCandidate($tokens) && $this->supports($file)) {
+ $this->applyFix($file, $tokens);
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function isRisky()
+ {
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getName()
+ {
+ $nameParts = explode('\\', static::class);
+ $name = substr(end($nameParts), 0, -\strlen('Fixer'));
+
+ return Utils::camelCaseToUnderscore($name);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getPriority()
+ {
+ return 0;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function supports(\SplFileInfo $file)
+ {
+ return true;
+ }
+
+ public function configure(array $configuration = null)
+ {
+ if (!$this instanceof ConfigurationDefinitionFixerInterface) {
+ throw new \LogicException('Cannot configure using Abstract parent, child not implementing "PhpCsFixer\Fixer\ConfigurationDefinitionFixerInterface".');
+ }
+
+ if (null === $configuration) {
+ $message = 'Passing NULL to set default configuration is deprecated and will not be supported in 3.0, use an empty array instead.';
+
+ if (getenv('PHP_CS_FIXER_FUTURE_MODE')) {
+ throw new \InvalidArgumentException("{$message} This check was performed as `PHP_CS_FIXER_FUTURE_MODE` env var is set.");
+ }
+
+ @trigger_error($message, E_USER_DEPRECATED);
+
+ $configuration = [];
+ }
+
+ foreach ($this->getConfigurationDefinition()->getOptions() as $option) {
+ if (!$option instanceof DeprecatedFixerOption) {
+ continue;
+ }
+
+ $name = $option->getName();
+ if (\array_key_exists($name, $configuration)) {
+ $message = sprintf(
+ 'Option "%s" for rule "%s" is deprecated and will be removed in version %d.0. %s',
+ $name,
+ $this->getName(),
+ Application::getMajorVersion() + 1,
+ str_replace('`', '"', $option->getDeprecationMessage())
+ );
+
+ if (getenv('PHP_CS_FIXER_FUTURE_MODE')) {
+ throw new \InvalidArgumentException("{$message} This check was performed as `PHP_CS_FIXER_FUTURE_MODE` env var is set.");
+ }
+
+ @trigger_error($message, E_USER_DEPRECATED);
+ }
+ }
+
+ try {
+ $this->configuration = $this->getConfigurationDefinition()->resolve($configuration);
+ } catch (MissingOptionsException $exception) {
+ throw new RequiredFixerConfigurationException(
+ $this->getName(),
+ sprintf('Missing required configuration: %s', $exception->getMessage()),
+ $exception
+ );
+ } catch (InvalidOptionsForEnvException $exception) {
+ throw new InvalidForEnvFixerConfigurationException(
+ $this->getName(),
+ sprintf('Invalid configuration for env: %s', $exception->getMessage()),
+ $exception
+ );
+ } catch (ExceptionInterface $exception) {
+ throw new InvalidFixerConfigurationException(
+ $this->getName(),
+ sprintf('Invalid configuration: %s', $exception->getMessage()),
+ $exception
+ );
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getConfigurationDefinition()
+ {
+ if (!$this instanceof ConfigurationDefinitionFixerInterface) {
+ throw new \LogicException('Cannot get configuration definition using Abstract parent, child not implementing "PhpCsFixer\Fixer\ConfigurationDefinitionFixerInterface".');
+ }
+
+ if (null === $this->configurationDefinition) {
+ $this->configurationDefinition = $this->createConfigurationDefinition();
+ }
+
+ return $this->configurationDefinition;
+ }
+
+ public function setWhitespacesConfig(WhitespacesFixerConfig $config)
+ {
+ if (!$this instanceof WhitespacesAwareFixerInterface) {
+ throw new \LogicException('Cannot run method for class not implementing "PhpCsFixer\Fixer\WhitespacesAwareFixerInterface".');
+ }
+
+ $this->whitespacesConfig = $config;
+ }
+
+ abstract protected function applyFix(\SplFileInfo $file, Tokens $tokens);
+
+ /**
+ * @return FixerConfigurationResolverInterface
+ */
+ protected function createConfigurationDefinition()
+ {
+ if (!$this instanceof ConfigurationDefinitionFixerInterface) {
+ throw new \LogicException('Cannot create configuration definition using Abstract parent, child not implementing "PhpCsFixer\Fixer\ConfigurationDefinitionFixerInterface".');
+ }
+
+ throw new \LogicException('Not implemented.');
+ }
+
+ private function getDefaultWhitespacesFixerConfig()
+ {
+ static $defaultWhitespacesFixerConfig = null;
+
+ if (null === $defaultWhitespacesFixerConfig) {
+ $defaultWhitespacesFixerConfig = new WhitespacesFixerConfig(' ', "\n");
+ }
+
+ return $defaultWhitespacesFixerConfig;
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/AbstractFopenFlagFixer.php b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractFopenFlagFixer.php
new file mode 100644
index 0000000000000..363a76f07a355
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractFopenFlagFixer.php
@@ -0,0 +1,127 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer;
+
+use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer;
+use PhpCsFixer\Tokenizer\Tokens;
+
+/**
+ * @internal
+ *
+ * @author SpacePossum
+ */
+abstract class AbstractFopenFlagFixer extends AbstractFunctionReferenceFixer
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function isCandidate(Tokens $tokens)
+ {
+ return $tokens->isAllTokenKindsFound([T_STRING, T_CONSTANT_ENCAPSED_STRING]);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function applyFix(\SplFileInfo $file, Tokens $tokens)
+ {
+ $argumentsAnalyzer = new ArgumentsAnalyzer();
+
+ $index = 0;
+ $end = $tokens->count() - 1;
+ while (true) {
+ $candidate = $this->find('fopen', $tokens, $index, $end);
+
+ if (null === $candidate) {
+ break;
+ }
+
+ $index = $candidate[1]; // proceed to '(' of `fopen`
+
+ // fetch arguments
+ $arguments = $argumentsAnalyzer->getArguments(
+ $tokens,
+ $index,
+ $candidate[2]
+ );
+
+ $argumentsCount = \count($arguments); // argument count sanity check
+
+ if ($argumentsCount < 2 || $argumentsCount > 4) {
+ continue;
+ }
+
+ $argumentStartIndex = array_keys($arguments)[1]; // get second argument index
+
+ $this->fixFopenFlagToken(
+ $tokens,
+ $argumentStartIndex,
+ $arguments[$argumentStartIndex]
+ );
+ }
+ }
+
+ abstract protected function fixFopenFlagToken(Tokens $tokens, $argumentStartIndex, $argumentEndIndex);
+
+ /**
+ * @param string $mode
+ *
+ * @return bool
+ */
+ protected function isValidModeString($mode)
+ {
+ $modeLength = \strlen($mode);
+ if ($modeLength < 1 || $modeLength > 13) { // 13 === length 'r+w+a+x+c+etb'
+ return false;
+ }
+
+ $validFlags = [
+ 'a' => true,
+ 'b' => true,
+ 'c' => true,
+ 'e' => true,
+ 'r' => true,
+ 't' => true,
+ 'w' => true,
+ 'x' => true,
+ ];
+
+ if (!isset($validFlags[$mode[0]])) {
+ return false;
+ }
+
+ unset($validFlags[$mode[0]]);
+
+ for ($i = 1; $i < $modeLength; ++$i) {
+ if (isset($validFlags[$mode[$i]])) {
+ unset($validFlags[$mode[$i]]);
+
+ continue;
+ }
+
+ if ('+' !== $mode[$i]
+ || (
+ 'a' !== $mode[$i - 1] // 'a+','c+','r+','w+','x+'
+ && 'c' !== $mode[$i - 1]
+ && 'r' !== $mode[$i - 1]
+ && 'w' !== $mode[$i - 1]
+ && 'x' !== $mode[$i - 1]
+ )
+ ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/AbstractFunctionReferenceFixer.php b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractFunctionReferenceFixer.php
new file mode 100644
index 0000000000000..430e81033cb9d
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractFunctionReferenceFixer.php
@@ -0,0 +1,67 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer;
+
+use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer;
+use PhpCsFixer\Tokenizer\Tokens;
+
+/**
+ * @internal
+ *
+ * @author Vladimir Reznichenko
+ */
+abstract class AbstractFunctionReferenceFixer extends AbstractFixer
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function isRisky()
+ {
+ return true;
+ }
+
+ /**
+ * Looks up Tokens sequence for suitable candidates and delivers boundaries information,
+ * which can be supplied by other methods in this abstract class.
+ *
+ * @param string $functionNameToSearch
+ * @param int $start
+ * @param null|int $end
+ *
+ * @return null|int[] returns $functionName, $openParenthesis, $closeParenthesis packed into array
+ */
+ protected function find($functionNameToSearch, Tokens $tokens, $start = 0, $end = null)
+ {
+ // make interface consistent with findSequence
+ $end = null === $end ? $tokens->count() : $end;
+
+ // find raw sequence which we can analyse for context
+ $candidateSequence = [[T_STRING, $functionNameToSearch], '('];
+ $matches = $tokens->findSequence($candidateSequence, $start, $end, false);
+ if (null === $matches) {
+ // not found, simply return without further attempts
+ return null;
+ }
+
+ // translate results for humans
+ list($functionName, $openParenthesis) = array_keys($matches);
+
+ $functionsAnalyzer = new FunctionsAnalyzer();
+
+ if (!$functionsAnalyzer->isGlobalFunctionCall($tokens, $functionName)) {
+ return $this->find($functionNameToSearch, $tokens, $openParenthesis, $end);
+ }
+
+ return [$functionName, $openParenthesis, $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $openParenthesis)];
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/AbstractLinesBeforeNamespaceFixer.php b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractLinesBeforeNamespaceFixer.php
new file mode 100644
index 0000000000000..2e0faabe290e0
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractLinesBeforeNamespaceFixer.php
@@ -0,0 +1,110 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer;
+
+use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface;
+use PhpCsFixer\Tokenizer\Token;
+use PhpCsFixer\Tokenizer\Tokens;
+
+/**
+ * This abstract fixer is responsible for ensuring that a certain number of
+ * lines prefix a namespace declaration.
+ *
+ * @author Graham Campbell
+ *
+ * @internal
+ */
+abstract class AbstractLinesBeforeNamespaceFixer extends AbstractFixer implements WhitespacesAwareFixerInterface
+{
+ /**
+ * Make sure # of line breaks prefixing namespace is within given range.
+ *
+ * @param int $index
+ * @param int $expectedMin min. # of line breaks
+ * @param int $expectedMax max. # of line breaks
+ */
+ protected function fixLinesBeforeNamespace(Tokens $tokens, $index, $expectedMin, $expectedMax)
+ {
+ // Let's determine the total numbers of new lines before the namespace
+ // and the opening token
+ $openingTokenIndex = null;
+ $precedingNewlines = 0;
+ $newlineInOpening = false;
+ $openingToken = null;
+ for ($i = 1; $i <= 2; ++$i) {
+ if (isset($tokens[$index - $i])) {
+ $token = $tokens[$index - $i];
+ if ($token->isGivenKind(T_OPEN_TAG)) {
+ $openingToken = $token;
+ $openingTokenIndex = $index - $i;
+ $newlineInOpening = false !== strpos($token->getContent(), "\n");
+ if ($newlineInOpening) {
+ ++$precedingNewlines;
+ }
+
+ break;
+ }
+ if (false === $token->isGivenKind(T_WHITESPACE)) {
+ break;
+ }
+ $precedingNewlines += substr_count($token->getContent(), "\n");
+ }
+ }
+
+ if ($precedingNewlines >= $expectedMin && $precedingNewlines <= $expectedMax) {
+ return;
+ }
+
+ $previousIndex = $index - 1;
+ $previous = $tokens[$previousIndex];
+
+ if (0 === $expectedMax) {
+ // Remove all the previous new lines
+ if ($previous->isWhitespace()) {
+ $tokens->clearAt($previousIndex);
+ }
+ // Remove new lines in opening token
+ if ($newlineInOpening) {
+ $tokens[$openingTokenIndex] = new Token([T_OPEN_TAG, rtrim($openingToken->getContent()).' ']);
+ }
+
+ return;
+ }
+
+ $lineEnding = $this->whitespacesConfig->getLineEnding();
+ $newlinesForWhitespaceToken = $expectedMax;
+ if (null !== $openingToken) {
+ // Use the configured line ending for the PHP opening tag
+ $content = rtrim($openingToken->getContent());
+ $newContent = $content.$lineEnding;
+ $tokens[$openingTokenIndex] = new Token([T_OPEN_TAG, $newContent]);
+ --$newlinesForWhitespaceToken;
+ }
+ if (0 === $newlinesForWhitespaceToken) {
+ // We have all the needed new lines in the opening tag
+ if ($previous->isWhitespace()) {
+ // Let's remove the previous token containing extra new lines
+ $tokens->clearAt($previousIndex);
+ }
+
+ return;
+ }
+ if ($previous->isWhitespace()) {
+ // Fix the previous whitespace token
+ $tokens[$previousIndex] = new Token([T_WHITESPACE, str_repeat($lineEnding, $newlinesForWhitespaceToken).substr($previous->getContent(), strrpos($previous->getContent(), "\n") + 1)]);
+ } else {
+ // Add a new whitespace token
+ $tokens->insertAt($index, new Token([T_WHITESPACE, str_repeat($lineEnding, $newlinesForWhitespaceToken)]));
+ }
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/AbstractNoUselessElseFixer.php b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractNoUselessElseFixer.php
new file mode 100644
index 0000000000000..947362b5d67a3
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractNoUselessElseFixer.php
@@ -0,0 +1,207 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer;
+
+use PhpCsFixer\Tokenizer\Tokens;
+
+/**
+ * @author SpacePossum
+ */
+abstract class AbstractNoUselessElseFixer extends AbstractFixer
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function getPriority()
+ {
+ // should be run before NoWhitespaceInBlankLineFixer, NoExtraBlankLinesFixer, BracesFixer and after NoEmptyStatementFixer.
+ return 25;
+ }
+
+ /**
+ * @param int $index
+ *
+ * @return bool
+ */
+ protected function isSuperfluousElse(Tokens $tokens, $index)
+ {
+ $previousBlockStart = $index;
+ do {
+ // Check if all 'if', 'else if ' and 'elseif' blocks above this 'else' always end,
+ // if so this 'else' is overcomplete.
+ list($previousBlockStart, $previousBlockEnd) = $this->getPreviousBlock($tokens, $previousBlockStart);
+
+ // short 'if' detection
+ $previous = $previousBlockEnd;
+ if ($tokens[$previous]->equals('}')) {
+ $previous = $tokens->getPrevMeaningfulToken($previous);
+ }
+
+ if (
+ !$tokens[$previous]->equals(';') || // 'if' block doesn't end with semicolon, keep 'else'
+ $tokens[$tokens->getPrevMeaningfulToken($previous)]->equals('{') // empty 'if' block, keep 'else'
+ ) {
+ return false;
+ }
+
+ $candidateIndex = $tokens->getPrevTokenOfKind(
+ $previous,
+ [
+ ';',
+ [T_BREAK],
+ [T_CLOSE_TAG],
+ [T_CONTINUE],
+ [T_EXIT],
+ [T_GOTO],
+ [T_IF],
+ [T_RETURN],
+ [T_THROW],
+ ]
+ );
+
+ if (
+ null === $candidateIndex
+ || $tokens[$candidateIndex]->equalsAny([';', [T_CLOSE_TAG], [T_IF]])
+ || $this->isInConditional($tokens, $candidateIndex, $previousBlockStart)
+ || $this->isInConditionWithoutBraces($tokens, $candidateIndex, $previousBlockStart)
+ ) {
+ return false;
+ }
+
+ // implicit continue, i.e. delete candidate
+ } while (!$tokens[$previousBlockStart]->isGivenKind(T_IF));
+
+ return true;
+ }
+
+ /**
+ * Return the first and last token index of the previous block.
+ *
+ * [0] First is either T_IF, T_ELSE or T_ELSEIF
+ * [1] Last is either '}' or ';' / T_CLOSE_TAG for short notation blocks
+ *
+ * @param int $index T_IF, T_ELSE, T_ELSEIF
+ *
+ * @return int[]
+ */
+ private function getPreviousBlock(Tokens $tokens, $index)
+ {
+ $close = $previous = $tokens->getPrevMeaningfulToken($index);
+ // short 'if' detection
+ if ($tokens[$close]->equals('}')) {
+ $previous = $tokens->findBlockStart(Tokens::BLOCK_TYPE_CURLY_BRACE, $close);
+ }
+
+ $open = $tokens->getPrevTokenOfKind($previous, [[T_IF], [T_ELSE], [T_ELSEIF]]);
+ if ($tokens[$open]->isGivenKind(T_IF)) {
+ $elseCandidate = $tokens->getPrevMeaningfulToken($open);
+ if ($tokens[$elseCandidate]->isGivenKind(T_ELSE)) {
+ $open = $elseCandidate;
+ }
+ }
+
+ return [$open, $close];
+ }
+
+ /**
+ * @param int $index Index of the token to check
+ * @param int $lowerLimitIndex Lower limit index. Since the token to check will always be in a conditional we must stop checking at this index
+ *
+ * @return bool
+ */
+ private function isInConditional(Tokens $tokens, $index, $lowerLimitIndex)
+ {
+ $candidateIndex = $tokens->getPrevTokenOfKind($index, [')', ';', ':']);
+ if ($tokens[$candidateIndex]->equals(':')) {
+ return true;
+ }
+
+ if (!$tokens[$candidateIndex]->equals(')')) {
+ return false; // token is ';' or close tag
+ }
+
+ // token is always ')' here.
+ // If it is part of the condition the token is always in, return false.
+ // If it is not it is a nested condition so return true
+ $open = $tokens->findBlockStart(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $candidateIndex);
+
+ return $tokens->getPrevMeaningfulToken($open) > $lowerLimitIndex;
+ }
+
+ /**
+ * For internal use only, as it is not perfect.
+ *
+ * Returns if the token at given index is part of a if/elseif/else statement
+ * without {}. Assumes not passing the last `;`/close tag of the statement, not
+ * out of range index, etc.
+ *
+ * @param int $index Index of the token to check
+ * @param int $lowerLimitIndex
+ *
+ * @return bool
+ */
+ private function isInConditionWithoutBraces(Tokens $tokens, $index, $lowerLimitIndex)
+ {
+ do {
+ if ($tokens[$index]->isComment() || $tokens[$index]->isWhitespace()) {
+ $index = $tokens->getPrevMeaningfulToken($index);
+ }
+
+ $token = $tokens[$index];
+ if ($token->isGivenKind([T_IF, T_ELSEIF, T_ELSE])) {
+ return true;
+ }
+
+ if ($token->equals(';')) {
+ return false;
+ }
+ if ($token->equals('{')) {
+ $index = $tokens->getPrevMeaningfulToken($index);
+
+ // OK if belongs to: for, do, while, foreach
+ // Not OK if belongs to: if, else, elseif
+ if ($tokens[$index]->isGivenKind(T_DO)) {
+ --$index;
+
+ continue;
+ }
+
+ if (!$tokens[$index]->equals(')')) {
+ return false; // like `else {`
+ }
+
+ $index = $tokens->findBlockStart(
+ Tokens::BLOCK_TYPE_PARENTHESIS_BRACE,
+ $index
+ );
+
+ $index = $tokens->getPrevMeaningfulToken($index);
+ if ($tokens[$index]->isGivenKind([T_IF, T_ELSEIF])) {
+ return false;
+ }
+ } elseif ($token->equals(')')) {
+ $type = Tokens::detectBlockType($token);
+ $index = $tokens->findBlockStart(
+ $type['type'],
+ $index
+ );
+
+ $index = $tokens->getPrevMeaningfulToken($index);
+ } else {
+ --$index;
+ }
+ } while ($index > $lowerLimitIndex);
+
+ return false;
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/AbstractPhpdocTypesFixer.php b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractPhpdocTypesFixer.php
new file mode 100644
index 0000000000000..5042105c01ea9
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractPhpdocTypesFixer.php
@@ -0,0 +1,135 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer;
+
+use PhpCsFixer\DocBlock\Annotation;
+use PhpCsFixer\DocBlock\DocBlock;
+use PhpCsFixer\Tokenizer\Token;
+use PhpCsFixer\Tokenizer\Tokens;
+
+/**
+ * This abstract fixer provides a base for fixers to fix types in PHPDoc.
+ *
+ * @author Graham Campbell
+ *
+ * @internal
+ */
+abstract class AbstractPhpdocTypesFixer extends AbstractFixer
+{
+ /**
+ * The annotation tags search inside.
+ *
+ * @var string[]
+ */
+ protected $tags;
+
+ /**
+ * {@inheritdoc}
+ */
+ public function __construct()
+ {
+ parent::__construct();
+
+ $this->tags = Annotation::getTagsWithTypes();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function isCandidate(Tokens $tokens)
+ {
+ return $tokens->isTokenKindFound(T_DOC_COMMENT);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function applyFix(\SplFileInfo $file, Tokens $tokens)
+ {
+ foreach ($tokens as $index => $token) {
+ if (!$token->isGivenKind(T_DOC_COMMENT)) {
+ continue;
+ }
+
+ $doc = new DocBlock($token->getContent());
+ $annotations = $doc->getAnnotationsOfType($this->tags);
+
+ if (empty($annotations)) {
+ continue;
+ }
+
+ foreach ($annotations as $annotation) {
+ $this->fixTypes($annotation);
+ }
+
+ $tokens[$index] = new Token([T_DOC_COMMENT, $doc->getContent()]);
+ }
+ }
+
+ /**
+ * Actually normalize the given type.
+ *
+ * @param string $type
+ *
+ * @return string
+ */
+ abstract protected function normalize($type);
+
+ /**
+ * Fix the types at the given line.
+ *
+ * We must be super careful not to modify parts of words.
+ *
+ * This will be nicely handled behind the scenes for us by the annotation class.
+ */
+ private function fixTypes(Annotation $annotation)
+ {
+ $types = $annotation->getTypes();
+
+ $new = $this->normalizeTypes($types);
+
+ if ($types !== $new) {
+ $annotation->setTypes($new);
+ }
+ }
+
+ /**
+ * @param string[] $types
+ *
+ * @return string[]
+ */
+ private function normalizeTypes(array $types)
+ {
+ foreach ($types as $index => $type) {
+ $types[$index] = $this->normalizeType($type);
+ }
+
+ return $types;
+ }
+
+ /**
+ * Prepare the type and normalize it.
+ *
+ * @param string $type
+ *
+ * @return string
+ */
+ private function normalizeType($type)
+ {
+ if ('[]' === substr($type, -2)) {
+ return $this->normalize(substr($type, 0, -2)).'[]';
+ }
+
+ return $this->normalize($type);
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/AbstractProxyFixer.php b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractProxyFixer.php
new file mode 100644
index 0000000000000..b17336120bcb8
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractProxyFixer.php
@@ -0,0 +1,122 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer;
+
+use PhpCsFixer\Fixer\FixerInterface;
+use PhpCsFixer\Fixer\WhitespacesAwareFixerInterface;
+use PhpCsFixer\Tokenizer\Tokens;
+
+/**
+ * @author Dariusz Rumiński
+ *
+ * @internal
+ */
+abstract class AbstractProxyFixer extends AbstractFixer
+{
+ /**
+ * @var array
+ */
+ protected $proxyFixers;
+
+ public function __construct()
+ {
+ foreach (Utils::sortFixers($this->createProxyFixers()) as $proxyFixer) {
+ $this->proxyFixers[$proxyFixer->getName()] = $proxyFixer;
+ }
+
+ parent::__construct();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function isCandidate(Tokens $tokens)
+ {
+ foreach ($this->proxyFixers as $fixer) {
+ if ($fixer->isCandidate($tokens)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function isRisky()
+ {
+ foreach ($this->proxyFixers as $fixer) {
+ if ($fixer->isRisky()) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getPriority()
+ {
+ if (\count($this->proxyFixers) > 1) {
+ throw new \LogicException('You need to override this method to provide the priority of combined fixers.');
+ }
+
+ return reset($this->proxyFixers)->getPriority();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function supports(\SplFileInfo $file)
+ {
+ foreach ($this->proxyFixers as $fixer) {
+ if ($fixer->supports($file)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setWhitespacesConfig(WhitespacesFixerConfig $config)
+ {
+ parent::setWhitespacesConfig($config);
+
+ foreach ($this->proxyFixers as $fixer) {
+ if ($fixer instanceof WhitespacesAwareFixerInterface) {
+ $fixer->setWhitespacesConfig($config);
+ }
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function applyFix(\SplFileInfo $file, Tokens $tokens)
+ {
+ foreach ($this->proxyFixers as $fixer) {
+ $fixer->fix($file, $tokens);
+ }
+ }
+
+ /**
+ * @return FixerInterface[]
+ */
+ abstract protected function createProxyFixers();
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/AbstractPsrAutoloadingFixer.php b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractPsrAutoloadingFixer.php
new file mode 100644
index 0000000000000..65f90ea001e9d
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/AbstractPsrAutoloadingFixer.php
@@ -0,0 +1,87 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer;
+
+use PhpCsFixer\Tokenizer\Token;
+use PhpCsFixer\Tokenizer\Tokens;
+
+/**
+ * @author Jordi Boggiano
+ * @author Dariusz Rumiński
+ * @author Bram Gotink
+ * @author Graham Campbell
+ *
+ * @internal
+ */
+abstract class AbstractPsrAutoloadingFixer extends AbstractFixer
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function isCandidate(Tokens $tokens)
+ {
+ return $tokens->isAnyTokenKindsFound(Token::getClassyTokenKinds());
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function isRisky()
+ {
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getPriority()
+ {
+ return -10;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function supports(\SplFileInfo $file)
+ {
+ if ($file instanceof StdinFileInfo) {
+ return false;
+ }
+
+ $filenameParts = explode('.', $file->getBasename(), 2);
+
+ if (
+ // ignore file with extension other than php
+ (!isset($filenameParts[1]) || 'php' !== $filenameParts[1])
+ // ignore file with name that cannot be a class name
+ || 0 === Preg::match('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', $filenameParts[0])
+ ) {
+ return false;
+ }
+
+ try {
+ $tokens = Tokens::fromCode(sprintf('isKeyword() || $tokens[3]->isMagicConstant()) {
+ // name can not be a class name - detected by PHP 5.x
+ return false;
+ }
+ } catch (\ParseError $e) {
+ // name can not be a class name - detected by PHP 7.x
+ return false;
+ }
+
+ // ignore stubs/fixtures, since they are typically containing invalid files for various reasons
+ return !Preg::match('{[/\\\\](stub|fixture)s?[/\\\\]}i', $file->getRealPath());
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Cache/Cache.php b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/Cache.php
new file mode 100644
index 0000000000000..a2e7aa7e959fa
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/Cache.php
@@ -0,0 +1,138 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Cache;
+
+/**
+ * @author Andreas Möller
+ *
+ * @internal
+ */
+final class Cache implements CacheInterface
+{
+ /**
+ * @var SignatureInterface
+ */
+ private $signature;
+
+ /**
+ * @var array
+ */
+ private $hashes = [];
+
+ public function __construct(SignatureInterface $signature)
+ {
+ $this->signature = $signature;
+ }
+
+ public function getSignature()
+ {
+ return $this->signature;
+ }
+
+ public function has($file)
+ {
+ return \array_key_exists($file, $this->hashes);
+ }
+
+ public function get($file)
+ {
+ if (!$this->has($file)) {
+ return null;
+ }
+
+ return $this->hashes[$file];
+ }
+
+ public function set($file, $hash)
+ {
+ $this->hashes[$file] = $hash;
+ }
+
+ public function clear($file)
+ {
+ unset($this->hashes[$file]);
+ }
+
+ public function toJson()
+ {
+ $json = json_encode([
+ 'php' => $this->getSignature()->getPhpVersion(),
+ 'version' => $this->getSignature()->getFixerVersion(),
+ 'indent' => $this->getSignature()->getIndent(),
+ 'lineEnding' => $this->getSignature()->getLineEnding(),
+ 'rules' => $this->getSignature()->getRules(),
+ 'hashes' => $this->hashes,
+ ]);
+
+ if (JSON_ERROR_NONE !== json_last_error()) {
+ throw new \UnexpectedValueException(sprintf(
+ 'Can not encode cache signature to JSON, error: "%s". If you have non-UTF8 chars in your signature, like in license for `header_comment`, consider enabling `ext-mbstring` or install `symfony/polyfill-mbstring`.',
+ json_last_error_msg()
+ ));
+ }
+
+ return $json;
+ }
+
+ /**
+ * @param string $json
+ *
+ * @throws \InvalidArgumentException
+ *
+ * @return Cache
+ */
+ public static function fromJson($json)
+ {
+ $data = json_decode($json, true);
+
+ if (null === $data && JSON_ERROR_NONE !== json_last_error()) {
+ throw new \InvalidArgumentException(sprintf(
+ 'Value needs to be a valid JSON string, got "%s", error: "%s".',
+ $json,
+ json_last_error_msg()
+ ));
+ }
+
+ $requiredKeys = [
+ 'php',
+ 'version',
+ 'indent',
+ 'lineEnding',
+ 'rules',
+ 'hashes',
+ ];
+
+ $missingKeys = array_diff_key(array_flip($requiredKeys), $data);
+
+ if (\count($missingKeys)) {
+ throw new \InvalidArgumentException(sprintf(
+ 'JSON data is missing keys "%s"',
+ implode('", "', $missingKeys)
+ ));
+ }
+
+ $signature = new Signature(
+ $data['php'],
+ $data['version'],
+ $data['indent'],
+ $data['lineEnding'],
+ $data['rules']
+ );
+
+ $cache = new self($signature);
+
+ $cache->hashes = $data['hashes'];
+
+ return $cache;
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Cache/CacheInterface.php b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/CacheInterface.php
new file mode 100644
index 0000000000000..693b0ee42a14e
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/CacheInterface.php
@@ -0,0 +1,56 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Cache;
+
+/**
+ * @author Andreas Möller
+ *
+ * @internal
+ */
+interface CacheInterface
+{
+ /**
+ * @return SignatureInterface
+ */
+ public function getSignature();
+
+ /**
+ * @param string $file
+ *
+ * @return bool
+ */
+ public function has($file);
+
+ /**
+ * @param string $file
+ *
+ * @return null|int
+ */
+ public function get($file);
+
+ /**
+ * @param string $file
+ * @param int $hash
+ */
+ public function set($file, $hash);
+
+ /**
+ * @param string $file
+ */
+ public function clear($file);
+
+ /**
+ * @return string
+ */
+ public function toJson();
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Cache/CacheManagerInterface.php b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/CacheManagerInterface.php
new file mode 100644
index 0000000000000..daa8bbd138afb
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/CacheManagerInterface.php
@@ -0,0 +1,35 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Cache;
+
+/**
+ * @author Dariusz Rumiński
+ *
+ * @internal
+ */
+interface CacheManagerInterface
+{
+ /**
+ * @param string $file
+ * @param string $fileContent
+ *
+ * @return bool
+ */
+ public function needFixing($file, $fileContent);
+
+ /**
+ * @param string $file
+ * @param string $fileContent
+ */
+ public function setFile($file, $fileContent);
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Cache/Directory.php b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/Directory.php
new file mode 100644
index 0000000000000..8c4e7719fbe15
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/Directory.php
@@ -0,0 +1,53 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Cache;
+
+/**
+ * @author Dariusz Rumiński
+ *
+ * @internal
+ */
+final class Directory implements DirectoryInterface
+{
+ /**
+ * @var string
+ */
+ private $directoryName;
+
+ /**
+ * @param string $directoryName
+ */
+ public function __construct($directoryName)
+ {
+ $this->directoryName = $directoryName;
+ }
+
+ public function getRelativePathTo($file)
+ {
+ $file = $this->normalizePath($file);
+
+ if (
+ '' === $this->directoryName
+ || 0 !== stripos($file, $this->directoryName.\DIRECTORY_SEPARATOR)
+ ) {
+ return $file;
+ }
+
+ return substr($file, \strlen($this->directoryName) + 1);
+ }
+
+ private function normalizePath($path)
+ {
+ return str_replace(['\\', '/'], \DIRECTORY_SEPARATOR, $path);
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Cache/DirectoryInterface.php b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/DirectoryInterface.php
new file mode 100644
index 0000000000000..a22582e57f2bf
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/DirectoryInterface.php
@@ -0,0 +1,26 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Cache;
+
+/**
+ * @author Dariusz Rumiński
+ */
+interface DirectoryInterface
+{
+ /**
+ * @param string $file
+ *
+ * @return string
+ */
+ public function getRelativePathTo($file);
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Cache/FileCacheManager.php b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/FileCacheManager.php
new file mode 100644
index 0000000000000..6d76a888c386e
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/FileCacheManager.php
@@ -0,0 +1,122 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Cache;
+
+/**
+ * Class supports caching information about state of fixing files.
+ *
+ * Cache is supported only for phar version and version installed via composer.
+ *
+ * File will be processed by PHP CS Fixer only if any of the following conditions is fulfilled:
+ * - cache is corrupt
+ * - fixer version changed
+ * - rules changed
+ * - file is new
+ * - file changed
+ *
+ * @author Dariusz Rumiński
+ *
+ * @internal
+ */
+final class FileCacheManager implements CacheManagerInterface
+{
+ /**
+ * @var FileHandlerInterface
+ */
+ private $handler;
+
+ /**
+ * @var SignatureInterface
+ */
+ private $signature;
+
+ /**
+ * @var CacheInterface
+ */
+ private $cache;
+
+ /**
+ * @var bool
+ */
+ private $isDryRun;
+
+ /**
+ * @var DirectoryInterface
+ */
+ private $cacheDirectory;
+
+ /**
+ * @param bool $isDryRun
+ */
+ public function __construct(
+ FileHandlerInterface $handler,
+ SignatureInterface $signature,
+ $isDryRun = false,
+ DirectoryInterface $cacheDirectory = null
+ ) {
+ $this->handler = $handler;
+ $this->signature = $signature;
+ $this->isDryRun = $isDryRun;
+ $this->cacheDirectory = $cacheDirectory ?: new Directory('');
+
+ $this->readCache();
+ }
+
+ public function __destruct()
+ {
+ $this->writeCache();
+ }
+
+ public function needFixing($file, $fileContent)
+ {
+ $file = $this->cacheDirectory->getRelativePathTo($file);
+
+ return !$this->cache->has($file) || $this->cache->get($file) !== $this->calcHash($fileContent);
+ }
+
+ public function setFile($file, $fileContent)
+ {
+ $file = $this->cacheDirectory->getRelativePathTo($file);
+
+ $hash = $this->calcHash($fileContent);
+
+ if ($this->isDryRun && $this->cache->has($file) && $this->cache->get($file) !== $hash) {
+ $this->cache->clear($file);
+
+ return;
+ }
+
+ $this->cache->set($file, $hash);
+ }
+
+ private function readCache()
+ {
+ $cache = $this->handler->read();
+
+ if (!$cache || !$this->signature->equals($cache->getSignature())) {
+ $cache = new Cache($this->signature);
+ }
+
+ $this->cache = $cache;
+ }
+
+ private function writeCache()
+ {
+ $this->handler->write($this->cache);
+ }
+
+ private function calcHash($content)
+ {
+ return crc32($content);
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Cache/FileHandler.php b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/FileHandler.php
new file mode 100644
index 0000000000000..e138a96e418c2
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/FileHandler.php
@@ -0,0 +1,99 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Cache;
+
+use Symfony\Component\Filesystem\Exception\IOException;
+
+/**
+ * @author Andreas Möller
+ *
+ * @internal
+ */
+final class FileHandler implements FileHandlerInterface
+{
+ /**
+ * @var string
+ */
+ private $file;
+
+ /**
+ * @param string $file
+ */
+ public function __construct($file)
+ {
+ $this->file = $file;
+ }
+
+ public function getFile()
+ {
+ return $this->file;
+ }
+
+ public function read()
+ {
+ if (!file_exists($this->file)) {
+ return null;
+ }
+
+ $content = file_get_contents($this->file);
+
+ try {
+ $cache = Cache::fromJson($content);
+ } catch (\InvalidArgumentException $exception) {
+ return null;
+ }
+
+ return $cache;
+ }
+
+ public function write(CacheInterface $cache)
+ {
+ $content = $cache->toJson();
+
+ if (file_exists($this->file)) {
+ if (is_dir($this->file)) {
+ throw new IOException(
+ sprintf('Cannot write cache file "%s" as the location exists as directory.', realpath($this->file)),
+ 0,
+ null,
+ $this->file
+ );
+ }
+
+ if (!is_writable($this->file)) {
+ throw new IOException(
+ sprintf('Cannot write to file "%s" as it is not writable.', realpath($this->file)),
+ 0,
+ null,
+ $this->file
+ );
+ }
+ } else {
+ @touch($this->file);
+ @chmod($this->file, 0666);
+ }
+
+ $bytesWritten = @file_put_contents($this->file, $content);
+
+ if (false === $bytesWritten) {
+ $error = error_get_last();
+
+ throw new IOException(
+ sprintf('Failed to write file "%s", "%s".', $this->file, isset($error['message']) ? $error['message'] : 'no reason available'),
+ 0,
+ null,
+ $this->file
+ );
+ }
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Cache/FileHandlerInterface.php b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/FileHandlerInterface.php
new file mode 100644
index 0000000000000..29ff5c9adda94
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/FileHandlerInterface.php
@@ -0,0 +1,33 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Cache;
+
+/**
+ * @author Andreas Möller
+ *
+ * @internal
+ */
+interface FileHandlerInterface
+{
+ /**
+ * @return string
+ */
+ public function getFile();
+
+ /**
+ * @return null|CacheInterface
+ */
+ public function read();
+
+ public function write(CacheInterface $cache);
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Cache/NullCacheManager.php b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/NullCacheManager.php
new file mode 100644
index 0000000000000..74f3b625bb168
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/NullCacheManager.php
@@ -0,0 +1,30 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Cache;
+
+/**
+ * @author Andreas Möller
+ *
+ * @internal
+ */
+final class NullCacheManager implements CacheManagerInterface
+{
+ public function needFixing($file, $fileContent)
+ {
+ return true;
+ }
+
+ public function setFile($file, $fileContent)
+ {
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Cache/Signature.php b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/Signature.php
new file mode 100644
index 0000000000000..1af7a3f85d58f
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/Signature.php
@@ -0,0 +1,110 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Cache;
+
+/**
+ * @author Andreas Möller
+ *
+ * @internal
+ */
+final class Signature implements SignatureInterface
+{
+ /**
+ * @var string
+ */
+ private $phpVersion;
+
+ /**
+ * @var string
+ */
+ private $fixerVersion;
+
+ /**
+ * @var string
+ */
+ private $indent;
+
+ /**
+ * @var string
+ */
+ private $lineEnding;
+
+ /**
+ * @var array
+ */
+ private $rules;
+
+ /**
+ * @param string $phpVersion
+ * @param string $fixerVersion
+ * @param string $indent
+ * @param string $lineEnding
+ */
+ public function __construct($phpVersion, $fixerVersion, $indent, $lineEnding, array $rules)
+ {
+ $this->phpVersion = $phpVersion;
+ $this->fixerVersion = $fixerVersion;
+ $this->indent = $indent;
+ $this->lineEnding = $lineEnding;
+ $this->rules = self::utf8Encode($rules);
+ }
+
+ public function getPhpVersion()
+ {
+ return $this->phpVersion;
+ }
+
+ public function getFixerVersion()
+ {
+ return $this->fixerVersion;
+ }
+
+ public function getIndent()
+ {
+ return $this->indent;
+ }
+
+ public function getLineEnding()
+ {
+ return $this->lineEnding;
+ }
+
+ public function getRules()
+ {
+ return $this->rules;
+ }
+
+ public function equals(SignatureInterface $signature)
+ {
+ return $this->phpVersion === $signature->getPhpVersion()
+ && $this->fixerVersion === $signature->getFixerVersion()
+ && $this->indent === $signature->getIndent()
+ && $this->lineEnding === $signature->getLineEnding()
+ && $this->rules === $signature->getRules();
+ }
+
+ private static function utf8Encode(array $data)
+ {
+ if (!\function_exists('mb_detect_encoding')) {
+ return $data;
+ }
+
+ array_walk_recursive($data, static function (&$item) {
+ if (\is_string($item) && !mb_detect_encoding($item, 'utf-8', true)) {
+ $item = utf8_encode($item);
+ }
+ });
+
+ return $data;
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Cache/SignatureInterface.php b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/SignatureInterface.php
new file mode 100644
index 0000000000000..5a7131eb7d1fd
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Cache/SignatureInterface.php
@@ -0,0 +1,53 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Cache;
+
+/**
+ * @author Andreas Möller
+ *
+ * @internal
+ */
+interface SignatureInterface
+{
+ /**
+ * @return string
+ */
+ public function getPhpVersion();
+
+ /**
+ * @return string
+ */
+ public function getFixerVersion();
+
+ /**
+ * @return string
+ */
+ public function getIndent();
+
+ /**
+ * @return string
+ */
+ public function getLineEnding();
+
+ /**
+ * @return array
+ */
+ public function getRules();
+
+ /**
+ * @param SignatureInterface $signature
+ *
+ * @return bool
+ */
+ public function equals(self $signature);
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Config.php b/lib/composer/friendsofphp/php-cs-fixer/src/Config.php
new file mode 100644
index 0000000000000..83d9a3ed25ae9
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Config.php
@@ -0,0 +1,280 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer;
+
+use PhpCsFixer\Fixer\FixerInterface;
+
+/**
+ * @author Fabien Potencier
+ * @author Katsuhiro Ogawa
+ * @author Dariusz Rumiński
+ */
+class Config implements ConfigInterface
+{
+ private $cacheFile = '.php_cs.cache';
+ private $customFixers = [];
+ private $finder;
+ private $format = 'txt';
+ private $hideProgress = false;
+ private $indent = ' ';
+ private $isRiskyAllowed = false;
+ private $lineEnding = "\n";
+ private $name;
+ private $phpExecutable;
+ private $rules = ['@PSR2' => true];
+ private $usingCache = true;
+
+ public function __construct($name = 'default')
+ {
+ $this->name = $name;
+ }
+
+ /**
+ * @return static
+ */
+ public static function create()
+ {
+ return new static();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getCacheFile()
+ {
+ return $this->cacheFile;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getCustomFixers()
+ {
+ return $this->customFixers;
+ }
+
+ /**
+ * @return Finder
+ */
+ public function getFinder()
+ {
+ if (null === $this->finder) {
+ $this->finder = new Finder();
+ }
+
+ return $this->finder;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getFormat()
+ {
+ return $this->format;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getHideProgress()
+ {
+ return $this->hideProgress;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getIndent()
+ {
+ return $this->indent;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getLineEnding()
+ {
+ return $this->lineEnding;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getPhpExecutable()
+ {
+ return $this->phpExecutable;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getRiskyAllowed()
+ {
+ return $this->isRiskyAllowed;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getRules()
+ {
+ return $this->rules;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getUsingCache()
+ {
+ return $this->usingCache;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function registerCustomFixers($fixers)
+ {
+ if (false === \is_array($fixers) && false === $fixers instanceof \Traversable) {
+ throw new \InvalidArgumentException(sprintf(
+ 'Argument must be an array or a Traversable, got "%s".',
+ \is_object($fixers) ? \get_class($fixers) : \gettype($fixers)
+ ));
+ }
+
+ foreach ($fixers as $fixer) {
+ $this->addCustomFixer($fixer);
+ }
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setCacheFile($cacheFile)
+ {
+ $this->cacheFile = $cacheFile;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setFinder($finder)
+ {
+ if (false === \is_array($finder) && false === $finder instanceof \Traversable) {
+ throw new \InvalidArgumentException(sprintf(
+ 'Argument must be an array or a Traversable, got "%s".',
+ \is_object($finder) ? \get_class($finder) : \gettype($finder)
+ ));
+ }
+
+ $this->finder = $finder;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setFormat($format)
+ {
+ $this->format = $format;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setHideProgress($hideProgress)
+ {
+ $this->hideProgress = $hideProgress;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setIndent($indent)
+ {
+ $this->indent = $indent;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setLineEnding($lineEnding)
+ {
+ $this->lineEnding = $lineEnding;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setPhpExecutable($phpExecutable)
+ {
+ $this->phpExecutable = $phpExecutable;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setRiskyAllowed($isRiskyAllowed)
+ {
+ $this->isRiskyAllowed = $isRiskyAllowed;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setRules(array $rules)
+ {
+ $this->rules = $rules;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setUsingCache($usingCache)
+ {
+ $this->usingCache = $usingCache;
+
+ return $this;
+ }
+
+ private function addCustomFixer(FixerInterface $fixer)
+ {
+ $this->customFixers[] = $fixer;
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/ConfigInterface.php b/lib/composer/friendsofphp/php-cs-fixer/src/ConfigInterface.php
new file mode 100644
index 0000000000000..52f8354b1d306
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/ConfigInterface.php
@@ -0,0 +1,194 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer;
+
+use PhpCsFixer\Fixer\FixerInterface;
+
+/**
+ * @author Fabien Potencier
+ * @author Dariusz Rumiński
+ */
+interface ConfigInterface
+{
+ /**
+ * Returns the path to the cache file.
+ *
+ * @return null|string Returns null if not using cache
+ */
+ public function getCacheFile();
+
+ /**
+ * Returns the custom fixers to use.
+ *
+ * @return FixerInterface[]
+ */
+ public function getCustomFixers();
+
+ /**
+ * Returns files to scan.
+ *
+ * @return iterable|\Traversable
+ */
+ public function getFinder();
+
+ /**
+ * @return string
+ */
+ public function getFormat();
+
+ /**
+ * Returns true if progress should be hidden.
+ *
+ * @return bool
+ */
+ public function getHideProgress();
+
+ /**
+ * @return string
+ */
+ public function getIndent();
+
+ /**
+ * @return string
+ */
+ public function getLineEnding();
+
+ /**
+ * Returns the name of the configuration.
+ *
+ * The name must be all lowercase and without any spaces.
+ *
+ * @return string The name of the configuration
+ */
+ public function getName();
+
+ /**
+ * Get configured PHP executable, if any.
+ *
+ * @return null|string
+ */
+ public function getPhpExecutable();
+
+ /**
+ * Check if it is allowed to run risky fixers.
+ *
+ * @return bool
+ */
+ public function getRiskyAllowed();
+
+ /**
+ * Get rules.
+ *
+ * Keys of array are names of fixers/sets, values are true/false.
+ *
+ * @return array
+ */
+ public function getRules();
+
+ /**
+ * Returns true if caching should be enabled.
+ *
+ * @return bool
+ */
+ public function getUsingCache();
+
+ /**
+ * Adds a suite of custom fixers.
+ *
+ * Name of custom fixer should follow `VendorName/rule_name` convention.
+ *
+ * @param FixerInterface[]|iterable|\Traversable $fixers
+ */
+ public function registerCustomFixers($fixers);
+
+ /**
+ * Sets the path to the cache file.
+ *
+ * @param string $cacheFile
+ *
+ * @return self
+ */
+ public function setCacheFile($cacheFile);
+
+ /**
+ * @param iterable|string[]|\Traversable $finder
+ *
+ * @return self
+ */
+ public function setFinder($finder);
+
+ /**
+ * @param string $format
+ *
+ * @return self
+ */
+ public function setFormat($format);
+
+ /**
+ * @param bool $hideProgress
+ *
+ * @return self
+ */
+ public function setHideProgress($hideProgress);
+
+ /**
+ * @param string $indent
+ *
+ * @return self
+ */
+ public function setIndent($indent);
+
+ /**
+ * @param string $lineEnding
+ *
+ * @return self
+ */
+ public function setLineEnding($lineEnding);
+
+ /**
+ * Set PHP executable.
+ *
+ * @param null|string $phpExecutable
+ *
+ * @return self
+ */
+ public function setPhpExecutable($phpExecutable);
+
+ /**
+ * Set if it is allowed to run risky fixers.
+ *
+ * @param bool $isRiskyAllowed
+ *
+ * @return self
+ */
+ public function setRiskyAllowed($isRiskyAllowed);
+
+ /**
+ * Set rules.
+ *
+ * Keys of array are names of fixers or sets.
+ * Value for set must be bool (turn it on or off).
+ * Value for fixer may be bool (turn it on or off) or array of configuration
+ * (turn it on and contains configuration for FixerInterface::configure method).
+ *
+ * @return self
+ */
+ public function setRules(array $rules);
+
+ /**
+ * @param bool $usingCache
+ *
+ * @return self
+ */
+ public function setUsingCache($usingCache);
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidConfigurationException.php b/lib/composer/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidConfigurationException.php
new file mode 100644
index 0000000000000..3c4e43978a932
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidConfigurationException.php
@@ -0,0 +1,40 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\ConfigurationException;
+
+use PhpCsFixer\Console\Command\FixCommandExitStatusCalculator;
+
+/**
+ * Exceptions of this type are thrown on misconfiguration of the Fixer.
+ *
+ * @author SpacePossum
+ *
+ * @internal
+ * @final Only internal extending this class is supported
+ */
+class InvalidConfigurationException extends \InvalidArgumentException
+{
+ /**
+ * @param string $message
+ * @param null|int $code
+ * @param null|\Throwable $previous
+ */
+ public function __construct($message, $code = null, $previous = null)
+ {
+ parent::__construct(
+ $message,
+ null === $code ? FixCommandExitStatusCalculator::EXIT_STATUS_FLAG_HAS_INVALID_CONFIG : $code,
+ $previous
+ );
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidFixerConfigurationException.php b/lib/composer/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidFixerConfigurationException.php
new file mode 100644
index 0000000000000..b5c3322e7d8cd
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidFixerConfigurationException.php
@@ -0,0 +1,54 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\ConfigurationException;
+
+use PhpCsFixer\Console\Command\FixCommandExitStatusCalculator;
+
+/**
+ * Exception thrown by Fixers on misconfiguration.
+ *
+ * @author SpacePossum
+ *
+ * @internal
+ * @final Only internal extending this class is supported
+ */
+class InvalidFixerConfigurationException extends InvalidConfigurationException
+{
+ /**
+ * @var string
+ */
+ private $fixerName;
+
+ /**
+ * @param string $fixerName
+ * @param string $message
+ * @param null|\Throwable $previous
+ */
+ public function __construct($fixerName, $message, $previous = null)
+ {
+ parent::__construct(
+ sprintf('[%s] %s', $fixerName, $message),
+ FixCommandExitStatusCalculator::EXIT_STATUS_FLAG_HAS_INVALID_FIXER_CONFIG,
+ $previous
+ );
+ $this->fixerName = $fixerName;
+ }
+
+ /**
+ * @return string
+ */
+ public function getFixerName()
+ {
+ return $this->fixerName;
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidForEnvFixerConfigurationException.php b/lib/composer/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidForEnvFixerConfigurationException.php
new file mode 100644
index 0000000000000..5cb0efbda1ec3
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidForEnvFixerConfigurationException.php
@@ -0,0 +1,22 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\ConfigurationException;
+
+/**
+ * @author Dariusz Rumiński
+ *
+ * @internal
+ */
+final class InvalidForEnvFixerConfigurationException extends InvalidFixerConfigurationException
+{
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/ConfigurationException/RequiredFixerConfigurationException.php b/lib/composer/friendsofphp/php-cs-fixer/src/ConfigurationException/RequiredFixerConfigurationException.php
new file mode 100644
index 0000000000000..d7645dbd9ec42
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/ConfigurationException/RequiredFixerConfigurationException.php
@@ -0,0 +1,22 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\ConfigurationException;
+
+/**
+ * @author Dariusz Rumiński
+ *
+ * @internal
+ */
+final class RequiredFixerConfigurationException extends InvalidFixerConfigurationException
+{
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Console/Application.php b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Application.php
new file mode 100644
index 0000000000000..dd7582ec65f6a
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Application.php
@@ -0,0 +1,122 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Console;
+
+use PhpCsFixer\Console\Command\DescribeCommand;
+use PhpCsFixer\Console\Command\FixCommand;
+use PhpCsFixer\Console\Command\HelpCommand;
+use PhpCsFixer\Console\Command\ReadmeCommand;
+use PhpCsFixer\Console\Command\SelfUpdateCommand;
+use PhpCsFixer\Console\SelfUpdate\GithubClient;
+use PhpCsFixer\Console\SelfUpdate\NewVersionChecker;
+use PhpCsFixer\PharChecker;
+use PhpCsFixer\ToolInfo;
+use Symfony\Component\Console\Application as BaseApplication;
+use Symfony\Component\Console\Command\ListCommand;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\ConsoleOutputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+/**
+ * @author Fabien Potencier
+ * @author Dariusz Rumiński
+ *
+ * @internal
+ */
+final class Application extends BaseApplication
+{
+ const VERSION = '2.16.3';
+ const VERSION_CODENAME = 'Yellow Bird';
+
+ /**
+ * @var ToolInfo
+ */
+ private $toolInfo;
+
+ public function __construct()
+ {
+ if (!getenv('PHP_CS_FIXER_FUTURE_MODE')) {
+ error_reporting(-1);
+ }
+
+ parent::__construct('PHP CS Fixer', self::VERSION);
+
+ $this->toolInfo = new ToolInfo();
+
+ $this->add(new DescribeCommand());
+ $this->add(new FixCommand($this->toolInfo));
+ $this->add(new ReadmeCommand());
+ $this->add(new SelfUpdateCommand(
+ new NewVersionChecker(new GithubClient()),
+ $this->toolInfo,
+ new PharChecker()
+ ));
+ }
+
+ /**
+ * @return int
+ */
+ public static function getMajorVersion()
+ {
+ return (int) explode('.', self::VERSION)[0];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function doRun(InputInterface $input, OutputInterface $output)
+ {
+ $stdErr = $output instanceof ConsoleOutputInterface
+ ? $output->getErrorOutput()
+ : ($input->hasParameterOption('--format', true) && 'txt' !== $input->getParameterOption('--format', null, true) ? null : $output)
+ ;
+ if (null !== $stdErr) {
+ $warningsDetector = new WarningsDetector($this->toolInfo);
+ $warningsDetector->detectOldVendor();
+ $warningsDetector->detectOldMajor();
+ foreach ($warningsDetector->getWarnings() as $warning) {
+ $stdErr->writeln(sprintf($stdErr->isDecorated() ? '%s>' : '%s', $warning));
+ }
+ }
+
+ return parent::doRun($input, $output);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getLongVersion()
+ {
+ $version = sprintf(
+ '%s %s by Fabien Potencier and Dariusz Ruminski',
+ parent::getLongVersion(),
+ self::VERSION_CODENAME
+ );
+
+ $commit = '@git-commit@';
+
+ if ('@'.'git-commit@' !== $commit) {
+ $version .= ' ('.substr($commit, 0, 7).')';
+ }
+
+ return $version;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function getDefaultCommands()
+ {
+ return [new HelpCommand(), new ListCommand()];
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/DescribeCommand.php b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/DescribeCommand.php
new file mode 100644
index 0000000000000..cedba65c09fe5
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/DescribeCommand.php
@@ -0,0 +1,415 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Console\Command;
+
+use PhpCsFixer\Differ\DiffConsoleFormatter;
+use PhpCsFixer\Differ\FullDiffer;
+use PhpCsFixer\Fixer\ConfigurableFixerInterface;
+use PhpCsFixer\Fixer\ConfigurationDefinitionFixerInterface;
+use PhpCsFixer\Fixer\DefinedFixerInterface;
+use PhpCsFixer\Fixer\DeprecatedFixerInterface;
+use PhpCsFixer\Fixer\FixerInterface;
+use PhpCsFixer\FixerConfiguration\AliasedFixerOption;
+use PhpCsFixer\FixerConfiguration\AllowedValueSubset;
+use PhpCsFixer\FixerConfiguration\DeprecatedFixerOption;
+use PhpCsFixer\FixerDefinition\CodeSampleInterface;
+use PhpCsFixer\FixerDefinition\FileSpecificCodeSampleInterface;
+use PhpCsFixer\FixerDefinition\FixerDefinition;
+use PhpCsFixer\FixerDefinition\VersionSpecificCodeSampleInterface;
+use PhpCsFixer\FixerFactory;
+use PhpCsFixer\Preg;
+use PhpCsFixer\RuleSet;
+use PhpCsFixer\StdinFileInfo;
+use PhpCsFixer\Tokenizer\Tokens;
+use PhpCsFixer\Utils;
+use PhpCsFixer\WordMatcher;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Formatter\OutputFormatter;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+/**
+ * @author Dariusz Rumiński
+ * @author SpacePossum
+ *
+ * @internal
+ */
+final class DescribeCommand extends Command
+{
+ protected static $defaultName = 'describe';
+
+ /**
+ * @var string[]
+ */
+ private $setNames;
+
+ /**
+ * @var FixerFactory
+ */
+ private $fixerFactory;
+
+ /**
+ * @var array
+ */
+ private $fixers;
+
+ public function __construct(FixerFactory $fixerFactory = null)
+ {
+ parent::__construct();
+
+ if (null === $fixerFactory) {
+ $fixerFactory = new FixerFactory();
+ $fixerFactory->registerBuiltInFixers();
+ }
+
+ $this->fixerFactory = $fixerFactory;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function configure()
+ {
+ $this
+ ->setDefinition(
+ [
+ new InputArgument('name', InputArgument::REQUIRED, 'Name of rule / set.'),
+ ]
+ )
+ ->setDescription('Describe rule / ruleset.')
+ ;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function execute(InputInterface $input, OutputInterface $output)
+ {
+ $name = $input->getArgument('name');
+
+ try {
+ if ('@' === $name[0]) {
+ $this->describeSet($output, $name);
+
+ return 0;
+ }
+
+ $this->describeRule($output, $name);
+ } catch (DescribeNameNotFoundException $e) {
+ $matcher = new WordMatcher(
+ 'set' === $e->getType() ? $this->getSetNames() : array_keys($this->getFixers())
+ );
+
+ $alternative = $matcher->match($name);
+
+ $this->describeList($output, $e->getType());
+
+ throw new \InvalidArgumentException(sprintf(
+ '%s "%s" not found.%s',
+ ucfirst($e->getType()),
+ $name,
+ null === $alternative ? '' : ' Did you mean "'.$alternative.'"?'
+ ));
+ }
+
+ return 0;
+ }
+
+ /**
+ * @param string $name
+ */
+ private function describeRule(OutputInterface $output, $name)
+ {
+ $fixers = $this->getFixers();
+
+ if (!isset($fixers[$name])) {
+ throw new DescribeNameNotFoundException($name, 'rule');
+ }
+
+ /** @var FixerInterface $fixer */
+ $fixer = $fixers[$name];
+ if ($fixer instanceof DefinedFixerInterface) {
+ $definition = $fixer->getDefinition();
+ } else {
+ $definition = new FixerDefinition('Description is not available.', []);
+ }
+
+ $description = $definition->getSummary();
+ if ($fixer instanceof DeprecatedFixerInterface) {
+ $successors = $fixer->getSuccessorsNames();
+ $message = [] === $successors
+ ? 'will be removed on next major version'
+ : sprintf('use %s instead', Utils::naturalLanguageJoinWithBackticks($successors));
+ $message = Preg::replace('/(`.+?`)/', '$1', $message);
+ $description .= sprintf(' DEPRECATED: %s.', $message);
+ }
+
+ $output->writeln(sprintf('Description of %s rule.', $name));
+ if ($output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) {
+ $output->writeln(sprintf('Fixer class: %s.', \get_class($fixer)));
+ }
+
+ $output->writeln($description);
+ if ($definition->getDescription()) {
+ $output->writeln($definition->getDescription());
+ }
+ $output->writeln('');
+
+ if ($fixer->isRisky()) {
+ $output->writeln('Fixer applying this rule is risky.');
+
+ if ($definition->getRiskyDescription()) {
+ $output->writeln($definition->getRiskyDescription());
+ }
+
+ $output->writeln('');
+ }
+
+ if ($fixer instanceof ConfigurationDefinitionFixerInterface) {
+ $configurationDefinition = $fixer->getConfigurationDefinition();
+ $options = $configurationDefinition->getOptions();
+
+ $output->writeln(sprintf('Fixer is configurable using following option%s:', 1 === \count($options) ? '' : 's'));
+
+ foreach ($options as $option) {
+ $line = '* '.OutputFormatter::escape($option->getName()).'';
+
+ $allowed = HelpCommand::getDisplayableAllowedValues($option);
+ if (null !== $allowed) {
+ foreach ($allowed as &$value) {
+ if ($value instanceof AllowedValueSubset) {
+ $value = 'a subset of '.HelpCommand::toString($value->getAllowedValues()).'';
+ } else {
+ $value = ''.HelpCommand::toString($value).'';
+ }
+ }
+ } else {
+ $allowed = array_map(
+ static function ($type) {
+ return ''.$type.'';
+ },
+ $option->getAllowedTypes()
+ );
+ }
+
+ if (null !== $allowed) {
+ $line .= ' ('.implode(', ', $allowed).')';
+ }
+
+ $description = Preg::replace('/(`.+?`)/', '$1', OutputFormatter::escape($option->getDescription()));
+ $line .= ': '.lcfirst(Preg::replace('/\.$/', '', $description)).'; ';
+ if ($option->hasDefault()) {
+ $line .= sprintf(
+ 'defaults to %s',
+ HelpCommand::toString($option->getDefault())
+ );
+ } else {
+ $line .= 'required';
+ }
+
+ if ($option instanceof DeprecatedFixerOption) {
+ $line .= '. DEPRECATED: '.Preg::replace(
+ '/(`.+?`)/',
+ '$1',
+ OutputFormatter::escape(lcfirst($option->getDeprecationMessage()))
+ );
+ }
+ if ($option instanceof AliasedFixerOption) {
+ $line .= '; DEPRECATED alias: '.$option->getAlias().'';
+ }
+
+ $output->writeln($line);
+ }
+
+ $output->writeln('');
+ } elseif ($fixer instanceof ConfigurableFixerInterface) {
+ $output->writeln('Fixer is configurable.');
+
+ if ($definition->getConfigurationDescription()) {
+ $output->writeln($definition->getConfigurationDescription());
+ }
+
+ if ($definition->getDefaultConfiguration()) {
+ $output->writeln(sprintf('Default configuration: %s.', HelpCommand::toString($definition->getDefaultConfiguration())));
+ }
+
+ $output->writeln('');
+ }
+
+ /** @var CodeSampleInterface[] $codeSamples */
+ $codeSamples = array_filter($definition->getCodeSamples(), static function (CodeSampleInterface $codeSample) {
+ if ($codeSample instanceof VersionSpecificCodeSampleInterface) {
+ return $codeSample->isSuitableFor(\PHP_VERSION_ID);
+ }
+
+ return true;
+ });
+
+ if (!\count($codeSamples)) {
+ $output->writeln([
+ 'Fixing examples can not be demonstrated on the current PHP version.',
+ '',
+ ]);
+ } else {
+ $output->writeln('Fixing examples:');
+
+ $differ = new FullDiffer();
+ $diffFormatter = new DiffConsoleFormatter(
+ $output->isDecorated(),
+ sprintf(
+ ' ---------- begin diff ----------%s%%s%s ----------- end diff -----------',
+ PHP_EOL,
+ PHP_EOL
+ )
+ );
+
+ foreach ($codeSamples as $index => $codeSample) {
+ $old = $codeSample->getCode();
+ $tokens = Tokens::fromCode($old);
+
+ $configuration = $codeSample->getConfiguration();
+
+ if ($fixer instanceof ConfigurableFixerInterface) {
+ $fixer->configure(null === $configuration ? [] : $configuration);
+ }
+
+ $file = $codeSample instanceof FileSpecificCodeSampleInterface
+ ? $codeSample->getSplFileInfo()
+ : new StdinFileInfo();
+
+ $fixer->fix($file, $tokens);
+
+ $diff = $differ->diff($old, $tokens->generateCode());
+
+ if ($fixer instanceof ConfigurableFixerInterface) {
+ if (null === $configuration) {
+ $output->writeln(sprintf(' * Example #%d. Fixing with the default configuration.', $index + 1));
+ } else {
+ $output->writeln(sprintf(' * Example #%d. Fixing with configuration: %s.', $index + 1, HelpCommand::toString($codeSample->getConfiguration())));
+ }
+ } else {
+ $output->writeln(sprintf(' * Example #%d.', $index + 1));
+ }
+
+ $output->writeln($diffFormatter->format($diff, ' %s'));
+ $output->writeln('');
+ }
+ }
+ }
+
+ /**
+ * @param string $name
+ */
+ private function describeSet(OutputInterface $output, $name)
+ {
+ if (!\in_array($name, $this->getSetNames(), true)) {
+ throw new DescribeNameNotFoundException($name, 'set');
+ }
+
+ $ruleSet = new RuleSet([$name => true]);
+ $rules = $ruleSet->getRules();
+ ksort($rules);
+
+ $fixers = $this->getFixers();
+
+ $output->writeln(sprintf('Description of %s set.', $name));
+ $output->writeln('');
+
+ $help = '';
+
+ foreach ($rules as $rule => $config) {
+ $fixer = $fixers[$rule];
+
+ if (!$fixer instanceof DefinedFixerInterface) {
+ throw new \RuntimeException(sprintf(
+ 'Cannot describe rule %s, the fixer does not implement %s',
+ $rule,
+ DefinedFixerInterface::class
+ ));
+ }
+
+ $definition = $fixer->getDefinition();
+ $help .= sprintf(
+ " * %s%s\n | %s\n%s\n",
+ $rule,
+ $fixer->isRisky() ? ' risky' : '',
+ $definition->getSummary(),
+ true !== $config ? sprintf(" | Configuration: %s\n", HelpCommand::toString($config)) : ''
+ );
+ }
+
+ $output->write($help);
+ }
+
+ /**
+ * @return array
+ */
+ private function getFixers()
+ {
+ if (null !== $this->fixers) {
+ return $this->fixers;
+ }
+
+ $fixers = [];
+ foreach ($this->fixerFactory->getFixers() as $fixer) {
+ $fixers[$fixer->getName()] = $fixer;
+ }
+
+ $this->fixers = $fixers;
+ ksort($this->fixers);
+
+ return $this->fixers;
+ }
+
+ /**
+ * @return string[]
+ */
+ private function getSetNames()
+ {
+ if (null !== $this->setNames) {
+ return $this->setNames;
+ }
+
+ $set = new RuleSet();
+ $this->setNames = $set->getSetDefinitionNames();
+ sort($this->setNames);
+
+ return $this->setNames;
+ }
+
+ /**
+ * @param string $type 'rule'|'set'
+ */
+ private function describeList(OutputInterface $output, $type)
+ {
+ if ($output->getVerbosity() >= OutputInterface::VERBOSITY_VERY_VERBOSE) {
+ $describe = [
+ 'set' => $this->getSetNames(),
+ 'rules' => $this->getFixers(),
+ ];
+ } elseif ($output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) {
+ $describe = 'set' === $type ? ['set' => $this->getSetNames()] : ['rules' => $this->getFixers()];
+ } else {
+ return;
+ }
+
+ /** @var string[] $items */
+ foreach ($describe as $list => $items) {
+ $output->writeln(sprintf('Defined %s:', $list));
+ foreach ($items as $name => $item) {
+ $output->writeln(sprintf('* %s', \is_string($name) ? $name : $item));
+ }
+ }
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/DescribeNameNotFoundException.php b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/DescribeNameNotFoundException.php
new file mode 100644
index 0000000000000..bfe5c0b79c384
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/DescribeNameNotFoundException.php
@@ -0,0 +1,59 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Console\Command;
+
+/**
+ * @author SpacePossum
+ *
+ * @internal
+ */
+final class DescribeNameNotFoundException extends \InvalidArgumentException
+{
+ /**
+ * @var string
+ */
+ private $name;
+
+ /**
+ * @var string 'rule'|'set'
+ */
+ private $type;
+
+ /**
+ * @param string $name
+ * @param string $type
+ */
+ public function __construct($name, $type)
+ {
+ $this->name = $name;
+ $this->type = $type;
+
+ parent::__construct();
+ }
+
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/FixCommand.php b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/FixCommand.php
new file mode 100644
index 0000000000000..5e56680cbd359
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/FixCommand.php
@@ -0,0 +1,270 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Console\Command;
+
+use PhpCsFixer\Config;
+use PhpCsFixer\ConfigInterface;
+use PhpCsFixer\Console\ConfigurationResolver;
+use PhpCsFixer\Console\Output\ErrorOutput;
+use PhpCsFixer\Console\Output\NullOutput;
+use PhpCsFixer\Console\Output\ProcessOutput;
+use PhpCsFixer\Error\ErrorsManager;
+use PhpCsFixer\Report\ReportSummary;
+use PhpCsFixer\Runner\Runner;
+use PhpCsFixer\ToolInfoInterface;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\ConsoleOutputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Terminal;
+use Symfony\Component\EventDispatcher\EventDispatcher;
+use Symfony\Component\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\Stopwatch\Stopwatch;
+
+/**
+ * @author Fabien Potencier
+ * @author Dariusz Rumiński
+ *
+ * @internal
+ */
+final class FixCommand extends Command
+{
+ protected static $defaultName = 'fix';
+
+ /**
+ * @var EventDispatcherInterface
+ */
+ private $eventDispatcher;
+
+ /**
+ * @var ErrorsManager
+ */
+ private $errorsManager;
+
+ /**
+ * @var Stopwatch
+ */
+ private $stopwatch;
+
+ /**
+ * @var ConfigInterface
+ */
+ private $defaultConfig;
+
+ /**
+ * @var ToolInfoInterface
+ */
+ private $toolInfo;
+
+ public function __construct(ToolInfoInterface $toolInfo)
+ {
+ parent::__construct();
+
+ $this->defaultConfig = new Config();
+ $this->errorsManager = new ErrorsManager();
+ $this->eventDispatcher = new EventDispatcher();
+ $this->stopwatch = new Stopwatch();
+ $this->toolInfo = $toolInfo;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * Override here to only generate the help copy when used.
+ */
+ public function getHelp()
+ {
+ return HelpCommand::getHelpCopy();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function configure()
+ {
+ $this
+ ->setDefinition(
+ [
+ new InputArgument('path', InputArgument::IS_ARRAY, 'The path.'),
+ new InputOption('path-mode', '', InputOption::VALUE_REQUIRED, 'Specify path mode (can be override or intersection).', 'override'),
+ new InputOption('allow-risky', '', InputOption::VALUE_REQUIRED, 'Are risky fixers allowed (can be yes or no).'),
+ new InputOption('config', '', InputOption::VALUE_REQUIRED, 'The path to a .php_cs file.'),
+ new InputOption('dry-run', '', InputOption::VALUE_NONE, 'Only shows which files would have been modified.'),
+ new InputOption('rules', '', InputOption::VALUE_REQUIRED, 'The rules.'),
+ new InputOption('using-cache', '', InputOption::VALUE_REQUIRED, 'Does cache should be used (can be yes or no).'),
+ new InputOption('cache-file', '', InputOption::VALUE_REQUIRED, 'The path to the cache file.'),
+ new InputOption('diff', '', InputOption::VALUE_NONE, 'Also produce diff for each file.'),
+ new InputOption('diff-format', '', InputOption::VALUE_REQUIRED, 'Specify diff format.'),
+ new InputOption('format', '', InputOption::VALUE_REQUIRED, 'To output results in other formats.'),
+ new InputOption('stop-on-violation', '', InputOption::VALUE_NONE, 'Stop execution on first violation.'),
+ new InputOption('show-progress', '', InputOption::VALUE_REQUIRED, 'Type of progress indicator (none, run-in, estimating, estimating-max or dots).'),
+ ]
+ )
+ ->setDescription('Fixes a directory or a file.')
+ ;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function execute(InputInterface $input, OutputInterface $output)
+ {
+ $verbosity = $output->getVerbosity();
+
+ $passedConfig = $input->getOption('config');
+ $passedRules = $input->getOption('rules');
+
+ $resolver = new ConfigurationResolver(
+ $this->defaultConfig,
+ [
+ 'allow-risky' => $input->getOption('allow-risky'),
+ 'config' => $passedConfig,
+ 'dry-run' => $input->getOption('dry-run'),
+ 'rules' => $passedRules,
+ 'path' => $input->getArgument('path'),
+ 'path-mode' => $input->getOption('path-mode'),
+ 'using-cache' => $input->getOption('using-cache'),
+ 'cache-file' => $input->getOption('cache-file'),
+ 'format' => $input->getOption('format'),
+ 'diff' => $input->getOption('diff'),
+ 'diff-format' => $input->getOption('diff-format'),
+ 'stop-on-violation' => $input->getOption('stop-on-violation'),
+ 'verbosity' => $verbosity,
+ 'show-progress' => $input->getOption('show-progress'),
+ ],
+ getcwd(),
+ $this->toolInfo
+ );
+
+ $reporter = $resolver->getReporter();
+
+ $stdErr = $output instanceof ConsoleOutputInterface
+ ? $output->getErrorOutput()
+ : ('txt' === $reporter->getFormat() ? $output : null)
+ ;
+
+ if (null !== $stdErr) {
+ if (null !== $passedConfig && null !== $passedRules) {
+ if (getenv('PHP_CS_FIXER_FUTURE_MODE')) {
+ throw new \RuntimeException('Passing both `config` and `rules` options is not possible. This check was performed as `PHP_CS_FIXER_FUTURE_MODE` env var is set.');
+ }
+
+ $stdErr->writeln([
+ sprintf($stdErr->isDecorated() ? '%s>' : '%s', 'When passing both "--config" and "--rules" the rules within the configuration file are not used.'),
+ sprintf($stdErr->isDecorated() ? '%s>' : '%s', 'Passing both options is deprecated; version v3.0 PHP-CS-Fixer will exit with a configuration error code.'),
+ ]);
+ }
+
+ $configFile = $resolver->getConfigFile();
+ $stdErr->writeln(sprintf('Loaded config %s%s.', $resolver->getConfig()->getName(), null === $configFile ? '' : ' from "'.$configFile.'"'));
+
+ if ($resolver->getUsingCache()) {
+ $cacheFile = $resolver->getCacheFile();
+ if (is_file($cacheFile)) {
+ $stdErr->writeln(sprintf('Using cache file "%s".', $cacheFile));
+ }
+ }
+ }
+
+ $progressType = $resolver->getProgress();
+ $finder = $resolver->getFinder();
+
+ if (null !== $stdErr && $resolver->configFinderIsOverridden()) {
+ $stdErr->writeln(
+ sprintf($stdErr->isDecorated() ? '%s>' : '%s', 'Paths from configuration file have been overridden by paths provided as command arguments.')
+ );
+ }
+
+ // @TODO 3.0 remove `run-in` and `estimating`
+ if ('none' === $progressType || null === $stdErr) {
+ $progressOutput = new NullOutput();
+ } elseif ('run-in' === $progressType) {
+ $progressOutput = new ProcessOutput($stdErr, $this->eventDispatcher, null, null);
+ } else {
+ $finder = new \ArrayIterator(iterator_to_array($finder));
+ $progressOutput = new ProcessOutput(
+ $stdErr,
+ $this->eventDispatcher,
+ 'estimating' !== $progressType ? (new Terminal())->getWidth() : null,
+ \count($finder)
+ );
+ }
+
+ $runner = new Runner(
+ $finder,
+ $resolver->getFixers(),
+ $resolver->getDiffer(),
+ 'none' !== $progressType ? $this->eventDispatcher : null,
+ $this->errorsManager,
+ $resolver->getLinter(),
+ $resolver->isDryRun(),
+ $resolver->getCacheManager(),
+ $resolver->getDirectory(),
+ $resolver->shouldStopOnViolation()
+ );
+
+ $this->stopwatch->start('fixFiles');
+ $changed = $runner->fix();
+ $this->stopwatch->stop('fixFiles');
+
+ $progressOutput->printLegend();
+
+ $fixEvent = $this->stopwatch->getEvent('fixFiles');
+
+ $reportSummary = new ReportSummary(
+ $changed,
+ $fixEvent->getDuration(),
+ $fixEvent->getMemory(),
+ OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity(),
+ $resolver->isDryRun(),
+ $output->isDecorated()
+ );
+
+ $output->isDecorated()
+ ? $output->write($reporter->generate($reportSummary))
+ : $output->write($reporter->generate($reportSummary), false, OutputInterface::OUTPUT_RAW)
+ ;
+
+ $invalidErrors = $this->errorsManager->getInvalidErrors();
+ $exceptionErrors = $this->errorsManager->getExceptionErrors();
+ $lintErrors = $this->errorsManager->getLintErrors();
+
+ if (null !== $stdErr) {
+ $errorOutput = new ErrorOutput($stdErr);
+
+ if (\count($invalidErrors) > 0) {
+ $errorOutput->listErrors('linting before fixing', $invalidErrors);
+ }
+
+ if (\count($exceptionErrors) > 0) {
+ $errorOutput->listErrors('fixing', $exceptionErrors);
+ }
+
+ if (\count($lintErrors) > 0) {
+ $errorOutput->listErrors('linting after fixing', $lintErrors);
+ }
+ }
+
+ $exitStatusCalculator = new FixCommandExitStatusCalculator();
+
+ return $exitStatusCalculator->calculate(
+ $resolver->isDryRun(),
+ \count($changed) > 0,
+ \count($invalidErrors) > 0,
+ \count($exceptionErrors) > 0,
+ \count($lintErrors) > 0
+ );
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/FixCommandExitStatusCalculator.php b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/FixCommandExitStatusCalculator.php
new file mode 100644
index 0000000000000..732ddd9bb2684
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/FixCommandExitStatusCalculator.php
@@ -0,0 +1,58 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Console\Command;
+
+/**
+ * @author Dariusz Rumiński
+ *
+ * @internal
+ */
+final class FixCommandExitStatusCalculator
+{
+ // Exit status 1 is reserved for environment constraints not matched.
+ const EXIT_STATUS_FLAG_HAS_INVALID_FILES = 4;
+ const EXIT_STATUS_FLAG_HAS_CHANGED_FILES = 8;
+ const EXIT_STATUS_FLAG_HAS_INVALID_CONFIG = 16;
+ const EXIT_STATUS_FLAG_HAS_INVALID_FIXER_CONFIG = 32;
+ const EXIT_STATUS_FLAG_EXCEPTION_IN_APP = 64;
+
+ /**
+ * @param bool $isDryRun
+ * @param bool $hasChangedFiles
+ * @param bool $hasInvalidErrors
+ * @param bool $hasExceptionErrors
+ * @param bool $hasLintErrorsAfterFixing
+ *
+ * @return int
+ */
+ public function calculate($isDryRun, $hasChangedFiles, $hasInvalidErrors, $hasExceptionErrors, $hasLintErrorsAfterFixing)
+ {
+ $exitStatus = 0;
+
+ if ($isDryRun) {
+ if ($hasChangedFiles) {
+ $exitStatus |= self::EXIT_STATUS_FLAG_HAS_CHANGED_FILES;
+ }
+
+ if ($hasInvalidErrors) {
+ $exitStatus |= self::EXIT_STATUS_FLAG_HAS_INVALID_FILES;
+ }
+ }
+
+ if ($hasExceptionErrors || $hasLintErrorsAfterFixing) {
+ $exitStatus |= self::EXIT_STATUS_FLAG_EXCEPTION_IN_APP;
+ }
+
+ return $exitStatus;
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/HelpCommand.php b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/HelpCommand.php
new file mode 100644
index 0000000000000..32ebf56ec9510
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/HelpCommand.php
@@ -0,0 +1,626 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Console\Command;
+
+use PhpCsFixer\AbstractFixer;
+use PhpCsFixer\Console\Application;
+use PhpCsFixer\Fixer\ConfigurableFixerInterface;
+use PhpCsFixer\Fixer\ConfigurationDefinitionFixerInterface;
+use PhpCsFixer\Fixer\DeprecatedFixerInterface;
+use PhpCsFixer\Fixer\FixerInterface;
+use PhpCsFixer\FixerConfiguration\AliasedFixerOption;
+use PhpCsFixer\FixerConfiguration\AllowedValueSubset;
+use PhpCsFixer\FixerConfiguration\DeprecatedFixerOption;
+use PhpCsFixer\FixerConfiguration\FixerOptionInterface;
+use PhpCsFixer\FixerFactory;
+use PhpCsFixer\Preg;
+use PhpCsFixer\RuleSet;
+use PhpCsFixer\Utils;
+use Symfony\Component\Console\Command\HelpCommand as BaseHelpCommand;
+use Symfony\Component\Console\Formatter\OutputFormatter;
+use Symfony\Component\Console\Formatter\OutputFormatterStyle;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+/**
+ * @author Fabien Potencier
+ * @author Dariusz Rumiński
+ * @author SpacePossum
+ *
+ * @internal
+ */
+final class HelpCommand extends BaseHelpCommand
+{
+ protected static $defaultName = 'help';
+
+ /**
+ * Returns help-copy suitable for console output.
+ *
+ * @return string
+ */
+ public static function getHelpCopy()
+ {
+ $template =
+ <<<'EOF'
+The %command.name% command tries to fix as much coding standards
+problems as possible on a given file or files in a given directory and its subdirectories:
+
+ $ php %command.full_name% /path/to/dir
+ $ php %command.full_name% /path/to/file
+
+By default --path-mode is set to ``override``, which means, that if you specify the path to a file or a directory via
+command arguments, then the paths provided to a ``Finder`` in config file will be ignored. You can use --path-mode=intersection
+to merge paths from the config file and from the argument:
+
+ $ php %command.full_name% --path-mode=intersection /path/to/dir
+
+The --format option for the output format. Supported formats are ``txt`` (default one), ``json``, ``xml``, ``checkstyle``, ``junit`` and ``gitlab``.
+
+NOTE: the output for the following formats are generated in accordance with XML schemas
+
+* ``junit`` follows the `JUnit xml schema from Jenkins `_
+* ``checkstyle`` follows the common `"checkstyle" xml schema `_
+
+The --quiet Do not output any message.
+
+The --verbose option will show the applied rules. When using the ``txt`` format it will also display progress notifications.
+
+NOTE: if there is an error like "errors reported during linting after fixing", you can use this to be even more verbose for debugging purpose
+
+* ``--verbose=0`` or no option: normal
+* ``--verbose``, ``--verbose=1``, ``-v``: verbose
+* ``--verbose=2``, ``-vv``: very verbose
+* ``--verbose=3``, ``-vvv``: debug
+
+The --rules option limits the rules to apply to the
+project:
+
+ $ php %command.full_name% /path/to/project --rules=@PSR2
+
+By default the PSR1 and PSR2 rules are used.
+
+The --rules option lets you choose the exact rules to
+apply (the rule names must be separated by a comma):
+
+ $ php %command.full_name% /path/to/dir --rules=line_ending,full_opening_tag,indentation_type
+
+You can also blacklist the rules you don't want by placing a dash in front of the rule name, if this is more convenient,
+using -name_of_fixer:
+
+ $ php %command.full_name% /path/to/dir --rules=-full_opening_tag,-indentation_type
+
+When using combinations of exact and blacklist rules, applying exact rules along with above blacklisted results:
+
+ $ php %command.full_name% /path/to/project --rules=@Symfony,-@PSR1,-blank_line_before_statement,strict_comparison
+
+Complete configuration for rules can be supplied using a ``json`` formatted string.
+
+ $ php %command.full_name% /path/to/project --rules='{"concat_space": {"spacing": "none"}}'
+
+The --dry-run flag will run the fixer without making changes to your files.
+
+The --diff flag can be used to let the fixer output all the changes it makes.
+
+The --diff-format option allows to specify in which format the fixer should output the changes it makes:
+
+* udiff: unified diff format;
+* sbd: Sebastianbergmann/diff format (default when using `--diff` without specifying `diff-format`).
+
+The --allow-risky option (pass ``yes`` or ``no``) allows you to set whether risky rules may run. Default value is taken from config file.
+A rule is considered risky if it could change code behaviour. By default no risky rules are run.
+
+The --stop-on-violation flag stops the execution upon first file that needs to be fixed.
+
+The --show-progress option allows you to choose the way process progress is rendered:
+
+* none: disables progress output;
+* run-in: [deprecated] simple single-line progress output;
+* estimating: [deprecated] multiline progress output with number of files and percentage on each line. Note that with this option, the files list is evaluated before processing to get the total number of files and then kept in memory to avoid using the file iterator twice. This has an impact on memory usage so using this option is not recommended on very large projects;
+* estimating-max: [deprecated] same as dots;
+* dots: same as estimating but using all terminal columns instead of default 80.
+
+If the option is not provided, it defaults to run-in unless a config file that disables output is used, in which case it defaults to none. This option has no effect if the verbosity of the command is less than verbose.
+
+ $ php %command.full_name% --verbose --show-progress=estimating
+
+The command can also read from standard input, in which case it won't
+automatically fix anything:
+
+ $ cat foo.php | php %command.full_name% --diff -
+
+Finally, if you don't need BC kept on CLI level, you might use `PHP_CS_FIXER_FUTURE_MODE` to start using options that
+would be default in next MAJOR release (unified differ, estimating, full-width progress indicator):
+
+ $ PHP_CS_FIXER_FUTURE_MODE=1 php %command.full_name% -v --diff
+
+Choose from the list of available rules:
+
+%%%FIXERS_DETAILS%%%
+
+The --dry-run option displays the files that need to be
+fixed but without actually modifying them:
+
+ $ php %command.full_name% /path/to/code --dry-run
+
+Config file
+-----------
+
+Instead of using command line options to customize the rule, you can save the
+project configuration in a .php_cs.dist file in the root directory of your project.
+The file must return an instance of `PhpCsFixer\ConfigInterface` (%%%CONFIG_INTERFACE_URL%%%)
+which lets you configure the rules, the files and directories that
+need to be analyzed. You may also create .php_cs file, which is
+the local configuration that will be used instead of the project configuration. It
+is a good practice to add that file into your .gitignore file.
+With the --config option you can specify the path to the
+.php_cs file.
+
+The example below will add two rules to the default list of PSR2 set rules:
+
+ exclude('somedir')
+ ->notPath('src/Symfony/Component/Translation/Tests/fixtures/resources.php')
+ ->in(__DIR__)
+ ;
+
+ return PhpCsFixer\Config::create()
+ ->setRules([
+ '@PSR2' => true,
+ 'strict_param' => true,
+ 'array_syntax' => ['syntax' => 'short'],
+ ])
+ ->setFinder($finder)
+ ;
+
+ ?>
+
+**NOTE**: ``exclude`` will work only for directories, so if you need to exclude file, try ``notPath``.
+Both ``exclude`` and ``notPath`` methods accept only relative paths to the ones defined with the ``in`` method.
+
+See `Symfony\Finder` (https://symfony.com/doc/current/components/finder.html)
+online documentation for other `Finder` methods.
+
+You may also use a blacklist for the rules instead of the above shown whitelist approach.
+The following example shows how to use all ``Symfony`` rules but the ``full_opening_tag`` rule.
+
+ exclude('somedir')
+ ->in(__DIR__)
+ ;
+
+ return PhpCsFixer\Config::create()
+ ->setRules([
+ '@Symfony' => true,
+ 'full_opening_tag' => false,
+ ])
+ ->setFinder($finder)
+ ;
+
+ ?>
+
+You may want to use non-linux whitespaces in your project. Then you need to
+configure them in your config file.
+
+ setIndent("\t")
+ ->setLineEnding("\r\n")
+ ;
+
+ ?>
+
+By using ``--using-cache`` option with ``yes`` or ``no`` you can set if the caching
+mechanism should be used.
+
+Caching
+-------
+
+The caching mechanism is enabled by default. This will speed up further runs by
+fixing only files that were modified since the last run. The tool will fix all
+files if the tool version has changed or the list of rules has changed.
+Cache is supported only for tool downloaded as phar file or installed via
+composer.
+
+Cache can be disabled via ``--using-cache`` option or config file:
+
+ setUsingCache(false)
+ ;
+
+ ?>
+
+Cache file can be specified via ``--cache-file`` option or config file:
+
+ setCacheFile(__DIR__.'/.php_cs.cache')
+ ;
+
+ ?>
+
+Using PHP CS Fixer on CI
+------------------------
+
+Require ``friendsofphp/php-cs-fixer`` as a ``dev`` dependency:
+
+ $ ./composer.phar require --dev friendsofphp/php-cs-fixer
+
+Then, add the following command to your CI:
+
+%%%CI_INTEGRATION%%%
+
+Where ``$COMMIT_RANGE`` is your range of commits, e.g. ``$TRAVIS_COMMIT_RANGE`` or ``HEAD~..HEAD``.
+
+Exit code
+---------
+
+Exit code is built using following bit flags:
+
+* 0 - OK.
+* 1 - General error (or PHP minimal requirement not matched).
+* 4 - Some files have invalid syntax (only in dry-run mode).
+* 8 - Some files need fixing (only in dry-run mode).
+* 16 - Configuration error of the application.
+* 32 - Configuration error of a Fixer.
+* 64 - Exception raised within the application.
+
+(Applies to exit code of the ``fix`` command only)
+EOF
+ ;
+
+ return strtr($template, [
+ '%%%CONFIG_INTERFACE_URL%%%' => sprintf(
+ 'https://github.com/FriendsOfPHP/PHP-CS-Fixer/blob/v%s/src/ConfigInterface.php',
+ self::getLatestReleaseVersionFromChangeLog()
+ ),
+ '%%%CI_INTEGRATION%%%' => implode("\n", array_map(
+ static function ($line) { return ' $ '.$line; },
+ \array_slice(file(__DIR__.'/../../../ci-integration.sh', FILE_IGNORE_NEW_LINES), 3)
+ )),
+ '%%%FIXERS_DETAILS%%%' => self::getFixersHelp(),
+ ]);
+ }
+
+ /**
+ * @param mixed $value
+ *
+ * @return string
+ */
+ public static function toString($value)
+ {
+ if (\is_array($value)) {
+ // Output modifications:
+ // - remove new-lines
+ // - combine multiple whitespaces
+ // - switch array-syntax to short array-syntax
+ // - remove whitespace at array opening
+ // - remove trailing array comma and whitespace at array closing
+ // - remove numeric array indexes
+ static $replaces = [
+ ['#\r|\n#', '#\s{1,}#', '#array\s*\((.*)\)#s', '#\[\s+#', '#,\s*\]#', '#\d+\s*=>\s*#'],
+ ['', ' ', '[$1]', '[', ']', ''],
+ ];
+
+ $str = var_export($value, true);
+ do {
+ $strNew = Preg::replace(
+ $replaces[0],
+ $replaces[1],
+ $str
+ );
+
+ if ($strNew === $str) {
+ break;
+ }
+
+ $str = $strNew;
+ } while (true);
+ } else {
+ $str = var_export($value, true);
+ }
+
+ return Preg::replace('/\bNULL\b/', 'null', $str);
+ }
+
+ /**
+ * Returns the allowed values of the given option that can be converted to a string.
+ *
+ * @return null|array
+ */
+ public static function getDisplayableAllowedValues(FixerOptionInterface $option)
+ {
+ $allowed = $option->getAllowedValues();
+
+ if (null !== $allowed) {
+ $allowed = array_filter($allowed, static function ($value) {
+ return !($value instanceof \Closure);
+ });
+
+ usort($allowed, static function ($valueA, $valueB) {
+ if ($valueA instanceof AllowedValueSubset) {
+ return -1;
+ }
+
+ if ($valueB instanceof AllowedValueSubset) {
+ return 1;
+ }
+
+ return strcasecmp(
+ self::toString($valueA),
+ self::toString($valueB)
+ );
+ });
+
+ if (0 === \count($allowed)) {
+ $allowed = null;
+ }
+ }
+
+ return $allowed;
+ }
+
+ /**
+ * @throws \RuntimeException when failing to parse the change log file
+ *
+ * @return string
+ */
+ public static function getLatestReleaseVersionFromChangeLog()
+ {
+ static $version = null;
+
+ if (null !== $version) {
+ return $version;
+ }
+
+ $changelogFile = self::getChangeLogFile();
+ if (null === $changelogFile) {
+ $version = Application::VERSION;
+
+ return $version;
+ }
+
+ $changelog = @file_get_contents($changelogFile);
+ if (false === $changelog) {
+ $error = error_get_last();
+
+ throw new \RuntimeException(sprintf(
+ 'Failed to read content of the changelog file "%s".%s',
+ $changelogFile,
+ $error ? ' '.$error['message'] : ''
+ ));
+ }
+
+ for ($i = Application::getMajorVersion(); $i > 0; --$i) {
+ if (1 === Preg::match('/Changelog for v('.$i.'.\d+.\d+)/', $changelog, $matches)) {
+ $version = $matches[1];
+
+ break;
+ }
+ }
+
+ if (null === $version) {
+ throw new \RuntimeException(sprintf('Failed to parse changelog data of "%s".', $changelogFile));
+ }
+
+ return $version;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function initialize(InputInterface $input, OutputInterface $output)
+ {
+ $output->getFormatter()->setStyle('url', new OutputFormatterStyle('blue'));
+ }
+
+ /**
+ * @return null|string
+ */
+ private static function getChangeLogFile()
+ {
+ $changelogFile = __DIR__.'/../../../CHANGELOG.md';
+
+ return is_file($changelogFile) ? $changelogFile : null;
+ }
+
+ /**
+ * @return string
+ */
+ private static function getFixersHelp()
+ {
+ $help = '';
+ $fixerFactory = new FixerFactory();
+ /** @var AbstractFixer[] $fixers */
+ $fixers = $fixerFactory->registerBuiltInFixers()->getFixers();
+
+ // sort fixers by name
+ usort(
+ $fixers,
+ static function (FixerInterface $a, FixerInterface $b) {
+ return strcmp($a->getName(), $b->getName());
+ }
+ );
+
+ $ruleSets = [];
+ foreach (RuleSet::create()->getSetDefinitionNames() as $setName) {
+ $ruleSets[$setName] = new RuleSet([$setName => true]);
+ }
+
+ $getSetsWithRule = static function ($rule) use ($ruleSets) {
+ $sets = [];
+
+ foreach ($ruleSets as $setName => $ruleSet) {
+ if ($ruleSet->hasRule($rule)) {
+ $sets[] = $setName;
+ }
+ }
+
+ return $sets;
+ };
+
+ $count = \count($fixers) - 1;
+ foreach ($fixers as $i => $fixer) {
+ $sets = $getSetsWithRule($fixer->getName());
+
+ $description = $fixer->getDefinition()->getSummary();
+
+ if ($fixer instanceof DeprecatedFixerInterface) {
+ $successors = $fixer->getSuccessorsNames();
+ $message = [] === $successors
+ ? 'will be removed on next major version'
+ : sprintf('use %s instead', Utils::naturalLanguageJoinWithBackticks($successors));
+ $description .= sprintf(' DEPRECATED: %s.', $message);
+ }
+
+ $description = implode("\n | ", self::wordwrap(
+ Preg::replace('/(`.+?`)/', '$1', $description),
+ 72
+ ));
+
+ if (!empty($sets)) {
+ $help .= sprintf(" * %s [%s]\n | %s\n", $fixer->getName(), implode(', ', $sets), $description);
+ } else {
+ $help .= sprintf(" * %s\n | %s\n", $fixer->getName(), $description);
+ }
+
+ if ($fixer->isRisky()) {
+ $help .= sprintf(
+ " | *Risky rule: %s.*\n",
+ Preg::replace(
+ '/(`.+?`)/',
+ '$1',
+ lcfirst(Preg::replace('/\.$/', '', $fixer->getDefinition()->getRiskyDescription()))
+ )
+ );
+ }
+
+ if ($fixer instanceof ConfigurationDefinitionFixerInterface) {
+ $configurationDefinition = $fixer->getConfigurationDefinition();
+ $configurationDefinitionOptions = $configurationDefinition->getOptions();
+ if (\count($configurationDefinitionOptions)) {
+ $help .= " |\n | Configuration options:\n";
+
+ usort(
+ $configurationDefinitionOptions,
+ static function (FixerOptionInterface $optionA, FixerOptionInterface $optionB) {
+ return strcmp($optionA->getName(), $optionB->getName());
+ }
+ );
+
+ foreach ($configurationDefinitionOptions as $option) {
+ $line = ''.OutputFormatter::escape($option->getName()).'';
+
+ $allowed = self::getDisplayableAllowedValues($option);
+ if (null !== $allowed) {
+ foreach ($allowed as &$value) {
+ if ($value instanceof AllowedValueSubset) {
+ $value = 'a subset of '.self::toString($value->getAllowedValues()).'';
+ } else {
+ $value = ''.self::toString($value).'';
+ }
+ }
+ } else {
+ $allowed = array_map(
+ static function ($type) {
+ return ''.$type.'';
+ },
+ $option->getAllowedTypes()
+ );
+ }
+
+ if (null !== $allowed) {
+ $line .= ' ('.implode(', ', $allowed).')';
+ }
+
+ $line .= ': '.Preg::replace(
+ '/(`.+?`)/',
+ '$1',
+ lcfirst(Preg::replace('/\.$/', '', OutputFormatter::escape($option->getDescription())))
+ ).'; ';
+ if ($option->hasDefault()) {
+ $line .= 'defaults to '.self::toString($option->getDefault()).'';
+ } else {
+ $line .= 'required';
+ }
+
+ if ($option instanceof DeprecatedFixerOption) {
+ $line .= '. DEPRECATED: '.Preg::replace(
+ '/(`.+?`)/',
+ '$1',
+ lcfirst(Preg::replace('/\.$/', '', OutputFormatter::escape($option->getDeprecationMessage())))
+ );
+ }
+
+ if ($option instanceof AliasedFixerOption) {
+ $line .= '; DEPRECATED alias: '.$option->getAlias().'';
+ }
+
+ foreach (self::wordwrap($line, 72) as $index => $line) {
+ $help .= (0 === $index ? ' | - ' : ' | ').$line."\n";
+ }
+ }
+ }
+ } elseif ($fixer instanceof ConfigurableFixerInterface) {
+ $help .= " | *Configurable rule.*\n";
+ }
+
+ if ($count !== $i) {
+ $help .= "\n";
+ }
+ }
+
+ // prevent "\" from being rendered as an escaped literal style tag
+ return Preg::replace('#\\\\()#', '<<$1', $help);
+ }
+
+ /**
+ * Wraps a string to the given number of characters, ignoring style tags.
+ *
+ * @param string $string
+ * @param int $width
+ *
+ * @return string[]
+ */
+ private static function wordwrap($string, $width)
+ {
+ $result = [];
+ $currentLine = 0;
+ $lineLength = 0;
+ foreach (explode(' ', $string) as $word) {
+ $wordLength = \strlen(Preg::replace('~?(\w+)>~', '', $word));
+ if (0 !== $lineLength) {
+ ++$wordLength; // space before word
+ }
+
+ if ($lineLength + $wordLength > $width) {
+ ++$currentLine;
+ $lineLength = 0;
+ }
+
+ $result[$currentLine][] = $word;
+ $lineLength += $wordLength;
+ }
+
+ return array_map(static function ($line) {
+ return implode(' ', $line);
+ }, $result);
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/ReadmeCommand.php b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/ReadmeCommand.php
new file mode 100644
index 0000000000000..33e8c2f5baea9
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/ReadmeCommand.php
@@ -0,0 +1,279 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Console\Command;
+
+use PhpCsFixer\Preg;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+/**
+ * @author Fabien Potencier
+ * @author Dariusz Rumiński
+ *
+ * @internal
+ */
+final class ReadmeCommand extends Command
+{
+ protected static $defaultName = 'readme';
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function configure()
+ {
+ $this->setDescription('Generates the README content, based on the fix command help.');
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function execute(InputInterface $input, OutputInterface $output)
+ {
+ $header = <<header('PHP Coding Standards Fixer', '=')}
+
+The PHP Coding Standards Fixer (PHP CS Fixer) tool fixes your code to follow standards;
+whether you want to follow PHP coding standards as defined in the PSR-1, PSR-2, etc.,
+or other community driven ones like the Symfony one.
+You can **also** define your (team's) style through configuration.
+
+It can modernize your code (like converting the ``pow`` function to the ``**`` operator on PHP 5.6)
+and (micro) optimize it.
+
+If you are already using a linter to identify coding standards problems in your
+code, you know that fixing them by hand is tedious, especially on large
+projects. This tool does not only detect them, but also fixes them for you.
+
+The PHP CS Fixer is maintained on GitHub at https://github.com/FriendsOfPHP/PHP-CS-Fixer
+bug reports and ideas about new features are welcome there.
+
+You can talk to us at https://gitter.im/PHP-CS-Fixer/Lobby about the project,
+configuration, possible improvements, ideas and questions, please visit us!
+
+{$this->header('Requirements', '-')}
+
+PHP needs to be a minimum version of PHP 5.6.0.
+
+{$this->header('Installation', '-')}
+
+{$this->header('Locally', '~')}
+
+Download the `php-cs-fixer.phar`_ file and store it somewhere on your computer.
+
+{$this->header('Globally (manual)', '~')}
+
+You can run these commands to easily access latest ``php-cs-fixer`` from anywhere on
+your system:
+
+.. code-block:: bash
+
+ $ wget %download.url% -O php-cs-fixer
+
+or with specified version:
+
+.. code-block:: bash
+
+ $ wget %download.version_url% -O php-cs-fixer
+
+or with curl:
+
+.. code-block:: bash
+
+ $ curl -L %download.url% -o php-cs-fixer
+
+then:
+
+.. code-block:: bash
+
+ $ sudo chmod a+x php-cs-fixer
+ $ sudo mv php-cs-fixer /usr/local/bin/php-cs-fixer
+
+Then, just run ``php-cs-fixer``.
+
+{$this->header('Globally (Composer)', '~')}
+
+To install PHP CS Fixer, `install Composer `_ and issue the following command:
+
+.. code-block:: bash
+
+ $ composer global require friendsofphp/php-cs-fixer
+
+Then make sure you have the global Composer binaries directory in your ``PATH``. This directory is platform-dependent, see `Composer documentation `_ for details. Example for some Unix systems:
+
+.. code-block:: bash
+
+ $ export PATH="\$PATH:\$HOME/.composer/vendor/bin"
+
+{$this->header('Globally (homebrew)', '~')}
+
+.. code-block:: bash
+
+ $ brew install php-cs-fixer
+
+{$this->header('Locally (PHIVE)', '~')}
+
+Install `PHIVE `_ and issue the following command:
+
+.. code-block:: bash
+
+ $ phive install php-cs-fixer # use `--global` for global install
+
+{$this->header('Update', '-')}
+
+{$this->header('Locally', '~')}
+
+The ``self-update`` command tries to update ``php-cs-fixer`` itself:
+
+.. code-block:: bash
+
+ $ php php-cs-fixer.phar self-update
+
+{$this->header('Globally (manual)', '~')}
+
+You can update ``php-cs-fixer`` through this command:
+
+.. code-block:: bash
+
+ $ sudo php-cs-fixer self-update
+
+{$this->header('Globally (Composer)', '~')}
+
+You can update ``php-cs-fixer`` through this command:
+
+.. code-block:: bash
+
+ $ ./composer.phar global update friendsofphp/php-cs-fixer
+
+{$this->header('Globally (homebrew)', '~')}
+
+You can update ``php-cs-fixer`` through this command:
+
+.. code-block:: bash
+
+ $ brew upgrade php-cs-fixer
+
+{$this->header('Locally (PHIVE)', '~')}
+
+.. code-block:: bash
+
+ $ phive update php-cs-fixer
+
+{$this->header('Usage', '-')}
+
+EOF;
+
+ $footer = <<header('Helpers', '-')}
+
+Dedicated plugins exist for:
+
+* `Atom`_
+* `NetBeans`_
+* `PhpStorm`_
+* `Sublime Text`_
+* `Vim`_
+* `VS Code`_
+
+{$this->header('Contribute', '-')}
+
+The tool comes with quite a few built-in fixers, but everyone is more than
+welcome to `contribute`_ more of them.
+
+{$this->header('Fixers', '~')}
+
+A *fixer* is a class that tries to fix one CS issue (a ``Fixer`` class must
+implement ``FixerInterface``).
+
+{$this->header('Configs', '~')}
+
+A *config* knows about the CS rules and the files and directories that must be
+scanned by the tool when run in the directory of your project. It is useful for
+projects that follow a well-known directory structures (like for Symfony
+projects for instance).
+
+.. _php-cs-fixer.phar: %download.url%
+.. _Atom: https://github.com/Glavin001/atom-beautify
+.. _NetBeans: http://plugins.netbeans.org/plugin/49042/php-cs-fixer
+.. _PhpStorm: https://medium.com/@valeryan/how-to-configure-phpstorm-to-use-php-cs-fixer-1844991e521f
+.. _Sublime Text: https://github.com/benmatselby/sublime-phpcs
+.. _Vim: https://github.com/stephpy/vim-php-cs-fixer
+.. _VS Code: https://github.com/junstyle/vscode-php-cs-fixer
+.. _contribute: https://github.com/FriendsOfPHP/PHP-CS-Fixer/blob/master/CONTRIBUTING.md
+
+EOF;
+
+ $command = $this->getApplication()->get('fix');
+ $help = $command->getHelp();
+ $help = str_replace('%command.full_name%', 'php-cs-fixer.phar '.$command->getName(), $help);
+ $help = str_replace('%command.name%', $command->getName(), $help);
+ $help = Preg::replace('#?(comment|info)>#', '``', $help);
+ $help = Preg::replace('#`(``.+?``)`#', '$1', $help);
+ $help = Preg::replace('#^(\s+)``(.+)``$#m', '$1$2', $help);
+ $help = Preg::replace('#^ \* ``(.+)``(.*?\n)#m', "* **$1**$2\n", $help);
+ $help = Preg::replace('#^ \\| #m', ' ', $help);
+ $help = Preg::replace('#^ \\|#m', '', $help);
+ $help = Preg::replace('#^(?= \\*Risky rule: )#m', "\n", $help);
+ $help = Preg::replace("#^( Configuration options:\n)( - )#m", "$1\n$2", $help);
+ $help = Preg::replace("#^\n( +\\$ )#m", "\n.. code-block:: bash\n\n$1", $help);
+ $help = Preg::replace("#^\n( +<\\?php)#m", "\n.. code-block:: php\n\n$1", $help);
+ $help = Preg::replaceCallback(
+ '#^\s*<\?(\w+).*?\?>#ms',
+ static function ($matches) {
+ $result = Preg::replace("#^\\.\\. code-block:: bash\n\n#m", '', $matches[0]);
+
+ if ('php' !== $matches[1]) {
+ $result = Preg::replace("#<\\?{$matches[1]}\\s*#", '', $result);
+ }
+
+ return Preg::replace("#\n\n +\\?>#", '', $result);
+ },
+ $help
+ );
+
+ // Transform links
+ // In the console output these have the form
+ // `description` (http://...)
+ // Make to RST http://www.sphinx-doc.org/en/stable/rest.html#hyperlinks
+ // `description `_
+
+ $help = Preg::replaceCallback(
+ '#`(.+)`\s?\((.+)<\/url>\)#',
+ static function (array $matches) {
+ return sprintf('`%s <%s>`_', str_replace('\\', '\\\\', $matches[1]), $matches[2]);
+ },
+ $help
+ );
+
+ $help = Preg::replace('#^ #m', ' ', $help);
+ $help = Preg::replace('#\*\* +\[#', '** [', $help);
+
+ $downloadLatestUrl = sprintf('https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v%s/php-cs-fixer.phar', HelpCommand::getLatestReleaseVersionFromChangeLog());
+ $downloadUrl = 'https://cs.symfony.com/download/php-cs-fixer-v2.phar';
+
+ $header = str_replace('%download.version_url%', $downloadLatestUrl, $header);
+ $header = str_replace('%download.url%', $downloadUrl, $header);
+ $footer = str_replace('%download.version_url%', $downloadLatestUrl, $footer);
+ $footer = str_replace('%download.url%', $downloadUrl, $footer);
+
+ $output->write($header."\n".$help."\n".$footer);
+
+ return 0;
+ }
+
+ private function header($name, $underline)
+ {
+ return $name."\n".str_repeat($underline, \strlen($name));
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/SelfUpdateCommand.php b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/SelfUpdateCommand.php
new file mode 100644
index 0000000000000..de4111b711a98
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Command/SelfUpdateCommand.php
@@ -0,0 +1,177 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Console\Command;
+
+use PhpCsFixer\Console\SelfUpdate\NewVersionCheckerInterface;
+use PhpCsFixer\PharCheckerInterface;
+use PhpCsFixer\Preg;
+use PhpCsFixer\ToolInfoInterface;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+
+/**
+ * @author Igor Wiedler
+ * @author Stephane PY
+ * @author Grégoire Pineau
+ * @author Dariusz Rumiński
+ * @author SpacePossum
+ *
+ * @internal
+ */
+final class SelfUpdateCommand extends Command
+{
+ protected static $defaultName = 'self-update';
+
+ /**
+ * @var NewVersionCheckerInterface
+ */
+ private $versionChecker;
+
+ /**
+ * @var ToolInfoInterface
+ */
+ private $toolInfo;
+
+ /**
+ * @var PharCheckerInterface
+ */
+ private $pharChecker;
+
+ public function __construct(
+ NewVersionCheckerInterface $versionChecker,
+ ToolInfoInterface $toolInfo,
+ PharCheckerInterface $pharChecker
+ ) {
+ parent::__construct();
+
+ $this->versionChecker = $versionChecker;
+ $this->toolInfo = $toolInfo;
+ $this->pharChecker = $pharChecker;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function configure()
+ {
+ $this
+ ->setAliases(['selfupdate'])
+ ->setDefinition(
+ [
+ new InputOption('--force', '-f', InputOption::VALUE_NONE, 'Force update to next major version if available.'),
+ ]
+ )
+ ->setDescription('Update php-cs-fixer.phar to the latest stable version.')
+ ->setHelp(
+ <<<'EOT'
+The %command.name% command replace your php-cs-fixer.phar by the
+latest version released on:
+https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases
+
+$ php php-cs-fixer.phar %command.name%
+
+EOT
+ )
+ ;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function execute(InputInterface $input, OutputInterface $output)
+ {
+ if (!$this->toolInfo->isInstalledAsPhar()) {
+ $output->writeln('Self-update is available only for PHAR version.');
+
+ return 1;
+ }
+
+ $currentVersion = $this->getApplication()->getVersion();
+ Preg::match('/^v?(?\d+)\./', $currentVersion, $matches);
+ $currentMajor = (int) $matches['major'];
+
+ try {
+ $latestVersion = $this->versionChecker->getLatestVersion();
+ $latestVersionOfCurrentMajor = $this->versionChecker->getLatestVersionOfMajor($currentMajor);
+ } catch (\Exception $exception) {
+ $output->writeln(sprintf(
+ 'Unable to determine newest version: %s',
+ $exception->getMessage()
+ ));
+
+ return 1;
+ }
+
+ if (1 !== $this->versionChecker->compareVersions($latestVersion, $currentVersion)) {
+ $output->writeln('php-cs-fixer is already up to date.');
+
+ return 0;
+ }
+
+ $remoteTag = $latestVersion;
+
+ if (
+ 0 !== $this->versionChecker->compareVersions($latestVersionOfCurrentMajor, $latestVersion)
+ && true !== $input->getOption('force')
+ ) {
+ $output->writeln(sprintf('A new major version of php-cs-fixer is available (%s)', $latestVersion));
+ $output->writeln(sprintf('Before upgrading please read https://github.com/FriendsOfPHP/PHP-CS-Fixer/blob/%s/UPGRADE.md', $latestVersion));
+ $output->writeln('If you are ready to upgrade run this command with -f');
+ $output->writeln('Checking for new minor/patch version...');
+
+ if (1 !== $this->versionChecker->compareVersions($latestVersionOfCurrentMajor, $currentVersion)) {
+ $output->writeln('No minor update for php-cs-fixer.');
+
+ return 0;
+ }
+
+ $remoteTag = $latestVersionOfCurrentMajor;
+ }
+
+ $localFilename = realpath($_SERVER['argv'][0]) ?: $_SERVER['argv'][0];
+
+ if (!is_writable($localFilename)) {
+ $output->writeln(sprintf('No permission to update %s file.', $localFilename));
+
+ return 1;
+ }
+
+ $tempFilename = \dirname($localFilename).'/'.basename($localFilename, '.phar').'-tmp.phar';
+ $remoteFilename = $this->toolInfo->getPharDownloadUri($remoteTag);
+
+ if (false === @copy($remoteFilename, $tempFilename)) {
+ $output->writeln(sprintf('Unable to download new version %s from the server.', $remoteTag));
+
+ return 1;
+ }
+
+ chmod($tempFilename, 0777 & ~umask());
+
+ $pharInvalidityReason = $this->pharChecker->checkFileValidity($tempFilename);
+ if (null !== $pharInvalidityReason) {
+ unlink($tempFilename);
+ $output->writeln(sprintf('The download of %s is corrupt (%s).', $remoteTag, $pharInvalidityReason));
+ $output->writeln('Please re-run the self-update command to try again.');
+
+ return 1;
+ }
+
+ rename($tempFilename, $localFilename);
+
+ $output->writeln(sprintf('php-cs-fixer updated (%s)', $remoteTag));
+
+ return 0;
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Console/ConfigurationResolver.php b/lib/composer/friendsofphp/php-cs-fixer/src/Console/ConfigurationResolver.php
new file mode 100644
index 0000000000000..64114bd6a52f3
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Console/ConfigurationResolver.php
@@ -0,0 +1,935 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Console;
+
+use PhpCsFixer\Cache\CacheManagerInterface;
+use PhpCsFixer\Cache\Directory;
+use PhpCsFixer\Cache\DirectoryInterface;
+use PhpCsFixer\Cache\FileCacheManager;
+use PhpCsFixer\Cache\FileHandler;
+use PhpCsFixer\Cache\NullCacheManager;
+use PhpCsFixer\Cache\Signature;
+use PhpCsFixer\ConfigInterface;
+use PhpCsFixer\ConfigurationException\InvalidConfigurationException;
+use PhpCsFixer\Differ\DifferInterface;
+use PhpCsFixer\Differ\NullDiffer;
+use PhpCsFixer\Differ\SebastianBergmannDiffer;
+use PhpCsFixer\Differ\UnifiedDiffer;
+use PhpCsFixer\Finder;
+use PhpCsFixer\Fixer\DeprecatedFixerInterface;
+use PhpCsFixer\Fixer\FixerInterface;
+use PhpCsFixer\FixerFactory;
+use PhpCsFixer\Linter\Linter;
+use PhpCsFixer\Linter\LinterInterface;
+use PhpCsFixer\Report\ReporterFactory;
+use PhpCsFixer\Report\ReporterInterface;
+use PhpCsFixer\RuleSet;
+use PhpCsFixer\StdinFileInfo;
+use PhpCsFixer\ToolInfoInterface;
+use PhpCsFixer\Utils;
+use PhpCsFixer\WhitespacesFixerConfig;
+use PhpCsFixer\WordMatcher;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Filesystem\Filesystem;
+use Symfony\Component\Finder\Finder as SymfonyFinder;
+
+/**
+ * The resolver that resolves configuration to use by command line options and config.
+ *
+ * @author Fabien Potencier
+ * @author Katsuhiro Ogawa
+ * @author Dariusz Rumiński
+ *
+ * @internal
+ */
+final class ConfigurationResolver
+{
+ const PATH_MODE_OVERRIDE = 'override';
+ const PATH_MODE_INTERSECTION = 'intersection';
+
+ /**
+ * @var null|bool
+ */
+ private $allowRisky;
+
+ /**
+ * @var null|ConfigInterface
+ */
+ private $config;
+
+ /**
+ * @var null|string
+ */
+ private $configFile;
+
+ /**
+ * @var string
+ */
+ private $cwd;
+
+ /**
+ * @var ConfigInterface
+ */
+ private $defaultConfig;
+
+ /**
+ * @var null|ReporterInterface
+ */
+ private $reporter;
+
+ /**
+ * @var null|bool
+ */
+ private $isStdIn;
+
+ /**
+ * @var null|bool
+ */
+ private $isDryRun;
+
+ /**
+ * @var null|FixerInterface[]
+ */
+ private $fixers;
+
+ /**
+ * @var null|bool
+ */
+ private $configFinderIsOverridden;
+
+ /**
+ * @var ToolInfoInterface
+ */
+ private $toolInfo;
+
+ /**
+ * @var array
+ */
+ private $options = [
+ 'allow-risky' => null,
+ 'cache-file' => null,
+ 'config' => null,
+ 'diff' => null,
+ 'diff-format' => null,
+ 'dry-run' => null,
+ 'format' => null,
+ 'path' => [],
+ 'path-mode' => self::PATH_MODE_OVERRIDE,
+ 'rules' => null,
+ 'show-progress' => null,
+ 'stop-on-violation' => null,
+ 'using-cache' => null,
+ 'verbosity' => null,
+ ];
+
+ private $cacheFile;
+ private $cacheManager;
+ private $differ;
+ private $directory;
+ private $finder;
+ private $format;
+ private $linter;
+ private $path;
+ private $progress;
+ private $ruleSet;
+ private $usingCache;
+
+ /**
+ * @var FixerFactory
+ */
+ private $fixerFactory;
+
+ /**
+ * @param string $cwd
+ */
+ public function __construct(
+ ConfigInterface $config,
+ array $options,
+ $cwd,
+ ToolInfoInterface $toolInfo
+ ) {
+ $this->cwd = $cwd;
+ $this->defaultConfig = $config;
+ $this->toolInfo = $toolInfo;
+
+ foreach ($options as $name => $value) {
+ $this->setOption($name, $value);
+ }
+ }
+
+ /**
+ * @return null|string
+ */
+ public function getCacheFile()
+ {
+ if (!$this->getUsingCache()) {
+ return null;
+ }
+
+ if (null === $this->cacheFile) {
+ if (null === $this->options['cache-file']) {
+ $this->cacheFile = $this->getConfig()->getCacheFile();
+ } else {
+ $this->cacheFile = $this->options['cache-file'];
+ }
+ }
+
+ return $this->cacheFile;
+ }
+
+ /**
+ * @return CacheManagerInterface
+ */
+ public function getCacheManager()
+ {
+ if (null === $this->cacheManager) {
+ if ($this->getUsingCache() && ($this->toolInfo->isInstalledAsPhar() || $this->toolInfo->isInstalledByComposer())) {
+ $this->cacheManager = new FileCacheManager(
+ new FileHandler($this->getCacheFile()),
+ new Signature(
+ PHP_VERSION,
+ $this->toolInfo->getVersion(),
+ $this->getConfig()->getIndent(),
+ $this->getConfig()->getLineEnding(),
+ $this->getRules()
+ ),
+ $this->isDryRun(),
+ $this->getDirectory()
+ );
+ } else {
+ $this->cacheManager = new NullCacheManager();
+ }
+ }
+
+ return $this->cacheManager;
+ }
+
+ /**
+ * @return ConfigInterface
+ */
+ public function getConfig()
+ {
+ if (null === $this->config) {
+ foreach ($this->computeConfigFiles() as $configFile) {
+ if (!file_exists($configFile)) {
+ continue;
+ }
+
+ $config = self::separatedContextLessInclude($configFile);
+
+ // verify that the config has an instance of Config
+ if (!$config instanceof ConfigInterface) {
+ throw new InvalidConfigurationException(sprintf('The config file: "%s" does not return a "PhpCsFixer\ConfigInterface" instance. Got: "%s".', $configFile, \is_object($config) ? \get_class($config) : \gettype($config)));
+ }
+
+ $this->config = $config;
+ $this->configFile = $configFile;
+
+ break;
+ }
+
+ if (null === $this->config) {
+ $this->config = $this->defaultConfig;
+ }
+ }
+
+ return $this->config;
+ }
+
+ /**
+ * @return null|string
+ */
+ public function getConfigFile()
+ {
+ if (null === $this->configFile) {
+ $this->getConfig();
+ }
+
+ return $this->configFile;
+ }
+
+ /**
+ * @return DifferInterface
+ */
+ public function getDiffer()
+ {
+ if (null === $this->differ) {
+ $mapper = [
+ 'null' => static function () { return new NullDiffer(); },
+ 'sbd' => static function () { return new SebastianBergmannDiffer(); },
+ 'udiff' => static function () { return new UnifiedDiffer(); },
+ ];
+
+ if ($this->options['diff-format']) {
+ $option = $this->options['diff-format'];
+ if (!isset($mapper[$option])) {
+ throw new InvalidConfigurationException(sprintf(
+ '"diff-format" must be any of "%s", got "%s".',
+ implode('", "', array_keys($mapper)),
+ $option
+ ));
+ }
+ } else {
+ $default = 'sbd'; // @TODO: 3.0 change to udiff as default
+
+ if (getenv('PHP_CS_FIXER_FUTURE_MODE')) {
+ $default = 'udiff';
+ }
+
+ $option = $this->options['diff'] ? $default : 'null';
+ }
+
+ $this->differ = $mapper[$option]();
+ }
+
+ return $this->differ;
+ }
+
+ /**
+ * @return DirectoryInterface
+ */
+ public function getDirectory()
+ {
+ if (null === $this->directory) {
+ $path = $this->getCacheFile();
+ if (null === $path) {
+ $absolutePath = $this->cwd;
+ } else {
+ $filesystem = new Filesystem();
+
+ $absolutePath = $filesystem->isAbsolutePath($path)
+ ? $path
+ : $this->cwd.\DIRECTORY_SEPARATOR.$path;
+ }
+
+ $this->directory = new Directory(\dirname($absolutePath));
+ }
+
+ return $this->directory;
+ }
+
+ /**
+ * @return FixerInterface[] An array of FixerInterface
+ */
+ public function getFixers()
+ {
+ if (null === $this->fixers) {
+ $this->fixers = $this->createFixerFactory()
+ ->useRuleSet($this->getRuleSet())
+ ->setWhitespacesConfig(new WhitespacesFixerConfig($this->config->getIndent(), $this->config->getLineEnding()))
+ ->getFixers()
+ ;
+
+ if (false === $this->getRiskyAllowed()) {
+ $riskyFixers = array_map(
+ static function (FixerInterface $fixer) {
+ return $fixer->getName();
+ },
+ array_filter(
+ $this->fixers,
+ static function (FixerInterface $fixer) {
+ return $fixer->isRisky();
+ }
+ )
+ );
+
+ if (\count($riskyFixers)) {
+ throw new InvalidConfigurationException(sprintf('The rules contain risky fixers (%s), but they are not allowed to run. Perhaps you forget to use --allow-risky=yes option?', implode(', ', $riskyFixers)));
+ }
+ }
+ }
+
+ return $this->fixers;
+ }
+
+ /**
+ * @return LinterInterface
+ */
+ public function getLinter()
+ {
+ if (null === $this->linter) {
+ $this->linter = new Linter($this->getConfig()->getPhpExecutable());
+ }
+
+ return $this->linter;
+ }
+
+ /**
+ * Returns path.
+ *
+ * @return string[]
+ */
+ public function getPath()
+ {
+ if (null === $this->path) {
+ $filesystem = new Filesystem();
+ $cwd = $this->cwd;
+
+ if (1 === \count($this->options['path']) && '-' === $this->options['path'][0]) {
+ $this->path = $this->options['path'];
+ } else {
+ $this->path = array_map(
+ static function ($path) use ($cwd, $filesystem) {
+ $absolutePath = $filesystem->isAbsolutePath($path)
+ ? $path
+ : $cwd.\DIRECTORY_SEPARATOR.$path;
+
+ if (!file_exists($absolutePath)) {
+ throw new InvalidConfigurationException(sprintf(
+ 'The path "%s" is not readable.',
+ $path
+ ));
+ }
+
+ return $absolutePath;
+ },
+ $this->options['path']
+ );
+ }
+ }
+
+ return $this->path;
+ }
+
+ /**
+ * @throws InvalidConfigurationException
+ *
+ * @return string
+ */
+ public function getProgress()
+ {
+ if (null === $this->progress) {
+ if (OutputInterface::VERBOSITY_VERBOSE <= $this->options['verbosity'] && 'txt' === $this->getFormat()) {
+ $progressType = $this->options['show-progress'];
+ $progressTypes = ['none', 'run-in', 'estimating', 'estimating-max', 'dots'];
+
+ if (null === $progressType) {
+ $default = 'run-in';
+
+ if (getenv('PHP_CS_FIXER_FUTURE_MODE')) {
+ $default = 'dots';
+ }
+
+ $progressType = $this->getConfig()->getHideProgress() ? 'none' : $default;
+ } elseif (!\in_array($progressType, $progressTypes, true)) {
+ throw new InvalidConfigurationException(sprintf(
+ 'The progress type "%s" is not defined, supported are "%s".',
+ $progressType,
+ implode('", "', $progressTypes)
+ ));
+ } elseif (\in_array($progressType, ['estimating', 'estimating-max', 'run-in'], true)) {
+ $message = 'Passing `estimating`, `estimating-max` or `run-in` is deprecated and will not be supported in 3.0, use `none` or `dots` instead.';
+
+ if (getenv('PHP_CS_FIXER_FUTURE_MODE')) {
+ throw new \InvalidArgumentException("{$message} This check was performed as `PHP_CS_FIXER_FUTURE_MODE` env var is set.");
+ }
+
+ @trigger_error($message, E_USER_DEPRECATED);
+ }
+
+ $this->progress = $progressType;
+ } else {
+ $this->progress = 'none';
+ }
+ }
+
+ return $this->progress;
+ }
+
+ /**
+ * @return ReporterInterface
+ */
+ public function getReporter()
+ {
+ if (null === $this->reporter) {
+ $reporterFactory = ReporterFactory::create();
+ $reporterFactory->registerBuiltInReporters();
+
+ $format = $this->getFormat();
+
+ try {
+ $this->reporter = $reporterFactory->getReporter($format);
+ } catch (\UnexpectedValueException $e) {
+ $formats = $reporterFactory->getFormats();
+ sort($formats);
+
+ throw new InvalidConfigurationException(sprintf('The format "%s" is not defined, supported are "%s".', $format, implode('", "', $formats)));
+ }
+ }
+
+ return $this->reporter;
+ }
+
+ /**
+ * @return bool
+ */
+ public function getRiskyAllowed()
+ {
+ if (null === $this->allowRisky) {
+ if (null === $this->options['allow-risky']) {
+ $this->allowRisky = $this->getConfig()->getRiskyAllowed();
+ } else {
+ $this->allowRisky = $this->resolveOptionBooleanValue('allow-risky');
+ }
+ }
+
+ return $this->allowRisky;
+ }
+
+ /**
+ * Returns rules.
+ *
+ * @return array
+ */
+ public function getRules()
+ {
+ return $this->getRuleSet()->getRules();
+ }
+
+ /**
+ * @return bool
+ */
+ public function getUsingCache()
+ {
+ if (null === $this->usingCache) {
+ if (null === $this->options['using-cache']) {
+ $this->usingCache = $this->getConfig()->getUsingCache();
+ } else {
+ $this->usingCache = $this->resolveOptionBooleanValue('using-cache');
+ }
+ }
+
+ return $this->usingCache;
+ }
+
+ public function getFinder()
+ {
+ if (null === $this->finder) {
+ $this->finder = $this->resolveFinder();
+ }
+
+ return $this->finder;
+ }
+
+ /**
+ * Returns dry-run flag.
+ *
+ * @return bool
+ */
+ public function isDryRun()
+ {
+ if (null === $this->isDryRun) {
+ if ($this->isStdIn()) {
+ // Can't write to STDIN
+ $this->isDryRun = true;
+ } else {
+ $this->isDryRun = $this->options['dry-run'];
+ }
+ }
+
+ return $this->isDryRun;
+ }
+
+ public function shouldStopOnViolation()
+ {
+ return $this->options['stop-on-violation'];
+ }
+
+ /**
+ * @return bool
+ */
+ public function configFinderIsOverridden()
+ {
+ if (null === $this->configFinderIsOverridden) {
+ $this->resolveFinder();
+ }
+
+ return $this->configFinderIsOverridden;
+ }
+
+ /**
+ * Compute file candidates for config file.
+ *
+ * @return string[]
+ */
+ private function computeConfigFiles()
+ {
+ $configFile = $this->options['config'];
+
+ if (null !== $configFile) {
+ if (false === file_exists($configFile) || false === is_readable($configFile)) {
+ throw new InvalidConfigurationException(sprintf('Cannot read config file "%s".', $configFile));
+ }
+
+ return [$configFile];
+ }
+
+ $path = $this->getPath();
+
+ if ($this->isStdIn() || 0 === \count($path)) {
+ $configDir = $this->cwd;
+ } elseif (1 < \count($path)) {
+ throw new InvalidConfigurationException('For multiple paths config parameter is required.');
+ } elseif (is_file($path[0]) && $dirName = pathinfo($path[0], PATHINFO_DIRNAME)) {
+ $configDir = $dirName;
+ } else {
+ $configDir = $path[0];
+ }
+
+ $candidates = [
+ $configDir.\DIRECTORY_SEPARATOR.'.php_cs',
+ $configDir.\DIRECTORY_SEPARATOR.'.php_cs.dist',
+ ];
+
+ if ($configDir !== $this->cwd) {
+ $candidates[] = $this->cwd.\DIRECTORY_SEPARATOR.'.php_cs';
+ $candidates[] = $this->cwd.\DIRECTORY_SEPARATOR.'.php_cs.dist';
+ }
+
+ return $candidates;
+ }
+
+ /**
+ * @return FixerFactory
+ */
+ private function createFixerFactory()
+ {
+ if (null === $this->fixerFactory) {
+ $fixerFactory = new FixerFactory();
+ $fixerFactory->registerBuiltInFixers();
+ $fixerFactory->registerCustomFixers($this->getConfig()->getCustomFixers());
+
+ $this->fixerFactory = $fixerFactory;
+ }
+
+ return $this->fixerFactory;
+ }
+
+ /**
+ * @return string
+ */
+ private function getFormat()
+ {
+ if (null === $this->format) {
+ $this->format = null === $this->options['format']
+ ? $this->getConfig()->getFormat()
+ : $this->options['format'];
+ }
+
+ return $this->format;
+ }
+
+ private function getRuleSet()
+ {
+ if (null === $this->ruleSet) {
+ $rules = $this->parseRules();
+ $this->validateRules($rules);
+
+ $this->ruleSet = new RuleSet($rules);
+ }
+
+ return $this->ruleSet;
+ }
+
+ /**
+ * @return bool
+ */
+ private function isStdIn()
+ {
+ if (null === $this->isStdIn) {
+ $this->isStdIn = 1 === \count($this->options['path']) && '-' === $this->options['path'][0];
+ }
+
+ return $this->isStdIn;
+ }
+
+ /**
+ * @param iterable $iterable
+ *
+ * @return \Traversable
+ */
+ private function iterableToTraversable($iterable)
+ {
+ return \is_array($iterable) ? new \ArrayIterator($iterable) : $iterable;
+ }
+
+ /**
+ * Compute rules.
+ *
+ * @return array
+ */
+ private function parseRules()
+ {
+ if (null === $this->options['rules']) {
+ return $this->getConfig()->getRules();
+ }
+
+ $rules = trim($this->options['rules']);
+ if ('' === $rules) {
+ throw new InvalidConfigurationException('Empty rules value is not allowed.');
+ }
+
+ if ('{' === $rules[0]) {
+ $rules = json_decode($rules, true);
+ if (JSON_ERROR_NONE !== json_last_error()) {
+ throw new InvalidConfigurationException(sprintf('Invalid JSON rules input: "%s".', json_last_error_msg()));
+ }
+
+ return $rules;
+ }
+
+ $rules = [];
+
+ foreach (explode(',', $this->options['rules']) as $rule) {
+ $rule = trim($rule);
+ if ('' === $rule) {
+ throw new InvalidConfigurationException('Empty rule name is not allowed.');
+ }
+
+ if ('-' === $rule[0]) {
+ $rules[substr($rule, 1)] = false;
+ } else {
+ $rules[$rule] = true;
+ }
+ }
+
+ return $rules;
+ }
+
+ /**
+ * @throws InvalidConfigurationException
+ */
+ private function validateRules(array $rules)
+ {
+ /**
+ * Create a ruleset that contains all configured rules, even when they originally have been disabled.
+ *
+ * @see RuleSet::resolveSet()
+ */
+ $ruleSet = [];
+ foreach ($rules as $key => $value) {
+ if (\is_int($key)) {
+ throw new InvalidConfigurationException(sprintf('Missing value for "%s" rule/set.', $value));
+ }
+
+ $ruleSet[$key] = true;
+ }
+ $ruleSet = new RuleSet($ruleSet);
+
+ /** @var string[] $configuredFixers */
+ $configuredFixers = array_keys($ruleSet->getRules());
+
+ $fixers = $this->createFixerFactory()->getFixers();
+
+ /** @var string[] $availableFixers */
+ $availableFixers = array_map(static function (FixerInterface $fixer) {
+ return $fixer->getName();
+ }, $fixers);
+
+ $unknownFixers = array_diff(
+ $configuredFixers,
+ $availableFixers
+ );
+
+ if (\count($unknownFixers)) {
+ $matcher = new WordMatcher($availableFixers);
+
+ $message = 'The rules contain unknown fixers: ';
+ foreach ($unknownFixers as $unknownFixer) {
+ $alternative = $matcher->match($unknownFixer);
+ $message .= sprintf(
+ '"%s"%s, ',
+ $unknownFixer,
+ null === $alternative ? '' : ' (did you mean "'.$alternative.'"?)'
+ );
+ }
+
+ throw new InvalidConfigurationException(substr($message, 0, -2).'.');
+ }
+
+ foreach ($fixers as $fixer) {
+ $fixerName = $fixer->getName();
+ if (isset($rules[$fixerName]) && $fixer instanceof DeprecatedFixerInterface) {
+ $successors = $fixer->getSuccessorsNames();
+ $messageEnd = [] === $successors
+ ? sprintf(' and will be removed in version %d.0.', Application::getMajorVersion())
+ : sprintf('. Use %s instead.', str_replace('`', '"', Utils::naturalLanguageJoinWithBackticks($successors)));
+
+ $message = "Rule \"{$fixerName}\" is deprecated{$messageEnd}";
+
+ if (getenv('PHP_CS_FIXER_FUTURE_MODE')) {
+ throw new \RuntimeException("{$message} This check was performed as `PHP_CS_FIXER_FUTURE_MODE` env var is set.");
+ }
+
+ @trigger_error($message, E_USER_DEPRECATED);
+ }
+ }
+ }
+
+ /**
+ * Apply path on config instance.
+ */
+ private function resolveFinder()
+ {
+ $this->configFinderIsOverridden = false;
+
+ if ($this->isStdIn()) {
+ return new \ArrayIterator([new StdinFileInfo()]);
+ }
+
+ $modes = [self::PATH_MODE_OVERRIDE, self::PATH_MODE_INTERSECTION];
+
+ if (!\in_array(
+ $this->options['path-mode'],
+ $modes,
+ true
+ )) {
+ throw new InvalidConfigurationException(sprintf(
+ 'The path-mode "%s" is not defined, supported are "%s".',
+ $this->options['path-mode'],
+ implode('", "', $modes)
+ ));
+ }
+
+ $isIntersectionPathMode = self::PATH_MODE_INTERSECTION === $this->options['path-mode'];
+
+ $paths = array_filter(array_map(
+ static function ($path) {
+ return realpath($path);
+ },
+ $this->getPath()
+ ));
+
+ if (!\count($paths)) {
+ if ($isIntersectionPathMode) {
+ return new \ArrayIterator([]);
+ }
+
+ return $this->iterableToTraversable($this->getConfig()->getFinder());
+ }
+
+ $pathsByType = [
+ 'file' => [],
+ 'dir' => [],
+ ];
+
+ foreach ($paths as $path) {
+ if (is_file($path)) {
+ $pathsByType['file'][] = $path;
+ } else {
+ $pathsByType['dir'][] = $path.\DIRECTORY_SEPARATOR;
+ }
+ }
+
+ $nestedFinder = null;
+ $currentFinder = $this->iterableToTraversable($this->getConfig()->getFinder());
+
+ try {
+ $nestedFinder = $currentFinder instanceof \IteratorAggregate ? $currentFinder->getIterator() : $currentFinder;
+ } catch (\Exception $e) {
+ }
+
+ if ($isIntersectionPathMode) {
+ if (null === $nestedFinder) {
+ throw new InvalidConfigurationException(
+ 'Cannot create intersection with not-fully defined Finder in configuration file.'
+ );
+ }
+
+ return new \CallbackFilterIterator(
+ new \IteratorIterator($nestedFinder),
+ static function (\SplFileInfo $current) use ($pathsByType) {
+ $currentRealPath = $current->getRealPath();
+
+ if (\in_array($currentRealPath, $pathsByType['file'], true)) {
+ return true;
+ }
+
+ foreach ($pathsByType['dir'] as $path) {
+ if (0 === strpos($currentRealPath, $path)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+ );
+ }
+
+ if (null !== $this->getConfigFile() && null !== $nestedFinder) {
+ $this->configFinderIsOverridden = true;
+ }
+
+ if ($currentFinder instanceof SymfonyFinder && null === $nestedFinder) {
+ // finder from configuration Symfony finder and it is not fully defined, we may fulfill it
+ return $currentFinder->in($pathsByType['dir'])->append($pathsByType['file']);
+ }
+
+ return Finder::create()->in($pathsByType['dir'])->append($pathsByType['file']);
+ }
+
+ /**
+ * Set option that will be resolved.
+ *
+ * @param string $name
+ * @param mixed $value
+ */
+ private function setOption($name, $value)
+ {
+ if (!\array_key_exists($name, $this->options)) {
+ throw new InvalidConfigurationException(sprintf('Unknown option name: "%s".', $name));
+ }
+
+ $this->options[$name] = $value;
+ }
+
+ /**
+ * @param string $optionName
+ *
+ * @return bool
+ */
+ private function resolveOptionBooleanValue($optionName)
+ {
+ $value = $this->options[$optionName];
+ if (\is_bool($value)) {
+ return $value;
+ }
+
+ if (!\is_string($value)) {
+ throw new InvalidConfigurationException(sprintf('Expected boolean or string value for option "%s".', $optionName));
+ }
+
+ if ('yes' === $value) {
+ return true;
+ }
+
+ if ('no' === $value) {
+ return false;
+ }
+
+ $message = sprintf('Expected "yes" or "no" for option "%s", other values are deprecated and support will be removed in 3.0. Got "%s", this implicitly set the option to "false".', $optionName, $value);
+
+ if (getenv('PHP_CS_FIXER_FUTURE_MODE')) {
+ throw new InvalidConfigurationException("{$message} This check was performed as `PHP_CS_FIXER_FUTURE_MODE` env var is set.");
+ }
+
+ @trigger_error($message, E_USER_DEPRECATED);
+
+ return false;
+ }
+
+ private static function separatedContextLessInclude($path)
+ {
+ return include $path;
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Console/Output/ErrorOutput.php b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Output/ErrorOutput.php
new file mode 100644
index 0000000000000..aafd6fed2dc53
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Output/ErrorOutput.php
@@ -0,0 +1,154 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Console\Output;
+
+use PhpCsFixer\Differ\DiffConsoleFormatter;
+use PhpCsFixer\Error\Error;
+use PhpCsFixer\Linter\LintingException;
+use Symfony\Component\Console\Formatter\OutputFormatter;
+use Symfony\Component\Console\Output\OutputInterface;
+
+/**
+ * @author SpacePossum
+ *
+ * @internal
+ */
+final class ErrorOutput
+{
+ /**
+ * @var OutputInterface
+ */
+ private $output;
+
+ /**
+ * @var bool
+ */
+ private $isDecorated;
+
+ public function __construct(OutputInterface $output)
+ {
+ $this->output = $output;
+ $this->isDecorated = $output->isDecorated();
+ }
+
+ /**
+ * @param string $process
+ * @param Error[] $errors
+ */
+ public function listErrors($process, array $errors)
+ {
+ $this->output->writeln(['', sprintf(
+ 'Files that were not fixed due to errors reported during %s:',
+ $process
+ )]);
+
+ $showDetails = $this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERY_VERBOSE;
+ $showTrace = $this->output->getVerbosity() >= OutputInterface::VERBOSITY_DEBUG;
+ foreach ($errors as $i => $error) {
+ $this->output->writeln(sprintf('%4d) %s', $i + 1, $error->getFilePath()));
+ $e = $error->getSource();
+ if (!$showDetails || null === $e) {
+ continue;
+ }
+
+ $class = sprintf('[%s]', \get_class($e));
+ $message = $e->getMessage();
+ $code = $e->getCode();
+ if (0 !== $code) {
+ $message .= " ({$code})";
+ }
+
+ $length = max(\strlen($class), \strlen($message));
+ $lines = [
+ '',
+ $class,
+ $message,
+ '',
+ ];
+
+ $this->output->writeln('');
+
+ foreach ($lines as $line) {
+ if (\strlen($line) < $length) {
+ $line .= str_repeat(' ', $length - \strlen($line));
+ }
+
+ $this->output->writeln(sprintf(' %s ', $this->prepareOutput($line)));
+ }
+
+ if ($showTrace && !$e instanceof LintingException) { // stack trace of lint exception is of no interest
+ $this->output->writeln('');
+ $stackTrace = $e->getTrace();
+ foreach ($stackTrace as $trace) {
+ if (isset($trace['class'], $trace['function']) && \Symfony\Component\Console\Command\Command::class === $trace['class'] && 'run' === $trace['function']) {
+ $this->output->writeln(' [ ... ]');
+
+ break;
+ }
+
+ $this->outputTrace($trace);
+ }
+ }
+
+ if (Error::TYPE_LINT === $error->getType() && 0 < \count($error->getAppliedFixers())) {
+ $this->output->writeln('');
+ $this->output->writeln(sprintf(' Applied fixers: %s', implode(', ', $error->getAppliedFixers())));
+
+ $diff = $error->getDiff();
+ if (!empty($diff)) {
+ $diffFormatter = new DiffConsoleFormatter(
+ $this->isDecorated,
+ sprintf(
+ ' ---------- begin diff ----------%s%%s%s ----------- end diff -----------',
+ PHP_EOL,
+ PHP_EOL
+ )
+ );
+
+ $this->output->writeln($diffFormatter->format($diff));
+ }
+ }
+ }
+ }
+
+ private function outputTrace(array $trace)
+ {
+ if (isset($trace['class'], $trace['type'], $trace['function'])) {
+ $this->output->writeln(sprintf(
+ ' %s%s%s()',
+ $this->prepareOutput($trace['class']),
+ $this->prepareOutput($trace['type']),
+ $this->prepareOutput($trace['function'])
+ ));
+ } elseif (isset($trace['function'])) {
+ $this->output->writeln(sprintf(' %s()', $this->prepareOutput($trace['function'])));
+ }
+
+ if (isset($trace['file'])) {
+ $this->output->writeln(sprintf(' in %s at line %d', $this->prepareOutput($trace['file']), $trace['line']));
+ }
+ }
+
+ /**
+ * @param string $string
+ *
+ * @return string
+ */
+ private function prepareOutput($string)
+ {
+ return $this->isDecorated
+ ? OutputFormatter::escape($string)
+ : $string
+ ;
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Console/Output/NullOutput.php b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Output/NullOutput.php
new file mode 100644
index 0000000000000..281388c1764bb
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Output/NullOutput.php
@@ -0,0 +1,23 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Console\Output;
+
+/**
+ * @internal
+ */
+final class NullOutput implements ProcessOutputInterface
+{
+ public function printLegend()
+ {
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Console/Output/ProcessOutput.php b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Output/ProcessOutput.php
new file mode 100644
index 0000000000000..61b69b9a6afc2
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Output/ProcessOutput.php
@@ -0,0 +1,145 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Console\Output;
+
+use PhpCsFixer\FixerFileProcessedEvent;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\EventDispatcher\EventDispatcherInterface;
+
+/**
+ * Output writer to show the process of a FixCommand.
+ *
+ * @internal
+ */
+final class ProcessOutput implements ProcessOutputInterface
+{
+ /**
+ * File statuses map.
+ *
+ * @var array
+ */
+ private static $eventStatusMap = [
+ FixerFileProcessedEvent::STATUS_UNKNOWN => ['symbol' => '?', 'format' => '%s', 'description' => 'unknown'],
+ FixerFileProcessedEvent::STATUS_INVALID => ['symbol' => 'I', 'format' => '%s', 'description' => 'invalid file syntax (file ignored)'],
+ FixerFileProcessedEvent::STATUS_SKIPPED => ['symbol' => 'S', 'format' => '%s', 'description' => 'skipped (cached or empty file)'],
+ FixerFileProcessedEvent::STATUS_NO_CHANGES => ['symbol' => '.', 'format' => '%s', 'description' => 'no changes'],
+ FixerFileProcessedEvent::STATUS_FIXED => ['symbol' => 'F', 'format' => '%s', 'description' => 'fixed'],
+ FixerFileProcessedEvent::STATUS_EXCEPTION => ['symbol' => 'E', 'format' => '%s', 'description' => 'error'],
+ FixerFileProcessedEvent::STATUS_LINT => ['symbol' => 'E', 'format' => '%s', 'description' => 'error'],
+ ];
+
+ /**
+ * @var EventDispatcherInterface
+ */
+ private $eventDispatcher;
+
+ /**
+ * @var OutputInterface
+ */
+ private $output;
+
+ /**
+ * @var null|int
+ */
+ private $files;
+
+ /**
+ * @var int
+ */
+ private $processedFiles = 0;
+
+ /**
+ * @var null|int
+ */
+ private $symbolsPerLine;
+
+ /**
+ * @TODO 3.0 make all parameters mandatory (`null` not allowed)
+ *
+ * @param null|int $width
+ * @param null|int $nbFiles
+ */
+ public function __construct(OutputInterface $output, EventDispatcherInterface $dispatcher, $width, $nbFiles)
+ {
+ $this->output = $output;
+ $this->eventDispatcher = $dispatcher;
+ $this->eventDispatcher->addListener(FixerFileProcessedEvent::NAME, [$this, 'onFixerFileProcessed']);
+ $this->symbolsPerLine = $width;
+
+ if (null !== $nbFiles) {
+ $this->files = $nbFiles;
+
+ // max number of characters per line
+ // - total length x 2 (e.g. " 1 / 123" => 6 digits and padding spaces)
+ // - 11 (extra spaces, parentheses and percentage characters, e.g. " x / x (100%)")
+ $this->symbolsPerLine = max(1, ($width ?: 80) - \strlen((string) $this->files) * 2 - 11);
+ }
+ }
+
+ public function __destruct()
+ {
+ $this->eventDispatcher->removeListener(FixerFileProcessedEvent::NAME, [$this, 'onFixerFileProcessed']);
+ }
+
+ public function onFixerFileProcessed(FixerFileProcessedEvent $event)
+ {
+ if (
+ null === $this->files
+ && null !== $this->symbolsPerLine
+ && 0 === $this->processedFiles % $this->symbolsPerLine
+ && 0 !== $this->processedFiles
+ ) {
+ $this->output->writeln('');
+ }
+
+ $status = self::$eventStatusMap[$event->getStatus()];
+ $this->output->write($this->output->isDecorated() ? sprintf($status['format'], $status['symbol']) : $status['symbol']);
+
+ ++$this->processedFiles;
+
+ if (null !== $this->files) {
+ $symbolsOnCurrentLine = $this->processedFiles % $this->symbolsPerLine;
+ $isLast = $this->processedFiles === $this->files;
+
+ if (0 === $symbolsOnCurrentLine || $isLast) {
+ $this->output->write(sprintf(
+ '%s %'.\strlen((string) $this->files).'d / %d (%3d%%)',
+ $isLast && 0 !== $symbolsOnCurrentLine ? str_repeat(' ', $this->symbolsPerLine - $symbolsOnCurrentLine) : '',
+ $this->processedFiles,
+ $this->files,
+ round($this->processedFiles / $this->files * 100)
+ ));
+
+ if (!$isLast) {
+ $this->output->writeln('');
+ }
+ }
+ }
+ }
+
+ public function printLegend()
+ {
+ $symbols = [];
+
+ foreach (self::$eventStatusMap as $status) {
+ $symbol = $status['symbol'];
+ if ('' === $symbol || isset($symbols[$symbol])) {
+ continue;
+ }
+
+ $symbols[$symbol] = sprintf('%s-%s', $this->output->isDecorated() ? sprintf($status['format'], $symbol) : $symbol, $status['description']);
+ }
+
+ $this->output->write(sprintf("\nLegend: %s\n", implode(', ', $symbols)));
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Console/Output/ProcessOutputInterface.php b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Output/ProcessOutputInterface.php
new file mode 100644
index 0000000000000..2d7838236b4b6
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Console/Output/ProcessOutputInterface.php
@@ -0,0 +1,21 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Console\Output;
+
+/**
+ * @internal
+ */
+interface ProcessOutputInterface
+{
+ public function printLegend();
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClient.php b/lib/composer/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClient.php
new file mode 100644
index 0000000000000..7cae3ac63b3e0
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClient.php
@@ -0,0 +1,52 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Console\SelfUpdate;
+
+/**
+ * @internal
+ */
+final class GithubClient implements GithubClientInterface
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function getTags()
+ {
+ $url = 'https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/tags';
+
+ $result = @file_get_contents(
+ $url,
+ false,
+ stream_context_create([
+ 'http' => [
+ 'header' => 'User-Agent: FriendsOfPHP/PHP-CS-Fixer',
+ ],
+ ])
+ );
+
+ if (false === $result) {
+ throw new \RuntimeException(sprintf('Failed to load tags at "%s".', $url));
+ }
+
+ $result = json_decode($result, true);
+ if (JSON_ERROR_NONE !== json_last_error()) {
+ throw new \RuntimeException(sprintf(
+ 'Failed to read response from "%s" as JSON: %s.',
+ $url,
+ json_last_error_msg()
+ ));
+ }
+
+ return $result;
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClientInterface.php b/lib/composer/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClientInterface.php
new file mode 100644
index 0000000000000..a9671ac0c6ddd
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClientInterface.php
@@ -0,0 +1,24 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Console\SelfUpdate;
+
+/**
+ * @internal
+ */
+interface GithubClientInterface
+{
+ /**
+ * @return array
+ */
+ public function getTags();
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionChecker.php b/lib/composer/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionChecker.php
new file mode 100644
index 0000000000000..023d6e77efd27
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionChecker.php
@@ -0,0 +1,114 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Console\SelfUpdate;
+
+use Composer\Semver\Comparator;
+use Composer\Semver\Semver;
+use Composer\Semver\VersionParser;
+
+/**
+ * @internal
+ */
+final class NewVersionChecker implements NewVersionCheckerInterface
+{
+ /**
+ * @var GithubClientInterface
+ */
+ private $githubClient;
+
+ /**
+ * @var VersionParser
+ */
+ private $versionParser;
+
+ /**
+ * @var null|string[]
+ */
+ private $availableVersions;
+
+ public function __construct(GithubClientInterface $githubClient)
+ {
+ $this->githubClient = $githubClient;
+ $this->versionParser = new VersionParser();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getLatestVersion()
+ {
+ $this->retrieveAvailableVersions();
+
+ return $this->availableVersions[0];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getLatestVersionOfMajor($majorVersion)
+ {
+ $this->retrieveAvailableVersions();
+
+ $semverConstraint = '^'.$majorVersion;
+
+ foreach ($this->availableVersions as $availableVersion) {
+ if (Semver::satisfies($availableVersion, $semverConstraint)) {
+ return $availableVersion;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function compareVersions($versionA, $versionB)
+ {
+ $versionA = $this->versionParser->normalize($versionA);
+ $versionB = $this->versionParser->normalize($versionB);
+
+ if (Comparator::lessThan($versionA, $versionB)) {
+ return -1;
+ }
+
+ if (Comparator::greaterThan($versionA, $versionB)) {
+ return 1;
+ }
+
+ return 0;
+ }
+
+ private function retrieveAvailableVersions()
+ {
+ if (null !== $this->availableVersions) {
+ return;
+ }
+
+ foreach ($this->githubClient->getTags() as $tag) {
+ $version = $tag['name'];
+
+ try {
+ $this->versionParser->normalize($version);
+
+ if ('stable' === VersionParser::parseStability($version)) {
+ $this->availableVersions[] = $version;
+ }
+ } catch (\UnexpectedValueException $exception) {
+ // not a valid version tag
+ }
+ }
+
+ $this->availableVersions = Semver::rsort($this->availableVersions);
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionCheckerInterface.php b/lib/composer/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionCheckerInterface.php
new file mode 100644
index 0000000000000..b596d5824edb8
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionCheckerInterface.php
@@ -0,0 +1,46 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Console\SelfUpdate;
+
+/**
+ * @internal
+ */
+interface NewVersionCheckerInterface
+{
+ /**
+ * Returns the tag of the latest version.
+ *
+ * @return string
+ */
+ public function getLatestVersion();
+
+ /**
+ * Returns the tag of the latest minor/patch version of the given major version.
+ *
+ * @param int $majorVersion
+ *
+ * @return null|string
+ */
+ public function getLatestVersionOfMajor($majorVersion);
+
+ /**
+ * Returns -1, 0, or 1 if the first version is respectively less than,
+ * equal to, or greater than the second.
+ *
+ * @param string $versionA
+ * @param string $versionB
+ *
+ * @return int
+ */
+ public function compareVersions($versionA, $versionB);
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Console/WarningsDetector.php b/lib/composer/friendsofphp/php-cs-fixer/src/Console/WarningsDetector.php
new file mode 100644
index 0000000000000..3f5d130d91d24
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Console/WarningsDetector.php
@@ -0,0 +1,74 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Console;
+
+use PhpCsFixer\ToolInfo;
+use PhpCsFixer\ToolInfoInterface;
+
+/**
+ * @author Dariusz Rumiński
+ *
+ * @internal
+ */
+final class WarningsDetector
+{
+ /**
+ * @var ToolInfoInterface
+ */
+ private $toolInfo;
+
+ /**
+ * @var string[]
+ */
+ private $warnings = [];
+
+ public function __construct(ToolInfoInterface $toolInfo)
+ {
+ $this->toolInfo = $toolInfo;
+ }
+
+ public function detectOldMajor()
+ {
+ // @TODO 3.0 to be activated with new MAJOR release
+ // $this->warnings[] = 'You are running PHP CS Fixer v2, which is not maintained anymore. Please update to v3.';
+ }
+
+ public function detectOldVendor()
+ {
+ if ($this->toolInfo->isInstalledByComposer()) {
+ $details = $this->toolInfo->getComposerInstallationDetails();
+ if (ToolInfo::COMPOSER_LEGACY_PACKAGE_NAME === $details['name']) {
+ $this->warnings[] = sprintf(
+ 'You are running PHP CS Fixer installed with old vendor `%s`. Please update to `%s`.',
+ ToolInfo::COMPOSER_LEGACY_PACKAGE_NAME,
+ ToolInfo::COMPOSER_PACKAGE_NAME
+ );
+ }
+ }
+ }
+
+ /**
+ * @return string[]
+ */
+ public function getWarnings()
+ {
+ if (!\count($this->warnings)) {
+ return [];
+ }
+
+ return array_unique(array_merge(
+ $this->warnings,
+ ['If you need help while solving warnings, ask at https://gitter.im/PHP-CS-Fixer, we will help you!']
+ ));
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Differ/DiffConsoleFormatter.php b/lib/composer/friendsofphp/php-cs-fixer/src/Differ/DiffConsoleFormatter.php
new file mode 100644
index 0000000000000..831404d927692
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Differ/DiffConsoleFormatter.php
@@ -0,0 +1,102 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Differ;
+
+use PhpCsFixer\Preg;
+use Symfony\Component\Console\Formatter\OutputFormatter;
+
+/**
+ * @author Dariusz Rumiński
+ *
+ * @internal
+ */
+final class DiffConsoleFormatter
+{
+ /**
+ * @var bool
+ */
+ private $isDecoratedOutput;
+
+ /**
+ * @var string
+ */
+ private $template;
+
+ /**
+ * @param bool $isDecoratedOutput
+ * @param string $template
+ */
+ public function __construct($isDecoratedOutput, $template = '%s')
+ {
+ $this->isDecoratedOutput = $isDecoratedOutput;
+ $this->template = $template;
+ }
+
+ /**
+ * @param string $diff
+ * @param string $lineTemplate
+ *
+ * @return string
+ */
+ public function format($diff, $lineTemplate = '%s')
+ {
+ $isDecorated = $this->isDecoratedOutput;
+
+ $template = $isDecorated
+ ? $this->template
+ : Preg::replace('/<[^<>]+>/', '', $this->template)
+ ;
+
+ return sprintf(
+ $template,
+ implode(
+ PHP_EOL,
+ array_map(
+ static function ($line) use ($isDecorated, $lineTemplate) {
+ if ($isDecorated) {
+ $count = 0;
+ $line = Preg::replaceCallback(
+ [
+ '/^(\+.*)/',
+ '/^(\-.*)/',
+ '/^(@.*)/',
+ ],
+ static function ($matches) {
+ if ('+' === $matches[0][0]) {
+ $colour = 'green';
+ } elseif ('-' === $matches[0][0]) {
+ $colour = 'red';
+ } else {
+ $colour = 'cyan';
+ }
+
+ return sprintf('%s', $colour, OutputFormatter::escape($matches[0]), $colour);
+ },
+ $line,
+ 1,
+ $count
+ );
+
+ if (0 === $count) {
+ $line = OutputFormatter::escape($line);
+ }
+ }
+
+ return sprintf($lineTemplate, $line);
+ },
+ Preg::split('#\R#u', $diff)
+ )
+ )
+ );
+ }
+}
diff --git a/lib/composer/friendsofphp/php-cs-fixer/src/Differ/DifferInterface.php b/lib/composer/friendsofphp/php-cs-fixer/src/Differ/DifferInterface.php
new file mode 100644
index 0000000000000..e530d2636aec5
--- /dev/null
+++ b/lib/composer/friendsofphp/php-cs-fixer/src/Differ/DifferInterface.php
@@ -0,0 +1,31 @@
+
+ * Dariusz Rumiński
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Differ;
+
+/**
+ * @author Dariusz Rumiński